discord-sb.js 1.0.0
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 +674 -0
- package/README.md +2 -0
- package/package.json +91 -0
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +86 -0
- package/src/client/Client.js +978 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +116 -0
- package/src/client/actions/ActionsManager.js +80 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +27 -0
- package/src/client/actions/AutoModerationRuleCreate.js +28 -0
- package/src/client/actions/AutoModerationRuleDelete.js +32 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +39 -0
- package/src/client/actions/ChannelUpdate.js +43 -0
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
- package/src/client/actions/GuildBanAdd.js +20 -0
- package/src/client/actions/GuildBanRemove.js +25 -0
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
- package/src/client/actions/GuildDelete.js +65 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +21 -0
- package/src/client/actions/GuildEmojiUpdate.js +20 -0
- package/src/client/actions/GuildEmojisUpdate.js +34 -0
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
- package/src/client/actions/GuildMemberRemove.js +33 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +31 -0
- package/src/client/actions/GuildRoleUpdate.js +39 -0
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
- package/src/client/actions/GuildScheduledEventCreate.js +27 -0
- package/src/client/actions/GuildScheduledEventDelete.js +31 -0
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
- package/src/client/actions/GuildStickerCreate.js +20 -0
- package/src/client/actions/GuildStickerDelete.js +21 -0
- package/src/client/actions/GuildStickerUpdate.js +20 -0
- package/src/client/actions/GuildStickersUpdate.js +34 -0
- package/src/client/actions/GuildUpdate.js +33 -0
- package/src/client/actions/InviteCreate.js +28 -0
- package/src/client/actions/InviteDelete.js +30 -0
- package/src/client/actions/MessageCreate.js +50 -0
- package/src/client/actions/MessageDelete.js +32 -0
- package/src/client/actions/MessageDeleteBulk.js +46 -0
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -0
- package/src/client/actions/MessageReactionRemove.js +50 -0
- package/src/client/actions/MessageReactionRemoveAll.js +33 -0
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
- package/src/client/actions/MessageUpdate.js +26 -0
- package/src/client/actions/PresenceUpdate.js +50 -0
- package/src/client/actions/StageInstanceCreate.js +28 -0
- package/src/client/actions/StageInstanceDelete.js +33 -0
- package/src/client/actions/StageInstanceUpdate.js +30 -0
- package/src/client/actions/ThreadCreate.js +24 -0
- package/src/client/actions/ThreadDelete.js +32 -0
- package/src/client/actions/ThreadListSync.js +59 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +34 -0
- package/src/client/actions/TypingStart.js +29 -0
- package/src/client/actions/UserUpdate.js +35 -0
- package/src/client/actions/VoiceStateUpdate.js +50 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +151 -0
- package/src/client/voice/VoiceConnection.js +1249 -0
- package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
- package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
- package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
- package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
- package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
- package/src/client/voice/networking/VoiceUDPClient.js +173 -0
- package/src/client/voice/networking/VoiceWebSocket.js +286 -0
- package/src/client/voice/player/MediaPlayer.js +321 -0
- package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
- package/src/client/voice/player/processing/IvfSplitter.js +106 -0
- package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
- package/src/client/voice/receiver/PacketHandler.js +260 -0
- package/src/client/voice/receiver/Receiver.js +96 -0
- package/src/client/voice/receiver/Recorder.js +173 -0
- package/src/client/voice/util/Function.js +116 -0
- package/src/client/voice/util/PlayInterface.js +122 -0
- package/src/client/voice/util/Secretbox.js +64 -0
- package/src/client/voice/util/Silence.js +16 -0
- package/src/client/voice/util/Socket.js +62 -0
- package/src/client/voice/util/VolumeInterface.js +104 -0
- package/src/client/websocket/WebSocketManager.js +392 -0
- package/src/client/websocket/WebSocketShard.js +907 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/READY.js +121 -0
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
- package/src/client/websocket/handlers/RESUMED.js +14 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
- package/src/client/websocket/handlers/TYPING_START.js +5 -0
- package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/index.js +84 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +217 -0
- package/src/errors/index.js +4 -0
- package/src/index.js +172 -0
- package/src/managers/ApplicationCommandManager.js +264 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
- package/src/managers/AutoModerationRuleManager.js +296 -0
- package/src/managers/BaseGuildEmojiManager.js +80 -0
- package/src/managers/BaseManager.js +19 -0
- package/src/managers/BillingManager.js +66 -0
- package/src/managers/CachedManager.js +71 -0
- package/src/managers/ChannelManager.js +148 -0
- package/src/managers/ClientUserSettingManager.js +372 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/DeveloperManager.js +254 -0
- package/src/managers/GuildBanManager.js +250 -0
- package/src/managers/GuildChannelManager.js +488 -0
- package/src/managers/GuildEmojiManager.js +171 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildForumThreadManager.js +108 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +338 -0
- package/src/managers/GuildMemberManager.js +599 -0
- package/src/managers/GuildMemberRoleManager.js +195 -0
- package/src/managers/GuildScheduledEventManager.js +314 -0
- package/src/managers/GuildSettingManager.js +155 -0
- package/src/managers/GuildStickerManager.js +179 -0
- package/src/managers/GuildTextThreadManager.js +98 -0
- package/src/managers/InteractionManager.js +39 -0
- package/src/managers/MessageManager.js +423 -0
- package/src/managers/PermissionOverwriteManager.js +164 -0
- package/src/managers/PresenceManager.js +71 -0
- package/src/managers/QuestManager.js +353 -0
- package/src/managers/ReactionManager.js +67 -0
- package/src/managers/ReactionUserManager.js +73 -0
- package/src/managers/RelationshipManager.js +278 -0
- package/src/managers/RoleManager.js +448 -0
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -0
- package/src/managers/ThreadManager.js +175 -0
- package/src/managers/ThreadMemberManager.js +186 -0
- package/src/managers/UserManager.js +136 -0
- package/src/managers/UserNoteManager.js +53 -0
- package/src/managers/VoiceStateManager.js +59 -0
- package/src/rest/APIRequest.js +154 -0
- package/src/rest/APIRouter.js +53 -0
- package/src/rest/DiscordAPIError.js +119 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +67 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +466 -0
- package/src/sharding/Shard.js +444 -0
- package/src/sharding/ShardClientUtil.js +279 -0
- package/src/sharding/ShardingManager.js +319 -0
- package/src/structures/AnonymousGuild.js +98 -0
- package/src/structures/ApplicationCommand.js +593 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
- package/src/structures/AutoModerationActionExecution.js +89 -0
- package/src/structures/AutoModerationRule.js +294 -0
- package/src/structures/AutocompleteInteraction.js +107 -0
- package/src/structures/Base.js +43 -0
- package/src/structures/BaseCommandInteraction.js +211 -0
- package/src/structures/BaseGuild.js +116 -0
- package/src/structures/BaseGuildEmoji.js +56 -0
- package/src/structures/BaseGuildTextChannel.js +191 -0
- package/src/structures/BaseGuildVoiceChannel.js +241 -0
- package/src/structures/BaseMessageComponent.js +181 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/CallState.js +63 -0
- package/src/structures/CategoryChannel.js +85 -0
- package/src/structures/Channel.js +284 -0
- package/src/structures/ClientPresence.js +77 -0
- package/src/structures/ClientUser.js +655 -0
- package/src/structures/CommandInteraction.js +41 -0
- package/src/structures/CommandInteractionOptionResolver.js +276 -0
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -0
- package/src/structures/DMChannel.js +219 -0
- package/src/structures/DirectoryChannel.js +20 -0
- package/src/structures/Emoji.js +148 -0
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -0
- package/src/structures/GroupDMChannel.js +394 -0
- package/src/structures/Guild.js +1791 -0
- package/src/structures/GuildAuditLogs.js +746 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildBoost.js +108 -0
- package/src/structures/GuildChannel.js +470 -0
- package/src/structures/GuildEmoji.js +161 -0
- package/src/structures/GuildMember.js +636 -0
- package/src/structures/GuildPreview.js +191 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +536 -0
- package/src/structures/GuildTemplate.js +236 -0
- package/src/structures/Integration.js +188 -0
- package/src/structures/IntegrationApplication.js +96 -0
- package/src/structures/Interaction.js +290 -0
- package/src/structures/InteractionCollector.js +248 -0
- package/src/structures/InteractionWebhook.js +43 -0
- package/src/structures/Invite.js +358 -0
- package/src/structures/InviteGuild.js +23 -0
- package/src/structures/InviteStageInstance.js +86 -0
- package/src/structures/MediaChannel.js +11 -0
- package/src/structures/MediaGalleryComponent.js +41 -0
- package/src/structures/MediaGalleryItem.js +47 -0
- package/src/structures/Message.js +1252 -0
- package/src/structures/MessageActionRow.js +105 -0
- package/src/structures/MessageAttachment.js +216 -0
- package/src/structures/MessageButton.js +166 -0
- package/src/structures/MessageCollector.js +146 -0
- package/src/structures/MessageComponentInteraction.js +120 -0
- package/src/structures/MessageContextMenuInteraction.js +20 -0
- package/src/structures/MessageEmbed.js +596 -0
- package/src/structures/MessageMentions.js +273 -0
- package/src/structures/MessagePayload.js +354 -0
- package/src/structures/MessageReaction.js +181 -0
- package/src/structures/MessageSelectMenu.js +141 -0
- package/src/structures/Modal.js +161 -0
- package/src/structures/ModalSubmitFieldsResolver.js +53 -0
- package/src/structures/ModalSubmitInteraction.js +119 -0
- package/src/structures/NewsChannel.js +32 -0
- package/src/structures/OAuth2Guild.js +28 -0
- package/src/structures/PermissionOverwrites.js +198 -0
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1157 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/Role.js +590 -0
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -0
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -0
- package/src/structures/StageInstance.js +208 -0
- package/src/structures/Sticker.js +310 -0
- package/src/structures/StickerPack.js +95 -0
- package/src/structures/StoreChannel.js +56 -0
- package/src/structures/Team.js +118 -0
- package/src/structures/TeamMember.js +80 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -0
- package/src/structures/ThreadChannel.js +605 -0
- package/src/structures/ThreadMember.js +105 -0
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +640 -0
- package/src/structures/UserContextMenuInteraction.js +29 -0
- package/src/structures/VoiceChannel.js +110 -0
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -0
- package/src/structures/VoiceState.js +354 -0
- package/src/structures/WebEmbed.js +373 -0
- package/src/structures/Webhook.js +478 -0
- package/src/structures/WelcomeChannel.js +60 -0
- package/src/structures/WelcomeScreen.js +48 -0
- package/src/structures/Widget.js +87 -0
- package/src/structures/WidgetMember.js +99 -0
- package/src/structures/interfaces/Application.js +953 -0
- package/src/structures/interfaces/Collector.js +300 -0
- package/src/structures/interfaces/InteractionResponses.js +313 -0
- package/src/structures/interfaces/TextBasedChannel.js +821 -0
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -0
- package/src/util/ApplicationFlags.js +76 -0
- package/src/util/AttachmentFlags.js +38 -0
- package/src/util/BitField.js +170 -0
- package/src/util/ChannelFlags.js +45 -0
- package/src/util/Constants.js +1914 -0
- package/src/util/DataResolver.js +146 -0
- package/src/util/Formatters.js +228 -0
- package/src/util/GuildMemberFlags.js +43 -0
- package/src/util/Intents.js +74 -0
- package/src/util/InviteFlags.js +34 -0
- package/src/util/LimitedCollection.js +131 -0
- package/src/util/MessageFlags.js +63 -0
- package/src/util/Options.js +358 -0
- package/src/util/Permissions.js +202 -0
- package/src/util/PremiumUsageFlags.js +31 -0
- package/src/util/PurchasedFlags.js +33 -0
- package/src/util/RemoteAuth.js +415 -0
- package/src/util/RoleFlags.js +37 -0
- package/src/util/SnowflakeUtil.js +92 -0
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +466 -0
- package/src/util/SystemChannelFlags.js +55 -0
- package/src/util/ThreadMemberFlags.js +30 -0
- package/src/util/UserFlags.js +104 -0
- package/src/util/Util.js +1048 -0
- package/typings/enums.d.ts +439 -0
- package/typings/index.d.ts +8505 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +403 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const Collector = require('./interfaces/Collector');
|
|
5
|
+
const { Events } = require('../util/Constants');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {CollectorOptions} ReactionCollectorOptions
|
|
9
|
+
* @property {number} max The maximum total amount of reactions to collect
|
|
10
|
+
* @property {number} maxEmojis The maximum number of emojis to collect
|
|
11
|
+
* @property {number} maxUsers The maximum number of users to react
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Collects reactions on messages.
|
|
16
|
+
* Will automatically stop if the message ({@link Client#event:messageDelete messageDelete} or
|
|
17
|
+
* {@link Client#event:messageDeleteBulk messageDeleteBulk}),
|
|
18
|
+
* channel ({@link Client#event:channelDelete channelDelete}),
|
|
19
|
+
* thread ({@link Client#event:threadDelete threadDelete}), or
|
|
20
|
+
* guild ({@link Client#event:guildDelete guildDelete}) is deleted.
|
|
21
|
+
* @extends {Collector}
|
|
22
|
+
*/
|
|
23
|
+
class ReactionCollector extends Collector {
|
|
24
|
+
/**
|
|
25
|
+
* @param {Message} message The message upon which to collect reactions
|
|
26
|
+
* @param {ReactionCollectorOptions} [options={}] The options to apply to this collector
|
|
27
|
+
*/
|
|
28
|
+
constructor(message, options = {}) {
|
|
29
|
+
super(message.client, options);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The message upon which to collect reactions
|
|
33
|
+
* @type {Message}
|
|
34
|
+
*/
|
|
35
|
+
this.message = message;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The users that have reacted to this message
|
|
39
|
+
* @type {Collection}
|
|
40
|
+
*/
|
|
41
|
+
this.users = new Collection();
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The total number of reactions collected
|
|
45
|
+
* @type {number}
|
|
46
|
+
*/
|
|
47
|
+
this.total = 0;
|
|
48
|
+
|
|
49
|
+
this.empty = this.empty.bind(this);
|
|
50
|
+
this._handleChannelDeletion = this._handleChannelDeletion.bind(this);
|
|
51
|
+
this._handleThreadDeletion = this._handleThreadDeletion.bind(this);
|
|
52
|
+
this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
|
|
53
|
+
this._handleMessageDeletion = this._handleMessageDeletion.bind(this);
|
|
54
|
+
|
|
55
|
+
const bulkDeleteListener = messages => {
|
|
56
|
+
if (messages.has(this.message.id)) this.stop('messageDelete');
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
this.client.incrementMaxListeners();
|
|
60
|
+
this.client.on(Events.MESSAGE_REACTION_ADD, this.handleCollect);
|
|
61
|
+
this.client.on(Events.MESSAGE_REACTION_REMOVE, this.handleDispose);
|
|
62
|
+
this.client.on(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty);
|
|
63
|
+
this.client.on(Events.MESSAGE_DELETE, this._handleMessageDeletion);
|
|
64
|
+
this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
|
65
|
+
this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
|
66
|
+
this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion);
|
|
67
|
+
this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion);
|
|
68
|
+
|
|
69
|
+
this.once('end', () => {
|
|
70
|
+
this.client.removeListener(Events.MESSAGE_REACTION_ADD, this.handleCollect);
|
|
71
|
+
this.client.removeListener(Events.MESSAGE_REACTION_REMOVE, this.handleDispose);
|
|
72
|
+
this.client.removeListener(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty);
|
|
73
|
+
this.client.removeListener(Events.MESSAGE_DELETE, this._handleMessageDeletion);
|
|
74
|
+
this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
|
75
|
+
this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
|
76
|
+
this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion);
|
|
77
|
+
this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
|
|
78
|
+
this.client.decrementMaxListeners();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
this.on('collect', (reaction, user) => {
|
|
82
|
+
/**
|
|
83
|
+
* Emitted whenever a reaction is newly created on a message. Will emit only when a new reaction is
|
|
84
|
+
* added to the message, as opposed to {@link Collector#collect} which will
|
|
85
|
+
* be emitted even when a reaction has already been added to the message.
|
|
86
|
+
* @event ReactionCollector#create
|
|
87
|
+
* @param {MessageReaction} reaction The reaction that was added
|
|
88
|
+
* @param {User} user The user that added the reaction
|
|
89
|
+
*/
|
|
90
|
+
if (reaction.count === 1) {
|
|
91
|
+
this.emit('create', reaction, user);
|
|
92
|
+
}
|
|
93
|
+
this.total++;
|
|
94
|
+
this.users.set(user.id, user);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
this.on('remove', (reaction, user) => {
|
|
98
|
+
this.total--;
|
|
99
|
+
if (!this.collected.some(r => r.users.cache.has(user.id))) this.users.delete(user.id);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Handles an incoming reaction for possible collection.
|
|
105
|
+
* @param {MessageReaction} reaction The reaction to possibly collect
|
|
106
|
+
* @param {User} user The user that added the reaction
|
|
107
|
+
* @returns {?(Snowflake|string)}
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
collect(reaction) {
|
|
111
|
+
/**
|
|
112
|
+
* Emitted whenever a reaction is collected.
|
|
113
|
+
* @event ReactionCollector#collect
|
|
114
|
+
* @param {MessageReaction} reaction The reaction that was collected
|
|
115
|
+
* @param {User} user The user that added the reaction
|
|
116
|
+
*/
|
|
117
|
+
if (reaction.message.id !== this.message.id) return null;
|
|
118
|
+
|
|
119
|
+
return ReactionCollector.key(reaction);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Handles a reaction deletion for possible disposal.
|
|
124
|
+
* @param {MessageReaction} reaction The reaction to possibly dispose of
|
|
125
|
+
* @param {User} user The user that removed the reaction
|
|
126
|
+
* @returns {?(Snowflake|string)}
|
|
127
|
+
*/
|
|
128
|
+
dispose(reaction, user) {
|
|
129
|
+
/**
|
|
130
|
+
* Emitted when the reaction had all the users removed and the `dispose` option is set to true.
|
|
131
|
+
* @event ReactionCollector#dispose
|
|
132
|
+
* @param {MessageReaction} reaction The reaction that was disposed of
|
|
133
|
+
* @param {User} user The user that removed the reaction
|
|
134
|
+
*/
|
|
135
|
+
if (reaction.message.id !== this.message.id) return null;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Emitted when the reaction had one user removed and the `dispose` option is set to true.
|
|
139
|
+
* @event ReactionCollector#remove
|
|
140
|
+
* @param {MessageReaction} reaction The reaction that was removed
|
|
141
|
+
* @param {User} user The user that removed the reaction
|
|
142
|
+
*/
|
|
143
|
+
if (this.collected.has(ReactionCollector.key(reaction)) && this.users.has(user.id)) {
|
|
144
|
+
this.emit('remove', reaction, user);
|
|
145
|
+
}
|
|
146
|
+
return reaction.count ? null : ReactionCollector.key(reaction);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Empties this reaction collector.
|
|
151
|
+
*/
|
|
152
|
+
empty() {
|
|
153
|
+
this.total = 0;
|
|
154
|
+
this.collected.clear();
|
|
155
|
+
this.users.clear();
|
|
156
|
+
this.checkEnd();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* The reason this collector has ended with, or null if it hasn't ended yet
|
|
161
|
+
* @type {?string}
|
|
162
|
+
* @readonly
|
|
163
|
+
*/
|
|
164
|
+
get endReason() {
|
|
165
|
+
if (this.options.max && this.total >= this.options.max) return 'limit';
|
|
166
|
+
if (this.options.maxEmojis && this.collected.size >= this.options.maxEmojis) return 'emojiLimit';
|
|
167
|
+
if (this.options.maxUsers && this.users.size >= this.options.maxUsers) return 'userLimit';
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Handles checking if the message has been deleted, and if so, stops the collector with the reason 'messageDelete'.
|
|
173
|
+
* @private
|
|
174
|
+
* @param {Message} message The message that was deleted
|
|
175
|
+
* @returns {void}
|
|
176
|
+
*/
|
|
177
|
+
_handleMessageDeletion(message) {
|
|
178
|
+
if (message.id === this.message.id) {
|
|
179
|
+
this.stop('messageDelete');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.
|
|
185
|
+
* @private
|
|
186
|
+
* @param {GuildChannel} channel The channel that was deleted
|
|
187
|
+
* @returns {void}
|
|
188
|
+
*/
|
|
189
|
+
_handleChannelDeletion(channel) {
|
|
190
|
+
if (channel.id === this.message.channelId || channel.threads?.cache.has(this.message.channelId)) {
|
|
191
|
+
this.stop('channelDelete');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.
|
|
197
|
+
* @private
|
|
198
|
+
* @param {ThreadChannel} thread The thread that was deleted
|
|
199
|
+
* @returns {void}
|
|
200
|
+
*/
|
|
201
|
+
_handleThreadDeletion(thread) {
|
|
202
|
+
if (thread.id === this.message.channelId) {
|
|
203
|
+
this.stop('threadDelete');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.
|
|
209
|
+
* @private
|
|
210
|
+
* @param {Guild} guild The guild that was deleted
|
|
211
|
+
* @returns {void}
|
|
212
|
+
*/
|
|
213
|
+
_handleGuildDeletion(guild) {
|
|
214
|
+
if (guild.id === this.message.guild?.id) {
|
|
215
|
+
this.stop('guildDelete');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Gets the collector key for a reaction.
|
|
221
|
+
* @param {MessageReaction} reaction The message reaction to get the key for
|
|
222
|
+
* @returns {Snowflake|string}
|
|
223
|
+
*/
|
|
224
|
+
static key(reaction) {
|
|
225
|
+
return reaction.emoji.id ?? reaction.emoji.name;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
module.exports = ReactionCollector;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Emoji } = require('./Emoji');
|
|
4
|
+
const Util = require('../util/Util');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents a limited emoji set used for both custom and unicode emojis. Custom emojis
|
|
8
|
+
* will use this class opposed to the Emoji class when the client doesn't know enough
|
|
9
|
+
* information about them.
|
|
10
|
+
* @extends {Emoji}
|
|
11
|
+
*/
|
|
12
|
+
class ReactionEmoji extends Emoji {
|
|
13
|
+
constructor(reaction, emoji) {
|
|
14
|
+
super(reaction.message.client, emoji);
|
|
15
|
+
/**
|
|
16
|
+
* The message reaction this emoji refers to
|
|
17
|
+
* @type {MessageReaction}
|
|
18
|
+
*/
|
|
19
|
+
this.reaction = reaction;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
toJSON() {
|
|
23
|
+
return Util.flatten(this, { identifier: true });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
valueOf() {
|
|
27
|
+
return this.id;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = ReactionEmoji;
|