discord-sb-v13 0.0.1-security → 2.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.
Potentially problematic release.
This version of discord-sb-v13 might be problematic. Click here for more details.
- package/LICENSE +674 -0
- package/README.md +119 -5
- package/package.json +101 -6
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +87 -0
- package/src/client/Client.js +1154 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +115 -0
- package/src/client/actions/ActionsManager.js +72 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +26 -0
- package/src/client/actions/AutoModerationRuleCreate.js +27 -0
- package/src/client/actions/AutoModerationRuleDelete.js +31 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +39 -0
- package/src/client/actions/ChannelUpdate.js +34 -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/InteractionCreate.js +115 -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/MessageReactionAdd.js +56 -0
- package/src/client/actions/MessageReactionRemove.js +45 -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 +45 -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 +57 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +51 -0
- package/src/client/websocket/WebSocketManager.js +412 -0
- package/src/client/websocket/WebSocketShard.js +908 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -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 +16 -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_APPLICATION_COMMANDS_UPDATE.js +11 -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 +46 -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_LIST_UPDATE.js +55 -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_CREATE.js +16 -0
- package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
- package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -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_ACK.js +16 -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_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 +172 -0
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +17 -0
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +15 -0
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +18 -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 +12 -0
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +9 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -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 +86 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +227 -0
- package/src/errors/index.js +4 -0
- package/src/index.js +190 -0
- package/src/main.js +42 -0
- package/src/managers/ApplicationCommandManager.js +267 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +425 -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 +139 -0
- package/src/managers/ClientUserSettingManager.js +490 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/DeveloperPortalManager.js +104 -0
- package/src/managers/GuildApplicationCommandManager.js +28 -0
- package/src/managers/GuildBanManager.js +204 -0
- package/src/managers/GuildChannelManager.js +502 -0
- package/src/managers/GuildEmojiManager.js +171 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildFolderManager.js +24 -0
- package/src/managers/GuildForumThreadManager.js +114 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +304 -0
- package/src/managers/GuildMemberManager.js +724 -0
- package/src/managers/GuildMemberRoleManager.js +191 -0
- package/src/managers/GuildScheduledEventManager.js +296 -0
- package/src/managers/GuildSettingManager.js +148 -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 +393 -0
- package/src/managers/PermissionOverwriteManager.js +166 -0
- package/src/managers/PresenceManager.js +58 -0
- package/src/managers/ReactionManager.js +67 -0
- package/src/managers/ReactionUserManager.js +71 -0
- package/src/managers/RelationshipManager.js +258 -0
- package/src/managers/RoleManager.js +352 -0
- package/src/managers/SessionManager.js +57 -0
- package/src/managers/StageInstanceManager.js +162 -0
- package/src/managers/ThreadManager.js +207 -0
- package/src/managers/ThreadMemberManager.js +186 -0
- package/src/managers/UserManager.js +150 -0
- package/src/managers/VoiceStateManager.js +37 -0
- package/src/rest/APIRequest.js +136 -0
- package/src/rest/APIRouter.js +53 -0
- package/src/rest/CaptchaSolver.js +78 -0
- package/src/rest/DiscordAPIError.js +103 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +81 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +446 -0
- package/src/sharding/Shard.js +443 -0
- package/src/sharding/ShardClientUtil.js +275 -0
- package/src/sharding/ShardingManager.js +318 -0
- package/src/structures/AnonymousGuild.js +98 -0
- package/src/structures/ApplicationCommand.js +1028 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
- package/src/structures/AutoModerationActionExecution.js +89 -0
- package/src/structures/AutoModerationRule.js +294 -0
- package/src/structures/AutocompleteInteraction.js +106 -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 +193 -0
- package/src/structures/BaseGuildVoiceChannel.js +243 -0
- package/src/structures/BaseMessageComponent.js +114 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/Call.js +58 -0
- package/src/structures/CategoryChannel.js +83 -0
- package/src/structures/Channel.js +271 -0
- package/src/structures/ClientApplication.js +204 -0
- package/src/structures/ClientPresence.js +84 -0
- package/src/structures/ClientUser.js +624 -0
- package/src/structures/CommandInteraction.js +41 -0
- package/src/structures/CommandInteractionOptionResolver.js +276 -0
- package/src/structures/ContextMenuInteraction.js +65 -0
- package/src/structures/DMChannel.js +280 -0
- package/src/structures/DeveloperPortalApplication.js +520 -0
- package/src/structures/DirectoryChannel.js +20 -0
- package/src/structures/Emoji.js +148 -0
- package/src/structures/ForumChannel.js +271 -0
- package/src/structures/Guild.js +1744 -0
- package/src/structures/GuildAuditLogs.js +734 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildBoost.js +108 -0
- package/src/structures/GuildChannel.js +454 -0
- package/src/structures/GuildEmoji.js +161 -0
- package/src/structures/GuildFolder.js +75 -0
- package/src/structures/GuildMember.js +686 -0
- package/src/structures/GuildPreview.js +191 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +441 -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 +351 -0
- package/src/structures/InteractionCollector.js +248 -0
- package/src/structures/InteractionResponse.js +114 -0
- package/src/structures/InteractionWebhook.js +43 -0
- package/src/structures/Invite.js +375 -0
- package/src/structures/InviteGuild.js +23 -0
- package/src/structures/InviteStageInstance.js +86 -0
- package/src/structures/Message.js +1188 -0
- package/src/structures/MessageActionRow.js +103 -0
- package/src/structures/MessageAttachment.js +193 -0
- package/src/structures/MessageButton.js +231 -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 +586 -0
- package/src/structures/MessageMentions.js +272 -0
- package/src/structures/MessagePayload.js +358 -0
- package/src/structures/MessageReaction.js +171 -0
- package/src/structures/MessageSelectMenu.js +391 -0
- package/src/structures/Modal.js +279 -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/PartialGroupDMChannel.js +430 -0
- package/src/structures/PermissionOverwrites.js +196 -0
- package/src/structures/Presence.js +441 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/RichPresence.js +722 -0
- package/src/structures/Role.js +515 -0
- package/src/structures/SelectMenuInteraction.js +170 -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 +167 -0
- package/src/structures/TeamMember.js +71 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextInputComponent.js +201 -0
- package/src/structures/ThreadChannel.js +626 -0
- package/src/structures/ThreadMember.js +105 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/User.js +697 -0
- package/src/structures/UserContextMenuInteraction.js +29 -0
- package/src/structures/VoiceChannel.js +110 -0
- package/src/structures/VoiceRegion.js +53 -0
- package/src/structures/VoiceState.js +306 -0
- package/src/structures/WebEmbed.js +401 -0
- package/src/structures/Webhook.js +461 -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 +190 -0
- package/src/structures/interfaces/Collector.js +300 -0
- package/src/structures/interfaces/InteractionResponses.js +313 -0
- package/src/structures/interfaces/TextBasedChannel.js +566 -0
- package/src/util/ActivityFlags.js +44 -0
- package/src/util/ApplicationFlags.js +74 -0
- package/src/util/BitField.js +170 -0
- package/src/util/ChannelFlags.js +45 -0
- package/src/util/Constants.js +1917 -0
- package/src/util/DataResolver.js +145 -0
- package/src/util/Formatters.js +214 -0
- package/src/util/GuildMemberFlags.js +43 -0
- package/src/util/Intents.js +74 -0
- package/src/util/LimitedCollection.js +131 -0
- package/src/util/MessageFlags.js +54 -0
- package/src/util/Options.js +360 -0
- package/src/util/Permissions.js +187 -0
- package/src/util/PremiumUsageFlags.js +31 -0
- package/src/util/PurchasedFlags.js +31 -0
- package/src/util/RemoteAuth.js +522 -0
- package/src/util/SnowflakeUtil.js +92 -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 +741 -0
- package/src/util/Voice.js +1456 -0
- package/src/util/arRPC/index.js +229 -0
- package/src/util/arRPC/process/detectable.json +1 -0
- package/src/util/arRPC/process/index.js +102 -0
- package/src/util/arRPC/process/native/index.js +5 -0
- package/src/util/arRPC/process/native/linux.js +37 -0
- package/src/util/arRPC/process/native/win32.js +25 -0
- package/src/util/arRPC/transports/ipc.js +281 -0
- package/src/util/arRPC/transports/websocket.js +128 -0
- package/typings/enums.d.ts +346 -0
- package/typings/index.d.ts +7725 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,103 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const BaseMessageComponent = require('./BaseMessageComponent');
|
4
|
+
const { MessageComponentTypes } = require('../util/Constants');
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Represents an action row containing message components.
|
8
|
+
* @extends {BaseMessageComponent}
|
9
|
+
*/
|
10
|
+
class MessageActionRow extends BaseMessageComponent {
|
11
|
+
/**
|
12
|
+
* Components that can be placed in an action row
|
13
|
+
* * MessageButton
|
14
|
+
* * MessageSelectMenu
|
15
|
+
* * TextInputComponent
|
16
|
+
* @typedef {MessageButton|MessageSelectMenu|TextInputComponent} MessageActionRowComponent
|
17
|
+
*/
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Options for components that can be placed in an action row
|
21
|
+
* * MessageButtonOptions
|
22
|
+
* * MessageSelectMenuOptions
|
23
|
+
* * TextInputComponentOptions
|
24
|
+
* @typedef {MessageButtonOptions|MessageSelectMenuOptions|TextInputComponentOptions} MessageActionRowComponentOptions
|
25
|
+
*/
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Data that can be resolved into components that can be placed in an action row
|
29
|
+
* * MessageActionRowComponent
|
30
|
+
* * MessageActionRowComponentOptions
|
31
|
+
* @typedef {MessageActionRowComponent|MessageActionRowComponentOptions} MessageActionRowComponentResolvable
|
32
|
+
*/
|
33
|
+
|
34
|
+
/**
|
35
|
+
* @typedef {BaseMessageComponentOptions} MessageActionRowOptions
|
36
|
+
* @property {MessageActionRowComponentResolvable[]} [components]
|
37
|
+
* The components to place in this action row
|
38
|
+
*/
|
39
|
+
|
40
|
+
/**
|
41
|
+
* @param {MessageActionRow|MessageActionRowOptions} [data={}] MessageActionRow to clone or raw data
|
42
|
+
* @param {Client} [client] The client constructing this MessageActionRow, if provided
|
43
|
+
*/
|
44
|
+
constructor(data = {}, client = null) {
|
45
|
+
super({ type: 'ACTION_ROW' });
|
46
|
+
|
47
|
+
/**
|
48
|
+
* The components in this action row
|
49
|
+
* @type {MessageActionRowComponent[]}
|
50
|
+
*/
|
51
|
+
this.components = data.components?.map(c => BaseMessageComponent.create(c, client)) ?? [];
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Adds components to the action row.
|
56
|
+
* @param {...MessageActionRowComponentResolvable[]} components The components to add
|
57
|
+
* @returns {MessageActionRow}
|
58
|
+
*/
|
59
|
+
addComponents(...components) {
|
60
|
+
this.components.push(...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));
|
61
|
+
return this;
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Sets the components of the action row.
|
66
|
+
* @param {...MessageActionRowComponentResolvable[]} components The components to set
|
67
|
+
* @returns {MessageActionRow}
|
68
|
+
*/
|
69
|
+
setComponents(...components) {
|
70
|
+
this.spliceComponents(0, this.components.length, components);
|
71
|
+
return this;
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Removes, replaces, and inserts components in the action row.
|
76
|
+
* @param {number} index The index to start at
|
77
|
+
* @param {number} deleteCount The number of components to remove
|
78
|
+
* @param {...MessageActionRowComponentResolvable[]} [components] The replacing components
|
79
|
+
* @returns {MessageActionRow}
|
80
|
+
*/
|
81
|
+
spliceComponents(index, deleteCount, ...components) {
|
82
|
+
this.components.splice(index, deleteCount, ...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));
|
83
|
+
return this;
|
84
|
+
}
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Transforms the action row to a plain object.
|
88
|
+
* @returns {APIMessageComponent} The raw data of this action row
|
89
|
+
*/
|
90
|
+
toJSON() {
|
91
|
+
return {
|
92
|
+
components: this.components.map(c => c.toJSON()),
|
93
|
+
type: MessageComponentTypes[this.type],
|
94
|
+
};
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
module.exports = MessageActionRow;
|
99
|
+
|
100
|
+
/**
|
101
|
+
* @external APIMessageComponent
|
102
|
+
* @see {@link https://discord.com/developers/docs/interactions/message-components#component-object}
|
103
|
+
*/
|
@@ -0,0 +1,193 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Util = require('../util/Util');
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Represents an attachment in a message.
|
7
|
+
*/
|
8
|
+
class MessageAttachment {
|
9
|
+
/**
|
10
|
+
* @param {BufferResolvable|Stream} attachment The file
|
11
|
+
* @param {string} [name=null] The name of the file, if any
|
12
|
+
* @param {APIAttachment} [data] Extra data
|
13
|
+
*/
|
14
|
+
constructor(attachment, name = null, data) {
|
15
|
+
this.attachment = attachment;
|
16
|
+
/**
|
17
|
+
* The name of this attachment
|
18
|
+
* @type {?string}
|
19
|
+
*/
|
20
|
+
this.name = name;
|
21
|
+
if (data) this._patch(data);
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Sets the description of this attachment.
|
26
|
+
* @param {string} description The description of the file
|
27
|
+
* @returns {MessageAttachment} This attachment
|
28
|
+
*/
|
29
|
+
setDescription(description) {
|
30
|
+
this.description = description;
|
31
|
+
return this;
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Sets the file of this attachment.
|
36
|
+
* @param {BufferResolvable|Stream} attachment The file
|
37
|
+
* @param {string} [name=null] The name of the file, if any
|
38
|
+
* @returns {MessageAttachment} This attachment
|
39
|
+
*/
|
40
|
+
setFile(attachment, name = null) {
|
41
|
+
this.attachment = attachment;
|
42
|
+
this.name = name;
|
43
|
+
return this;
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Sets the name of this attachment.
|
48
|
+
* @param {string} name The name of the file
|
49
|
+
* @returns {MessageAttachment} This attachment
|
50
|
+
*/
|
51
|
+
setName(name) {
|
52
|
+
this.name = name;
|
53
|
+
return this;
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Sets whether this attachment is a spoiler
|
58
|
+
* @param {boolean} [spoiler=true] Whether the attachment should be marked as a spoiler
|
59
|
+
* @returns {MessageAttachment} This attachment
|
60
|
+
*/
|
61
|
+
setSpoiler(spoiler = true) {
|
62
|
+
if (spoiler === this.spoiler) return this;
|
63
|
+
|
64
|
+
if (!spoiler) {
|
65
|
+
while (this.spoiler) {
|
66
|
+
this.name = this.name.slice('SPOILER_'.length);
|
67
|
+
}
|
68
|
+
return this;
|
69
|
+
}
|
70
|
+
this.name = `SPOILER_${this.name}`;
|
71
|
+
return this;
|
72
|
+
}
|
73
|
+
|
74
|
+
_patch(data) {
|
75
|
+
/**
|
76
|
+
* The attachment's id
|
77
|
+
* @type {Snowflake}
|
78
|
+
*/
|
79
|
+
this.id = data.id;
|
80
|
+
|
81
|
+
if ('size' in data) {
|
82
|
+
/**
|
83
|
+
* The size of this attachment in bytes
|
84
|
+
* @type {number}
|
85
|
+
*/
|
86
|
+
this.size = data.size;
|
87
|
+
}
|
88
|
+
|
89
|
+
if ('url' in data) {
|
90
|
+
/**
|
91
|
+
* The URL to this attachment
|
92
|
+
* @type {string}
|
93
|
+
*/
|
94
|
+
this.url = data.url;
|
95
|
+
}
|
96
|
+
|
97
|
+
if ('proxy_url' in data) {
|
98
|
+
/**
|
99
|
+
* The Proxy URL to this attachment
|
100
|
+
* @type {string}
|
101
|
+
*/
|
102
|
+
this.proxyURL = data.proxy_url;
|
103
|
+
}
|
104
|
+
|
105
|
+
if ('height' in data) {
|
106
|
+
/**
|
107
|
+
* The height of this attachment (if an image or video)
|
108
|
+
* @type {?number}
|
109
|
+
*/
|
110
|
+
this.height = data.height;
|
111
|
+
} else {
|
112
|
+
this.height ??= null;
|
113
|
+
}
|
114
|
+
|
115
|
+
if ('width' in data) {
|
116
|
+
/**
|
117
|
+
* The width of this attachment (if an image or video)
|
118
|
+
* @type {?number}
|
119
|
+
*/
|
120
|
+
this.width = data.width;
|
121
|
+
} else {
|
122
|
+
this.width ??= null;
|
123
|
+
}
|
124
|
+
|
125
|
+
if ('content_type' in data) {
|
126
|
+
/**
|
127
|
+
* The media type of this attachment
|
128
|
+
* @type {?string}
|
129
|
+
*/
|
130
|
+
this.contentType = data.content_type;
|
131
|
+
} else {
|
132
|
+
this.contentType ??= null;
|
133
|
+
}
|
134
|
+
|
135
|
+
if ('description' in data) {
|
136
|
+
/**
|
137
|
+
* The description (alt text) of this attachment
|
138
|
+
* @type {?string}
|
139
|
+
*/
|
140
|
+
this.description = data.description;
|
141
|
+
} else {
|
142
|
+
this.description ??= null;
|
143
|
+
}
|
144
|
+
|
145
|
+
/**
|
146
|
+
* Whether this attachment is ephemeral
|
147
|
+
* @type {boolean}
|
148
|
+
*/
|
149
|
+
this.ephemeral = data.ephemeral ?? false;
|
150
|
+
|
151
|
+
if ('duration_secs' in data) {
|
152
|
+
/**
|
153
|
+
* The duration of this attachment in seconds
|
154
|
+
* <info>This will only be available if the attachment is an audio file.</info>
|
155
|
+
* @type {?number}
|
156
|
+
*/
|
157
|
+
this.duration = data.duration_secs;
|
158
|
+
} else {
|
159
|
+
this.duration ??= null;
|
160
|
+
}
|
161
|
+
|
162
|
+
if ('waveform' in data) {
|
163
|
+
/**
|
164
|
+
* The base64 encoded byte array representing a sampled waveform
|
165
|
+
* <info>This will only be available if the attachment is an audio file.</info>
|
166
|
+
* @type {?string}
|
167
|
+
*/
|
168
|
+
this.waveform = data.waveform;
|
169
|
+
} else {
|
170
|
+
this.waveform ??= null;
|
171
|
+
}
|
172
|
+
}
|
173
|
+
|
174
|
+
/**
|
175
|
+
* Whether or not this attachment has been marked as a spoiler
|
176
|
+
* @type {boolean}
|
177
|
+
* @readonly
|
178
|
+
*/
|
179
|
+
get spoiler() {
|
180
|
+
return Util.basename(this.url ?? this.name).startsWith('SPOILER_');
|
181
|
+
}
|
182
|
+
|
183
|
+
toJSON() {
|
184
|
+
return Util.flatten(this);
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
module.exports = MessageAttachment;
|
189
|
+
|
190
|
+
/**
|
191
|
+
* @external APIAttachment
|
192
|
+
* @see {@link https://discord.com/developers/docs/resources/channel#attachment-object}
|
193
|
+
*/
|
@@ -0,0 +1,231 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { setTimeout } = require('node:timers');
|
4
|
+
const BaseMessageComponent = require('./BaseMessageComponent');
|
5
|
+
const { RangeError } = require('../errors');
|
6
|
+
const { MessageButtonStyles, MessageComponentTypes, InteractionTypes } = require('../util/Constants');
|
7
|
+
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
8
|
+
const Util = require('../util/Util');
|
9
|
+
const { lazy } = require('../util/Util');
|
10
|
+
const Message = lazy(() => require('../structures/Message').Message);
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Represents a button message component.
|
14
|
+
* @extends {BaseMessageComponent}
|
15
|
+
*/
|
16
|
+
class MessageButton extends BaseMessageComponent {
|
17
|
+
/**
|
18
|
+
* @typedef {BaseMessageComponentOptions} MessageButtonOptions
|
19
|
+
* @property {string} [label] The text to be displayed on this button
|
20
|
+
* @property {string} [customId] A unique string to be sent in the interaction when clicked
|
21
|
+
* @property {MessageButtonStyleResolvable} [style] The style of this button
|
22
|
+
* @property {EmojiIdentifierResolvable} [emoji] The emoji to be displayed to the left of the text
|
23
|
+
* @property {string} [url] Optional URL for link-style buttons
|
24
|
+
* @property {boolean} [disabled=false] Disables the button to prevent interactions
|
25
|
+
*/
|
26
|
+
|
27
|
+
/**
|
28
|
+
* @param {MessageButton|MessageButtonOptions} [data={}] MessageButton to clone or raw data
|
29
|
+
*/
|
30
|
+
constructor(data = {}) {
|
31
|
+
super({ type: 'BUTTON' });
|
32
|
+
|
33
|
+
this.setup(data);
|
34
|
+
}
|
35
|
+
|
36
|
+
setup(data) {
|
37
|
+
/**
|
38
|
+
* The text to be displayed on this button
|
39
|
+
* @type {?string}
|
40
|
+
*/
|
41
|
+
this.label = data.label ?? null;
|
42
|
+
|
43
|
+
/**
|
44
|
+
* A unique string to be sent in the interaction when clicked
|
45
|
+
* @type {?string}
|
46
|
+
*/
|
47
|
+
this.customId = data.custom_id ?? data.customId ?? null;
|
48
|
+
|
49
|
+
/**
|
50
|
+
* The style of this button
|
51
|
+
* @type {?MessageButtonStyle}
|
52
|
+
*/
|
53
|
+
this.style = data.style ? MessageButton.resolveStyle(data.style) : null;
|
54
|
+
|
55
|
+
/**
|
56
|
+
* Emoji for this button
|
57
|
+
* @type {?RawEmoji}
|
58
|
+
*/
|
59
|
+
this.emoji = data.emoji ? Util.resolvePartialEmoji(data.emoji) : null;
|
60
|
+
|
61
|
+
/**
|
62
|
+
* The URL this button links to, if it is a Link style button
|
63
|
+
* @type {?string}
|
64
|
+
*/
|
65
|
+
this.url = data.url ?? null;
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Whether this button is currently disabled
|
69
|
+
* @type {boolean}
|
70
|
+
*/
|
71
|
+
this.disabled = data.disabled ?? false;
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Sets the custom id for this button
|
76
|
+
* @param {string} customId A unique string to be sent in the interaction when clicked
|
77
|
+
* @returns {MessageButton}
|
78
|
+
*/
|
79
|
+
setCustomId(customId) {
|
80
|
+
this.customId = Util.verifyString(customId, RangeError, 'BUTTON_CUSTOM_ID');
|
81
|
+
return this;
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Sets the interactive status of the button
|
86
|
+
* @param {boolean} [disabled=true] Whether this button should be disabled
|
87
|
+
* @returns {MessageButton}
|
88
|
+
*/
|
89
|
+
setDisabled(disabled = true) {
|
90
|
+
this.disabled = disabled;
|
91
|
+
return this;
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Set the emoji of this button
|
96
|
+
* @param {EmojiIdentifierResolvable} emoji The emoji to be displayed on this button
|
97
|
+
* @returns {MessageButton}
|
98
|
+
*/
|
99
|
+
setEmoji(emoji) {
|
100
|
+
this.emoji = Util.resolvePartialEmoji(emoji);
|
101
|
+
return this;
|
102
|
+
}
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Sets the label of this button
|
106
|
+
* @param {string} label The text to be displayed on this button
|
107
|
+
* @returns {MessageButton}
|
108
|
+
*/
|
109
|
+
setLabel(label) {
|
110
|
+
this.label = Util.verifyString(label, RangeError, 'BUTTON_LABEL');
|
111
|
+
return this;
|
112
|
+
}
|
113
|
+
|
114
|
+
/**
|
115
|
+
* Sets the style of this button
|
116
|
+
* @param {MessageButtonStyleResolvable} style The style of this button
|
117
|
+
* @returns {MessageButton}
|
118
|
+
*/
|
119
|
+
setStyle(style) {
|
120
|
+
this.style = MessageButton.resolveStyle(style);
|
121
|
+
return this;
|
122
|
+
}
|
123
|
+
|
124
|
+
/**
|
125
|
+
* Sets the URL of this button.
|
126
|
+
* <info>MessageButton#style must be LINK when setting a URL</info>
|
127
|
+
* @param {string} url The URL of this button
|
128
|
+
* @returns {MessageButton}
|
129
|
+
*/
|
130
|
+
setURL(url) {
|
131
|
+
this.url = Util.verifyString(url, RangeError, 'BUTTON_URL');
|
132
|
+
return this;
|
133
|
+
}
|
134
|
+
|
135
|
+
/**
|
136
|
+
* Transforms the button to a plain object.
|
137
|
+
* @returns {APIMessageButton} The raw data of this button
|
138
|
+
*/
|
139
|
+
toJSON() {
|
140
|
+
return {
|
141
|
+
custom_id: this.customId,
|
142
|
+
disabled: this.disabled,
|
143
|
+
emoji: this.emoji,
|
144
|
+
label: this.label,
|
145
|
+
style: MessageButtonStyles[this.style],
|
146
|
+
type: MessageComponentTypes[this.type],
|
147
|
+
url: this.url,
|
148
|
+
};
|
149
|
+
}
|
150
|
+
|
151
|
+
/**
|
152
|
+
* Data that can be resolved to a MessageButtonStyle. This can be
|
153
|
+
* * MessageButtonStyle
|
154
|
+
* * number
|
155
|
+
* @typedef {number|MessageButtonStyle} MessageButtonStyleResolvable
|
156
|
+
*/
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Resolves the style of a button
|
160
|
+
* @param {MessageButtonStyleResolvable} style The style to resolve
|
161
|
+
* @returns {MessageButtonStyle}
|
162
|
+
* @private
|
163
|
+
*/
|
164
|
+
static resolveStyle(style) {
|
165
|
+
return typeof style === 'string' ? style : MessageButtonStyles[style];
|
166
|
+
}
|
167
|
+
// Patch Click
|
168
|
+
/**
|
169
|
+
* Click the button
|
170
|
+
* @param {Message} message Discord Message
|
171
|
+
* @returns {Promise<InteractionResponse>}
|
172
|
+
*/
|
173
|
+
async click(message) {
|
174
|
+
const nonce = SnowflakeUtil.generate();
|
175
|
+
if (!(message instanceof Message())) throw new Error('[UNKNOWN_MESSAGE] Please pass a valid Message');
|
176
|
+
if (!this.customId || this.style == MessageButtonStyles.LINK || this.disabled) return false;
|
177
|
+
const data = {
|
178
|
+
type: InteractionTypes.MESSAGE_COMPONENT,
|
179
|
+
nonce,
|
180
|
+
guild_id: message.guild?.id ?? null,
|
181
|
+
channel_id: message.channel.id,
|
182
|
+
message_id: message.id,
|
183
|
+
application_id: message.applicationId ?? message.author.id,
|
184
|
+
session_id: message.client.session_id,
|
185
|
+
message_flags: message.flags.bitfield,
|
186
|
+
data: {
|
187
|
+
component_type: MessageComponentTypes.BUTTON,
|
188
|
+
custom_id: this.customId,
|
189
|
+
},
|
190
|
+
};
|
191
|
+
await message.client.api.interactions.post({
|
192
|
+
data,
|
193
|
+
});
|
194
|
+
message.client._interactionCache.set(nonce, {
|
195
|
+
channelId: message.channelId,
|
196
|
+
guildId: message.guildId,
|
197
|
+
metadata: data,
|
198
|
+
});
|
199
|
+
return new Promise((resolve, reject) => {
|
200
|
+
const handler = data => {
|
201
|
+
timeout.refresh();
|
202
|
+
if (data.metadata.nonce !== nonce) return;
|
203
|
+
clearTimeout(timeout);
|
204
|
+
message.client.removeListener('interactionResponse', handler);
|
205
|
+
message.client.decrementMaxListeners();
|
206
|
+
if (data.status) {
|
207
|
+
resolve(data.metadata);
|
208
|
+
} else {
|
209
|
+
reject(
|
210
|
+
new Error('INTERACTION_ERROR', {
|
211
|
+
cause: data,
|
212
|
+
}),
|
213
|
+
);
|
214
|
+
}
|
215
|
+
};
|
216
|
+
const timeout = setTimeout(() => {
|
217
|
+
message.client.removeListener('interactionResponse', handler);
|
218
|
+
message.client.decrementMaxListeners();
|
219
|
+
reject(
|
220
|
+
new Error('INTERACTION_TIMEOUT', {
|
221
|
+
cause: data,
|
222
|
+
}),
|
223
|
+
);
|
224
|
+
}, message.client.options.interactionTimeout).unref();
|
225
|
+
message.client.incrementMaxListeners();
|
226
|
+
message.client.on('interactionResponse', handler);
|
227
|
+
});
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
module.exports = MessageButton;
|
@@ -0,0 +1,146 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Collector = require('./interfaces/Collector');
|
4
|
+
const { Events } = require('../util/Constants');
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @typedef {CollectorOptions} MessageCollectorOptions
|
8
|
+
* @property {number} max The maximum amount of messages to collect
|
9
|
+
* @property {number} maxProcessed The maximum amount of messages to process
|
10
|
+
*/
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Collects messages on a channel.
|
14
|
+
* Will automatically stop if the channel ({@link Client#event:channelDelete channelDelete}),
|
15
|
+
* thread ({@link Client#event:threadDelete threadDelete}), or
|
16
|
+
* guild ({@link Client#event:guildDelete guildDelete}) is deleted.
|
17
|
+
* @extends {Collector}
|
18
|
+
*/
|
19
|
+
class MessageCollector extends Collector {
|
20
|
+
/**
|
21
|
+
* @param {TextBasedChannels} channel The channel
|
22
|
+
* @param {MessageCollectorOptions} options The options to be applied to this collector
|
23
|
+
* @emits MessageCollector#message
|
24
|
+
*/
|
25
|
+
constructor(channel, options = {}) {
|
26
|
+
super(channel.client, options);
|
27
|
+
|
28
|
+
/**
|
29
|
+
* The channel
|
30
|
+
* @type {TextBasedChannels}
|
31
|
+
*/
|
32
|
+
this.channel = channel;
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Total number of messages that were received in the channel during message collection
|
36
|
+
* @type {number}
|
37
|
+
*/
|
38
|
+
this.received = 0;
|
39
|
+
|
40
|
+
const bulkDeleteListener = messages => {
|
41
|
+
for (const message of messages.values()) this.handleDispose(message);
|
42
|
+
};
|
43
|
+
|
44
|
+
this._handleChannelDeletion = this._handleChannelDeletion.bind(this);
|
45
|
+
this._handleThreadDeletion = this._handleThreadDeletion.bind(this);
|
46
|
+
this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
|
47
|
+
|
48
|
+
this.client.incrementMaxListeners();
|
49
|
+
this.client.on(Events.MESSAGE_CREATE, this.handleCollect);
|
50
|
+
this.client.on(Events.MESSAGE_DELETE, this.handleDispose);
|
51
|
+
this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
52
|
+
this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
53
|
+
this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion);
|
54
|
+
this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion);
|
55
|
+
|
56
|
+
this.once('end', () => {
|
57
|
+
this.client.removeListener(Events.MESSAGE_CREATE, this.handleCollect);
|
58
|
+
this.client.removeListener(Events.MESSAGE_DELETE, this.handleDispose);
|
59
|
+
this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
60
|
+
this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
61
|
+
this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion);
|
62
|
+
this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
|
63
|
+
this.client.decrementMaxListeners();
|
64
|
+
});
|
65
|
+
}
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Handles a message for possible collection.
|
69
|
+
* @param {Message} message The message that could be collected
|
70
|
+
* @returns {?Snowflake}
|
71
|
+
* @private
|
72
|
+
*/
|
73
|
+
collect(message) {
|
74
|
+
/**
|
75
|
+
* Emitted whenever a message is collected.
|
76
|
+
* @event MessageCollector#collect
|
77
|
+
* @param {Message} message The message that was collected
|
78
|
+
*/
|
79
|
+
if (message.channelId !== this.channel.id) return null;
|
80
|
+
this.received++;
|
81
|
+
return message.id;
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Handles a message for possible disposal.
|
86
|
+
* @param {Message} message The message that could be disposed of
|
87
|
+
* @returns {?Snowflake}
|
88
|
+
*/
|
89
|
+
dispose(message) {
|
90
|
+
/**
|
91
|
+
* Emitted whenever a message is disposed of.
|
92
|
+
* @event MessageCollector#dispose
|
93
|
+
* @param {Message} message The message that was disposed of
|
94
|
+
*/
|
95
|
+
return message.channelId === this.channel.id ? message.id : null;
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* The reason this collector has ended with, or null if it hasn't ended yet
|
100
|
+
* @type {?string}
|
101
|
+
* @readonly
|
102
|
+
*/
|
103
|
+
get endReason() {
|
104
|
+
if (this.options.max && this.collected.size >= this.options.max) return 'limit';
|
105
|
+
if (this.options.maxProcessed && this.received === this.options.maxProcessed) return 'processedLimit';
|
106
|
+
return null;
|
107
|
+
}
|
108
|
+
|
109
|
+
/**
|
110
|
+
* Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.
|
111
|
+
* @private
|
112
|
+
* @param {GuildChannel} channel The channel that was deleted
|
113
|
+
* @returns {void}
|
114
|
+
*/
|
115
|
+
_handleChannelDeletion(channel) {
|
116
|
+
if (channel.id === this.channel.id || channel.id === this.channel.parentId) {
|
117
|
+
this.stop('channelDelete');
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
/**
|
122
|
+
* Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.
|
123
|
+
* @private
|
124
|
+
* @param {ThreadChannel} thread The thread that was deleted
|
125
|
+
* @returns {void}
|
126
|
+
*/
|
127
|
+
_handleThreadDeletion(thread) {
|
128
|
+
if (thread.id === this.channel.id) {
|
129
|
+
this.stop('threadDelete');
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.
|
135
|
+
* @private
|
136
|
+
* @param {Guild} guild The guild that was deleted
|
137
|
+
* @returns {void}
|
138
|
+
*/
|
139
|
+
_handleGuildDeletion(guild) {
|
140
|
+
if (guild.id === this.channel.guild?.id) {
|
141
|
+
this.stop('guildDelete');
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
module.exports = MessageCollector;
|