@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,216 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { DefaultRestOptions, DefaultUserAgentAppendix } = require('@discordjs/rest');
|
|
4
|
+
const { toSnakeCase } = require('./Transformers');
|
|
5
|
+
const { version } = require('../../package.json');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {Function} CacheFactory
|
|
9
|
+
* @param {Function} manager The manager class the cache is being requested from.
|
|
10
|
+
* @param {Function} holds The class that the cache will hold.
|
|
11
|
+
* @returns {Collection} A Collection used to store the cache of the manager.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Options for a client.
|
|
16
|
+
* @typedef {Object} ClientOptions
|
|
17
|
+
* @property {number|number[]|string} [shards] The shard's id to run, or an array of shard ids. If not specified,
|
|
18
|
+
* the client will spawn {@link ClientOptions#shardCount} shards. If set to `auto`, it will fetch the
|
|
19
|
+
* recommended amount of shards from Discord and spawn that amount
|
|
20
|
+
* @property {number} [closeTimeout=5_000] The amount of time in milliseconds to wait for the close frame to be received
|
|
21
|
+
* from the WebSocket. Don't have this too high/low. Its best to have it between 2_000-6_000 ms.
|
|
22
|
+
* @property {number} [shardCount=1] The total amount of shards used by all processes of this bot
|
|
23
|
+
* (e.g. recommended shard count, shard count of the ShardingManager)
|
|
24
|
+
* @property {CacheFactory} [makeCache] Function to create a cache.
|
|
25
|
+
* You can use your own function, or the {@link Options} class to customize the Collection used for the cache.
|
|
26
|
+
* <warn>Overriding the cache used in `GuildManager`, `ChannelManager`, `GuildChannelManager`, `RoleManager`,
|
|
27
|
+
* and `PermissionOverwriteManager` is unsupported and **will** break functionality</warn>
|
|
28
|
+
* @property {MessageMentionOptions} [allowedMentions] The default value for {@link BaseMessageOptions#allowedMentions}
|
|
29
|
+
* @property {Partials[]} [partials] Structures allowed to be partial. This means events can be emitted even when
|
|
30
|
+
* they're missing all the data for a particular structure. See the "Partial Structures" topic on the
|
|
31
|
+
* [guide](https://discordjs.guide/popular-topics/partials.html) for some
|
|
32
|
+
* important usage information, as partials require you to put checks in place when handling data.
|
|
33
|
+
* @property {boolean} [failIfNotExists=true] The default value for {@link MessageReplyOptions#failIfNotExists}
|
|
34
|
+
* @property {PresenceData} [presence={}] Presence data to use upon login
|
|
35
|
+
* @property {IntentsResolvable} intents Intents to enable for this connection
|
|
36
|
+
* @property {number} [waitGuildTimeout=15_000] Time in milliseconds that clients with the
|
|
37
|
+
* {@link GatewayIntentBits.Guilds} gateway intent should wait for missing guilds to be received before being ready.
|
|
38
|
+
* @property {SweeperOptions} [sweepers={}] Options for cache sweeping
|
|
39
|
+
* @property {WebsocketOptions} [ws] Options for the WebSocket
|
|
40
|
+
* @property {RESTOptions} [rest] Options for the REST manager
|
|
41
|
+
* @property {Function} [jsonTransformer] A function used to transform outgoing json data
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Options for {@link Sweepers} defining the behavior of cache sweeping
|
|
46
|
+
* @typedef {Object<SweeperKey, SweepOptions>} SweeperOptions
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Options for sweeping a single type of item from cache
|
|
51
|
+
* @typedef {Object} SweepOptions
|
|
52
|
+
* @property {number} interval The interval (in seconds) at which to perform sweeping of the item
|
|
53
|
+
* @property {number} [lifetime] How long an item should stay in cache until it is considered sweepable.
|
|
54
|
+
* <warn>This property is only valid for the `invites`, `messages`, and `threads` keys. The `filter` property
|
|
55
|
+
* is mutually exclusive to this property and takes priority</warn>
|
|
56
|
+
* @property {GlobalSweepFilter} filter The function used to determine the function passed to the sweep method
|
|
57
|
+
* <info>This property is optional when the key is `invites`, `messages`, or `threads` and `lifetime` is set</info>
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A function to determine what strategy to use for sharding internally.
|
|
62
|
+
* ```js
|
|
63
|
+
* (manager) => new WorkerShardingStrategy(manager, { shardsPerWorker: 2 })
|
|
64
|
+
* ```
|
|
65
|
+
* @typedef {Function} BuildStrategyFunction
|
|
66
|
+
* @param {WSWebSocketManager} manager The WebSocketManager that is going to initiate the sharding
|
|
67
|
+
* @returns {IShardingStrategy} The strategy to use for sharding
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* WebSocket options (these are left as snake_case to match the API)
|
|
72
|
+
* @typedef {Object} WebsocketOptions
|
|
73
|
+
* @property {number} [large_threshold=50] Number of members in a guild after which offline users will no longer be
|
|
74
|
+
* sent in the initial guild member list, must be between 50 and 250
|
|
75
|
+
* @property {number} [version=10] The Discord gateway version to use <warn>Changing this can break the library;
|
|
76
|
+
* only set this if you know what you are doing</warn>
|
|
77
|
+
* @property {BuildStrategyFunction} [buildStrategy] Builds the strategy to use for sharding
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Contains various utilities for client options.
|
|
82
|
+
*/
|
|
83
|
+
class Options extends null {
|
|
84
|
+
/**
|
|
85
|
+
* The default user agent appendix.
|
|
86
|
+
* @type {string}
|
|
87
|
+
* @memberof Options
|
|
88
|
+
* @private
|
|
89
|
+
*/
|
|
90
|
+
static userAgentAppendix = `discord.js/${version} ${DefaultUserAgentAppendix}`.trimEnd();
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The default client options.
|
|
94
|
+
* @returns {ClientOptions}
|
|
95
|
+
*/
|
|
96
|
+
static createDefault() {
|
|
97
|
+
return {
|
|
98
|
+
closeTimeout: 5_000,
|
|
99
|
+
waitGuildTimeout: 15_000,
|
|
100
|
+
shardCount: 1,
|
|
101
|
+
makeCache: this.cacheWithLimits(this.DefaultMakeCacheSettings),
|
|
102
|
+
partials: [],
|
|
103
|
+
failIfNotExists: true,
|
|
104
|
+
presence: {},
|
|
105
|
+
sweepers: this.DefaultSweeperSettings,
|
|
106
|
+
ws: {
|
|
107
|
+
large_threshold: 50,
|
|
108
|
+
version: 10,
|
|
109
|
+
},
|
|
110
|
+
rest: {
|
|
111
|
+
...DefaultRestOptions,
|
|
112
|
+
userAgentAppendix: this.userAgentAppendix,
|
|
113
|
+
},
|
|
114
|
+
jsonTransformer: toSnakeCase,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Create a cache factory using predefined settings to sweep or limit.
|
|
120
|
+
* @param {Object<string, LimitedCollectionOptions|number>} [settings={}] Settings passed to the relevant constructor.
|
|
121
|
+
* If no setting is provided for a manager, it uses Collection.
|
|
122
|
+
* If a number is provided for a manager, it uses that number as the max size for a LimitedCollection.
|
|
123
|
+
* If LimitedCollectionOptions are provided for a manager, it uses those settings to form a LimitedCollection.
|
|
124
|
+
* @returns {CacheFactory}
|
|
125
|
+
* @example
|
|
126
|
+
* // Store up to 200 messages per channel and 200 members per guild, always keeping the client member.
|
|
127
|
+
* Options.cacheWithLimits({
|
|
128
|
+
* MessageManager: 200,
|
|
129
|
+
* GuildMemberManager: {
|
|
130
|
+
* maxSize: 200,
|
|
131
|
+
* keepOverLimit: (member) => member.id === client.user.id,
|
|
132
|
+
* },
|
|
133
|
+
* });
|
|
134
|
+
*/
|
|
135
|
+
static cacheWithLimits(settings = {}) {
|
|
136
|
+
const { Collection } = require('@discordjs/collection');
|
|
137
|
+
const LimitedCollection = require('./LimitedCollection');
|
|
138
|
+
|
|
139
|
+
return manager => {
|
|
140
|
+
const setting = settings[manager.name];
|
|
141
|
+
/* eslint-disable-next-line eqeqeq */
|
|
142
|
+
if (setting == null) {
|
|
143
|
+
return new Collection();
|
|
144
|
+
}
|
|
145
|
+
if (typeof setting === 'number') {
|
|
146
|
+
if (setting === Infinity) {
|
|
147
|
+
return new Collection();
|
|
148
|
+
}
|
|
149
|
+
return new LimitedCollection({ maxSize: setting });
|
|
150
|
+
}
|
|
151
|
+
/* eslint-disable-next-line eqeqeq */
|
|
152
|
+
const noLimit = setting.maxSize == null || setting.maxSize === Infinity;
|
|
153
|
+
if (noLimit) {
|
|
154
|
+
return new Collection();
|
|
155
|
+
}
|
|
156
|
+
return new LimitedCollection(setting);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Create a cache factory that always caches everything.
|
|
162
|
+
* @returns {CacheFactory}
|
|
163
|
+
*/
|
|
164
|
+
static cacheEverything() {
|
|
165
|
+
const { Collection } = require('@discordjs/collection');
|
|
166
|
+
return () => new Collection();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* The default settings passed to {@link ClientOptions.makeCache}.
|
|
171
|
+
* The caches that this changes are:
|
|
172
|
+
* * `MessageManager` - Limit to 200 messages
|
|
173
|
+
* <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.
|
|
174
|
+
* `makeCache: Options.cacheWithLimits({ ...Options.DefaultMakeCacheSettings, ReactionManager: 0 })`</info>
|
|
175
|
+
* @type {Object<string, LimitedCollectionOptions|number>}
|
|
176
|
+
*/
|
|
177
|
+
static get DefaultMakeCacheSettings() {
|
|
178
|
+
return {
|
|
179
|
+
MessageManager: 200,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The default settings passed to {@link ClientOptions.sweepers}.
|
|
185
|
+
* The sweepers that this changes are:
|
|
186
|
+
* * `threads` - Sweep archived threads every hour, removing those archived more than 4 hours ago
|
|
187
|
+
* <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.
|
|
188
|
+
* `sweepers: { ...Options.DefaultSweeperSettings, messages: { interval: 300, lifetime: 600 } }`</info>
|
|
189
|
+
* @type {SweeperOptions}
|
|
190
|
+
*/
|
|
191
|
+
static get DefaultSweeperSettings() {
|
|
192
|
+
return {
|
|
193
|
+
threads: {
|
|
194
|
+
interval: 3600,
|
|
195
|
+
lifetime: 14400,
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
module.exports = Options;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @external RESTOptions
|
|
205
|
+
* @see {@link https://discord.js.org/docs/packages/rest/stable/RESTOptions:Interface}
|
|
206
|
+
*/
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* @external WSWebSocketManager
|
|
210
|
+
* @see {@link https://discord.js.org/docs/packages/ws/stable/WebSocketManager:Class}
|
|
211
|
+
*/
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @external IShardingStrategy
|
|
215
|
+
* @see {@link https://discord.js.org/docs/packages/ws/stable/IShardingStrategy:Interface}
|
|
216
|
+
*/
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { createEnum } = require('./Enums');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The enumeration for partials.
|
|
7
|
+
* ```js
|
|
8
|
+
* import { Client, Partials } from 'discord.js';
|
|
9
|
+
*
|
|
10
|
+
* const client = new Client({
|
|
11
|
+
* intents: [
|
|
12
|
+
* // Intents...
|
|
13
|
+
* ],
|
|
14
|
+
* partials: [
|
|
15
|
+
* Partials.User, // We want to receive uncached users!
|
|
16
|
+
* Partials.Message // We want to receive uncached messages!
|
|
17
|
+
* ]
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
* @typedef {Object} Partials
|
|
21
|
+
* @property {number} User The partial to receive uncached users.
|
|
22
|
+
* @property {number} Channel The partial to receive uncached channels.
|
|
23
|
+
* <info>This is required to receive direct messages!</info>
|
|
24
|
+
* @property {number} GuildMember The partial to receive uncached guild members.
|
|
25
|
+
* @property {number} Message The partial to receive uncached messages.
|
|
26
|
+
* @property {number} Reaction The partial to receive uncached reactions.
|
|
27
|
+
* @property {number} GuildScheduledEvent The partial to receive uncached guild scheduled events.
|
|
28
|
+
* @property {number} ThreadMember The partial to receive uncached thread members.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
// JSDoc for IntelliSense purposes
|
|
32
|
+
/**
|
|
33
|
+
* @type {Partials}
|
|
34
|
+
* @ignore
|
|
35
|
+
*/
|
|
36
|
+
module.exports = createEnum([
|
|
37
|
+
'User',
|
|
38
|
+
'Channel',
|
|
39
|
+
'GuildMember',
|
|
40
|
+
'Message',
|
|
41
|
+
'Reaction',
|
|
42
|
+
'GuildScheduledEvent',
|
|
43
|
+
'ThreadMember',
|
|
44
|
+
]);
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { PermissionFlagsBits } = require('discord-api-types/v10');
|
|
4
|
+
const BitField = require('./BitField');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Data structure that makes it easy to interact with a permission bitfield. All {@link GuildMember}s have a set of
|
|
8
|
+
* permissions in their guild, and each channel in the guild may also have {@link PermissionOverwrites} for the member
|
|
9
|
+
* that override their default permissions.
|
|
10
|
+
* @extends {BitField}
|
|
11
|
+
*/
|
|
12
|
+
class PermissionsBitField extends BitField {
|
|
13
|
+
/**
|
|
14
|
+
* Numeric permission flags.
|
|
15
|
+
* @type {PermissionFlagsBits}
|
|
16
|
+
* @memberof PermissionsBitField
|
|
17
|
+
* @see {@link https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags}
|
|
18
|
+
*/
|
|
19
|
+
static Flags = PermissionFlagsBits;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Bitfield representing every permission combined
|
|
23
|
+
* @type {bigint}
|
|
24
|
+
* @memberof PermissionsBitField
|
|
25
|
+
*/
|
|
26
|
+
static All = Object.values(PermissionFlagsBits).reduce((all, p) => all | p, 0n);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Bitfield representing the default permissions for users
|
|
30
|
+
* @type {bigint}
|
|
31
|
+
* @memberof PermissionsBitField
|
|
32
|
+
*/
|
|
33
|
+
static Default = BigInt(104324673);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Bitfield representing the permissions required for moderators of stage channels
|
|
37
|
+
* @type {bigint}
|
|
38
|
+
* @memberof PermissionsBitField
|
|
39
|
+
*/
|
|
40
|
+
static StageModerator =
|
|
41
|
+
PermissionFlagsBits.ManageChannels | PermissionFlagsBits.MuteMembers | PermissionFlagsBits.MoveMembers;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @type {bigint}
|
|
45
|
+
* @memberof PermissionsBitField
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
static DefaultBit = BigInt(0);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Bitfield of the packed bits
|
|
52
|
+
* @type {bigint}
|
|
53
|
+
* @name PermissionsBitField#bitfield
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Data that can be resolved to give a permission number. This can be:
|
|
58
|
+
* * A string (see {@link PermissionsBitField.Flags})
|
|
59
|
+
* * A permission number
|
|
60
|
+
* * An instance of {@link PermissionsBitField}
|
|
61
|
+
* * An Array of PermissionResolvable
|
|
62
|
+
* @typedef {string|bigint|PermissionsBitField|PermissionResolvable[]} PermissionResolvable
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Gets all given bits that are missing from the bitfield.
|
|
67
|
+
* @param {BitFieldResolvable} bits Bit(s) to check for
|
|
68
|
+
* @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override
|
|
69
|
+
* @returns {string[]}
|
|
70
|
+
*/
|
|
71
|
+
missing(bits, checkAdmin = true) {
|
|
72
|
+
return checkAdmin && this.has(PermissionFlagsBits.Administrator) ? [] : super.missing(bits);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Checks whether the bitfield has a permission, or any of multiple permissions.
|
|
77
|
+
* @param {PermissionResolvable} permission Permission(s) to check for
|
|
78
|
+
* @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override
|
|
79
|
+
* @returns {boolean}
|
|
80
|
+
*/
|
|
81
|
+
any(permission, checkAdmin = true) {
|
|
82
|
+
return (checkAdmin && super.has(PermissionFlagsBits.Administrator)) || super.any(permission);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Checks whether the bitfield has a permission, or multiple permissions.
|
|
87
|
+
* @param {PermissionResolvable} permission Permission(s) to check for
|
|
88
|
+
* @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override
|
|
89
|
+
* @returns {boolean}
|
|
90
|
+
*/
|
|
91
|
+
has(permission, checkAdmin = true) {
|
|
92
|
+
return (checkAdmin && super.has(PermissionFlagsBits.Administrator)) || super.has(permission);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Gets an {@link Array} of bitfield names based on the permissions available.
|
|
97
|
+
* @returns {string[]}
|
|
98
|
+
*/
|
|
99
|
+
toArray() {
|
|
100
|
+
return super.toArray(false);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
module.exports = PermissionsBitField;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {Object} ShardEvents
|
|
5
|
+
* @property {string} Death death
|
|
6
|
+
* @property {string} Disconnect disconnect
|
|
7
|
+
* @property {string} Error error
|
|
8
|
+
* @property {string} Message message
|
|
9
|
+
* @property {string} Ready ready
|
|
10
|
+
* @property {string} Reconnecting reconnecting
|
|
11
|
+
* @property {string} Spawn spawn
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
// JSDoc for IntelliSense purposes
|
|
15
|
+
/**
|
|
16
|
+
* @type {ShardEvents}
|
|
17
|
+
* @ignore
|
|
18
|
+
*/
|
|
19
|
+
module.exports = {
|
|
20
|
+
Death: 'death',
|
|
21
|
+
Disconnect: 'disconnect',
|
|
22
|
+
Error: 'error',
|
|
23
|
+
Message: 'message',
|
|
24
|
+
Ready: 'ready',
|
|
25
|
+
Reconnecting: 'reconnecting',
|
|
26
|
+
Spawn: 'spawn',
|
|
27
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { createEnum } = require('./Enums');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {Object} Status
|
|
7
|
+
* @property {number} Ready
|
|
8
|
+
* @property {number} Connecting
|
|
9
|
+
* @property {number} Reconnecting
|
|
10
|
+
* @property {number} Idle
|
|
11
|
+
* @property {number} Nearly
|
|
12
|
+
* @property {number} Disconnected
|
|
13
|
+
* @property {number} WaitingForGuilds
|
|
14
|
+
* @property {number} Identifying
|
|
15
|
+
* @property {number} Resuming
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// JSDoc for IntelliSense purposes
|
|
19
|
+
/**
|
|
20
|
+
* @type {Status}
|
|
21
|
+
* @ignore
|
|
22
|
+
*/
|
|
23
|
+
module.exports = createEnum([
|
|
24
|
+
'Ready',
|
|
25
|
+
'Connecting',
|
|
26
|
+
'Reconnecting',
|
|
27
|
+
'Idle',
|
|
28
|
+
'Nearly',
|
|
29
|
+
'Disconnected',
|
|
30
|
+
'WaitingForGuilds',
|
|
31
|
+
'Identifying',
|
|
32
|
+
'Resuming',
|
|
33
|
+
]);
|