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,271 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const process = require('node:process');
|
4
|
+
const Base = require('./Base');
|
5
|
+
let CategoryChannel;
|
6
|
+
let DMChannel;
|
7
|
+
let NewsChannel;
|
8
|
+
let StageChannel;
|
9
|
+
let StoreChannel;
|
10
|
+
let TextChannel;
|
11
|
+
let ThreadChannel;
|
12
|
+
let VoiceChannel;
|
13
|
+
let DirectoryChannel;
|
14
|
+
let ForumChannel;
|
15
|
+
const ChannelFlags = require('../util/ChannelFlags');
|
16
|
+
const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants');
|
17
|
+
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @type {WeakSet<Channel>}
|
21
|
+
* @private
|
22
|
+
* @internal
|
23
|
+
*/
|
24
|
+
const deletedChannels = new WeakSet();
|
25
|
+
let deprecationEmittedForDeleted = false;
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Represents any channel on Discord.
|
29
|
+
* @extends {Base}
|
30
|
+
* @abstract
|
31
|
+
*/
|
32
|
+
class Channel extends Base {
|
33
|
+
constructor(client, data, immediatePatch = true) {
|
34
|
+
super(client);
|
35
|
+
|
36
|
+
const type = ChannelTypes[data?.type];
|
37
|
+
/**
|
38
|
+
* The type of the channel
|
39
|
+
* @type {ChannelType}
|
40
|
+
*/
|
41
|
+
this.type = type ?? 'UNKNOWN';
|
42
|
+
|
43
|
+
if (data && immediatePatch) this._patch(data);
|
44
|
+
}
|
45
|
+
|
46
|
+
_patch(data) {
|
47
|
+
/**
|
48
|
+
* The channel's id
|
49
|
+
* @type {Snowflake}
|
50
|
+
*/
|
51
|
+
this.id = data.id;
|
52
|
+
|
53
|
+
if ('flags' in data) {
|
54
|
+
/**
|
55
|
+
* The flags that are applied to the channel.
|
56
|
+
* <info>This is only `null` in a {@link PartialGroupDMChannel}. In all other cases, it is not `null`.</info>
|
57
|
+
* @type {?Readonly<ChannelFlags>}
|
58
|
+
*/
|
59
|
+
this.flags = new ChannelFlags(data.flags).freeze();
|
60
|
+
} else {
|
61
|
+
this.flags ??= new ChannelFlags().freeze();
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* The timestamp the channel was created at
|
67
|
+
* @type {number}
|
68
|
+
* @readonly
|
69
|
+
*/
|
70
|
+
get createdTimestamp() {
|
71
|
+
return SnowflakeUtil.timestampFrom(this.id);
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* The time the channel was created at
|
76
|
+
* @type {Date}
|
77
|
+
* @readonly
|
78
|
+
*/
|
79
|
+
get createdAt() {
|
80
|
+
return new Date(this.createdTimestamp);
|
81
|
+
}
|
82
|
+
|
83
|
+
/**
|
84
|
+
* Whether or not the structure has been deleted
|
85
|
+
* @type {boolean}
|
86
|
+
* @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
|
87
|
+
*/
|
88
|
+
get deleted() {
|
89
|
+
if (!deprecationEmittedForDeleted) {
|
90
|
+
deprecationEmittedForDeleted = true;
|
91
|
+
process.emitWarning(
|
92
|
+
'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
|
93
|
+
'DeprecationWarning',
|
94
|
+
);
|
95
|
+
}
|
96
|
+
|
97
|
+
return deletedChannels.has(this);
|
98
|
+
}
|
99
|
+
|
100
|
+
set deleted(value) {
|
101
|
+
if (!deprecationEmittedForDeleted) {
|
102
|
+
deprecationEmittedForDeleted = true;
|
103
|
+
process.emitWarning(
|
104
|
+
'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
|
105
|
+
'DeprecationWarning',
|
106
|
+
);
|
107
|
+
}
|
108
|
+
|
109
|
+
if (value) deletedChannels.add(this);
|
110
|
+
else deletedChannels.delete(this);
|
111
|
+
}
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Whether this Channel is a partial
|
115
|
+
* <info>This is always false outside of DM channels.</info>
|
116
|
+
* @type {boolean}
|
117
|
+
* @readonly
|
118
|
+
*/
|
119
|
+
get partial() {
|
120
|
+
return false;
|
121
|
+
}
|
122
|
+
|
123
|
+
/**
|
124
|
+
* When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.
|
125
|
+
* @returns {string}
|
126
|
+
* @example
|
127
|
+
* // Logs: Hello from <#123456789012345678>!
|
128
|
+
* console.log(`Hello from ${channel}!`);
|
129
|
+
*/
|
130
|
+
toString() {
|
131
|
+
return `<#${this.id}>`;
|
132
|
+
}
|
133
|
+
|
134
|
+
/**
|
135
|
+
* Deletes this channel.
|
136
|
+
* @returns {Promise<Channel>}
|
137
|
+
* @example
|
138
|
+
* // Delete the channel
|
139
|
+
* channel.delete()
|
140
|
+
* .then(console.log)
|
141
|
+
* .catch(console.error);
|
142
|
+
*/
|
143
|
+
async delete() {
|
144
|
+
await this.client.api.channels(this.id).delete();
|
145
|
+
return this;
|
146
|
+
}
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Fetches this channel.
|
150
|
+
* @param {boolean} [force=true] Whether to skip the cache check and request the API
|
151
|
+
* @returns {Promise<Channel>}
|
152
|
+
*/
|
153
|
+
fetch(force = true) {
|
154
|
+
return this.client.channels.fetch(this.id, { force });
|
155
|
+
}
|
156
|
+
|
157
|
+
/**
|
158
|
+
* Indicates whether this channel is {@link TextBasedChannels text-based}.
|
159
|
+
* @returns {boolean}
|
160
|
+
*/
|
161
|
+
isText() {
|
162
|
+
return 'messages' in this;
|
163
|
+
}
|
164
|
+
|
165
|
+
/**
|
166
|
+
* Indicates whether this channel is {@link BaseGuildVoiceChannel voice-based}.
|
167
|
+
* @returns {boolean}
|
168
|
+
*/
|
169
|
+
isVoice() {
|
170
|
+
return VoiceBasedChannelTypes.includes(this.type);
|
171
|
+
}
|
172
|
+
|
173
|
+
/**
|
174
|
+
* Indicates whether this channel is a {@link ThreadChannel}.
|
175
|
+
* @returns {boolean}
|
176
|
+
*/
|
177
|
+
isThread() {
|
178
|
+
return ThreadChannelTypes.includes(this.type);
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* Indicates whether this channel is a {@link DirectoryChannel}
|
183
|
+
* @returns {boolean}
|
184
|
+
*/
|
185
|
+
isDirectory() {
|
186
|
+
return this.type === 'GUILD_DIRECTORY';
|
187
|
+
}
|
188
|
+
|
189
|
+
static create(client, data, guild, { allowUnknownGuild } = {}) {
|
190
|
+
CategoryChannel ??= require('./CategoryChannel');
|
191
|
+
DMChannel ??= require('./DMChannel');
|
192
|
+
NewsChannel ??= require('./NewsChannel');
|
193
|
+
StageChannel ??= require('./StageChannel');
|
194
|
+
StoreChannel ??= require('./StoreChannel');
|
195
|
+
TextChannel ??= require('./TextChannel');
|
196
|
+
ThreadChannel ??= require('./ThreadChannel');
|
197
|
+
VoiceChannel ??= require('./VoiceChannel');
|
198
|
+
DirectoryChannel ??= require('./DirectoryChannel');
|
199
|
+
ForumChannel ??= require('./ForumChannel');
|
200
|
+
|
201
|
+
let channel;
|
202
|
+
if (!data.guild_id && !guild) {
|
203
|
+
if ((data.recipients && data.type !== ChannelTypes.GROUP_DM) || data.type === ChannelTypes.DM) {
|
204
|
+
channel = new DMChannel(client, data);
|
205
|
+
} else if (data.type === ChannelTypes.GROUP_DM) {
|
206
|
+
const PartialGroupDMChannel = require('./PartialGroupDMChannel');
|
207
|
+
channel = new PartialGroupDMChannel(client, data);
|
208
|
+
}
|
209
|
+
} else {
|
210
|
+
guild ??= client.guilds.cache.get(data.guild_id);
|
211
|
+
|
212
|
+
if (guild || allowUnknownGuild) {
|
213
|
+
switch (data.type) {
|
214
|
+
case ChannelTypes.GUILD_TEXT: {
|
215
|
+
channel = new TextChannel(guild, data, client);
|
216
|
+
break;
|
217
|
+
}
|
218
|
+
case ChannelTypes.GUILD_VOICE: {
|
219
|
+
channel = new VoiceChannel(guild, data, client);
|
220
|
+
break;
|
221
|
+
}
|
222
|
+
case ChannelTypes.GUILD_CATEGORY: {
|
223
|
+
channel = new CategoryChannel(guild, data, client);
|
224
|
+
break;
|
225
|
+
}
|
226
|
+
case ChannelTypes.GUILD_NEWS: {
|
227
|
+
channel = new NewsChannel(guild, data, client);
|
228
|
+
break;
|
229
|
+
}
|
230
|
+
case ChannelTypes.GUILD_STORE: {
|
231
|
+
channel = new StoreChannel(guild, data, client);
|
232
|
+
break;
|
233
|
+
}
|
234
|
+
case ChannelTypes.GUILD_STAGE_VOICE: {
|
235
|
+
channel = new StageChannel(guild, data, client);
|
236
|
+
break;
|
237
|
+
}
|
238
|
+
case ChannelTypes.GUILD_NEWS_THREAD:
|
239
|
+
case ChannelTypes.GUILD_PUBLIC_THREAD:
|
240
|
+
case ChannelTypes.GUILD_PRIVATE_THREAD: {
|
241
|
+
channel = new ThreadChannel(guild, data, client);
|
242
|
+
if (!allowUnknownGuild) channel.parent?.threads.cache.set(channel.id, channel);
|
243
|
+
break;
|
244
|
+
}
|
245
|
+
|
246
|
+
case ChannelTypes.GUILD_DIRECTORY:
|
247
|
+
channel = new DirectoryChannel(client, data);
|
248
|
+
break;
|
249
|
+
|
250
|
+
case ChannelTypes.GUILD_FORUM:
|
251
|
+
channel = new ForumChannel(guild, data, client);
|
252
|
+
break;
|
253
|
+
}
|
254
|
+
if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel);
|
255
|
+
}
|
256
|
+
}
|
257
|
+
return channel;
|
258
|
+
}
|
259
|
+
|
260
|
+
toJSON(...props) {
|
261
|
+
return super.toJSON({ createdTimestamp: true }, ...props);
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
265
|
+
exports.Channel = Channel;
|
266
|
+
exports.deletedChannels = deletedChannels;
|
267
|
+
|
268
|
+
/**
|
269
|
+
* @external APIChannel
|
270
|
+
* @see {@link https://discord.com/developers/docs/resources/channel#channel-object}
|
271
|
+
*/
|
@@ -0,0 +1,204 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
4
|
+
const { ApplicationRoleConnectionMetadata } = require('./ApplicationRoleConnectionMetadata');
|
5
|
+
const Team = require('./Team');
|
6
|
+
const Application = require('./interfaces/Application');
|
7
|
+
const ApplicationCommandManager = require('../managers/ApplicationCommandManager');
|
8
|
+
const ApplicationFlags = require('../util/ApplicationFlags');
|
9
|
+
const { ApplicationRoleConnectionMetadataTypes } = require('../util/Constants');
|
10
|
+
const Permissions = require('../util/Permissions');
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @typedef {Object} ClientApplicationInstallParams
|
14
|
+
* @property {InviteScope[]} scopes The scopes to add the application to the server with
|
15
|
+
* @property {Readonly<Permissions>} permissions The permissions this bot will request upon joining
|
16
|
+
*/
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Represents a Client OAuth2 Application.
|
20
|
+
* @extends {Application}
|
21
|
+
*/
|
22
|
+
class ClientApplication extends Application {
|
23
|
+
constructor(client, data, user) {
|
24
|
+
super(client, data);
|
25
|
+
|
26
|
+
/**
|
27
|
+
* The application command manager for this application
|
28
|
+
* @type {ApplicationCommandManager}
|
29
|
+
*/
|
30
|
+
this.commands = new ApplicationCommandManager(this.client, undefined, user);
|
31
|
+
}
|
32
|
+
|
33
|
+
_patch(data) {
|
34
|
+
super._patch(data);
|
35
|
+
|
36
|
+
/**
|
37
|
+
* The tags this application has (max of 5)
|
38
|
+
* @type {string[]}
|
39
|
+
*/
|
40
|
+
this.tags = data.tags ?? [];
|
41
|
+
|
42
|
+
if ('install_params' in data) {
|
43
|
+
/**
|
44
|
+
* Settings for this application's default in-app authorization
|
45
|
+
* @type {?ClientApplicationInstallParams}
|
46
|
+
*/
|
47
|
+
this.installParams = {
|
48
|
+
scopes: data.install_params.scopes,
|
49
|
+
permissions: new Permissions(data.install_params.permissions).freeze(),
|
50
|
+
};
|
51
|
+
} else {
|
52
|
+
this.installParams ??= null;
|
53
|
+
}
|
54
|
+
|
55
|
+
if ('custom_install_url' in data) {
|
56
|
+
/**
|
57
|
+
* This application's custom installation URL
|
58
|
+
* @type {?string}
|
59
|
+
*/
|
60
|
+
this.customInstallURL = data.custom_install_url;
|
61
|
+
} else {
|
62
|
+
this.customInstallURL = null;
|
63
|
+
}
|
64
|
+
|
65
|
+
if ('flags' in data) {
|
66
|
+
/**
|
67
|
+
* The flags this application has
|
68
|
+
* @type {ApplicationFlags}
|
69
|
+
*/
|
70
|
+
this.flags = new ApplicationFlags(data.flags).freeze();
|
71
|
+
}
|
72
|
+
|
73
|
+
if ('cover_image' in data) {
|
74
|
+
/**
|
75
|
+
* The hash of the application's cover image
|
76
|
+
* @type {?string}
|
77
|
+
*/
|
78
|
+
this.cover = data.cover_image;
|
79
|
+
} else {
|
80
|
+
this.cover ??= null;
|
81
|
+
}
|
82
|
+
|
83
|
+
if ('rpc_origins' in data) {
|
84
|
+
/**
|
85
|
+
* The application's RPC origins, if enabled
|
86
|
+
* @type {string[]}
|
87
|
+
*/
|
88
|
+
this.rpcOrigins = data.rpc_origins;
|
89
|
+
} else {
|
90
|
+
this.rpcOrigins ??= [];
|
91
|
+
}
|
92
|
+
|
93
|
+
if ('bot_require_code_grant' in data) {
|
94
|
+
/**
|
95
|
+
* If this application's bot requires a code grant when using the OAuth2 flow
|
96
|
+
* @type {?boolean}
|
97
|
+
*/
|
98
|
+
this.botRequireCodeGrant = data.bot_require_code_grant;
|
99
|
+
} else {
|
100
|
+
this.botRequireCodeGrant ??= null;
|
101
|
+
}
|
102
|
+
|
103
|
+
if ('bot_public' in data) {
|
104
|
+
/**
|
105
|
+
* If this application's bot is public
|
106
|
+
* @type {?boolean}
|
107
|
+
*/
|
108
|
+
this.botPublic = data.bot_public;
|
109
|
+
} else {
|
110
|
+
this.botPublic ??= null;
|
111
|
+
}
|
112
|
+
|
113
|
+
if ('popular_application_command_ids' in data) {
|
114
|
+
/**
|
115
|
+
* List of popular command
|
116
|
+
* @type {?Collection<Snowflake, ApplicationCommand>}
|
117
|
+
*/
|
118
|
+
this.popularCommands = new Collection();
|
119
|
+
data.popular_application_command_ids.forEach(id => {
|
120
|
+
this.popularCommands.set(id, this.commands?.cache?.get(id));
|
121
|
+
});
|
122
|
+
}
|
123
|
+
|
124
|
+
/**
|
125
|
+
* The owner of this OAuth application
|
126
|
+
* @type {?(User|Team)}
|
127
|
+
*/
|
128
|
+
this.owner = data.team
|
129
|
+
? new Team(this.client, data.team)
|
130
|
+
: data.owner
|
131
|
+
? this.client.users._add(data.owner)
|
132
|
+
: this.owner ?? null;
|
133
|
+
}
|
134
|
+
|
135
|
+
/**
|
136
|
+
* Whether this application is partial
|
137
|
+
* @type {boolean}
|
138
|
+
* @readonly
|
139
|
+
*/
|
140
|
+
get partial() {
|
141
|
+
return !this.name;
|
142
|
+
}
|
143
|
+
|
144
|
+
/**
|
145
|
+
* Obtains this application from Discord.
|
146
|
+
* @returns {Promise<ClientApplication>}
|
147
|
+
*/
|
148
|
+
async fetch() {
|
149
|
+
const app = await this.client.api.oauth2.authorize.get({
|
150
|
+
query: {
|
151
|
+
client_id: this.id,
|
152
|
+
scope: 'bot applications.commands',
|
153
|
+
},
|
154
|
+
});
|
155
|
+
const user = this.client.users._add(app.bot);
|
156
|
+
user._partial = false;
|
157
|
+
this._patch(app.application);
|
158
|
+
return this;
|
159
|
+
}
|
160
|
+
|
161
|
+
/**
|
162
|
+
* Gets this application's role connection metadata records
|
163
|
+
* @returns {Promise<ApplicationRoleConnectionMetadata[]>}
|
164
|
+
*/
|
165
|
+
async fetchRoleConnectionMetadataRecords() {
|
166
|
+
const metadata = await this.client.api.applications(this.id)('role-connections').metadata.get();
|
167
|
+
return metadata.map(data => new ApplicationRoleConnectionMetadata(data));
|
168
|
+
}
|
169
|
+
|
170
|
+
/**
|
171
|
+
* Data for creating or editing an application role connection metadata.
|
172
|
+
* @typedef {Object} ApplicationRoleConnectionMetadataEditOptions
|
173
|
+
* @property {string} name The name of the metadata field
|
174
|
+
* @property {?Object<Locale, string>} [nameLocalizations] The name localizations for the metadata field
|
175
|
+
* @property {string} description The description of the metadata field
|
176
|
+
* @property {?Object<Locale, string>} [descriptionLocalizations] The description localizations for the metadata field
|
177
|
+
* @property {string} key The dictionary key of the metadata field
|
178
|
+
* @property {ApplicationRoleConnectionMetadataType} type The type of the metadata field
|
179
|
+
*/
|
180
|
+
|
181
|
+
/**
|
182
|
+
* Updates this application's role connection metadata records
|
183
|
+
* @param {ApplicationRoleConnectionMetadataEditOptions[]} records The new role connection metadata records
|
184
|
+
* @returns {Promise<ApplicationRoleConnectionMetadata[]>}
|
185
|
+
*/
|
186
|
+
async editRoleConnectionMetadataRecords(records) {
|
187
|
+
const newRecords = await this.client.api
|
188
|
+
.applications(this.client.user.id)('role-connections')
|
189
|
+
.metadata.put({
|
190
|
+
data: records.map(record => ({
|
191
|
+
type: typeof record.type === 'string' ? ApplicationRoleConnectionMetadataTypes[record.type] : record.type,
|
192
|
+
key: record.key,
|
193
|
+
name: record.name,
|
194
|
+
name_localizations: record.nameLocalizations,
|
195
|
+
description: record.description,
|
196
|
+
description_localizations: record.descriptionLocalizations,
|
197
|
+
})),
|
198
|
+
});
|
199
|
+
|
200
|
+
return newRecords.map(data => new ApplicationRoleConnectionMetadata(data));
|
201
|
+
}
|
202
|
+
}
|
203
|
+
|
204
|
+
module.exports = ClientApplication;
|
@@ -0,0 +1,84 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { Presence } = require('./Presence');
|
4
|
+
const { TypeError } = require('../errors');
|
5
|
+
const { Opcodes, ActivityTypes } = require('../util/Constants');
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Represents the client's presence.
|
9
|
+
* @extends {Presence}
|
10
|
+
*/
|
11
|
+
class ClientPresence extends Presence {
|
12
|
+
constructor(client, data = {}) {
|
13
|
+
super(client, Object.assign(data, { status: data.status ?? 'online', user: { id: null } }));
|
14
|
+
}
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Sets the client's presence
|
18
|
+
* @param {PresenceData} presence The data to set the presence to
|
19
|
+
* @returns {ClientPresence}
|
20
|
+
*/
|
21
|
+
set(presence) {
|
22
|
+
const packet = this._parse(presence);
|
23
|
+
// Parse with custom class
|
24
|
+
this._patch(packet, true);
|
25
|
+
if (typeof presence.shardId === 'undefined') {
|
26
|
+
this.client.ws.broadcast({ op: Opcodes.STATUS_UPDATE, d: packet });
|
27
|
+
} else if (Array.isArray(presence.shardId)) {
|
28
|
+
for (const shardId of presence.shardId) {
|
29
|
+
this.client.ws.shards.get(shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });
|
30
|
+
}
|
31
|
+
} else {
|
32
|
+
this.client.ws.shards.get(presence.shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });
|
33
|
+
}
|
34
|
+
// Parse with default class
|
35
|
+
// this._patch(packet, false);
|
36
|
+
return this;
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Parses presence data into a packet ready to be sent to Discord
|
41
|
+
* @param {PresenceData} presence The data to parse
|
42
|
+
* @returns {APIPresence}
|
43
|
+
* @private
|
44
|
+
*/
|
45
|
+
_parse({ status, since, afk, activities }) {
|
46
|
+
const data = {
|
47
|
+
activities: [],
|
48
|
+
afk: typeof afk === 'boolean' ? afk : false,
|
49
|
+
since: 0,
|
50
|
+
status: status ?? this.status,
|
51
|
+
};
|
52
|
+
if (activities?.length) {
|
53
|
+
for (const [i, activity] of activities.entries()) {
|
54
|
+
if (![ActivityTypes.CUSTOM, 'CUSTOM'].includes(activity.type) && typeof activity.name !== 'string') {
|
55
|
+
throw new TypeError('INVALID_TYPE', `activities[${i}].name`, 'string');
|
56
|
+
}
|
57
|
+
activity.type ??= 0;
|
58
|
+
data.activities.push(
|
59
|
+
Object.assign(activity, {
|
60
|
+
type: typeof activity.type === 'number' ? activity.type : ActivityTypes[activity.type],
|
61
|
+
}),
|
62
|
+
);
|
63
|
+
}
|
64
|
+
} else if (!activities && (status || afk || since) && this.activities.length) {
|
65
|
+
data.activities.push(
|
66
|
+
...this.activities.map(a =>
|
67
|
+
Object.assign(a, {
|
68
|
+
type: typeof a.type === 'number' ? a.type : ActivityTypes[a.type],
|
69
|
+
}),
|
70
|
+
),
|
71
|
+
);
|
72
|
+
}
|
73
|
+
|
74
|
+
return data;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
module.exports = ClientPresence;
|
79
|
+
|
80
|
+
/* eslint-disable max-len */
|
81
|
+
/**
|
82
|
+
* @external APIPresence
|
83
|
+
* @see {@link https://discord.com/developers/docs/rich-presence/how-to#updating-presence-update-presence-payload-fields}
|
84
|
+
*/
|