use disruption_types::entities::{EmojiApiType, GuildMemberApiType, UserApiType};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildDeleteEvent {
pub id: String,
#[serde(default)]
pub unavailable: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildMemberRemoveEvent {
pub guild_id: String,
pub user: UserApiType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildMemberAddEvent {
pub guild_id: String,
#[serde(flatten)]
pub member: GuildMemberApiType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildMemberUpdateEvent {
pub guild_id: String,
#[serde(flatten)]
pub member: GuildMemberApiType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildRoleCreateEvent {
pub guild_id: String,
pub role: disruption_types::entities::RoleApiType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildRoleUpdateEvent {
pub guild_id: String,
pub role: disruption_types::entities::RoleApiType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuildRoleDeleteEvent {
pub guild_id: String,
pub role_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageDeleteEvent {
pub id: String,
pub channel_id: String,
pub guild_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageReactionAddEvent {
pub user_id: String,
pub channel_id: String,
pub message_id: String,
pub guild_id: Option<String>,
pub member: Option<GuildMemberApiType>,
pub emoji: EmojiApiType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageReactionRemoveEvent {
pub user_id: String,
pub channel_id: String,
pub message_id: String,
pub guild_id: Option<String>,
pub emoji: EmojiApiType,
}