djs-selfbot-v13 3.2.2 → 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/README.md +37 -36
- package/package.json +89 -85
- package/src/WebSocket.js +39 -39
- package/src/client/BaseClient.js +86 -86
- package/src/client/Client.js +934 -836
- 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 -32
- package/src/client/actions/GuildMemberUpdate.js +44 -43
- 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 -52
- 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 -19
- 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 -22
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -12
- 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 -120
- 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 -83
- package/src/errors/DJSError.js +61 -61
- package/src/errors/Messages.js +217 -183
- package/src/errors/index.js +4 -4
- package/src/index.js +172 -159
- 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 -250
- package/src/managers/GuildChannelManager.js +488 -488
- 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 -597
- 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 -160
- 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 -85
- package/src/structures/ClientUser.js +479 -448
- 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 -1227
- 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 -318
- package/src/structures/MessageReaction.js +181 -171
- package/src/structures/MessageSelectMenu.js +141 -140
- package/src/structures/Modal.js +161 -161
- 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 -1101
- 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 -543
- 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 -719
- 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 -1773
- 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 -336
- package/src/util/Permissions.js +202 -202
- 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 -889
- package/typings/enums.d.ts +439 -297
- package/typings/index.d.ts +8247 -7432
- package/typings/rawDataTypes.d.ts +403 -342
- package/src/structures/MessagePoll.js +0 -238
|
@@ -1,103 +1,105 @@
|
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
*
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*
|
|
78
|
-
* @param {
|
|
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
|
-
|
|
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
|
+
super.setup(data);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Adds components to the action row.
|
|
58
|
+
* @param {...MessageActionRowComponentResolvable[]} components The components to add
|
|
59
|
+
* @returns {MessageActionRow}
|
|
60
|
+
*/
|
|
61
|
+
addComponents(...components) {
|
|
62
|
+
this.components.push(...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Sets the components of the action row.
|
|
68
|
+
* @param {...MessageActionRowComponentResolvable[]} components The components to set
|
|
69
|
+
* @returns {MessageActionRow}
|
|
70
|
+
*/
|
|
71
|
+
setComponents(...components) {
|
|
72
|
+
this.spliceComponents(0, this.components.length, components);
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Removes, replaces, and inserts components in the action row.
|
|
78
|
+
* @param {number} index The index to start at
|
|
79
|
+
* @param {number} deleteCount The number of components to remove
|
|
80
|
+
* @param {...MessageActionRowComponentResolvable[]} [components] The replacing components
|
|
81
|
+
* @returns {MessageActionRow}
|
|
82
|
+
*/
|
|
83
|
+
spliceComponents(index, deleteCount, ...components) {
|
|
84
|
+
this.components.splice(index, deleteCount, ...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Transforms the action row to a plain object.
|
|
90
|
+
* @returns {APIMessageComponent} The raw data of this action row
|
|
91
|
+
*/
|
|
92
|
+
toJSON() {
|
|
93
|
+
return {
|
|
94
|
+
components: this.components.map(c => c.toJSON()),
|
|
95
|
+
type: MessageComponentTypes[this.type],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
module.exports = MessageActionRow;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @external APIMessageComponent
|
|
104
|
+
* @see {@link https://discord.com/developers/docs/interactions/message-components#component-object}
|
|
105
|
+
*/
|
|
@@ -1,204 +1,216 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const AttachmentFlags = require('../util/AttachmentFlags');
|
|
4
|
-
const Util = require('../util/Util');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Represents an attachment in a message.
|
|
8
|
-
*/
|
|
9
|
-
class MessageAttachment {
|
|
10
|
-
/**
|
|
11
|
-
* @param {BufferResolvable|Stream} attachment The file
|
|
12
|
-
* @param {string} [name=null] The name of the file, if any
|
|
13
|
-
* @param {APIAttachment} [data] Extra data
|
|
14
|
-
*/
|
|
15
|
-
constructor(attachment, name = null, data) {
|
|
16
|
-
this.attachment = attachment;
|
|
17
|
-
/**
|
|
18
|
-
* The name of this attachment
|
|
19
|
-
* @type {?string}
|
|
20
|
-
*/
|
|
21
|
-
this.name = name;
|
|
22
|
-
if (data) this._patch(data);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Sets the description of this attachment.
|
|
27
|
-
* @param {string} description The description of the file
|
|
28
|
-
* @returns {MessageAttachment} This attachment
|
|
29
|
-
*/
|
|
30
|
-
setDescription(description) {
|
|
31
|
-
this.description = description;
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Sets the file of this attachment.
|
|
37
|
-
* @param {BufferResolvable|Stream} attachment The file
|
|
38
|
-
* @param {string} [name=null] The name of the file, if any
|
|
39
|
-
* @returns {MessageAttachment} This attachment
|
|
40
|
-
*/
|
|
41
|
-
setFile(attachment, name = null) {
|
|
42
|
-
this.attachment = attachment;
|
|
43
|
-
this.name = name;
|
|
44
|
-
return this;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Sets the name of this attachment.
|
|
49
|
-
* @param {string} name The name of the file
|
|
50
|
-
* @returns {MessageAttachment} This attachment
|
|
51
|
-
*/
|
|
52
|
-
setName(name) {
|
|
53
|
-
this.name = name;
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Sets whether this attachment is a spoiler
|
|
59
|
-
* @param {boolean} [spoiler=true] Whether the attachment should be marked as a spoiler
|
|
60
|
-
* @returns {MessageAttachment} This attachment
|
|
61
|
-
*/
|
|
62
|
-
setSpoiler(spoiler = true) {
|
|
63
|
-
if (spoiler === this.spoiler) return this;
|
|
64
|
-
|
|
65
|
-
if (!spoiler) {
|
|
66
|
-
while (this.spoiler) {
|
|
67
|
-
this.name = this.name.slice('SPOILER_'.length);
|
|
68
|
-
}
|
|
69
|
-
return this;
|
|
70
|
-
}
|
|
71
|
-
this.name = `SPOILER_${this.name}`;
|
|
72
|
-
return this;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
_patch(data) {
|
|
76
|
-
/**
|
|
77
|
-
* The attachment's id
|
|
78
|
-
* @type {Snowflake}
|
|
79
|
-
*/
|
|
80
|
-
this.id = data.id;
|
|
81
|
-
|
|
82
|
-
if ('size' in data) {
|
|
83
|
-
/**
|
|
84
|
-
* The size of this attachment in bytes
|
|
85
|
-
* @type {number}
|
|
86
|
-
*/
|
|
87
|
-
this.size = data.size;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if ('url' in data) {
|
|
91
|
-
/**
|
|
92
|
-
* The URL to this attachment
|
|
93
|
-
* @type {string}
|
|
94
|
-
*/
|
|
95
|
-
this.url = data.url;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if ('proxy_url' in data) {
|
|
99
|
-
/**
|
|
100
|
-
* The Proxy URL to this attachment
|
|
101
|
-
* @type {string}
|
|
102
|
-
*/
|
|
103
|
-
this.proxyURL = data.proxy_url;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if ('height' in data) {
|
|
107
|
-
/**
|
|
108
|
-
* The height of this attachment (if an image or video)
|
|
109
|
-
* @type {?number}
|
|
110
|
-
*/
|
|
111
|
-
this.height = data.height;
|
|
112
|
-
} else {
|
|
113
|
-
this.height ??= null;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if ('width' in data) {
|
|
117
|
-
/**
|
|
118
|
-
* The width of this attachment (if an image or video)
|
|
119
|
-
* @type {?number}
|
|
120
|
-
*/
|
|
121
|
-
this.width = data.width;
|
|
122
|
-
} else {
|
|
123
|
-
this.width ??= null;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if ('content_type' in data) {
|
|
127
|
-
/**
|
|
128
|
-
* The media type of this attachment
|
|
129
|
-
* @type {?string}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
*
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const AttachmentFlags = require('../util/AttachmentFlags');
|
|
4
|
+
const Util = require('../util/Util');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents an attachment in a message.
|
|
8
|
+
*/
|
|
9
|
+
class MessageAttachment {
|
|
10
|
+
/**
|
|
11
|
+
* @param {BufferResolvable|Stream} attachment The file
|
|
12
|
+
* @param {string} [name=null] The name of the file, if any
|
|
13
|
+
* @param {APIAttachment} [data] Extra data
|
|
14
|
+
*/
|
|
15
|
+
constructor(attachment, name = null, data) {
|
|
16
|
+
this.attachment = attachment;
|
|
17
|
+
/**
|
|
18
|
+
* The name of this attachment
|
|
19
|
+
* @type {?string}
|
|
20
|
+
*/
|
|
21
|
+
this.name = name;
|
|
22
|
+
if (data) this._patch(data);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Sets the description of this attachment.
|
|
27
|
+
* @param {string} description The description of the file
|
|
28
|
+
* @returns {MessageAttachment} This attachment
|
|
29
|
+
*/
|
|
30
|
+
setDescription(description) {
|
|
31
|
+
this.description = description;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Sets the file of this attachment.
|
|
37
|
+
* @param {BufferResolvable|Stream} attachment The file
|
|
38
|
+
* @param {string} [name=null] The name of the file, if any
|
|
39
|
+
* @returns {MessageAttachment} This attachment
|
|
40
|
+
*/
|
|
41
|
+
setFile(attachment, name = null) {
|
|
42
|
+
this.attachment = attachment;
|
|
43
|
+
this.name = name;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Sets the name of this attachment.
|
|
49
|
+
* @param {string} name The name of the file
|
|
50
|
+
* @returns {MessageAttachment} This attachment
|
|
51
|
+
*/
|
|
52
|
+
setName(name) {
|
|
53
|
+
this.name = name;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Sets whether this attachment is a spoiler
|
|
59
|
+
* @param {boolean} [spoiler=true] Whether the attachment should be marked as a spoiler
|
|
60
|
+
* @returns {MessageAttachment} This attachment
|
|
61
|
+
*/
|
|
62
|
+
setSpoiler(spoiler = true) {
|
|
63
|
+
if (spoiler === this.spoiler) return this;
|
|
64
|
+
|
|
65
|
+
if (!spoiler) {
|
|
66
|
+
while (this.spoiler) {
|
|
67
|
+
this.name = this.name.slice('SPOILER_'.length);
|
|
68
|
+
}
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
this.name = `SPOILER_${this.name}`;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
_patch(data) {
|
|
76
|
+
/**
|
|
77
|
+
* The attachment's id
|
|
78
|
+
* @type {Snowflake}
|
|
79
|
+
*/
|
|
80
|
+
this.id = data.id;
|
|
81
|
+
|
|
82
|
+
if ('size' in data) {
|
|
83
|
+
/**
|
|
84
|
+
* The size of this attachment in bytes
|
|
85
|
+
* @type {number}
|
|
86
|
+
*/
|
|
87
|
+
this.size = data.size;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if ('url' in data) {
|
|
91
|
+
/**
|
|
92
|
+
* The URL to this attachment
|
|
93
|
+
* @type {string}
|
|
94
|
+
*/
|
|
95
|
+
this.url = data.url;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if ('proxy_url' in data) {
|
|
99
|
+
/**
|
|
100
|
+
* The Proxy URL to this attachment
|
|
101
|
+
* @type {string}
|
|
102
|
+
*/
|
|
103
|
+
this.proxyURL = data.proxy_url;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if ('height' in data) {
|
|
107
|
+
/**
|
|
108
|
+
* The height of this attachment (if an image or video)
|
|
109
|
+
* @type {?number}
|
|
110
|
+
*/
|
|
111
|
+
this.height = data.height;
|
|
112
|
+
} else {
|
|
113
|
+
this.height ??= null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if ('width' in data) {
|
|
117
|
+
/**
|
|
118
|
+
* The width of this attachment (if an image or video)
|
|
119
|
+
* @type {?number}
|
|
120
|
+
*/
|
|
121
|
+
this.width = data.width;
|
|
122
|
+
} else {
|
|
123
|
+
this.width ??= null;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if ('content_type' in data) {
|
|
127
|
+
/**
|
|
128
|
+
* The media (MIME) type of this attachment
|
|
129
|
+
* @type {?string}
|
|
130
|
+
* @see {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types}
|
|
131
|
+
*/
|
|
132
|
+
this.contentType = data.content_type;
|
|
133
|
+
} else {
|
|
134
|
+
this.contentType ??= null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if ('description' in data) {
|
|
138
|
+
/**
|
|
139
|
+
* The description (alt text) of this attachment
|
|
140
|
+
* @type {?string}
|
|
141
|
+
*/
|
|
142
|
+
this.description = data.description;
|
|
143
|
+
} else {
|
|
144
|
+
this.description ??= null;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Whether this attachment is ephemeral
|
|
149
|
+
* @type {boolean}
|
|
150
|
+
*/
|
|
151
|
+
this.ephemeral = data.ephemeral ?? false;
|
|
152
|
+
|
|
153
|
+
if ('duration_secs' in data) {
|
|
154
|
+
/**
|
|
155
|
+
* The duration of this attachment in seconds
|
|
156
|
+
* <info>This will only be available if the attachment is an audio file.</info>
|
|
157
|
+
* @type {?number}
|
|
158
|
+
*/
|
|
159
|
+
this.duration = data.duration_secs;
|
|
160
|
+
} else {
|
|
161
|
+
this.duration ??= null;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if ('waveform' in data) {
|
|
165
|
+
/**
|
|
166
|
+
* The base64 encoded byte array representing a sampled waveform
|
|
167
|
+
* <info>This will only be available if the attachment is an audio file.</info>
|
|
168
|
+
* @type {?string}
|
|
169
|
+
*/
|
|
170
|
+
this.waveform = data.waveform;
|
|
171
|
+
} else {
|
|
172
|
+
this.waveform ??= null;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if ('flags' in data) {
|
|
176
|
+
/**
|
|
177
|
+
* The flags of this attachment
|
|
178
|
+
* @type {Readonly<AttachmentFlags>}
|
|
179
|
+
*/
|
|
180
|
+
this.flags = new AttachmentFlags(data.flags).freeze();
|
|
181
|
+
} else {
|
|
182
|
+
this.flags ??= new AttachmentFlags().freeze();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if ('title' in data) {
|
|
186
|
+
/**
|
|
187
|
+
* The title of this attachment
|
|
188
|
+
* <info>This will only be available if the attachment name contains special characters.</info>
|
|
189
|
+
* @type {?string}
|
|
190
|
+
*/
|
|
191
|
+
this.title = data.title;
|
|
192
|
+
} else {
|
|
193
|
+
this.title ??= null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Whether or not this attachment has been marked as a spoiler
|
|
199
|
+
* @type {boolean}
|
|
200
|
+
* @readonly
|
|
201
|
+
*/
|
|
202
|
+
get spoiler() {
|
|
203
|
+
return Util.basename(this.url ?? this.name).startsWith('SPOILER_');
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
toJSON() {
|
|
207
|
+
return Util.flatten(this);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
module.exports = MessageAttachment;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @external APIAttachment
|
|
215
|
+
* @see {@link https://discord.com/developers/docs/resources/channel#attachment-object}
|
|
216
|
+
*/
|