djs-selfbot-v13 3.1.8 → 3.7.1
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 +1 -1
- package/README.md +48 -37
- package/package.json +44 -26
- package/src/WebSocket.js +39 -39
- package/src/client/BaseClient.js +86 -86
- package/src/client/Client.js +934 -765
- package/src/client/WebhookClient.js +61 -61
- package/src/client/actions/Action.js +116 -120
- package/src/client/actions/ActionsManager.js +80 -78
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -34
- package/src/client/actions/AutoModerationActionExecution.js +27 -27
- package/src/client/actions/AutoModerationRuleCreate.js +28 -28
- package/src/client/actions/AutoModerationRuleDelete.js +32 -32
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -30
- package/src/client/actions/ChannelCreate.js +23 -23
- package/src/client/actions/ChannelDelete.js +39 -39
- package/src/client/actions/ChannelUpdate.js +43 -43
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -29
- package/src/client/actions/GuildBanAdd.js +20 -20
- package/src/client/actions/GuildBanRemove.js +25 -25
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -21
- package/src/client/actions/GuildDelete.js +65 -65
- package/src/client/actions/GuildEmojiCreate.js +20 -20
- package/src/client/actions/GuildEmojiDelete.js +21 -21
- package/src/client/actions/GuildEmojiUpdate.js +20 -20
- package/src/client/actions/GuildEmojisUpdate.js +34 -34
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -19
- package/src/client/actions/GuildMemberRemove.js +33 -33
- package/src/client/actions/GuildMemberUpdate.js +44 -44
- package/src/client/actions/GuildRoleCreate.js +25 -25
- package/src/client/actions/GuildRoleDelete.js +31 -31
- package/src/client/actions/GuildRoleUpdate.js +39 -39
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -21
- package/src/client/actions/GuildScheduledEventCreate.js +27 -27
- package/src/client/actions/GuildScheduledEventDelete.js +31 -31
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -30
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -32
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -32
- package/src/client/actions/GuildStickerCreate.js +20 -20
- package/src/client/actions/GuildStickerDelete.js +21 -21
- package/src/client/actions/GuildStickerUpdate.js +20 -20
- package/src/client/actions/GuildStickersUpdate.js +34 -34
- package/src/client/actions/GuildUpdate.js +33 -33
- package/src/client/actions/InviteCreate.js +28 -28
- package/src/client/actions/InviteDelete.js +30 -30
- package/src/client/actions/MessageCreate.js +50 -46
- package/src/client/actions/MessageDelete.js +32 -32
- package/src/client/actions/MessageDeleteBulk.js +46 -46
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -56
- package/src/client/actions/MessageReactionRemove.js +50 -45
- package/src/client/actions/MessageReactionRemoveAll.js +33 -33
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -28
- package/src/client/actions/MessageUpdate.js +26 -26
- package/src/client/actions/PresenceUpdate.js +50 -46
- package/src/client/actions/StageInstanceCreate.js +28 -28
- package/src/client/actions/StageInstanceDelete.js +33 -33
- package/src/client/actions/StageInstanceUpdate.js +30 -30
- package/src/client/actions/ThreadCreate.js +24 -24
- package/src/client/actions/ThreadDelete.js +32 -32
- package/src/client/actions/ThreadListSync.js +59 -59
- package/src/client/actions/ThreadMemberUpdate.js +30 -30
- package/src/client/actions/ThreadMembersUpdate.js +34 -34
- package/src/client/actions/TypingStart.js +29 -29
- package/src/client/actions/UserUpdate.js +35 -35
- package/src/client/actions/VoiceStateUpdate.js +50 -57
- package/src/client/actions/WebhooksUpdate.js +20 -20
- package/src/client/voice/ClientVoiceManager.js +151 -51
- 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 -392
- package/src/client/websocket/WebSocketShard.js +907 -906
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -18
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -20
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -20
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/CALL_CREATE.js +14 -14
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -11
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -11
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -22
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -19
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -16
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -16
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_CREATE.js +52 -53
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -39
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -20
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -5
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -12
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -5
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -5
- 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 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -16
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/READY.js +121 -80
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -19
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -17
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -41
- package/src/client/websocket/handlers/RESUMED.js +14 -14
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -5
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -16
- package/src/client/websocket/handlers/TYPING_START.js +5 -5
- package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -6
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -78
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -12
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -6
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/index.js +84 -81
- package/src/errors/DJSError.js +61 -61
- package/src/errors/Messages.js +217 -182
- package/src/errors/index.js +4 -4
- package/src/index.js +172 -158
- package/src/managers/ApplicationCommandManager.js +264 -264
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -417
- package/src/managers/AutoModerationRuleManager.js +296 -296
- package/src/managers/BaseGuildEmojiManager.js +80 -80
- package/src/managers/BaseManager.js +19 -19
- package/src/managers/BillingManager.js +66 -66
- package/src/managers/CachedManager.js +71 -71
- package/src/managers/ChannelManager.js +148 -138
- package/src/managers/ClientUserSettingManager.js +372 -372
- package/src/managers/DataManager.js +61 -61
- package/src/managers/GuildBanManager.js +250 -204
- package/src/managers/GuildChannelManager.js +488 -504
- package/src/managers/GuildEmojiManager.js +171 -171
- package/src/managers/GuildEmojiRoleManager.js +118 -118
- package/src/managers/GuildForumThreadManager.js +108 -108
- package/src/managers/GuildInviteManager.js +213 -213
- package/src/managers/GuildManager.js +338 -304
- package/src/managers/GuildMemberManager.js +599 -593
- package/src/managers/GuildMemberRoleManager.js +195 -191
- package/src/managers/GuildScheduledEventManager.js +314 -296
- package/src/managers/GuildSettingManager.js +155 -155
- package/src/managers/GuildStickerManager.js +179 -179
- package/src/managers/GuildTextThreadManager.js +98 -98
- package/src/managers/InteractionManager.js +39 -39
- package/src/managers/MessageManager.js +423 -391
- package/src/managers/PermissionOverwriteManager.js +164 -166
- package/src/managers/PresenceManager.js +71 -58
- package/src/managers/ReactionManager.js +67 -67
- package/src/managers/ReactionUserManager.js +73 -71
- package/src/managers/RelationshipManager.js +278 -265
- package/src/managers/RoleManager.js +448 -352
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -162
- package/src/managers/ThreadManager.js +175 -174
- package/src/managers/ThreadMemberManager.js +186 -186
- package/src/managers/UserManager.js +136 -146
- package/src/managers/UserNoteManager.js +53 -53
- package/src/managers/VoiceStateManager.js +59 -37
- package/src/rest/APIRequest.js +154 -154
- package/src/rest/APIRouter.js +53 -53
- package/src/rest/DiscordAPIError.js +119 -104
- package/src/rest/HTTPError.js +62 -62
- package/src/rest/RESTManager.js +67 -62
- package/src/rest/RateLimitError.js +55 -55
- package/src/rest/RequestHandler.js +466 -444
- package/src/sharding/Shard.js +444 -443
- package/src/sharding/ShardClientUtil.js +279 -275
- package/src/sharding/ShardingManager.js +319 -318
- package/src/structures/AnonymousGuild.js +98 -98
- package/src/structures/ApplicationCommand.js +593 -593
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -48
- package/src/structures/AutoModerationActionExecution.js +89 -89
- package/src/structures/AutoModerationRule.js +294 -294
- package/src/structures/AutocompleteInteraction.js +107 -107
- package/src/structures/Base.js +43 -43
- package/src/structures/BaseCommandInteraction.js +211 -211
- package/src/structures/BaseGuild.js +116 -116
- package/src/structures/BaseGuildEmoji.js +56 -56
- package/src/structures/BaseGuildTextChannel.js +191 -191
- package/src/structures/BaseGuildVoiceChannel.js +241 -241
- package/src/structures/BaseMessageComponent.js +181 -114
- package/src/structures/ButtonInteraction.js +11 -11
- package/src/structures/CallState.js +63 -63
- package/src/structures/CategoryChannel.js +85 -85
- package/src/structures/Channel.js +284 -270
- package/src/structures/ClientPresence.js +77 -88
- package/src/structures/ClientUser.js +479 -450
- package/src/structures/CommandInteraction.js +41 -41
- package/src/structures/CommandInteractionOptionResolver.js +276 -276
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -65
- package/src/structures/DMChannel.js +219 -217
- package/src/structures/DirectoryChannel.js +20 -20
- package/src/structures/Emoji.js +148 -148
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -261
- package/src/structures/GroupDMChannel.js +394 -387
- package/src/structures/Guild.js +1643 -1608
- package/src/structures/GuildAuditLogs.js +746 -729
- package/src/structures/GuildBan.js +59 -59
- package/src/structures/GuildBoost.js +108 -108
- package/src/structures/GuildChannel.js +470 -468
- package/src/structures/GuildEmoji.js +161 -161
- package/src/structures/GuildMember.js +636 -568
- package/src/structures/GuildPreview.js +191 -191
- package/src/structures/GuildPreviewEmoji.js +27 -27
- package/src/structures/GuildScheduledEvent.js +536 -441
- package/src/structures/GuildTemplate.js +236 -236
- package/src/structures/Integration.js +188 -188
- package/src/structures/IntegrationApplication.js +96 -96
- package/src/structures/Interaction.js +290 -290
- package/src/structures/InteractionCollector.js +248 -248
- package/src/structures/InteractionWebhook.js +43 -43
- package/src/structures/Invite.js +358 -358
- package/src/structures/InviteGuild.js +23 -23
- package/src/structures/InviteStageInstance.js +86 -86
- 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 -1236
- package/src/structures/MessageActionRow.js +105 -103
- package/src/structures/MessageAttachment.js +216 -204
- package/src/structures/MessageButton.js +166 -165
- package/src/structures/MessageCollector.js +146 -146
- package/src/structures/MessageComponentInteraction.js +120 -120
- package/src/structures/MessageContextMenuInteraction.js +20 -20
- package/src/structures/MessageEmbed.js +596 -586
- package/src/structures/MessageMentions.js +273 -273
- package/src/structures/MessagePayload.js +354 -316
- package/src/structures/MessageReaction.js +181 -171
- package/src/structures/MessageSelectMenu.js +141 -140
- package/src/structures/Modal.js +161 -174
- package/src/structures/ModalSubmitFieldsResolver.js +53 -53
- package/src/structures/ModalSubmitInteraction.js +119 -119
- package/src/structures/NewsChannel.js +32 -32
- package/src/structures/OAuth2Guild.js +28 -28
- package/src/structures/PermissionOverwrites.js +198 -196
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1105 -443
- package/src/structures/ReactionCollector.js +229 -229
- package/src/structures/ReactionEmoji.js +31 -31
- package/src/structures/Role.js +590 -531
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -21
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -104
- package/src/structures/StageInstance.js +208 -208
- package/src/structures/Sticker.js +310 -310
- package/src/structures/StickerPack.js +95 -95
- package/src/structures/StoreChannel.js +56 -56
- package/src/structures/Team.js +118 -118
- package/src/structures/TeamMember.js +80 -71
- package/src/structures/TextChannel.js +33 -33
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -131
- package/src/structures/ThreadChannel.js +605 -607
- package/src/structures/ThreadMember.js +105 -105
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -74
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +640 -509
- package/src/structures/UserContextMenuInteraction.js +29 -29
- package/src/structures/VoiceChannel.js +110 -110
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -53
- package/src/structures/VoiceState.js +354 -341
- package/src/structures/WebEmbed.js +373 -373
- package/src/structures/Webhook.js +478 -467
- package/src/structures/WelcomeChannel.js +60 -60
- package/src/structures/WelcomeScreen.js +48 -48
- package/src/structures/Widget.js +87 -87
- package/src/structures/WidgetMember.js +99 -99
- package/src/structures/interfaces/Application.js +825 -313
- package/src/structures/interfaces/Collector.js +300 -300
- package/src/structures/interfaces/InteractionResponses.js +313 -313
- package/src/structures/interfaces/TextBasedChannel.js +759 -721
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -44
- package/src/util/ApplicationFlags.js +76 -76
- package/src/util/AttachmentFlags.js +38 -38
- package/src/util/BitField.js +170 -170
- package/src/util/ChannelFlags.js +45 -45
- package/src/util/Constants.js +1914 -1760
- package/src/util/DataResolver.js +146 -145
- package/src/util/Formatters.js +228 -228
- package/src/util/GuildMemberFlags.js +43 -43
- package/src/util/Intents.js +74 -74
- package/src/util/InviteFlags.js +34 -29
- package/src/util/LimitedCollection.js +131 -131
- package/src/util/MessageFlags.js +63 -54
- package/src/util/Options.js +358 -342
- package/src/util/Permissions.js +202 -192
- package/src/util/PremiumUsageFlags.js +31 -31
- package/src/util/PurchasedFlags.js +33 -33
- package/src/util/RemoteAuth.js +382 -379
- package/src/util/RoleFlags.js +37 -37
- package/src/util/SnowflakeUtil.js +92 -92
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +466 -466
- package/src/util/SystemChannelFlags.js +55 -55
- package/src/util/ThreadMemberFlags.js +30 -30
- package/src/util/UserFlags.js +104 -104
- package/src/util/Util.js +1048 -803
- package/typings/enums.d.ts +439 -291
- package/typings/index.d.ts +8247 -7390
- package/typings/rawDataTypes.d.ts +403 -342
- package/src/structures/RichPresence.js +0 -702
|
@@ -1,171 +1,181 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const GuildEmoji = require('./GuildEmoji');
|
|
4
|
-
const ReactionEmoji = require('./ReactionEmoji');
|
|
5
|
-
const ReactionUserManager = require('../managers/ReactionUserManager');
|
|
6
|
-
const Util = require('../util/Util');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Represents a reaction to a message.
|
|
10
|
-
*/
|
|
11
|
-
class MessageReaction {
|
|
12
|
-
constructor(client, data, message) {
|
|
13
|
-
/**
|
|
14
|
-
* The client that instantiated this message reaction
|
|
15
|
-
* @name MessageReaction#client
|
|
16
|
-
* @type {Client}
|
|
17
|
-
* @readonly
|
|
18
|
-
*/
|
|
19
|
-
Object.defineProperty(this, 'client', { value: client });
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* The message that this reaction refers to
|
|
23
|
-
* @type {Message}
|
|
24
|
-
*/
|
|
25
|
-
this.message = message;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Whether the client has given this reaction
|
|
29
|
-
* @type {boolean}
|
|
30
|
-
*/
|
|
31
|
-
this.me = data.me
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* @type {boolean}
|
|
36
|
-
*/
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* A manager of the users that have given this reaction
|
|
41
|
-
* @type {ReactionUserManager}
|
|
42
|
-
*/
|
|
43
|
-
this.users = new ReactionUserManager(this, this.me ? [client.user] : []);
|
|
44
|
-
|
|
45
|
-
this._emoji = new ReactionEmoji(this, data.emoji);
|
|
46
|
-
|
|
47
|
-
this.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
*
|
|
79
|
-
* @
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
*
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return this;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const GuildEmoji = require('./GuildEmoji');
|
|
4
|
+
const ReactionEmoji = require('./ReactionEmoji');
|
|
5
|
+
const ReactionUserManager = require('../managers/ReactionUserManager');
|
|
6
|
+
const Util = require('../util/Util');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Represents a reaction to a message.
|
|
10
|
+
*/
|
|
11
|
+
class MessageReaction {
|
|
12
|
+
constructor(client, data, message) {
|
|
13
|
+
/**
|
|
14
|
+
* The client that instantiated this message reaction
|
|
15
|
+
* @name MessageReaction#client
|
|
16
|
+
* @type {Client}
|
|
17
|
+
* @readonly
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(this, 'client', { value: client });
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The message that this reaction refers to
|
|
23
|
+
* @type {Message}
|
|
24
|
+
*/
|
|
25
|
+
this.message = message;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Whether the client has given this reaction
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
*/
|
|
31
|
+
this.me = data.me;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Whether the client has super-reacted using this emoji
|
|
35
|
+
* @type {boolean}
|
|
36
|
+
*/
|
|
37
|
+
this.meBurst = Boolean(data.me_burst);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A manager of the users that have given this reaction
|
|
41
|
+
* @type {ReactionUserManager}
|
|
42
|
+
*/
|
|
43
|
+
this.users = new ReactionUserManager(this, this.me ? [client.user] : []);
|
|
44
|
+
|
|
45
|
+
this._emoji = new ReactionEmoji(this, data.emoji);
|
|
46
|
+
|
|
47
|
+
this.burstColors = null;
|
|
48
|
+
|
|
49
|
+
this._patch(data);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
_patch(data) {
|
|
53
|
+
if (data.burst_colors) {
|
|
54
|
+
/**
|
|
55
|
+
* Hexadecimal colors used for this super reaction
|
|
56
|
+
* @type {?string[]}
|
|
57
|
+
*/
|
|
58
|
+
this.burstColors = data.burst_colors;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if ('count' in data) {
|
|
62
|
+
/**
|
|
63
|
+
* The number of people that have given the same reaction
|
|
64
|
+
* @type {?number}
|
|
65
|
+
*/
|
|
66
|
+
this.count ??= data.count;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if ('count_details' in data) {
|
|
70
|
+
/**
|
|
71
|
+
* The reaction count details object contains information about super and normal reaction counts.
|
|
72
|
+
* @typedef {Object} ReactionCountDetailsData
|
|
73
|
+
* @property {number} burst Count of super reactions
|
|
74
|
+
* @property {number} normal Count of normal reactions
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The reaction count details object contains information about super and normal reaction counts.
|
|
79
|
+
* @type {ReactionCountDetailsData}
|
|
80
|
+
*/
|
|
81
|
+
this.countDetails = {
|
|
82
|
+
burst: data.count_details.burst,
|
|
83
|
+
normal: data.count_details.normal,
|
|
84
|
+
};
|
|
85
|
+
} else {
|
|
86
|
+
this.countDetails ??= { burst: 0, normal: 0 };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Removes all users from this reaction.
|
|
92
|
+
* @returns {Promise<MessageReaction>}
|
|
93
|
+
*/
|
|
94
|
+
async remove() {
|
|
95
|
+
await this.client.api
|
|
96
|
+
.channels(this.message.channelId)
|
|
97
|
+
.messages(this.message.id)
|
|
98
|
+
.reactions(this._emoji.identifier)
|
|
99
|
+
.delete();
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The emoji of this reaction. Either a {@link GuildEmoji} object for known custom emojis, or a {@link ReactionEmoji}
|
|
105
|
+
* object which has fewer properties. Whatever the prototype of the emoji, it will still have
|
|
106
|
+
* `name`, `id`, `identifier` and `toString()`
|
|
107
|
+
* @type {GuildEmoji|ReactionEmoji}
|
|
108
|
+
* @readonly
|
|
109
|
+
*/
|
|
110
|
+
get emoji() {
|
|
111
|
+
if (this._emoji instanceof GuildEmoji) return this._emoji;
|
|
112
|
+
// Check to see if the emoji has become known to the client
|
|
113
|
+
if (this._emoji.id) {
|
|
114
|
+
const emojis = this.message.client.emojis.cache;
|
|
115
|
+
if (emojis.has(this._emoji.id)) {
|
|
116
|
+
const emoji = emojis.get(this._emoji.id);
|
|
117
|
+
this._emoji = emoji;
|
|
118
|
+
return emoji;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return this._emoji;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Whether or not this reaction is a partial
|
|
126
|
+
* @type {boolean}
|
|
127
|
+
* @readonly
|
|
128
|
+
*/
|
|
129
|
+
get partial() {
|
|
130
|
+
return this.count === null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Fetch this reaction.
|
|
135
|
+
* @returns {Promise<MessageReaction>}
|
|
136
|
+
*/
|
|
137
|
+
async fetch() {
|
|
138
|
+
const message = await this.message.fetch();
|
|
139
|
+
const existing = message.reactions.cache.get(this.emoji.id ?? this.emoji.name);
|
|
140
|
+
// The reaction won't get set when it has been completely removed
|
|
141
|
+
this._patch(existing ?? { count: 0 });
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
toJSON() {
|
|
146
|
+
return Util.flatten(this, { emoji: 'emojiId', message: 'messageId' });
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
_add(user, burst) {
|
|
150
|
+
if (this.partial) return;
|
|
151
|
+
this.users.cache.set(user.id, user);
|
|
152
|
+
if (!this.me || user.id !== this.message.client.user.id || this.count === 0) {
|
|
153
|
+
this.count++;
|
|
154
|
+
if (burst) this.countDetails.burst++;
|
|
155
|
+
else this.countDetails.normal++;
|
|
156
|
+
}
|
|
157
|
+
if (user.id === this.message.client.user.id) {
|
|
158
|
+
if (burst) this.meBurst = true;
|
|
159
|
+
else this.me = true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
_remove(user, burst) {
|
|
164
|
+
if (this.partial) return;
|
|
165
|
+
this.users.cache.delete(user.id);
|
|
166
|
+
if (!this.me || user.id !== this.message.client.user.id) {
|
|
167
|
+
this.count--;
|
|
168
|
+
if (burst) this.countDetails.burst--;
|
|
169
|
+
else this.countDetails.normal--;
|
|
170
|
+
}
|
|
171
|
+
if (user.id === this.message.client.user.id) {
|
|
172
|
+
if (burst) this.meBurst = false;
|
|
173
|
+
else this.me = false;
|
|
174
|
+
}
|
|
175
|
+
if (this.count <= 0 && this.users.cache.size === 0) {
|
|
176
|
+
this.message.reactions.cache.delete(this.emoji.id ?? this.emoji.name);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
module.exports = MessageReaction;
|
|
@@ -1,140 +1,141 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const BaseMessageComponent = require('./BaseMessageComponent');
|
|
4
|
-
const { ChannelTypes, MessageComponentTypes } = require('../util/Constants');
|
|
5
|
-
const Util = require('../util/Util');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represents a select menu message component
|
|
9
|
-
* @extends {BaseMessageComponent}
|
|
10
|
-
*/
|
|
11
|
-
class MessageSelectMenu extends BaseMessageComponent {
|
|
12
|
-
/**
|
|
13
|
-
* @typedef {BaseMessageComponentOptions} MessageSelectMenuOptions
|
|
14
|
-
* @property {string} [customId] A unique string to be sent in the interaction when clicked
|
|
15
|
-
* @property {string} [placeholder] Custom placeholder text to display when nothing is selected
|
|
16
|
-
* @property {number} [minValues] The minimum number of selections required
|
|
17
|
-
* @property {number} [maxValues] The maximum number of selections allowed
|
|
18
|
-
* @property {MessageSelectOption[]} [options] Options for the select menu
|
|
19
|
-
* @property {boolean} [disabled=false] Disables the select menu to prevent interactions
|
|
20
|
-
* @property {ChannelType[]} [channelTypes] List of channel types to include in the ChannelSelect component
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @typedef {Object} MessageSelectOption
|
|
25
|
-
* @property {string} label The text to be displayed on this option
|
|
26
|
-
* @property {string} value The value to be sent for this option
|
|
27
|
-
* @property {?string} description Optional description to show for this option
|
|
28
|
-
* @property {?RawEmoji} emoji Emoji to display for this option
|
|
29
|
-
* @property {boolean} default Render this option as the default selection
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @typedef {Object} MessageSelectOptionData
|
|
34
|
-
* @property {string} label The text to be displayed on this option
|
|
35
|
-
* @property {string} value The value to be sent for this option
|
|
36
|
-
* @property {string} [description] Optional description to show for this option
|
|
37
|
-
* @property {EmojiIdentifierResolvable} [emoji] Emoji to display for this option
|
|
38
|
-
* @property {boolean} [default] Render this option as the default selection
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* @param {MessageSelectMenu|MessageSelectMenuOptions} [data={}] MessageSelectMenu to clone or raw data
|
|
43
|
-
*/
|
|
44
|
-
constructor(data = {}) {
|
|
45
|
-
super({ type: BaseMessageComponent.resolveType(data.type) ?? 'STRING_SELECT' });
|
|
46
|
-
|
|
47
|
-
this.setup(data);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
setup(data) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
*
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
*
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
*
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
*
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
*
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
*
|
|
117
|
-
* @
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
*
|
|
133
|
-
* @
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BaseMessageComponent = require('./BaseMessageComponent');
|
|
4
|
+
const { ChannelTypes, MessageComponentTypes } = require('../util/Constants');
|
|
5
|
+
const Util = require('../util/Util');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Represents a select menu message component
|
|
9
|
+
* @extends {BaseMessageComponent}
|
|
10
|
+
*/
|
|
11
|
+
class MessageSelectMenu extends BaseMessageComponent {
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {BaseMessageComponentOptions} MessageSelectMenuOptions
|
|
14
|
+
* @property {string} [customId] A unique string to be sent in the interaction when clicked
|
|
15
|
+
* @property {string} [placeholder] Custom placeholder text to display when nothing is selected
|
|
16
|
+
* @property {number} [minValues] The minimum number of selections required
|
|
17
|
+
* @property {number} [maxValues] The maximum number of selections allowed
|
|
18
|
+
* @property {MessageSelectOption[]} [options] Options for the select menu
|
|
19
|
+
* @property {boolean} [disabled=false] Disables the select menu to prevent interactions
|
|
20
|
+
* @property {ChannelType[]} [channelTypes] List of channel types to include in the ChannelSelect component
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @typedef {Object} MessageSelectOption
|
|
25
|
+
* @property {string} label The text to be displayed on this option
|
|
26
|
+
* @property {string} value The value to be sent for this option
|
|
27
|
+
* @property {?string} description Optional description to show for this option
|
|
28
|
+
* @property {?RawEmoji} emoji Emoji to display for this option
|
|
29
|
+
* @property {boolean} default Render this option as the default selection
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @typedef {Object} MessageSelectOptionData
|
|
34
|
+
* @property {string} label The text to be displayed on this option
|
|
35
|
+
* @property {string} value The value to be sent for this option
|
|
36
|
+
* @property {string} [description] Optional description to show for this option
|
|
37
|
+
* @property {EmojiIdentifierResolvable} [emoji] Emoji to display for this option
|
|
38
|
+
* @property {boolean} [default] Render this option as the default selection
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @param {MessageSelectMenu|MessageSelectMenuOptions} [data={}] MessageSelectMenu to clone or raw data
|
|
43
|
+
*/
|
|
44
|
+
constructor(data = {}) {
|
|
45
|
+
super({ type: BaseMessageComponent.resolveType(data.type) ?? 'STRING_SELECT' });
|
|
46
|
+
|
|
47
|
+
this.setup(data);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
setup(data) {
|
|
51
|
+
super.setup(data);
|
|
52
|
+
/**
|
|
53
|
+
* A unique string to be sent in the interaction when clicked
|
|
54
|
+
* @type {?string}
|
|
55
|
+
*/
|
|
56
|
+
this.customId = data.custom_id ?? data.customId ?? null;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Custom placeholder text to display when nothing is selected
|
|
60
|
+
* @type {?string}
|
|
61
|
+
*/
|
|
62
|
+
this.placeholder = data.placeholder ?? null;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The minimum number of selections required
|
|
66
|
+
* @type {?number}
|
|
67
|
+
*/
|
|
68
|
+
this.minValues = data.min_values ?? data.minValues ?? null;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The maximum number of selections allowed
|
|
72
|
+
* @type {?number}
|
|
73
|
+
*/
|
|
74
|
+
this.maxValues = data.max_values ?? data.maxValues ?? null;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Options for the STRING_SELECT menu
|
|
78
|
+
* @type {MessageSelectOption[]}
|
|
79
|
+
*/
|
|
80
|
+
this.options = this.constructor.normalizeOptions(data.options ?? []);
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Whether this select menu is currently disabled
|
|
84
|
+
* @type {boolean}
|
|
85
|
+
*/
|
|
86
|
+
this.disabled = data.disabled ?? false;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Channels that are possible to select in CHANNEL_SELECT menu
|
|
90
|
+
* @type {ChannelType[]}
|
|
91
|
+
*/
|
|
92
|
+
this.channelTypes =
|
|
93
|
+
data.channel_types?.map(channelType =>
|
|
94
|
+
typeof channelType === 'string' ? channelType : ChannelTypes[channelType],
|
|
95
|
+
) ?? [];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Transforms the select menu into a plain object
|
|
100
|
+
* @returns {APIMessageSelectMenu} The raw data of this select menu
|
|
101
|
+
*/
|
|
102
|
+
toJSON() {
|
|
103
|
+
return {
|
|
104
|
+
channel_types: this.channelTypes.map(type => (typeof type === 'string' ? ChannelTypes[type] : type)),
|
|
105
|
+
custom_id: this.customId,
|
|
106
|
+
disabled: this.disabled,
|
|
107
|
+
placeholder: this.placeholder,
|
|
108
|
+
min_values: this.minValues,
|
|
109
|
+
max_values: this.maxValues ?? (this.minValues ? this.options.length : undefined),
|
|
110
|
+
options: this.options,
|
|
111
|
+
type: typeof this.type === 'string' ? MessageComponentTypes[this.type] : this.type,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Normalizes option input and resolves strings and emojis.
|
|
117
|
+
* @param {MessageSelectOptionData} option The select menu option to normalize
|
|
118
|
+
* @returns {MessageSelectOption}
|
|
119
|
+
*/
|
|
120
|
+
static normalizeOption(option) {
|
|
121
|
+
let { label, value, description, emoji } = option;
|
|
122
|
+
|
|
123
|
+
label = Util.verifyString(label, RangeError, 'SELECT_OPTION_LABEL');
|
|
124
|
+
value = Util.verifyString(value, RangeError, 'SELECT_OPTION_VALUE');
|
|
125
|
+
emoji = emoji ? Util.resolvePartialEmoji(emoji) : null;
|
|
126
|
+
description = description ? Util.verifyString(description, RangeError, 'SELECT_OPTION_DESCRIPTION', true) : null;
|
|
127
|
+
|
|
128
|
+
return { label, value, description, emoji, default: option.default ?? false };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Normalizes option input and resolves strings and emojis.
|
|
133
|
+
* @param {...MessageSelectOptionData|MessageSelectOptionData[]} options The select menu options to normalize
|
|
134
|
+
* @returns {MessageSelectOption[]}
|
|
135
|
+
*/
|
|
136
|
+
static normalizeOptions(...options) {
|
|
137
|
+
return options.flat(Infinity).map(option => this.normalizeOption(option));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
module.exports = MessageSelectMenu;
|