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,211 +1,211 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { Collection } = require('@discordjs/collection');
|
|
4
|
-
const Interaction = require('./Interaction');
|
|
5
|
-
const InteractionWebhook = require('./InteractionWebhook');
|
|
6
|
-
const MessageAttachment = require('./MessageAttachment');
|
|
7
|
-
const InteractionResponses = require('./interfaces/InteractionResponses');
|
|
8
|
-
const { ApplicationCommandOptionTypes } = require('../util/Constants');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Represents a command interaction.
|
|
12
|
-
* @extends {Interaction}
|
|
13
|
-
* @implements {InteractionResponses}
|
|
14
|
-
* @abstract
|
|
15
|
-
*/
|
|
16
|
-
class BaseCommandInteraction extends Interaction {
|
|
17
|
-
constructor(client, data) {
|
|
18
|
-
super(client, data);
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The id of the channel this interaction was sent in
|
|
22
|
-
* @type {Snowflake}
|
|
23
|
-
* @name BaseCommandInteraction#channelId
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* The invoked application command's id
|
|
28
|
-
* @type {Snowflake}
|
|
29
|
-
*/
|
|
30
|
-
this.commandId = data.data.id;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* The invoked application command's name
|
|
34
|
-
* @type {string}
|
|
35
|
-
*/
|
|
36
|
-
this.commandName = data.data.name;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Whether the reply to this interaction has been deferred
|
|
40
|
-
* @type {boolean}
|
|
41
|
-
*/
|
|
42
|
-
this.deferred = false;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Whether this interaction has already been replied to
|
|
46
|
-
* @type {boolean}
|
|
47
|
-
*/
|
|
48
|
-
this.replied = false;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Whether the reply to this interaction is ephemeral
|
|
52
|
-
* @type {?boolean}
|
|
53
|
-
*/
|
|
54
|
-
this.ephemeral = null;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* An associated interaction webhook, can be used to further interact with this interaction
|
|
58
|
-
* @type {InteractionWebhook}
|
|
59
|
-
*/
|
|
60
|
-
this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* The invoked application command, if it was fetched before
|
|
65
|
-
* @type {?ApplicationCommand}
|
|
66
|
-
*/
|
|
67
|
-
get command() {
|
|
68
|
-
const id = this.commandId;
|
|
69
|
-
return this.guild?.commands.cache.get(id) ?? this.client.application.commands.cache.get(id) ?? null;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Represents the resolved data of a received command interaction.
|
|
74
|
-
* @typedef {Object} CommandInteractionResolvedData
|
|
75
|
-
* @property {Collection<Snowflake, User>} [users] The resolved users
|
|
76
|
-
* @property {Collection<Snowflake, GuildMember|APIGuildMember>} [members] The resolved guild members
|
|
77
|
-
* @property {Collection<Snowflake, Role|APIRole>} [roles] The resolved roles
|
|
78
|
-
* @property {Collection<Snowflake, Channel|APIChannel>} [channels] The resolved channels
|
|
79
|
-
* @property {Collection<Snowflake, Message|APIMessage>} [messages] The resolved messages
|
|
80
|
-
* @property {Collection<Snowflake, MessageAttachment>} [attachments] The resolved attachments
|
|
81
|
-
*/
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Transforms the resolved received from the API.
|
|
85
|
-
* @param {APIInteractionDataResolved} resolved The received resolved objects
|
|
86
|
-
* @returns {CommandInteractionResolvedData}
|
|
87
|
-
* @private
|
|
88
|
-
*/
|
|
89
|
-
transformResolved({ members, users, channels, roles, messages, attachments }) {
|
|
90
|
-
const result = {};
|
|
91
|
-
|
|
92
|
-
if (members) {
|
|
93
|
-
result.members = new Collection();
|
|
94
|
-
for (const [id, member] of Object.entries(members)) {
|
|
95
|
-
const user = users[id];
|
|
96
|
-
result.members.set(id, this.guild?.members._add({ user, ...member }) ?? member);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (users) {
|
|
101
|
-
result.users = new Collection();
|
|
102
|
-
for (const user of Object.values(users)) {
|
|
103
|
-
result.users.set(user.id, this.client.users._add(user));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (roles) {
|
|
108
|
-
result.roles = new Collection();
|
|
109
|
-
for (const role of Object.values(roles)) {
|
|
110
|
-
result.roles.set(role.id, this.guild?.roles._add(role) ?? role);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (channels) {
|
|
115
|
-
result.channels = new Collection();
|
|
116
|
-
for (const channel of Object.values(channels)) {
|
|
117
|
-
result.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (messages) {
|
|
122
|
-
result.messages = new Collection();
|
|
123
|
-
for (const message of Object.values(messages)) {
|
|
124
|
-
result.messages.set(message.id, this.channel?.messages?._add(message) ?? message);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (attachments) {
|
|
129
|
-
result.attachments = new Collection();
|
|
130
|
-
for (const attachment of Object.values(attachments)) {
|
|
131
|
-
const patched = new MessageAttachment(attachment.url, attachment.filename, attachment);
|
|
132
|
-
result.attachments.set(attachment.id, patched);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return result;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Represents an option of a received command interaction.
|
|
141
|
-
* @typedef {Object} CommandInteractionOption
|
|
142
|
-
* @property {string} name The name of the option
|
|
143
|
-
* @property {ApplicationCommandOptionType} type The type of the option
|
|
144
|
-
* @property {boolean} [autocomplete] Whether the option is an autocomplete option
|
|
145
|
-
* @property {string|number|boolean} [value] The value of the option
|
|
146
|
-
* @property {CommandInteractionOption[]} [options] Additional options if this option is a
|
|
147
|
-
* subcommand (group)
|
|
148
|
-
* @property {User} [user] The resolved user
|
|
149
|
-
* @property {GuildMember|APIGuildMember} [member] The resolved member
|
|
150
|
-
* @property {GuildChannel|ThreadChannel|APIChannel} [channel] The resolved channel
|
|
151
|
-
* @property {Role|APIRole} [role] The resolved role
|
|
152
|
-
* @property {MessageAttachment} [attachment] The resolved attachment
|
|
153
|
-
*/
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Transforms an option received from the API.
|
|
157
|
-
* @param {APIApplicationCommandOption} option The received option
|
|
158
|
-
* @param {APIInteractionDataResolved} resolved The resolved interaction data
|
|
159
|
-
* @returns {CommandInteractionOption}
|
|
160
|
-
* @private
|
|
161
|
-
*/
|
|
162
|
-
transformOption(option, resolved) {
|
|
163
|
-
const result = {
|
|
164
|
-
name: option.name,
|
|
165
|
-
type: ApplicationCommandOptionTypes[option.type],
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
if ('value' in option) result.value = option.value;
|
|
169
|
-
if ('options' in option) result.options = option.options.map(opt => this.transformOption(opt, resolved));
|
|
170
|
-
|
|
171
|
-
if (resolved) {
|
|
172
|
-
const user = resolved.users?.[option.value];
|
|
173
|
-
if (user) result.user = this.client.users._add(user);
|
|
174
|
-
|
|
175
|
-
const member = resolved.members?.[option.value];
|
|
176
|
-
if (member) result.member = this.guild?.members._add({ user, ...member }) ?? member;
|
|
177
|
-
|
|
178
|
-
const channel = resolved.channels?.[option.value];
|
|
179
|
-
if (channel) result.channel = this.client.channels._add(channel, this.guild) ?? channel;
|
|
180
|
-
|
|
181
|
-
const role = resolved.roles?.[option.value];
|
|
182
|
-
if (role) result.role = this.guild?.roles._add(role) ?? role;
|
|
183
|
-
|
|
184
|
-
const attachment = resolved.attachments?.[option.value];
|
|
185
|
-
if (attachment) result.attachment = new MessageAttachment(attachment.url, attachment.filename, attachment);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return result;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// These are here only for documentation purposes - they are implemented by InteractionResponses
|
|
192
|
-
/* eslint-disable no-empty-function */
|
|
193
|
-
deferReply() {}
|
|
194
|
-
reply() {}
|
|
195
|
-
fetchReply() {}
|
|
196
|
-
editReply() {}
|
|
197
|
-
deleteReply() {}
|
|
198
|
-
followUp() {}
|
|
199
|
-
showModal() {}
|
|
200
|
-
awaitModalSubmit() {}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
InteractionResponses.applyToClass(BaseCommandInteraction, ['deferUpdate', 'update']);
|
|
204
|
-
|
|
205
|
-
module.exports = BaseCommandInteraction;
|
|
206
|
-
|
|
207
|
-
/* eslint-disable max-len */
|
|
208
|
-
/**
|
|
209
|
-
* @external APIInteractionDataResolved
|
|
210
|
-
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}
|
|
211
|
-
*/
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const Interaction = require('./Interaction');
|
|
5
|
+
const InteractionWebhook = require('./InteractionWebhook');
|
|
6
|
+
const MessageAttachment = require('./MessageAttachment');
|
|
7
|
+
const InteractionResponses = require('./interfaces/InteractionResponses');
|
|
8
|
+
const { ApplicationCommandOptionTypes } = require('../util/Constants');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents a command interaction.
|
|
12
|
+
* @extends {Interaction}
|
|
13
|
+
* @implements {InteractionResponses}
|
|
14
|
+
* @abstract
|
|
15
|
+
*/
|
|
16
|
+
class BaseCommandInteraction extends Interaction {
|
|
17
|
+
constructor(client, data) {
|
|
18
|
+
super(client, data);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The id of the channel this interaction was sent in
|
|
22
|
+
* @type {Snowflake}
|
|
23
|
+
* @name BaseCommandInteraction#channelId
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The invoked application command's id
|
|
28
|
+
* @type {Snowflake}
|
|
29
|
+
*/
|
|
30
|
+
this.commandId = data.data.id;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The invoked application command's name
|
|
34
|
+
* @type {string}
|
|
35
|
+
*/
|
|
36
|
+
this.commandName = data.data.name;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Whether the reply to this interaction has been deferred
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
*/
|
|
42
|
+
this.deferred = false;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Whether this interaction has already been replied to
|
|
46
|
+
* @type {boolean}
|
|
47
|
+
*/
|
|
48
|
+
this.replied = false;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Whether the reply to this interaction is ephemeral
|
|
52
|
+
* @type {?boolean}
|
|
53
|
+
*/
|
|
54
|
+
this.ephemeral = null;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* An associated interaction webhook, can be used to further interact with this interaction
|
|
58
|
+
* @type {InteractionWebhook}
|
|
59
|
+
*/
|
|
60
|
+
this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The invoked application command, if it was fetched before
|
|
65
|
+
* @type {?ApplicationCommand}
|
|
66
|
+
*/
|
|
67
|
+
get command() {
|
|
68
|
+
const id = this.commandId;
|
|
69
|
+
return this.guild?.commands.cache.get(id) ?? this.client.application.commands.cache.get(id) ?? null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Represents the resolved data of a received command interaction.
|
|
74
|
+
* @typedef {Object} CommandInteractionResolvedData
|
|
75
|
+
* @property {Collection<Snowflake, User>} [users] The resolved users
|
|
76
|
+
* @property {Collection<Snowflake, GuildMember|APIGuildMember>} [members] The resolved guild members
|
|
77
|
+
* @property {Collection<Snowflake, Role|APIRole>} [roles] The resolved roles
|
|
78
|
+
* @property {Collection<Snowflake, Channel|APIChannel>} [channels] The resolved channels
|
|
79
|
+
* @property {Collection<Snowflake, Message|APIMessage>} [messages] The resolved messages
|
|
80
|
+
* @property {Collection<Snowflake, MessageAttachment>} [attachments] The resolved attachments
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Transforms the resolved received from the API.
|
|
85
|
+
* @param {APIInteractionDataResolved} resolved The received resolved objects
|
|
86
|
+
* @returns {CommandInteractionResolvedData}
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
transformResolved({ members, users, channels, roles, messages, attachments }) {
|
|
90
|
+
const result = {};
|
|
91
|
+
|
|
92
|
+
if (members) {
|
|
93
|
+
result.members = new Collection();
|
|
94
|
+
for (const [id, member] of Object.entries(members)) {
|
|
95
|
+
const user = users[id];
|
|
96
|
+
result.members.set(id, this.guild?.members._add({ user, ...member }) ?? member);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (users) {
|
|
101
|
+
result.users = new Collection();
|
|
102
|
+
for (const user of Object.values(users)) {
|
|
103
|
+
result.users.set(user.id, this.client.users._add(user));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (roles) {
|
|
108
|
+
result.roles = new Collection();
|
|
109
|
+
for (const role of Object.values(roles)) {
|
|
110
|
+
result.roles.set(role.id, this.guild?.roles._add(role) ?? role);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (channels) {
|
|
115
|
+
result.channels = new Collection();
|
|
116
|
+
for (const channel of Object.values(channels)) {
|
|
117
|
+
result.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (messages) {
|
|
122
|
+
result.messages = new Collection();
|
|
123
|
+
for (const message of Object.values(messages)) {
|
|
124
|
+
result.messages.set(message.id, this.channel?.messages?._add(message) ?? message);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (attachments) {
|
|
129
|
+
result.attachments = new Collection();
|
|
130
|
+
for (const attachment of Object.values(attachments)) {
|
|
131
|
+
const patched = new MessageAttachment(attachment.url, attachment.filename, attachment);
|
|
132
|
+
result.attachments.set(attachment.id, patched);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Represents an option of a received command interaction.
|
|
141
|
+
* @typedef {Object} CommandInteractionOption
|
|
142
|
+
* @property {string} name The name of the option
|
|
143
|
+
* @property {ApplicationCommandOptionType} type The type of the option
|
|
144
|
+
* @property {boolean} [autocomplete] Whether the option is an autocomplete option
|
|
145
|
+
* @property {string|number|boolean} [value] The value of the option
|
|
146
|
+
* @property {CommandInteractionOption[]} [options] Additional options if this option is a
|
|
147
|
+
* subcommand (group)
|
|
148
|
+
* @property {User} [user] The resolved user
|
|
149
|
+
* @property {GuildMember|APIGuildMember} [member] The resolved member
|
|
150
|
+
* @property {GuildChannel|ThreadChannel|APIChannel} [channel] The resolved channel
|
|
151
|
+
* @property {Role|APIRole} [role] The resolved role
|
|
152
|
+
* @property {MessageAttachment} [attachment] The resolved attachment
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Transforms an option received from the API.
|
|
157
|
+
* @param {APIApplicationCommandOption} option The received option
|
|
158
|
+
* @param {APIInteractionDataResolved} resolved The resolved interaction data
|
|
159
|
+
* @returns {CommandInteractionOption}
|
|
160
|
+
* @private
|
|
161
|
+
*/
|
|
162
|
+
transformOption(option, resolved) {
|
|
163
|
+
const result = {
|
|
164
|
+
name: option.name,
|
|
165
|
+
type: ApplicationCommandOptionTypes[option.type],
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
if ('value' in option) result.value = option.value;
|
|
169
|
+
if ('options' in option) result.options = option.options.map(opt => this.transformOption(opt, resolved));
|
|
170
|
+
|
|
171
|
+
if (resolved) {
|
|
172
|
+
const user = resolved.users?.[option.value];
|
|
173
|
+
if (user) result.user = this.client.users._add(user);
|
|
174
|
+
|
|
175
|
+
const member = resolved.members?.[option.value];
|
|
176
|
+
if (member) result.member = this.guild?.members._add({ user, ...member }) ?? member;
|
|
177
|
+
|
|
178
|
+
const channel = resolved.channels?.[option.value];
|
|
179
|
+
if (channel) result.channel = this.client.channels._add(channel, this.guild) ?? channel;
|
|
180
|
+
|
|
181
|
+
const role = resolved.roles?.[option.value];
|
|
182
|
+
if (role) result.role = this.guild?.roles._add(role) ?? role;
|
|
183
|
+
|
|
184
|
+
const attachment = resolved.attachments?.[option.value];
|
|
185
|
+
if (attachment) result.attachment = new MessageAttachment(attachment.url, attachment.filename, attachment);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// These are here only for documentation purposes - they are implemented by InteractionResponses
|
|
192
|
+
/* eslint-disable no-empty-function */
|
|
193
|
+
deferReply() {}
|
|
194
|
+
reply() {}
|
|
195
|
+
fetchReply() {}
|
|
196
|
+
editReply() {}
|
|
197
|
+
deleteReply() {}
|
|
198
|
+
followUp() {}
|
|
199
|
+
showModal() {}
|
|
200
|
+
awaitModalSubmit() {}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
InteractionResponses.applyToClass(BaseCommandInteraction, ['deferUpdate', 'update']);
|
|
204
|
+
|
|
205
|
+
module.exports = BaseCommandInteraction;
|
|
206
|
+
|
|
207
|
+
/* eslint-disable max-len */
|
|
208
|
+
/**
|
|
209
|
+
* @external APIInteractionDataResolved
|
|
210
|
+
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}
|
|
211
|
+
*/
|
|
@@ -1,116 +1,116 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const Base = require('./Base');
|
|
4
|
-
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.
|
|
8
|
-
* @extends {Base}
|
|
9
|
-
* @abstract
|
|
10
|
-
*/
|
|
11
|
-
class BaseGuild extends Base {
|
|
12
|
-
constructor(client, data) {
|
|
13
|
-
super(client);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* The guild's id
|
|
17
|
-
* @type {Snowflake}
|
|
18
|
-
*/
|
|
19
|
-
this.id = data.id;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* The name of this guild
|
|
23
|
-
* @type {string}
|
|
24
|
-
*/
|
|
25
|
-
this.name = data.name;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* The icon hash of this guild
|
|
29
|
-
* @type {?string}
|
|
30
|
-
*/
|
|
31
|
-
this.icon = data.icon;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* An array of features available to this guild
|
|
35
|
-
* @type {Features[]}
|
|
36
|
-
*/
|
|
37
|
-
this.features = data.features;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The timestamp this guild was created at
|
|
42
|
-
* @type {number}
|
|
43
|
-
* @readonly
|
|
44
|
-
*/
|
|
45
|
-
get createdTimestamp() {
|
|
46
|
-
return SnowflakeUtil.timestampFrom(this.id);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* The time this guild was created at
|
|
51
|
-
* @type {Date}
|
|
52
|
-
* @readonly
|
|
53
|
-
*/
|
|
54
|
-
get createdAt() {
|
|
55
|
-
return new Date(this.createdTimestamp);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* The acronym that shows up in place of a guild icon
|
|
60
|
-
* @type {string}
|
|
61
|
-
* @readonly
|
|
62
|
-
*/
|
|
63
|
-
get nameAcronym() {
|
|
64
|
-
return this.name
|
|
65
|
-
.replace(/'s /g, ' ')
|
|
66
|
-
.replace(/\w+/g, e => e[0])
|
|
67
|
-
.replace(/\s/g, '');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Whether this guild is partnered
|
|
72
|
-
* @type {boolean}
|
|
73
|
-
* @readonly
|
|
74
|
-
*/
|
|
75
|
-
get partnered() {
|
|
76
|
-
return this.features.includes('PARTNERED');
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Whether this guild is verified
|
|
81
|
-
* @type {boolean}
|
|
82
|
-
* @readonly
|
|
83
|
-
*/
|
|
84
|
-
get verified() {
|
|
85
|
-
return this.features.includes('VERIFIED');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* The URL to this guild's icon.
|
|
90
|
-
* @param {ImageURLOptions} [options={}] Options for the Image URL
|
|
91
|
-
* @returns {?string}
|
|
92
|
-
*/
|
|
93
|
-
iconURL({ format, size, dynamic } = {}) {
|
|
94
|
-
if (!this.icon) return null;
|
|
95
|
-
return this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Fetches this guild.
|
|
100
|
-
* @returns {Promise<Guild>}
|
|
101
|
-
*/
|
|
102
|
-
async fetch() {
|
|
103
|
-
const data = await this.client.api.guilds(this.id).get({ query: { with_counts: true } });
|
|
104
|
-
return this.client.guilds._add(data);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* When concatenated with a string, this automatically returns the guild's name instead of the Guild object.
|
|
109
|
-
* @returns {string}
|
|
110
|
-
*/
|
|
111
|
-
toString() {
|
|
112
|
-
return this.name;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
module.exports = BaseGuild;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Base = require('./Base');
|
|
4
|
+
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.
|
|
8
|
+
* @extends {Base}
|
|
9
|
+
* @abstract
|
|
10
|
+
*/
|
|
11
|
+
class BaseGuild extends Base {
|
|
12
|
+
constructor(client, data) {
|
|
13
|
+
super(client);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The guild's id
|
|
17
|
+
* @type {Snowflake}
|
|
18
|
+
*/
|
|
19
|
+
this.id = data.id;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The name of this guild
|
|
23
|
+
* @type {string}
|
|
24
|
+
*/
|
|
25
|
+
this.name = data.name;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The icon hash of this guild
|
|
29
|
+
* @type {?string}
|
|
30
|
+
*/
|
|
31
|
+
this.icon = data.icon ?? null;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* An array of features available to this guild
|
|
35
|
+
* @type {Features[]}
|
|
36
|
+
*/
|
|
37
|
+
this.features = data.features;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The timestamp this guild was created at
|
|
42
|
+
* @type {number}
|
|
43
|
+
* @readonly
|
|
44
|
+
*/
|
|
45
|
+
get createdTimestamp() {
|
|
46
|
+
return SnowflakeUtil.timestampFrom(this.id);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The time this guild was created at
|
|
51
|
+
* @type {Date}
|
|
52
|
+
* @readonly
|
|
53
|
+
*/
|
|
54
|
+
get createdAt() {
|
|
55
|
+
return new Date(this.createdTimestamp);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The acronym that shows up in place of a guild icon
|
|
60
|
+
* @type {string}
|
|
61
|
+
* @readonly
|
|
62
|
+
*/
|
|
63
|
+
get nameAcronym() {
|
|
64
|
+
return this.name
|
|
65
|
+
.replace(/'s /g, ' ')
|
|
66
|
+
.replace(/\w+/g, e => e[0])
|
|
67
|
+
.replace(/\s/g, '');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Whether this guild is partnered
|
|
72
|
+
* @type {boolean}
|
|
73
|
+
* @readonly
|
|
74
|
+
*/
|
|
75
|
+
get partnered() {
|
|
76
|
+
return this.features.includes('PARTNERED');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Whether this guild is verified
|
|
81
|
+
* @type {boolean}
|
|
82
|
+
* @readonly
|
|
83
|
+
*/
|
|
84
|
+
get verified() {
|
|
85
|
+
return this.features.includes('VERIFIED');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The URL to this guild's icon.
|
|
90
|
+
* @param {ImageURLOptions} [options={}] Options for the Image URL
|
|
91
|
+
* @returns {?string}
|
|
92
|
+
*/
|
|
93
|
+
iconURL({ format, size, dynamic } = {}) {
|
|
94
|
+
if (!this.icon) return null;
|
|
95
|
+
return this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Fetches this guild.
|
|
100
|
+
* @returns {Promise<Guild>}
|
|
101
|
+
*/
|
|
102
|
+
async fetch() {
|
|
103
|
+
const data = await this.client.api.guilds(this.id).get({ query: { with_counts: true } });
|
|
104
|
+
return this.client.guilds._add(data);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* When concatenated with a string, this automatically returns the guild's name instead of the Guild object.
|
|
109
|
+
* @returns {string}
|
|
110
|
+
*/
|
|
111
|
+
toString() {
|
|
112
|
+
return this.name;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
module.exports = BaseGuild;
|