diff --git a/DSharpPlus/Clients/DiscordClient.Events.cs b/DSharpPlus/Clients/DiscordClient.Events.cs index d51c9a0d7c..e4a6ab7931 100644 --- a/DSharpPlus/Clients/DiscordClient.Events.cs +++ b/DSharpPlus/Clients/DiscordClient.Events.cs @@ -27,915 +27,914 @@ using DSharpPlus.EventArgs; using Microsoft.Extensions.Logging; -namespace DSharpPlus +namespace DSharpPlus; + +public sealed partial class DiscordClient { - public sealed partial class DiscordClient - { - internal static TimeSpan EventExecutionLimit { get; } = TimeSpan.FromSeconds(1); - - // oh lord why did you have to pack into regions - // this makes simple copy-paste ineffective - // :notlikethis: - - #region WebSocket - - /// - /// Fired whenever a WebSocket error occurs within the client. - /// - public event AsyncEventHandler SocketErrored - { - add => this._socketErrored.Register(value); - remove => this._socketErrored.Unregister(value); - } - private AsyncEvent _socketErrored; - - /// - /// Fired whenever WebSocket connection is established. - /// - public event AsyncEventHandler SocketOpened - { - add => this._socketOpened.Register(value); - remove => this._socketOpened.Unregister(value); - } - private AsyncEvent _socketOpened; - - /// - /// Fired whenever WebSocket connection is terminated. - /// - public event AsyncEventHandler SocketClosed - { - add => this._socketClosed.Register(value); - remove => this._socketClosed.Unregister(value); - } - private AsyncEvent _socketClosed; - - /// - /// Fired when this client has successfully completed its handshake with the websocket gateway. - /// - /// - /// will not be populated when this event is fired.
- /// See also: , - ///
- public event AsyncEventHandler SessionCreated - { - add => this._ready.Register(value); - remove => this._ready.Unregister(value); - } - private AsyncEvent _ready; - - /// - /// Fired whenever a session is resumed. - /// - public event AsyncEventHandler SessionResumed - { - add => this._resumed.Register(value); - remove => this._resumed.Unregister(value); - } - private AsyncEvent _resumed; - - /// - /// Fired on received heartbeat ACK. - /// - public event AsyncEventHandler Heartbeated - { - add => this._heartbeated.Register(value); - remove => this._heartbeated.Unregister(value); - } - private AsyncEvent _heartbeated; - - /// - /// Fired on heartbeat attempt cancellation due to too many failed heartbeats. - /// - public event AsyncEventHandler Zombied - { - add => this._zombied.Register(value); - remove => this._zombied.Unregister(value); - } - private AsyncEvent _zombied; - - #endregion - - - #region Application - public event AsyncEventHandler ApplicationCommandPermissionsUpdated - { - add => this._applicationCommandPermissionsUpdated.Register(value); - remove => this._applicationCommandPermissionsUpdated.Unregister(value); - } - - private AsyncEvent _applicationCommandPermissionsUpdated; - - #endregion - - #region Channel - - /// - /// Fired when a new channel is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelCreated - { - add => this._channelCreated.Register(value); - remove => this._channelCreated.Unregister(value); - } - private AsyncEvent _channelCreated; - - /// - /// Fired when a channel is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelUpdated - { - add => this._channelUpdated.Register(value); - remove => this._channelUpdated.Unregister(value); - } - private AsyncEvent _channelUpdated; - - /// - /// Fired when a channel is deleted - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelDeleted - { - add => this._channelDeleted.Register(value); - remove => this._channelDeleted.Unregister(value); - } - private AsyncEvent _channelDeleted; - - /// - /// Fired when a dm channel is deleted - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler DmChannelDeleted - { - add => this._dmChannelDeleted.Register(value); - remove => this._dmChannelDeleted.Unregister(value); - } - private AsyncEvent _dmChannelDeleted; - - /// - /// Fired whenever a channel's pinned message list is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelPinsUpdated - { - add => this._channelPinsUpdated.Register(value); - remove => this._channelPinsUpdated.Unregister(value); - } - private AsyncEvent _channelPinsUpdated; - - #endregion - - #region Guild - - /// - /// Fired when the user joins a new guild. - /// For this Event you need the intent specified in - /// - /// [alias="GuildJoined"][alias="JoinedGuild"] - public event AsyncEventHandler GuildCreated - { - add => this._guildCreated.Register(value); - remove => this._guildCreated.Unregister(value); - } - private AsyncEvent _guildCreated; - - /// - /// Fired when a guild is becoming available. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildAvailable - { - add => this._guildAvailable.Register(value); - remove => this._guildAvailable.Unregister(value); - } - private AsyncEvent _guildAvailable; - - /// - /// Fired when a guild is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildUpdated - { - add => this._guildUpdated.Register(value); - remove => this._guildUpdated.Unregister(value); - } - private AsyncEvent _guildUpdated; - - /// - /// Fired when the user leaves or is removed from a guild. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildDeleted - { - add => this._guildDeleted.Register(value); - remove => this._guildDeleted.Unregister(value); - } - private AsyncEvent _guildDeleted; - - /// - /// Fired when a guild becomes unavailable. - /// - public event AsyncEventHandler GuildUnavailable - { - add => this._guildUnavailable.Register(value); - remove => this._guildUnavailable.Unregister(value); - } - private AsyncEvent _guildUnavailable; - - /// - /// Fired when all guilds finish streaming from Discord. - /// - public event AsyncEventHandler GuildDownloadCompleted - { - add => this._guildDownloadCompletedEv.Register(value); - remove => this._guildDownloadCompletedEv.Unregister(value); - } - private AsyncEvent _guildDownloadCompletedEv; - - /// - /// Fired when a guilds emojis get updated - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildEmojisUpdated - { - add => this._guildEmojisUpdated.Register(value); - remove => this._guildEmojisUpdated.Unregister(value); - } - private AsyncEvent _guildEmojisUpdated; - - - public event AsyncEventHandler GuildStickersUpdated - { - add => this._guildStickersUpdated.Register(value); - remove => this._guildStickersUpdated.Unregister(value); - } - - private AsyncEvent _guildStickersUpdated; - - /// - /// Fired when a guild integration is updated. - /// - public event AsyncEventHandler GuildIntegrationsUpdated - { - add => this._guildIntegrationsUpdated.Register(value); - remove => this._guildIntegrationsUpdated.Unregister(value); - } - private AsyncEvent _guildIntegrationsUpdated; - - /// - /// Fired when a audit log entry is created. - /// - public event AsyncEventHandler GuildAuditLogCreated - { - add => this._guildAuditLogCreated.Register(value); - remove => this._guildAuditLogCreated.Unregister(value); - } - private AsyncEvent _guildAuditLogCreated; + internal static TimeSpan EventExecutionLimit { get; } = TimeSpan.FromSeconds(1); + + // oh lord why did you have to pack into regions + // this makes simple copy-paste ineffective + // :notlikethis: + + #region WebSocket + + /// + /// Fired whenever a WebSocket error occurs within the client. + /// + public event AsyncEventHandler SocketErrored + { + add => this._socketErrored.Register(value); + remove => this._socketErrored.Unregister(value); + } + private AsyncEvent _socketErrored; + + /// + /// Fired whenever WebSocket connection is established. + /// + public event AsyncEventHandler SocketOpened + { + add => this._socketOpened.Register(value); + remove => this._socketOpened.Unregister(value); + } + private AsyncEvent _socketOpened; + + /// + /// Fired whenever WebSocket connection is terminated. + /// + public event AsyncEventHandler SocketClosed + { + add => this._socketClosed.Register(value); + remove => this._socketClosed.Unregister(value); + } + private AsyncEvent _socketClosed; + + /// + /// Fired when this client has successfully completed its handshake with the websocket gateway. + /// + /// + /// will not be populated when this event is fired.
+ /// See also: , + ///
+ public event AsyncEventHandler SessionCreated + { + add => this._ready.Register(value); + remove => this._ready.Unregister(value); + } + private AsyncEvent _ready; + + /// + /// Fired whenever a session is resumed. + /// + public event AsyncEventHandler SessionResumed + { + add => this._resumed.Register(value); + remove => this._resumed.Unregister(value); + } + private AsyncEvent _resumed; + + /// + /// Fired on received heartbeat ACK. + /// + public event AsyncEventHandler Heartbeated + { + add => this._heartbeated.Register(value); + remove => this._heartbeated.Unregister(value); + } + private AsyncEvent _heartbeated; + + /// + /// Fired on heartbeat attempt cancellation due to too many failed heartbeats. + /// + public event AsyncEventHandler Zombied + { + add => this._zombied.Register(value); + remove => this._zombied.Unregister(value); + } + private AsyncEvent _zombied; + + #endregion + + + #region Application + public event AsyncEventHandler ApplicationCommandPermissionsUpdated + { + add => this._applicationCommandPermissionsUpdated.Register(value); + remove => this._applicationCommandPermissionsUpdated.Unregister(value); + } + + private AsyncEvent _applicationCommandPermissionsUpdated; + + #endregion + + #region Channel + + /// + /// Fired when a new channel is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelCreated + { + add => this._channelCreated.Register(value); + remove => this._channelCreated.Unregister(value); + } + private AsyncEvent _channelCreated; + + /// + /// Fired when a channel is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelUpdated + { + add => this._channelUpdated.Register(value); + remove => this._channelUpdated.Unregister(value); + } + private AsyncEvent _channelUpdated; + + /// + /// Fired when a channel is deleted + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelDeleted + { + add => this._channelDeleted.Register(value); + remove => this._channelDeleted.Unregister(value); + } + private AsyncEvent _channelDeleted; + + /// + /// Fired when a dm channel is deleted + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler DmChannelDeleted + { + add => this._dmChannelDeleted.Register(value); + remove => this._dmChannelDeleted.Unregister(value); + } + private AsyncEvent _dmChannelDeleted; + + /// + /// Fired whenever a channel's pinned message list is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelPinsUpdated + { + add => this._channelPinsUpdated.Register(value); + remove => this._channelPinsUpdated.Unregister(value); + } + private AsyncEvent _channelPinsUpdated; + + #endregion + + #region Guild + + /// + /// Fired when the user joins a new guild. + /// For this Event you need the intent specified in + /// + /// [alias="GuildJoined"][alias="JoinedGuild"] + public event AsyncEventHandler GuildCreated + { + add => this._guildCreated.Register(value); + remove => this._guildCreated.Unregister(value); + } + private AsyncEvent _guildCreated; + + /// + /// Fired when a guild is becoming available. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildAvailable + { + add => this._guildAvailable.Register(value); + remove => this._guildAvailable.Unregister(value); + } + private AsyncEvent _guildAvailable; + + /// + /// Fired when a guild is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildUpdated + { + add => this._guildUpdated.Register(value); + remove => this._guildUpdated.Unregister(value); + } + private AsyncEvent _guildUpdated; + + /// + /// Fired when the user leaves or is removed from a guild. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildDeleted + { + add => this._guildDeleted.Register(value); + remove => this._guildDeleted.Unregister(value); + } + private AsyncEvent _guildDeleted; + + /// + /// Fired when a guild becomes unavailable. + /// + public event AsyncEventHandler GuildUnavailable + { + add => this._guildUnavailable.Register(value); + remove => this._guildUnavailable.Unregister(value); + } + private AsyncEvent _guildUnavailable; + + /// + /// Fired when all guilds finish streaming from Discord. + /// + public event AsyncEventHandler GuildDownloadCompleted + { + add => this._guildDownloadCompletedEv.Register(value); + remove => this._guildDownloadCompletedEv.Unregister(value); + } + private AsyncEvent _guildDownloadCompletedEv; + + /// + /// Fired when a guilds emojis get updated + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildEmojisUpdated + { + add => this._guildEmojisUpdated.Register(value); + remove => this._guildEmojisUpdated.Unregister(value); + } + private AsyncEvent _guildEmojisUpdated; + + + public event AsyncEventHandler GuildStickersUpdated + { + add => this._guildStickersUpdated.Register(value); + remove => this._guildStickersUpdated.Unregister(value); + } + + private AsyncEvent _guildStickersUpdated; + + /// + /// Fired when a guild integration is updated. + /// + public event AsyncEventHandler GuildIntegrationsUpdated + { + add => this._guildIntegrationsUpdated.Register(value); + remove => this._guildIntegrationsUpdated.Unregister(value); + } + private AsyncEvent _guildIntegrationsUpdated; + + /// + /// Fired when a audit log entry is created. + /// + public event AsyncEventHandler GuildAuditLogCreated + { + add => this._guildAuditLogCreated.Register(value); + remove => this._guildAuditLogCreated.Unregister(value); + } + private AsyncEvent _guildAuditLogCreated; - #endregion - - #region Scheduled Guild Events - - public event AsyncEventHandler ScheduledGuildEventCreated - { - add => this._scheduledGuildEventCreated.Register(value); - remove => this._scheduledGuildEventCreated.Unregister(value); - } - private AsyncEvent _scheduledGuildEventCreated; - - public event AsyncEventHandler ScheduledGuildEventUpdated - { - add => this._scheduledGuildEventUpdated.Register(value); - remove => this._scheduledGuildEventUpdated.Unregister(value); - } - private AsyncEvent _scheduledGuildEventUpdated; - - public event AsyncEventHandler ScheduledGuildEventDeleted - { - add => this._scheduledGuildEventDeleted.Register(value); - remove => this._scheduledGuildEventDeleted.Unregister(value); - } - private AsyncEvent _scheduledGuildEventDeleted; - - public event AsyncEventHandler ScheduledGuildEventCompleted - { - add => this._scheduledGuildEventCompleted.Register(value); - remove => this._scheduledGuildEventCompleted.Unregister(value); - } - private AsyncEvent _scheduledGuildEventCompleted; - - public event AsyncEventHandler ScheduledGuildEventUserAdded - { - add => this._scheduledGuildEventUserAdded.Register(value); - remove => this._scheduledGuildEventUserAdded.Unregister(value); - } - private AsyncEvent _scheduledGuildEventUserAdded; - - public event AsyncEventHandler ScheduledGuildEventUserRemoved - { - add => this._scheduledGuildEventUserRemoved.Register(value); - remove => this._scheduledGuildEventUserRemoved.Unregister(value); - } - private AsyncEvent _scheduledGuildEventUserRemoved; - - #endregion - - #region Guild Ban - - /// - /// Fired when a guild ban gets added - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildBanAdded - { - add => this._guildBanAdded.Register(value); - remove => this._guildBanAdded.Unregister(value); - } - private AsyncEvent _guildBanAdded; - - /// - /// Fired when a guild ban gets removed - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildBanRemoved - { - add => this._guildBanRemoved.Register(value); - remove => this._guildBanRemoved.Unregister(value); - } - private AsyncEvent _guildBanRemoved; - - #endregion - - #region Guild Member - - /// - /// Fired when a new user joins a guild. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildMemberAdded - { - add => this._guildMemberAdded.Register(value); - remove => this._guildMemberAdded.Unregister(value); - } - private AsyncEvent _guildMemberAdded; - - /// - /// Fired when a user is removed from a guild (leave/kick/ban). - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildMemberRemoved - { - add => this._guildMemberRemoved.Register(value); - remove => this._guildMemberRemoved.Unregister(value); - } - private AsyncEvent _guildMemberRemoved; - - /// - /// Fired when a guild member is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildMemberUpdated - { - add => this._guildMemberUpdated.Register(value); - remove => this._guildMemberUpdated.Unregister(value); - } - private AsyncEvent _guildMemberUpdated; - - /// - /// Fired in response to Gateway Request Guild Members. - /// - public event AsyncEventHandler GuildMembersChunked - { - add => this._guildMembersChunked.Register(value); - remove => this._guildMembersChunked.Unregister(value); - } - private AsyncEvent _guildMembersChunked; - - #endregion - - #region Guild Role - - /// - /// Fired when a guild role is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildRoleCreated - { - add => this._guildRoleCreated.Register(value); - remove => this._guildRoleCreated.Unregister(value); - } - private AsyncEvent _guildRoleCreated; - - /// - /// Fired when a guild role is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildRoleUpdated - { - add => this._guildRoleUpdated.Register(value); - remove => this._guildRoleUpdated.Unregister(value); - } - private AsyncEvent _guildRoleUpdated; - - /// - /// Fired when a guild role is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildRoleDeleted - { - add => this._guildRoleDeleted.Register(value); - remove => this._guildRoleDeleted.Unregister(value); - } - private AsyncEvent _guildRoleDeleted; - - #endregion - - #region Invite - - /// - /// Fired when an invite is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler InviteCreated - { - add => this._inviteCreated.Register(value); - remove => this._inviteCreated.Unregister(value); - } - private AsyncEvent _inviteCreated; - - /// - /// Fired when an invite is deleted. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler InviteDeleted - { - add => this._inviteDeleted.Register(value); - remove => this._inviteDeleted.Unregister(value); - } - private AsyncEvent _inviteDeleted; - - #endregion - - #region Message - - /// - /// Fired when a message is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageCreated - { - add => this._messageCreated.Register(value); - remove => this._messageCreated.Unregister(value); - } - private AsyncEvent _messageCreated; - - /// - /// Fired when message is acknowledged by the user. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageAcknowledged - { - add => this._messageAcknowledged.Register(value); - remove => this._messageAcknowledged.Unregister(value); - } - private AsyncEvent _messageAcknowledged; - - /// - /// Fired when a message is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageUpdated - { - add => this._messageUpdated.Register(value); - remove => this._messageUpdated.Unregister(value); - } - private AsyncEvent _messageUpdated; - - /// - /// Fired when a message is deleted. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageDeleted - { - add => this._messageDeleted.Register(value); - remove => this._messageDeleted.Unregister(value); - } - private AsyncEvent _messageDeleted; - - /// - /// Fired when multiple messages are deleted at once. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessagesBulkDeleted - { - add => this._messagesBulkDeleted.Register(value); - remove => this._messagesBulkDeleted.Unregister(value); - } - private AsyncEvent _messagesBulkDeleted; - - #endregion - - #region Message Reaction - - /// - /// Fired when a reaction gets added to a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionAdded - { - add => this._messageReactionAdded.Register(value); - remove => this._messageReactionAdded.Unregister(value); - } - private AsyncEvent _messageReactionAdded; - - /// - /// Fired when a reaction gets removed from a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionRemoved - { - add => this._messageReactionRemoved.Register(value); - remove => this._messageReactionRemoved.Unregister(value); - } - private AsyncEvent _messageReactionRemoved; - - /// - /// Fired when all reactions get removed from a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionsCleared - { - add => this._messageReactionsCleared.Register(value); - remove => this._messageReactionsCleared.Unregister(value); - } - private AsyncEvent _messageReactionsCleared; - - /// - /// Fired when all reactions of a specific reaction are removed from a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionRemovedEmoji - { - add => this._messageReactionRemovedEmoji.Register(value); - remove => this._messageReactionRemovedEmoji.Unregister(value); - } - private AsyncEvent _messageReactionRemovedEmoji; - - #endregion - - #region Presence/User Update - - /// - /// Fired when a presence has been updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler PresenceUpdated - { - add => this._presenceUpdated.Register(value); - remove => this._presenceUpdated.Unregister(value); - } - private AsyncEvent _presenceUpdated; - - - /// - /// Fired when the current user updates their settings. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler UserSettingsUpdated - { - add => this._userSettingsUpdated.Register(value); - remove => this._userSettingsUpdated.Unregister(value); - } - private AsyncEvent _userSettingsUpdated; - - /// - /// Fired when properties about the current user change. - /// - /// - /// NB: This event only applies for changes to the current user, the client that is connected to Discord. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler UserUpdated - { - add => this._userUpdated.Register(value); - remove => this._userUpdated.Unregister(value); - } - private AsyncEvent _userUpdated; - - #endregion - - #region Voice - - /// - /// Fired when someone joins/leaves/moves voice channels. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler VoiceStateUpdated - { - add => this._voiceStateUpdated.Register(value); - remove => this._voiceStateUpdated.Unregister(value); - } - private AsyncEvent _voiceStateUpdated; - - /// - /// Fired when a guild's voice server is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler VoiceServerUpdated - { - add => this._voiceServerUpdated.Register(value); - remove => this._voiceServerUpdated.Unregister(value); - } - private AsyncEvent _voiceServerUpdated; - - #endregion - - #region Thread - - /// - /// Fired when a thread is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadCreated - { - add => this._threadCreated.Register(value); - remove => this._threadCreated.Unregister(value); - } - private AsyncEvent _threadCreated; - - /// - /// Fired when a thread is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadUpdated - { - add => this._threadUpdated.Register(value); - remove => this._threadUpdated.Unregister(value); - } - private AsyncEvent _threadUpdated; - - /// - /// Fired when a thread is deleted. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadDeleted - { - add => this._threadDeleted.Register(value); - remove => this._threadDeleted.Unregister(value); - } - private AsyncEvent _threadDeleted; - - /// - /// Fired when the current member gains access to a channel(s) that has threads. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadListSynced - { - add => this._threadListSynced.Register(value); - remove => this._threadListSynced.Unregister(value); - } - private AsyncEvent _threadListSynced; - - /// - /// Fired when the thread member for the current user is updated. - /// For this Event you need the intent specified in - /// - /// - /// This event is mostly documented for completeness, and it not fired every time - /// DM channels in which no prior messages were received or sent. - /// - public event AsyncEventHandler ThreadMemberUpdated - { - add => this._threadMemberUpdated.Register(value); - remove => this._threadMemberUpdated.Unregister(value); - } - private AsyncEvent _threadMemberUpdated; - - /// - /// Fired when the thread members are updated. - /// For this Event you need the or intent specified in - /// - public event AsyncEventHandler ThreadMembersUpdated - { - add => this._threadMembersUpdated.Register(value); - remove => this._threadMembersUpdated.Unregister(value); - } - private AsyncEvent _threadMembersUpdated; - - #endregion + #endregion + + #region Scheduled Guild Events + + public event AsyncEventHandler ScheduledGuildEventCreated + { + add => this._scheduledGuildEventCreated.Register(value); + remove => this._scheduledGuildEventCreated.Unregister(value); + } + private AsyncEvent _scheduledGuildEventCreated; + + public event AsyncEventHandler ScheduledGuildEventUpdated + { + add => this._scheduledGuildEventUpdated.Register(value); + remove => this._scheduledGuildEventUpdated.Unregister(value); + } + private AsyncEvent _scheduledGuildEventUpdated; + + public event AsyncEventHandler ScheduledGuildEventDeleted + { + add => this._scheduledGuildEventDeleted.Register(value); + remove => this._scheduledGuildEventDeleted.Unregister(value); + } + private AsyncEvent _scheduledGuildEventDeleted; + + public event AsyncEventHandler ScheduledGuildEventCompleted + { + add => this._scheduledGuildEventCompleted.Register(value); + remove => this._scheduledGuildEventCompleted.Unregister(value); + } + private AsyncEvent _scheduledGuildEventCompleted; + + public event AsyncEventHandler ScheduledGuildEventUserAdded + { + add => this._scheduledGuildEventUserAdded.Register(value); + remove => this._scheduledGuildEventUserAdded.Unregister(value); + } + private AsyncEvent _scheduledGuildEventUserAdded; + + public event AsyncEventHandler ScheduledGuildEventUserRemoved + { + add => this._scheduledGuildEventUserRemoved.Register(value); + remove => this._scheduledGuildEventUserRemoved.Unregister(value); + } + private AsyncEvent _scheduledGuildEventUserRemoved; + + #endregion + + #region Guild Ban + + /// + /// Fired when a guild ban gets added + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildBanAdded + { + add => this._guildBanAdded.Register(value); + remove => this._guildBanAdded.Unregister(value); + } + private AsyncEvent _guildBanAdded; + + /// + /// Fired when a guild ban gets removed + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildBanRemoved + { + add => this._guildBanRemoved.Register(value); + remove => this._guildBanRemoved.Unregister(value); + } + private AsyncEvent _guildBanRemoved; + + #endregion + + #region Guild Member + + /// + /// Fired when a new user joins a guild. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildMemberAdded + { + add => this._guildMemberAdded.Register(value); + remove => this._guildMemberAdded.Unregister(value); + } + private AsyncEvent _guildMemberAdded; + + /// + /// Fired when a user is removed from a guild (leave/kick/ban). + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildMemberRemoved + { + add => this._guildMemberRemoved.Register(value); + remove => this._guildMemberRemoved.Unregister(value); + } + private AsyncEvent _guildMemberRemoved; + + /// + /// Fired when a guild member is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildMemberUpdated + { + add => this._guildMemberUpdated.Register(value); + remove => this._guildMemberUpdated.Unregister(value); + } + private AsyncEvent _guildMemberUpdated; + + /// + /// Fired in response to Gateway Request Guild Members. + /// + public event AsyncEventHandler GuildMembersChunked + { + add => this._guildMembersChunked.Register(value); + remove => this._guildMembersChunked.Unregister(value); + } + private AsyncEvent _guildMembersChunked; + + #endregion + + #region Guild Role + + /// + /// Fired when a guild role is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildRoleCreated + { + add => this._guildRoleCreated.Register(value); + remove => this._guildRoleCreated.Unregister(value); + } + private AsyncEvent _guildRoleCreated; + + /// + /// Fired when a guild role is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildRoleUpdated + { + add => this._guildRoleUpdated.Register(value); + remove => this._guildRoleUpdated.Unregister(value); + } + private AsyncEvent _guildRoleUpdated; + + /// + /// Fired when a guild role is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildRoleDeleted + { + add => this._guildRoleDeleted.Register(value); + remove => this._guildRoleDeleted.Unregister(value); + } + private AsyncEvent _guildRoleDeleted; + + #endregion + + #region Invite + + /// + /// Fired when an invite is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler InviteCreated + { + add => this._inviteCreated.Register(value); + remove => this._inviteCreated.Unregister(value); + } + private AsyncEvent _inviteCreated; + + /// + /// Fired when an invite is deleted. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler InviteDeleted + { + add => this._inviteDeleted.Register(value); + remove => this._inviteDeleted.Unregister(value); + } + private AsyncEvent _inviteDeleted; + + #endregion + + #region Message + + /// + /// Fired when a message is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageCreated + { + add => this._messageCreated.Register(value); + remove => this._messageCreated.Unregister(value); + } + private AsyncEvent _messageCreated; + + /// + /// Fired when message is acknowledged by the user. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageAcknowledged + { + add => this._messageAcknowledged.Register(value); + remove => this._messageAcknowledged.Unregister(value); + } + private AsyncEvent _messageAcknowledged; + + /// + /// Fired when a message is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageUpdated + { + add => this._messageUpdated.Register(value); + remove => this._messageUpdated.Unregister(value); + } + private AsyncEvent _messageUpdated; + + /// + /// Fired when a message is deleted. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageDeleted + { + add => this._messageDeleted.Register(value); + remove => this._messageDeleted.Unregister(value); + } + private AsyncEvent _messageDeleted; + + /// + /// Fired when multiple messages are deleted at once. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessagesBulkDeleted + { + add => this._messagesBulkDeleted.Register(value); + remove => this._messagesBulkDeleted.Unregister(value); + } + private AsyncEvent _messagesBulkDeleted; + + #endregion + + #region Message Reaction + + /// + /// Fired when a reaction gets added to a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionAdded + { + add => this._messageReactionAdded.Register(value); + remove => this._messageReactionAdded.Unregister(value); + } + private AsyncEvent _messageReactionAdded; + + /// + /// Fired when a reaction gets removed from a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionRemoved + { + add => this._messageReactionRemoved.Register(value); + remove => this._messageReactionRemoved.Unregister(value); + } + private AsyncEvent _messageReactionRemoved; + + /// + /// Fired when all reactions get removed from a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionsCleared + { + add => this._messageReactionsCleared.Register(value); + remove => this._messageReactionsCleared.Unregister(value); + } + private AsyncEvent _messageReactionsCleared; + + /// + /// Fired when all reactions of a specific reaction are removed from a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionRemovedEmoji + { + add => this._messageReactionRemovedEmoji.Register(value); + remove => this._messageReactionRemovedEmoji.Unregister(value); + } + private AsyncEvent _messageReactionRemovedEmoji; + + #endregion + + #region Presence/User Update + + /// + /// Fired when a presence has been updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler PresenceUpdated + { + add => this._presenceUpdated.Register(value); + remove => this._presenceUpdated.Unregister(value); + } + private AsyncEvent _presenceUpdated; + + + /// + /// Fired when the current user updates their settings. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler UserSettingsUpdated + { + add => this._userSettingsUpdated.Register(value); + remove => this._userSettingsUpdated.Unregister(value); + } + private AsyncEvent _userSettingsUpdated; + + /// + /// Fired when properties about the current user change. + /// + /// + /// NB: This event only applies for changes to the current user, the client that is connected to Discord. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler UserUpdated + { + add => this._userUpdated.Register(value); + remove => this._userUpdated.Unregister(value); + } + private AsyncEvent _userUpdated; + + #endregion + + #region Voice + + /// + /// Fired when someone joins/leaves/moves voice channels. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler VoiceStateUpdated + { + add => this._voiceStateUpdated.Register(value); + remove => this._voiceStateUpdated.Unregister(value); + } + private AsyncEvent _voiceStateUpdated; + + /// + /// Fired when a guild's voice server is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler VoiceServerUpdated + { + add => this._voiceServerUpdated.Register(value); + remove => this._voiceServerUpdated.Unregister(value); + } + private AsyncEvent _voiceServerUpdated; + + #endregion + + #region Thread + + /// + /// Fired when a thread is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadCreated + { + add => this._threadCreated.Register(value); + remove => this._threadCreated.Unregister(value); + } + private AsyncEvent _threadCreated; + + /// + /// Fired when a thread is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadUpdated + { + add => this._threadUpdated.Register(value); + remove => this._threadUpdated.Unregister(value); + } + private AsyncEvent _threadUpdated; + + /// + /// Fired when a thread is deleted. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadDeleted + { + add => this._threadDeleted.Register(value); + remove => this._threadDeleted.Unregister(value); + } + private AsyncEvent _threadDeleted; + + /// + /// Fired when the current member gains access to a channel(s) that has threads. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadListSynced + { + add => this._threadListSynced.Register(value); + remove => this._threadListSynced.Unregister(value); + } + private AsyncEvent _threadListSynced; + + /// + /// Fired when the thread member for the current user is updated. + /// For this Event you need the intent specified in + /// + /// + /// This event is mostly documented for completeness, and it not fired every time + /// DM channels in which no prior messages were received or sent. + /// + public event AsyncEventHandler ThreadMemberUpdated + { + add => this._threadMemberUpdated.Register(value); + remove => this._threadMemberUpdated.Unregister(value); + } + private AsyncEvent _threadMemberUpdated; + + /// + /// Fired when the thread members are updated. + /// For this Event you need the or intent specified in + /// + public event AsyncEventHandler ThreadMembersUpdated + { + add => this._threadMembersUpdated.Register(value); + remove => this._threadMembersUpdated.Unregister(value); + } + private AsyncEvent _threadMembersUpdated; + + #endregion - #region Integration - - /// - /// Fired when an integration is created. - /// - public event AsyncEventHandler IntegrationCreated - { - add => this._integrationCreated.Register(value); - remove => this._integrationCreated.Unregister(value); - } - private AsyncEvent _integrationCreated; - - /// - /// Fired when an integration is updated. - /// - public event AsyncEventHandler IntegrationUpdated - { - add => this._integrationUpdated.Register(value); - remove => this._integrationUpdated.Unregister(value); - } - private AsyncEvent _integrationUpdated; - - /// - /// Fired when an integration is deleted. - /// - public event AsyncEventHandler IntegrationDeleted - { - add => this._integrationDeleted.Register(value); - remove => this._integrationDeleted.Unregister(value); - } - private AsyncEvent _integrationDeleted; - - #endregion - - #region Stage Instance - - /// - /// Fired when a stage instance is created. - /// - public event AsyncEventHandler StageInstanceCreated - { - add => this._stageInstanceCreated.Register(value); - remove => this._stageInstanceCreated.Unregister(value); - } - private AsyncEvent _stageInstanceCreated; - - /// - /// Fired when a stage instance is updated. - /// - public event AsyncEventHandler StageInstanceUpdated - { - add => this._stageInstanceUpdated.Register(value); - remove => this._stageInstanceUpdated.Unregister(value); - } - private AsyncEvent _stageInstanceUpdated; - - /// - /// Fired when a stage instance is deleted. - /// - public event AsyncEventHandler StageInstanceDeleted - { - add => this._stageInstanceDeleted.Register(value); - remove => this._stageInstanceDeleted.Unregister(value); - } - private AsyncEvent _stageInstanceDeleted; - - #endregion - - #region Misc - - /// - /// Fired when an interaction is invoked. - /// - public event AsyncEventHandler InteractionCreated - { - add => this._interactionCreated.Register(value); - remove => this._interactionCreated.Unregister(value); - } - private AsyncEvent _interactionCreated; - - /// - /// Fired when a component is invoked. - /// - public event AsyncEventHandler ComponentInteractionCreated - { - add => this._componentInteractionCreated.Register(value); - remove => this._componentInteractionCreated.Unregister(value); - } - - private AsyncEvent _componentInteractionCreated; - - /// - /// Fired when a modal is submitted. If a modal is closed, this event is not fired. - /// - public event AsyncEventHandler ModalSubmitted - { - add => this._modalSubmitted.Register(value); - remove => this._modalSubmitted.Unregister(value); - } - - private AsyncEvent _modalSubmitted; - - /// - /// Fired when a user uses a context menu. - /// - public event AsyncEventHandler ContextMenuInteractionCreated - { - add => this._contextMenuInteractionCreated.Register(value); - remove => this._contextMenuInteractionCreated.Unregister(value); - } - - private AsyncEvent _contextMenuInteractionCreated; - - /// - /// Fired when a user starts typing in a channel. - /// - public event AsyncEventHandler TypingStarted - { - add => this._typingStarted.Register(value); - remove => this._typingStarted.Unregister(value); - } - private AsyncEvent _typingStarted; - - /// - /// Fired when an unknown event gets received. - /// - public event AsyncEventHandler UnknownEvent - { - add => this._unknownEvent.Register(value); - remove => this._unknownEvent.Unregister(value); - } - private AsyncEvent _unknownEvent; - - /// - /// Fired whenever webhooks update. - /// - public event AsyncEventHandler WebhooksUpdated - { - add => this._webhooksUpdated.Register(value); - remove => this._webhooksUpdated.Unregister(value); - } - private AsyncEvent _webhooksUpdated; - - /// - /// Fired whenever an error occurs within an event handler. - /// - public event AsyncEventHandler ClientErrored - { - add => this._clientErrored.Register(value); - remove => this._clientErrored.Unregister(value); - } - private AsyncEvent _clientErrored; - - #endregion - - #region Error Handling - - internal void EventErrorHandler(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, TSender sender, TArgs eventArgs) - where TArgs : AsyncEventArgs - { - this.Logger.LogError(LoggerEvents.EventHandlerException, ex, "Event handler exception for event {Event} thrown from {Method} (defined in {DeclaryingType})", asyncEvent.Name, handler.Method, handler.Method.DeclaringType); - this._clientErrored.InvokeAsync(this, new ClientErrorEventArgs { EventName = asyncEvent.Name, Exception = ex }).GetAwaiter().GetResult(); - } - - private void Goof(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, TSender sender, TArgs eventArgs) - where TArgs : AsyncEventArgs => this.Logger.LogCritical(LoggerEvents.EventHandlerException, ex, "Exception event handler {Method} (defined in {DeclaringType}) threw an exception", handler.Method, handler.Method.DeclaringType); - - #endregion - - #region AutoModeration - - /// - /// Fired when a new auto-moderation rule is created. - /// - public event AsyncEventHandler AutoModerationRuleCreated - { - add => this._autoModerationRuleCreated.Register(value); - remove => this._autoModerationRuleCreated.Unregister(value); - } - private AsyncEvent _autoModerationRuleCreated; - - /// - /// Fired when an auto-moderation rule is updated. - /// - public event AsyncEventHandler AutoModerationRuleUpdated - { - add => this._autoModerationRuleUpdated.Register(value); - remove => this._autoModerationRuleUpdated.Unregister(value); - } - private AsyncEvent _autoModerationRuleUpdated; - - /// - /// Fired when an auto-moderation rule is deleted. - /// - public event AsyncEventHandler AutoModerationRuleDeleted - { - add => this._autoModerationRuleDeleted.Register(value); - remove => this._autoModerationRuleDeleted.Unregister(value); - } - private AsyncEvent _autoModerationRuleDeleted; - - /// - /// Fired when an auto-moderation is executed. - /// - public event AsyncEventHandler AutoModerationRuleExecuted - { - add => this._autoModerationRuleExecuted.Register(value); - remove => this._autoModerationRuleExecuted.Unregister(value); - } - private AsyncEvent _autoModerationRuleExecuted; - #endregion + #region Integration + + /// + /// Fired when an integration is created. + /// + public event AsyncEventHandler IntegrationCreated + { + add => this._integrationCreated.Register(value); + remove => this._integrationCreated.Unregister(value); + } + private AsyncEvent _integrationCreated; + + /// + /// Fired when an integration is updated. + /// + public event AsyncEventHandler IntegrationUpdated + { + add => this._integrationUpdated.Register(value); + remove => this._integrationUpdated.Unregister(value); + } + private AsyncEvent _integrationUpdated; + + /// + /// Fired when an integration is deleted. + /// + public event AsyncEventHandler IntegrationDeleted + { + add => this._integrationDeleted.Register(value); + remove => this._integrationDeleted.Unregister(value); + } + private AsyncEvent _integrationDeleted; + + #endregion + + #region Stage Instance + + /// + /// Fired when a stage instance is created. + /// + public event AsyncEventHandler StageInstanceCreated + { + add => this._stageInstanceCreated.Register(value); + remove => this._stageInstanceCreated.Unregister(value); + } + private AsyncEvent _stageInstanceCreated; + + /// + /// Fired when a stage instance is updated. + /// + public event AsyncEventHandler StageInstanceUpdated + { + add => this._stageInstanceUpdated.Register(value); + remove => this._stageInstanceUpdated.Unregister(value); + } + private AsyncEvent _stageInstanceUpdated; + + /// + /// Fired when a stage instance is deleted. + /// + public event AsyncEventHandler StageInstanceDeleted + { + add => this._stageInstanceDeleted.Register(value); + remove => this._stageInstanceDeleted.Unregister(value); + } + private AsyncEvent _stageInstanceDeleted; + + #endregion + + #region Misc + + /// + /// Fired when an interaction is invoked. + /// + public event AsyncEventHandler InteractionCreated + { + add => this._interactionCreated.Register(value); + remove => this._interactionCreated.Unregister(value); + } + private AsyncEvent _interactionCreated; + + /// + /// Fired when a component is invoked. + /// + public event AsyncEventHandler ComponentInteractionCreated + { + add => this._componentInteractionCreated.Register(value); + remove => this._componentInteractionCreated.Unregister(value); + } + + private AsyncEvent _componentInteractionCreated; + + /// + /// Fired when a modal is submitted. If a modal is closed, this event is not fired. + /// + public event AsyncEventHandler ModalSubmitted + { + add => this._modalSubmitted.Register(value); + remove => this._modalSubmitted.Unregister(value); + } + + private AsyncEvent _modalSubmitted; + + /// + /// Fired when a user uses a context menu. + /// + public event AsyncEventHandler ContextMenuInteractionCreated + { + add => this._contextMenuInteractionCreated.Register(value); + remove => this._contextMenuInteractionCreated.Unregister(value); + } + + private AsyncEvent _contextMenuInteractionCreated; + + /// + /// Fired when a user starts typing in a channel. + /// + public event AsyncEventHandler TypingStarted + { + add => this._typingStarted.Register(value); + remove => this._typingStarted.Unregister(value); + } + private AsyncEvent _typingStarted; + + /// + /// Fired when an unknown event gets received. + /// + public event AsyncEventHandler UnknownEvent + { + add => this._unknownEvent.Register(value); + remove => this._unknownEvent.Unregister(value); + } + private AsyncEvent _unknownEvent; + + /// + /// Fired whenever webhooks update. + /// + public event AsyncEventHandler WebhooksUpdated + { + add => this._webhooksUpdated.Register(value); + remove => this._webhooksUpdated.Unregister(value); + } + private AsyncEvent _webhooksUpdated; + + /// + /// Fired whenever an error occurs within an event handler. + /// + public event AsyncEventHandler ClientErrored + { + add => this._clientErrored.Register(value); + remove => this._clientErrored.Unregister(value); + } + private AsyncEvent _clientErrored; + + #endregion + + #region Error Handling + + internal void EventErrorHandler(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, TSender sender, TArgs eventArgs) + where TArgs : AsyncEventArgs + { + this.Logger.LogError(LoggerEvents.EventHandlerException, ex, "Event handler exception for event {Event} thrown from {Method} (defined in {DeclaryingType})", asyncEvent.Name, handler.Method, handler.Method.DeclaringType); + this._clientErrored.InvokeAsync(this, new ClientErrorEventArgs { EventName = asyncEvent.Name, Exception = ex }).GetAwaiter().GetResult(); + } + + private void Goof(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, TSender sender, TArgs eventArgs) + where TArgs : AsyncEventArgs => this.Logger.LogCritical(LoggerEvents.EventHandlerException, ex, "Exception event handler {Method} (defined in {DeclaringType}) threw an exception", handler.Method, handler.Method.DeclaringType); + + #endregion + + #region AutoModeration + + /// + /// Fired when a new auto-moderation rule is created. + /// + public event AsyncEventHandler AutoModerationRuleCreated + { + add => this._autoModerationRuleCreated.Register(value); + remove => this._autoModerationRuleCreated.Unregister(value); + } + private AsyncEvent _autoModerationRuleCreated; + + /// + /// Fired when an auto-moderation rule is updated. + /// + public event AsyncEventHandler AutoModerationRuleUpdated + { + add => this._autoModerationRuleUpdated.Register(value); + remove => this._autoModerationRuleUpdated.Unregister(value); + } + private AsyncEvent _autoModerationRuleUpdated; + + /// + /// Fired when an auto-moderation rule is deleted. + /// + public event AsyncEventHandler AutoModerationRuleDeleted + { + add => this._autoModerationRuleDeleted.Register(value); + remove => this._autoModerationRuleDeleted.Unregister(value); + } + private AsyncEvent _autoModerationRuleDeleted; + + /// + /// Fired when an auto-moderation is executed. + /// + public event AsyncEventHandler AutoModerationRuleExecuted + { + add => this._autoModerationRuleExecuted.Register(value); + remove => this._autoModerationRuleExecuted.Unregister(value); } + private AsyncEvent _autoModerationRuleExecuted; + #endregion } diff --git a/DSharpPlus/Clients/DiscordShardedClient.Events.cs b/DSharpPlus/Clients/DiscordShardedClient.Events.cs index 0d3e64c7e6..5886dca9d8 100644 --- a/DSharpPlus/Clients/DiscordShardedClient.Events.cs +++ b/DSharpPlus/Clients/DiscordShardedClient.Events.cs @@ -27,1015 +27,1014 @@ using DSharpPlus.EventArgs; using Microsoft.Extensions.Logging; -namespace DSharpPlus +namespace DSharpPlus; + +public sealed partial class DiscordShardedClient { - public sealed partial class DiscordShardedClient - { - #region WebSocket - - /// - /// Fired whenever a WebSocket error occurs within the client. - /// - public event AsyncEventHandler SocketErrored - { - add => this._socketErrored.Register(value); - remove => this._socketErrored.Unregister(value); - } - private AsyncEvent _socketErrored; - - /// - /// Fired whenever WebSocket connection is established. - /// - public event AsyncEventHandler SocketOpened - { - add => this._socketOpened.Register(value); - remove => this._socketOpened.Unregister(value); - } - private AsyncEvent _socketOpened; - - /// - /// Fired whenever WebSocket connection is terminated. - /// - public event AsyncEventHandler SocketClosed - { - add => this._socketClosed.Register(value); - remove => this._socketClosed.Unregister(value); - } - private AsyncEvent _socketClosed; - - /// - /// Fired when the client enters ready state. - /// - public event AsyncEventHandler SessionCreated - { - add => this._ready.Register(value); - remove => this._ready.Unregister(value); - } - private AsyncEvent _ready; - - /// - /// Fired whenever a session is resumed. - /// - public event AsyncEventHandler SessionResumed - { - add => this._resumed.Register(value); - remove => this._resumed.Unregister(value); - } - private AsyncEvent _resumed; - - /// - /// Fired on received heartbeat ACK. - /// - public event AsyncEventHandler Heartbeated - { - add => this._heartbeated.Register(value); - remove => this._heartbeated.Unregister(value); - } - private AsyncEvent _heartbeated; - - /// - /// Fired on heartbeat attempt cancellation due to too many failed heartbeats. - /// - public event AsyncEventHandler Zombied - { - add => this._zombied.Register(value); - remove => this._zombied.Unregister(value); - } - private AsyncEvent _zombied; - - #endregion - - #region Channel - - /// - /// Fired when a new channel is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelCreated - { - add => this._channelCreated.Register(value); - remove => this._channelCreated.Unregister(value); - } - private AsyncEvent _channelCreated; - - /// - /// Fired when a channel is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelUpdated - { - add => this._channelUpdated.Register(value); - remove => this._channelUpdated.Unregister(value); - } - private AsyncEvent _channelUpdated; - - /// - /// Fired when a channel is deleted - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelDeleted - { - add => this._channelDeleted.Register(value); - remove => this._channelDeleted.Unregister(value); - } - private AsyncEvent _channelDeleted; - - /// - /// Fired when a dm channel is deleted - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler DmChannelDeleted - { - add => this._dmChannelDeleted.Register(value); - remove => this._dmChannelDeleted.Unregister(value); - } - private AsyncEvent _dmChannelDeleted; - - /// - /// Fired whenever a channel's pinned message list is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ChannelPinsUpdated - { - add => this._channelPinsUpdated.Register(value); - remove => this._channelPinsUpdated.Unregister(value); - } - private AsyncEvent _channelPinsUpdated; - - #endregion - - #region Guild - - /// - /// Fired when the user joins a new guild. - /// For this Event you need the intent specified in - /// - /// [alias="GuildJoined"][alias="JoinedGuild"] - public event AsyncEventHandler GuildCreated - { - add => this._guildCreated.Register(value); - remove => this._guildCreated.Unregister(value); - } - private AsyncEvent _guildCreated; - - /// - /// Fired when a guild is becoming available. - /// - public event AsyncEventHandler GuildAvailable - { - add => this._guildAvailable.Register(value); - remove => this._guildAvailable.Unregister(value); - } - private AsyncEvent _guildAvailable; - - /// - /// Fired when a guild is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildUpdated - { - add => this._guildUpdated.Register(value); - remove => this._guildUpdated.Unregister(value); - } - private AsyncEvent _guildUpdated; - - /// - /// Fired when the user leaves or is removed from a guild. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildDeleted - { - add => this._guildDeleted.Register(value); - remove => this._guildDeleted.Unregister(value); - } - private AsyncEvent _guildDeleted; - - /// - /// Fired when a guild becomes unavailable. - /// - public event AsyncEventHandler GuildUnavailable - { - add => this._guildUnavailable.Register(value); - remove => this._guildUnavailable.Unregister(value); - } - private AsyncEvent _guildUnavailable; - - /// - /// Fired when all guilds finish streaming from Discord. - /// - public event AsyncEventHandler GuildDownloadCompleted - { - add => this._guildDownloadCompleted.Register(value); - remove => this._guildDownloadCompleted.Unregister(value); - } - private AsyncEvent _guildDownloadCompleted; - - /// - /// Fired when a guild's emojis get updated - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildEmojisUpdated - { - add => this._guildEmojisUpdated.Register(value); - remove => this._guildEmojisUpdated.Unregister(value); - } - private AsyncEvent _guildEmojisUpdated; - - /// - /// Fired when a guild's stickers get updated - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildStickersUpdated - { - add => this._guildStickersUpdated.Register(value); - remove => this._guildStickersUpdated.Unregister(value); - } - private AsyncEvent _guildStickersUpdated; - - /// - /// Fired when a guild integration is updated. - /// - public event AsyncEventHandler GuildIntegrationsUpdated - { - add => this._guildIntegrationsUpdated.Register(value); - remove => this._guildIntegrationsUpdated.Unregister(value); - } - private AsyncEvent _guildIntegrationsUpdated; - - #endregion - - #region Guild Ban - - /// - /// Fired when a guild ban gets added - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildBanAdded - { - add => this._guildBanAdded.Register(value); - remove => this._guildBanAdded.Unregister(value); - } - private AsyncEvent _guildBanAdded; - - /// - /// Fired when a guild ban gets removed - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildBanRemoved - { - add => this._guildBanRemoved.Register(value); - remove => this._guildBanRemoved.Unregister(value); - } - private AsyncEvent _guildBanRemoved; - - #endregion - - #region Guild Member - - /// - /// Fired when a new user joins a guild. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildMemberAdded - { - add => this._guildMemberAdded.Register(value); - remove => this._guildMemberAdded.Unregister(value); - } - private AsyncEvent _guildMemberAdded; - - /// - /// Fired when a user is removed from a guild (leave/kick/ban). - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildMemberRemoved - { - add => this._guildMemberRemoved.Register(value); - remove => this._guildMemberRemoved.Unregister(value); - } - private AsyncEvent _guildMemberRemoved; - - /// - /// Fired when a guild member is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildMemberUpdated - { - add => this._guildMemberUpdated.Register(value); - remove => this._guildMemberUpdated.Unregister(value); - } - private AsyncEvent _guildMemberUpdated; - - /// - /// Fired in response to Gateway Request Guild Members. - /// - public event AsyncEventHandler GuildMembersChunked - { - add => this._guildMembersChunk.Register(value); - remove => this._guildMembersChunk.Unregister(value); - } - private AsyncEvent _guildMembersChunk; - - #endregion - - #region Guild Role - - /// - /// Fired when a guild role is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildRoleCreated - { - add => this._guildRoleCreated.Register(value); - remove => this._guildRoleCreated.Unregister(value); - } - private AsyncEvent _guildRoleCreated; - - /// - /// Fired when a guild role is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildRoleUpdated - { - add => this._guildRoleUpdated.Register(value); - remove => this._guildRoleUpdated.Unregister(value); - } - private AsyncEvent _guildRoleUpdated; - - /// - /// Fired when a guild role is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler GuildRoleDeleted - { - add => this._guildRoleDeleted.Register(value); - remove => this._guildRoleDeleted.Unregister(value); - } - private AsyncEvent _guildRoleDeleted; - - #endregion - - #region Invite - - /// - /// Fired when an invite is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler InviteCreated - { - add => this._inviteCreated.Register(value); - remove => this._inviteCreated.Unregister(value); - } - private AsyncEvent _inviteCreated; - - /// - /// Fired when an invite is deleted. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler InviteDeleted - { - add => this._inviteDeleted.Register(value); - remove => this._inviteDeleted.Unregister(value); - } - private AsyncEvent _inviteDeleted; - - #endregion - - #region Message - - /// - /// Fired when a message is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageCreated - { - add => this._messageCreated.Register(value); - remove => this._messageCreated.Unregister(value); - } - private AsyncEvent _messageCreated; - - /// - /// Fired when a message is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageUpdated - { - add => this._messageUpdated.Register(value); - remove => this._messageUpdated.Unregister(value); - } - private AsyncEvent _messageUpdated; - - /// - /// Fired when a message is deleted. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageDeleted - { - add => this._messageDeleted.Register(value); - remove => this._messageDeleted.Unregister(value); - } - private AsyncEvent _messageDeleted; - - /// - /// Fired when multiple messages are deleted at once. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessagesBulkDeleted - { - add => this._messageBulkDeleted.Register(value); - remove => this._messageBulkDeleted.Unregister(value); - } - private AsyncEvent _messageBulkDeleted; - - #endregion - - #region Message Reaction - - /// - /// Fired when a reaction gets added to a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionAdded - { - add => this._messageReactionAdded.Register(value); - remove => this._messageReactionAdded.Unregister(value); - } - private AsyncEvent _messageReactionAdded; - - /// - /// Fired when a reaction gets removed from a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionRemoved - { - add => this._messageReactionRemoved.Register(value); - remove => this._messageReactionRemoved.Unregister(value); - } - private AsyncEvent _messageReactionRemoved; - - /// - /// Fired when all reactions get removed from a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionsCleared - { - add => this._messageReactionsCleared.Register(value); - remove => this._messageReactionsCleared.Unregister(value); - } - private AsyncEvent _messageReactionsCleared; - - /// - /// Fired when all reactions of a specific reaction are removed from a message. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler MessageReactionRemovedEmoji - { - add => this._messageReactionRemovedEmoji.Register(value); - remove => this._messageReactionRemovedEmoji.Unregister(value); - } - private AsyncEvent _messageReactionRemovedEmoji; - - #endregion - - #region User/Presence Update - - /// - /// Fired when a presence has been updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler PresenceUpdated - { - add => this._presenceUpdated.Register(value); - remove => this._presenceUpdated.Unregister(value); - } - private AsyncEvent _presenceUpdated; - - - /// - /// Fired when the current user updates their settings. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler UserSettingsUpdated - { - add => this._userSettingsUpdated.Register(value); - remove => this._userSettingsUpdated.Unregister(value); - } - private AsyncEvent _userSettingsUpdated; - - /// - /// Fired when properties about the current user change. - /// For this Event you need the intent specified in - /// - /// - /// NB: This event only applies for changes to the current user, the client that is connected to Discord. - /// - public event AsyncEventHandler UserUpdated - { - add => this._userUpdated.Register(value); - remove => this._userUpdated.Unregister(value); - } - private AsyncEvent _userUpdated; - - #endregion - - #region Voice - - /// - /// Fired when someone joins/leaves/moves voice channels. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler VoiceStateUpdated - { - add => this._voiceStateUpdated.Register(value); - remove => this._voiceStateUpdated.Unregister(value); - } - private AsyncEvent _voiceStateUpdated; - - /// - /// Fired when a guild's voice server is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler VoiceServerUpdated - { - add => this._voiceServerUpdated.Register(value); - remove => this._voiceServerUpdated.Unregister(value); - } - private AsyncEvent _voiceServerUpdated; - - #endregion - - #region Thread - - /// - /// Fired when a thread is created. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadCreated - { - add => this._threadCreated.Register(value); - remove => this._threadCreated.Unregister(value); - } - private AsyncEvent _threadCreated; - - /// - /// Fired when a thread is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadUpdated - { - add => this._threadUpdated.Register(value); - remove => this._threadUpdated.Unregister(value); - } - private AsyncEvent _threadUpdated; - - /// - /// Fired when a thread is deleted. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadDeleted - { - add => this._threadDeleted.Register(value); - remove => this._threadDeleted.Unregister(value); - } - private AsyncEvent _threadDeleted; - - /// - /// Fired when the current member gains access to a channel(s). - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadListSynced - { - add => this._threadListSynced.Register(value); - remove => this._threadListSynced.Unregister(value); - } - private AsyncEvent _threadListSynced; - - /// - /// Fired when a thread member is updated. - /// For this Event you need the intent specified in - /// - public event AsyncEventHandler ThreadMemberUpdated - { - add => this._threadMemberUpdated.Register(value); - remove => this._threadMemberUpdated.Unregister(value); - } - private AsyncEvent _threadMemberUpdated; - - /// - /// Fired when the thread members are updated. - /// For this Event you need the or intent specified in - /// - public event AsyncEventHandler ThreadMembersUpdated - { - add => this._threadMembersUpdated.Register(value); - remove => this._threadMembersUpdated.Unregister(value); - } - private AsyncEvent _threadMembersUpdated; - - #endregion + #region WebSocket + + /// + /// Fired whenever a WebSocket error occurs within the client. + /// + public event AsyncEventHandler SocketErrored + { + add => this._socketErrored.Register(value); + remove => this._socketErrored.Unregister(value); + } + private AsyncEvent _socketErrored; + + /// + /// Fired whenever WebSocket connection is established. + /// + public event AsyncEventHandler SocketOpened + { + add => this._socketOpened.Register(value); + remove => this._socketOpened.Unregister(value); + } + private AsyncEvent _socketOpened; + + /// + /// Fired whenever WebSocket connection is terminated. + /// + public event AsyncEventHandler SocketClosed + { + add => this._socketClosed.Register(value); + remove => this._socketClosed.Unregister(value); + } + private AsyncEvent _socketClosed; + + /// + /// Fired when the client enters ready state. + /// + public event AsyncEventHandler SessionCreated + { + add => this._ready.Register(value); + remove => this._ready.Unregister(value); + } + private AsyncEvent _ready; + + /// + /// Fired whenever a session is resumed. + /// + public event AsyncEventHandler SessionResumed + { + add => this._resumed.Register(value); + remove => this._resumed.Unregister(value); + } + private AsyncEvent _resumed; + + /// + /// Fired on received heartbeat ACK. + /// + public event AsyncEventHandler Heartbeated + { + add => this._heartbeated.Register(value); + remove => this._heartbeated.Unregister(value); + } + private AsyncEvent _heartbeated; + + /// + /// Fired on heartbeat attempt cancellation due to too many failed heartbeats. + /// + public event AsyncEventHandler Zombied + { + add => this._zombied.Register(value); + remove => this._zombied.Unregister(value); + } + private AsyncEvent _zombied; + + #endregion + + #region Channel + + /// + /// Fired when a new channel is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelCreated + { + add => this._channelCreated.Register(value); + remove => this._channelCreated.Unregister(value); + } + private AsyncEvent _channelCreated; + + /// + /// Fired when a channel is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelUpdated + { + add => this._channelUpdated.Register(value); + remove => this._channelUpdated.Unregister(value); + } + private AsyncEvent _channelUpdated; + + /// + /// Fired when a channel is deleted + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelDeleted + { + add => this._channelDeleted.Register(value); + remove => this._channelDeleted.Unregister(value); + } + private AsyncEvent _channelDeleted; + + /// + /// Fired when a dm channel is deleted + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler DmChannelDeleted + { + add => this._dmChannelDeleted.Register(value); + remove => this._dmChannelDeleted.Unregister(value); + } + private AsyncEvent _dmChannelDeleted; + + /// + /// Fired whenever a channel's pinned message list is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ChannelPinsUpdated + { + add => this._channelPinsUpdated.Register(value); + remove => this._channelPinsUpdated.Unregister(value); + } + private AsyncEvent _channelPinsUpdated; + + #endregion + + #region Guild + + /// + /// Fired when the user joins a new guild. + /// For this Event you need the intent specified in + /// + /// [alias="GuildJoined"][alias="JoinedGuild"] + public event AsyncEventHandler GuildCreated + { + add => this._guildCreated.Register(value); + remove => this._guildCreated.Unregister(value); + } + private AsyncEvent _guildCreated; + + /// + /// Fired when a guild is becoming available. + /// + public event AsyncEventHandler GuildAvailable + { + add => this._guildAvailable.Register(value); + remove => this._guildAvailable.Unregister(value); + } + private AsyncEvent _guildAvailable; + + /// + /// Fired when a guild is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildUpdated + { + add => this._guildUpdated.Register(value); + remove => this._guildUpdated.Unregister(value); + } + private AsyncEvent _guildUpdated; + + /// + /// Fired when the user leaves or is removed from a guild. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildDeleted + { + add => this._guildDeleted.Register(value); + remove => this._guildDeleted.Unregister(value); + } + private AsyncEvent _guildDeleted; + + /// + /// Fired when a guild becomes unavailable. + /// + public event AsyncEventHandler GuildUnavailable + { + add => this._guildUnavailable.Register(value); + remove => this._guildUnavailable.Unregister(value); + } + private AsyncEvent _guildUnavailable; + + /// + /// Fired when all guilds finish streaming from Discord. + /// + public event AsyncEventHandler GuildDownloadCompleted + { + add => this._guildDownloadCompleted.Register(value); + remove => this._guildDownloadCompleted.Unregister(value); + } + private AsyncEvent _guildDownloadCompleted; + + /// + /// Fired when a guild's emojis get updated + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildEmojisUpdated + { + add => this._guildEmojisUpdated.Register(value); + remove => this._guildEmojisUpdated.Unregister(value); + } + private AsyncEvent _guildEmojisUpdated; + + /// + /// Fired when a guild's stickers get updated + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildStickersUpdated + { + add => this._guildStickersUpdated.Register(value); + remove => this._guildStickersUpdated.Unregister(value); + } + private AsyncEvent _guildStickersUpdated; + + /// + /// Fired when a guild integration is updated. + /// + public event AsyncEventHandler GuildIntegrationsUpdated + { + add => this._guildIntegrationsUpdated.Register(value); + remove => this._guildIntegrationsUpdated.Unregister(value); + } + private AsyncEvent _guildIntegrationsUpdated; + + #endregion + + #region Guild Ban + + /// + /// Fired when a guild ban gets added + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildBanAdded + { + add => this._guildBanAdded.Register(value); + remove => this._guildBanAdded.Unregister(value); + } + private AsyncEvent _guildBanAdded; + + /// + /// Fired when a guild ban gets removed + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildBanRemoved + { + add => this._guildBanRemoved.Register(value); + remove => this._guildBanRemoved.Unregister(value); + } + private AsyncEvent _guildBanRemoved; + + #endregion + + #region Guild Member + + /// + /// Fired when a new user joins a guild. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildMemberAdded + { + add => this._guildMemberAdded.Register(value); + remove => this._guildMemberAdded.Unregister(value); + } + private AsyncEvent _guildMemberAdded; + + /// + /// Fired when a user is removed from a guild (leave/kick/ban). + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildMemberRemoved + { + add => this._guildMemberRemoved.Register(value); + remove => this._guildMemberRemoved.Unregister(value); + } + private AsyncEvent _guildMemberRemoved; + + /// + /// Fired when a guild member is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildMemberUpdated + { + add => this._guildMemberUpdated.Register(value); + remove => this._guildMemberUpdated.Unregister(value); + } + private AsyncEvent _guildMemberUpdated; + + /// + /// Fired in response to Gateway Request Guild Members. + /// + public event AsyncEventHandler GuildMembersChunked + { + add => this._guildMembersChunk.Register(value); + remove => this._guildMembersChunk.Unregister(value); + } + private AsyncEvent _guildMembersChunk; + + #endregion + + #region Guild Role + + /// + /// Fired when a guild role is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildRoleCreated + { + add => this._guildRoleCreated.Register(value); + remove => this._guildRoleCreated.Unregister(value); + } + private AsyncEvent _guildRoleCreated; + + /// + /// Fired when a guild role is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildRoleUpdated + { + add => this._guildRoleUpdated.Register(value); + remove => this._guildRoleUpdated.Unregister(value); + } + private AsyncEvent _guildRoleUpdated; + + /// + /// Fired when a guild role is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler GuildRoleDeleted + { + add => this._guildRoleDeleted.Register(value); + remove => this._guildRoleDeleted.Unregister(value); + } + private AsyncEvent _guildRoleDeleted; + + #endregion + + #region Invite + + /// + /// Fired when an invite is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler InviteCreated + { + add => this._inviteCreated.Register(value); + remove => this._inviteCreated.Unregister(value); + } + private AsyncEvent _inviteCreated; + + /// + /// Fired when an invite is deleted. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler InviteDeleted + { + add => this._inviteDeleted.Register(value); + remove => this._inviteDeleted.Unregister(value); + } + private AsyncEvent _inviteDeleted; + + #endregion + + #region Message + + /// + /// Fired when a message is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageCreated + { + add => this._messageCreated.Register(value); + remove => this._messageCreated.Unregister(value); + } + private AsyncEvent _messageCreated; + + /// + /// Fired when a message is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageUpdated + { + add => this._messageUpdated.Register(value); + remove => this._messageUpdated.Unregister(value); + } + private AsyncEvent _messageUpdated; + + /// + /// Fired when a message is deleted. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageDeleted + { + add => this._messageDeleted.Register(value); + remove => this._messageDeleted.Unregister(value); + } + private AsyncEvent _messageDeleted; + + /// + /// Fired when multiple messages are deleted at once. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessagesBulkDeleted + { + add => this._messageBulkDeleted.Register(value); + remove => this._messageBulkDeleted.Unregister(value); + } + private AsyncEvent _messageBulkDeleted; + + #endregion + + #region Message Reaction + + /// + /// Fired when a reaction gets added to a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionAdded + { + add => this._messageReactionAdded.Register(value); + remove => this._messageReactionAdded.Unregister(value); + } + private AsyncEvent _messageReactionAdded; + + /// + /// Fired when a reaction gets removed from a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionRemoved + { + add => this._messageReactionRemoved.Register(value); + remove => this._messageReactionRemoved.Unregister(value); + } + private AsyncEvent _messageReactionRemoved; + + /// + /// Fired when all reactions get removed from a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionsCleared + { + add => this._messageReactionsCleared.Register(value); + remove => this._messageReactionsCleared.Unregister(value); + } + private AsyncEvent _messageReactionsCleared; + + /// + /// Fired when all reactions of a specific reaction are removed from a message. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler MessageReactionRemovedEmoji + { + add => this._messageReactionRemovedEmoji.Register(value); + remove => this._messageReactionRemovedEmoji.Unregister(value); + } + private AsyncEvent _messageReactionRemovedEmoji; + + #endregion + + #region User/Presence Update + + /// + /// Fired when a presence has been updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler PresenceUpdated + { + add => this._presenceUpdated.Register(value); + remove => this._presenceUpdated.Unregister(value); + } + private AsyncEvent _presenceUpdated; + + + /// + /// Fired when the current user updates their settings. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler UserSettingsUpdated + { + add => this._userSettingsUpdated.Register(value); + remove => this._userSettingsUpdated.Unregister(value); + } + private AsyncEvent _userSettingsUpdated; + + /// + /// Fired when properties about the current user change. + /// For this Event you need the intent specified in + /// + /// + /// NB: This event only applies for changes to the current user, the client that is connected to Discord. + /// + public event AsyncEventHandler UserUpdated + { + add => this._userUpdated.Register(value); + remove => this._userUpdated.Unregister(value); + } + private AsyncEvent _userUpdated; + + #endregion + + #region Voice + + /// + /// Fired when someone joins/leaves/moves voice channels. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler VoiceStateUpdated + { + add => this._voiceStateUpdated.Register(value); + remove => this._voiceStateUpdated.Unregister(value); + } + private AsyncEvent _voiceStateUpdated; + + /// + /// Fired when a guild's voice server is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler VoiceServerUpdated + { + add => this._voiceServerUpdated.Register(value); + remove => this._voiceServerUpdated.Unregister(value); + } + private AsyncEvent _voiceServerUpdated; + + #endregion + + #region Thread + + /// + /// Fired when a thread is created. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadCreated + { + add => this._threadCreated.Register(value); + remove => this._threadCreated.Unregister(value); + } + private AsyncEvent _threadCreated; + + /// + /// Fired when a thread is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadUpdated + { + add => this._threadUpdated.Register(value); + remove => this._threadUpdated.Unregister(value); + } + private AsyncEvent _threadUpdated; + + /// + /// Fired when a thread is deleted. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadDeleted + { + add => this._threadDeleted.Register(value); + remove => this._threadDeleted.Unregister(value); + } + private AsyncEvent _threadDeleted; + + /// + /// Fired when the current member gains access to a channel(s). + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadListSynced + { + add => this._threadListSynced.Register(value); + remove => this._threadListSynced.Unregister(value); + } + private AsyncEvent _threadListSynced; + + /// + /// Fired when a thread member is updated. + /// For this Event you need the intent specified in + /// + public event AsyncEventHandler ThreadMemberUpdated + { + add => this._threadMemberUpdated.Register(value); + remove => this._threadMemberUpdated.Unregister(value); + } + private AsyncEvent _threadMemberUpdated; + + /// + /// Fired when the thread members are updated. + /// For this Event you need the or intent specified in + /// + public event AsyncEventHandler ThreadMembersUpdated + { + add => this._threadMembersUpdated.Register(value); + remove => this._threadMembersUpdated.Unregister(value); + } + private AsyncEvent _threadMembersUpdated; + + #endregion - #region Integration - - /// - /// Fired when an integration is created. - /// - public event AsyncEventHandler IntegrationCreated - { - add => this._integrationCreated.Register(value); - remove => this._integrationCreated.Unregister(value); - } - private AsyncEvent _integrationCreated; - - /// - /// Fired when an integration is updated. - /// - public event AsyncEventHandler IntegrationUpdated - { - add => this._integrationUpdated.Register(value); - remove => this._integrationUpdated.Unregister(value); - } - private AsyncEvent _integrationUpdated; - - /// - /// Fired when an integration is deleted. - /// - public event AsyncEventHandler IntegrationDeleted - { - add => this._integrationDeleted.Register(value); - remove => this._integrationDeleted.Unregister(value); - } - private AsyncEvent _integrationDeleted; + #region Integration + + /// + /// Fired when an integration is created. + /// + public event AsyncEventHandler IntegrationCreated + { + add => this._integrationCreated.Register(value); + remove => this._integrationCreated.Unregister(value); + } + private AsyncEvent _integrationCreated; + + /// + /// Fired when an integration is updated. + /// + public event AsyncEventHandler IntegrationUpdated + { + add => this._integrationUpdated.Register(value); + remove => this._integrationUpdated.Unregister(value); + } + private AsyncEvent _integrationUpdated; + + /// + /// Fired when an integration is deleted. + /// + public event AsyncEventHandler IntegrationDeleted + { + add => this._integrationDeleted.Register(value); + remove => this._integrationDeleted.Unregister(value); + } + private AsyncEvent _integrationDeleted; - public event AsyncEventHandler ApplicationCommandPermissionsUpdated - { - add => this._applicationCommandPermissionsUpdated.Register(value); - remove => this._applicationCommandPermissionsUpdated.Unregister(value); - } - - private AsyncEvent _applicationCommandPermissionsUpdated; - - #endregion - - #region Stage Instance - - /// - /// Fired when a stage instance is created. - /// - public event AsyncEventHandler StageInstanceCreated - { - add => this._stageInstanceCreated.Register(value); - remove => this._stageInstanceCreated.Unregister(value); - } - private AsyncEvent _stageInstanceCreated; - - /// - /// Fired when a stage instance is updated. - /// - public event AsyncEventHandler StageInstanceUpdated - { - add => this._stageInstanceUpdated.Register(value); - remove => this._stageInstanceUpdated.Unregister(value); - } - private AsyncEvent _stageInstanceUpdated; - - /// - /// Fired when a stage instance is deleted. - /// - public event AsyncEventHandler StageInstanceDeleted - { - add => this._stageInstanceDeleted.Register(value); - remove => this._stageInstanceDeleted.Unregister(value); - } - private AsyncEvent _stageInstanceDeleted; - - #endregion - - #region Misc - - /// - /// Fired when an interaction is invoked. - /// - public event AsyncEventHandler InteractionCreated - { - add => this._interactionCreated.Register(value); - remove => this._interactionCreated.Unregister(value); - } - private AsyncEvent _interactionCreated; - - /// - /// Fired when a component is invoked. - /// - public event AsyncEventHandler ComponentInteractionCreated - { - add => this._componentInteractionCreated.Register(value); - remove => this._componentInteractionCreated.Unregister(value); - } - private AsyncEvent _componentInteractionCreated; - - /// - /// Fired when a modal is submitted. If a modal is closed, this event will not be fired. - /// - public event AsyncEventHandler ModalSubmitted - { - add => this._modalSubmitted.Register(value); - remove => this._modalSubmitted.Unregister(value); - } - private AsyncEvent _modalSubmitted; - - /// - /// Fired when a user uses a context menu. - /// - public event AsyncEventHandler ContextMenuInteractionCreated - { - add => this._contextMenuInteractionCreated.Register(value); - remove => this._contextMenuInteractionCreated.Unregister(value); - } - - private AsyncEvent _contextMenuInteractionCreated; - - /// - /// Fired when a user starts typing in a channel. - /// - public event AsyncEventHandler TypingStarted - { - add => this._typingStarted.Register(value); - remove => this._typingStarted.Unregister(value); - } - private AsyncEvent _typingStarted; - - /// - /// Fired when an unknown event gets received. - /// - public event AsyncEventHandler UnknownEvent - { - add => this._unknownEvent.Register(value); - remove => this._unknownEvent.Unregister(value); - } - private AsyncEvent _unknownEvent; - - /// - /// Fired whenever webhooks update. - /// - public event AsyncEventHandler WebhooksUpdated - { - add => this._webhooksUpdated.Register(value); - remove => this._webhooksUpdated.Unregister(value); - } - private AsyncEvent _webhooksUpdated; - - /// - /// Fired whenever an error occurs within an event handler. - /// - public event AsyncEventHandler ClientErrored - { - add => this._clientErrored.Register(value); - remove => this._clientErrored.Unregister(value); - } - private AsyncEvent _clientErrored; - - #endregion - - #region Error Handling - - internal void EventErrorHandler(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, DiscordClient sender, TArgs eventArgs) - where TArgs : AsyncEventArgs - { - this.Logger.LogError(LoggerEvents.EventHandlerException, ex, "Event handler exception for event {Event} thrown from {Method} (defined in {DeclaringType})", asyncEvent.Name, handler.Method, handler.Method.DeclaringType); - this._clientErrored.InvokeAsync(sender, new ClientErrorEventArgs { EventName = asyncEvent.Name, Exception = ex }).GetAwaiter().GetResult(); - } - - private void Goof(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, DiscordClient sender, TArgs eventArgs) - where TArgs : AsyncEventArgs => this.Logger.LogCritical(LoggerEvents.EventHandlerException, ex, "Exception event handler {Method} (defined in {DeclaringType}) threw an exception", handler.Method, handler.Method.DeclaringType); + public event AsyncEventHandler ApplicationCommandPermissionsUpdated + { + add => this._applicationCommandPermissionsUpdated.Register(value); + remove => this._applicationCommandPermissionsUpdated.Unregister(value); + } + + private AsyncEvent _applicationCommandPermissionsUpdated; + + #endregion + + #region Stage Instance + + /// + /// Fired when a stage instance is created. + /// + public event AsyncEventHandler StageInstanceCreated + { + add => this._stageInstanceCreated.Register(value); + remove => this._stageInstanceCreated.Unregister(value); + } + private AsyncEvent _stageInstanceCreated; + + /// + /// Fired when a stage instance is updated. + /// + public event AsyncEventHandler StageInstanceUpdated + { + add => this._stageInstanceUpdated.Register(value); + remove => this._stageInstanceUpdated.Unregister(value); + } + private AsyncEvent _stageInstanceUpdated; + + /// + /// Fired when a stage instance is deleted. + /// + public event AsyncEventHandler StageInstanceDeleted + { + add => this._stageInstanceDeleted.Register(value); + remove => this._stageInstanceDeleted.Unregister(value); + } + private AsyncEvent _stageInstanceDeleted; + + #endregion + + #region Misc + + /// + /// Fired when an interaction is invoked. + /// + public event AsyncEventHandler InteractionCreated + { + add => this._interactionCreated.Register(value); + remove => this._interactionCreated.Unregister(value); + } + private AsyncEvent _interactionCreated; + + /// + /// Fired when a component is invoked. + /// + public event AsyncEventHandler ComponentInteractionCreated + { + add => this._componentInteractionCreated.Register(value); + remove => this._componentInteractionCreated.Unregister(value); + } + private AsyncEvent _componentInteractionCreated; + + /// + /// Fired when a modal is submitted. If a modal is closed, this event will not be fired. + /// + public event AsyncEventHandler ModalSubmitted + { + add => this._modalSubmitted.Register(value); + remove => this._modalSubmitted.Unregister(value); + } + private AsyncEvent _modalSubmitted; + + /// + /// Fired when a user uses a context menu. + /// + public event AsyncEventHandler ContextMenuInteractionCreated + { + add => this._contextMenuInteractionCreated.Register(value); + remove => this._contextMenuInteractionCreated.Unregister(value); + } + + private AsyncEvent _contextMenuInteractionCreated; + + /// + /// Fired when a user starts typing in a channel. + /// + public event AsyncEventHandler TypingStarted + { + add => this._typingStarted.Register(value); + remove => this._typingStarted.Unregister(value); + } + private AsyncEvent _typingStarted; + + /// + /// Fired when an unknown event gets received. + /// + public event AsyncEventHandler UnknownEvent + { + add => this._unknownEvent.Register(value); + remove => this._unknownEvent.Unregister(value); + } + private AsyncEvent _unknownEvent; + + /// + /// Fired whenever webhooks update. + /// + public event AsyncEventHandler WebhooksUpdated + { + add => this._webhooksUpdated.Register(value); + remove => this._webhooksUpdated.Unregister(value); + } + private AsyncEvent _webhooksUpdated; + + /// + /// Fired whenever an error occurs within an event handler. + /// + public event AsyncEventHandler ClientErrored + { + add => this._clientErrored.Register(value); + remove => this._clientErrored.Unregister(value); + } + private AsyncEvent _clientErrored; + + #endregion - #endregion - - #region Event Dispatchers - - private Task Client_ClientError(DiscordClient client, ClientErrorEventArgs e) - => this._clientErrored.InvokeAsync(client, e); - - private Task Client_SocketError(DiscordClient client, SocketErrorEventArgs e) - => this._socketErrored.InvokeAsync(client, e); + #region Error Handling - private Task Client_SocketOpened(DiscordClient client, SocketEventArgs e) - => this._socketOpened.InvokeAsync(client, e); + internal void EventErrorHandler(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, DiscordClient sender, TArgs eventArgs) + where TArgs : AsyncEventArgs + { + this.Logger.LogError(LoggerEvents.EventHandlerException, ex, "Event handler exception for event {Event} thrown from {Method} (defined in {DeclaringType})", asyncEvent.Name, handler.Method, handler.Method.DeclaringType); + this._clientErrored.InvokeAsync(sender, new ClientErrorEventArgs { EventName = asyncEvent.Name, Exception = ex }).GetAwaiter().GetResult(); + } + + private void Goof(AsyncEvent asyncEvent, Exception ex, AsyncEventHandler handler, DiscordClient sender, TArgs eventArgs) + where TArgs : AsyncEventArgs => this.Logger.LogCritical(LoggerEvents.EventHandlerException, ex, "Exception event handler {Method} (defined in {DeclaringType}) threw an exception", handler.Method, handler.Method.DeclaringType); + + #endregion - private Task Client_SocketClosed(DiscordClient client, SocketCloseEventArgs e) - => this._socketClosed.InvokeAsync(client, e); + #region Event Dispatchers - private Task Client_Ready(DiscordClient client, SessionReadyEventArgs e) - => this._ready.InvokeAsync(client, e); + private Task Client_ClientError(DiscordClient client, ClientErrorEventArgs e) + => this._clientErrored.InvokeAsync(client, e); - private Task Client_Resumed(DiscordClient client, SessionReadyEventArgs e) - => this._resumed.InvokeAsync(client, e); + private Task Client_SocketError(DiscordClient client, SocketErrorEventArgs e) + => this._socketErrored.InvokeAsync(client, e); - private Task Client_ChannelCreated(DiscordClient client, ChannelCreateEventArgs e) - => this._channelCreated.InvokeAsync(client, e); + private Task Client_SocketOpened(DiscordClient client, SocketEventArgs e) + => this._socketOpened.InvokeAsync(client, e); - private Task Client_ChannelUpdated(DiscordClient client, ChannelUpdateEventArgs e) - => this._channelUpdated.InvokeAsync(client, e); + private Task Client_SocketClosed(DiscordClient client, SocketCloseEventArgs e) + => this._socketClosed.InvokeAsync(client, e); - private Task Client_ChannelDeleted(DiscordClient client, ChannelDeleteEventArgs e) - => this._channelDeleted.InvokeAsync(client, e); + private Task Client_Ready(DiscordClient client, SessionReadyEventArgs e) + => this._ready.InvokeAsync(client, e); - private Task Client_DMChannelDeleted(DiscordClient client, DmChannelDeleteEventArgs e) - => this._dmChannelDeleted.InvokeAsync(client, e); + private Task Client_Resumed(DiscordClient client, SessionReadyEventArgs e) + => this._resumed.InvokeAsync(client, e); - private Task Client_ChannelPinsUpdated(DiscordClient client, ChannelPinsUpdateEventArgs e) - => this._channelPinsUpdated.InvokeAsync(client, e); + private Task Client_ChannelCreated(DiscordClient client, ChannelCreateEventArgs e) + => this._channelCreated.InvokeAsync(client, e); - private Task Client_GuildCreated(DiscordClient client, GuildCreateEventArgs e) - => this._guildCreated.InvokeAsync(client, e); + private Task Client_ChannelUpdated(DiscordClient client, ChannelUpdateEventArgs e) + => this._channelUpdated.InvokeAsync(client, e); - private Task Client_GuildAvailable(DiscordClient client, GuildCreateEventArgs e) - => this._guildAvailable.InvokeAsync(client, e); + private Task Client_ChannelDeleted(DiscordClient client, ChannelDeleteEventArgs e) + => this._channelDeleted.InvokeAsync(client, e); - private Task Client_GuildUpdated(DiscordClient client, GuildUpdateEventArgs e) - => this._guildUpdated.InvokeAsync(client, e); + private Task Client_DMChannelDeleted(DiscordClient client, DmChannelDeleteEventArgs e) + => this._dmChannelDeleted.InvokeAsync(client, e); - private Task Client_GuildDeleted(DiscordClient client, GuildDeleteEventArgs e) - => this._guildDeleted.InvokeAsync(client, e); + private Task Client_ChannelPinsUpdated(DiscordClient client, ChannelPinsUpdateEventArgs e) + => this._channelPinsUpdated.InvokeAsync(client, e); - private Task Client_GuildUnavailable(DiscordClient client, GuildDeleteEventArgs e) - => this._guildUnavailable.InvokeAsync(client, e); + private Task Client_GuildCreated(DiscordClient client, GuildCreateEventArgs e) + => this._guildCreated.InvokeAsync(client, e); - private Task Client_GuildDownloadCompleted(DiscordClient client, GuildDownloadCompletedEventArgs e) - => this._guildDownloadCompleted.InvokeAsync(client, e); + private Task Client_GuildAvailable(DiscordClient client, GuildCreateEventArgs e) + => this._guildAvailable.InvokeAsync(client, e); - private Task Client_MessageCreated(DiscordClient client, MessageCreateEventArgs e) - => this._messageCreated.InvokeAsync(client, e); + private Task Client_GuildUpdated(DiscordClient client, GuildUpdateEventArgs e) + => this._guildUpdated.InvokeAsync(client, e); - private Task Client_InviteCreated(DiscordClient client, InviteCreateEventArgs e) - => this._inviteCreated.InvokeAsync(client, e); + private Task Client_GuildDeleted(DiscordClient client, GuildDeleteEventArgs e) + => this._guildDeleted.InvokeAsync(client, e); - private Task Client_InviteDeleted(DiscordClient client, InviteDeleteEventArgs e) - => this._inviteDeleted.InvokeAsync(client, e); + private Task Client_GuildUnavailable(DiscordClient client, GuildDeleteEventArgs e) + => this._guildUnavailable.InvokeAsync(client, e); - private Task Client_PresenceUpdate(DiscordClient client, PresenceUpdateEventArgs e) - => this._presenceUpdated.InvokeAsync(client, e); + private Task Client_GuildDownloadCompleted(DiscordClient client, GuildDownloadCompletedEventArgs e) + => this._guildDownloadCompleted.InvokeAsync(client, e); - private Task Client_GuildBanAdd(DiscordClient client, GuildBanAddEventArgs e) - => this._guildBanAdded.InvokeAsync(client, e); + private Task Client_MessageCreated(DiscordClient client, MessageCreateEventArgs e) + => this._messageCreated.InvokeAsync(client, e); - private Task Client_GuildBanRemove(DiscordClient client, GuildBanRemoveEventArgs e) - => this._guildBanRemoved.InvokeAsync(client, e); + private Task Client_InviteCreated(DiscordClient client, InviteCreateEventArgs e) + => this._inviteCreated.InvokeAsync(client, e); - private Task Client_GuildEmojisUpdate(DiscordClient client, GuildEmojisUpdateEventArgs e) - => this._guildEmojisUpdated.InvokeAsync(client, e); + private Task Client_InviteDeleted(DiscordClient client, InviteDeleteEventArgs e) + => this._inviteDeleted.InvokeAsync(client, e); - private Task Client_GuildStickersUpdate(DiscordClient client, GuildStickersUpdateEventArgs e) - => this._guildStickersUpdated.InvokeAsync(client, e); + private Task Client_PresenceUpdate(DiscordClient client, PresenceUpdateEventArgs e) + => this._presenceUpdated.InvokeAsync(client, e); - private Task Client_GuildIntegrationsUpdate(DiscordClient client, GuildIntegrationsUpdateEventArgs e) - => this._guildIntegrationsUpdated.InvokeAsync(client, e); + private Task Client_GuildBanAdd(DiscordClient client, GuildBanAddEventArgs e) + => this._guildBanAdded.InvokeAsync(client, e); - private Task Client_GuildMemberAdd(DiscordClient client, GuildMemberAddEventArgs e) - => this._guildMemberAdded.InvokeAsync(client, e); + private Task Client_GuildBanRemove(DiscordClient client, GuildBanRemoveEventArgs e) + => this._guildBanRemoved.InvokeAsync(client, e); - private Task Client_GuildMemberRemove(DiscordClient client, GuildMemberRemoveEventArgs e) - => this._guildMemberRemoved.InvokeAsync(client, e); + private Task Client_GuildEmojisUpdate(DiscordClient client, GuildEmojisUpdateEventArgs e) + => this._guildEmojisUpdated.InvokeAsync(client, e); - private Task Client_GuildMemberUpdate(DiscordClient client, GuildMemberUpdateEventArgs e) - => this._guildMemberUpdated.InvokeAsync(client, e); + private Task Client_GuildStickersUpdate(DiscordClient client, GuildStickersUpdateEventArgs e) + => this._guildStickersUpdated.InvokeAsync(client, e); - private Task Client_GuildRoleCreate(DiscordClient client, GuildRoleCreateEventArgs e) - => this._guildRoleCreated.InvokeAsync(client, e); + private Task Client_GuildIntegrationsUpdate(DiscordClient client, GuildIntegrationsUpdateEventArgs e) + => this._guildIntegrationsUpdated.InvokeAsync(client, e); - private Task Client_GuildRoleUpdate(DiscordClient client, GuildRoleUpdateEventArgs e) - => this._guildRoleUpdated.InvokeAsync(client, e); + private Task Client_GuildMemberAdd(DiscordClient client, GuildMemberAddEventArgs e) + => this._guildMemberAdded.InvokeAsync(client, e); - private Task Client_GuildRoleDelete(DiscordClient client, GuildRoleDeleteEventArgs e) - => this._guildRoleDeleted.InvokeAsync(client, e); + private Task Client_GuildMemberRemove(DiscordClient client, GuildMemberRemoveEventArgs e) + => this._guildMemberRemoved.InvokeAsync(client, e); - private Task Client_MessageUpdate(DiscordClient client, MessageUpdateEventArgs e) - => this._messageUpdated.InvokeAsync(client, e); + private Task Client_GuildMemberUpdate(DiscordClient client, GuildMemberUpdateEventArgs e) + => this._guildMemberUpdated.InvokeAsync(client, e); - private Task Client_MessageDelete(DiscordClient client, MessageDeleteEventArgs e) - => this._messageDeleted.InvokeAsync(client, e); + private Task Client_GuildRoleCreate(DiscordClient client, GuildRoleCreateEventArgs e) + => this._guildRoleCreated.InvokeAsync(client, e); - private Task Client_MessageBulkDelete(DiscordClient client, MessageBulkDeleteEventArgs e) - => this._messageBulkDeleted.InvokeAsync(client, e); + private Task Client_GuildRoleUpdate(DiscordClient client, GuildRoleUpdateEventArgs e) + => this._guildRoleUpdated.InvokeAsync(client, e); - private Task Client_TypingStart(DiscordClient client, TypingStartEventArgs e) - => this._typingStarted.InvokeAsync(client, e); + private Task Client_GuildRoleDelete(DiscordClient client, GuildRoleDeleteEventArgs e) + => this._guildRoleDeleted.InvokeAsync(client, e); - private Task Client_UserSettingsUpdate(DiscordClient client, UserSettingsUpdateEventArgs e) - => this._userSettingsUpdated.InvokeAsync(client, e); + private Task Client_MessageUpdate(DiscordClient client, MessageUpdateEventArgs e) + => this._messageUpdated.InvokeAsync(client, e); - private Task Client_UserUpdate(DiscordClient client, UserUpdateEventArgs e) - => this._userUpdated.InvokeAsync(client, e); + private Task Client_MessageDelete(DiscordClient client, MessageDeleteEventArgs e) + => this._messageDeleted.InvokeAsync(client, e); - private Task Client_VoiceStateUpdate(DiscordClient client, VoiceStateUpdateEventArgs e) - => this._voiceStateUpdated.InvokeAsync(client, e); + private Task Client_MessageBulkDelete(DiscordClient client, MessageBulkDeleteEventArgs e) + => this._messageBulkDeleted.InvokeAsync(client, e); - private Task Client_VoiceServerUpdate(DiscordClient client, VoiceServerUpdateEventArgs e) - => this._voiceServerUpdated.InvokeAsync(client, e); + private Task Client_TypingStart(DiscordClient client, TypingStartEventArgs e) + => this._typingStarted.InvokeAsync(client, e); - private Task Client_GuildMembersChunk(DiscordClient client, GuildMembersChunkEventArgs e) - => this._guildMembersChunk.InvokeAsync(client, e); + private Task Client_UserSettingsUpdate(DiscordClient client, UserSettingsUpdateEventArgs e) + => this._userSettingsUpdated.InvokeAsync(client, e); - private Task Client_UnknownEvent(DiscordClient client, UnknownEventArgs e) - => this._unknownEvent.InvokeAsync(client, e); + private Task Client_UserUpdate(DiscordClient client, UserUpdateEventArgs e) + => this._userUpdated.InvokeAsync(client, e); - private Task Client_MessageReactionAdd(DiscordClient client, MessageReactionAddEventArgs e) - => this._messageReactionAdded.InvokeAsync(client, e); + private Task Client_VoiceStateUpdate(DiscordClient client, VoiceStateUpdateEventArgs e) + => this._voiceStateUpdated.InvokeAsync(client, e); - private Task Client_MessageReactionRemove(DiscordClient client, MessageReactionRemoveEventArgs e) - => this._messageReactionRemoved.InvokeAsync(client, e); + private Task Client_VoiceServerUpdate(DiscordClient client, VoiceServerUpdateEventArgs e) + => this._voiceServerUpdated.InvokeAsync(client, e); - private Task Client_MessageReactionRemoveAll(DiscordClient client, MessageReactionsClearEventArgs e) - => this._messageReactionsCleared.InvokeAsync(client, e); + private Task Client_GuildMembersChunk(DiscordClient client, GuildMembersChunkEventArgs e) + => this._guildMembersChunk.InvokeAsync(client, e); - private Task Client_MessageReactionRemovedEmoji(DiscordClient client, MessageReactionRemoveEmojiEventArgs e) - => this._messageReactionRemovedEmoji.InvokeAsync(client, e); + private Task Client_UnknownEvent(DiscordClient client, UnknownEventArgs e) + => this._unknownEvent.InvokeAsync(client, e); - private Task Client_InteractionCreate(DiscordClient client, InteractionCreateEventArgs e) - => this._interactionCreated.InvokeAsync(client, e); + private Task Client_MessageReactionAdd(DiscordClient client, MessageReactionAddEventArgs e) + => this._messageReactionAdded.InvokeAsync(client, e); - private Task Client_ComponentInteractionCreate(DiscordClient client, ComponentInteractionCreateEventArgs e) - => this._componentInteractionCreated.InvokeAsync(client, e); + private Task Client_MessageReactionRemove(DiscordClient client, MessageReactionRemoveEventArgs e) + => this._messageReactionRemoved.InvokeAsync(client, e); - private Task Client_ModalSubmitted(DiscordClient client, ModalSubmitEventArgs e) - => this._modalSubmitted.InvokeAsync(client, e); + private Task Client_MessageReactionRemoveAll(DiscordClient client, MessageReactionsClearEventArgs e) + => this._messageReactionsCleared.InvokeAsync(client, e); - private Task Client_ContextMenuInteractionCreate(DiscordClient client, ContextMenuInteractionCreateEventArgs e) - => this._contextMenuInteractionCreated.InvokeAsync(client, e); + private Task Client_MessageReactionRemovedEmoji(DiscordClient client, MessageReactionRemoveEmojiEventArgs e) + => this._messageReactionRemovedEmoji.InvokeAsync(client, e); - private Task Client_WebhooksUpdate(DiscordClient client, WebhooksUpdateEventArgs e) - => this._webhooksUpdated.InvokeAsync(client, e); + private Task Client_InteractionCreate(DiscordClient client, InteractionCreateEventArgs e) + => this._interactionCreated.InvokeAsync(client, e); - private Task Client_HeartBeated(DiscordClient client, HeartbeatEventArgs e) - => this._heartbeated.InvokeAsync(client, e); + private Task Client_ComponentInteractionCreate(DiscordClient client, ComponentInteractionCreateEventArgs e) + => this._componentInteractionCreated.InvokeAsync(client, e); - private Task Client_Zombied(DiscordClient client, ZombiedEventArgs e) - => this._zombied.InvokeAsync(client, e); + private Task Client_ModalSubmitted(DiscordClient client, ModalSubmitEventArgs e) + => this._modalSubmitted.InvokeAsync(client, e); - private Task Client_IntegrationCreated(DiscordClient client, IntegrationCreateEventArgs e) - => this._integrationCreated.InvokeAsync(client, e); + private Task Client_ContextMenuInteractionCreate(DiscordClient client, ContextMenuInteractionCreateEventArgs e) + => this._contextMenuInteractionCreated.InvokeAsync(client, e); - private Task Client_IntegrationUpdated(DiscordClient client, IntegrationUpdateEventArgs e) - => this._integrationUpdated.InvokeAsync(client, e); + private Task Client_WebhooksUpdate(DiscordClient client, WebhooksUpdateEventArgs e) + => this._webhooksUpdated.InvokeAsync(client, e); - private Task Client_IntegrationDeleted(DiscordClient client, IntegrationDeleteEventArgs e) - => this._integrationDeleted.InvokeAsync(client, e); + private Task Client_HeartBeated(DiscordClient client, HeartbeatEventArgs e) + => this._heartbeated.InvokeAsync(client, e); - private Task Client_StageInstanceCreated(DiscordClient client, StageInstanceCreateEventArgs e) - => this._stageInstanceCreated.InvokeAsync(client, e); + private Task Client_Zombied(DiscordClient client, ZombiedEventArgs e) + => this._zombied.InvokeAsync(client, e); - private Task Client_StageInstanceUpdated(DiscordClient client, StageInstanceUpdateEventArgs e) - => this._stageInstanceUpdated.InvokeAsync(client, e); + private Task Client_IntegrationCreated(DiscordClient client, IntegrationCreateEventArgs e) + => this._integrationCreated.InvokeAsync(client, e); - private Task Client_StageInstanceDeleted(DiscordClient client, StageInstanceDeleteEventArgs e) - => this._stageInstanceDeleted.InvokeAsync(client, e); + private Task Client_IntegrationUpdated(DiscordClient client, IntegrationUpdateEventArgs e) + => this._integrationUpdated.InvokeAsync(client, e); - private Task Client_ThreadCreated(DiscordClient client, ThreadCreateEventArgs e) - => this._threadCreated.InvokeAsync(client, e); + private Task Client_IntegrationDeleted(DiscordClient client, IntegrationDeleteEventArgs e) + => this._integrationDeleted.InvokeAsync(client, e); - private Task Client_ThreadUpdated(DiscordClient client, ThreadUpdateEventArgs e) - => this._threadUpdated.InvokeAsync(client, e); + private Task Client_StageInstanceCreated(DiscordClient client, StageInstanceCreateEventArgs e) + => this._stageInstanceCreated.InvokeAsync(client, e); - private Task Client_ThreadDeleted(DiscordClient client, ThreadDeleteEventArgs e) - => this._threadDeleted.InvokeAsync(client, e); + private Task Client_StageInstanceUpdated(DiscordClient client, StageInstanceUpdateEventArgs e) + => this._stageInstanceUpdated.InvokeAsync(client, e); - private Task Client_ThreadListSynced(DiscordClient client, ThreadListSyncEventArgs e) - => this._threadListSynced.InvokeAsync(client, e); + private Task Client_StageInstanceDeleted(DiscordClient client, StageInstanceDeleteEventArgs e) + => this._stageInstanceDeleted.InvokeAsync(client, e); - private Task Client_ThreadMemberUpdated(DiscordClient client, ThreadMemberUpdateEventArgs e) - => this._threadMemberUpdated.InvokeAsync(client, e); + private Task Client_ThreadCreated(DiscordClient client, ThreadCreateEventArgs e) + => this._threadCreated.InvokeAsync(client, e); - private Task Client_ThreadMembersUpdated(DiscordClient client, ThreadMembersUpdateEventArgs e) - => this._threadMembersUpdated.InvokeAsync(client, e); + private Task Client_ThreadUpdated(DiscordClient client, ThreadUpdateEventArgs e) + => this._threadUpdated.InvokeAsync(client, e); - #endregion + private Task Client_ThreadDeleted(DiscordClient client, ThreadDeleteEventArgs e) + => this._threadDeleted.InvokeAsync(client, e); - #region AutoModeration - public event AsyncEventHandler AutoModerationRuleCreated - { - add => this._autoModerationRuleCreated.Register(value); - remove => this._autoModerationRuleCreated.Unregister(value); - } - private AsyncEvent _autoModerationRuleCreated; + private Task Client_ThreadListSynced(DiscordClient client, ThreadListSyncEventArgs e) + => this._threadListSynced.InvokeAsync(client, e); - public event AsyncEventHandler AutoModerationRuleUpdated - { - add => this._autoModerationRuleUpdated.Register(value); - remove => this._autoModerationRuleUpdated.Unregister(value); - } - private AsyncEvent _autoModerationRuleUpdated; + private Task Client_ThreadMemberUpdated(DiscordClient client, ThreadMemberUpdateEventArgs e) + => this._threadMemberUpdated.InvokeAsync(client, e); - public event AsyncEventHandler AutoModerationRuleDeleted - { - add => this._autoModerationRuleDeleted.Register(value); - remove => this._autoModerationRuleDeleted.Unregister(value); - } - private AsyncEvent _autoModerationRuleDeleted; + private Task Client_ThreadMembersUpdated(DiscordClient client, ThreadMembersUpdateEventArgs e) + => this._threadMembersUpdated.InvokeAsync(client, e); + + #endregion + + #region AutoModeration + public event AsyncEventHandler AutoModerationRuleCreated + { + add => this._autoModerationRuleCreated.Register(value); + remove => this._autoModerationRuleCreated.Unregister(value); + } + private AsyncEvent _autoModerationRuleCreated; - public event AsyncEventHandler AutoModerationRuleExecuted - { - add => this._autoModerationRuleExecuted.Register(value); - remove => this._autoModerationRuleExecuted.Unregister(value); - } - private AsyncEvent _autoModerationRuleExecuted; - #endregion + public event AsyncEventHandler AutoModerationRuleUpdated + { + add => this._autoModerationRuleUpdated.Register(value); + remove => this._autoModerationRuleUpdated.Unregister(value); + } + private AsyncEvent _autoModerationRuleUpdated; + + public event AsyncEventHandler AutoModerationRuleDeleted + { + add => this._autoModerationRuleDeleted.Register(value); + remove => this._autoModerationRuleDeleted.Unregister(value); + } + private AsyncEvent _autoModerationRuleDeleted; + + public event AsyncEventHandler AutoModerationRuleExecuted + { + add => this._autoModerationRuleExecuted.Register(value); + remove => this._autoModerationRuleExecuted.Unregister(value); } + private AsyncEvent _autoModerationRuleExecuted; + #endregion } diff --git a/DSharpPlus/DiscordIntents.cs b/DSharpPlus/DiscordIntents.cs index 7284815248..01c3a37159 100644 --- a/DSharpPlus/DiscordIntents.cs +++ b/DSharpPlus/DiscordIntents.cs @@ -23,181 +23,180 @@ using System; -namespace DSharpPlus +namespace DSharpPlus; + +public static class DiscordIntentExtensions { - public static class DiscordIntentExtensions - { - /// - /// Calculates whether these intents have a certain intent. - /// - /// The base intents. - /// The intents to search for. - /// - public static bool HasIntent(this DiscordIntents intents, DiscordIntents search) - => (intents & search) == search; - - /// - /// Adds an intent to these intents. - /// - /// The base intents. - /// The intents to add. - /// - public static DiscordIntents AddIntent(this DiscordIntents intents, DiscordIntents toAdd) - => intents |= toAdd; - - /// - /// Removes an intent from these intents. - /// - /// The base intents. - /// The intents to remove. - /// - public static DiscordIntents RemoveIntent(this DiscordIntents intents, DiscordIntents toRemove) - => intents &= ~toRemove; - - internal static bool HasAllPrivilegedIntents(this DiscordIntents intents) - => intents.HasIntent(DiscordIntents.GuildMembers | DiscordIntents.GuildPresences); - } - - /// - /// Represents gateway intents to be specified for connecting to Discord. - /// - [Flags] - public enum DiscordIntents - { - /// - /// Whether to include general guild events. - /// These include , , , , - /// , , , - /// , , , and . - /// - Guilds = 1 << 0, - - /// - /// Whether to include guild member events. - /// These include , , and . - /// This is a privileged intent, and must be enabled on the bot's developer page. - /// - GuildMembers = 1 << 1, - - /// - /// Whether to include guild ban events. - /// These include , and . - /// - GuildBans = 1 << 2, - - /// - /// Whether to include guild emoji events. - /// This includes . - /// - GuildEmojis = 1 << 3, - - /// - /// Whether to include guild integration events. - /// This includes . - /// - GuildIntegrations = 1 << 4, - - /// - /// Whether to include guild webhook events. - /// This includes . - /// - GuildWebhooks = 1 << 5, - - /// - /// Whether to include guild invite events. - /// These include , and . - /// - GuildInvites = 1 << 6, - - /// - /// Whether to include guild voice state events. - /// This includes . - /// - GuildVoiceStates = 1 << 7, - - /// - /// Whether to include guild presence events. - /// This includes . - /// This is a privileged intent, and must be enabled on the bot's developer page. - /// - GuildPresences = 1 << 8, - - /// - /// Whether to include guild message events. - /// These include , , and . - /// - GuildMessages = 1 << 9, - - /// - /// Whether to include guild reaction events. - /// These include , , , - /// and . - /// - GuildMessageReactions = 1 << 10, - - /// - /// Whether to include guild typing events. - /// These include . - /// - GuildMessageTyping = 1 << 11, - - /// - /// Whether to include general direct message events. - /// These include , , , - /// , . - /// These events only fire for DM channels. - /// - DirectMessages = 1 << 12, - - /// - /// Whether to include direct message reaction events. - /// These include , , - /// , and . - /// These events only fire for DM channels. - /// - DirectMessageReactions = 1 << 13, - - /// - /// Whether to include direct message typing events. - /// This includes . - /// This event only fires for DM channels. - /// - DirectMessageTyping = 1 << 14, - - /// - /// Whether to include message content. This is a privileged event. - /// Message content includes text, attachments, embeds, components, and reply content. - /// This intent is required for CommandsNext to function correctly. - /// - MessageContents = 1 << 15, - - /// - /// Whether to include scheduled event messages. - /// - ScheduledGuildEvents = 1 << 16, - - /// - /// Whetever to include creation, modification or deletion of an auto-Moderation rule. - /// - AutoModerationEvents = 1 << 20, - - /// - /// Whetever to include when an auto-moderation rule was fired. - /// - AutoModerationExecution = 1 << 21, - - /// - /// Includes all unprivileged intents. - /// These are all intents excluding and . - /// - AllUnprivileged = Guilds | GuildBans | GuildEmojis | GuildIntegrations | GuildWebhooks | GuildInvites | GuildVoiceStates | GuildMessages | - GuildMessageReactions | GuildMessageTyping | DirectMessages | DirectMessageReactions | DirectMessageTyping | ScheduledGuildEvents | - AutoModerationEvents | AutoModerationExecution, - - /// - /// Includes all intents. - /// The and intents are privileged, and must be enabled on the bot's developer page. - /// - All = AllUnprivileged | GuildMembers | GuildPresences | MessageContents - } + /// + /// Calculates whether these intents have a certain intent. + /// + /// The base intents. + /// The intents to search for. + /// + public static bool HasIntent(this DiscordIntents intents, DiscordIntents search) + => (intents & search) == search; + + /// + /// Adds an intent to these intents. + /// + /// The base intents. + /// The intents to add. + /// + public static DiscordIntents AddIntent(this DiscordIntents intents, DiscordIntents toAdd) + => intents |= toAdd; + + /// + /// Removes an intent from these intents. + /// + /// The base intents. + /// The intents to remove. + /// + public static DiscordIntents RemoveIntent(this DiscordIntents intents, DiscordIntents toRemove) + => intents &= ~toRemove; + + internal static bool HasAllPrivilegedIntents(this DiscordIntents intents) + => intents.HasIntent(DiscordIntents.GuildMembers | DiscordIntents.GuildPresences); +} + +/// +/// Represents gateway intents to be specified for connecting to Discord. +/// +[Flags] +public enum DiscordIntents +{ + /// + /// Whether to include general guild events. + /// These include , , , , + /// , , , + /// , , , and . + /// + Guilds = 1 << 0, + + /// + /// Whether to include guild member events. + /// These include , , and . + /// This is a privileged intent, and must be enabled on the bot's developer page. + /// + GuildMembers = 1 << 1, + + /// + /// Whether to include guild ban events. + /// These include , and . + /// + GuildModeration = 1 << 2, + + /// + /// Whether to include guild emoji events. + /// This includes . + /// + GuildEmojisAndStickers = 1 << 3, + + /// + /// Whether to include guild integration events. + /// This includes . + /// + GuildIntegrations = 1 << 4, + + /// + /// Whether to include guild webhook events. + /// This includes . + /// + GuildWebhooks = 1 << 5, + + /// + /// Whether to include guild invite events. + /// These include , and . + /// + GuildInvites = 1 << 6, + + /// + /// Whether to include guild voice state events. + /// This includes . + /// + GuildVoiceStates = 1 << 7, + + /// + /// Whether to include guild presence events. + /// This includes . + /// This is a privileged intent, and must be enabled on the bot's developer page. + /// + GuildPresences = 1 << 8, + + /// + /// Whether to include guild message events. + /// These include , , and . + /// + GuildMessages = 1 << 9, + + /// + /// Whether to include guild reaction events. + /// These include , , , + /// and . + /// + GuildMessageReactions = 1 << 10, + + /// + /// Whether to include guild typing events. + /// These include . + /// + GuildMessageTyping = 1 << 11, + + /// + /// Whether to include general direct message events. + /// These include , , , + /// , . + /// These events only fire for DM channels. + /// + DirectMessages = 1 << 12, + + /// + /// Whether to include direct message reaction events. + /// These include , , + /// , and . + /// These events only fire for DM channels. + /// + DirectMessageReactions = 1 << 13, + + /// + /// Whether to include direct message typing events. + /// This includes . + /// This event only fires for DM channels. + /// + DirectMessageTyping = 1 << 14, + + /// + /// Whether to include message content. This is a privileged event. + /// Message content includes text, attachments, embeds, components, and reply content. + /// This intent is required for CommandsNext to function correctly. + /// + MessageContents = 1 << 15, + + /// + /// Whether to include scheduled event messages. + /// + ScheduledGuildEvents = 1 << 16, + + /// + /// Whetever to include creation, modification or deletion of an auto-Moderation rule. + /// + AutoModerationEvents = 1 << 20, + + /// + /// Whetever to include when an auto-moderation rule was fired. + /// + AutoModerationExecution = 1 << 21, + + /// + /// Includes all unprivileged intents. + /// These are all intents excluding and . + /// + AllUnprivileged = Guilds | GuildModeration | GuildEmojisAndStickers | GuildIntegrations | GuildWebhooks | GuildInvites | GuildVoiceStates | GuildMessages | + GuildMessageReactions | GuildMessageTyping | DirectMessages | DirectMessageReactions | DirectMessageTyping | ScheduledGuildEvents | + AutoModerationEvents | AutoModerationExecution, + + /// + /// Includes all intents. + /// The and intents are privileged, and must be enabled on the bot's developer page. + /// + All = AllUnprivileged | GuildMembers | GuildPresences | MessageContents }