djs-selfbot-v13 3.1.8 → 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +48 -37
- package/package.json +44 -26
- package/src/WebSocket.js +39 -39
- package/src/client/BaseClient.js +86 -86
- package/src/client/Client.js +934 -765
- package/src/client/WebhookClient.js +61 -61
- package/src/client/actions/Action.js +116 -120
- package/src/client/actions/ActionsManager.js +80 -78
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -34
- package/src/client/actions/AutoModerationActionExecution.js +27 -27
- package/src/client/actions/AutoModerationRuleCreate.js +28 -28
- package/src/client/actions/AutoModerationRuleDelete.js +32 -32
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -30
- package/src/client/actions/ChannelCreate.js +23 -23
- package/src/client/actions/ChannelDelete.js +39 -39
- package/src/client/actions/ChannelUpdate.js +43 -43
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -29
- package/src/client/actions/GuildBanAdd.js +20 -20
- package/src/client/actions/GuildBanRemove.js +25 -25
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -21
- package/src/client/actions/GuildDelete.js +65 -65
- package/src/client/actions/GuildEmojiCreate.js +20 -20
- package/src/client/actions/GuildEmojiDelete.js +21 -21
- package/src/client/actions/GuildEmojiUpdate.js +20 -20
- package/src/client/actions/GuildEmojisUpdate.js +34 -34
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -19
- package/src/client/actions/GuildMemberRemove.js +33 -33
- package/src/client/actions/GuildMemberUpdate.js +44 -44
- package/src/client/actions/GuildRoleCreate.js +25 -25
- package/src/client/actions/GuildRoleDelete.js +31 -31
- package/src/client/actions/GuildRoleUpdate.js +39 -39
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -21
- package/src/client/actions/GuildScheduledEventCreate.js +27 -27
- package/src/client/actions/GuildScheduledEventDelete.js +31 -31
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -30
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -32
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -32
- package/src/client/actions/GuildStickerCreate.js +20 -20
- package/src/client/actions/GuildStickerDelete.js +21 -21
- package/src/client/actions/GuildStickerUpdate.js +20 -20
- package/src/client/actions/GuildStickersUpdate.js +34 -34
- package/src/client/actions/GuildUpdate.js +33 -33
- package/src/client/actions/InviteCreate.js +28 -28
- package/src/client/actions/InviteDelete.js +30 -30
- package/src/client/actions/MessageCreate.js +50 -46
- package/src/client/actions/MessageDelete.js +32 -32
- package/src/client/actions/MessageDeleteBulk.js +46 -46
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -56
- package/src/client/actions/MessageReactionRemove.js +50 -45
- package/src/client/actions/MessageReactionRemoveAll.js +33 -33
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -28
- package/src/client/actions/MessageUpdate.js +26 -26
- package/src/client/actions/PresenceUpdate.js +50 -46
- package/src/client/actions/StageInstanceCreate.js +28 -28
- package/src/client/actions/StageInstanceDelete.js +33 -33
- package/src/client/actions/StageInstanceUpdate.js +30 -30
- package/src/client/actions/ThreadCreate.js +24 -24
- package/src/client/actions/ThreadDelete.js +32 -32
- package/src/client/actions/ThreadListSync.js +59 -59
- package/src/client/actions/ThreadMemberUpdate.js +30 -30
- package/src/client/actions/ThreadMembersUpdate.js +34 -34
- package/src/client/actions/TypingStart.js +29 -29
- package/src/client/actions/UserUpdate.js +35 -35
- package/src/client/actions/VoiceStateUpdate.js +50 -57
- package/src/client/actions/WebhooksUpdate.js +20 -20
- package/src/client/voice/ClientVoiceManager.js +151 -51
- package/src/client/voice/VoiceConnection.js +1249 -0
- package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
- package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
- package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
- package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
- package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
- package/src/client/voice/networking/VoiceUDPClient.js +173 -0
- package/src/client/voice/networking/VoiceWebSocket.js +286 -0
- package/src/client/voice/player/MediaPlayer.js +321 -0
- package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
- package/src/client/voice/player/processing/IvfSplitter.js +106 -0
- package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
- package/src/client/voice/receiver/PacketHandler.js +260 -0
- package/src/client/voice/receiver/Receiver.js +96 -0
- package/src/client/voice/receiver/Recorder.js +173 -0
- package/src/client/voice/util/Function.js +116 -0
- package/src/client/voice/util/PlayInterface.js +122 -0
- package/src/client/voice/util/Secretbox.js +64 -0
- package/src/client/voice/util/Silence.js +16 -0
- package/src/client/voice/util/Socket.js +62 -0
- package/src/client/voice/util/VolumeInterface.js +104 -0
- package/src/client/websocket/WebSocketManager.js +392 -392
- package/src/client/websocket/WebSocketShard.js +907 -906
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -18
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -20
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -20
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/CALL_CREATE.js +14 -14
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -11
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -11
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -22
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -19
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -16
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -16
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_CREATE.js +52 -53
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -39
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -20
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -5
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -12
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -5
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -16
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/READY.js +121 -80
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -19
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -17
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -41
- package/src/client/websocket/handlers/RESUMED.js +14 -14
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -5
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -16
- package/src/client/websocket/handlers/TYPING_START.js +5 -5
- package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -6
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -78
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -12
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -6
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/index.js +84 -81
- package/src/errors/DJSError.js +61 -61
- package/src/errors/Messages.js +217 -182
- package/src/errors/index.js +4 -4
- package/src/index.js +172 -158
- package/src/managers/ApplicationCommandManager.js +264 -264
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -417
- package/src/managers/AutoModerationRuleManager.js +296 -296
- package/src/managers/BaseGuildEmojiManager.js +80 -80
- package/src/managers/BaseManager.js +19 -19
- package/src/managers/BillingManager.js +66 -66
- package/src/managers/CachedManager.js +71 -71
- package/src/managers/ChannelManager.js +148 -138
- package/src/managers/ClientUserSettingManager.js +372 -372
- package/src/managers/DataManager.js +61 -61
- package/src/managers/GuildBanManager.js +250 -204
- package/src/managers/GuildChannelManager.js +488 -504
- package/src/managers/GuildEmojiManager.js +171 -171
- package/src/managers/GuildEmojiRoleManager.js +118 -118
- package/src/managers/GuildForumThreadManager.js +108 -108
- package/src/managers/GuildInviteManager.js +213 -213
- package/src/managers/GuildManager.js +338 -304
- package/src/managers/GuildMemberManager.js +599 -593
- package/src/managers/GuildMemberRoleManager.js +195 -191
- package/src/managers/GuildScheduledEventManager.js +314 -296
- package/src/managers/GuildSettingManager.js +155 -155
- package/src/managers/GuildStickerManager.js +179 -179
- package/src/managers/GuildTextThreadManager.js +98 -98
- package/src/managers/InteractionManager.js +39 -39
- package/src/managers/MessageManager.js +423 -391
- package/src/managers/PermissionOverwriteManager.js +164 -166
- package/src/managers/PresenceManager.js +71 -58
- package/src/managers/ReactionManager.js +67 -67
- package/src/managers/ReactionUserManager.js +73 -71
- package/src/managers/RelationshipManager.js +278 -265
- package/src/managers/RoleManager.js +448 -352
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -162
- package/src/managers/ThreadManager.js +175 -174
- package/src/managers/ThreadMemberManager.js +186 -186
- package/src/managers/UserManager.js +136 -146
- package/src/managers/UserNoteManager.js +53 -53
- package/src/managers/VoiceStateManager.js +59 -37
- package/src/rest/APIRequest.js +154 -154
- package/src/rest/APIRouter.js +53 -53
- package/src/rest/DiscordAPIError.js +119 -104
- package/src/rest/HTTPError.js +62 -62
- package/src/rest/RESTManager.js +67 -62
- package/src/rest/RateLimitError.js +55 -55
- package/src/rest/RequestHandler.js +466 -444
- package/src/sharding/Shard.js +444 -443
- package/src/sharding/ShardClientUtil.js +279 -275
- package/src/sharding/ShardingManager.js +319 -318
- package/src/structures/AnonymousGuild.js +98 -98
- package/src/structures/ApplicationCommand.js +593 -593
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -48
- package/src/structures/AutoModerationActionExecution.js +89 -89
- package/src/structures/AutoModerationRule.js +294 -294
- package/src/structures/AutocompleteInteraction.js +107 -107
- package/src/structures/Base.js +43 -43
- package/src/structures/BaseCommandInteraction.js +211 -211
- package/src/structures/BaseGuild.js +116 -116
- package/src/structures/BaseGuildEmoji.js +56 -56
- package/src/structures/BaseGuildTextChannel.js +191 -191
- package/src/structures/BaseGuildVoiceChannel.js +241 -241
- package/src/structures/BaseMessageComponent.js +181 -114
- package/src/structures/ButtonInteraction.js +11 -11
- package/src/structures/CallState.js +63 -63
- package/src/structures/CategoryChannel.js +85 -85
- package/src/structures/Channel.js +284 -270
- package/src/structures/ClientPresence.js +77 -88
- package/src/structures/ClientUser.js +479 -450
- package/src/structures/CommandInteraction.js +41 -41
- package/src/structures/CommandInteractionOptionResolver.js +276 -276
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -65
- package/src/structures/DMChannel.js +219 -217
- package/src/structures/DirectoryChannel.js +20 -20
- package/src/structures/Emoji.js +148 -148
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -261
- package/src/structures/GroupDMChannel.js +394 -387
- package/src/structures/Guild.js +1643 -1608
- package/src/structures/GuildAuditLogs.js +746 -729
- package/src/structures/GuildBan.js +59 -59
- package/src/structures/GuildBoost.js +108 -108
- package/src/structures/GuildChannel.js +470 -468
- package/src/structures/GuildEmoji.js +161 -161
- package/src/structures/GuildMember.js +636 -568
- package/src/structures/GuildPreview.js +191 -191
- package/src/structures/GuildPreviewEmoji.js +27 -27
- package/src/structures/GuildScheduledEvent.js +536 -441
- package/src/structures/GuildTemplate.js +236 -236
- package/src/structures/Integration.js +188 -188
- package/src/structures/IntegrationApplication.js +96 -96
- package/src/structures/Interaction.js +290 -290
- package/src/structures/InteractionCollector.js +248 -248
- package/src/structures/InteractionWebhook.js +43 -43
- package/src/structures/Invite.js +358 -358
- package/src/structures/InviteGuild.js +23 -23
- package/src/structures/InviteStageInstance.js +86 -86
- package/src/structures/MediaChannel.js +11 -0
- package/src/structures/MediaGalleryComponent.js +41 -0
- package/src/structures/MediaGalleryItem.js +47 -0
- package/src/structures/Message.js +1252 -1236
- package/src/structures/MessageActionRow.js +105 -103
- package/src/structures/MessageAttachment.js +216 -204
- package/src/structures/MessageButton.js +166 -165
- package/src/structures/MessageCollector.js +146 -146
- package/src/structures/MessageComponentInteraction.js +120 -120
- package/src/structures/MessageContextMenuInteraction.js +20 -20
- package/src/structures/MessageEmbed.js +596 -586
- package/src/structures/MessageMentions.js +273 -273
- package/src/structures/MessagePayload.js +354 -316
- package/src/structures/MessageReaction.js +181 -171
- package/src/structures/MessageSelectMenu.js +141 -140
- package/src/structures/Modal.js +161 -174
- package/src/structures/ModalSubmitFieldsResolver.js +53 -53
- package/src/structures/ModalSubmitInteraction.js +119 -119
- package/src/structures/NewsChannel.js +32 -32
- package/src/structures/OAuth2Guild.js +28 -28
- package/src/structures/PermissionOverwrites.js +198 -196
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1105 -443
- package/src/structures/ReactionCollector.js +229 -229
- package/src/structures/ReactionEmoji.js +31 -31
- package/src/structures/Role.js +590 -531
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -21
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -104
- package/src/structures/StageInstance.js +208 -208
- package/src/structures/Sticker.js +310 -310
- package/src/structures/StickerPack.js +95 -95
- package/src/structures/StoreChannel.js +56 -56
- package/src/structures/Team.js +118 -118
- package/src/structures/TeamMember.js +80 -71
- package/src/structures/TextChannel.js +33 -33
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -131
- package/src/structures/ThreadChannel.js +605 -607
- package/src/structures/ThreadMember.js +105 -105
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -74
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +640 -509
- package/src/structures/UserContextMenuInteraction.js +29 -29
- package/src/structures/VoiceChannel.js +110 -110
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -53
- package/src/structures/VoiceState.js +354 -341
- package/src/structures/WebEmbed.js +373 -373
- package/src/structures/Webhook.js +478 -467
- package/src/structures/WelcomeChannel.js +60 -60
- package/src/structures/WelcomeScreen.js +48 -48
- package/src/structures/Widget.js +87 -87
- package/src/structures/WidgetMember.js +99 -99
- package/src/structures/interfaces/Application.js +825 -313
- package/src/structures/interfaces/Collector.js +300 -300
- package/src/structures/interfaces/InteractionResponses.js +313 -313
- package/src/structures/interfaces/TextBasedChannel.js +759 -721
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -44
- package/src/util/ApplicationFlags.js +76 -76
- package/src/util/AttachmentFlags.js +38 -38
- package/src/util/BitField.js +170 -170
- package/src/util/ChannelFlags.js +45 -45
- package/src/util/Constants.js +1914 -1760
- package/src/util/DataResolver.js +146 -145
- package/src/util/Formatters.js +228 -228
- package/src/util/GuildMemberFlags.js +43 -43
- package/src/util/Intents.js +74 -74
- package/src/util/InviteFlags.js +34 -29
- package/src/util/LimitedCollection.js +131 -131
- package/src/util/MessageFlags.js +63 -54
- package/src/util/Options.js +358 -342
- package/src/util/Permissions.js +202 -192
- package/src/util/PremiumUsageFlags.js +31 -31
- package/src/util/PurchasedFlags.js +33 -33
- package/src/util/RemoteAuth.js +382 -379
- package/src/util/RoleFlags.js +37 -37
- package/src/util/SnowflakeUtil.js +92 -92
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +466 -466
- package/src/util/SystemChannelFlags.js +55 -55
- package/src/util/ThreadMemberFlags.js +30 -30
- package/src/util/UserFlags.js +104 -104
- package/src/util/Util.js +1048 -803
- package/typings/enums.d.ts +439 -291
- package/typings/index.d.ts +8247 -7390
- package/typings/rawDataTypes.d.ts +403 -342
- package/src/structures/RichPresence.js +0 -702
|
@@ -1,104 +1,119 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents an error from the Discord API.
|
|
5
|
-
* @extends Error
|
|
6
|
-
*/
|
|
7
|
-
class DiscordAPIError extends Error {
|
|
8
|
-
constructor(error, status, request) {
|
|
9
|
-
super();
|
|
10
|
-
const flattened = this.constructor.flattenErrors(error.errors ?? error).join('\n');
|
|
11
|
-
this.name = 'DiscordAPIError';
|
|
12
|
-
this.message = error.message && flattened ? `${error.message}\n${flattened}` : error.message ?? flattened;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* The HTTP method used for the request
|
|
16
|
-
* @type {string}
|
|
17
|
-
*/
|
|
18
|
-
this.method = request.method;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The path of the request relative to the HTTP endpoint
|
|
22
|
-
* @type {string}
|
|
23
|
-
*/
|
|
24
|
-
this.path = request.path;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* HTTP error code returned by Discord
|
|
28
|
-
* @type {number}
|
|
29
|
-
*/
|
|
30
|
-
this.code = error.code;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* The HTTP status code
|
|
34
|
-
* @type {number}
|
|
35
|
-
*/
|
|
36
|
-
this.httpStatus = status;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* The data associated with the request that caused this error
|
|
40
|
-
* @type {HTTPErrorData}
|
|
41
|
-
*/
|
|
42
|
-
this.requestData = {
|
|
43
|
-
json: request.options.data,
|
|
44
|
-
files: request.options.files ?? [],
|
|
45
|
-
headers: request.options.headers,
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The number of times this request has been retried
|
|
50
|
-
* @type {number}
|
|
51
|
-
*/
|
|
52
|
-
this.retries = request.retries;
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* @typedef {Object} Captcha
|
|
56
|
-
* @property {Array<string>} captcha_key ['message']
|
|
57
|
-
* @property {string} captcha_sitekey Captcha sitekey (hcaptcha)
|
|
58
|
-
* @property {string} captcha_service hcaptcha
|
|
59
|
-
* @property {string} [captcha_rqdata]
|
|
60
|
-
* @property {string} [captcha_rqtoken]
|
|
61
|
-
*/
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Captcha response data if the request requires a captcha
|
|
65
|
-
* @type {Captcha | null}
|
|
66
|
-
*/
|
|
67
|
-
this.captcha = error?.captcha_service ? error : null;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* @
|
|
75
|
-
* @
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents an error from the Discord API.
|
|
5
|
+
* @extends Error
|
|
6
|
+
*/
|
|
7
|
+
class DiscordAPIError extends Error {
|
|
8
|
+
constructor(error, status, request) {
|
|
9
|
+
super();
|
|
10
|
+
const flattened = this.constructor.flattenErrors(error.errors ?? error).join('\n');
|
|
11
|
+
this.name = 'DiscordAPIError';
|
|
12
|
+
this.message = error.message && flattened ? `${error.message}\n${flattened}` : error.message ?? flattened;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The HTTP method used for the request
|
|
16
|
+
* @type {string}
|
|
17
|
+
*/
|
|
18
|
+
this.method = request.method;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The path of the request relative to the HTTP endpoint
|
|
22
|
+
* @type {string}
|
|
23
|
+
*/
|
|
24
|
+
this.path = request.path;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* HTTP error code returned by Discord
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
this.code = error.code;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The HTTP status code
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
this.httpStatus = status;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The data associated with the request that caused this error
|
|
40
|
+
* @type {HTTPErrorData}
|
|
41
|
+
*/
|
|
42
|
+
this.requestData = {
|
|
43
|
+
json: request.options.data,
|
|
44
|
+
files: request.options.files ?? [],
|
|
45
|
+
headers: request.options.headers,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The number of times this request has been retried
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
52
|
+
this.retries = request.retries;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @typedef {Object} Captcha
|
|
56
|
+
* @property {Array<string>} captcha_key ['message']
|
|
57
|
+
* @property {string} captcha_sitekey Captcha sitekey (hcaptcha)
|
|
58
|
+
* @property {string} captcha_service hcaptcha
|
|
59
|
+
* @property {string} [captcha_rqdata]
|
|
60
|
+
* @property {string} [captcha_rqtoken]
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Captcha response data if the request requires a captcha
|
|
65
|
+
* @type {Captcha | null}
|
|
66
|
+
*/
|
|
67
|
+
this.captcha = error?.captcha_service ? error : null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* A special `40333` JSON error code is returned if your request is blocked by Cloudflare.
|
|
72
|
+
* This may be due to a malformed request or improper user agent.
|
|
73
|
+
* The response resembles a normal error structure:
|
|
74
|
+
* @type {boolean}
|
|
75
|
+
* @example
|
|
76
|
+
* {
|
|
77
|
+
* "message": "internal network error",
|
|
78
|
+
* "code": 40333
|
|
79
|
+
* }
|
|
80
|
+
*/
|
|
81
|
+
get isBlockedByCloudflare() {
|
|
82
|
+
return this.code === 40333;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Flattens an errors object returned from the API into an array.
|
|
87
|
+
* @param {APIError} obj Discord errors object
|
|
88
|
+
* @param {string} [key] Used internally to determine key names of nested fields
|
|
89
|
+
* @returns {string[]}
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
static flattenErrors(obj, key = '') {
|
|
93
|
+
let messages = [];
|
|
94
|
+
|
|
95
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
96
|
+
if (k === 'message') continue;
|
|
97
|
+
const newKey = key ? (isNaN(k) ? `${key}.${k}` : `${key}[${k}]`) : k;
|
|
98
|
+
|
|
99
|
+
if (v._errors) {
|
|
100
|
+
messages.push(`${newKey}: ${v._errors.map(e => e.message).join(' ')}`);
|
|
101
|
+
} else if (v.code ?? v.message) {
|
|
102
|
+
messages.push(`${v.code ? `${v.code}: ` : ''}${v.message}`.trim());
|
|
103
|
+
} else if (typeof v === 'string') {
|
|
104
|
+
messages.push(v);
|
|
105
|
+
} else {
|
|
106
|
+
messages = messages.concat(this.flattenErrors(v, newKey));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return messages;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
module.exports = DiscordAPIError;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @external APIError
|
|
118
|
+
* @see {@link https://discord.com/developers/docs/reference#error-messages}
|
|
119
|
+
*/
|
package/src/rest/HTTPError.js
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents an HTTP error from a request.
|
|
5
|
-
* @extends Error
|
|
6
|
-
*/
|
|
7
|
-
class HTTPError extends Error {
|
|
8
|
-
constructor(message, name, code, request) {
|
|
9
|
-
super(message);
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* The name of the error
|
|
13
|
-
* @type {string}
|
|
14
|
-
*/
|
|
15
|
-
this.name = name;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* HTTP error code returned from the request
|
|
19
|
-
* @type {number}
|
|
20
|
-
*/
|
|
21
|
-
this.code = code ?? 500;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* The HTTP method used for the request
|
|
25
|
-
* @type {string}
|
|
26
|
-
*/
|
|
27
|
-
this.method = request.method;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* The path of the request relative to the HTTP endpoint
|
|
31
|
-
* @type {string}
|
|
32
|
-
*/
|
|
33
|
-
this.path = request.path;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* The HTTP data that was sent to Discord
|
|
37
|
-
* @typedef {Object} HTTPErrorData
|
|
38
|
-
* @property {*} json The JSON data that was sent
|
|
39
|
-
* @property {HTTPAttachmentData[]} files The files that were sent with this request, if any
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* The attachment data that is sent to Discord
|
|
44
|
-
* @typedef {Object} HTTPAttachmentData
|
|
45
|
-
* @property {string|Buffer|Stream} attachment The source of this attachment data
|
|
46
|
-
* @property {string} name The file name
|
|
47
|
-
* @property {Buffer|Stream} file The file buffer
|
|
48
|
-
*/
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The data associated with the request that caused this error
|
|
52
|
-
* @type {HTTPErrorData}
|
|
53
|
-
*/
|
|
54
|
-
this.requestData = {
|
|
55
|
-
json: request.options.data,
|
|
56
|
-
files: request.options.files ?? [],
|
|
57
|
-
headers: request.options.headers,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
module.exports = HTTPError;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents an HTTP error from a request.
|
|
5
|
+
* @extends Error
|
|
6
|
+
*/
|
|
7
|
+
class HTTPError extends Error {
|
|
8
|
+
constructor(message, name, code, request) {
|
|
9
|
+
super(message);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The name of the error
|
|
13
|
+
* @type {string}
|
|
14
|
+
*/
|
|
15
|
+
this.name = name;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* HTTP error code returned from the request
|
|
19
|
+
* @type {number}
|
|
20
|
+
*/
|
|
21
|
+
this.code = code ?? 500;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The HTTP method used for the request
|
|
25
|
+
* @type {string}
|
|
26
|
+
*/
|
|
27
|
+
this.method = request.method;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The path of the request relative to the HTTP endpoint
|
|
31
|
+
* @type {string}
|
|
32
|
+
*/
|
|
33
|
+
this.path = request.path;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The HTTP data that was sent to Discord
|
|
37
|
+
* @typedef {Object} HTTPErrorData
|
|
38
|
+
* @property {*} json The JSON data that was sent
|
|
39
|
+
* @property {HTTPAttachmentData[]} files The files that were sent with this request, if any
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The attachment data that is sent to Discord
|
|
44
|
+
* @typedef {Object} HTTPAttachmentData
|
|
45
|
+
* @property {string|Buffer|Stream} attachment The source of this attachment data
|
|
46
|
+
* @property {string} name The file name
|
|
47
|
+
* @property {Buffer|Stream} file The file buffer
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The data associated with the request that caused this error
|
|
52
|
+
* @type {HTTPErrorData}
|
|
53
|
+
*/
|
|
54
|
+
this.requestData = {
|
|
55
|
+
json: request.options.data,
|
|
56
|
+
files: request.options.files ?? [],
|
|
57
|
+
headers: request.options.headers,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
module.exports = HTTPError;
|
package/src/rest/RESTManager.js
CHANGED
|
@@ -1,62 +1,67 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { setInterval } = require('node:timers');
|
|
4
|
-
const { Collection } = require('@discordjs/collection');
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { setInterval } = require('node:timers');
|
|
4
|
+
const { Collection } = require('@discordjs/collection');
|
|
5
|
+
const makeFetchCookie = require('fetch-cookie');
|
|
6
|
+
const { CookieJar } = require('tough-cookie');
|
|
7
|
+
const { fetch: fetchOriginal } = require('undici');
|
|
8
|
+
const APIRequest = require('./APIRequest');
|
|
9
|
+
const routeBuilder = require('./APIRouter');
|
|
10
|
+
const RequestHandler = require('./RequestHandler');
|
|
11
|
+
const { Error } = require('../errors');
|
|
12
|
+
const { Endpoints } = require('../util/Constants');
|
|
13
|
+
|
|
14
|
+
class RESTManager {
|
|
15
|
+
constructor(client) {
|
|
16
|
+
this.client = client;
|
|
17
|
+
this.handlers = new Collection();
|
|
18
|
+
this.versioned = true;
|
|
19
|
+
this.globalLimit = client.options.restGlobalRateLimit > 0 ? client.options.restGlobalRateLimit : Infinity;
|
|
20
|
+
this.globalRemaining = this.globalLimit;
|
|
21
|
+
this.globalReset = null;
|
|
22
|
+
this.globalDelay = null;
|
|
23
|
+
this.cookieJar = new CookieJar();
|
|
24
|
+
this.fetch = makeFetchCookie.default(fetchOriginal, this.cookieJar);
|
|
25
|
+
if (client.options.restSweepInterval > 0) {
|
|
26
|
+
this.sweepInterval = setInterval(() => {
|
|
27
|
+
this.handlers.sweep(handler => handler._inactive);
|
|
28
|
+
}, client.options.restSweepInterval * 1_000).unref();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get api() {
|
|
33
|
+
return routeBuilder(this);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getAuth() {
|
|
37
|
+
const token = this.client.token ?? this.client.accessToken;
|
|
38
|
+
if (token) return token?.replace(/Bot /g, '');
|
|
39
|
+
throw new Error('TOKEN_MISSING');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
get cdn() {
|
|
43
|
+
return Endpoints.CDN(this.client.options.http.cdn);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
request(method, url, options = {}) {
|
|
47
|
+
const apiRequest = new APIRequest(this, method, url, options);
|
|
48
|
+
let handler = this.handlers.get(apiRequest.route);
|
|
49
|
+
|
|
50
|
+
if (!handler) {
|
|
51
|
+
handler = new RequestHandler(this);
|
|
52
|
+
this.handlers.set(apiRequest.route, handler);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return handler.push(apiRequest);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
get endpoint() {
|
|
59
|
+
return this.client.options.http.api;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
set endpoint(endpoint) {
|
|
63
|
+
this.client.options.http.api = endpoint;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = RESTManager;
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents a RateLimit error from a request.
|
|
5
|
-
* @extends Error
|
|
6
|
-
*/
|
|
7
|
-
class RateLimitError extends Error {
|
|
8
|
-
constructor({ timeout, limit, method, path, route, global }) {
|
|
9
|
-
super(`A ${global ? 'global ' : ''}rate limit was hit on route ${route}`);
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* The name of the error
|
|
13
|
-
* @type {string}
|
|
14
|
-
*/
|
|
15
|
-
this.name = 'RateLimitError';
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Time until this rate limit ends, in milliseconds
|
|
19
|
-
* @type {number}
|
|
20
|
-
*/
|
|
21
|
-
this.timeout = timeout;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* The HTTP method used for the request
|
|
25
|
-
* @type {string}
|
|
26
|
-
*/
|
|
27
|
-
this.method = method;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* The path of the request relative to the HTTP endpoint
|
|
31
|
-
* @type {string}
|
|
32
|
-
*/
|
|
33
|
-
this.path = path;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* The route of the request relative to the HTTP endpoint
|
|
37
|
-
* @type {string}
|
|
38
|
-
*/
|
|
39
|
-
this.route = route;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Whether this rate limit is global
|
|
43
|
-
* @type {boolean}
|
|
44
|
-
*/
|
|
45
|
-
this.global = global;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The maximum amount of requests of this endpoint
|
|
49
|
-
* @type {number}
|
|
50
|
-
*/
|
|
51
|
-
this.limit = limit;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
module.exports = RateLimitError;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents a RateLimit error from a request.
|
|
5
|
+
* @extends Error
|
|
6
|
+
*/
|
|
7
|
+
class RateLimitError extends Error {
|
|
8
|
+
constructor({ timeout, limit, method, path, route, global }) {
|
|
9
|
+
super(`A ${global ? 'global ' : ''}rate limit was hit on route ${route}`);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The name of the error
|
|
13
|
+
* @type {string}
|
|
14
|
+
*/
|
|
15
|
+
this.name = 'RateLimitError';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Time until this rate limit ends, in milliseconds
|
|
19
|
+
* @type {number}
|
|
20
|
+
*/
|
|
21
|
+
this.timeout = timeout;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The HTTP method used for the request
|
|
25
|
+
* @type {string}
|
|
26
|
+
*/
|
|
27
|
+
this.method = method;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The path of the request relative to the HTTP endpoint
|
|
31
|
+
* @type {string}
|
|
32
|
+
*/
|
|
33
|
+
this.path = path;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The route of the request relative to the HTTP endpoint
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
this.route = route;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Whether this rate limit is global
|
|
43
|
+
* @type {boolean}
|
|
44
|
+
*/
|
|
45
|
+
this.global = global;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The maximum amount of requests of this endpoint
|
|
49
|
+
* @type {number}
|
|
50
|
+
*/
|
|
51
|
+
this.limit = limit;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
module.exports = RateLimitError;
|