diff --git a/src/types/events/mod.rs b/src/types/events/mod.rs index 280ebb8..8b13d8c 100644 --- a/src/types/events/mod.rs +++ b/src/types/events/mod.rs @@ -171,3 +171,119 @@ pub(crate) fn update_object( } *object.write().unwrap() = from_value(to_value(original_data).unwrap()).unwrap(); } + +#[derive( + Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, PartialOrd, Eq, Ord, Copy, +)] +/// Enum representing all possible* event types that can be received from or sent to the gateway. +/// +/// *: This list might not be exhaustive. If you notice an event type is missing, +/// please open a PR. +pub enum EventType { + Hello, + Ready, + Resumed, + InvalidSession, + ChannelCreate, + ChannelUpdate, + ChannelDelete, + ChannelPinsUpdate, + ThreadCreate, + ThreadUpdate, + ThreadDelete, + ThreadListSync, + ThreadMemberUpdate, + ThreadMembersUpdate, + GuildCreate, + GuildUpdate, + GuildDelete, + GuildBanAdd, + GuildBanRemove, + GuildEmojisUpdate, + GuildIntegrationsUpdate, + GuildMemberAdd, + GuildMemberRemove, + GuildMemberUpdate, + GuildMembersChunk, + GuildRoleCreate, + GuildRoleUpdate, + GuildRoleDelete, + IntegrationCreate, + IntegrationUpdate, + IntegrationDelete, + InteractionCreate, + InviteCreate, + InviteDelete, + MessageCreate, + MessageUpdate, + MessageDelete, + MessageDeleteBulk, + MessageReactionAdd, + MessageReactionRemove, + MessageReactionRemoveAll, + MessageReactionRemoveEmoji, + PresenceUpdate, + TypingStart, + UserUpdate, + VoiceStateUpdate, + VoiceServerUpdate, + WebhooksUpdate, + StageInstanceCreate, + StageInstanceUpdate, + StageInstanceDelete, + RequestMembers, +} + +#[derive(Debug, Clone)] +/// Enum representing all possible* events that can be received from or sent to the gateway. +/// +/// *: This list might not be exhaustive. If you notice an event is missing, +/// please open a PR. +pub enum Event { + Hello(GatewayHello), + Ready(GatewayReady), + Resumed(GatewayResume), + InvalidSession(GatewayInvalidSession), + ChannelCreate(ChannelCreate), + ChannelUpdate(ChannelUpdate), + ChannelDelete(ChannelDelete), + ChannelPinsUpdate(ChannelPinsUpdate), + ThreadCreate(ThreadCreate), + ThreadUpdate(ThreadUpdate), + ThreadDelete(ThreadDelete), + ThreadListSync(ThreadListSync), + ThreadMemberUpdate(ThreadMemberUpdate), + ThreadMembersUpdate(ThreadMembersUpdate), + GuildCreate(GuildCreate), + GuildUpdate(GuildUpdate), + GuildDelete(GuildDelete), + GuildBanAdd(GuildBanAdd), + GuildBanRemove(GuildBanRemove), + GuildEmojisUpdate(GuildEmojisUpdate), + GuildIntegrationsUpdate(GuildIntegrationsUpdate), + GuildMemberAdd(GuildMemberAdd), + GuildMemberRemove(GuildMemberRemove), + GuildMemberUpdate(GuildMemberUpdate), + GuildMembersChunk(GuildMembersChunk), + InteractionCreate(InteractionCreate), + InviteCreate(InviteCreate), + InviteDelete(InviteDelete), + MessageCreate(MessageCreate), + MessageUpdate(MessageUpdate), + MessageDelete(MessageDelete), + MessageDeleteBulk(MessageDeleteBulk), + MessageReactionAdd(MessageReactionAdd), + MessageReactionRemove(MessageReactionRemove), + MessageReactionRemoveAll(MessageReactionRemoveAll), + MessageReactionRemoveEmoji(MessageReactionRemoveEmoji), + PresenceUpdate(PresenceUpdate), + TypingStart(TypingStartEvent), + UserUpdate(UserUpdate), + VoiceStateUpdate(VoiceStateUpdate), + VoiceServerUpdate(VoiceServerUpdate), + WebhooksUpdate(WebhooksUpdate), + StageInstanceCreate(StageInstanceCreate), + StageInstanceUpdate(StageInstanceUpdate), + StageInstanceDelete(StageInstanceDelete), + RequestMembers(GatewayRequestGuildMembers), +} diff --git a/src/types/events/request_members.rs b/src/types/events/request_members.rs index a6cffdf..5228170 100644 --- a/src/types/events/request_members.rs +++ b/src/types/events/request_members.rs @@ -5,7 +5,7 @@ use crate::types::{events::WebSocketEvent, Snowflake}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Default, WebSocketEvent)] +#[derive(Debug, Deserialize, Serialize, Default, WebSocketEvent, Clone)] /// See pub struct GatewayRequestGuildMembers { pub guild_id: Snowflake, @@ -16,4 +16,3 @@ pub struct GatewayRequestGuildMembers { pub user_ids: Option, pub nonce: Option, } -