From: n1c00o Date: Sat, 16 Oct 2021 20:09:47 +0000 (+0200) Subject: Add payloads according to Gateway Events X-Git-Tag: v0.1~55^2~5 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=031df88b8f978a0809dc8a32f795ffebda416d20;p=matthieu%2Fnova.git Add payloads according to Gateway Events --- 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, + session_id: String, + shard: Option>, + application: Application, + }, + ApplicationCommandCreate { + guild_id: Option, + command: ApplicationCommand, + }, + ApplicationCommandUpdate { + guild_id: Option, + command: ApplicationCommand, + }, + ApplicationCommandDelete { + guild_id: Option, + 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>, + threads: Vec, + members: Vec, + }, + ThreadMemberUpdate { + member: ThreadMember, + }, + ThreadMembersUpdate { + id: String, + guild_id: String, + member_count: i64, + added_members: Option>, + removed_member_ids: Option>, + }, + ChannelPinsUpdate { + guild_id: Option, + channel_id: String, + last_pin_timestamp: Option, + }, + 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, + }, + GuildIntegrationsUpdate { + guild_id: String, + }, + GuildMemberAdd { + guild_id: String, + member: GuildMember, + }, + GuildMemberRemove { + guild_id: String, + user: User, + }, + GuildMemberUpdate { + guild_id: String, + roles: Vec, + user: User, + nick: Option, + joined_at: Option, + premium_since: Option, + deaf: Option, + mute: Option, + pending: Option, + }, + GuildMembersChunk { + guild_id: String, + members: Vec, + chunk_index: i64, + chunk_count: i64, + not_found: Option>, + presences: Option>, + nonce: Option, + }, + 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, + }, + InviteCreate { + channel_id: String, + code: String, + created_at: String, + guild_id: Option, + inviter: Option, + max_age: i64, + max_uses: i64, + target_type: Option, + target_user: Option, + target_application: Option, + temporary: bool, + uses: i64, + }, + InviteDelete { + channel_id: String, + guild_id: Option, + code: String, + }, + InteractionCreate { + interaction: Interaction, + }, + MessageCreate { + message: Message, + }, + MessageUpdate { + message: Message, + }, + MessageDelete { + id: String, + channel_id: String, + guild_id: Option, + }, + MessageDeleteBulk { + ids: Vec, + channel_id: String, + guild_id: Option, + }, + MessageReactionAdd { + user_id: String, + channel_id: String, + message_id: String, + guild_id: Option, + member: Option, + emoji: Emoji, + }, + MessageReactionRemove { + user_id: String, + channel_id: String, + message_id: String, + guild_id: Option, + emoji: Emoji, + }, + MessageReactionRemoveAll { + channel_id: String, + message_id: String, + guild_id: Option, + }, + MessageReactionRemoveEmoji { + channel_id: String, + message_id: String, + guild_id: Option, + emoji: Emoji, + }, + PresenceUpdate { + presence: PresenceUpdate, + }, + TypingStart { + channel_id: String, + guild_id: Option, + user_id: String, + timestamp: i64, + member: Option, + }, + UserUpdate { + user: User, + }, + VoiceStateUpdate { + state: VoiceState, + }, + VoiceServerUpdate { + token: String, + guild_id: String, + endpoint: Option, + }, + WebhookUpdate { + guild_id: String, + channel_id: String, + }, + StageInstanceCreate { + instance: StageInstance, + }, + StageInstanceUpdate { + instance: StageInstance, + }, + StageInstanceDelete { + instance: StageInstance, + }, }