]> git.puffer.fish Git - matthieu/nova.git/commitdiff
Add payloads according to Gateway Events
authorn1c00o <git.n1c00o@gmail.com>
Sat, 16 Oct 2021 20:09:47 +0000 (22:09 +0200)
committern1c00o <git.n1c00o@gmail.com>
Sat, 16 Oct 2021 20:09:47 +0000 (22:09 +0200)
common/rust/src/payloads.rs

index 5c12c7a572a34b194c4b735057b6ffe25575be73..38d752989d6fe56adbcc6c2ea1ea7b35f01edbb6 100644 (file)
@@ -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,
+    },
 }