@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,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BaseManager = require('./BaseManager');
|
|
4
|
+
const { DiscordjsError, ErrorCodes } = require('../errors');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Manages the API methods of a data model along with a collection of instances.
|
|
8
|
+
* @extends {BaseManager}
|
|
9
|
+
* @abstract
|
|
10
|
+
*/
|
|
11
|
+
class DataManager extends BaseManager {
|
|
12
|
+
constructor(client, holds) {
|
|
13
|
+
super(client);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The data structure belonging to this manager.
|
|
17
|
+
* @name DataManager#holds
|
|
18
|
+
* @type {Function}
|
|
19
|
+
* @private
|
|
20
|
+
* @readonly
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(this, 'holds', { value: holds });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The cache of items for this manager.
|
|
27
|
+
* @type {Collection}
|
|
28
|
+
* @abstract
|
|
29
|
+
*/
|
|
30
|
+
get cache() {
|
|
31
|
+
throw new DiscordjsError(ErrorCodes.NotImplemented, 'get cache', this.constructor.name);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Resolves a data entry to a data Object.
|
|
36
|
+
* @param {string|Object} idOrInstance The id or instance of something in this Manager
|
|
37
|
+
* @returns {?Object} An instance from this Manager
|
|
38
|
+
*/
|
|
39
|
+
resolve(idOrInstance) {
|
|
40
|
+
if (idOrInstance instanceof this.holds) return idOrInstance;
|
|
41
|
+
if (typeof idOrInstance === 'string') return this.cache.get(idOrInstance) ?? null;
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Resolves a data entry to an instance id.
|
|
47
|
+
* @param {string|Object} idOrInstance The id or instance of something in this Manager
|
|
48
|
+
* @returns {?Snowflake}
|
|
49
|
+
*/
|
|
50
|
+
resolveId(idOrInstance) {
|
|
51
|
+
if (idOrInstance instanceof this.holds) return idOrInstance.id;
|
|
52
|
+
if (typeof idOrInstance === 'string') return idOrInstance;
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
valueOf() {
|
|
57
|
+
return this.cache;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
module.exports = DataManager;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const ApplicationCommandManager = require('./ApplicationCommandManager');
|
|
4
|
+
const ApplicationCommandPermissionsManager = require('./ApplicationCommandPermissionsManager');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* An extension for guild-specific application commands.
|
|
8
|
+
* @extends {ApplicationCommandManager}
|
|
9
|
+
*/
|
|
10
|
+
class GuildApplicationCommandManager extends ApplicationCommandManager {
|
|
11
|
+
constructor(guild, iterable) {
|
|
12
|
+
super(guild.client, iterable);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The guild that this manager belongs to
|
|
16
|
+
* @type {Guild}
|
|
17
|
+
*/
|
|
18
|
+
this.guild = guild;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The manager for permissions of arbitrary commands on this guild
|
|
22
|
+
* @type {ApplicationCommandPermissionsManager}
|
|
23
|
+
*/
|
|
24
|
+
this.permissions = new ApplicationCommandPermissionsManager(this);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = GuildApplicationCommandManager;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const process = require('node:process');
|
|
4
|
+
const { Collection } = require('@discordjs/collection');
|
|
5
|
+
const { makeURLSearchParams } = require('@discordjs/rest');
|
|
6
|
+
const { Routes } = require('discord-api-types/v10');
|
|
7
|
+
const CachedManager = require('./CachedManager');
|
|
8
|
+
const { DiscordjsTypeError, DiscordjsError, ErrorCodes } = require('../errors');
|
|
9
|
+
const GuildBan = require('../structures/GuildBan');
|
|
10
|
+
const { GuildMember } = require('../structures/GuildMember');
|
|
11
|
+
|
|
12
|
+
let deprecationEmittedForDeleteMessageDays = false;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Manages API methods for guild bans and stores their cache.
|
|
16
|
+
* @extends {CachedManager}
|
|
17
|
+
*/
|
|
18
|
+
class GuildBanManager extends CachedManager {
|
|
19
|
+
constructor(guild, iterable) {
|
|
20
|
+
super(guild.client, GuildBan, iterable);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The guild this Manager belongs to
|
|
24
|
+
* @type {Guild}
|
|
25
|
+
*/
|
|
26
|
+
this.guild = guild;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The cache of this Manager
|
|
31
|
+
* @type {Collection<Snowflake, GuildBan>}
|
|
32
|
+
* @name GuildBanManager#cache
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
_add(data, cache) {
|
|
36
|
+
return super._add(data, cache, { id: data.user.id, extras: [this.guild] });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Data that resolves to give a GuildBan object. This can be:
|
|
41
|
+
* * A GuildBan object
|
|
42
|
+
* * A User resolvable
|
|
43
|
+
* @typedef {GuildBan|UserResolvable} GuildBanResolvable
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Resolves a GuildBanResolvable to a GuildBan object.
|
|
48
|
+
* @param {GuildBanResolvable} ban The ban that is in the guild
|
|
49
|
+
* @returns {?GuildBan}
|
|
50
|
+
*/
|
|
51
|
+
resolve(ban) {
|
|
52
|
+
return super.resolve(ban) ?? super.resolve(this.client.users.resolveId(ban));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Options used to fetch a single ban from a guild.
|
|
57
|
+
* @typedef {BaseFetchOptions} FetchBanOptions
|
|
58
|
+
* @property {UserResolvable} user The ban to fetch
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Options used to fetch multiple bans from a guild.
|
|
63
|
+
* @typedef {Object} FetchBansOptions
|
|
64
|
+
* @property {number} [limit] The maximum number of bans to return
|
|
65
|
+
* @property {Snowflake} [before] Consider only bans before this id
|
|
66
|
+
* @property {Snowflake} [after] Consider only bans after this id
|
|
67
|
+
* @property {boolean} [cache] Whether to cache the fetched bans
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Fetches ban(s) from Discord.
|
|
72
|
+
* @param {UserResolvable|FetchBanOptions|FetchBansOptions} [options] Options for fetching guild ban(s)
|
|
73
|
+
* @returns {Promise<GuildBan|Collection<Snowflake, GuildBan>>}
|
|
74
|
+
* @example
|
|
75
|
+
* // Fetch multiple bans from a guild
|
|
76
|
+
* guild.bans.fetch()
|
|
77
|
+
* .then(console.log)
|
|
78
|
+
* .catch(console.error);
|
|
79
|
+
* @example
|
|
80
|
+
* // Fetch a maximum of 5 bans from a guild without caching
|
|
81
|
+
* guild.bans.fetch({ limit: 5, cache: false })
|
|
82
|
+
* .then(console.log)
|
|
83
|
+
* .catch(console.error);
|
|
84
|
+
* @example
|
|
85
|
+
* // Fetch a single ban
|
|
86
|
+
* guild.bans.fetch('351871113346809860')
|
|
87
|
+
* .then(console.log)
|
|
88
|
+
* .catch(console.error);
|
|
89
|
+
* @example
|
|
90
|
+
* // Fetch a single ban without checking cache
|
|
91
|
+
* guild.bans.fetch({ user, force: true })
|
|
92
|
+
* .then(console.log)
|
|
93
|
+
* .catch(console.error)
|
|
94
|
+
* @example
|
|
95
|
+
* // Fetch a single ban without caching
|
|
96
|
+
* guild.bans.fetch({ user, cache: false })
|
|
97
|
+
* .then(console.log)
|
|
98
|
+
* .catch(console.error);
|
|
99
|
+
*/
|
|
100
|
+
fetch(options) {
|
|
101
|
+
if (!options) return this._fetchMany();
|
|
102
|
+
const { user, cache, force, limit, before, after } = options;
|
|
103
|
+
const resolvedUser = this.client.users.resolveId(user ?? options);
|
|
104
|
+
if (resolvedUser) return this._fetchSingle({ user: resolvedUser, cache, force });
|
|
105
|
+
|
|
106
|
+
if (!before && !after && !limit && cache === undefined) {
|
|
107
|
+
return Promise.reject(new DiscordjsError(ErrorCodes.FetchBanResolveId));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return this._fetchMany(options);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
async _fetchSingle({ user, cache, force = false }) {
|
|
114
|
+
if (!force) {
|
|
115
|
+
const existing = this.cache.get(user);
|
|
116
|
+
if (existing && !existing.partial) return existing;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const data = await this.client.rest.get(Routes.guildBan(this.guild.id, user));
|
|
120
|
+
return this._add(data, cache);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async _fetchMany(options = {}) {
|
|
124
|
+
const data = await this.client.rest.get(Routes.guildBans(this.guild.id), {
|
|
125
|
+
query: makeURLSearchParams(options),
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
return data.reduce((col, ban) => col.set(ban.user.id, this._add(ban, options.cache)), new Collection());
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Options used to ban a user from a guild.
|
|
133
|
+
* @typedef {Object} BanOptions
|
|
134
|
+
* @property {number} [deleteMessageDays] Number of days of messages to delete, must be between 0 and 7, inclusive
|
|
135
|
+
* <warn>This property is deprecated. Use `deleteMessageSeconds` instead.</warn>
|
|
136
|
+
* @property {number} [deleteMessageSeconds] Number of seconds of messages to delete,
|
|
137
|
+
* must be between 0 and 604800 (7 days), inclusive
|
|
138
|
+
* @property {string} [reason] The reason for the ban
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Bans a user from the guild.
|
|
143
|
+
* @param {UserResolvable} user The user to ban
|
|
144
|
+
* @param {BanOptions} [options] Options for the ban
|
|
145
|
+
* @returns {Promise<GuildMember|User|Snowflake>} Result object will be resolved as specifically as possible.
|
|
146
|
+
* If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot
|
|
147
|
+
* be resolved, the user id will be the result.
|
|
148
|
+
* @example
|
|
149
|
+
* // Ban a user by id (or with a user/guild member object)
|
|
150
|
+
* guild.bans.create('84484653687267328')
|
|
151
|
+
* .then(banInfo => console.log(`Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo}`))
|
|
152
|
+
* .catch(console.error);
|
|
153
|
+
*/
|
|
154
|
+
async create(user, options = {}) {
|
|
155
|
+
if (typeof options !== 'object') throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'options', 'object', true);
|
|
156
|
+
const id = this.client.users.resolveId(user);
|
|
157
|
+
if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId, true);
|
|
158
|
+
|
|
159
|
+
if (options.deleteMessageDays !== undefined && !deprecationEmittedForDeleteMessageDays) {
|
|
160
|
+
process.emitWarning(
|
|
161
|
+
// eslint-disable-next-line max-len
|
|
162
|
+
'The deleteMessageDays option for GuildBanManager#create() is deprecated. Use the deleteMessageSeconds option instead.',
|
|
163
|
+
'DeprecationWarning',
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
deprecationEmittedForDeleteMessageDays = true;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
await this.client.rest.put(Routes.guildBan(this.guild.id, id), {
|
|
170
|
+
body: {
|
|
171
|
+
delete_message_seconds:
|
|
172
|
+
options.deleteMessageSeconds ??
|
|
173
|
+
(options.deleteMessageDays ? options.deleteMessageDays * 24 * 60 * 60 : undefined),
|
|
174
|
+
},
|
|
175
|
+
reason: options.reason,
|
|
176
|
+
});
|
|
177
|
+
if (user instanceof GuildMember) return user;
|
|
178
|
+
const _user = this.client.users.resolve(id);
|
|
179
|
+
if (_user) {
|
|
180
|
+
return this.guild.members.resolve(_user) ?? _user;
|
|
181
|
+
}
|
|
182
|
+
return id;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Unbans a user from the guild.
|
|
187
|
+
* @param {UserResolvable} user The user to unban
|
|
188
|
+
* @param {string} [reason] Reason for unbanning user
|
|
189
|
+
* @returns {Promise<?User>}
|
|
190
|
+
* @example
|
|
191
|
+
* // Unban a user by id (or with a user/guild member object)
|
|
192
|
+
* guild.bans.remove('84484653687267328')
|
|
193
|
+
* .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))
|
|
194
|
+
* .catch(console.error);
|
|
195
|
+
*/
|
|
196
|
+
async remove(user, reason) {
|
|
197
|
+
const id = this.client.users.resolveId(user);
|
|
198
|
+
if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId);
|
|
199
|
+
await this.client.rest.delete(Routes.guildBan(this.guild.id, id), { reason });
|
|
200
|
+
return this.client.users.resolve(user);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
module.exports = GuildBanManager;
|