diff options
| -rw-r--r-- | common/rust/src/payloads.rs | 256 |
1 files changed, 249 insertions, 7 deletions
diff --git a/common/rust/src/payloads.rs b/common/rust/src/payloads.rs index 5c12c7a..38d7529 100644 --- a/common/rust/src/payloads.rs +++ b/common/rust/src/payloads.rs @@ -1,8 +1,22 @@ use serde::{Deserialize, Serialize}; +use crate::discord_models::{ + application::Application, + channel::{Channel, Message, ThreadMember}, + emoji::Emoji, + gateway::PresenceUpdate, + guild::{Guild, GuildMember, Integration}, + invite::InviteTargetTypes, + permissions::Role, + slash_commands::{ApplicationCommand, Interaction}, + stage_instance::StageInstance, + user::User, + voice::VoiceState, +}; + /// Payload send to the nova cache queues #[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(bound(deserialize = "T: Deserialize<'de> + std::default::Default + Clone"))] +// #[serde(bound(deserialize = "T: Deserialize<'de> + std::default::Default + Clone"))] pub struct CachePayload { pub tracing: Tracing, pub data: CacheData, @@ -16,10 +30,238 @@ pub struct Tracing { #[derive(Serialize, Deserialize, Debug, Clone)] pub enum CacheData { - Ready {}, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct ReadyCacheData { - pub version: u8, + Ready { + version: u8, + user: User, + guilds: Vec<Guild>, + session_id: String, + shard: Option<Vec<i64>>, + application: Application, + }, + ApplicationCommandCreate { + guild_id: Option<String>, + command: ApplicationCommand, + }, + ApplicationCommandUpdate { + guild_id: Option<String>, + command: ApplicationCommand, + }, + ApplicationCommandDelete { + guild_id: Option<String>, + command: ApplicationCommand, + }, + ChannelCreate { + channel: Channel, + }, + ChannelUpdate { + channel: Channel, + }, + ChannelDelete { + channel: Channel, + }, + ThreadCreate { + channel: Channel, + }, + ThreadUpdate { + channel: Channel, + }, + ThreadDelete { + channel: Channel, + }, + ThreadListSync { + guild_id: String, + channel_ids: Option<Vec<String>>, + threads: Vec<Channel>, + members: Vec<ThreadMember>, + }, + ThreadMemberUpdate { + member: ThreadMember, + }, + ThreadMembersUpdate { + id: String, + guild_id: String, + member_count: i64, + added_members: Option<Vec<ThreadMember>>, + removed_member_ids: Option<Vec<String>>, + }, + ChannelPinsUpdate { + guild_id: Option<String>, + channel_id: String, + last_pin_timestamp: Option<String>, + }, + GuildCreate { + guild: Guild, + }, + GuildUpdate { + guild: Guild, + }, + GuildDelete { + guild: Guild, + }, + GuildBanAdd { + guild_id: String, + user: User, + }, + GuildBanRemove { + guild_id: String, + user: User, + }, + GuildEmojisUpdate { + guild_id: String, + emojis: Vec<Emoji>, + }, + GuildIntegrationsUpdate { + guild_id: String, + }, + GuildMemberAdd { + guild_id: String, + member: GuildMember, + }, + GuildMemberRemove { + guild_id: String, + user: User, + }, + GuildMemberUpdate { + guild_id: String, + roles: Vec<String>, + user: User, + nick: Option<String>, + joined_at: Option<String>, + premium_since: Option<String>, + deaf: Option<bool>, + mute: Option<bool>, + pending: Option<bool>, + }, + GuildMembersChunk { + guild_id: String, + members: Vec<GuildMember>, + chunk_index: i64, + chunk_count: i64, + not_found: Option<Vec<String>>, + presences: Option<Vec<PresenceUpdate>>, + nonce: Option<String>, + }, + GuildRoleCreate { + guild_id: String, + role: Role, + }, + GuildRoleUpdate { + guild_id: String, + role: Role, + }, + GuildRoleDelete { + guild_id: String, + role_id: String, + }, + IntegrationCreate { + guild_id: String, + integration: Integration, + }, + IntegrationUpdate { + guild_id: String, + integration: Integration, + }, + IntegrationDelete { + id: String, + guild_id: String, + application_id: Option<String>, + }, + InviteCreate { + channel_id: String, + code: String, + created_at: String, + guild_id: Option<String>, + inviter: Option<User>, + max_age: i64, + max_uses: i64, + target_type: Option<InviteTargetTypes>, + target_user: Option<User>, + target_application: Option<Application>, + temporary: bool, + uses: i64, + }, + InviteDelete { + channel_id: String, + guild_id: Option<String>, + code: String, + }, + InteractionCreate { + interaction: Interaction, + }, + MessageCreate { + message: Message, + }, + MessageUpdate { + message: Message, + }, + MessageDelete { + id: String, + channel_id: String, + guild_id: Option<String>, + }, + MessageDeleteBulk { + ids: Vec<String>, + channel_id: String, + guild_id: Option<String>, + }, + MessageReactionAdd { + user_id: String, + channel_id: String, + message_id: String, + guild_id: Option<String>, + member: Option<GuildMember>, + emoji: Emoji, + }, + MessageReactionRemove { + user_id: String, + channel_id: String, + message_id: String, + guild_id: Option<String>, + emoji: Emoji, + }, + MessageReactionRemoveAll { + channel_id: String, + message_id: String, + guild_id: Option<String>, + }, + MessageReactionRemoveEmoji { + channel_id: String, + message_id: String, + guild_id: Option<String>, + emoji: Emoji, + }, + PresenceUpdate { + presence: PresenceUpdate, + }, + TypingStart { + channel_id: String, + guild_id: Option<String>, + user_id: String, + timestamp: i64, + member: Option<GuildMember>, + }, + UserUpdate { + user: User, + }, + VoiceStateUpdate { + state: VoiceState, + }, + VoiceServerUpdate { + token: String, + guild_id: String, + endpoint: Option<String>, + }, + WebhookUpdate { + guild_id: String, + channel_id: String, + }, + StageInstanceCreate { + instance: StageInstance, + }, + StageInstanceUpdate { + instance: StageInstance, + }, + StageInstanceDelete { + instance: StageInstance, + }, } |
