discord.js-selfbots-v13 0.0.1-security → 3.3.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.
Potentially problematic release.
This version of discord.js-selfbots-v13 might be problematic. Click here for more details.
- package/LICENSE +674 -0
- package/README.md +127 -5
- package/package.json +101 -6
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +87 -0
- package/src/client/Client.js +1154 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +115 -0
- package/src/client/actions/ActionsManager.js +72 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +26 -0
- package/src/client/actions/AutoModerationRuleCreate.js +27 -0
- package/src/client/actions/AutoModerationRuleDelete.js +31 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +39 -0
- package/src/client/actions/ChannelUpdate.js +34 -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/InteractionCreate.js +115 -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/MessageReactionAdd.js +56 -0
- package/src/client/actions/MessageReactionRemove.js +45 -0
- package/src/client/actions/MessageReactionRemoveAll.js +33 -0
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
- package/src/client/actions/MessageUpdate.js +26 -0
- package/src/client/actions/PresenceUpdate.js +45 -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 +57 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +51 -0
- package/src/client/websocket/WebSocketManager.js +412 -0
- package/src/client/websocket/WebSocketShard.js +908 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -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 +16 -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_APPLICATION_COMMANDS_UPDATE.js +11 -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 +46 -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_LIST_UPDATE.js +55 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
- package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
- package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
- package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -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_ACK.js +16 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/READY.js +172 -0
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +17 -0
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +15 -0
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +18 -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 +12 -0
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +9 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/index.js +86 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +227 -0
- package/src/errors/index.js +4 -0
- package/src/index.js +190 -0
- package/src/main.js +1 -0
- package/src/managers/ApplicationCommandManager.js +267 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +425 -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 +139 -0
- package/src/managers/ClientUserSettingManager.js +490 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/DeveloperPortalManager.js +104 -0
- package/src/managers/GuildApplicationCommandManager.js +28 -0
- package/src/managers/GuildBanManager.js +204 -0
- package/src/managers/GuildChannelManager.js +502 -0
- package/src/managers/GuildEmojiManager.js +171 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildFolderManager.js +24 -0
- package/src/managers/GuildForumThreadManager.js +114 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +304 -0
- package/src/managers/GuildMemberManager.js +724 -0
- package/src/managers/GuildMemberRoleManager.js +191 -0
- package/src/managers/GuildScheduledEventManager.js +296 -0
- package/src/managers/GuildSettingManager.js +148 -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 +393 -0
- package/src/managers/PermissionOverwriteManager.js +166 -0
- package/src/managers/PresenceManager.js +58 -0
- package/src/managers/ReactionManager.js +67 -0
- package/src/managers/ReactionUserManager.js +71 -0
- package/src/managers/RelationshipManager.js +258 -0
- package/src/managers/RoleManager.js +352 -0
- package/src/managers/SessionManager.js +57 -0
- package/src/managers/StageInstanceManager.js +162 -0
- package/src/managers/ThreadManager.js +207 -0
- package/src/managers/ThreadMemberManager.js +186 -0
- package/src/managers/UserManager.js +150 -0
- package/src/managers/VoiceStateManager.js +37 -0
- package/src/rest/APIRequest.js +136 -0
- package/src/rest/APIRouter.js +53 -0
- package/src/rest/CaptchaSolver.js +78 -0
- package/src/rest/DiscordAPIError.js +103 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +81 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +446 -0
- package/src/sharding/Shard.js +443 -0
- package/src/sharding/ShardClientUtil.js +275 -0
- package/src/sharding/ShardingManager.js +318 -0
- package/src/structures/AnonymousGuild.js +98 -0
- package/src/structures/ApplicationCommand.js +1028 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
- package/src/structures/AutoModerationActionExecution.js +89 -0
- package/src/structures/AutoModerationRule.js +294 -0
- package/src/structures/AutocompleteInteraction.js +106 -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 +193 -0
- package/src/structures/BaseGuildVoiceChannel.js +243 -0
- package/src/structures/BaseMessageComponent.js +114 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/Call.js +58 -0
- package/src/structures/CategoryChannel.js +83 -0
- package/src/structures/Channel.js +271 -0
- package/src/structures/ClientApplication.js +204 -0
- package/src/structures/ClientPresence.js +84 -0
- package/src/structures/ClientUser.js +624 -0
- package/src/structures/CommandInteraction.js +41 -0
- package/src/structures/CommandInteractionOptionResolver.js +276 -0
- package/src/structures/ContextMenuInteraction.js +65 -0
- package/src/structures/DMChannel.js +280 -0
- package/src/structures/DeveloperPortalApplication.js +520 -0
- package/src/structures/DirectoryChannel.js +20 -0
- package/src/structures/Emoji.js +148 -0
- package/src/structures/ForumChannel.js +271 -0
- package/src/structures/Guild.js +1744 -0
- package/src/structures/GuildAuditLogs.js +734 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildBoost.js +108 -0
- package/src/structures/GuildChannel.js +454 -0
- package/src/structures/GuildEmoji.js +161 -0
- package/src/structures/GuildFolder.js +75 -0
- package/src/structures/GuildMember.js +686 -0
- package/src/structures/GuildPreview.js +191 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +441 -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 +351 -0
- package/src/structures/InteractionCollector.js +248 -0
- package/src/structures/InteractionResponse.js +114 -0
- package/src/structures/InteractionWebhook.js +43 -0
- package/src/structures/Invite.js +375 -0
- package/src/structures/InviteGuild.js +23 -0
- package/src/structures/InviteStageInstance.js +86 -0
- package/src/structures/Message.js +1188 -0
- package/src/structures/MessageActionRow.js +103 -0
- package/src/structures/MessageAttachment.js +193 -0
- package/src/structures/MessageButton.js +231 -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 +586 -0
- package/src/structures/MessageMentions.js +272 -0
- package/src/structures/MessagePayload.js +358 -0
- package/src/structures/MessageReaction.js +171 -0
- package/src/structures/MessageSelectMenu.js +391 -0
- package/src/structures/Modal.js +279 -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/PartialGroupDMChannel.js +430 -0
- package/src/structures/PermissionOverwrites.js +196 -0
- package/src/structures/Presence.js +441 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/RichPresence.js +722 -0
- package/src/structures/Role.js +515 -0
- package/src/structures/SelectMenuInteraction.js +170 -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 +167 -0
- package/src/structures/TeamMember.js +71 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextInputComponent.js +201 -0
- package/src/structures/ThreadChannel.js +626 -0
- package/src/structures/ThreadMember.js +105 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/User.js +697 -0
- package/src/structures/UserContextMenuInteraction.js +29 -0
- package/src/structures/VoiceChannel.js +110 -0
- package/src/structures/VoiceRegion.js +53 -0
- package/src/structures/VoiceState.js +306 -0
- package/src/structures/WebEmbed.js +401 -0
- package/src/structures/Webhook.js +461 -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 +190 -0
- package/src/structures/interfaces/Collector.js +300 -0
- package/src/structures/interfaces/InteractionResponses.js +313 -0
- package/src/structures/interfaces/TextBasedChannel.js +566 -0
- package/src/util/ActivityFlags.js +44 -0
- package/src/util/ApplicationFlags.js +74 -0
- package/src/util/BitField.js +170 -0
- package/src/util/ChannelFlags.js +45 -0
- package/src/util/Constants.js +1917 -0
- package/src/util/DataResolver.js +145 -0
- package/src/util/Formatters.js +214 -0
- package/src/util/GuildMemberFlags.js +43 -0
- package/src/util/Intents.js +74 -0
- package/src/util/LimitedCollection.js +131 -0
- package/src/util/MessageFlags.js +54 -0
- package/src/util/Options.js +360 -0
- package/src/util/Permissions.js +187 -0
- package/src/util/PremiumUsageFlags.js +31 -0
- package/src/util/PurchasedFlags.js +31 -0
- package/src/util/RemoteAuth.js +522 -0
- package/src/util/SnowflakeUtil.js +92 -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 +741 -0
- package/src/util/Voice.js +1456 -0
- package/src/util/arRPC/index.js +229 -0
- package/src/util/arRPC/process/detectable.json +1 -0
- package/src/util/arRPC/process/index.js +102 -0
- package/src/util/arRPC/process/native/index.js +5 -0
- package/src/util/arRPC/process/native/linux.js +37 -0
- package/src/util/arRPC/process/native/win32.js +25 -0
- package/src/util/arRPC/transports/ipc.js +281 -0
- package/src/util/arRPC/transports/websocket.js +128 -0
- package/typings/enums.d.ts +346 -0
- package/typings/index.d.ts +7725 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,520 @@
|
|
1
|
+
'use strict';
|
2
|
+
const { Collection } = require('@discordjs/collection');
|
3
|
+
const { ApplicationRoleConnectionMetadata } = require('./ApplicationRoleConnectionMetadata');
|
4
|
+
const Base = require('./Base');
|
5
|
+
const ApplicationFlags = require('../util/ApplicationFlags');
|
6
|
+
const { ClientApplicationAssetTypes, Endpoints, ApplicationRoleConnectionMetadataTypes } = require('../util/Constants');
|
7
|
+
const DataResolver = require('../util/DataResolver');
|
8
|
+
const Permissions = require('../util/Permissions');
|
9
|
+
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
10
|
+
|
11
|
+
const AssetTypes = Object.keys(ClientApplicationAssetTypes);
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Represents an OAuth2 Application.
|
15
|
+
* @extends {Base}
|
16
|
+
* @abstract
|
17
|
+
*/
|
18
|
+
class DeveloperPortalApplication extends Base {
|
19
|
+
constructor(client, data) {
|
20
|
+
super(client);
|
21
|
+
this._patch(data);
|
22
|
+
}
|
23
|
+
_patch(data) {
|
24
|
+
/**
|
25
|
+
* The application's id
|
26
|
+
* @type {Snowflake}
|
27
|
+
*/
|
28
|
+
this.id = data.id;
|
29
|
+
|
30
|
+
if ('name' in data) {
|
31
|
+
/**
|
32
|
+
* The name of the application
|
33
|
+
* @type {?string}
|
34
|
+
*/
|
35
|
+
this.name = data.name;
|
36
|
+
} else {
|
37
|
+
this.name ??= null;
|
38
|
+
}
|
39
|
+
|
40
|
+
if ('description' in data) {
|
41
|
+
/**
|
42
|
+
* The application's description
|
43
|
+
* @type {?string}
|
44
|
+
*/
|
45
|
+
this.description = data.description;
|
46
|
+
} else {
|
47
|
+
this.description ??= null;
|
48
|
+
}
|
49
|
+
|
50
|
+
if ('icon' in data) {
|
51
|
+
/**
|
52
|
+
* The application's icon hash
|
53
|
+
* @type {?string}
|
54
|
+
*/
|
55
|
+
this.icon = data.icon;
|
56
|
+
} else {
|
57
|
+
this.icon ??= null;
|
58
|
+
}
|
59
|
+
|
60
|
+
if ('bot' in data) {
|
61
|
+
/**
|
62
|
+
* Bot application
|
63
|
+
* @type {User}
|
64
|
+
*/
|
65
|
+
this.bot = this.client.users._add(data.bot);
|
66
|
+
}
|
67
|
+
|
68
|
+
/**
|
69
|
+
* The tags this application has (max of 5)
|
70
|
+
* @type {string[]}
|
71
|
+
*/
|
72
|
+
this.tags = data.tags ?? [];
|
73
|
+
|
74
|
+
if ('install_params' in data) {
|
75
|
+
/**
|
76
|
+
* Settings for this application's default in-app authorization
|
77
|
+
* @type {?ClientApplicationInstallParams}
|
78
|
+
*/
|
79
|
+
this.installParams = {
|
80
|
+
scopes: data.install_params.scopes,
|
81
|
+
permissions: new Permissions(data.install_params.permissions).freeze(),
|
82
|
+
};
|
83
|
+
} else {
|
84
|
+
this.installParams ??= null;
|
85
|
+
}
|
86
|
+
|
87
|
+
if ('custom_install_url' in data) {
|
88
|
+
/**
|
89
|
+
* This application's custom installation URL
|
90
|
+
* @type {?string}
|
91
|
+
*/
|
92
|
+
this.customInstallURL = data.custom_install_url;
|
93
|
+
} else {
|
94
|
+
this.customInstallURL = null;
|
95
|
+
}
|
96
|
+
|
97
|
+
if ('flags' in data) {
|
98
|
+
/**
|
99
|
+
* The flags this application has
|
100
|
+
* @type {ApplicationFlags}
|
101
|
+
*/
|
102
|
+
this.flags = new ApplicationFlags(data.flags).freeze();
|
103
|
+
}
|
104
|
+
|
105
|
+
if ('cover_image' in data) {
|
106
|
+
/**
|
107
|
+
* The hash of the application's cover image
|
108
|
+
* @type {?string}
|
109
|
+
*/
|
110
|
+
this.cover = data.cover_image;
|
111
|
+
} else {
|
112
|
+
this.cover ??= null;
|
113
|
+
}
|
114
|
+
|
115
|
+
if ('rpc_origins' in data) {
|
116
|
+
/**
|
117
|
+
* The application's RPC origins, if enabled
|
118
|
+
* @type {string[]}
|
119
|
+
*/
|
120
|
+
this.rpcOrigins = data.rpc_origins;
|
121
|
+
} else {
|
122
|
+
this.rpcOrigins ??= [];
|
123
|
+
}
|
124
|
+
|
125
|
+
if ('bot_require_code_grant' in data) {
|
126
|
+
/**
|
127
|
+
* If this application's bot requires a code grant when using the OAuth2 flow
|
128
|
+
* @type {?boolean}
|
129
|
+
*/
|
130
|
+
this.botRequireCodeGrant = data.bot_require_code_grant;
|
131
|
+
} else {
|
132
|
+
this.botRequireCodeGrant ??= null;
|
133
|
+
}
|
134
|
+
|
135
|
+
if ('bot_public' in data) {
|
136
|
+
/**
|
137
|
+
* If this application's bot is public
|
138
|
+
* @type {?boolean}
|
139
|
+
*/
|
140
|
+
this.botPublic = data.bot_public;
|
141
|
+
} else {
|
142
|
+
this.botPublic ??= null;
|
143
|
+
}
|
144
|
+
|
145
|
+
/**
|
146
|
+
* The owner of this OAuth application
|
147
|
+
* @type {?(User|Team)}
|
148
|
+
*/
|
149
|
+
this.owner = null;
|
150
|
+
if (data.owner.username == `team${data.owner.id}` && data.owner.discriminator == '0000') {
|
151
|
+
this.owner = this.client.developerPortal.teams.get(data.owner.id);
|
152
|
+
} else {
|
153
|
+
this.owner = data.owner ? this.client.users._add(data.owner) : this.owner ?? null;
|
154
|
+
}
|
155
|
+
|
156
|
+
/**
|
157
|
+
* Redirect URIs for this application
|
158
|
+
* @type {Array<string>}
|
159
|
+
*/
|
160
|
+
this.redirectURIs = data.redirect_uris ?? [];
|
161
|
+
|
162
|
+
/**
|
163
|
+
* BOT_HTTP_INTERACTIONS feature flag
|
164
|
+
* @type {?string}
|
165
|
+
*/
|
166
|
+
this.interactionEndpointURL = data.interactions_endpoint_url ?? null;
|
167
|
+
|
168
|
+
/**
|
169
|
+
* Public key
|
170
|
+
* @type {?string}
|
171
|
+
*/
|
172
|
+
this.publicKey = data.verify_key ?? null;
|
173
|
+
|
174
|
+
/**
|
175
|
+
* @typedef {Object} Tester
|
176
|
+
* @property {number} state The state of the tester (2: Accepted, 1: Pending)
|
177
|
+
* @property {User} user The user that the tester is
|
178
|
+
*/
|
179
|
+
/**
|
180
|
+
* User tester
|
181
|
+
* @type {Collection<Snowflake, Tester>}
|
182
|
+
*/
|
183
|
+
this.testers = new Collection(); // <Snowflake, User>
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Terms of service URL
|
187
|
+
* @type {?string}
|
188
|
+
*/
|
189
|
+
this.TermsOfService = data.terms_of_service_url ?? null;
|
190
|
+
|
191
|
+
/**
|
192
|
+
* Privacy policy URL
|
193
|
+
* @type {?string}
|
194
|
+
*/
|
195
|
+
this.PrivacyPolicy = data.privacy_policy_url ?? null;
|
196
|
+
|
197
|
+
if ('role_connections_verification_url' in data) {
|
198
|
+
/**
|
199
|
+
* This application's role connection verification entry point URL
|
200
|
+
* @type {?string}
|
201
|
+
*/
|
202
|
+
this.roleConnectionsVerificationURL = data.role_connections_verification_url;
|
203
|
+
} else {
|
204
|
+
this.roleConnectionsVerificationURL ??= null;
|
205
|
+
}
|
206
|
+
}
|
207
|
+
/**
|
208
|
+
* The timestamp the application was created at
|
209
|
+
* @type {number}
|
210
|
+
* @readonly
|
211
|
+
*/
|
212
|
+
get createdTimestamp() {
|
213
|
+
return SnowflakeUtil.timestampFrom(this.id);
|
214
|
+
}
|
215
|
+
|
216
|
+
/**
|
217
|
+
* The time the application was created at
|
218
|
+
* @type {Date}
|
219
|
+
* @readonly
|
220
|
+
*/
|
221
|
+
get createdAt() {
|
222
|
+
return new Date(this.createdTimestamp);
|
223
|
+
}
|
224
|
+
|
225
|
+
/**
|
226
|
+
* A link to the application's icon.
|
227
|
+
* @param {StaticImageURLOptions} [options={}] Options for the Image URL
|
228
|
+
* @returns {?string}
|
229
|
+
*/
|
230
|
+
iconURL({ format, size } = {}) {
|
231
|
+
if (!this.icon) return null;
|
232
|
+
return this.client.rest.cdn.AppIcon(this.id, this.icon, { format, size });
|
233
|
+
}
|
234
|
+
|
235
|
+
/**
|
236
|
+
* A link to this application's cover image.
|
237
|
+
* @param {StaticImageURLOptions} [options={}] Options for the Image URL
|
238
|
+
* @returns {?string}
|
239
|
+
*/
|
240
|
+
coverURL({ format, size } = {}) {
|
241
|
+
if (!this.cover) return null;
|
242
|
+
return Endpoints.CDN(this.client.options.http.cdn).AppIcon(this.id, this.cover, { format, size });
|
243
|
+
}
|
244
|
+
|
245
|
+
/**
|
246
|
+
* Asset data.
|
247
|
+
* @typedef {Object} ApplicationAsset
|
248
|
+
* @property {Snowflake} id The asset's id
|
249
|
+
* @property {string} name The asset's name
|
250
|
+
* @property {string} type The asset's type
|
251
|
+
*/
|
252
|
+
|
253
|
+
/**
|
254
|
+
* Gets the application's rich presence assets.
|
255
|
+
* @returns {Promise<Array<ApplicationAsset>>}
|
256
|
+
* @deprecated This will be removed in the next major as it is unsupported functionality.
|
257
|
+
*/
|
258
|
+
async fetchAssets() {
|
259
|
+
const assets = await this.client.api.oauth2.applications(this.id).assets.get();
|
260
|
+
return assets.map(a => ({
|
261
|
+
id: a.id,
|
262
|
+
name: a.name,
|
263
|
+
type: AssetTypes[a.type - 1],
|
264
|
+
}));
|
265
|
+
}
|
266
|
+
|
267
|
+
/**
|
268
|
+
* Whether this application is partial
|
269
|
+
* @type {boolean}
|
270
|
+
* @readonly
|
271
|
+
*/
|
272
|
+
get partial() {
|
273
|
+
return !this.name;
|
274
|
+
}
|
275
|
+
|
276
|
+
/**
|
277
|
+
* Obtains this application from Discord.
|
278
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
279
|
+
*/
|
280
|
+
async fetch() {
|
281
|
+
const app = await this.client.api.applications[this.id].get();
|
282
|
+
this._patch(app);
|
283
|
+
return this;
|
284
|
+
}
|
285
|
+
|
286
|
+
/**
|
287
|
+
* Gets all testers for this application.
|
288
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
289
|
+
*/
|
290
|
+
async fetchTesters() {
|
291
|
+
const app = await this.client.api.applications[this.id].allowlist.get();
|
292
|
+
this.testers = new Collection();
|
293
|
+
for (const tester of app || []) {
|
294
|
+
this.testers.set(tester.user.id, {
|
295
|
+
state: tester.state,
|
296
|
+
user: this.client.users._add(tester.user),
|
297
|
+
});
|
298
|
+
}
|
299
|
+
return this;
|
300
|
+
}
|
301
|
+
|
302
|
+
/**
|
303
|
+
* Add user to this application's allowlist.
|
304
|
+
* @param {string} username Username of the user to add
|
305
|
+
* @param {string} discriminator Discriminator of the user to add
|
306
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
307
|
+
*/
|
308
|
+
async addTester(username, discriminator) {
|
309
|
+
const app = await this.client.api.applications[this.id].allowlist.post({
|
310
|
+
data: {
|
311
|
+
username,
|
312
|
+
discriminator,
|
313
|
+
},
|
314
|
+
});
|
315
|
+
this.testers.set(app.user.id, {
|
316
|
+
state: app.state,
|
317
|
+
user: this.client.users._add(app.user),
|
318
|
+
});
|
319
|
+
return this;
|
320
|
+
}
|
321
|
+
|
322
|
+
/**
|
323
|
+
* Delete user from this application's allowlist.
|
324
|
+
* @param {UserResolvable} user User
|
325
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
326
|
+
*/
|
327
|
+
async deleteTester(user) {
|
328
|
+
const userId = this.client.users.resolveId(user);
|
329
|
+
await this.client.api.applications[this.id].allowlist[userId].delete();
|
330
|
+
this.testers.delete(userId);
|
331
|
+
return this;
|
332
|
+
}
|
333
|
+
|
334
|
+
/**
|
335
|
+
* The data for editing a application.
|
336
|
+
* @typedef {Object} ApplicationEditData
|
337
|
+
* @property {string} [name] The name of the app
|
338
|
+
* @property {string} [description] The description of the app
|
339
|
+
* @property {?(BufferResolvable|Base64Resolvable)} [icon] The icon of the app
|
340
|
+
* @property {?(BufferResolvable|Base64Resolvable)} [cover] The application's default rich presence invite
|
341
|
+
* @property {boolean} [botPublic] When false only app owner can join the app's bot to guilds
|
342
|
+
* @property {boolean} [botRequireCodeGrant] When true the app's bot will only join upon completion of the full oauth2 code grant flow
|
343
|
+
* @property {?string} [TermsOfService] ToS URL
|
344
|
+
* @property {?string} [PrivacyPolicy] Privacy policy URL
|
345
|
+
* @property {number} [flags] The application's public flags
|
346
|
+
* @property {Array<string>} [redirectURIs] Redirect URIs (OAuth2 only)
|
347
|
+
* @property {Array<string>} [tags] Up to 5 tags describing the content and functionality of the application
|
348
|
+
*/
|
349
|
+
/**
|
350
|
+
* Edits this application.
|
351
|
+
* @param {ApplicationEditData} data Edit data for the application
|
352
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
353
|
+
*/
|
354
|
+
async edit(data) {
|
355
|
+
const _data = {};
|
356
|
+
if (data.name) _data.name = data.name;
|
357
|
+
if (typeof data.icon !== 'undefined') {
|
358
|
+
_data.icon = await DataResolver.resolveImage(data.icon);
|
359
|
+
}
|
360
|
+
if (data.description) _data.description = data.description;
|
361
|
+
if (typeof data.cover !== 'undefined') {
|
362
|
+
_data.cover = await DataResolver.resolveImage(data.cover);
|
363
|
+
}
|
364
|
+
if (data.botPublic) _data.bot_public = data.botPublic;
|
365
|
+
if (data.botRequireCodeGrant) _data.bot_require_code_grant = data.botRequireCodeGrant;
|
366
|
+
if (data.TermsOfService) _data.terms_of_service_url = data.TermsOfService;
|
367
|
+
if (data.PrivacyPolicy) _data.privacy_policy_url = data.PrivacyPolicy;
|
368
|
+
if (data.flags) _data.flags = data.flags;
|
369
|
+
if (data.redirectURIs) _data.redirect_uris = data.redirectURIs;
|
370
|
+
if (data.tags) _data.tags = data.tags;
|
371
|
+
//
|
372
|
+
const app = await this.client.api.applications[this.id].patch({ data: _data });
|
373
|
+
this._patch(app);
|
374
|
+
return this;
|
375
|
+
}
|
376
|
+
|
377
|
+
/**
|
378
|
+
* Creates a new bot for this application.
|
379
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
380
|
+
*/
|
381
|
+
async createBot() {
|
382
|
+
if (this.bot) throw new Error('Application already has a bot.');
|
383
|
+
await this.client.api.applications[this.id].bot.post();
|
384
|
+
const app = await this.fetch();
|
385
|
+
return app;
|
386
|
+
}
|
387
|
+
|
388
|
+
/**
|
389
|
+
* Reset CLient Secret for this application.
|
390
|
+
* @param {number} MFACode The MFA code (if required)
|
391
|
+
* @returns {Promise<string>}
|
392
|
+
*/
|
393
|
+
async resetClientSecret(MFACode) {
|
394
|
+
const app = MFACode
|
395
|
+
? await this.client.api.applications[this.id].reset.post({
|
396
|
+
data: {
|
397
|
+
code: MFACode,
|
398
|
+
},
|
399
|
+
})
|
400
|
+
: await this.client.api.applications[this.id].reset.post();
|
401
|
+
return app.secret;
|
402
|
+
}
|
403
|
+
|
404
|
+
/**
|
405
|
+
* Reset Bot Token for this application.
|
406
|
+
* @param {number} MFACode The MFA code (if required)
|
407
|
+
* @returns {Promise<string>}
|
408
|
+
*/
|
409
|
+
async resetBotToken(MFACode) {
|
410
|
+
const app = MFACode
|
411
|
+
? await this.client.api.applications[this.id].bot.reset.post({
|
412
|
+
data: {
|
413
|
+
code: MFACode,
|
414
|
+
},
|
415
|
+
})
|
416
|
+
: await this.client.api.applications[this.id].bot.reset.post();
|
417
|
+
return app.token;
|
418
|
+
}
|
419
|
+
|
420
|
+
/**
|
421
|
+
* Deletes this application.
|
422
|
+
* @param {number} MFACode The MFA code (if required)
|
423
|
+
* @returns {Promise<void>}
|
424
|
+
*/
|
425
|
+
delete(MFACode) {
|
426
|
+
return this.client.developerPortal.deleteApplication(this.id, MFACode);
|
427
|
+
}
|
428
|
+
|
429
|
+
/**
|
430
|
+
* Add new image to this application. (RPC)
|
431
|
+
* @param {BufferResolvable|Base64Resolvable} image Image Resolvable
|
432
|
+
* @param {string} name Name of the image
|
433
|
+
* @returns {ApplicationAsset}
|
434
|
+
*/
|
435
|
+
async addAsset(image, name) {
|
436
|
+
const data = await DataResolver.resolveImage(image);
|
437
|
+
const asset = await this.client.api.applications[this.id].assets.post({
|
438
|
+
data: {
|
439
|
+
type: 1,
|
440
|
+
name,
|
441
|
+
image: data,
|
442
|
+
},
|
443
|
+
});
|
444
|
+
return {
|
445
|
+
id: asset.id,
|
446
|
+
name: asset.name,
|
447
|
+
type: AssetTypes[asset.type - 1],
|
448
|
+
};
|
449
|
+
}
|
450
|
+
|
451
|
+
/**
|
452
|
+
* Delete an image from this application. (RPC)
|
453
|
+
* @param {Snowflake} id ID of the image
|
454
|
+
* @returns {Promise<undefined>}
|
455
|
+
*/
|
456
|
+
async deleteAsset(id) {
|
457
|
+
await this.client.api.applications[this.id].assets[id].delete();
|
458
|
+
return undefined;
|
459
|
+
}
|
460
|
+
|
461
|
+
/**
|
462
|
+
* Gets this application's role connection metadata records
|
463
|
+
* @returns {Promise<ApplicationRoleConnectionMetadata[]>}
|
464
|
+
*/
|
465
|
+
async fetchRoleConnectionMetadataRecords() {
|
466
|
+
const metadata = await this.client.api.applications(this.id)('role-connections').metadata.get();
|
467
|
+
return metadata.map(data => new ApplicationRoleConnectionMetadata(data));
|
468
|
+
}
|
469
|
+
|
470
|
+
/**
|
471
|
+
* Data for creating or editing an application role connection metadata.
|
472
|
+
* @typedef {Object} ApplicationRoleConnectionMetadataEditOptions
|
473
|
+
* @property {string} name The name of the metadata field
|
474
|
+
* @property {?Object<Locale, string>} [nameLocalizations] The name localizations for the metadata field
|
475
|
+
* @property {string} description The description of the metadata field
|
476
|
+
* @property {?Object<Locale, string>} [descriptionLocalizations] The description localizations for the metadata field
|
477
|
+
* @property {string} key The dictionary key of the metadata field
|
478
|
+
* @property {ApplicationRoleConnectionMetadataType} type The type of the metadata field
|
479
|
+
*/
|
480
|
+
|
481
|
+
/**
|
482
|
+
* Updates this application's role connection metadata records
|
483
|
+
* @param {ApplicationRoleConnectionMetadataEditOptions[]} records The new role connection metadata records
|
484
|
+
* @returns {Promise<ApplicationRoleConnectionMetadata[]>}
|
485
|
+
*/
|
486
|
+
async editRoleConnectionMetadataRecords(records) {
|
487
|
+
const newRecords = await this.client.api
|
488
|
+
.applications(this.client.user.id)('role-connections')
|
489
|
+
.metadata.put({
|
490
|
+
data: records.map(record => ({
|
491
|
+
type: typeof record.type === 'string' ? ApplicationRoleConnectionMetadataTypes[record.type] : record.type,
|
492
|
+
key: record.key,
|
493
|
+
name: record.name,
|
494
|
+
name_localizations: record.nameLocalizations,
|
495
|
+
description: record.description,
|
496
|
+
description_localizations: record.descriptionLocalizations,
|
497
|
+
})),
|
498
|
+
});
|
499
|
+
|
500
|
+
return newRecords.map(data => new ApplicationRoleConnectionMetadata(data));
|
501
|
+
}
|
502
|
+
|
503
|
+
/**
|
504
|
+
* When concatenated with a string, this automatically returns the application's name instead of the
|
505
|
+
* Application object.
|
506
|
+
* @returns {?string}
|
507
|
+
* @example
|
508
|
+
* // Logs: Application name: My App
|
509
|
+
* console.log(`Application name: ${application}`);
|
510
|
+
*/
|
511
|
+
toString() {
|
512
|
+
return this.name;
|
513
|
+
}
|
514
|
+
|
515
|
+
toJSON() {
|
516
|
+
return super.toJSON({ createdTimestamp: true });
|
517
|
+
}
|
518
|
+
}
|
519
|
+
|
520
|
+
module.exports = DeveloperPortalApplication;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { Channel } = require('./Channel');
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Represents a channel that displays a directory of guilds.
|
7
|
+
* @extends {Channel}
|
8
|
+
*/
|
9
|
+
class DirectoryChannel extends Channel {
|
10
|
+
_patch(data) {
|
11
|
+
super._patch(data);
|
12
|
+
/**
|
13
|
+
* The channel's name
|
14
|
+
* @type {string}
|
15
|
+
*/
|
16
|
+
this.name = data.name;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
module.exports = DirectoryChannel;
|
@@ -0,0 +1,148 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const process = require('node:process');
|
4
|
+
const Base = require('./Base');
|
5
|
+
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @type {WeakSet<Emoji>}
|
9
|
+
* @private
|
10
|
+
* @internal
|
11
|
+
*/
|
12
|
+
const deletedEmojis = new WeakSet();
|
13
|
+
let deprecationEmittedForDeleted = false;
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Represents raw emoji data from the API
|
17
|
+
* @typedef {APIEmoji} RawEmoji
|
18
|
+
* @property {?Snowflake} id The emoji's id
|
19
|
+
* @property {?string} name The emoji's name
|
20
|
+
* @property {?boolean} animated Whether the emoji is animated
|
21
|
+
*/
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Represents an emoji, see {@link GuildEmoji} and {@link ReactionEmoji}.
|
25
|
+
* @extends {Base}
|
26
|
+
*/
|
27
|
+
class Emoji extends Base {
|
28
|
+
constructor(client, emoji) {
|
29
|
+
super(client);
|
30
|
+
/**
|
31
|
+
* Whether or not the emoji is animated
|
32
|
+
* @type {?boolean}
|
33
|
+
*/
|
34
|
+
this.animated = emoji.animated ?? null;
|
35
|
+
|
36
|
+
/**
|
37
|
+
* The emoji's name
|
38
|
+
* @type {?string}
|
39
|
+
*/
|
40
|
+
this.name = emoji.name ?? null;
|
41
|
+
|
42
|
+
/**
|
43
|
+
* The emoji's id
|
44
|
+
* @type {?Snowflake}
|
45
|
+
*/
|
46
|
+
this.id = emoji.id;
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Whether or not the structure has been deleted
|
51
|
+
* @type {boolean}
|
52
|
+
* @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
|
53
|
+
*/
|
54
|
+
get deleted() {
|
55
|
+
if (!deprecationEmittedForDeleted) {
|
56
|
+
deprecationEmittedForDeleted = true;
|
57
|
+
process.emitWarning(
|
58
|
+
'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
|
59
|
+
'DeprecationWarning',
|
60
|
+
);
|
61
|
+
}
|
62
|
+
|
63
|
+
return deletedEmojis.has(this);
|
64
|
+
}
|
65
|
+
|
66
|
+
set deleted(value) {
|
67
|
+
if (!deprecationEmittedForDeleted) {
|
68
|
+
deprecationEmittedForDeleted = true;
|
69
|
+
process.emitWarning(
|
70
|
+
'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
|
71
|
+
'DeprecationWarning',
|
72
|
+
);
|
73
|
+
}
|
74
|
+
|
75
|
+
if (value) deletedEmojis.add(this);
|
76
|
+
else deletedEmojis.delete(this);
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* The identifier of this emoji, used for message reactions
|
81
|
+
* @type {string}
|
82
|
+
* @readonly
|
83
|
+
*/
|
84
|
+
get identifier() {
|
85
|
+
if (this.id) return `${this.animated ? 'a:' : ''}${this.name}:${this.id}`;
|
86
|
+
return encodeURIComponent(this.name);
|
87
|
+
}
|
88
|
+
|
89
|
+
/**
|
90
|
+
* The URL to the emoji file if it's a custom emoji
|
91
|
+
* @type {?string}
|
92
|
+
* @readonly
|
93
|
+
*/
|
94
|
+
get url() {
|
95
|
+
return this.id && this.client.rest.cdn.Emoji(this.id, this.animated ? 'gif' : 'png');
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* The timestamp the emoji was created at, or null if unicode
|
100
|
+
* @type {?number}
|
101
|
+
* @readonly
|
102
|
+
*/
|
103
|
+
get createdTimestamp() {
|
104
|
+
return this.id && SnowflakeUtil.timestampFrom(this.id);
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* The time the emoji was created at, or null if unicode
|
109
|
+
* @type {?Date}
|
110
|
+
* @readonly
|
111
|
+
*/
|
112
|
+
get createdAt() {
|
113
|
+
return this.id && new Date(this.createdTimestamp);
|
114
|
+
}
|
115
|
+
|
116
|
+
/**
|
117
|
+
* When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord
|
118
|
+
* instead of the Emoji object.
|
119
|
+
* @returns {string}
|
120
|
+
* @example
|
121
|
+
* // Send a custom emoji from a guild:
|
122
|
+
* const emoji = guild.emojis.cache.first();
|
123
|
+
* msg.channel.send(`Hello! ${emoji}`);
|
124
|
+
* @example
|
125
|
+
* // Send the emoji used in a reaction to the channel the reaction is part of
|
126
|
+
* reaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);
|
127
|
+
*/
|
128
|
+
toString() {
|
129
|
+
return this.id ? `<${this.animated ? 'a' : ''}:${this.name}:${this.id}>` : this.name;
|
130
|
+
}
|
131
|
+
|
132
|
+
toJSON() {
|
133
|
+
return super.toJSON({
|
134
|
+
guild: 'guildId',
|
135
|
+
createdTimestamp: true,
|
136
|
+
url: true,
|
137
|
+
identifier: true,
|
138
|
+
});
|
139
|
+
}
|
140
|
+
}
|
141
|
+
|
142
|
+
exports.Emoji = Emoji;
|
143
|
+
exports.deletedEmojis = deletedEmojis;
|
144
|
+
|
145
|
+
/**
|
146
|
+
* @external APIEmoji
|
147
|
+
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
|
148
|
+
*/
|