@velliajs/discord 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +133 -0
- package/package.json +82 -0
- package/src/client/BaseClient.js +83 -0
- package/src/client/Client.js +591 -0
- package/src/client/WebhookClient.js +103 -0
- package/src/client/actions/Action.js +119 -0
- package/src/client/actions/ActionsManager.js +79 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +26 -0
- package/src/client/actions/AutoModerationRuleCreate.js +27 -0
- package/src/client/actions/AutoModerationRuleDelete.js +31 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +23 -0
- package/src/client/actions/ChannelUpdate.js +33 -0
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
- package/src/client/actions/GuildBanAdd.js +20 -0
- package/src/client/actions/GuildBanRemove.js +25 -0
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
- package/src/client/actions/GuildDelete.js +44 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +19 -0
- package/src/client/actions/GuildEmojiUpdate.js +20 -0
- package/src/client/actions/GuildEmojisUpdate.js +34 -0
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
- package/src/client/actions/GuildMemberRemove.js +31 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +29 -0
- package/src/client/actions/GuildRoleUpdate.js +39 -0
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
- package/src/client/actions/GuildScheduledEventCreate.js +27 -0
- package/src/client/actions/GuildScheduledEventDelete.js +31 -0
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
- package/src/client/actions/GuildStickerCreate.js +20 -0
- package/src/client/actions/GuildStickerDelete.js +19 -0
- package/src/client/actions/GuildStickerUpdate.js +20 -0
- package/src/client/actions/GuildStickersUpdate.js +34 -0
- package/src/client/actions/GuildUpdate.js +33 -0
- package/src/client/actions/InteractionCreate.js +101 -0
- package/src/client/actions/InviteCreate.js +28 -0
- package/src/client/actions/InviteDelete.js +30 -0
- package/src/client/actions/MessageCreate.js +37 -0
- package/src/client/actions/MessageDelete.js +32 -0
- package/src/client/actions/MessageDeleteBulk.js +47 -0
- package/src/client/actions/MessageReactionAdd.js +55 -0
- package/src/client/actions/MessageReactionRemove.js +45 -0
- package/src/client/actions/MessageReactionRemoveAll.js +33 -0
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
- package/src/client/actions/MessageUpdate.js +26 -0
- package/src/client/actions/PresenceUpdate.js +42 -0
- package/src/client/actions/StageInstanceCreate.js +28 -0
- package/src/client/actions/StageInstanceDelete.js +31 -0
- package/src/client/actions/StageInstanceUpdate.js +30 -0
- package/src/client/actions/ThreadCreate.js +24 -0
- package/src/client/actions/ThreadDelete.js +26 -0
- package/src/client/actions/ThreadListSync.js +60 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +47 -0
- package/src/client/actions/TypingStart.js +29 -0
- package/src/client/actions/UserUpdate.js +36 -0
- package/src/client/actions/VoiceStateUpdate.js +43 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +44 -0
- package/src/client/websocket/WebSocketManager.js +393 -0
- package/src/client/websocket/WebSocketShard.js +231 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_CREATE.js +26 -0
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
- package/src/client/websocket/handlers/INTERACTION_CREATE.js +5 -0
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/READY.js +27 -0
- package/src/client/websocket/handlers/RESUMED.js +14 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
- package/src/client/websocket/handlers/TYPING_START.js +5 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/index.js +64 -0
- package/src/errors/DJSError.js +48 -0
- package/src/errors/ErrorCodes.js +319 -0
- package/src/errors/Messages.js +170 -0
- package/src/errors/index.js +5 -0
- package/src/index.js +213 -0
- package/src/managers/ApplicationCommandManager.js +263 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +434 -0
- package/src/managers/AutoModerationRuleManager.js +288 -0
- package/src/managers/BaseGuildEmojiManager.js +80 -0
- package/src/managers/BaseManager.js +19 -0
- package/src/managers/CachedManager.js +57 -0
- package/src/managers/CategoryChannelChildManager.js +77 -0
- package/src/managers/ChannelManager.js +128 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/GuildApplicationCommandManager.js +28 -0
- package/src/managers/GuildBanManager.js +204 -0
- package/src/managers/GuildChannelManager.js +494 -0
- package/src/managers/GuildEmojiManager.js +174 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildForumThreadManager.js +83 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +283 -0
- package/src/managers/GuildMemberManager.js +540 -0
- package/src/managers/GuildMemberRoleManager.js +204 -0
- package/src/managers/GuildScheduledEventManager.js +297 -0
- package/src/managers/GuildStickerManager.js +182 -0
- package/src/managers/GuildTextThreadManager.js +91 -0
- package/src/managers/MessageManager.js +259 -0
- package/src/managers/PermissionOverwriteManager.js +168 -0
- package/src/managers/PresenceManager.js +58 -0
- package/src/managers/ReactionManager.js +68 -0
- package/src/managers/ReactionUserManager.js +77 -0
- package/src/managers/RoleManager.js +360 -0
- package/src/managers/StageInstanceManager.js +154 -0
- package/src/managers/ThreadManager.js +204 -0
- package/src/managers/ThreadMemberManager.js +182 -0
- package/src/managers/UserManager.js +139 -0
- package/src/managers/VoiceStateManager.js +37 -0
- package/src/sharding/Shard.js +457 -0
- package/src/sharding/ShardClientUtil.js +285 -0
- package/src/sharding/ShardingManager.js +326 -0
- package/src/structures/ActionRow.js +46 -0
- package/src/structures/ActionRowBuilder.js +35 -0
- package/src/structures/AnonymousGuild.js +97 -0
- package/src/structures/ApplicationCommand.js +606 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +46 -0
- package/src/structures/Attachment.js +140 -0
- package/src/structures/AttachmentBuilder.js +116 -0
- package/src/structures/AutoModerationActionExecution.js +116 -0
- package/src/structures/AutoModerationRule.js +284 -0
- package/src/structures/AutocompleteInteraction.js +97 -0
- package/src/structures/Base.js +43 -0
- package/src/structures/BaseChannel.js +160 -0
- package/src/structures/BaseGuild.js +119 -0
- package/src/structures/BaseGuildEmoji.js +56 -0
- package/src/structures/BaseGuildTextChannel.js +186 -0
- package/src/structures/BaseGuildVoiceChannel.js +234 -0
- package/src/structures/BaseInteraction.js +344 -0
- package/src/structures/BaseSelectMenuComponent.js +56 -0
- package/src/structures/ButtonBuilder.js +44 -0
- package/src/structures/ButtonComponent.js +65 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/CategoryChannel.js +45 -0
- package/src/structures/ChannelSelectMenuBuilder.js +31 -0
- package/src/structures/ChannelSelectMenuComponent.js +20 -0
- package/src/structures/ChannelSelectMenuInteraction.js +33 -0
- package/src/structures/ChatInputCommandInteraction.js +41 -0
- package/src/structures/ClientApplication.js +193 -0
- package/src/structures/ClientPresence.js +82 -0
- package/src/structures/ClientUser.js +185 -0
- package/src/structures/CommandInteraction.js +224 -0
- package/src/structures/CommandInteractionOptionResolver.js +308 -0
- package/src/structures/Component.js +47 -0
- package/src/structures/ContextMenuCommandInteraction.js +64 -0
- package/src/structures/DMChannel.js +129 -0
- package/src/structures/DirectoryChannel.js +36 -0
- package/src/structures/Embed.js +220 -0
- package/src/structures/EmbedBuilder.js +41 -0
- package/src/structures/Emoji.js +108 -0
- package/src/structures/ForumChannel.js +264 -0
- package/src/structures/Guild.js +1361 -0
- package/src/structures/GuildAuditLogs.js +91 -0
- package/src/structures/GuildAuditLogsEntry.js +527 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildChannel.js +457 -0
- package/src/structures/GuildEmoji.js +148 -0
- package/src/structures/GuildMember.js +518 -0
- package/src/structures/GuildPreview.js +193 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +439 -0
- package/src/structures/GuildTemplate.js +241 -0
- package/src/structures/Integration.js +220 -0
- package/src/structures/IntegrationApplication.js +85 -0
- package/src/structures/InteractionCollector.js +263 -0
- package/src/structures/InteractionResponse.js +102 -0
- package/src/structures/InteractionWebhook.js +59 -0
- package/src/structures/Invite.js +322 -0
- package/src/structures/InviteGuild.js +22 -0
- package/src/structures/InviteStageInstance.js +87 -0
- package/src/structures/MentionableSelectMenuBuilder.js +32 -0
- package/src/structures/MentionableSelectMenuComponent.js +11 -0
- package/src/structures/MentionableSelectMenuInteraction.js +71 -0
- package/src/structures/Message.js +997 -0
- package/src/structures/MessageCollector.js +146 -0
- package/src/structures/MessageComponentInteraction.js +107 -0
- package/src/structures/MessageContextMenuCommandInteraction.js +20 -0
- package/src/structures/MessageMentions.js +297 -0
- package/src/structures/MessagePayload.js +299 -0
- package/src/structures/MessageReaction.js +142 -0
- package/src/structures/ModalBuilder.js +34 -0
- package/src/structures/ModalSubmitFields.js +55 -0
- package/src/structures/ModalSubmitInteraction.js +121 -0
- package/src/structures/NewsChannel.js +32 -0
- package/src/structures/OAuth2Guild.js +28 -0
- package/src/structures/PartialGroupDMChannel.js +60 -0
- package/src/structures/PermissionOverwrites.js +196 -0
- package/src/structures/Presence.js +372 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/Role.js +458 -0
- package/src/structures/RoleSelectMenuBuilder.js +31 -0
- package/src/structures/RoleSelectMenuComponent.js +11 -0
- package/src/structures/RoleSelectMenuInteraction.js +33 -0
- package/src/structures/SelectMenuBuilder.js +26 -0
- package/src/structures/SelectMenuComponent.js +26 -0
- package/src/structures/SelectMenuInteraction.js +26 -0
- package/src/structures/SelectMenuOptionBuilder.js +26 -0
- package/src/structures/StageChannel.js +112 -0
- package/src/structures/StageInstance.js +167 -0
- package/src/structures/Sticker.js +272 -0
- package/src/structures/StickerPack.js +95 -0
- package/src/structures/StringSelectMenuBuilder.js +79 -0
- package/src/structures/StringSelectMenuComponent.js +20 -0
- package/src/structures/StringSelectMenuInteraction.js +21 -0
- package/src/structures/StringSelectMenuOptionBuilder.js +49 -0
- package/src/structures/Team.js +117 -0
- package/src/structures/TeamMember.js +70 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextInputBuilder.js +31 -0
- package/src/structures/TextInputComponent.js +29 -0
- package/src/structures/ThreadChannel.js +606 -0
- package/src/structures/ThreadMember.js +113 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/User.js +331 -0
- package/src/structures/UserContextMenuCommandInteraction.js +29 -0
- package/src/structures/UserSelectMenuBuilder.js +31 -0
- package/src/structures/UserSelectMenuComponent.js +11 -0
- package/src/structures/UserSelectMenuInteraction.js +51 -0
- package/src/structures/VoiceChannel.js +96 -0
- package/src/structures/VoiceRegion.js +46 -0
- package/src/structures/VoiceState.js +303 -0
- package/src/structures/Webhook.js +481 -0
- package/src/structures/WelcomeChannel.js +60 -0
- package/src/structures/WelcomeScreen.js +49 -0
- package/src/structures/Widget.js +88 -0
- package/src/structures/WidgetMember.js +99 -0
- package/src/structures/interfaces/Application.js +108 -0
- package/src/structures/interfaces/Collector.js +335 -0
- package/src/structures/interfaces/InteractionResponses.js +320 -0
- package/src/structures/interfaces/TextBasedChannel.js +413 -0
- package/src/util/APITypes.js +456 -0
- package/src/util/ActivityFlagsBitField.js +26 -0
- package/src/util/ApplicationFlagsBitField.js +26 -0
- package/src/util/BitField.js +176 -0
- package/src/util/ChannelFlagsBitField.js +41 -0
- package/src/util/Channels.js +150 -0
- package/src/util/Colors.js +73 -0
- package/src/util/Components.js +152 -0
- package/src/util/Constants.js +230 -0
- package/src/util/DataResolver.js +140 -0
- package/src/util/Enums.js +13 -0
- package/src/util/Events.js +160 -0
- package/src/util/Formatters.js +413 -0
- package/src/util/GuildMemberFlagsBitField.js +41 -0
- package/src/util/IntentsBitField.js +34 -0
- package/src/util/LimitedCollection.js +68 -0
- package/src/util/MessageFlagsBitField.js +32 -0
- package/src/util/Options.js +216 -0
- package/src/util/Partials.js +44 -0
- package/src/util/PermissionsBitField.js +104 -0
- package/src/util/ShardEvents.js +27 -0
- package/src/util/Status.js +33 -0
- package/src/util/Sweepers.js +467 -0
- package/src/util/SystemChannelFlagsBitField.js +43 -0
- package/src/util/ThreadMemberFlagsBitField.js +31 -0
- package/src/util/Transformers.js +36 -0
- package/src/util/UserFlagsBitField.js +32 -0
- package/src/util/Util.js +394 -0
- package/src/util/WebSocketShardEvents.js +25 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { ApplicationCommandOptionType } = require('discord-api-types/v10');
|
|
4
|
+
const { DiscordjsTypeError, ErrorCodes } = require('../errors');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A resolver for command interaction options.
|
|
8
|
+
*/
|
|
9
|
+
class CommandInteractionOptionResolver {
|
|
10
|
+
constructor(client, options, resolved) {
|
|
11
|
+
/**
|
|
12
|
+
* The client that instantiated this.
|
|
13
|
+
* @name CommandInteractionOptionResolver#client
|
|
14
|
+
* @type {Client}
|
|
15
|
+
* @readonly
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(this, 'client', { value: client });
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The name of the subcommand group.
|
|
21
|
+
* @type {?string}
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
this._group = null;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The name of the subcommand.
|
|
28
|
+
* @type {?string}
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
this._subcommand = null;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The bottom-level options for the interaction.
|
|
35
|
+
* If there is a subcommand (or subcommand and group), this is the options for the subcommand.
|
|
36
|
+
* @type {CommandInteractionOption[]}
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
this._hoistedOptions = options;
|
|
40
|
+
|
|
41
|
+
// Hoist subcommand group if present
|
|
42
|
+
if (this._hoistedOptions[0]?.type === ApplicationCommandOptionType.SubcommandGroup) {
|
|
43
|
+
this._group = this._hoistedOptions[0].name;
|
|
44
|
+
this._hoistedOptions = this._hoistedOptions[0].options ?? [];
|
|
45
|
+
}
|
|
46
|
+
// Hoist subcommand if present
|
|
47
|
+
if (this._hoistedOptions[0]?.type === ApplicationCommandOptionType.Subcommand) {
|
|
48
|
+
this._subcommand = this._hoistedOptions[0].name;
|
|
49
|
+
this._hoistedOptions = this._hoistedOptions[0].options ?? [];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The interaction options array.
|
|
54
|
+
* @name CommandInteractionOptionResolver#data
|
|
55
|
+
* @type {ReadonlyArray<CommandInteractionOption>}
|
|
56
|
+
* @readonly
|
|
57
|
+
*/
|
|
58
|
+
Object.defineProperty(this, 'data', { value: Object.freeze([...options]) });
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The interaction resolved data
|
|
62
|
+
* @name CommandInteractionOptionResolver#resolved
|
|
63
|
+
* @type {?Readonly<CommandInteractionResolvedData>}
|
|
64
|
+
*/
|
|
65
|
+
Object.defineProperty(this, 'resolved', { value: resolved ? Object.freeze(resolved) : null });
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Gets an option by its name.
|
|
70
|
+
* @param {string} name The name of the option.
|
|
71
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
72
|
+
* @returns {?CommandInteractionOption} The option, if found.
|
|
73
|
+
*/
|
|
74
|
+
get(name, required = false) {
|
|
75
|
+
const option = this._hoistedOptions.find(opt => opt.name === name);
|
|
76
|
+
if (!option) {
|
|
77
|
+
if (required) {
|
|
78
|
+
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionNotFound, name);
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return option;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Gets an option by name and property and checks its type.
|
|
87
|
+
* @param {string} name The name of the option.
|
|
88
|
+
* @param {ApplicationCommandOptionType[]} allowedTypes The allowed types of the option.
|
|
89
|
+
* @param {string[]} properties The properties to check for for `required`.
|
|
90
|
+
* @param {boolean} required Whether to throw an error if the option is not found.
|
|
91
|
+
* @returns {?CommandInteractionOption} The option, if found.
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
_getTypedOption(name, allowedTypes, properties, required) {
|
|
95
|
+
const option = this.get(name, required);
|
|
96
|
+
if (!option) {
|
|
97
|
+
return null;
|
|
98
|
+
} else if (!allowedTypes.includes(option.type)) {
|
|
99
|
+
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionType, name, option.type, allowedTypes.join(', '));
|
|
100
|
+
} else if (required && properties.every(prop => option[prop] === null || option[prop] === undefined)) {
|
|
101
|
+
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionEmpty, name, option.type);
|
|
102
|
+
}
|
|
103
|
+
return option;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Gets the selected subcommand.
|
|
108
|
+
* @param {boolean} [required=true] Whether to throw an error if there is no subcommand.
|
|
109
|
+
* @returns {?string} The name of the selected subcommand, or null if not set and not required.
|
|
110
|
+
*/
|
|
111
|
+
getSubcommand(required = true) {
|
|
112
|
+
if (required && !this._subcommand) {
|
|
113
|
+
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionNoSubcommand);
|
|
114
|
+
}
|
|
115
|
+
return this._subcommand;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Gets the selected subcommand group.
|
|
120
|
+
* @param {boolean} [required=false] Whether to throw an error if there is no subcommand group.
|
|
121
|
+
* @returns {?string} The name of the selected subcommand group, or null if not set and not required.
|
|
122
|
+
*/
|
|
123
|
+
getSubcommandGroup(required = false) {
|
|
124
|
+
if (required && !this._group) {
|
|
125
|
+
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionNoSubcommandGroup);
|
|
126
|
+
}
|
|
127
|
+
return this._group;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Gets a boolean option.
|
|
132
|
+
* @param {string} name The name of the option.
|
|
133
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
134
|
+
* @returns {?boolean} The value of the option, or null if not set and not required.
|
|
135
|
+
*/
|
|
136
|
+
getBoolean(name, required = false) {
|
|
137
|
+
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Boolean], ['value'], required);
|
|
138
|
+
return option?.value ?? null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Gets a channel option.
|
|
143
|
+
* @param {string} name The name of the option.
|
|
144
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
145
|
+
* @param {ChannelType[]} [channelTypes=[]] The allowed types of channels. If empty, all channel types are allowed.
|
|
146
|
+
* @returns {?(GuildChannel|ThreadChannel|APIChannel)}
|
|
147
|
+
* The value of the option, or null if not set and not required.
|
|
148
|
+
*/
|
|
149
|
+
getChannel(name, required = false, channelTypes = []) {
|
|
150
|
+
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Channel], ['channel'], required);
|
|
151
|
+
const channel = option?.channel ?? null;
|
|
152
|
+
|
|
153
|
+
if (channel && channelTypes.length > 0 && !channelTypes.includes(channel.type)) {
|
|
154
|
+
throw new DiscordjsTypeError(
|
|
155
|
+
ErrorCodes.CommandInteractionOptionInvalidChannelType,
|
|
156
|
+
name,
|
|
157
|
+
channel.type,
|
|
158
|
+
channelTypes.join(', '),
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return channel;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Gets a string option.
|
|
167
|
+
* @param {string} name The name of the option.
|
|
168
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
169
|
+
* @returns {?string} The value of the option, or null if not set and not required.
|
|
170
|
+
*/
|
|
171
|
+
getString(name, required = false) {
|
|
172
|
+
const option = this._getTypedOption(name, [ApplicationCommandOptionType.String], ['value'], required);
|
|
173
|
+
return option?.value ?? null;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Gets an integer option.
|
|
178
|
+
* @param {string} name The name of the option.
|
|
179
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
180
|
+
* @returns {?number} The value of the option, or null if not set and not required.
|
|
181
|
+
*/
|
|
182
|
+
getInteger(name, required = false) {
|
|
183
|
+
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Integer], ['value'], required);
|
|
184
|
+
return option?.value ?? null;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Gets a number option.
|
|
189
|
+
* @param {string} name The name of the option.
|
|
190
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
191
|
+
* @returns {?number} The value of the option, or null if not set and not required.
|
|
192
|
+
*/
|
|
193
|
+
getNumber(name, required = false) {
|
|
194
|
+
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Number], ['value'], required);
|
|
195
|
+
return option?.value ?? null;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Gets a user option.
|
|
200
|
+
* @param {string} name The name of the option.
|
|
201
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
202
|
+
* @returns {?User} The value of the option, or null if not set and not required.
|
|
203
|
+
*/
|
|
204
|
+
getUser(name, required = false) {
|
|
205
|
+
const option = this._getTypedOption(
|
|
206
|
+
name,
|
|
207
|
+
[ApplicationCommandOptionType.User, ApplicationCommandOptionType.Mentionable],
|
|
208
|
+
['user'],
|
|
209
|
+
required,
|
|
210
|
+
);
|
|
211
|
+
return option?.user ?? null;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Gets a member option.
|
|
216
|
+
* @param {string} name The name of the option.
|
|
217
|
+
* @returns {?(GuildMember|APIGuildMember)}
|
|
218
|
+
* The value of the option, or null if the user is not present in the guild or the option is not set.
|
|
219
|
+
*/
|
|
220
|
+
getMember(name) {
|
|
221
|
+
const option = this._getTypedOption(
|
|
222
|
+
name,
|
|
223
|
+
[ApplicationCommandOptionType.User, ApplicationCommandOptionType.Mentionable],
|
|
224
|
+
['member'],
|
|
225
|
+
false,
|
|
226
|
+
);
|
|
227
|
+
return option?.member ?? null;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Gets a role option.
|
|
232
|
+
* @param {string} name The name of the option.
|
|
233
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
234
|
+
* @returns {?(Role|APIRole)} The value of the option, or null if not set and not required.
|
|
235
|
+
*/
|
|
236
|
+
getRole(name, required = false) {
|
|
237
|
+
const option = this._getTypedOption(
|
|
238
|
+
name,
|
|
239
|
+
[ApplicationCommandOptionType.Role, ApplicationCommandOptionType.Mentionable],
|
|
240
|
+
['role'],
|
|
241
|
+
required,
|
|
242
|
+
);
|
|
243
|
+
return option?.role ?? null;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Gets an attachment option.
|
|
248
|
+
* @param {string} name The name of the option.
|
|
249
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
250
|
+
* @returns {?Attachment} The value of the option, or null if not set and not required.
|
|
251
|
+
*/
|
|
252
|
+
getAttachment(name, required = false) {
|
|
253
|
+
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Attachment], ['attachment'], required);
|
|
254
|
+
return option?.attachment ?? null;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Gets a mentionable option.
|
|
259
|
+
* @param {string} name The name of the option.
|
|
260
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
261
|
+
* @returns {?(User|GuildMember|APIGuildMember|Role|APIRole)}
|
|
262
|
+
* The value of the option, or null if not set and not required.
|
|
263
|
+
*/
|
|
264
|
+
getMentionable(name, required = false) {
|
|
265
|
+
const option = this._getTypedOption(
|
|
266
|
+
name,
|
|
267
|
+
[ApplicationCommandOptionType.Mentionable],
|
|
268
|
+
['user', 'member', 'role'],
|
|
269
|
+
required,
|
|
270
|
+
);
|
|
271
|
+
return option?.member ?? option?.user ?? option?.role ?? null;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Gets a message option.
|
|
276
|
+
* @param {string} name The name of the option.
|
|
277
|
+
* @param {boolean} [required=false] Whether to throw an error if the option is not found.
|
|
278
|
+
* @returns {?Message}
|
|
279
|
+
* The value of the option, or null if not set and not required.
|
|
280
|
+
*/
|
|
281
|
+
getMessage(name, required = false) {
|
|
282
|
+
const option = this._getTypedOption(name, ['_MESSAGE'], ['message'], required);
|
|
283
|
+
return option?.message ?? null;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* The full autocomplete option object.
|
|
288
|
+
* @typedef {Object} AutocompleteFocusedOption
|
|
289
|
+
* @property {string} name The name of the option
|
|
290
|
+
* @property {ApplicationCommandOptionType} type The type of the application command option
|
|
291
|
+
* @property {string} value The value of the option
|
|
292
|
+
* @property {boolean} focused Whether this option is currently in focus for autocomplete
|
|
293
|
+
*/
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Gets the focused option.
|
|
297
|
+
* @param {boolean} [getFull=false] Whether to get the full option object
|
|
298
|
+
* @returns {string|AutocompleteFocusedOption}
|
|
299
|
+
* The value of the option, or the whole option if getFull is true
|
|
300
|
+
*/
|
|
301
|
+
getFocused(getFull = false) {
|
|
302
|
+
const focusedOption = this._hoistedOptions.find(option => option.focused);
|
|
303
|
+
if (!focusedOption) throw new DiscordjsTypeError(ErrorCodes.AutocompleteInteractionOptionNoFocusedOption);
|
|
304
|
+
return getFull ? focusedOption : focusedOption.value;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
module.exports = CommandInteractionOptionResolver;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const isEqual = require('fast-deep-equal');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a component
|
|
7
|
+
*/
|
|
8
|
+
class Component {
|
|
9
|
+
constructor(data) {
|
|
10
|
+
/**
|
|
11
|
+
* The API data associated with this component
|
|
12
|
+
* @type {APIMessageComponent}
|
|
13
|
+
*/
|
|
14
|
+
this.data = data;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The type of the component
|
|
19
|
+
* @type {ComponentType}
|
|
20
|
+
* @readonly
|
|
21
|
+
*/
|
|
22
|
+
get type() {
|
|
23
|
+
return this.data.type;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Whether or not the given components are equal
|
|
28
|
+
* @param {Component|APIMessageComponent} other The component to compare against
|
|
29
|
+
* @returns {boolean}
|
|
30
|
+
*/
|
|
31
|
+
equals(other) {
|
|
32
|
+
if (other instanceof Component) {
|
|
33
|
+
return isEqual(other.data, this.data);
|
|
34
|
+
}
|
|
35
|
+
return isEqual(other, this.data);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Returns the API-compatible JSON for this component
|
|
40
|
+
* @returns {APIMessageComponent}
|
|
41
|
+
*/
|
|
42
|
+
toJSON() {
|
|
43
|
+
return { ...this.data };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = Component;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { lazy } = require('@discordjs/util');
|
|
4
|
+
const { ApplicationCommandOptionType } = require('discord-api-types/v10');
|
|
5
|
+
const CommandInteraction = require('./CommandInteraction');
|
|
6
|
+
const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
|
|
7
|
+
|
|
8
|
+
const getMessage = lazy(() => require('./Message').Message);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents a context menu interaction.
|
|
12
|
+
* @extends {CommandInteraction}
|
|
13
|
+
*/
|
|
14
|
+
class ContextMenuCommandInteraction extends CommandInteraction {
|
|
15
|
+
constructor(client, data) {
|
|
16
|
+
super(client, data);
|
|
17
|
+
/**
|
|
18
|
+
* The target of the interaction, parsed into options
|
|
19
|
+
* @type {CommandInteractionOptionResolver}
|
|
20
|
+
*/
|
|
21
|
+
this.options = new CommandInteractionOptionResolver(
|
|
22
|
+
this.client,
|
|
23
|
+
this.resolveContextMenuOptions(data.data),
|
|
24
|
+
this.transformResolved(data.data.resolved),
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The id of the target of this interaction
|
|
29
|
+
* @type {Snowflake}
|
|
30
|
+
*/
|
|
31
|
+
this.targetId = data.data.target_id;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Resolves and transforms options received from the API for a context menu interaction.
|
|
36
|
+
* @param {APIApplicationCommandInteractionData} data The interaction data
|
|
37
|
+
* @returns {CommandInteractionOption[]}
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
resolveContextMenuOptions({ target_id, resolved }) {
|
|
41
|
+
const result = [];
|
|
42
|
+
|
|
43
|
+
if (resolved.users?.[target_id]) {
|
|
44
|
+
result.push(
|
|
45
|
+
this.transformOption({ name: 'user', type: ApplicationCommandOptionType.User, value: target_id }, resolved),
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (resolved.messages?.[target_id]) {
|
|
50
|
+
result.push({
|
|
51
|
+
name: 'message',
|
|
52
|
+
type: '_MESSAGE',
|
|
53
|
+
value: target_id,
|
|
54
|
+
message:
|
|
55
|
+
this.channel?.messages._add(resolved.messages[target_id]) ??
|
|
56
|
+
new (getMessage())(this.client, resolved.messages[target_id]),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
module.exports = ContextMenuCommandInteraction;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { userMention } = require('@discordjs/builders');
|
|
4
|
+
const { ChannelType } = require('discord-api-types/v10');
|
|
5
|
+
const { BaseChannel } = require('./BaseChannel');
|
|
6
|
+
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
|
7
|
+
const MessageManager = require('../managers/MessageManager');
|
|
8
|
+
const Partials = require('../util/Partials');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents a direct message channel between two users.
|
|
12
|
+
* @extends {BaseChannel}
|
|
13
|
+
* @implements {TextBasedChannel}
|
|
14
|
+
*/
|
|
15
|
+
class DMChannel extends BaseChannel {
|
|
16
|
+
constructor(client, data) {
|
|
17
|
+
super(client, data);
|
|
18
|
+
|
|
19
|
+
// Override the channel type so partials have a known type
|
|
20
|
+
this.type = ChannelType.DM;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* A manager of the messages belonging to this channel
|
|
24
|
+
* @type {MessageManager}
|
|
25
|
+
*/
|
|
26
|
+
this.messages = new MessageManager(this);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
_patch(data) {
|
|
30
|
+
super._patch(data);
|
|
31
|
+
|
|
32
|
+
if (data.recipients) {
|
|
33
|
+
const recipient = data.recipients[0];
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The recipient's id
|
|
37
|
+
* @type {Snowflake}
|
|
38
|
+
*/
|
|
39
|
+
this.recipientId = recipient.id;
|
|
40
|
+
|
|
41
|
+
if ('username' in recipient || this.client.options.partials.includes(Partials.Users)) {
|
|
42
|
+
this.client.users._add(recipient);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if ('last_message_id' in data) {
|
|
47
|
+
/**
|
|
48
|
+
* The channel's last message id, if one was sent
|
|
49
|
+
* @type {?Snowflake}
|
|
50
|
+
*/
|
|
51
|
+
this.lastMessageId = data.last_message_id;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if ('last_pin_timestamp' in data) {
|
|
55
|
+
/**
|
|
56
|
+
* The timestamp when the last pinned message was pinned, if there was one
|
|
57
|
+
* @type {?number}
|
|
58
|
+
*/
|
|
59
|
+
this.lastPinTimestamp = Date.parse(data.last_pin_timestamp);
|
|
60
|
+
} else {
|
|
61
|
+
this.lastPinTimestamp ??= null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Whether this DMChannel is a partial
|
|
67
|
+
* @type {boolean}
|
|
68
|
+
* @readonly
|
|
69
|
+
*/
|
|
70
|
+
get partial() {
|
|
71
|
+
return this.lastMessageId === undefined;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The recipient on the other end of the DM
|
|
76
|
+
* @type {?User}
|
|
77
|
+
* @readonly
|
|
78
|
+
*/
|
|
79
|
+
get recipient() {
|
|
80
|
+
return this.client.users.resolve(this.recipientId);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Fetch this DMChannel.
|
|
85
|
+
* @param {boolean} [force=true] Whether to skip the cache check and request the API
|
|
86
|
+
* @returns {Promise<DMChannel>}
|
|
87
|
+
*/
|
|
88
|
+
fetch(force = true) {
|
|
89
|
+
return this.client.users.createDM(this.recipientId, { force });
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* When concatenated with a string, this automatically returns the recipient's mention instead of the
|
|
94
|
+
* DMChannel object.
|
|
95
|
+
* @returns {string}
|
|
96
|
+
* @example
|
|
97
|
+
* // Logs: Hello from <@123456789012345678>!
|
|
98
|
+
* console.log(`Hello from ${channel}!`);
|
|
99
|
+
*/
|
|
100
|
+
toString() {
|
|
101
|
+
return userMention(this.recipientId);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// These are here only for documentation purposes - they are implemented by TextBasedChannel
|
|
105
|
+
/* eslint-disable no-empty-function */
|
|
106
|
+
get lastMessage() {}
|
|
107
|
+
get lastPinAt() {}
|
|
108
|
+
send() {}
|
|
109
|
+
sendTyping() {}
|
|
110
|
+
createMessageCollector() {}
|
|
111
|
+
awaitMessages() {}
|
|
112
|
+
createMessageComponentCollector() {}
|
|
113
|
+
awaitMessageComponent() {}
|
|
114
|
+
// Doesn't work on DM channels; bulkDelete() {}
|
|
115
|
+
// Doesn't work on DM channels; fetchWebhooks() {}
|
|
116
|
+
// Doesn't work on DM channels; createWebhook() {}
|
|
117
|
+
// Doesn't work on DM channels; setRateLimitPerUser() {}
|
|
118
|
+
// Doesn't work on DM channels; setNSFW() {}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
TextBasedChannel.applyToClass(DMChannel, true, [
|
|
122
|
+
'bulkDelete',
|
|
123
|
+
'fetchWebhooks',
|
|
124
|
+
'createWebhook',
|
|
125
|
+
'setRateLimitPerUser',
|
|
126
|
+
'setNSFW',
|
|
127
|
+
]);
|
|
128
|
+
|
|
129
|
+
module.exports = DMChannel;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { BaseChannel } = require('./BaseChannel');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a channel that displays a directory of guilds.
|
|
7
|
+
* @extends {BaseChannel}
|
|
8
|
+
*/
|
|
9
|
+
class DirectoryChannel extends BaseChannel {
|
|
10
|
+
constructor(guild, data, client) {
|
|
11
|
+
super(client, data);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The guild the channel is in
|
|
15
|
+
* @type {InviteGuild}
|
|
16
|
+
*/
|
|
17
|
+
this.guild = guild;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The id of the guild the channel is in
|
|
21
|
+
* @type {Snowflake}
|
|
22
|
+
*/
|
|
23
|
+
this.guildId = guild.id;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
_patch(data) {
|
|
27
|
+
super._patch(data);
|
|
28
|
+
/**
|
|
29
|
+
* The channel's name
|
|
30
|
+
* @type {string}
|
|
31
|
+
*/
|
|
32
|
+
this.name = data.name;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
module.exports = DirectoryChannel;
|