@ovencord/discord.js 14.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +148 -0
- package/package.json +73 -0
- package/src/client/Client.ts +967 -0
- package/src/client/actions/Action.ts +141 -0
- package/src/client/actions/ActionsManager.ts +138 -0
- package/src/client/actions/ChannelCreate.ts +21 -0
- package/src/client/actions/ChannelDelete.ts +20 -0
- package/src/client/actions/ChannelUpdate.ts +38 -0
- package/src/client/actions/GuildChannelsPositionUpdate.ts +17 -0
- package/src/client/actions/GuildEmojiCreate.ts +17 -0
- package/src/client/actions/GuildEmojiDelete.ts +16 -0
- package/src/client/actions/GuildEmojiUpdate.ts +17 -0
- package/src/client/actions/GuildEmojisUpdate.ts +30 -0
- package/src/client/actions/GuildMemberRemove.ts +29 -0
- package/src/client/actions/GuildMemberUpdate.ts +41 -0
- package/src/client/actions/GuildRoleCreate.ts +23 -0
- package/src/client/actions/GuildRoleDelete.ts +26 -0
- package/src/client/actions/GuildRolesPositionUpdate.ts +17 -0
- package/src/client/actions/GuildScheduledEventDelete.ts +28 -0
- package/src/client/actions/GuildScheduledEventUserAdd.ts +29 -0
- package/src/client/actions/GuildScheduledEventUserRemove.ts +29 -0
- package/src/client/actions/GuildSoundboardSoundDelete.ts +26 -0
- package/src/client/actions/GuildStickerCreate.ts +17 -0
- package/src/client/actions/GuildStickerDelete.ts +16 -0
- package/src/client/actions/GuildStickerUpdate.ts +17 -0
- package/src/client/actions/GuildStickersUpdate.ts +30 -0
- package/src/client/actions/GuildUpdate.ts +30 -0
- package/src/client/actions/InteractionCreate.ts +104 -0
- package/src/client/actions/MessageCreate.ts +38 -0
- package/src/client/actions/MessageDelete.ts +29 -0
- package/src/client/actions/MessageDeleteBulk.ts +45 -0
- package/src/client/actions/MessagePollVoteAdd.ts +37 -0
- package/src/client/actions/MessagePollVoteRemove.ts +35 -0
- package/src/client/actions/MessageReactionAdd.ts +68 -0
- package/src/client/actions/MessageReactionRemove.ts +47 -0
- package/src/client/actions/MessageReactionRemoveAll.ts +30 -0
- package/src/client/actions/MessageReactionRemoveEmoji.ts +25 -0
- package/src/client/actions/MessageUpdate.ts +22 -0
- package/src/client/actions/StageInstanceCreate.ts +25 -0
- package/src/client/actions/StageInstanceDelete.ts +28 -0
- package/src/client/actions/StageInstanceUpdate.ts +27 -0
- package/src/client/actions/ThreadCreate.ts +22 -0
- package/src/client/actions/ThreadMembersUpdate.ts +45 -0
- package/src/client/actions/TypingStart.ts +26 -0
- package/src/client/actions/UserUpdate.ts +33 -0
- package/src/client/voice/ClientVoiceManager.ts +46 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.ts +19 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.ts +17 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.ts +18 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.ts +21 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.ts +20 -0
- package/src/client/websocket/handlers/CHANNEL_CREATE.ts +4 -0
- package/src/client/websocket/handlers/CHANNEL_DELETE.ts +4 -0
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.ts +22 -0
- package/src/client/websocket/handlers/CHANNEL_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/ENTITLEMENT_CREATE.ts +14 -0
- package/src/client/websocket/handlers/ENTITLEMENT_DELETE.ts +18 -0
- package/src/client/websocket/handlers/ENTITLEMENT_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.ts +19 -0
- package/src/client/websocket/handlers/GUILD_BAN_ADD.ts +15 -0
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.ts +20 -0
- package/src/client/websocket/handlers/GUILD_CREATE.ts +34 -0
- package/src/client/websocket/handlers/GUILD_DELETE.ts +36 -0
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.ts +15 -0
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.ts +40 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.ts +17 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.ts +21 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.ts +17 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.ts +19 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.ts +24 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.ts +18 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.ts +20 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/INTERACTION_CREATE.ts +4 -0
- package/src/client/websocket/handlers/INVITE_CREATE.ts +20 -0
- package/src/client/websocket/handlers/INVITE_DELETE.ts +23 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.ts +42 -0
- package/src/client/websocket/handlers/RATE_LIMITED.ts +23 -0
- package/src/client/websocket/handlers/READY.ts +29 -0
- package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.ts +24 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.ts +4 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.ts +4 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/SUBSCRIPTION_CREATE.ts +14 -0
- package/src/client/websocket/handlers/SUBSCRIPTION_DELETE.ts +16 -0
- package/src/client/websocket/handlers/SUBSCRIPTION_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/THREAD_CREATE.ts +4 -0
- package/src/client/websocket/handlers/THREAD_DELETE.ts +17 -0
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.ts +50 -0
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.ts +25 -0
- package/src/client/websocket/handlers/THREAD_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/TYPING_START.ts +4 -0
- package/src/client/websocket/handlers/USER_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.ts +16 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.ts +5 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.ts +37 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/index.ts +74 -0
- package/src/errors/DJSError.ts +50 -0
- package/src/errors/ErrorCodes.ts +277 -0
- package/src/errors/Messages.ts +155 -0
- package/src/errors/index.ts +6 -0
- package/src/index.ts +241 -0
- package/src/managers/ApplicationCommandManager.ts +303 -0
- package/src/managers/ApplicationCommandPermissionsManager.ts +453 -0
- package/src/managers/ApplicationEmojiManager.ts +149 -0
- package/src/managers/AutoModerationRuleManager.ts +307 -0
- package/src/managers/BaseManager.ts +13 -0
- package/src/managers/CachedManager.ts +56 -0
- package/src/managers/CategoryChannelChildManager.ts +81 -0
- package/src/managers/ChannelManager.ts +194 -0
- package/src/managers/DMMessageManager.ts +15 -0
- package/src/managers/DataManager.ts +38 -0
- package/src/managers/EntitlementManager.ts +182 -0
- package/src/managers/GuildApplicationCommandManager.ts +29 -0
- package/src/managers/GuildBanManager.ts +221 -0
- package/src/managers/GuildChannelManager.ts +552 -0
- package/src/managers/GuildEmojiManager.ts +262 -0
- package/src/managers/GuildEmojiRoleManager.ts +134 -0
- package/src/managers/GuildForumThreadManager.ts +84 -0
- package/src/managers/GuildInviteManager.ts +236 -0
- package/src/managers/GuildManager.ts +265 -0
- package/src/managers/GuildMemberManager.ts +619 -0
- package/src/managers/GuildMemberRoleManager.ts +230 -0
- package/src/managers/GuildMessageManager.ts +31 -0
- package/src/managers/GuildScheduledEventManager.ts +330 -0
- package/src/managers/GuildSoundboardSoundManager.ts +157 -0
- package/src/managers/GuildStickerManager.ts +192 -0
- package/src/managers/GuildTextThreadManager.ts +91 -0
- package/src/managers/MessageManager.ts +352 -0
- package/src/managers/PartialGroupDMMessageManager.ts +15 -0
- package/src/managers/PermissionOverwriteManager.ts +174 -0
- package/src/managers/PollAnswerVoterManager.ts +59 -0
- package/src/managers/PresenceManager.ts +60 -0
- package/src/managers/ReactionManager.ts +72 -0
- package/src/managers/ReactionUserManager.ts +82 -0
- package/src/managers/RoleManager.ts +432 -0
- package/src/managers/StageInstanceManager.ts +166 -0
- package/src/managers/SubscriptionManager.ts +83 -0
- package/src/managers/ThreadManager.ts +210 -0
- package/src/managers/ThreadMemberManager.ts +194 -0
- package/src/managers/UserManager.ts +139 -0
- package/src/managers/VoiceStateManager.ts +61 -0
- package/src/sharding/Shard.ts +513 -0
- package/src/sharding/ShardClientUtil.ts +293 -0
- package/src/sharding/ShardingManager.ts +374 -0
- package/src/structures/ActionRow.ts +31 -0
- package/src/structures/AnnouncementChannel.ts +25 -0
- package/src/structures/AnonymousGuild.ts +110 -0
- package/src/structures/ApplicationCommand.ts +675 -0
- package/src/structures/ApplicationEmoji.ts +189 -0
- package/src/structures/ApplicationRoleConnectionMetadata.ts +54 -0
- package/src/structures/Attachment.ts +189 -0
- package/src/structures/AuthorizingIntegrationOwners.ts +63 -0
- package/src/structures/AutoModerationActionExecution.ts +138 -0
- package/src/structures/AutoModerationRule.ts +325 -0
- package/src/structures/AutocompleteInteraction.ts +115 -0
- package/src/structures/Base.ts +37 -0
- package/src/structures/BaseChannel.ts +188 -0
- package/src/structures/BaseGuild.ts +134 -0
- package/src/structures/BaseGuildEmoji.ts +113 -0
- package/src/structures/BaseGuildTextChannel.ts +230 -0
- package/src/structures/BaseGuildVoiceChannel.ts +270 -0
- package/src/structures/BaseInteraction.ts +393 -0
- package/src/structures/BaseInvite.ts +192 -0
- package/src/structures/BaseSelectMenuComponent.ts +58 -0
- package/src/structures/ButtonComponent.ts +68 -0
- package/src/structures/ButtonInteraction.ts +8 -0
- package/src/structures/CategoryChannel.ts +46 -0
- package/src/structures/ChannelSelectMenuComponent.ts +18 -0
- package/src/structures/ChannelSelectMenuInteraction.ts +34 -0
- package/src/structures/ChatInputCommandInteraction.ts +43 -0
- package/src/structures/ClientApplication.ts +470 -0
- package/src/structures/ClientPresence.ts +87 -0
- package/src/structures/ClientUser.ts +219 -0
- package/src/structures/CommandInteraction.ts +193 -0
- package/src/structures/CommandInteractionOptionResolver.ts +336 -0
- package/src/structures/Component.ts +59 -0
- package/src/structures/ContainerComponent.ts +63 -0
- package/src/structures/ContextMenuCommandInteraction.ts +68 -0
- package/src/structures/DMChannel.ts +148 -0
- package/src/structures/DirectoryChannel.ts +40 -0
- package/src/structures/Embed.ts +251 -0
- package/src/structures/Emoji.ts +61 -0
- package/src/structures/Entitlement.ts +206 -0
- package/src/structures/FileComponent.ts +41 -0
- package/src/structures/ForumChannel.ts +31 -0
- package/src/structures/GroupDMInvite.ts +34 -0
- package/src/structures/Guild.ts +1605 -0
- package/src/structures/GuildAuditLogs.ts +99 -0
- package/src/structures/GuildAuditLogsEntry.ts +557 -0
- package/src/structures/GuildBan.ts +65 -0
- package/src/structures/GuildChannel.ts +515 -0
- package/src/structures/GuildEmoji.ts +159 -0
- package/src/structures/GuildInvite.ts +233 -0
- package/src/structures/GuildMember.ts +643 -0
- package/src/structures/GuildOnboarding.ts +73 -0
- package/src/structures/GuildOnboardingPrompt.ts +93 -0
- package/src/structures/GuildOnboardingPromptOption.ts +100 -0
- package/src/structures/GuildPreview.ts +218 -0
- package/src/structures/GuildPreviewEmoji.ts +28 -0
- package/src/structures/GuildScheduledEvent.ts +593 -0
- package/src/structures/GuildTemplate.ts +229 -0
- package/src/structures/Integration.ts +257 -0
- package/src/structures/IntegrationApplication.ts +84 -0
- package/src/structures/InteractionCallback.ts +86 -0
- package/src/structures/InteractionCallbackResource.ts +57 -0
- package/src/structures/InteractionCallbackResponse.ts +35 -0
- package/src/structures/InteractionCollector.ts +260 -0
- package/src/structures/InteractionWebhook.ts +65 -0
- package/src/structures/InviteGuild.ts +22 -0
- package/src/structures/LabelComponent.ts +51 -0
- package/src/structures/MediaChannel.ts +8 -0
- package/src/structures/MediaGalleryComponent.ts +31 -0
- package/src/structures/MediaGalleryItem.ts +54 -0
- package/src/structures/MentionableSelectMenuComponent.ts +8 -0
- package/src/structures/MentionableSelectMenuInteraction.ts +76 -0
- package/src/structures/Message.ts +1202 -0
- package/src/structures/MessageCollector.ts +155 -0
- package/src/structures/MessageComponentInteraction.ts +132 -0
- package/src/structures/MessageContextMenuCommandInteraction.ts +18 -0
- package/src/structures/MessageMentions.ts +327 -0
- package/src/structures/MessagePayload.ts +325 -0
- package/src/structures/MessageReaction.ts +219 -0
- package/src/structures/ModalComponentResolver.ts +237 -0
- package/src/structures/ModalSubmitInteraction.ts +260 -0
- package/src/structures/OAuth2Guild.ts +30 -0
- package/src/structures/PartialGroupDMChannel.ts +151 -0
- package/src/structures/PermissionOverwrites.ts +222 -0
- package/src/structures/Poll.ts +195 -0
- package/src/structures/PollAnswer.ts +100 -0
- package/src/structures/Presence.ts +448 -0
- package/src/structures/PrimaryEntryPointCommandInteraction.ts +8 -0
- package/src/structures/ReactionCollector.ts +245 -0
- package/src/structures/ReactionEmoji.ts +30 -0
- package/src/structures/Role.ts +543 -0
- package/src/structures/RoleSelectMenuComponent.ts +8 -0
- package/src/structures/RoleSelectMenuInteraction.ts +34 -0
- package/src/structures/SKU.ts +62 -0
- package/src/structures/SectionComponent.ts +44 -0
- package/src/structures/SeparatorComponent.ts +29 -0
- package/src/structures/SoundboardSound.ts +176 -0
- package/src/structures/StageChannel.ts +118 -0
- package/src/structures/StageInstance.ts +173 -0
- package/src/structures/Sticker.ts +300 -0
- package/src/structures/StickerPack.ts +111 -0
- package/src/structures/StringSelectMenuComponent.ts +18 -0
- package/src/structures/StringSelectMenuInteraction.ts +21 -0
- package/src/structures/Subscription.ts +138 -0
- package/src/structures/Team.ts +131 -0
- package/src/structures/TeamMember.ts +77 -0
- package/src/structures/TextChannel.ts +33 -0
- package/src/structures/TextDisplayComponent.ts +18 -0
- package/src/structures/TextInputComponent.ts +28 -0
- package/src/structures/ThreadChannel.ts +680 -0
- package/src/structures/ThreadMember.ts +125 -0
- package/src/structures/ThreadOnlyChannel.ts +276 -0
- package/src/structures/ThumbnailComponent.ts +51 -0
- package/src/structures/Typing.ts +81 -0
- package/src/structures/UnfurledMediaItem.ts +33 -0
- package/src/structures/User.ts +511 -0
- package/src/structures/UserContextMenuCommandInteraction.ts +28 -0
- package/src/structures/UserSelectMenuComponent.ts +8 -0
- package/src/structures/UserSelectMenuInteraction.ts +54 -0
- package/src/structures/VoiceChannel.ts +119 -0
- package/src/structures/VoiceChannelEffect.ts +92 -0
- package/src/structures/VoiceRegion.ts +52 -0
- package/src/structures/VoiceState.ts +346 -0
- package/src/structures/Webhook.ts +526 -0
- package/src/structures/WelcomeChannel.ts +67 -0
- package/src/structures/WelcomeScreen.ts +53 -0
- package/src/structures/Widget.ts +110 -0
- package/src/structures/WidgetMember.ts +124 -0
- package/src/structures/interfaces/Application.ts +179 -0
- package/src/structures/interfaces/Collector.ts +372 -0
- package/src/structures/interfaces/InteractionResponses.ts +384 -0
- package/src/structures/interfaces/TextBasedChannel.ts +430 -0
- package/src/util/APITypes.ts +690 -0
- package/src/util/ActivityFlagsBitField.ts +26 -0
- package/src/util/ApplicationFlagsBitField.ts +43 -0
- package/src/util/AttachmentFlagsBitField.ts +26 -0
- package/src/util/BitField.ts +178 -0
- package/src/util/ChannelFlagsBitField.ts +43 -0
- package/src/util/Channels.ts +165 -0
- package/src/util/Colors.ts +72 -0
- package/src/util/Components.ts +285 -0
- package/src/util/Constants.ts +251 -0
- package/src/util/DataResolver.ts +146 -0
- package/src/util/Enums.ts +10 -0
- package/src/util/Events.ts +178 -0
- package/src/util/GuildMemberFlagsBitField.ts +43 -0
- package/src/util/IntentsBitField.ts +35 -0
- package/src/util/InviteFlagsBitField.ts +26 -0
- package/src/util/Invites.ts +27 -0
- package/src/util/LimitedCollection.ts +73 -0
- package/src/util/MessageFlagsBitField.ts +43 -0
- package/src/util/Options.ts +215 -0
- package/src/util/Partials.ts +50 -0
- package/src/util/PermissionsBitField.ts +113 -0
- package/src/util/RoleFlagsBitField.ts +26 -0
- package/src/util/SKUFlagsBitField.ts +26 -0
- package/src/util/ShardEvents.ts +26 -0
- package/src/util/Status.ts +16 -0
- package/src/util/Sweepers.ts +532 -0
- package/src/util/Symbols.ts +1 -0
- package/src/util/SystemChannelFlagsBitField.ts +45 -0
- package/src/util/ThreadMemberFlagsBitField.ts +33 -0
- package/src/util/Transformers.ts +123 -0
- package/src/util/UserFlagsBitField.ts +33 -0
- package/src/util/Util.ts +519 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class GuildScheduledEventUserRemoveAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const client = this.client;
|
|
7
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
8
|
+
|
|
9
|
+
if (guild) {
|
|
10
|
+
const guildScheduledEvent = this.getScheduledEvent(data, guild);
|
|
11
|
+
const user = this.getUser(data);
|
|
12
|
+
|
|
13
|
+
if (guildScheduledEvent && user) {
|
|
14
|
+
/**
|
|
15
|
+
* Emitted whenever a user unsubscribes from a guild scheduled event
|
|
16
|
+
*
|
|
17
|
+
* @event Client#guildScheduledEventUserRemove
|
|
18
|
+
* @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event
|
|
19
|
+
* @param {User} user The user who unsubscribed
|
|
20
|
+
*/
|
|
21
|
+
client.emit(Events.GuildScheduledEventUserRemove, guildScheduledEvent, user);
|
|
22
|
+
|
|
23
|
+
return { guildScheduledEvent, user };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class GuildSoundboardSoundDeleteAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const guild = this.client.guilds.cache.get(data.guild_id);
|
|
7
|
+
|
|
8
|
+
if (!guild) return {};
|
|
9
|
+
|
|
10
|
+
const soundboardSound = this.getSoundboardSound(data, guild);
|
|
11
|
+
|
|
12
|
+
if (soundboardSound) {
|
|
13
|
+
guild.soundboardSounds.cache.delete(soundboardSound.soundId);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Emitted whenever a soundboard sound is deleted in a guild.
|
|
17
|
+
*
|
|
18
|
+
* @event Client#guildSoundboardSoundDelete
|
|
19
|
+
* @param {SoundboardSound} soundboardSound The soundboard sound that was deleted
|
|
20
|
+
*/
|
|
21
|
+
this.client.emit(Events.GuildSoundboardSoundDelete, soundboardSound);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return { soundboardSound };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class GuildStickerCreateAction extends Action {
|
|
5
|
+
handle(guild, createdSticker) {
|
|
6
|
+
const already = guild.stickers.cache.has(createdSticker.id);
|
|
7
|
+
const sticker = guild.stickers._add(createdSticker);
|
|
8
|
+
/**
|
|
9
|
+
* Emitted whenever a custom sticker is created in a guild.
|
|
10
|
+
*
|
|
11
|
+
* @event Client#stickerCreate
|
|
12
|
+
* @param {Sticker} sticker The sticker that was created
|
|
13
|
+
*/
|
|
14
|
+
if (!already) this.client.emit(Events.GuildStickerCreate, sticker);
|
|
15
|
+
return { sticker };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class GuildStickerDeleteAction extends Action {
|
|
5
|
+
handle(sticker) {
|
|
6
|
+
sticker.guild.stickers.cache.delete(sticker.id);
|
|
7
|
+
/**
|
|
8
|
+
* Emitted whenever a custom sticker is deleted in a guild.
|
|
9
|
+
*
|
|
10
|
+
* @event Client#stickerDelete
|
|
11
|
+
* @param {Sticker} sticker The sticker that was deleted
|
|
12
|
+
*/
|
|
13
|
+
this.client.emit(Events.GuildStickerDelete, sticker);
|
|
14
|
+
return { sticker };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class GuildStickerUpdateAction extends Action {
|
|
5
|
+
handle(current, data) {
|
|
6
|
+
const old = current._update(data);
|
|
7
|
+
/**
|
|
8
|
+
* Emitted whenever a custom sticker is updated in a guild.
|
|
9
|
+
*
|
|
10
|
+
* @event Client#stickerUpdate
|
|
11
|
+
* @param {Sticker} oldSticker The old sticker
|
|
12
|
+
* @param {Sticker} newSticker The new sticker
|
|
13
|
+
*/
|
|
14
|
+
this.client.emit(Events.GuildStickerUpdate, old, current);
|
|
15
|
+
return { sticker: current };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Action } from './Action.js';
|
|
2
|
+
|
|
3
|
+
export class GuildStickersUpdateAction extends Action {
|
|
4
|
+
handle(data) {
|
|
5
|
+
const guild = this.client.guilds.cache.get(data.guild_id);
|
|
6
|
+
if (!guild?.stickers) return;
|
|
7
|
+
|
|
8
|
+
const deletions = new Map(guild.stickers.cache);
|
|
9
|
+
|
|
10
|
+
for (const sticker of data.stickers) {
|
|
11
|
+
// Determine type of sticker event
|
|
12
|
+
const cachedSticker = guild.stickers.cache.get(sticker.id);
|
|
13
|
+
if (cachedSticker) {
|
|
14
|
+
deletions.delete(sticker.id);
|
|
15
|
+
if (!cachedSticker.equals(sticker)) {
|
|
16
|
+
// Sticker updated
|
|
17
|
+
this.client.actions.GuildStickerUpdate.handle(cachedSticker, sticker);
|
|
18
|
+
}
|
|
19
|
+
} else {
|
|
20
|
+
// Sticker added
|
|
21
|
+
this.client.actions.GuildStickerCreate.handle(guild, sticker);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
for (const sticker of deletions.values()) {
|
|
26
|
+
// Sticker deleted
|
|
27
|
+
this.client.actions.GuildStickerDelete.handle(sticker);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class GuildUpdateAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const client = this.client;
|
|
7
|
+
|
|
8
|
+
const guild = client.guilds.cache.get(data.id);
|
|
9
|
+
if (guild) {
|
|
10
|
+
const old = guild._update(data);
|
|
11
|
+
/**
|
|
12
|
+
* Emitted whenever a guild is updated - e.g. name change.
|
|
13
|
+
*
|
|
14
|
+
* @event Client#guildUpdate
|
|
15
|
+
* @param {Guild} oldGuild The guild before the update
|
|
16
|
+
* @param {Guild} newGuild The guild after the update
|
|
17
|
+
*/
|
|
18
|
+
client.emit(Events.GuildUpdate, old, guild);
|
|
19
|
+
return {
|
|
20
|
+
old,
|
|
21
|
+
updated: guild,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
old: null,
|
|
27
|
+
updated: null,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { InteractionType, ComponentType, ApplicationCommandType } from 'discord-api-types/v10';
|
|
2
|
+
import { AutocompleteInteraction } from '../../structures/AutocompleteInteraction.js';
|
|
3
|
+
import { ButtonInteraction } from '../../structures/ButtonInteraction.js';
|
|
4
|
+
import { ChannelSelectMenuInteraction } from '../../structures/ChannelSelectMenuInteraction.js';
|
|
5
|
+
import { ChatInputCommandInteraction } from '../../structures/ChatInputCommandInteraction.js';
|
|
6
|
+
import { MentionableSelectMenuInteraction } from '../../structures/MentionableSelectMenuInteraction.js';
|
|
7
|
+
import { MessageContextMenuCommandInteraction } from '../../structures/MessageContextMenuCommandInteraction.js';
|
|
8
|
+
import { ModalSubmitInteraction } from '../../structures/ModalSubmitInteraction.js';
|
|
9
|
+
import { PrimaryEntryPointCommandInteraction } from '../../structures/PrimaryEntryPointCommandInteraction.js';
|
|
10
|
+
import { RoleSelectMenuInteraction } from '../../structures/RoleSelectMenuInteraction.js';
|
|
11
|
+
import { StringSelectMenuInteraction } from '../../structures/StringSelectMenuInteraction.js';
|
|
12
|
+
import { UserContextMenuCommandInteraction } from '../../structures/UserContextMenuCommandInteraction.js';
|
|
13
|
+
import { UserSelectMenuInteraction } from '../../structures/UserSelectMenuInteraction.js';
|
|
14
|
+
import { Events } from '../../util/Events.js';
|
|
15
|
+
import { Action } from './Action.js';
|
|
16
|
+
|
|
17
|
+
export class InteractionCreateAction extends Action {
|
|
18
|
+
handle(data) {
|
|
19
|
+
const client = this.client;
|
|
20
|
+
|
|
21
|
+
// Resolve and cache partial channels for Interaction#channel getter
|
|
22
|
+
const channel = data.channel && this.getChannel(data.channel);
|
|
23
|
+
|
|
24
|
+
// Do not emit this for interactions that cache messages that are non-text-based.
|
|
25
|
+
let InteractionClass;
|
|
26
|
+
|
|
27
|
+
switch (data.type) {
|
|
28
|
+
case InteractionType.ApplicationCommand:
|
|
29
|
+
switch (data.data.type) {
|
|
30
|
+
case ApplicationCommandType.ChatInput:
|
|
31
|
+
InteractionClass = ChatInputCommandInteraction;
|
|
32
|
+
break;
|
|
33
|
+
case ApplicationCommandType.User:
|
|
34
|
+
InteractionClass = UserContextMenuCommandInteraction;
|
|
35
|
+
break;
|
|
36
|
+
case ApplicationCommandType.Message:
|
|
37
|
+
if (channel && !channel.isTextBased()) return;
|
|
38
|
+
InteractionClass = MessageContextMenuCommandInteraction;
|
|
39
|
+
break;
|
|
40
|
+
case ApplicationCommandType.PrimaryEntryPoint:
|
|
41
|
+
InteractionClass = PrimaryEntryPointCommandInteraction;
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
client.emit(
|
|
45
|
+
Events.Debug,
|
|
46
|
+
`[INTERACTION] Received application command interaction with unknown type: ${data.data.type}`,
|
|
47
|
+
);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
break;
|
|
52
|
+
case InteractionType.MessageComponent:
|
|
53
|
+
if (channel && !channel.isTextBased()) return;
|
|
54
|
+
|
|
55
|
+
switch (data.data.component_type) {
|
|
56
|
+
case ComponentType.Button:
|
|
57
|
+
InteractionClass = ButtonInteraction;
|
|
58
|
+
break;
|
|
59
|
+
case ComponentType.StringSelect:
|
|
60
|
+
InteractionClass = StringSelectMenuInteraction;
|
|
61
|
+
break;
|
|
62
|
+
case ComponentType.UserSelect:
|
|
63
|
+
InteractionClass = UserSelectMenuInteraction;
|
|
64
|
+
break;
|
|
65
|
+
case ComponentType.RoleSelect:
|
|
66
|
+
InteractionClass = RoleSelectMenuInteraction;
|
|
67
|
+
break;
|
|
68
|
+
case ComponentType.MentionableSelect:
|
|
69
|
+
InteractionClass = MentionableSelectMenuInteraction;
|
|
70
|
+
break;
|
|
71
|
+
case ComponentType.ChannelSelect:
|
|
72
|
+
InteractionClass = ChannelSelectMenuInteraction;
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
client.emit(
|
|
76
|
+
Events.Debug,
|
|
77
|
+
`[INTERACTION] Received component interaction with unknown type: ${data.data.component_type}`,
|
|
78
|
+
);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
break;
|
|
83
|
+
case InteractionType.ApplicationCommandAutocomplete:
|
|
84
|
+
InteractionClass = AutocompleteInteraction;
|
|
85
|
+
break;
|
|
86
|
+
case InteractionType.ModalSubmit:
|
|
87
|
+
InteractionClass = ModalSubmitInteraction;
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
client.emit(Events.Debug, `[INTERACTION] Received interaction with unknown type: ${data.type}`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const interaction = new InteractionClass(client, data);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Emitted when an interaction is created.
|
|
98
|
+
*
|
|
99
|
+
* @event Client#interactionCreate
|
|
100
|
+
* @param {BaseInteraction} interaction The interaction which was created
|
|
101
|
+
*/
|
|
102
|
+
client.emit(Events.InteractionCreate, interaction);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class MessageCreateAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const client = this.client;
|
|
7
|
+
const channel = this.getChannel({
|
|
8
|
+
id: data.channel_id,
|
|
9
|
+
author: data.author,
|
|
10
|
+
...('guild_id' in data && { guild_id: data.guild_id }),
|
|
11
|
+
});
|
|
12
|
+
if (channel) {
|
|
13
|
+
if (!channel.isTextBased()) return {};
|
|
14
|
+
|
|
15
|
+
if (channel.isThread()) {
|
|
16
|
+
channel.messageCount++;
|
|
17
|
+
channel.totalMessageSent++;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const existing = channel.messages.cache.get(data.id);
|
|
21
|
+
if (existing && existing.author?.id !== this.client.user.id) return { message: existing };
|
|
22
|
+
const message = existing ?? channel.messages._add(data);
|
|
23
|
+
channel.lastMessageId = data.id;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Emitted whenever a message is created.
|
|
27
|
+
*
|
|
28
|
+
* @event Client#messageCreate
|
|
29
|
+
* @param {Message} message The created message
|
|
30
|
+
*/
|
|
31
|
+
client.emit(Events.MessageCreate, message);
|
|
32
|
+
|
|
33
|
+
return { message };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class MessageDeleteAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const client = this.client;
|
|
7
|
+
const channel = this.getChannel({ id: data.channel_id, ...('guild_id' in data && { guild_id: data.guild_id }) });
|
|
8
|
+
let message;
|
|
9
|
+
if (channel) {
|
|
10
|
+
if (!channel.isTextBased()) return {};
|
|
11
|
+
|
|
12
|
+
if (channel.isThread()) channel.messageCount--;
|
|
13
|
+
|
|
14
|
+
message = this.getMessage(data, channel);
|
|
15
|
+
if (message) {
|
|
16
|
+
channel.messages.cache.delete(message.id);
|
|
17
|
+
/**
|
|
18
|
+
* Emitted whenever a message is deleted.
|
|
19
|
+
*
|
|
20
|
+
* @event Client#messageDelete
|
|
21
|
+
* @param {Message} message The deleted message
|
|
22
|
+
*/
|
|
23
|
+
client.emit(Events.MessageDelete, message);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return { message };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Collection } from '@ovencord/collection';
|
|
2
|
+
import { Events } from '../../util/Events.js';
|
|
3
|
+
import { Action } from './Action.js';
|
|
4
|
+
|
|
5
|
+
export class MessageDeleteBulkAction extends Action {
|
|
6
|
+
handle(data) {
|
|
7
|
+
const client = this.client;
|
|
8
|
+
const channel = client.channels.cache.get(data.channel_id);
|
|
9
|
+
|
|
10
|
+
if (channel) {
|
|
11
|
+
if (!channel.isTextBased()) return {};
|
|
12
|
+
|
|
13
|
+
if (channel.isThread()) channel.messageCount -= data.ids.length;
|
|
14
|
+
|
|
15
|
+
const ids = data.ids;
|
|
16
|
+
const messages = new Collection();
|
|
17
|
+
for (const id of ids) {
|
|
18
|
+
const message = this.getMessage(
|
|
19
|
+
{
|
|
20
|
+
id,
|
|
21
|
+
guild_id: data.guild_id,
|
|
22
|
+
},
|
|
23
|
+
channel,
|
|
24
|
+
false,
|
|
25
|
+
);
|
|
26
|
+
if (message) {
|
|
27
|
+
messages.set(message.id, message);
|
|
28
|
+
channel.messages.cache.delete(id);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Emitted whenever messages are deleted in bulk.
|
|
34
|
+
*
|
|
35
|
+
* @event Client#messageDeleteBulk
|
|
36
|
+
* @param {Collection<Snowflake, Message>} messages The deleted messages, mapped by their id
|
|
37
|
+
* @param {GuildTextBasedChannel} channel The channel that the messages were deleted in
|
|
38
|
+
*/
|
|
39
|
+
if (messages.size > 0) client.emit(Events.MessageBulkDelete, messages, channel);
|
|
40
|
+
return { messages };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class MessagePollVoteAddAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const channel = this.getChannel({ id: data.channel_id, ...('guild_id' in data && { guild_id: data.guild_id }) });
|
|
7
|
+
if (!channel?.isTextBased()) return false;
|
|
8
|
+
|
|
9
|
+
const message = this.getMessage(data, channel);
|
|
10
|
+
if (!message) return false;
|
|
11
|
+
|
|
12
|
+
const poll = this.getPoll(data, message, channel);
|
|
13
|
+
if (!poll) return false;
|
|
14
|
+
|
|
15
|
+
const answer = poll.answers.get(data.answer_id);
|
|
16
|
+
if (!answer) return false;
|
|
17
|
+
|
|
18
|
+
const user = this.getUser(data);
|
|
19
|
+
|
|
20
|
+
if (user) {
|
|
21
|
+
answer.voters._add(user);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
answer.voteCount++;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Emitted whenever a user votes in a poll.
|
|
28
|
+
*
|
|
29
|
+
* @event Client#messagePollVoteAdd
|
|
30
|
+
* @param {PollAnswer} pollAnswer The answer that was voted on
|
|
31
|
+
* @param {Snowflake} userId The id of the user that voted
|
|
32
|
+
*/
|
|
33
|
+
this.client.emit(Events.MessagePollVoteAdd, answer, data.user_id);
|
|
34
|
+
|
|
35
|
+
return { poll };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class MessagePollVoteRemoveAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const channel = this.getChannel({ id: data.channel_id, ...('guild_id' in data && { guild_id: data.guild_id }) });
|
|
7
|
+
if (!channel?.isTextBased()) return false;
|
|
8
|
+
|
|
9
|
+
const message = this.getMessage(data, channel);
|
|
10
|
+
if (!message) return false;
|
|
11
|
+
|
|
12
|
+
const poll = this.getPoll(data, message, channel);
|
|
13
|
+
if (!poll) return false;
|
|
14
|
+
|
|
15
|
+
const answer = poll.answers.get(data.answer_id);
|
|
16
|
+
if (!answer) return false;
|
|
17
|
+
|
|
18
|
+
answer.voters.cache.delete(data.user_id);
|
|
19
|
+
|
|
20
|
+
if (answer.voteCount > 0) {
|
|
21
|
+
answer.voteCount--;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Emitted whenever a user removes their vote in a poll.
|
|
26
|
+
*
|
|
27
|
+
* @event Client#messagePollVoteRemove
|
|
28
|
+
* @param {PollAnswer} pollAnswer The answer where the vote was removed
|
|
29
|
+
* @param {Snowflake} userId The id of the user that removed their vote
|
|
30
|
+
*/
|
|
31
|
+
this.client.emit(Events.MessagePollVoteRemove, answer, data.user_id);
|
|
32
|
+
|
|
33
|
+
return { poll };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Partials } from '../../util/Partials.js';
|
|
3
|
+
import { Action } from './Action.js';
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
{ user_id: 'id',
|
|
7
|
+
message_id: 'id',
|
|
8
|
+
emoji: { name: '�', id: null },
|
|
9
|
+
channel_id: 'id',
|
|
10
|
+
burst: boolean
|
|
11
|
+
// If originating from a guild
|
|
12
|
+
guild_id: 'id',
|
|
13
|
+
member: { ..., user: { ... } } }
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export class MessageReactionAddAction extends Action {
|
|
17
|
+
handle(data, fromStructure = false) {
|
|
18
|
+
if (!data.emoji) return false;
|
|
19
|
+
|
|
20
|
+
const user = this.getUserFromMember(data);
|
|
21
|
+
if (!user) return false;
|
|
22
|
+
|
|
23
|
+
// Verify channel
|
|
24
|
+
const channel = this.getChannel({
|
|
25
|
+
id: data.channel_id,
|
|
26
|
+
...('guild_id' in data && { guild_id: data.guild_id }),
|
|
27
|
+
user_id: data.user_id,
|
|
28
|
+
...this.spreadInjectedData(data),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
if (!channel?.isTextBased()) return false;
|
|
32
|
+
|
|
33
|
+
// Verify message
|
|
34
|
+
const message = this.getMessage(data, channel);
|
|
35
|
+
if (!message) return false;
|
|
36
|
+
|
|
37
|
+
// Verify reaction
|
|
38
|
+
const includePartial = this.client.options.partials.includes(Partials.Reaction);
|
|
39
|
+
if (message.partial && !includePartial) return false;
|
|
40
|
+
const reaction = message.reactions._add({
|
|
41
|
+
emoji: data.emoji,
|
|
42
|
+
count: message.partial ? null : 0,
|
|
43
|
+
me: user.id === this.client.user.id,
|
|
44
|
+
burst_colors: data.burst_colors,
|
|
45
|
+
});
|
|
46
|
+
if (!reaction) return false;
|
|
47
|
+
reaction._add(user, data.burst);
|
|
48
|
+
if (fromStructure) return { message, reaction, user };
|
|
49
|
+
/**
|
|
50
|
+
* Provides additional information about altered reaction
|
|
51
|
+
*
|
|
52
|
+
* @typedef {Object} MessageReactionEventDetails
|
|
53
|
+
* @property {ReactionType} type The type of the reaction
|
|
54
|
+
* @property {boolean} burst Determines whether a super reaction was used
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* Emitted whenever a reaction is added to a cached message.
|
|
58
|
+
*
|
|
59
|
+
* @event Client#messageReactionAdd
|
|
60
|
+
* @param {MessageReaction} messageReaction The reaction object
|
|
61
|
+
* @param {User} user The user that applied the guild or reaction emoji
|
|
62
|
+
* @param {MessageReactionEventDetails} details Details of adding the reaction
|
|
63
|
+
*/
|
|
64
|
+
this.client.emit(Events.MessageReactionAdd, reaction, user, { type: data.type, burst: data.burst });
|
|
65
|
+
|
|
66
|
+
return { message, reaction, user };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
{ user_id: 'id',
|
|
6
|
+
message_id: 'id',
|
|
7
|
+
emoji: { name: '�', id: null },
|
|
8
|
+
channel_id: 'id',
|
|
9
|
+
guild_id: 'id' }
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export class MessageReactionRemoveAction extends Action {
|
|
13
|
+
handle(data) {
|
|
14
|
+
if (!data.emoji) return false;
|
|
15
|
+
|
|
16
|
+
const user = this.getUser(data);
|
|
17
|
+
if (!user) return false;
|
|
18
|
+
|
|
19
|
+
// Verify channel
|
|
20
|
+
const channel = this.getChannel({
|
|
21
|
+
id: data.channel_id,
|
|
22
|
+
...('guild_id' in data && { guild_id: data.guild_id }),
|
|
23
|
+
user_id: data.user_id,
|
|
24
|
+
});
|
|
25
|
+
if (!channel?.isTextBased()) return false;
|
|
26
|
+
|
|
27
|
+
// Verify message
|
|
28
|
+
const message = this.getMessage(data, channel);
|
|
29
|
+
if (!message) return false;
|
|
30
|
+
|
|
31
|
+
// Verify reaction
|
|
32
|
+
const reaction = this.getReaction(data, message, user);
|
|
33
|
+
if (!reaction) return false;
|
|
34
|
+
reaction._remove(user, data.burst);
|
|
35
|
+
/**
|
|
36
|
+
* Emitted whenever a reaction is removed from a cached message.
|
|
37
|
+
*
|
|
38
|
+
* @event Client#messageReactionRemove
|
|
39
|
+
* @param {MessageReaction} messageReaction The reaction object
|
|
40
|
+
* @param {User} user The user whose emoji or reaction emoji was removed
|
|
41
|
+
* @param {MessageReactionEventDetails} details Details of removing the reaction
|
|
42
|
+
*/
|
|
43
|
+
this.client.emit(Events.MessageReactionRemove, reaction, user, { type: data.type, burst: data.burst });
|
|
44
|
+
|
|
45
|
+
return { message, reaction, user };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class MessageReactionRemoveAllAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
// Verify channel
|
|
7
|
+
const channel = this.getChannel({ id: data.channel_id, ...('guild_id' in data && { guild_id: data.guild_id }) });
|
|
8
|
+
if (!channel?.isTextBased()) return false;
|
|
9
|
+
|
|
10
|
+
// Verify message
|
|
11
|
+
const message = this.getMessage(data, channel);
|
|
12
|
+
if (!message) return false;
|
|
13
|
+
|
|
14
|
+
// Copy removed reactions to emit for the event.
|
|
15
|
+
const removed = message.reactions.cache.clone();
|
|
16
|
+
|
|
17
|
+
message.reactions.cache.clear();
|
|
18
|
+
this.client.emit(Events.MessageReactionRemoveAll, message, removed);
|
|
19
|
+
|
|
20
|
+
return { message };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Emitted whenever all reactions are removed from a cached message.
|
|
26
|
+
*
|
|
27
|
+
* @event Client#messageReactionRemoveAll
|
|
28
|
+
* @param {Message} message The message the reactions were removed from
|
|
29
|
+
* @param {Collection<string|Snowflake, MessageReaction>} reactions The cached message reactions that were removed.
|
|
30
|
+
*/
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Events } from '../../util/Events.js';
|
|
2
|
+
import { Action } from './Action.js';
|
|
3
|
+
|
|
4
|
+
export class MessageReactionRemoveEmojiAction extends Action {
|
|
5
|
+
handle(data) {
|
|
6
|
+
const channel = this.getChannel({ id: data.channel_id, ...('guild_id' in data && { guild_id: data.guild_id }) });
|
|
7
|
+
if (!channel?.isTextBased()) return false;
|
|
8
|
+
|
|
9
|
+
const message = this.getMessage(data, channel);
|
|
10
|
+
if (!message) return false;
|
|
11
|
+
|
|
12
|
+
const reaction = this.getReaction(data, message);
|
|
13
|
+
if (!reaction) return false;
|
|
14
|
+
if (!message.partial) message.reactions.cache.delete(reaction.emoji.id ?? reaction.emoji.name);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Emitted when a bot removes an emoji reaction from a cached message.
|
|
18
|
+
*
|
|
19
|
+
* @event Client#messageReactionRemoveEmoji
|
|
20
|
+
* @param {MessageReaction} reaction The reaction that was removed
|
|
21
|
+
*/
|
|
22
|
+
this.client.emit(Events.MessageReactionRemoveEmoji, reaction);
|
|
23
|
+
return { reaction };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Action } from './Action.js';
|
|
2
|
+
|
|
3
|
+
export class MessageUpdateAction extends Action {
|
|
4
|
+
handle(data) {
|
|
5
|
+
const channel = this.getChannel({ id: data.channel_id, ...('guild_id' in data && { guild_id: data.guild_id }) });
|
|
6
|
+
if (channel) {
|
|
7
|
+
if (!channel.isTextBased()) return {};
|
|
8
|
+
|
|
9
|
+
const { id, channel_id, guild_id, author, timestamp, type } = data;
|
|
10
|
+
const message = this.getMessage({ id, channel_id, guild_id, author, timestamp, type }, channel);
|
|
11
|
+
if (message) {
|
|
12
|
+
const old = message._update(data);
|
|
13
|
+
return {
|
|
14
|
+
old,
|
|
15
|
+
updated: message,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
}
|