@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,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { InteractionResponseType, Routes } = require('discord-api-types/v10');
|
|
4
|
+
const BaseInteraction = require('./BaseInteraction');
|
|
5
|
+
const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
|
|
6
|
+
const { DiscordjsError, ErrorCodes } = require('../errors');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Represents an autocomplete interaction.
|
|
10
|
+
* @extends {BaseInteraction}
|
|
11
|
+
*/
|
|
12
|
+
class AutocompleteInteraction extends BaseInteraction {
|
|
13
|
+
constructor(client, data) {
|
|
14
|
+
super(client, data);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The id of the channel this interaction was sent in
|
|
18
|
+
* @type {Snowflake}
|
|
19
|
+
* @name AutocompleteInteraction#channelId
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The invoked application command's id
|
|
24
|
+
* @type {Snowflake}
|
|
25
|
+
*/
|
|
26
|
+
this.commandId = data.data.id;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The invoked application command's name
|
|
30
|
+
* @type {string}
|
|
31
|
+
*/
|
|
32
|
+
this.commandName = data.data.name;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The invoked application command's type
|
|
36
|
+
* @type {ApplicationCommandType}
|
|
37
|
+
*/
|
|
38
|
+
this.commandType = data.data.type;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The id of the guild the invoked application command is registered to
|
|
42
|
+
* @type {?Snowflake}
|
|
43
|
+
*/
|
|
44
|
+
this.commandGuildId = data.data.guild_id ?? null;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Whether this interaction has already received a response
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
*/
|
|
50
|
+
this.responded = false;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The options passed to the command
|
|
54
|
+
* @type {CommandInteractionOptionResolver}
|
|
55
|
+
*/
|
|
56
|
+
this.options = new CommandInteractionOptionResolver(this.client, data.data.options ?? []);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The invoked application command, if it was fetched before
|
|
61
|
+
* @type {?ApplicationCommand}
|
|
62
|
+
*/
|
|
63
|
+
get command() {
|
|
64
|
+
const id = this.commandId;
|
|
65
|
+
return this.guild?.commands.cache.get(id) ?? this.client.application.commands.cache.get(id) ?? null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Sends results for the autocomplete of this interaction.
|
|
70
|
+
* @param {ApplicationCommandOptionChoiceData[]} options The options for the autocomplete
|
|
71
|
+
* @returns {Promise<void>}
|
|
72
|
+
* @example
|
|
73
|
+
* // respond to autocomplete interaction
|
|
74
|
+
* interaction.respond([
|
|
75
|
+
* {
|
|
76
|
+
* name: 'Option 1',
|
|
77
|
+
* value: 'option1',
|
|
78
|
+
* },
|
|
79
|
+
* ])
|
|
80
|
+
* .then(() => console.log('Successfully responded to the autocomplete interaction'))
|
|
81
|
+
* .catch(console.error);
|
|
82
|
+
*/
|
|
83
|
+
async respond(options) {
|
|
84
|
+
if (this.responded) throw new DiscordjsError(ErrorCodes.InteractionAlreadyReplied);
|
|
85
|
+
|
|
86
|
+
await this.client.rest.post(Routes.interactionCallback(this.id, this.token), {
|
|
87
|
+
body: {
|
|
88
|
+
type: InteractionResponseType.ApplicationCommandAutocompleteResult,
|
|
89
|
+
data: { choices: this.client.options.jsonTransformer(options) },
|
|
90
|
+
},
|
|
91
|
+
auth: false,
|
|
92
|
+
});
|
|
93
|
+
this.responded = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
module.exports = AutocompleteInteraction;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { flatten } = require('../util/Util');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a data model that is identifiable by a Snowflake (i.e. Discord API data models).
|
|
7
|
+
* @abstract
|
|
8
|
+
*/
|
|
9
|
+
class Base {
|
|
10
|
+
constructor(client) {
|
|
11
|
+
/**
|
|
12
|
+
* The client that instantiated this
|
|
13
|
+
* @name Base#client
|
|
14
|
+
* @type {Client}
|
|
15
|
+
* @readonly
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(this, 'client', { value: client });
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
_clone() {
|
|
21
|
+
return Object.assign(Object.create(this), this);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
_patch(data) {
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_update(data) {
|
|
29
|
+
const clone = this._clone();
|
|
30
|
+
this._patch(data);
|
|
31
|
+
return clone;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
toJSON(...props) {
|
|
35
|
+
return flatten(this, ...props);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
valueOf() {
|
|
39
|
+
return this.id;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = Base;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { channelLink } = require('@discordjs/builders');
|
|
4
|
+
const { DiscordSnowflake } = require('@sapphire/snowflake');
|
|
5
|
+
const { ChannelType, Routes } = require('discord-api-types/v10');
|
|
6
|
+
const Base = require('./Base');
|
|
7
|
+
const ChannelFlagsBitField = require('../util/ChannelFlagsBitField');
|
|
8
|
+
const { ThreadChannelTypes } = require('../util/Constants');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents any channel on Discord.
|
|
12
|
+
* @extends {Base}
|
|
13
|
+
* @abstract
|
|
14
|
+
*/
|
|
15
|
+
class BaseChannel extends Base {
|
|
16
|
+
constructor(client, data, immediatePatch = true) {
|
|
17
|
+
super(client);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The type of the channel
|
|
21
|
+
* @type {ChannelType}
|
|
22
|
+
*/
|
|
23
|
+
this.type = data.type;
|
|
24
|
+
|
|
25
|
+
if (data && immediatePatch) this._patch(data);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_patch(data) {
|
|
29
|
+
if ('flags' in data) {
|
|
30
|
+
/**
|
|
31
|
+
* The flags that are applied to the channel.
|
|
32
|
+
* <info>This is only `null` in a {@link PartialGroupDMChannel}. In all other cases, it is not `null`.</info>
|
|
33
|
+
* @type {?Readonly<ChannelFlagsBitField>}
|
|
34
|
+
*/
|
|
35
|
+
this.flags = new ChannelFlagsBitField(data.flags).freeze();
|
|
36
|
+
} else {
|
|
37
|
+
this.flags ??= new ChannelFlagsBitField().freeze();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The channel's id
|
|
42
|
+
* @type {Snowflake}
|
|
43
|
+
*/
|
|
44
|
+
this.id = data.id;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The timestamp the channel was created at
|
|
49
|
+
* @type {number}
|
|
50
|
+
* @readonly
|
|
51
|
+
*/
|
|
52
|
+
get createdTimestamp() {
|
|
53
|
+
return DiscordSnowflake.timestampFrom(this.id);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The time the channel was created at
|
|
58
|
+
* @type {Date}
|
|
59
|
+
* @readonly
|
|
60
|
+
*/
|
|
61
|
+
get createdAt() {
|
|
62
|
+
return new Date(this.createdTimestamp);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The URL to the channel
|
|
67
|
+
* @type {string}
|
|
68
|
+
* @readonly
|
|
69
|
+
*/
|
|
70
|
+
get url() {
|
|
71
|
+
return this.isDMBased() ? channelLink(this.id) : channelLink(this.id, this.guildId);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Whether this Channel is a partial
|
|
76
|
+
* <info>This is always false outside of DM channels.</info>
|
|
77
|
+
* @type {boolean}
|
|
78
|
+
* @readonly
|
|
79
|
+
*/
|
|
80
|
+
get partial() {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.
|
|
86
|
+
* @returns {string}
|
|
87
|
+
* @example
|
|
88
|
+
* // Logs: Hello from <#123456789012345678>!
|
|
89
|
+
* console.log(`Hello from ${channel}!`);
|
|
90
|
+
*/
|
|
91
|
+
toString() {
|
|
92
|
+
return `<#${this.id}>`;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Deletes this channel.
|
|
97
|
+
* @returns {Promise<BaseChannel>}
|
|
98
|
+
* @example
|
|
99
|
+
* // Delete the channel
|
|
100
|
+
* channel.delete()
|
|
101
|
+
* .then(console.log)
|
|
102
|
+
* .catch(console.error);
|
|
103
|
+
*/
|
|
104
|
+
async delete() {
|
|
105
|
+
await this.client.rest.delete(Routes.channel(this.id));
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Fetches this channel.
|
|
111
|
+
* @param {boolean} [force=true] Whether to skip the cache check and request the API
|
|
112
|
+
* @returns {Promise<BaseChannel>}
|
|
113
|
+
*/
|
|
114
|
+
fetch(force = true) {
|
|
115
|
+
return this.client.channels.fetch(this.id, { force });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Indicates whether this channel is a {@link ThreadChannel}.
|
|
120
|
+
* @returns {boolean}
|
|
121
|
+
*/
|
|
122
|
+
isThread() {
|
|
123
|
+
return ThreadChannelTypes.includes(this.type);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Indicates whether this channel is {@link TextBasedChannels text-based}.
|
|
128
|
+
* @returns {boolean}
|
|
129
|
+
*/
|
|
130
|
+
isTextBased() {
|
|
131
|
+
return 'messages' in this;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Indicates whether this channel is DM-based (either a {@link DMChannel} or a {@link PartialGroupDMChannel}).
|
|
136
|
+
* @returns {boolean}
|
|
137
|
+
*/
|
|
138
|
+
isDMBased() {
|
|
139
|
+
return [ChannelType.DM, ChannelType.GroupDM].includes(this.type);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Indicates whether this channel is {@link BaseGuildVoiceChannel voice-based}.
|
|
144
|
+
* @returns {boolean}
|
|
145
|
+
*/
|
|
146
|
+
isVoiceBased() {
|
|
147
|
+
return 'bitrate' in this;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
toJSON(...props) {
|
|
151
|
+
return super.toJSON({ createdTimestamp: true }, ...props);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
exports.BaseChannel = BaseChannel;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @external APIChannel
|
|
159
|
+
* @see {@link https://discord.com/developers/docs/resources/channel#channel-object}
|
|
160
|
+
*/
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { makeURLSearchParams } = require('@discordjs/rest');
|
|
4
|
+
const { DiscordSnowflake } = require('@sapphire/snowflake');
|
|
5
|
+
const { Routes, GuildFeature } = require('discord-api-types/v10');
|
|
6
|
+
const Base = require('./Base');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.
|
|
10
|
+
* @extends {Base}
|
|
11
|
+
* @abstract
|
|
12
|
+
*/
|
|
13
|
+
class BaseGuild extends Base {
|
|
14
|
+
constructor(client, data) {
|
|
15
|
+
super(client);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The guild's id
|
|
19
|
+
* @type {Snowflake}
|
|
20
|
+
*/
|
|
21
|
+
this.id = data.id;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The name of this guild
|
|
25
|
+
* @type {string}
|
|
26
|
+
*/
|
|
27
|
+
this.name = data.name;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The icon hash of this guild
|
|
31
|
+
* @type {?string}
|
|
32
|
+
*/
|
|
33
|
+
this.icon = data.icon;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* An array of features available to this guild
|
|
37
|
+
* @type {GuildFeature[]}
|
|
38
|
+
*/
|
|
39
|
+
this.features = data.features;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The timestamp this guild was created at
|
|
44
|
+
* @type {number}
|
|
45
|
+
* @readonly
|
|
46
|
+
*/
|
|
47
|
+
get createdTimestamp() {
|
|
48
|
+
return DiscordSnowflake.timestampFrom(this.id);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The time this guild was created at
|
|
53
|
+
* @type {Date}
|
|
54
|
+
* @readonly
|
|
55
|
+
*/
|
|
56
|
+
get createdAt() {
|
|
57
|
+
return new Date(this.createdTimestamp);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The acronym that shows up in place of a guild icon
|
|
62
|
+
* @type {string}
|
|
63
|
+
* @readonly
|
|
64
|
+
*/
|
|
65
|
+
get nameAcronym() {
|
|
66
|
+
return this.name
|
|
67
|
+
.replace(/'s /g, ' ')
|
|
68
|
+
.replace(/\w+/g, e => e[0])
|
|
69
|
+
.replace(/\s/g, '');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Whether this guild is partnered
|
|
74
|
+
* @type {boolean}
|
|
75
|
+
* @readonly
|
|
76
|
+
*/
|
|
77
|
+
get partnered() {
|
|
78
|
+
return this.features.includes(GuildFeature.Partnered);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Whether this guild is verified
|
|
83
|
+
* @type {boolean}
|
|
84
|
+
* @readonly
|
|
85
|
+
*/
|
|
86
|
+
get verified() {
|
|
87
|
+
return this.features.includes(GuildFeature.Verified);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The URL to this guild's icon.
|
|
92
|
+
* @param {ImageURLOptions} [options={}] Options for the image URL
|
|
93
|
+
* @returns {?string}
|
|
94
|
+
*/
|
|
95
|
+
iconURL(options = {}) {
|
|
96
|
+
return this.icon && this.client.rest.cdn.icon(this.id, this.icon, options);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Fetches this guild.
|
|
101
|
+
* @returns {Promise<Guild>}
|
|
102
|
+
*/
|
|
103
|
+
async fetch() {
|
|
104
|
+
const data = await this.client.rest.get(Routes.guild(this.id), {
|
|
105
|
+
query: makeURLSearchParams({ with_counts: true }),
|
|
106
|
+
});
|
|
107
|
+
return this.client.guilds._add(data);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* When concatenated with a string, this automatically returns the guild's name instead of the Guild object.
|
|
112
|
+
* @returns {string}
|
|
113
|
+
*/
|
|
114
|
+
toString() {
|
|
115
|
+
return this.name;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
module.exports = BaseGuild;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Emoji } = require('./Emoji');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.
|
|
7
|
+
* @extends {Emoji}
|
|
8
|
+
* @abstract
|
|
9
|
+
*/
|
|
10
|
+
class BaseGuildEmoji extends Emoji {
|
|
11
|
+
constructor(client, data, guild) {
|
|
12
|
+
super(client, data);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The guild this emoji is a part of
|
|
16
|
+
* @type {Guild|GuildPreview}
|
|
17
|
+
*/
|
|
18
|
+
this.guild = guild;
|
|
19
|
+
|
|
20
|
+
this.requiresColons = null;
|
|
21
|
+
this.managed = null;
|
|
22
|
+
this.available = null;
|
|
23
|
+
|
|
24
|
+
this._patch(data);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
_patch(data) {
|
|
28
|
+
if ('name' in data) this.name = data.name;
|
|
29
|
+
|
|
30
|
+
if ('require_colons' in data) {
|
|
31
|
+
/**
|
|
32
|
+
* Whether or not this emoji requires colons surrounding it
|
|
33
|
+
* @type {?boolean}
|
|
34
|
+
*/
|
|
35
|
+
this.requiresColons = data.require_colons;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if ('managed' in data) {
|
|
39
|
+
/**
|
|
40
|
+
* Whether this emoji is managed by an external service
|
|
41
|
+
* @type {?boolean}
|
|
42
|
+
*/
|
|
43
|
+
this.managed = data.managed;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if ('available' in data) {
|
|
47
|
+
/**
|
|
48
|
+
* Whether this emoji is available
|
|
49
|
+
* @type {?boolean}
|
|
50
|
+
*/
|
|
51
|
+
this.available = data.available;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = BaseGuildEmoji;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const GuildChannel = require('./GuildChannel');
|
|
4
|
+
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
|
5
|
+
const GuildTextThreadManager = require('../managers/GuildTextThreadManager');
|
|
6
|
+
const MessageManager = require('../managers/MessageManager');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Represents a text-based guild channel on Discord.
|
|
10
|
+
* @extends {GuildChannel}
|
|
11
|
+
* @implements {TextBasedChannel}
|
|
12
|
+
*/
|
|
13
|
+
class BaseGuildTextChannel extends GuildChannel {
|
|
14
|
+
constructor(guild, data, client) {
|
|
15
|
+
super(guild, data, client, false);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A manager of the messages sent to this channel
|
|
19
|
+
* @type {MessageManager}
|
|
20
|
+
*/
|
|
21
|
+
this.messages = new MessageManager(this);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A manager of the threads belonging to this channel
|
|
25
|
+
* @type {GuildTextThreadManager}
|
|
26
|
+
*/
|
|
27
|
+
this.threads = new GuildTextThreadManager(this);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* If the guild considers this channel NSFW
|
|
31
|
+
* @type {boolean}
|
|
32
|
+
*/
|
|
33
|
+
this.nsfw = Boolean(data.nsfw);
|
|
34
|
+
|
|
35
|
+
this._patch(data);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
_patch(data) {
|
|
39
|
+
super._patch(data);
|
|
40
|
+
|
|
41
|
+
if ('topic' in data) {
|
|
42
|
+
/**
|
|
43
|
+
* The topic of the text channel
|
|
44
|
+
* @type {?string}
|
|
45
|
+
*/
|
|
46
|
+
this.topic = data.topic;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if ('nsfw' in data) {
|
|
50
|
+
this.nsfw = Boolean(data.nsfw);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if ('last_message_id' in data) {
|
|
54
|
+
/**
|
|
55
|
+
* The last message id sent in the channel, if one was sent
|
|
56
|
+
* @type {?Snowflake}
|
|
57
|
+
*/
|
|
58
|
+
this.lastMessageId = data.last_message_id;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if ('last_pin_timestamp' in data) {
|
|
62
|
+
/**
|
|
63
|
+
* The timestamp when the last pinned message was pinned, if there was one
|
|
64
|
+
* @type {?number}
|
|
65
|
+
*/
|
|
66
|
+
this.lastPinTimestamp = data.last_pin_timestamp ? Date.parse(data.last_pin_timestamp) : null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if ('default_auto_archive_duration' in data) {
|
|
70
|
+
/**
|
|
71
|
+
* The default auto archive duration for newly created threads in this channel
|
|
72
|
+
* @type {?ThreadAutoArchiveDuration}
|
|
73
|
+
*/
|
|
74
|
+
this.defaultAutoArchiveDuration = data.default_auto_archive_duration;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if ('messages' in data) {
|
|
78
|
+
for (const message of data.messages) this.messages._add(message);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Sets the default auto archive duration for all newly created threads in this channel.
|
|
84
|
+
* @param {ThreadAutoArchiveDuration} defaultAutoArchiveDuration The new default auto archive duration
|
|
85
|
+
* @param {string} [reason] Reason for changing the channel's default auto archive duration
|
|
86
|
+
* @returns {Promise<TextChannel>}
|
|
87
|
+
*/
|
|
88
|
+
setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason) {
|
|
89
|
+
return this.edit({ defaultAutoArchiveDuration, reason });
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Sets the type of this channel.
|
|
94
|
+
* <info>Only conversion between {@link TextChannel} and {@link NewsChannel} is supported.</info>
|
|
95
|
+
* @param {ChannelType.GuildText|ChannelType.GuildAnnouncement} type The new channel type
|
|
96
|
+
* @param {string} [reason] Reason for changing the channel's type
|
|
97
|
+
* @returns {Promise<GuildChannel>}
|
|
98
|
+
*/
|
|
99
|
+
setType(type, reason) {
|
|
100
|
+
return this.edit({ type, reason });
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Sets a new topic for the guild channel.
|
|
105
|
+
* @param {?string} topic The new topic for the guild channel
|
|
106
|
+
* @param {string} [reason] Reason for changing the guild channel's topic
|
|
107
|
+
* @returns {Promise<GuildChannel>}
|
|
108
|
+
* @example
|
|
109
|
+
* // Set a new channel topic
|
|
110
|
+
* channel.setTopic('needs more rate limiting')
|
|
111
|
+
* .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))
|
|
112
|
+
* .catch(console.error);
|
|
113
|
+
*/
|
|
114
|
+
setTopic(topic, reason) {
|
|
115
|
+
return this.edit({ topic, reason });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Data that can be resolved to an Application. This can be:
|
|
120
|
+
* * An Application
|
|
121
|
+
* * An Activity with associated Application
|
|
122
|
+
* * A Snowflake
|
|
123
|
+
* @typedef {Application|Snowflake} ApplicationResolvable
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Options used to create an invite to a guild channel.
|
|
128
|
+
* @typedef {Object} InviteCreateOptions
|
|
129
|
+
* @property {boolean} [temporary] Whether members that joined via the invite should be automatically
|
|
130
|
+
* kicked after 24 hours if they have not yet received a role
|
|
131
|
+
* @property {number} [maxAge] How long the invite should last (in seconds, 0 for forever)
|
|
132
|
+
* @property {number} [maxUses] Maximum number of uses
|
|
133
|
+
* @property {boolean} [unique] Create a unique invite, or use an existing one with similar settings
|
|
134
|
+
* @property {UserResolvable} [targetUser] The user whose stream to display for this invite,
|
|
135
|
+
* required if `targetType` is {@link InviteTargetType.Stream}, the user must be streaming in the channel
|
|
136
|
+
* @property {ApplicationResolvable} [targetApplication] The embedded application to open for this invite,
|
|
137
|
+
* required if `targetType` is {@link InviteTargetType.Stream}, the application must have the
|
|
138
|
+
* {@link InviteTargetType.EmbeddedApplication} flag
|
|
139
|
+
* @property {InviteTargetType} [targetType] The type of the target for this voice channel invite
|
|
140
|
+
* @property {string} [reason] The reason for creating the invite
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Creates an invite to this guild channel.
|
|
145
|
+
* @param {InviteCreateOptions} [options={}] The options for creating the invite
|
|
146
|
+
* @returns {Promise<Invite>}
|
|
147
|
+
* @example
|
|
148
|
+
* // Create an invite to a channel
|
|
149
|
+
* channel.createInvite()
|
|
150
|
+
* .then(invite => console.log(`Created an invite with a code of ${invite.code}`))
|
|
151
|
+
* .catch(console.error);
|
|
152
|
+
*/
|
|
153
|
+
createInvite(options) {
|
|
154
|
+
return this.guild.invites.create(this.id, options);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Fetches a collection of invites to this guild channel.
|
|
159
|
+
* Resolves with a collection mapping invites by their codes.
|
|
160
|
+
* @param {boolean} [cache=true] Whether or not to cache the fetched invites
|
|
161
|
+
* @returns {Promise<Collection<string, Invite>>}
|
|
162
|
+
*/
|
|
163
|
+
fetchInvites(cache = true) {
|
|
164
|
+
return this.guild.invites.fetch({ channelId: this.id, cache });
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// These are here only for documentation purposes - they are implemented by TextBasedChannel
|
|
168
|
+
/* eslint-disable no-empty-function */
|
|
169
|
+
get lastMessage() {}
|
|
170
|
+
get lastPinAt() {}
|
|
171
|
+
send() {}
|
|
172
|
+
sendTyping() {}
|
|
173
|
+
createMessageCollector() {}
|
|
174
|
+
awaitMessages() {}
|
|
175
|
+
createMessageComponentCollector() {}
|
|
176
|
+
awaitMessageComponent() {}
|
|
177
|
+
bulkDelete() {}
|
|
178
|
+
fetchWebhooks() {}
|
|
179
|
+
createWebhook() {}
|
|
180
|
+
setRateLimitPerUser() {}
|
|
181
|
+
setNSFW() {}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
TextBasedChannel.applyToClass(BaseGuildTextChannel, true);
|
|
185
|
+
|
|
186
|
+
module.exports = BaseGuildTextChannel;
|