From 7d17a1c9760aa40d99fcfdc4cb9c6ed3ed07b026 Mon Sep 17 00:00:00 2001 From: kozabrada123 <59031733+kozabrada123@users.noreply.github.com> Date: Sun, 4 Jun 2023 13:49:35 +0200 Subject: [PATCH] Implement Clone for all events --- src/types/events/application.rs | 2 +- src/types/events/auto_moderation.rs | 8 +++--- src/types/events/call.rs | 8 +++--- src/types/events/channel.rs | 12 ++++---- src/types/events/guild.rs | 44 ++++++++++++++--------------- src/types/events/heartbeat.rs | 4 +-- src/types/events/hello.rs | 4 +-- src/types/events/identify.rs | 4 +-- src/types/events/integration.rs | 6 ++-- src/types/events/interaction.rs | 2 +- src/types/events/invite.rs | 4 +-- src/types/events/lazy_request.rs | 2 +- src/types/events/message.rs | 23 ++++++++------- src/types/events/passive_update.rs | 2 +- src/types/events/ready.rs | 12 ++++---- src/types/events/relationship.rs | 4 +-- src/types/events/request_members.rs | 2 +- src/types/events/resume.rs | 2 +- src/types/events/session.rs | 6 ++-- src/types/events/stage_instance.rs | 6 ++-- src/types/events/thread.rs | 12 ++++---- src/types/events/user.rs | 6 ++-- src/types/events/voice.rs | 6 ++-- src/types/events/webhooks.rs | 2 +- 24 files changed, 91 insertions(+), 92 deletions(-) diff --git a/src/types/events/application.rs b/src/types/events/application.rs index aca2b29..8afb374 100644 --- a/src/types/events/application.rs +++ b/src/types/events/application.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{GuildApplicationCommandPermissions, WebSocketEvent}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#application-command-permissions-update pub struct ApplicationCommandPermissionsUpdate { #[serde(flatten)] diff --git a/src/types/events/auto_moderation.rs b/src/types/events/auto_moderation.rs index 2fa8fc5..d82aa02 100644 --- a/src/types/events/auto_moderation.rs +++ b/src/types/events/auto_moderation.rs @@ -5,7 +5,7 @@ use crate::types::{ WebSocketEvent, }; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-create pub struct AutoModerationRuleCreate { #[serde(flatten)] @@ -14,7 +14,7 @@ pub struct AutoModerationRuleCreate { impl WebSocketEvent for AutoModerationRuleCreate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-update pub struct AutoModerationRuleUpdate { #[serde(flatten)] @@ -23,7 +23,7 @@ pub struct AutoModerationRuleUpdate { impl WebSocketEvent for AutoModerationRuleUpdate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-delete pub struct AutoModerationRuleDelete { #[serde(flatten)] @@ -32,7 +32,7 @@ pub struct AutoModerationRuleDelete { impl WebSocketEvent for AutoModerationRuleDelete {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#auto-moderation-action-execution pub struct AutoModerationActionExecution { pub guild_id: Snowflake, diff --git a/src/types/events/call.rs b/src/types/events/call.rs index 3c58635..7407ea6 100644 --- a/src/types/events/call.rs +++ b/src/types/events/call.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{VoiceState, WebSocketEvent}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// Is sent to a client by the server to signify a new being created /// {"t":"CALL_CREATE","s":2,"op":0,"d":{"voice_states":[],"ringing":[],"region":"milan","message_id":"1107187514906775613","embedded_activities":[],"channel_id":"837609115475771392"}} @@ -18,7 +18,7 @@ pub struct CallCreate { } impl WebSocketEvent for CallCreate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// Updates the status of calls /// {"t":"CALL_UPDATE","s":5,"op":0,"d":{"ringing":["837606544539254834"],"region":"milan","message_id":"1107191540234846308","guild_id":null,"channel_id":"837609115475771392"}} @@ -32,7 +32,7 @@ pub struct CallUpdate { } impl WebSocketEvent for CallUpdate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// Deletes a ringing call /// {"t":"CALL_DELETE","s":8,"op":0,"d":{"channel_id":"837609115475771392"}} @@ -41,7 +41,7 @@ pub struct CallDelete { } impl WebSocketEvent for CallDelete {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// See https://unofficial-discord-docs.vercel.app/gateway/op13 /// {"op":13,"d":{"channel_id":"837609115475771392"}} diff --git a/src/types/events/channel.rs b/src/types/events/channel.rs index adafa9f..9489027 100644 --- a/src/types/events/channel.rs +++ b/src/types/events/channel.rs @@ -3,7 +3,7 @@ use crate::types::events::WebSocketEvent; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#channel-pins-update pub struct ChannelPinsUpdate { pub guild_id: Option, @@ -13,7 +13,7 @@ pub struct ChannelPinsUpdate { impl WebSocketEvent for ChannelPinsUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#channel-create pub struct ChannelCreate { #[serde(flatten)] @@ -22,7 +22,7 @@ pub struct ChannelCreate { impl WebSocketEvent for ChannelCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#channel-update pub struct ChannelUpdate { #[serde(flatten)] @@ -31,7 +31,7 @@ pub struct ChannelUpdate { impl WebSocketEvent for ChannelUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// Officially undocumented. /// Sends updates to client about a new message with its id /// {"channel_unread_updates": [{"id": "816412869766938648", "last_message_id": "1085892012085104680"}} @@ -40,7 +40,7 @@ pub struct ChannelUnreadUpdate { pub guild_id: String, } -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// Contains very few fields from [Channel] /// See also [ChannelUnreadUpdates] pub struct ChannelUnreadUpdateObject { @@ -51,7 +51,7 @@ pub struct ChannelUnreadUpdateObject { impl WebSocketEvent for ChannelUnreadUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#channel-delete pub struct ChannelDelete { #[serde(flatten)] diff --git a/src/types/events/guild.rs b/src/types/events/guild.rs index d1c8fe4..34dbc01 100644 --- a/src/types/events/guild.rs +++ b/src/types/events/guild.rs @@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize}; use super::PresenceUpdate; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-create /// This one is particularly painful, it can be a Guild object with an extra field or an unavailable guild object pub struct GuildCreate { @@ -14,7 +14,7 @@ pub struct GuildCreate { pub d: GuildCreateDataOption, } -#[derive(Debug, Deserialize, Serialize)] +#[derive(Debug, Deserialize, Serialize, Clone)] #[serde(untagged)] pub enum GuildCreateDataOption { UnavailableGuild(UnavailableGuild), @@ -28,7 +28,7 @@ impl Default for GuildCreateDataOption { } impl WebSocketEvent for GuildCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-add-guild-ban-add-event-fields pub struct GuildBanAdd { pub guild_id: String, @@ -37,7 +37,7 @@ pub struct GuildBanAdd { impl WebSocketEvent for GuildBanAdd {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove pub struct GuildBanRemove { pub guild_id: String, @@ -46,7 +46,7 @@ pub struct GuildBanRemove { impl WebSocketEvent for GuildBanRemove {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-update pub struct GuildUpdate { #[serde(flatten)] @@ -55,7 +55,7 @@ pub struct GuildUpdate { impl WebSocketEvent for GuildUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-delete pub struct GuildDelete { #[serde(flatten)] @@ -64,7 +64,7 @@ pub struct GuildDelete { impl WebSocketEvent for GuildDelete {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-audit-log-entry-create pub struct GuildAuditLogEntryCreate { #[serde(flatten)] @@ -73,7 +73,7 @@ pub struct GuildAuditLogEntryCreate { impl WebSocketEvent for GuildAuditLogEntryCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-emojis-update pub struct GuildEmojisUpdate { pub guild_id: String, @@ -82,7 +82,7 @@ pub struct GuildEmojisUpdate { impl WebSocketEvent for GuildEmojisUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-stickers-update pub struct GuildStickersUpdate { pub guild_id: String, @@ -91,7 +91,7 @@ pub struct GuildStickersUpdate { impl WebSocketEvent for GuildStickersUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-integrations-update pub struct GuildIntegrationsUpdate { pub guild_id: String, @@ -99,7 +99,7 @@ pub struct GuildIntegrationsUpdate { impl WebSocketEvent for GuildIntegrationsUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-member-add pub struct GuildMemberAdd { #[serde(flatten)] @@ -109,7 +109,7 @@ pub struct GuildMemberAdd { impl WebSocketEvent for GuildMemberAdd {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-member-remove pub struct GuildMemberRemove { pub guild_id: String, @@ -118,7 +118,7 @@ pub struct GuildMemberRemove { impl WebSocketEvent for GuildMemberRemove {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-member-update pub struct GuildMemberUpdate { pub guild_id: String, @@ -136,7 +136,7 @@ pub struct GuildMemberUpdate { impl WebSocketEvent for GuildMemberUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk pub struct GuildMembersChunk { pub guild_id: String, @@ -150,7 +150,7 @@ pub struct GuildMembersChunk { impl WebSocketEvent for GuildMembersChunk {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-role-create pub struct GuildRoleCreate { pub guild_id: String, @@ -159,7 +159,7 @@ pub struct GuildRoleCreate { impl WebSocketEvent for GuildRoleCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-role-update pub struct GuildRoleUpdate { pub guild_id: String, @@ -168,7 +168,7 @@ pub struct GuildRoleUpdate { impl WebSocketEvent for GuildRoleUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-role-delete pub struct GuildRoleDelete { pub guild_id: String, @@ -177,7 +177,7 @@ pub struct GuildRoleDelete { impl WebSocketEvent for GuildRoleDelete {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-scheduled-event-create pub struct GuildScheduledEventCreate { #[serde(flatten)] @@ -186,7 +186,7 @@ pub struct GuildScheduledEventCreate { impl WebSocketEvent for GuildScheduledEventCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-scheduled-event-update pub struct GuildScheduledEventUpdate { #[serde(flatten)] @@ -195,7 +195,7 @@ pub struct GuildScheduledEventUpdate { impl WebSocketEvent for GuildScheduledEventUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-scheduled-event-delete pub struct GuildScheduledEventDelete { #[serde(flatten)] @@ -204,7 +204,7 @@ pub struct GuildScheduledEventDelete { impl WebSocketEvent for GuildScheduledEventDelete {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-scheduled-event-user-add pub struct GuildScheduledEventUserAdd { pub guild_scheduled_event_id: String, @@ -214,7 +214,7 @@ pub struct GuildScheduledEventUserAdd { impl WebSocketEvent for GuildScheduledEventUserAdd {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#guild-scheduled-event-user-remove pub struct GuildScheduledEventUserRemove { pub guild_scheduled_event_id: String, diff --git a/src/types/events/heartbeat.rs b/src/types/events/heartbeat.rs index be9e3f8..d824db9 100644 --- a/src/types/events/heartbeat.rs +++ b/src/types/events/heartbeat.rs @@ -1,7 +1,7 @@ use crate::types::events::WebSocketEvent; use serde::{Deserialize, Serialize}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] pub struct GatewayHeartbeat { pub op: u8, pub d: Option, @@ -9,7 +9,7 @@ pub struct GatewayHeartbeat { impl WebSocketEvent for GatewayHeartbeat {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] pub struct GatewayHeartbeatAck { pub op: i32, } diff --git a/src/types/events/hello.rs b/src/types/events/hello.rs index 214f211..85ef1f2 100644 --- a/src/types/events/hello.rs +++ b/src/types/events/hello.rs @@ -1,7 +1,7 @@ use crate::types::events::WebSocketEvent; use serde::{Deserialize, Serialize}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] pub struct GatewayHello { pub op: i32, pub d: HelloData, @@ -9,7 +9,7 @@ pub struct GatewayHello { impl WebSocketEvent for GatewayHello {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] pub struct HelloData { pub heartbeat_interval: u128, } diff --git a/src/types/events/identify.rs b/src/types/events/identify.rs index c4b55f4..0b33b89 100644 --- a/src/types/events/identify.rs +++ b/src/types/events/identify.rs @@ -2,7 +2,7 @@ use crate::types::events::{PresenceUpdate, WebSocketEvent}; use serde::{Deserialize, Serialize}; use serde_with::serde_as; -#[derive(Debug, Deserialize, Serialize)] +#[derive(Debug, Deserialize, Serialize, Clone)] pub struct GatewayIdentifyPayload { pub token: String, pub properties: GatewayIdentifyConnectionProps, @@ -65,7 +65,7 @@ impl GatewayIdentifyPayload { impl WebSocketEvent for GatewayIdentifyPayload {} -#[derive(Debug, Deserialize, Serialize)] +#[derive(Debug, Deserialize, Serialize, Clone)] #[serde_as] pub struct GatewayIdentifyConnectionProps { /// Almost always sent diff --git a/src/types/events/integration.rs b/src/types/events/integration.rs index 6569a72..9a38e83 100644 --- a/src/types/events/integration.rs +++ b/src/types/events/integration.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{Integration, WebSocketEvent}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#integration-create pub struct IntegrationCreate { #[serde(flatten)] @@ -12,7 +12,7 @@ pub struct IntegrationCreate { impl WebSocketEvent for IntegrationCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#integration-update pub struct IntegrationUpdate { #[serde(flatten)] @@ -22,7 +22,7 @@ pub struct IntegrationUpdate { impl WebSocketEvent for IntegrationUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#integration-delete pub struct IntegrationDelete { pub id: String, diff --git a/src/types/events/interaction.rs b/src/types/events/interaction.rs index 51513a3..e77ee7c 100644 --- a/src/types/events/interaction.rs +++ b/src/types/events/interaction.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{Interaction, WebSocketEvent}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#interaction-create pub struct InteractionCreate { #[serde(flatten)] diff --git a/src/types/events/invite.rs b/src/types/events/invite.rs index 4eb31a7..fc6c80d 100644 --- a/src/types/events/invite.rs +++ b/src/types/events/invite.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{GuildInvite, WebSocketEvent}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#invite-create pub struct InviteCreate { #[serde(flatten)] @@ -11,7 +11,7 @@ pub struct InviteCreate { impl WebSocketEvent for InviteCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#invite-delete pub struct InviteDelete { pub channel_id: String, diff --git a/src/types/events/lazy_request.rs b/src/types/events/lazy_request.rs index 2bf3038..9e54d77 100644 --- a/src/types/events/lazy_request.rs +++ b/src/types/events/lazy_request.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use super::WebSocketEvent; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// /// Sent to the server to signify lazy loading of a guild; diff --git a/src/types/events/message.rs b/src/types/events/message.rs index 3b8d8b1..f4ca606 100644 --- a/src/types/events/message.rs +++ b/src/types/events/message.rs @@ -1,11 +1,10 @@ -use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use crate::types::entities::{Emoji, GuildMember, Message, PublicUser}; use super::WebSocketEvent; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] pub struct TypingStartEvent { pub channel_id: String, pub guild_id: Option, @@ -16,7 +15,7 @@ pub struct TypingStartEvent { impl WebSocketEvent for TypingStartEvent {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#message-create pub struct MessageCreate { #[serde(flatten)] @@ -26,7 +25,7 @@ pub struct MessageCreate { mentions: Option>, } -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#message-create-message-create-extra-fields pub struct MessageCreateUser { #[serde(flatten)] @@ -36,7 +35,7 @@ pub struct MessageCreateUser { impl WebSocketEvent for MessageCreate {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageUpdate { #[serde(flatten)] message: Message, @@ -47,7 +46,7 @@ pub struct MessageUpdate { impl WebSocketEvent for MessageUpdate {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageDelete { id: String, channel_id: String, @@ -56,7 +55,7 @@ pub struct MessageDelete { impl WebSocketEvent for MessageDelete {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageDeleteBulk { ids: Vec, channel_id: String, @@ -65,7 +64,7 @@ pub struct MessageDeleteBulk { impl WebSocketEvent for MessageDeleteBulk {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageReactionAdd { user_id: String, channel_id: String, @@ -77,7 +76,7 @@ pub struct MessageReactionAdd { impl WebSocketEvent for MessageReactionAdd {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageReactionRemove { user_id: String, channel_id: String, @@ -88,7 +87,7 @@ pub struct MessageReactionRemove { impl WebSocketEvent for MessageReactionRemove {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageReactionRemoveAll { channel_id: String, message_id: String, @@ -97,7 +96,7 @@ pub struct MessageReactionRemoveAll { impl WebSocketEvent for MessageReactionRemoveAll {} -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct MessageReactionRemoveEmoji { channel_id: String, message_id: String, @@ -107,7 +106,7 @@ pub struct MessageReactionRemoveEmoji { impl WebSocketEvent for MessageReactionRemoveEmoji {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// /// Not documented anywhere unofficially diff --git a/src/types/events/passive_update.rs b/src/types/events/passive_update.rs index 7417467..0d10354 100644 --- a/src/types/events/passive_update.rs +++ b/src/types/events/passive_update.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use super::{ChannelUnreadUpdateObject, WebSocketEvent}; use crate::types::{GuildMember, VoiceState}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// /// Seems to be passively set to update the client on guild details (though, why not just send the update events?) diff --git a/src/types/events/ready.rs b/src/types/events/ready.rs index c559f0b..e637b82 100644 --- a/src/types/events/ready.rs +++ b/src/types/events/ready.rs @@ -4,7 +4,7 @@ use crate::types::interfaces::ClientStatusObject; use crate::types::{Activity, GuildMember, PresenceUpdate, VoiceState}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Sort of documented, though most fields are left out /// For a full example see https://gist.github.com/kozabrada123/a347002b1fb8825a5727e40746d4e199 /// to:do add all undocumented fields @@ -27,7 +27,7 @@ pub struct GatewayReady { impl WebSocketEvent for GatewayReady {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// Sent after the READY event when a client is a user /// {"t":"READY_SUPPLEMENTAL","s":2,"op":0,"d":{"merged_presences":{"guilds":[[{"user_id":"463640391196082177","status":"online","game":null,"client_status":{"web":"online"},"activities":[]}]],"friends":[{"user_id":"463640391196082177","status":"online","last_modified":1684053508443,"client_status":{"web":"online"},"activities":[]}]},"merged_members":[[{"user_id":"463640391196082177","roles":[],"premium_since":null,"pending":false,"nick":"pog","mute":false,"joined_at":"2021-05-30T15:24:08.763000+00:00","flags":0,"deaf":false,"communication_disabled_until":null,"avatar":null}]],"lazy_private_channels":[],"guilds":[{"voice_states":[],"id":"848582562217590824","embedded_activities":[]}],"disclose":["pomelo"]}} @@ -43,13 +43,13 @@ pub struct GatewayReadySupplemental { impl WebSocketEvent for GatewayReadySupplemental {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] pub struct MergedPresences { pub guilds: Vec>, pub friends: Vec, } -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] pub struct MergedPresenceFriend { pub user_id: String, pub status: String, @@ -59,7 +59,7 @@ pub struct MergedPresenceFriend { pub activities: Vec, } -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] pub struct MergedPresenceGuild { pub user_id: String, pub status: String, @@ -69,7 +69,7 @@ pub struct MergedPresenceGuild { pub activities: Vec, } -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] pub struct SupplementalGuild { pub voice_states: Option>, pub id: String, diff --git a/src/types/events/relationship.rs b/src/types/events/relationship.rs index c9b79c0..6bcb84d 100644 --- a/src/types/events/relationship.rs +++ b/src/types/events/relationship.rs @@ -1,7 +1,7 @@ use crate::types::{events::WebSocketEvent, Relationship, RelationshipType, Snowflake}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://github.com/spacebarchat/server/issues/204 pub struct RelationshipAdd { #[serde(flatten)] @@ -11,7 +11,7 @@ pub struct RelationshipAdd { impl WebSocketEvent for RelationshipAdd {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://github.com/spacebarchat/server/issues/203 pub struct RelationshipRemove { pub id: Snowflake, diff --git a/src/types/events/request_members.rs b/src/types/events/request_members.rs index 67f37ce..c02cb8d 100644 --- a/src/types/events/request_members.rs +++ b/src/types/events/request_members.rs @@ -1,7 +1,7 @@ use crate::types::events::WebSocketEvent; use serde::{Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#request-guild-members-request-guild-members-structure pub struct GatewayRequestGuildMembers { pub guild_id: String, diff --git a/src/types/events/resume.rs b/src/types/events/resume.rs index 362de98..67ee7d2 100644 --- a/src/types/events/resume.rs +++ b/src/types/events/resume.rs @@ -1,7 +1,7 @@ use crate::types::events::WebSocketEvent; use serde::{Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] pub struct GatewayResume { pub token: String, pub session_id: String, diff --git a/src/types/events/session.rs b/src/types/events/session.rs index 26364d9..574c5fa 100644 --- a/src/types/events/session.rs +++ b/src/types/events/session.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{Activity, WebSocketEvent}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Officially Undocumented /// Seems like it sends active session info to users on connect /// [{"activities":[],"client_info":{"client":"web","os":"other","version":0},"session_id":"ab5941b50d818b1f8d93b4b1b581b192","status":"online"}] @@ -10,7 +10,7 @@ pub struct SessionsReplace { pub sessions: Vec, } -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Session info for the current user pub struct Session { pub activities: Vec, @@ -19,7 +19,7 @@ pub struct Session { pub status: String, } -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// Another Client info object /// {"client":"web","os":"other","version":0} // Note: I don't think this one exists yet? Though I might've made a mistake and this might be a duplicate diff --git a/src/types/events/stage_instance.rs b/src/types/events/stage_instance.rs index ea215f9..0fe487b 100644 --- a/src/types/events/stage_instance.rs +++ b/src/types/events/stage_instance.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::types::{StageInstance, WebSocketEvent}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#stage-instance-create pub struct StageInstanceCreate { #[serde(flatten)] @@ -11,7 +11,7 @@ pub struct StageInstanceCreate { impl WebSocketEvent for StageInstanceCreate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#stage-instance-update pub struct StageInstanceUpdate { #[serde(flatten)] @@ -20,7 +20,7 @@ pub struct StageInstanceUpdate { impl WebSocketEvent for StageInstanceUpdate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#stage-instance-delete pub struct StageInstanceDelete { #[serde(flatten)] diff --git a/src/types/events/thread.rs b/src/types/events/thread.rs index 0cc5f91..e262331 100644 --- a/src/types/events/thread.rs +++ b/src/types/events/thread.rs @@ -2,7 +2,7 @@ use crate::types::entities::{Channel, ThreadMember}; use crate::types::events::WebSocketEvent; use serde::{Deserialize, Serialize}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#thread-create pub struct ThreadCreate { #[serde(flatten)] @@ -11,7 +11,7 @@ pub struct ThreadCreate { impl WebSocketEvent for ThreadCreate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#thread-update pub struct ThreadUpdate { #[serde(flatten)] @@ -20,7 +20,7 @@ pub struct ThreadUpdate { impl WebSocketEvent for ThreadUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#thread-delete pub struct ThreadDelete { #[serde(flatten)] @@ -29,7 +29,7 @@ pub struct ThreadDelete { impl WebSocketEvent for ThreadDelete {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#thread-list-sync pub struct ThreadListSync { pub guild_id: String, @@ -40,7 +40,7 @@ pub struct ThreadListSync { impl WebSocketEvent for ThreadListSync {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#thread-member-update /// The inner payload is a thread member object with an extra field. pub struct ThreadMemberUpdate { @@ -51,7 +51,7 @@ pub struct ThreadMemberUpdate { impl WebSocketEvent for ThreadMemberUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#thread-members-update pub struct ThreadMembersUpdate { pub id: String, diff --git a/src/types/events/user.rs b/src/types/events/user.rs index cfdae5c..01c1a4b 100644 --- a/src/types/events/user.rs +++ b/src/types/events/user.rs @@ -3,7 +3,7 @@ use crate::types::events::WebSocketEvent; use crate::types::utils::Snowflake; use serde::{Deserialize, Serialize}; -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#user-update pub struct UserUpdate { #[serde(flatten)] @@ -12,7 +12,7 @@ pub struct UserUpdate { impl WebSocketEvent for UserUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// Undocumented /// /// Possibly an update for muted guild / channel settings for the current user @@ -37,7 +37,7 @@ pub struct UserGuildSettingsUpdate { impl WebSocketEvent for UserGuildSettingsUpdate {} -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Serialize, Clone)] /// Undocumented /// /// Received in [UserGuildSettingsUpdate] diff --git a/src/types/events/voice.rs b/src/types/events/voice.rs index 8af9c66..c7b4f62 100644 --- a/src/types/events/voice.rs +++ b/src/types/events/voice.rs @@ -1,7 +1,7 @@ use crate::types::{events::WebSocketEvent, VoiceState}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#update-voice-state /// /// Sent to the server @@ -16,7 +16,7 @@ pub struct UpdateVoiceState { impl WebSocketEvent for UpdateVoiceState {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#voice-state-update /// /// Received from the server @@ -29,7 +29,7 @@ pub struct VoiceStateUpdate { impl WebSocketEvent for VoiceStateUpdate {} -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#voice-server-update pub struct VoiceServerUpdate { pub token: String, diff --git a/src/types/events/webhooks.rs b/src/types/events/webhooks.rs index b88e1ee..3a93c60 100644 --- a/src/types/events/webhooks.rs +++ b/src/types/events/webhooks.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use super::WebSocketEvent; -#[derive(Debug, Deserialize, Serialize, Default)] +#[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See https://discord.com/developers/docs/topics/gateway-events#webhooks-update pub struct WebhooksUpdate { pub guild_id: String,