@biggy1337/discord-sbjs 1.3.11
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 +674 -0
- package/README.md +147 -0
- package/package.json +80 -0
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +110 -0
- package/src/client/Client.js +1076 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +133 -0
- package/src/client/actions/ActionsManager.js +80 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +27 -0
- package/src/client/actions/AutoModerationRuleCreate.js +28 -0
- package/src/client/actions/AutoModerationRuleDelete.js +32 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +39 -0
- package/src/client/actions/ChannelUpdate.js +43 -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 +65 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +21 -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 +33 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +31 -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 +21 -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/InviteCreate.js +28 -0
- package/src/client/actions/InviteDelete.js +30 -0
- package/src/client/actions/MessageCreate.js +50 -0
- package/src/client/actions/MessageDelete.js +34 -0
- package/src/client/actions/MessageDeleteBulk.js +43 -0
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +71 -0
- package/src/client/actions/MessageReactionRemove.js +39 -0
- package/src/client/actions/MessageReactionRemoveAll.js +36 -0
- package/src/client/actions/MessageReactionRemoveEmoji.js +30 -0
- package/src/client/actions/MessageUpdate.js +28 -0
- package/src/client/actions/PresenceUpdate.js +55 -0
- package/src/client/actions/StageInstanceCreate.js +28 -0
- package/src/client/actions/StageInstanceDelete.js +33 -0
- package/src/client/actions/StageInstanceUpdate.js +30 -0
- package/src/client/actions/ThreadCreate.js +24 -0
- package/src/client/actions/ThreadDelete.js +32 -0
- package/src/client/actions/ThreadListSync.js +60 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +38 -0
- package/src/client/actions/TypingStart.js +31 -0
- package/src/client/actions/UserUpdate.js +35 -0
- package/src/client/actions/VoiceStateUpdate.js +63 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +162 -0
- package/src/client/voice/StreamEventRouter.js +60 -0
- package/src/client/voice/VoiceConnection.js +1173 -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 +187 -0
- package/src/client/voice/networking/VoiceWebSocket.js +347 -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 +191 -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/DispatchTable.js +7 -0
- package/src/client/websocket/GatewaySendScheduler.js +122 -0
- package/src/client/websocket/WebSocketManager.js +439 -0
- package/src/client/websocket/WebSocketShard.js +1085 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -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/CALL_CREATE.js +14 -0
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -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_RECIPIENT_ADD.js +19 -0
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -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 +51 -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 +45 -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_MODAL_CREATE.js +12 -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_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 -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 +156 -0
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -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_GUILD_SETTINGS_UPDATE.js +6 -0
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +82 -0
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +12 -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 +84 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +218 -0
- package/src/errors/index.js +4 -0
- package/src/index.js +172 -0
- package/src/managers/ApplicationCommandManager.js +264 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
- package/src/managers/AutoModerationRuleManager.js +296 -0
- package/src/managers/BaseGuildEmojiManager.js +80 -0
- package/src/managers/BaseManager.js +19 -0
- package/src/managers/BillingManager.js +66 -0
- package/src/managers/CachedManager.js +72 -0
- package/src/managers/ChannelManager.js +148 -0
- package/src/managers/ClientUserSettingManager.js +372 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/DeveloperManager.js +265 -0
- package/src/managers/GuildBanManager.js +252 -0
- package/src/managers/GuildChannelManager.js +488 -0
- package/src/managers/GuildEmojiManager.js +171 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildForumThreadManager.js +108 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +401 -0
- package/src/managers/GuildMemberManager.js +608 -0
- package/src/managers/GuildMemberRoleManager.js +195 -0
- package/src/managers/GuildScheduledEventManager.js +314 -0
- package/src/managers/GuildSettingManager.js +155 -0
- package/src/managers/GuildStickerManager.js +179 -0
- package/src/managers/GuildTextThreadManager.js +98 -0
- package/src/managers/InteractionManager.js +39 -0
- package/src/managers/MessageManager.js +457 -0
- package/src/managers/PermissionOverwriteManager.js +169 -0
- package/src/managers/PresenceManager.js +71 -0
- package/src/managers/QuestManager.js +391 -0
- package/src/managers/ReactionManager.js +67 -0
- package/src/managers/ReactionUserManager.js +73 -0
- package/src/managers/RelationshipManager.js +341 -0
- package/src/managers/RoleManager.js +448 -0
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -0
- package/src/managers/ThreadManager.js +175 -0
- package/src/managers/ThreadMemberManager.js +186 -0
- package/src/managers/UserManager.js +274 -0
- package/src/managers/UserNoteManager.js +53 -0
- package/src/managers/VoiceStateManager.js +59 -0
- package/src/rest/APIRequest.js +198 -0
- package/src/rest/APIRouter.js +94 -0
- package/src/rest/DiscordAPIError.js +120 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +203 -0
- package/src/rest/RateLimitCoordinator.js +156 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +552 -0
- package/src/sharding/Shard.js +444 -0
- package/src/sharding/ShardClientUtil.js +279 -0
- package/src/sharding/ShardingManager.js +319 -0
- package/src/structures/AnonymousGuild.js +98 -0
- package/src/structures/ApplicationCommand.js +593 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
- package/src/structures/AutoModerationActionExecution.js +89 -0
- package/src/structures/AutoModerationRule.js +294 -0
- package/src/structures/AutocompleteInteraction.js +107 -0
- package/src/structures/Base.js +43 -0
- package/src/structures/BaseCommandInteraction.js +211 -0
- package/src/structures/BaseGuild.js +124 -0
- package/src/structures/BaseGuildEmoji.js +56 -0
- package/src/structures/BaseGuildTextChannel.js +191 -0
- package/src/structures/BaseGuildVoiceChannel.js +241 -0
- package/src/structures/BaseMessageComponent.js +181 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/CallState.js +63 -0
- package/src/structures/CategoryChannel.js +85 -0
- package/src/structures/Channel.js +284 -0
- package/src/structures/ClientPresence.js +77 -0
- package/src/structures/ClientUser.js +706 -0
- package/src/structures/CommandInteraction.js +41 -0
- package/src/structures/CommandInteractionOptionResolver.js +276 -0
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -0
- package/src/structures/DMChannel.js +222 -0
- package/src/structures/DirectoryChannel.js +20 -0
- package/src/structures/Emoji.js +148 -0
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -0
- package/src/structures/GroupDMChannel.js +415 -0
- package/src/structures/Guild.js +1804 -0
- package/src/structures/GuildAuditLogs.js +746 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildBoost.js +108 -0
- package/src/structures/GuildChannel.js +470 -0
- package/src/structures/GuildEmoji.js +161 -0
- package/src/structures/GuildMember.js +636 -0
- package/src/structures/GuildPreview.js +191 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +536 -0
- package/src/structures/GuildTemplate.js +236 -0
- package/src/structures/Integration.js +188 -0
- package/src/structures/IntegrationApplication.js +96 -0
- package/src/structures/Interaction.js +290 -0
- package/src/structures/InteractionCollector.js +248 -0
- package/src/structures/InteractionWebhook.js +43 -0
- package/src/structures/Invite.js +358 -0
- package/src/structures/InviteGuild.js +23 -0
- package/src/structures/InviteStageInstance.js +86 -0
- 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 +1272 -0
- package/src/structures/MessageActionRow.js +105 -0
- package/src/structures/MessageAttachment.js +216 -0
- package/src/structures/MessageButton.js +166 -0
- package/src/structures/MessageCollector.js +146 -0
- package/src/structures/MessageComponentInteraction.js +120 -0
- package/src/structures/MessageContextMenuInteraction.js +20 -0
- package/src/structures/MessageEmbed.js +596 -0
- package/src/structures/MessageMentions.js +273 -0
- package/src/structures/MessagePayload.js +354 -0
- package/src/structures/MessageReaction.js +181 -0
- package/src/structures/MessageSelectMenu.js +141 -0
- package/src/structures/Modal.js +161 -0
- package/src/structures/ModalSubmitFieldsResolver.js +53 -0
- package/src/structures/ModalSubmitInteraction.js +119 -0
- package/src/structures/NewsChannel.js +32 -0
- package/src/structures/OAuth2Guild.js +28 -0
- package/src/structures/PermissionOverwrites.js +198 -0
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1165 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/Role.js +590 -0
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -0
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -0
- package/src/structures/StageInstance.js +208 -0
- package/src/structures/Sticker.js +310 -0
- package/src/structures/StickerPack.js +95 -0
- package/src/structures/StoreChannel.js +56 -0
- package/src/structures/Team.js +118 -0
- package/src/structures/TeamMember.js +80 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -0
- package/src/structures/ThreadChannel.js +605 -0
- package/src/structures/ThreadMember.js +105 -0
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +992 -0
- package/src/structures/UserContextMenuInteraction.js +29 -0
- package/src/structures/VoiceChannel.js +110 -0
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -0
- package/src/structures/VoiceState.js +354 -0
- package/src/structures/WebEmbed.js +373 -0
- package/src/structures/Webhook.js +478 -0
- package/src/structures/WelcomeChannel.js +60 -0
- package/src/structures/WelcomeScreen.js +48 -0
- package/src/structures/Widget.js +87 -0
- package/src/structures/WidgetMember.js +100 -0
- package/src/structures/interfaces/Application.js +953 -0
- package/src/structures/interfaces/Collector.js +301 -0
- package/src/structures/interfaces/InteractionResponses.js +313 -0
- package/src/structures/interfaces/TextBasedChannel.js +821 -0
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -0
- package/src/util/ApplicationFlags.js +76 -0
- package/src/util/AttachmentFlags.js +38 -0
- package/src/util/BitField.js +170 -0
- package/src/util/ChannelFlags.js +45 -0
- package/src/util/Constants.js +1953 -0
- package/src/util/DataResolver.js +162 -0
- package/src/util/FastQueue.js +93 -0
- package/src/util/FetchUtil.js +77 -0
- package/src/util/Formatters.js +228 -0
- package/src/util/GuildMemberFlags.js +43 -0
- package/src/util/Intents.js +74 -0
- package/src/util/InviteFlags.js +34 -0
- package/src/util/LimitedCollection.js +131 -0
- package/src/util/ListenerUtil.js +12 -0
- package/src/util/MessageFlags.js +63 -0
- package/src/util/Options.js +431 -0
- package/src/util/Permissions.js +202 -0
- package/src/util/PremiumUsageFlags.js +31 -0
- package/src/util/PurchasedFlags.js +33 -0
- package/src/util/RemoteAuth.js +425 -0
- package/src/util/RoleFlags.js +37 -0
- package/src/util/SnowflakeUtil.js +92 -0
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +493 -0
- package/src/util/SystemChannelFlags.js +55 -0
- package/src/util/ThreadMemberFlags.js +30 -0
- package/src/util/UserFlags.js +104 -0
- package/src/util/Util.js +1144 -0
- package/typings/enums.d.ts +437 -0
- package/typings/index.d.ts +8857 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +403 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const CachedManager = require('./CachedManager');
|
|
4
|
+
const VoiceState = require('../structures/VoiceState');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Manages API methods for VoiceStates and stores their cache.
|
|
8
|
+
* @extends {CachedManager}
|
|
9
|
+
*/
|
|
10
|
+
class VoiceStateManager extends CachedManager {
|
|
11
|
+
constructor(guild, iterable) {
|
|
12
|
+
super(guild.client, VoiceState, iterable);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The guild this manager belongs to
|
|
16
|
+
* @type {Guild}
|
|
17
|
+
*/
|
|
18
|
+
this.guild = guild;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The cache of this manager
|
|
23
|
+
* @type {Collection<Snowflake, VoiceState>}
|
|
24
|
+
* @name VoiceStateManager#cache
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
_add(data, cache = true) {
|
|
28
|
+
const existing = this.cache.get(data.user_id);
|
|
29
|
+
if (existing) return existing._patch(data);
|
|
30
|
+
|
|
31
|
+
const entry = new this.holds(this.guild, data);
|
|
32
|
+
if (cache) this.cache.set(data.user_id, entry);
|
|
33
|
+
return entry;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Obtains a user's voice state from discord or from the cache if it's already available.
|
|
38
|
+
* @param {GuildMemberResolvable|'@me'} member The member whose voice state is to be fetched
|
|
39
|
+
* @param {BaseFetchOptions} [options] Additional options for this fetch
|
|
40
|
+
* @returns {Promise<VoiceState>}
|
|
41
|
+
* @example
|
|
42
|
+
* // Fetch a member's voice state
|
|
43
|
+
* guild.voiceStates.fetch("66564597481480192")
|
|
44
|
+
* .then(console.log)
|
|
45
|
+
* .catch(console.error);
|
|
46
|
+
*/
|
|
47
|
+
async fetch(member, { cache = true, force = false } = {}) {
|
|
48
|
+
if (!this.guild?.id) throw new Error('Guild is not defined');
|
|
49
|
+
const id = member === '@me' ? member : this.guild.members.resolveId(member);
|
|
50
|
+
if (!force) {
|
|
51
|
+
const existing = this.cache.get(id === '@me' ? this.client.user.id : id);
|
|
52
|
+
if (existing) return existing;
|
|
53
|
+
}
|
|
54
|
+
const data = await this.client.api.guilds(this.guild.id)['voice-states'][id].get();
|
|
55
|
+
return this._add(data, cache);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = VoiceStateManager;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Buffer = require('node:buffer').Buffer;
|
|
4
|
+
const { setTimeout } = require('node:timers');
|
|
5
|
+
const { ciphers } = require('../util/Constants');
|
|
6
|
+
const { getNativeFormData } = require('../util/FetchUtil');
|
|
7
|
+
|
|
8
|
+
const cypherList = ciphers.join(':');
|
|
9
|
+
|
|
10
|
+
const skyselfbotontop = (wsProperties = {}) => {
|
|
11
|
+
const locale = wsProperties.system_locale || 'en-US';
|
|
12
|
+
return {
|
|
13
|
+
accept: '*/*',
|
|
14
|
+
'accept-language': locale,
|
|
15
|
+
priority: 'u=1, i',
|
|
16
|
+
authority: 'discord.com',
|
|
17
|
+
referer: 'https://discord.com/channels/@me',
|
|
18
|
+
'sec-ch-ua': '"Not:A-Brand";v="24", "Chromium";v="134"',
|
|
19
|
+
'sec-ch-ua-mobile': '?0',
|
|
20
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
21
|
+
'sec-fetch-dest': 'empty',
|
|
22
|
+
'sec-fetch-mode': 'cors',
|
|
23
|
+
'sec-fetch-site': 'same-origin',
|
|
24
|
+
'X-Discord-Locale': locale,
|
|
25
|
+
origin: 'https://discord.com',
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const isReadableStream = value => value && typeof value.getReader === 'function';
|
|
30
|
+
const isNodeReadable = value => value && typeof value.pipe === 'function';
|
|
31
|
+
const cloneHeaders = source => Object.assign({}, source);
|
|
32
|
+
const applyHeaderOverrides = (headers, overrides) => {
|
|
33
|
+
if (!overrides) return;
|
|
34
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
35
|
+
if (value === undefined) delete headers[key];
|
|
36
|
+
else headers[key] = value;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const streamToBuffer = async stream => {
|
|
41
|
+
if (isReadableStream(stream)) {
|
|
42
|
+
const arrayBuffer = await new Response(stream).arrayBuffer();
|
|
43
|
+
return Buffer.from(arrayBuffer);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const chunks = [];
|
|
47
|
+
for await (const chunk of stream) chunks.push(Buffer.from(chunk));
|
|
48
|
+
return Buffer.concat(chunks);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const toFile = async (value, name) => {
|
|
52
|
+
if (value instanceof File) return value;
|
|
53
|
+
if (value instanceof Blob) return new File([value], name, { type: value.type || undefined });
|
|
54
|
+
if (Buffer.isBuffer(value) || value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
55
|
+
return new File([value], name);
|
|
56
|
+
}
|
|
57
|
+
if (isReadableStream(value) || isNodeReadable(value)) {
|
|
58
|
+
const buffer = await streamToBuffer(value);
|
|
59
|
+
return new File([buffer], name);
|
|
60
|
+
}
|
|
61
|
+
if (value?.arrayBuffer) {
|
|
62
|
+
const buffer = await value.arrayBuffer();
|
|
63
|
+
return new File([buffer], name);
|
|
64
|
+
}
|
|
65
|
+
return new File([String(value)], name);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
class APIRequest {
|
|
69
|
+
constructor(rest, method, path, options) {
|
|
70
|
+
this.rest = rest;
|
|
71
|
+
this.client = rest.client;
|
|
72
|
+
this.method = method;
|
|
73
|
+
this.methodUpper = method.toUpperCase();
|
|
74
|
+
this.route = options.route;
|
|
75
|
+
this.options = options;
|
|
76
|
+
this.retries = 0;
|
|
77
|
+
|
|
78
|
+
this.fullUserAgent = this.client.options.http.headers['User-Agent'];
|
|
79
|
+
this.superProperties = rest.getSuperProperties(this.fullUserAgent);
|
|
80
|
+
|
|
81
|
+
let queryString = '';
|
|
82
|
+
if (options.query) {
|
|
83
|
+
const params = new URLSearchParams();
|
|
84
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
85
|
+
if (value === null || typeof value === 'undefined') continue;
|
|
86
|
+
if (Array.isArray(value)) {
|
|
87
|
+
for (const v of value) params.append(key, v);
|
|
88
|
+
} else {
|
|
89
|
+
params.append(key, value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
queryString = params.toString();
|
|
93
|
+
}
|
|
94
|
+
this.path = queryString ? `${path}?${queryString}` : path;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
getProxyConfig() {
|
|
98
|
+
return this.rest.getProxyConfig();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async make(captchaKey, captchaRqToken, captchaSessionId) {
|
|
102
|
+
const fetch = this.rest.fetch;
|
|
103
|
+
const FormData = typeof this.rest.getFormData === 'function' ? this.rest.getFormData() : getNativeFormData();
|
|
104
|
+
|
|
105
|
+
const API =
|
|
106
|
+
this.options.versioned === false
|
|
107
|
+
? this.client.options.http.api
|
|
108
|
+
: `${this.client.options.http.api}/v${this.client.options.http.version}`;
|
|
109
|
+
const url = API + this.path;
|
|
110
|
+
|
|
111
|
+
const headers =
|
|
112
|
+
this.options.webhook === true ? {} : cloneHeaders(skyselfbotontop(this.client.options.ws?.properties || {}));
|
|
113
|
+
|
|
114
|
+
if (this.options.webhook !== true) {
|
|
115
|
+
headers['x-super-properties'] = this.superProperties;
|
|
116
|
+
headers['X-Super-Properties'] = this.superProperties;
|
|
117
|
+
|
|
118
|
+
const timezone = this.rest.getTimezone();
|
|
119
|
+
if (timezone !== undefined) headers['X-Discord-Timezone'] = timezone;
|
|
120
|
+
|
|
121
|
+
applyHeaderOverrides(headers, this.client.options.http.headers);
|
|
122
|
+
headers['User-Agent'] = this.fullUserAgent;
|
|
123
|
+
|
|
124
|
+
if (this.options.auth !== false) {
|
|
125
|
+
headers.Authorization = this.rest.getAuth();
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const fingerprint = this.rest.getFingerprint?.();
|
|
129
|
+
if (fingerprint) {
|
|
130
|
+
headers.fingerprint = fingerprint;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (this.options.reason) headers['X-Audit-Log-Reason'] = encodeURIComponent(this.options.reason);
|
|
134
|
+
applyHeaderOverrides(headers, this.options.headers);
|
|
135
|
+
} else {
|
|
136
|
+
headers['User-Agent'] = this.client.options.http.headers['User-Agent'];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Some options
|
|
140
|
+
if (this.options.DiscordContext) {
|
|
141
|
+
headers['X-Context-Properties'] = Buffer.from(JSON.stringify(this.options.DiscordContext), 'utf8').toString(
|
|
142
|
+
'base64',
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (this.options.mfaToken) {
|
|
147
|
+
headers['X-Discord-Mfa-Authorization'] = this.options.mfaToken;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Captcha
|
|
151
|
+
if (captchaKey && typeof captchaKey == 'string') headers['X-Captcha-Key'] = captchaKey;
|
|
152
|
+
if (captchaRqToken && typeof captchaRqToken == 'string') headers['X-Captcha-Rqtoken'] = captchaRqToken;
|
|
153
|
+
if (captchaSessionId && typeof captchaSessionId == 'string') headers['X-Captcha-Session-Id'] = captchaSessionId;
|
|
154
|
+
|
|
155
|
+
let body;
|
|
156
|
+
if (this.options.files?.length) {
|
|
157
|
+
body = new FormData();
|
|
158
|
+
for (const [index, file] of this.options.files.entries()) {
|
|
159
|
+
if (!file?.file) continue;
|
|
160
|
+
const resolved = await toFile(file.file, file.name ?? `file-${index}`);
|
|
161
|
+
body.append(file.key ?? `files[${index}]`, resolved);
|
|
162
|
+
}
|
|
163
|
+
if (typeof this.options.data !== 'undefined') {
|
|
164
|
+
if (this.options.dontUsePayloadJSON) {
|
|
165
|
+
for (const [key, value] of Object.entries(this.options.data)) body.append(key, value);
|
|
166
|
+
} else {
|
|
167
|
+
body.append('payload_json', JSON.stringify(this.options.data));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// eslint-disable-next-line eqeqeq
|
|
171
|
+
} else if (this.options.data != null) {
|
|
172
|
+
if (this.options.usePayloadJSON) {
|
|
173
|
+
body = new FormData();
|
|
174
|
+
body.append('payload_json', JSON.stringify(this.options.data));
|
|
175
|
+
} else {
|
|
176
|
+
body = JSON.stringify(this.options.data);
|
|
177
|
+
headers['Content-Type'] = 'application/json';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const controller = new AbortController();
|
|
182
|
+
const timeout = setTimeout(() => controller.abort(), this.client.options.restRequestTimeout).unref();
|
|
183
|
+
const fetchOptions = {
|
|
184
|
+
method: this.methodUpper, // Undici doesn't normalize "patch" into "PATCH" (which surprisingly follows the spec).
|
|
185
|
+
headers,
|
|
186
|
+
body,
|
|
187
|
+
signal: controller.signal,
|
|
188
|
+
redirect: 'follow',
|
|
189
|
+
credentials: 'include',
|
|
190
|
+
};
|
|
191
|
+
if (cypherList) fetchOptions.tls = { ciphers: cypherList };
|
|
192
|
+
const proxy = this.getProxyConfig();
|
|
193
|
+
if (proxy) fetchOptions.proxy = proxy;
|
|
194
|
+
return fetch(url, fetchOptions).finally(() => clearTimeout(timeout));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
module.exports = APIRequest;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* eslint-disable space-before-function-paren */
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const methods = new Set(['get', 'post', 'delete', 'patch', 'put']);
|
|
5
|
+
const reflectors = new Set([
|
|
6
|
+
'toString',
|
|
7
|
+
'valueOf',
|
|
8
|
+
'inspect',
|
|
9
|
+
'constructor',
|
|
10
|
+
Symbol.toPrimitive,
|
|
11
|
+
Symbol.for('nodejs.util.inspect.custom'),
|
|
12
|
+
]);
|
|
13
|
+
const idRouteRegex = /\d{16,19}/;
|
|
14
|
+
const majorIdRoutes = new Set(['channels', 'guilds', 'webhooks']);
|
|
15
|
+
const kState = Symbol('api_route_state');
|
|
16
|
+
|
|
17
|
+
function buildRoute(manager) {
|
|
18
|
+
const createProxy = state => {
|
|
19
|
+
// The target must be callable for the `apply` trap to work.
|
|
20
|
+
// eslint-disable-next-line func-style
|
|
21
|
+
const target = function () {}; // eslint-disable-line func-names
|
|
22
|
+
Object.defineProperty(target, kState, { value: state, writable: true });
|
|
23
|
+
return new Proxy(target, handler);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const appendSegment = (state, segment) => {
|
|
27
|
+
const seg = String(segment);
|
|
28
|
+
|
|
29
|
+
const nextPath = `${state.path}/${seg}`;
|
|
30
|
+
const nextPrev = seg;
|
|
31
|
+
|
|
32
|
+
const freezeBuckets = state.bucketFrozen || state.prev === 'reactions';
|
|
33
|
+
if (freezeBuckets) {
|
|
34
|
+
return {
|
|
35
|
+
path: nextPath,
|
|
36
|
+
bucketRoute: state.bucketRoute,
|
|
37
|
+
bucketFrozen: true,
|
|
38
|
+
prev: nextPrev,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const bucketSegment = idRouteRegex.test(seg) && !majorIdRoutes.has(state.prev) ? ':id' : seg;
|
|
43
|
+
const nextBucket = `${state.bucketRoute}/${bucketSegment}`;
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
path: nextPath,
|
|
47
|
+
bucketRoute: nextBucket,
|
|
48
|
+
bucketFrozen: false,
|
|
49
|
+
prev: nextPrev,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const handler = {
|
|
54
|
+
get(target, name) {
|
|
55
|
+
const state = target[kState];
|
|
56
|
+
|
|
57
|
+
// Avoid the proxy being treated as a thenable by Promise resolution / `await`.
|
|
58
|
+
if (name === 'then') return undefined;
|
|
59
|
+
|
|
60
|
+
if (reflectors.has(name)) return () => state.path;
|
|
61
|
+
|
|
62
|
+
if (methods.has(name)) {
|
|
63
|
+
return options =>
|
|
64
|
+
manager.request(
|
|
65
|
+
name,
|
|
66
|
+
state.path,
|
|
67
|
+
Object.assign(
|
|
68
|
+
{
|
|
69
|
+
versioned: manager.versioned,
|
|
70
|
+
route: state.bucketRoute,
|
|
71
|
+
},
|
|
72
|
+
options,
|
|
73
|
+
),
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
if (typeof name === 'symbol') return undefined;
|
|
77
|
+
|
|
78
|
+
return createProxy(appendSegment(state, name));
|
|
79
|
+
},
|
|
80
|
+
apply(target, _, args) {
|
|
81
|
+
let state = target[kState];
|
|
82
|
+
for (const arg of args) {
|
|
83
|
+
// eslint-disable-next-line eqeqeq
|
|
84
|
+
if (arg == null) continue;
|
|
85
|
+
state = appendSegment(state, arg);
|
|
86
|
+
}
|
|
87
|
+
return createProxy(state);
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return createProxy({ path: '', bucketRoute: '', bucketFrozen: false, prev: '' });
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
module.exports = buildRoute;
|
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
* @property {string} [captcha_session_id]
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Captcha response data if the request requires a captcha
|
|
66
|
+
* @type {Captcha | null}
|
|
67
|
+
*/
|
|
68
|
+
this.captcha = error?.captcha_service ? error : null;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* A special `40333` JSON error code is returned if your request is blocked by Cloudflare.
|
|
73
|
+
* This may be due to a malformed request or improper user agent.
|
|
74
|
+
* The response resembles a normal error structure:
|
|
75
|
+
* @type {boolean}
|
|
76
|
+
* @example
|
|
77
|
+
* {
|
|
78
|
+
* "message": "internal network error",
|
|
79
|
+
* "code": 40333
|
|
80
|
+
* }
|
|
81
|
+
*/
|
|
82
|
+
get isBlockedByCloudflare() {
|
|
83
|
+
return this.code === 40333;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Flattens an errors object returned from the API into an array.
|
|
88
|
+
* @param {APIError} obj Discord errors object
|
|
89
|
+
* @param {string} [key] Used internally to determine key names of nested fields
|
|
90
|
+
* @returns {string[]}
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
93
|
+
static flattenErrors(obj, key = '') {
|
|
94
|
+
let messages = [];
|
|
95
|
+
|
|
96
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
97
|
+
if (k === 'message') continue;
|
|
98
|
+
const newKey = key ? (isNaN(k) ? `${key}.${k}` : `${key}[${k}]`) : k;
|
|
99
|
+
|
|
100
|
+
if (v._errors) {
|
|
101
|
+
messages.push(`${newKey}: ${v._errors.map(e => e.message).join(' ')}`);
|
|
102
|
+
} else if (v.code ?? v.message) {
|
|
103
|
+
messages.push(`${v.code ? `${v.code}: ` : ''}${v.message}`.trim());
|
|
104
|
+
} else if (typeof v === 'string') {
|
|
105
|
+
messages.push(v);
|
|
106
|
+
} else {
|
|
107
|
+
messages = messages.concat(this.flattenErrors(v, newKey));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return messages;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
module.exports = DiscordAPIError;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @external APIError
|
|
119
|
+
* @see {@link https://discord.com/developers/docs/reference#error-messages}
|
|
120
|
+
*/
|
|
@@ -0,0 +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;
|