discord-sb.js 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 +674 -0
- package/README.md +2 -0
- package/package.json +91 -0
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +86 -0
- package/src/client/Client.js +978 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +116 -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 +32 -0
- package/src/client/actions/MessageDeleteBulk.js +46 -0
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -0
- package/src/client/actions/MessageReactionRemove.js +50 -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 +50 -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 +59 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +34 -0
- package/src/client/actions/TypingStart.js +29 -0
- package/src/client/actions/UserUpdate.js +35 -0
- package/src/client/actions/VoiceStateUpdate.js +50 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +151 -0
- 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 -0
- package/src/client/websocket/WebSocketShard.js +907 -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 +52 -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_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 +121 -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 +78 -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 +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 +84 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +217 -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 +71 -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 +254 -0
- package/src/managers/GuildBanManager.js +250 -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 +338 -0
- package/src/managers/GuildMemberManager.js +599 -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 +423 -0
- package/src/managers/PermissionOverwriteManager.js +164 -0
- package/src/managers/PresenceManager.js +71 -0
- package/src/managers/QuestManager.js +353 -0
- package/src/managers/ReactionManager.js +67 -0
- package/src/managers/ReactionUserManager.js +73 -0
- package/src/managers/RelationshipManager.js +278 -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 +136 -0
- package/src/managers/UserNoteManager.js +53 -0
- package/src/managers/VoiceStateManager.js +59 -0
- package/src/rest/APIRequest.js +154 -0
- package/src/rest/APIRouter.js +53 -0
- package/src/rest/DiscordAPIError.js +119 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +67 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +466 -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 +116 -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 +655 -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 +219 -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 +394 -0
- package/src/structures/Guild.js +1791 -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 +1252 -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 +1157 -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 +640 -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 +99 -0
- package/src/structures/interfaces/Application.js +953 -0
- package/src/structures/interfaces/Collector.js +300 -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 +1914 -0
- package/src/util/DataResolver.js +146 -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/MessageFlags.js +63 -0
- package/src/util/Options.js +358 -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 +415 -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 +466 -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 +1048 -0
- package/typings/enums.d.ts +439 -0
- package/typings/index.d.ts +8505 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +403 -0
|
@@ -0,0 +1,953 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const process = require('node:process');
|
|
4
|
+
const ApplicationFlags = require('../../util/ApplicationFlags');
|
|
5
|
+
const { ClientApplicationAssetTypes, Endpoints } = require('../../util/Constants');
|
|
6
|
+
const Permissions = require('../../util/Permissions');
|
|
7
|
+
const SnowflakeUtil = require('../../util/SnowflakeUtil');
|
|
8
|
+
const { ApplicationRoleConnectionMetadata } = require('../ApplicationRoleConnectionMetadata');
|
|
9
|
+
const Base = require('../Base');
|
|
10
|
+
const Team = require('../Team');
|
|
11
|
+
|
|
12
|
+
const AssetTypes = Object.keys(ClientApplicationAssetTypes);
|
|
13
|
+
|
|
14
|
+
let deprecationEmittedForFetchAssets = false;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Represents an OAuth2 Application.
|
|
18
|
+
* @extends {Base}
|
|
19
|
+
* @abstract
|
|
20
|
+
*/
|
|
21
|
+
class Application extends Base {
|
|
22
|
+
constructor(client, data) {
|
|
23
|
+
super(client);
|
|
24
|
+
this._patch(data);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
_patch(data) {
|
|
28
|
+
/**
|
|
29
|
+
* The application's id
|
|
30
|
+
* @type {Snowflake}
|
|
31
|
+
*/
|
|
32
|
+
this.id = data.id;
|
|
33
|
+
|
|
34
|
+
if ('name' in data) {
|
|
35
|
+
/**
|
|
36
|
+
* The name of the application
|
|
37
|
+
* @type {?string}
|
|
38
|
+
*/
|
|
39
|
+
this.name = data.name;
|
|
40
|
+
} else {
|
|
41
|
+
this.name ??= null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if ('description' in data) {
|
|
45
|
+
/**
|
|
46
|
+
* The application's description
|
|
47
|
+
* @type {?string}
|
|
48
|
+
*/
|
|
49
|
+
this.description = data.description;
|
|
50
|
+
} else {
|
|
51
|
+
this.description ??= null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if ('icon' in data) {
|
|
55
|
+
/**
|
|
56
|
+
* The application's icon hash
|
|
57
|
+
* @type {?string}
|
|
58
|
+
*/
|
|
59
|
+
this.icon = data.icon;
|
|
60
|
+
} else {
|
|
61
|
+
this.icon ??= null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if ('terms_of_service_url' in data) {
|
|
65
|
+
/**
|
|
66
|
+
* The URL of the application's terms of service
|
|
67
|
+
* @type {?string}
|
|
68
|
+
*/
|
|
69
|
+
this.termsOfServiceURL = data.terms_of_service_url;
|
|
70
|
+
} else {
|
|
71
|
+
this.termsOfServiceURL ??= null;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if ('privacy_policy_url' in data) {
|
|
75
|
+
/**
|
|
76
|
+
* The URL of the application's privacy policy
|
|
77
|
+
* @type {?string}
|
|
78
|
+
*/
|
|
79
|
+
this.privacyPolicyURL = data.privacy_policy_url;
|
|
80
|
+
} else {
|
|
81
|
+
this.privacyPolicyURL ??= null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if ('verify_key' in data) {
|
|
85
|
+
/**
|
|
86
|
+
* The hex-encoded key for verification in interactions and the GameSDK's GetTicket
|
|
87
|
+
* @type {?string}
|
|
88
|
+
*/
|
|
89
|
+
this.verifyKey = data.verify_key;
|
|
90
|
+
} else {
|
|
91
|
+
this.verifyKey ??= null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if ('role_connections_verification_url' in data) {
|
|
95
|
+
/**
|
|
96
|
+
* This application's role connection verification entry point URL
|
|
97
|
+
* @type {?string}
|
|
98
|
+
*/
|
|
99
|
+
this.roleConnectionsVerificationURL = data.role_connections_verification_url;
|
|
100
|
+
} else {
|
|
101
|
+
this.roleConnectionsVerificationURL ??= null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The tags this application has (max of 5)
|
|
106
|
+
* @type {string[]}
|
|
107
|
+
*/
|
|
108
|
+
this.tags = data.tags ?? [];
|
|
109
|
+
|
|
110
|
+
if ('install_params' in data) {
|
|
111
|
+
/**
|
|
112
|
+
* Settings for this application's default in-app authorization
|
|
113
|
+
* @type {?ClientApplicationInstallParams}
|
|
114
|
+
*/
|
|
115
|
+
this.installParams = {
|
|
116
|
+
scopes: data.install_params.scopes,
|
|
117
|
+
permissions: new Permissions(data.install_params.permissions).freeze(),
|
|
118
|
+
};
|
|
119
|
+
} else {
|
|
120
|
+
this.installParams ??= null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if ('custom_install_url' in data) {
|
|
124
|
+
/**
|
|
125
|
+
* This application's custom installation URL
|
|
126
|
+
* @type {?string}
|
|
127
|
+
*/
|
|
128
|
+
this.customInstallURL = data.custom_install_url;
|
|
129
|
+
} else {
|
|
130
|
+
this.customInstallURL = null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if ('flags' in data) {
|
|
134
|
+
/**
|
|
135
|
+
* The flags this application has
|
|
136
|
+
* @type {ApplicationFlags}
|
|
137
|
+
*/
|
|
138
|
+
this.flags = new ApplicationFlags(data.flags).freeze();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if ('approximate_guild_count' in data) {
|
|
142
|
+
/**
|
|
143
|
+
* An approximate amount of guilds this application is in.
|
|
144
|
+
* @type {?number}
|
|
145
|
+
*/
|
|
146
|
+
this.approximateGuildCount = data.approximate_guild_count;
|
|
147
|
+
} else {
|
|
148
|
+
this.approximateGuildCount ??= null;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if ('guild_id' in data) {
|
|
152
|
+
/**
|
|
153
|
+
* The id of the guild associated with this application.
|
|
154
|
+
* @type {?Snowflake}
|
|
155
|
+
*/
|
|
156
|
+
this.guildId = data.guild_id;
|
|
157
|
+
} else {
|
|
158
|
+
this.guildId ??= null;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if ('cover_image' in data) {
|
|
162
|
+
/**
|
|
163
|
+
* The hash of the application's cover image
|
|
164
|
+
* @type {?string}
|
|
165
|
+
*/
|
|
166
|
+
this.cover = data.cover_image;
|
|
167
|
+
} else {
|
|
168
|
+
this.cover ??= null;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if ('rpc_origins' in data) {
|
|
172
|
+
/**
|
|
173
|
+
* The application's RPC origins, if enabled
|
|
174
|
+
* @type {string[]}
|
|
175
|
+
*/
|
|
176
|
+
this.rpcOrigins = data.rpc_origins;
|
|
177
|
+
} else {
|
|
178
|
+
this.rpcOrigins ??= [];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if ('bot_require_code_grant' in data) {
|
|
182
|
+
/**
|
|
183
|
+
* If this application's bot requires a code grant when using the OAuth2 flow
|
|
184
|
+
* @deprecated
|
|
185
|
+
* @type {?boolean}
|
|
186
|
+
*/
|
|
187
|
+
this.botRequireCodeGrant = data.bot_require_code_grant;
|
|
188
|
+
} else {
|
|
189
|
+
this.botRequireCodeGrant ??= null;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if ('bot_public' in data) {
|
|
193
|
+
/**
|
|
194
|
+
* If this application's bot is public
|
|
195
|
+
* @deprecated
|
|
196
|
+
* @type {?boolean}
|
|
197
|
+
*/
|
|
198
|
+
this.botPublic = data.bot_public;
|
|
199
|
+
} else {
|
|
200
|
+
this.botPublic ??= null;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* The owner of this OAuth application
|
|
205
|
+
* @type {?(User|Team)}
|
|
206
|
+
*/
|
|
207
|
+
this.owner = data.team
|
|
208
|
+
? new Team(this.client, data.team)
|
|
209
|
+
: data.owner
|
|
210
|
+
? this.client.users._add(data.owner)
|
|
211
|
+
: this.owner ?? null;
|
|
212
|
+
|
|
213
|
+
if ('splash' in data) {
|
|
214
|
+
/**
|
|
215
|
+
* The application's splash image hash
|
|
216
|
+
* @type {?string}
|
|
217
|
+
*/
|
|
218
|
+
this.splash = data.splash;
|
|
219
|
+
} else {
|
|
220
|
+
this.splash ??= null;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if ('type' in data) {
|
|
224
|
+
/**
|
|
225
|
+
* The type of the application
|
|
226
|
+
* @type {number}
|
|
227
|
+
* @see {@link https://docs.discord.food/resources/application#application-type}
|
|
228
|
+
*/
|
|
229
|
+
this.type = data.type;
|
|
230
|
+
} else {
|
|
231
|
+
this.type = null;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if ('primary_sku_id' in data) {
|
|
235
|
+
/**
|
|
236
|
+
* The ID of the application's primary SKU (game, application subscription, etc.)
|
|
237
|
+
* @type {?Snowflake}
|
|
238
|
+
*/
|
|
239
|
+
this.primarySkuId = data.primary_sku_id;
|
|
240
|
+
} else {
|
|
241
|
+
this.primarySkuId = null;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if ('eula_id' in data) {
|
|
245
|
+
/**
|
|
246
|
+
* The ID of the application's EULA
|
|
247
|
+
* @type {?Snowflake}
|
|
248
|
+
*/
|
|
249
|
+
this.eulaId = data.eula_id;
|
|
250
|
+
} else {
|
|
251
|
+
this.eulaId = null;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if ('slug' in data) {
|
|
255
|
+
/**
|
|
256
|
+
* The URL slug that links to the primary store page of the application
|
|
257
|
+
* @type {?string}
|
|
258
|
+
*/
|
|
259
|
+
this.slug = data.slug;
|
|
260
|
+
} else {
|
|
261
|
+
this.slug = null;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if ('aliases' in data) {
|
|
265
|
+
/**
|
|
266
|
+
* Other names the application's game is associated with
|
|
267
|
+
* @type {string[]}
|
|
268
|
+
*/
|
|
269
|
+
this.aliases = data.aliases;
|
|
270
|
+
} else {
|
|
271
|
+
this.aliases = [];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if ('executables' in data) {
|
|
275
|
+
/**
|
|
276
|
+
* @typedef {Object} ApplicationExecutable
|
|
277
|
+
* @property {string} os - The operating system the executable can be found on
|
|
278
|
+
* @property {string} name - The name of the executable
|
|
279
|
+
* @property {boolean} is_launcher - Whether the executable is for a game launcher
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* The unique executables of the application's game
|
|
284
|
+
* @type {?ApplicationExecutable[]}
|
|
285
|
+
*/
|
|
286
|
+
this.executables = data.executables;
|
|
287
|
+
} else {
|
|
288
|
+
this.executables ??= null;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if ('third_party_skus' in data) {
|
|
292
|
+
/**
|
|
293
|
+
* @typedef {Object} ApplicationSku
|
|
294
|
+
* @property {?Snowflake} id - The ID of the game
|
|
295
|
+
* @property {?string} sku - The SKU of the game
|
|
296
|
+
* @property {string} distributor - The distributor of the game
|
|
297
|
+
*/
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* The third party SKUs of the application's game
|
|
301
|
+
* @type {?ApplicationSku[]}
|
|
302
|
+
*/
|
|
303
|
+
this.thirdPartySkus = data.third_party_skus;
|
|
304
|
+
} else {
|
|
305
|
+
this.thirdPartySkus ??= null;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
if ('hook' in data) {
|
|
309
|
+
/**
|
|
310
|
+
* Whether the Discord client is allowed to hook into the application's game directly
|
|
311
|
+
* @type {?boolean}
|
|
312
|
+
*/
|
|
313
|
+
this.hook = data.hook;
|
|
314
|
+
} else {
|
|
315
|
+
this.hook ??= null;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
if ('overlay' in data) {
|
|
319
|
+
/**
|
|
320
|
+
* Whether the application's game supports the Discord overlay (default false)
|
|
321
|
+
* @type {?boolean}
|
|
322
|
+
*/
|
|
323
|
+
this.overlay = data.overlay;
|
|
324
|
+
} else {
|
|
325
|
+
this.overlay ??= null;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
if ('overlay_methods' in data) {
|
|
329
|
+
/**
|
|
330
|
+
* The methods of overlaying that the application's game supports
|
|
331
|
+
* @type {?number}
|
|
332
|
+
*/
|
|
333
|
+
this.overlayMethods = data.overlay_methods;
|
|
334
|
+
} else {
|
|
335
|
+
this.overlayMethods ??= null;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
if ('overlay_warn' in data) {
|
|
339
|
+
/**
|
|
340
|
+
* Whether the Discord overlay is known to be problematic with this application's game (default false)
|
|
341
|
+
* @type {?boolean}
|
|
342
|
+
*/
|
|
343
|
+
this.overlayWarn = data.overlay_warn;
|
|
344
|
+
} else {
|
|
345
|
+
this.overlayWarn ??= null;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if ('overlay_compatibility_hook' in data) {
|
|
349
|
+
/**
|
|
350
|
+
* Whether to use the compatibility hook for the overlay (default false)
|
|
351
|
+
* @type {?boolean}
|
|
352
|
+
*/
|
|
353
|
+
this.overlayCompatibilityHook = data.overlay_compatibility_hook;
|
|
354
|
+
} else {
|
|
355
|
+
this.overlayCompatibilityHook ??= null;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if ('bot' in data) {
|
|
359
|
+
/**
|
|
360
|
+
* The bot attached to this application
|
|
361
|
+
* @type {?User}
|
|
362
|
+
*/
|
|
363
|
+
this.bot = data.bot;
|
|
364
|
+
} else {
|
|
365
|
+
this.bot ??= null;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
if ('developers' in data) {
|
|
369
|
+
/**
|
|
370
|
+
* @typedef {Object} Company
|
|
371
|
+
* @property {?Snowflake} id - The ID of the company
|
|
372
|
+
* @property {?string} name - The name of the company
|
|
373
|
+
*/
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* The companies that developed the application
|
|
377
|
+
* @type {?Company[]}
|
|
378
|
+
*/
|
|
379
|
+
this.developers = data.developers;
|
|
380
|
+
} else {
|
|
381
|
+
this.developers ??= null;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
if ('publishers' in data) {
|
|
385
|
+
/**
|
|
386
|
+
* The companies that published the application
|
|
387
|
+
* @type {?Company[]}
|
|
388
|
+
*/
|
|
389
|
+
this.publishers = data.publishers;
|
|
390
|
+
} else {
|
|
391
|
+
this.publishers ??= null;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
if ('redirect_uris' in data) {
|
|
395
|
+
/**
|
|
396
|
+
* The whitelisted URLs for redirecting to during OAuth2 authorization (max 10)
|
|
397
|
+
* @type {?string[]}
|
|
398
|
+
*/
|
|
399
|
+
this.redirectUris = data.redirect_uris;
|
|
400
|
+
} else {
|
|
401
|
+
this.redirectUris ??= null;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if ('deeplink_uri' in data) {
|
|
405
|
+
/**
|
|
406
|
+
* The URL used for deep linking during OAuth2 authorization on mobile devices
|
|
407
|
+
* @type {?string}
|
|
408
|
+
*/
|
|
409
|
+
this.deeplinkUri = data.deeplink_uri;
|
|
410
|
+
} else {
|
|
411
|
+
this.deeplinkUri ??= null;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
if ('integration_public' in data) {
|
|
415
|
+
/**
|
|
416
|
+
* Whether only the application owner can add the integration
|
|
417
|
+
* @type {?boolean}
|
|
418
|
+
*/
|
|
419
|
+
this.integrationPublic = data.integration_public;
|
|
420
|
+
} else {
|
|
421
|
+
this.integrationPublic ??= null;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
if ('integration_require_code_grant' in data) {
|
|
425
|
+
/**
|
|
426
|
+
* Whether the integration will only be added upon completion of a full OAuth2 token exchange
|
|
427
|
+
* @type {?boolean}
|
|
428
|
+
*/
|
|
429
|
+
this.integrationRequireCodeGrant = data.integration_require_code_grant;
|
|
430
|
+
} else {
|
|
431
|
+
this.integrationRequireCodeGrant ??= null;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
if ('bot_disabled' in data) {
|
|
435
|
+
/**
|
|
436
|
+
* Whether the application's bot is disabled by Discord (default false)
|
|
437
|
+
* @type {?boolean}
|
|
438
|
+
*/
|
|
439
|
+
this.botDisabled = data.bot_disabled;
|
|
440
|
+
} else {
|
|
441
|
+
this.botDisabled ??= null;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
if ('bot_quarantined' in data) {
|
|
445
|
+
/**
|
|
446
|
+
* Whether the application's bot is quarantined by Discord
|
|
447
|
+
* @type {?boolean}
|
|
448
|
+
*/
|
|
449
|
+
this.botQuarantined = data.bot_quarantined;
|
|
450
|
+
} else {
|
|
451
|
+
this.botQuarantined ??= null;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
if ('approximate_user_install_count' in data) {
|
|
455
|
+
/**
|
|
456
|
+
* Approximate count of users that have authorized the application with the applications.commands scope
|
|
457
|
+
* @type {?number}
|
|
458
|
+
*/
|
|
459
|
+
this.approximateUserInstallCount = data.approximate_user_install_count;
|
|
460
|
+
} else {
|
|
461
|
+
this.approximateUserInstallCount ??= null;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
if ('approximate_user_authorization_count' in data) {
|
|
465
|
+
/**
|
|
466
|
+
* Approximate count of users that have OAuth2 authorizations for the application
|
|
467
|
+
* @type {?number}
|
|
468
|
+
*/
|
|
469
|
+
this.approximateUserAuthorizationCount = data.approximate_user_authorization_count;
|
|
470
|
+
} else {
|
|
471
|
+
this.approximateUserAuthorizationCount ??= null;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if ('internal_guild_restriction' in data) {
|
|
475
|
+
/**
|
|
476
|
+
* What guilds the application can be authorized in
|
|
477
|
+
* @type {?number}
|
|
478
|
+
*/
|
|
479
|
+
this.internalGuildRestriction = data.internal_guild_restriction;
|
|
480
|
+
} else {
|
|
481
|
+
this.internalGuildRestriction ??= null;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if ('interactions_endpoint_url' in data) {
|
|
485
|
+
/**
|
|
486
|
+
* The URL of the application's interactions endpoint
|
|
487
|
+
* @type {?string}
|
|
488
|
+
*/
|
|
489
|
+
this.interactionsEndpointUrl = data.interactions_endpoint_url;
|
|
490
|
+
} else {
|
|
491
|
+
this.interactionsEndpointUrl ??= null;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
if ('interactions_version' in data) {
|
|
495
|
+
/**
|
|
496
|
+
* The version of the application's interactions endpoint implementation
|
|
497
|
+
* @type {?number}
|
|
498
|
+
*/
|
|
499
|
+
this.interactionsVersion = data.interactions_version;
|
|
500
|
+
} else {
|
|
501
|
+
this.interactionsVersion ??= null;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
if ('interactions_event_types' in data) {
|
|
505
|
+
/**
|
|
506
|
+
* The enabled event webhook types to send to the interaction endpoint
|
|
507
|
+
* @type {?string[]}
|
|
508
|
+
*/
|
|
509
|
+
this.interactionsEventTypes = data.interactions_event_types;
|
|
510
|
+
} else {
|
|
511
|
+
this.interactionsEventTypes ??= null;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
if ('event_webhooks_status' in data) {
|
|
515
|
+
/**
|
|
516
|
+
* Whether event webhooks are enabled
|
|
517
|
+
* @type {?number}
|
|
518
|
+
*/
|
|
519
|
+
this.eventWebhooksStatus = data.event_webhooks_status;
|
|
520
|
+
} else {
|
|
521
|
+
this.eventWebhooksStatus ??= null;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
if ('event_webhooks_url' in data) {
|
|
525
|
+
/**
|
|
526
|
+
* The URL of the application's event webhooks endpoint
|
|
527
|
+
* @type {?string}
|
|
528
|
+
*/
|
|
529
|
+
this.eventWebhooksUrl = data.event_webhooks_url;
|
|
530
|
+
} else {
|
|
531
|
+
this.eventWebhooksUrl ??= null;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if ('event_webhooks_types' in data) {
|
|
535
|
+
/**
|
|
536
|
+
* The enabled event webhook types to send to the event webhooks endpoint
|
|
537
|
+
* @type {?string[]}
|
|
538
|
+
*/
|
|
539
|
+
this.eventWebhooksTypes = data.event_webhooks_types;
|
|
540
|
+
} else {
|
|
541
|
+
this.eventWebhooksTypes ??= null;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
if ('explicit_content_filter' in data) {
|
|
545
|
+
/**
|
|
546
|
+
* Whether uploaded media content used in application commands is scanned and deleted for explicit content
|
|
547
|
+
* @type {?number}
|
|
548
|
+
*/
|
|
549
|
+
this.explicitContentFilter = data.explicit_content_filter;
|
|
550
|
+
} else {
|
|
551
|
+
this.explicitContentFilter ??= null;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
if ('integration_types_config' in data) {
|
|
555
|
+
/**
|
|
556
|
+
* The configuration for each integration type supported by the application
|
|
557
|
+
* @type {?object}
|
|
558
|
+
*/
|
|
559
|
+
this.integrationTypesConfig = data.integration_types_config;
|
|
560
|
+
} else {
|
|
561
|
+
this.integrationTypesConfig ??= null;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
if ('is_verified' in data) {
|
|
565
|
+
/**
|
|
566
|
+
* Whether the application is verified
|
|
567
|
+
* @type {?boolean}
|
|
568
|
+
*/
|
|
569
|
+
this.isVerified = data.is_verified;
|
|
570
|
+
} else {
|
|
571
|
+
this.isVerified ??= null;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
if ('verification_state' in data) {
|
|
575
|
+
/**
|
|
576
|
+
* The current verification state of the application
|
|
577
|
+
* @type {?number}
|
|
578
|
+
*/
|
|
579
|
+
this.verificationState = data.verification_state;
|
|
580
|
+
} else {
|
|
581
|
+
this.verificationState ??= null;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
if ('store_application_state' in data) {
|
|
585
|
+
/**
|
|
586
|
+
* The current store approval state of the commerce application
|
|
587
|
+
* @type {?number}
|
|
588
|
+
*/
|
|
589
|
+
this.storeApplicationState = data.store_application_state;
|
|
590
|
+
} else {
|
|
591
|
+
this.storeApplicationState ??= null;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
if ('rpc_application_state' in data) {
|
|
595
|
+
/**
|
|
596
|
+
* The current RPC approval state of the application
|
|
597
|
+
* @type {?number}
|
|
598
|
+
*/
|
|
599
|
+
this.rpcApplicationState = data.rpc_application_state;
|
|
600
|
+
} else {
|
|
601
|
+
this.rpcApplicationState ??= null;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
if ('creator_monetization_state' in data) {
|
|
605
|
+
/**
|
|
606
|
+
* The current guild creator monetization state of the application
|
|
607
|
+
* @type {?number}
|
|
608
|
+
*/
|
|
609
|
+
this.creatorMonetizationState = data.creator_monetization_state;
|
|
610
|
+
} else {
|
|
611
|
+
this.creatorMonetizationState ??= null;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
if ('is_discoverable' in data) {
|
|
615
|
+
/**
|
|
616
|
+
* Whether the application is discoverable in the application directory
|
|
617
|
+
* @type {?boolean}
|
|
618
|
+
*/
|
|
619
|
+
this.isDiscoverable = data.is_discoverable;
|
|
620
|
+
} else {
|
|
621
|
+
this.isDiscoverable ??= null;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
if ('discoverability_state' in data) {
|
|
625
|
+
/**
|
|
626
|
+
* The current application directory discoverability state of the application
|
|
627
|
+
* @type {?number}
|
|
628
|
+
*/
|
|
629
|
+
this.discoverabilityState = data.discoverability_state;
|
|
630
|
+
} else {
|
|
631
|
+
this.discoverabilityState ??= null;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
if ('discovery_eligibility_flags' in data) {
|
|
635
|
+
/**
|
|
636
|
+
* The current application directory eligibility flags for the application
|
|
637
|
+
* @type {?number}
|
|
638
|
+
*/
|
|
639
|
+
this.discoveryEligibilityFlags = data.discovery_eligibility_flags;
|
|
640
|
+
} else {
|
|
641
|
+
this.discoveryEligibilityFlags ??= null;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
if ('is_monetized' in data) {
|
|
645
|
+
/**
|
|
646
|
+
* Whether the application has monetization enabled
|
|
647
|
+
* @type {?boolean}
|
|
648
|
+
*/
|
|
649
|
+
this.isMonetized = data.is_monetized;
|
|
650
|
+
} else {
|
|
651
|
+
this.isMonetized ??= null;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
if ('storefront_available' in data) {
|
|
655
|
+
/**
|
|
656
|
+
* Whether the application has public subscriptions or products available for purchase
|
|
657
|
+
* @type {?boolean}
|
|
658
|
+
*/
|
|
659
|
+
this.storefrontAvailable = data.storefront_available;
|
|
660
|
+
} else {
|
|
661
|
+
this.storefrontAvailable ??= null;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
if ('monetization_state' in data) {
|
|
665
|
+
/**
|
|
666
|
+
* The current application monetization state of the application
|
|
667
|
+
* @type {?number}
|
|
668
|
+
*/
|
|
669
|
+
this.monetizationState = data.monetization_state;
|
|
670
|
+
} else {
|
|
671
|
+
this.monetizationState ??= null;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if ('monetization_eligibility_flags' in data) {
|
|
675
|
+
/**
|
|
676
|
+
* The current application monetization eligibility flags for the application
|
|
677
|
+
* @type {?number}
|
|
678
|
+
*/
|
|
679
|
+
this.monetizationEligibilityFlags = data.monetization_eligibility_flags;
|
|
680
|
+
} else {
|
|
681
|
+
this.monetizationEligibilityFlags ??= null;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
if ('max_participants' in data) {
|
|
685
|
+
/**
|
|
686
|
+
* The maximum possible participants in the application's embedded activity (-1 for no limit)
|
|
687
|
+
* @type {?number}
|
|
688
|
+
*/
|
|
689
|
+
this.maxParticipants = data.max_participants;
|
|
690
|
+
} else {
|
|
691
|
+
this.maxParticipants ??= null;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* The guild associated with this application.
|
|
697
|
+
* @type {?Guild}
|
|
698
|
+
* @readonly
|
|
699
|
+
*/
|
|
700
|
+
get guild() {
|
|
701
|
+
return this.client.guilds.cache.get(this.guildId) ?? null;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* Whether this application is partial
|
|
706
|
+
* @type {boolean}
|
|
707
|
+
* @readonly
|
|
708
|
+
*/
|
|
709
|
+
get partial() {
|
|
710
|
+
return !this.name;
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* The timestamp the application was created at
|
|
715
|
+
* @type {number}
|
|
716
|
+
* @readonly
|
|
717
|
+
*/
|
|
718
|
+
get createdTimestamp() {
|
|
719
|
+
return SnowflakeUtil.timestampFrom(this.id);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* The time the application was created at
|
|
724
|
+
* @type {Date}
|
|
725
|
+
* @readonly
|
|
726
|
+
*/
|
|
727
|
+
get createdAt() {
|
|
728
|
+
return new Date(this.createdTimestamp);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Obtains this application from Discord.
|
|
733
|
+
* @returns {Promise<Application>}
|
|
734
|
+
*/
|
|
735
|
+
async fetch() {
|
|
736
|
+
const app = await this.client.api.oauth2.authorize.get({
|
|
737
|
+
query: {
|
|
738
|
+
client_id: this.id,
|
|
739
|
+
scope: 'bot applications.commands',
|
|
740
|
+
},
|
|
741
|
+
});
|
|
742
|
+
const user = this.client.users._add(app.bot);
|
|
743
|
+
user._partial = false;
|
|
744
|
+
this._patch(app.application);
|
|
745
|
+
return this;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* Gets this application's role connection metadata records
|
|
750
|
+
* @returns {Promise<ApplicationRoleConnectionMetadata[]>}
|
|
751
|
+
*/
|
|
752
|
+
async fetchRoleConnectionMetadataRecords() {
|
|
753
|
+
const metadata = await this.client.api.applications(this.id)('role-connections').metadata.get();
|
|
754
|
+
return metadata.map(data => new ApplicationRoleConnectionMetadata(data));
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* A link to the application's icon.
|
|
759
|
+
* @param {StaticImageURLOptions} [options={}] Options for the Image URL
|
|
760
|
+
* @returns {?string}
|
|
761
|
+
*/
|
|
762
|
+
iconURL({ format, size } = {}) {
|
|
763
|
+
if (!this.icon) return null;
|
|
764
|
+
return this.client.rest.cdn.AppIcon(this.id, this.icon, { format, size });
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
/**
|
|
768
|
+
* A link to this application's cover image.
|
|
769
|
+
* @param {StaticImageURLOptions} [options={}] Options for the Image URL
|
|
770
|
+
* @returns {?string}
|
|
771
|
+
*/
|
|
772
|
+
coverURL({ format, size } = {}) {
|
|
773
|
+
if (!this.cover) return null;
|
|
774
|
+
return Endpoints.CDN(this.client.options.http.cdn).AppIcon(this.id, this.cover, { format, size });
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
/**
|
|
778
|
+
* Asset data.
|
|
779
|
+
* @typedef {Object} ApplicationAsset
|
|
780
|
+
* @property {Snowflake} id The asset's id
|
|
781
|
+
* @property {string} name The asset's name
|
|
782
|
+
* @property {string} type The asset's type
|
|
783
|
+
*/
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Gets the application's rich presence assets.
|
|
787
|
+
* @returns {Promise<Array<ApplicationAsset>>}
|
|
788
|
+
* @deprecated This will be removed in the next major as it is unsupported functionality.
|
|
789
|
+
*/
|
|
790
|
+
async fetchAssets() {
|
|
791
|
+
if (!deprecationEmittedForFetchAssets) {
|
|
792
|
+
process.emitWarning(
|
|
793
|
+
'Application#fetchAssets is deprecated as it is unsupported and will be removed in the next major version.',
|
|
794
|
+
'DeprecationWarning',
|
|
795
|
+
);
|
|
796
|
+
|
|
797
|
+
deprecationEmittedForFetchAssets = true;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
const assets = await this.client.api.oauth2.applications(this.id).assets.get();
|
|
801
|
+
return assets.map(a => ({
|
|
802
|
+
id: a.id,
|
|
803
|
+
name: a.name,
|
|
804
|
+
type: AssetTypes[a.type - 1],
|
|
805
|
+
}));
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
/**
|
|
809
|
+
* When concatenated with a string, this automatically returns the application's name instead of the
|
|
810
|
+
* Application object.
|
|
811
|
+
* @returns {?string}
|
|
812
|
+
* @example
|
|
813
|
+
* // Logs: Application name: My App
|
|
814
|
+
* console.log(`Application name: ${application}`);
|
|
815
|
+
*/
|
|
816
|
+
toString() {
|
|
817
|
+
return this.name;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
toJSON() {
|
|
821
|
+
return super.toJSON({ createdTimestamp: true });
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
/**
|
|
825
|
+
* Edits this application
|
|
826
|
+
* @param {ApplicationEditData} data The data to edit the application with
|
|
827
|
+
* @returns {Promise<Application>}
|
|
828
|
+
* @example
|
|
829
|
+
* // Edit the application
|
|
830
|
+
* application.edit({
|
|
831
|
+
* name: 'My New Bot Name',
|
|
832
|
+
* description: 'A cool bot description',
|
|
833
|
+
* tags: ['utility', 'moderation']
|
|
834
|
+
* })
|
|
835
|
+
* .then(app => console.log(`Updated: ${app.name}`))
|
|
836
|
+
* .catch(console.error);
|
|
837
|
+
*/
|
|
838
|
+
edit(data) {
|
|
839
|
+
return this.client.developers.edit(this.id, data);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/**
|
|
843
|
+
* Sets the avatar of this application
|
|
844
|
+
* @param {?(BufferResolvable|Base64Resolvable)} avatar The new avatar
|
|
845
|
+
* @returns {Promise<Application>}
|
|
846
|
+
* @example
|
|
847
|
+
* // Set application avatar
|
|
848
|
+
* application.setAvatar('./avatar.png')
|
|
849
|
+
* .then(app => console.log(`Updated avatar for ${app.name}`))
|
|
850
|
+
* .catch(console.error);
|
|
851
|
+
*/
|
|
852
|
+
setAvatar(avatar) {
|
|
853
|
+
return this.client.developers.setAvatar(this.id, avatar);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Sets the name of this application
|
|
858
|
+
* @param {string} name The new name
|
|
859
|
+
* @returns {Promise<Application>}
|
|
860
|
+
* @example
|
|
861
|
+
* // Set application name
|
|
862
|
+
* application.setName('My Cool Bot')
|
|
863
|
+
* .then(app => console.log(`Renamed to ${app.name}`))
|
|
864
|
+
* .catch(console.error);
|
|
865
|
+
*/
|
|
866
|
+
setName(name) {
|
|
867
|
+
return this.client.developers.setName(this.id, name);
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/**
|
|
871
|
+
* Sets the description of this application
|
|
872
|
+
* @param {string} description The new description
|
|
873
|
+
* @returns {Promise<Application>}
|
|
874
|
+
* @example
|
|
875
|
+
* // Set application description
|
|
876
|
+
* application.setDescription('A helpful utility bot')
|
|
877
|
+
* .then(app => console.log(`Updated description for ${app.name}`))
|
|
878
|
+
* .catch(console.error);
|
|
879
|
+
*/
|
|
880
|
+
setDescription(description) {
|
|
881
|
+
return this.client.developers.setDescription(this.id, description);
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
/**
|
|
885
|
+
* Sets the tags of this application (max 5 tags)
|
|
886
|
+
* @param {string[]} tags Array of tags (max 5)
|
|
887
|
+
* @returns {Promise<Application>}
|
|
888
|
+
* @example
|
|
889
|
+
* // Set application tags
|
|
890
|
+
* application.setTags(['utility', 'moderation', 'fun'])
|
|
891
|
+
* .then(app => console.log(`Updated tags for ${app.name}`))
|
|
892
|
+
* .catch(console.error);
|
|
893
|
+
*/
|
|
894
|
+
setTags(tags) {
|
|
895
|
+
return this.client.developers.setTags(this.id, tags);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* Adds a tag to this application
|
|
900
|
+
* @param {string} tag The tag to add
|
|
901
|
+
* @returns {Promise<Application>}
|
|
902
|
+
* @example
|
|
903
|
+
* // Add a tag to application
|
|
904
|
+
* application.addTag('music')
|
|
905
|
+
* .then(app => console.log(`Added tag to ${app.name}`))
|
|
906
|
+
* .catch(console.error);
|
|
907
|
+
*/
|
|
908
|
+
addTag(tag) {
|
|
909
|
+
return this.client.developers.addTag(this.id, tag);
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
/**
|
|
913
|
+
* Removes a tag from this application
|
|
914
|
+
* @param {string} tag The tag to remove
|
|
915
|
+
* @returns {Promise<Application>}
|
|
916
|
+
* @example
|
|
917
|
+
* // Remove a tag from application
|
|
918
|
+
* application.delTag('music')
|
|
919
|
+
* .then(app => console.log(`Removed tag from ${app.name}`))
|
|
920
|
+
* .catch(console.error);
|
|
921
|
+
*/
|
|
922
|
+
delTag(tag) {
|
|
923
|
+
return this.client.developers.delTag(this.id, tag);
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* Enables intents for this bot application
|
|
928
|
+
* @returns {Promise<Application>}
|
|
929
|
+
* @example
|
|
930
|
+
* // Enable intents for bot
|
|
931
|
+
* application.enableIntents()
|
|
932
|
+
* .then(app => console.log(`Enabled intents for ${app.name}`))
|
|
933
|
+
* .catch(console.error);
|
|
934
|
+
*/
|
|
935
|
+
enableIntents() {
|
|
936
|
+
return this.client.developers.enableIntents(this.id);
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
/**
|
|
940
|
+
* Disables intents for this bot application
|
|
941
|
+
* @returns {Promise<Application>}
|
|
942
|
+
* @example
|
|
943
|
+
* // Disable intents for bot
|
|
944
|
+
* application.disableIntents()
|
|
945
|
+
* .then(app => console.log(`Disabled intents for ${app.name}`))
|
|
946
|
+
* .catch(console.error);
|
|
947
|
+
*/
|
|
948
|
+
disableIntents() {
|
|
949
|
+
return this.client.developers.disableIntents(this.id);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
module.exports = Application;
|