discord-sb-v13 0.0.1-security → 2.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.
Potentially problematic release.
This version of discord-sb-v13 might be problematic. Click here for more details.
- package/LICENSE +674 -0
- package/README.md +119 -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 +42 -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,624 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { setInterval } = require('node:timers');
|
4
|
+
const { Collection } = require('@discordjs/collection');
|
5
|
+
const Invite = require('./Invite');
|
6
|
+
const { Message } = require('./Message');
|
7
|
+
const User = require('./User');
|
8
|
+
const { Util } = require('..');
|
9
|
+
const { Error: Error_ } = require('../errors');
|
10
|
+
const { Opcodes, NitroType, HypeSquadType } = require('../util/Constants');
|
11
|
+
const DataResolver = require('../util/DataResolver');
|
12
|
+
const PremiumUsageFlags = require('../util/PremiumUsageFlags');
|
13
|
+
const PurchasedFlags = require('../util/PurchasedFlags');
|
14
|
+
/**
|
15
|
+
* Represents the logged in client's Discord user.
|
16
|
+
* @extends {User}
|
17
|
+
*/
|
18
|
+
class ClientUser extends User {
|
19
|
+
_patch(data) {
|
20
|
+
super._patch(data);
|
21
|
+
|
22
|
+
if ('verified' in data) {
|
23
|
+
/**
|
24
|
+
* Whether or not this account has been verified
|
25
|
+
* @type {boolean}
|
26
|
+
*/
|
27
|
+
this.verified = data.verified;
|
28
|
+
}
|
29
|
+
|
30
|
+
if ('mfa_enabled' in data) {
|
31
|
+
/**
|
32
|
+
* If the bot's {@link ClientApplication#owner Owner} has MFA enabled on their account
|
33
|
+
* @type {?boolean}
|
34
|
+
*/
|
35
|
+
this.mfaEnabled = typeof data.mfa_enabled === 'boolean' ? data.mfa_enabled : null;
|
36
|
+
} else {
|
37
|
+
this.mfaEnabled ??= null;
|
38
|
+
}
|
39
|
+
|
40
|
+
if ('token' in data) this.client.token = data.token;
|
41
|
+
|
42
|
+
// Todo: Add (Selfbot)
|
43
|
+
if ('premium_type' in data) {
|
44
|
+
const nitro = NitroType[data.premium_type ?? 0];
|
45
|
+
/**
|
46
|
+
* Nitro type of the client user.
|
47
|
+
* @type {NitroType}
|
48
|
+
*/
|
49
|
+
this.nitroType = nitro ?? `UNKNOWN_TYPE_${data.premium_type}`;
|
50
|
+
}
|
51
|
+
if ('purchased_flags' in data) {
|
52
|
+
/**
|
53
|
+
* Purchased state of the client user.
|
54
|
+
* @type {?PurchasedFlags}
|
55
|
+
*/
|
56
|
+
this.purchasedFlags = new PurchasedFlags(data.purchased_flags || 0);
|
57
|
+
}
|
58
|
+
if ('premium_usage_flags' in data) {
|
59
|
+
/**
|
60
|
+
* Premium usage state of the client user.
|
61
|
+
* @type {?PremiumUsageFlags}
|
62
|
+
*/
|
63
|
+
this.premiumUsageFlags = new PremiumUsageFlags(data.premium_usage_flags || 0);
|
64
|
+
}
|
65
|
+
// Key: premium = boolean;
|
66
|
+
if ('phone' in data) {
|
67
|
+
/**
|
68
|
+
* Phone number of the client user.
|
69
|
+
* @type {?string}
|
70
|
+
*/
|
71
|
+
this.phoneNumber = data.phone;
|
72
|
+
}
|
73
|
+
if ('nsfw_allowed' in data) {
|
74
|
+
/**
|
75
|
+
* Whether or not the client user is allowed to send NSFW messages [iOS device].
|
76
|
+
* @type {?boolean}
|
77
|
+
*/
|
78
|
+
this.nsfwAllowed = data.nsfw_allowed;
|
79
|
+
}
|
80
|
+
if ('email' in data) {
|
81
|
+
/**
|
82
|
+
* Email address of the client user.
|
83
|
+
* @type {?string}
|
84
|
+
*/
|
85
|
+
this.emailAddress = data.email;
|
86
|
+
}
|
87
|
+
if ('bio' in data) {
|
88
|
+
this.bio = data.bio;
|
89
|
+
}
|
90
|
+
if ('global_name' in data) {
|
91
|
+
/**
|
92
|
+
* Display name of the client user.
|
93
|
+
* @type {?string}
|
94
|
+
*/
|
95
|
+
this.displayName = data.global_name;
|
96
|
+
}
|
97
|
+
|
98
|
+
if (!this.friendNicknames?.size) {
|
99
|
+
/**
|
100
|
+
* The friend nicknames cache of the client user.
|
101
|
+
* @type {Collection<Snowflake, string>}
|
102
|
+
* @private
|
103
|
+
*/
|
104
|
+
this.friendNicknames = new Collection();
|
105
|
+
}
|
106
|
+
|
107
|
+
if (!this._intervalSamsungPresence) {
|
108
|
+
this._intervalSamsungPresence = setInterval(() => {
|
109
|
+
this.client.emit('debug', `Samsung Presence: ${this._packageName}`);
|
110
|
+
if (!this._packageName) return;
|
111
|
+
this.setSamsungActivity(this._packageName, 'UPDATE');
|
112
|
+
}, 1000 * 60 * 10).unref();
|
113
|
+
// 20 minutes max
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
/**
|
118
|
+
* Patch note
|
119
|
+
* @param {Object} data Note data
|
120
|
+
* @private
|
121
|
+
*/
|
122
|
+
_patchNote(data) {
|
123
|
+
/**
|
124
|
+
* The notes cache of the client user.
|
125
|
+
* @type {Collection<Snowflake, string>}
|
126
|
+
* @private
|
127
|
+
*/
|
128
|
+
this.notes = data ? new Collection(Object.entries(data)) : new Collection();
|
129
|
+
}
|
130
|
+
|
131
|
+
/**
|
132
|
+
* Represents the client user's presence
|
133
|
+
* @type {ClientPresence}
|
134
|
+
* @readonly
|
135
|
+
*/
|
136
|
+
get presence() {
|
137
|
+
return this.client.presence;
|
138
|
+
}
|
139
|
+
|
140
|
+
/**
|
141
|
+
* Data used to edit the logged in client
|
142
|
+
* @typedef {Object} ClientUserEditData
|
143
|
+
* @property {string} [username] The new username
|
144
|
+
* @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar
|
145
|
+
* @property {?(BufferResolvable|Base64Resolvable)} [banner] The new banner
|
146
|
+
* @property {?string} [bio] The new bio
|
147
|
+
*/
|
148
|
+
|
149
|
+
/**
|
150
|
+
* Edits the logged in client.
|
151
|
+
* @param {ClientUserEditData} options The new data
|
152
|
+
* @returns {Promise<ClientUser>}
|
153
|
+
*/
|
154
|
+
async edit(options = {}) {
|
155
|
+
const data = await this.client.api.users('@me').patch({ data: options });
|
156
|
+
this.client.token = data.token;
|
157
|
+
const { updated } = this.client.actions.UserUpdate.handle(data);
|
158
|
+
return updated ?? this;
|
159
|
+
}
|
160
|
+
|
161
|
+
/**
|
162
|
+
* Sets the username of the logged in client.
|
163
|
+
* <info>Changing usernames in Discord is heavily rate limited, with only 2 requests
|
164
|
+
* every hour. Use this sparingly!</info>
|
165
|
+
* @param {string} username The new username
|
166
|
+
* @param {string} password The password of the account
|
167
|
+
* @returns {Promise<ClientUser>}
|
168
|
+
* @example
|
169
|
+
* // Set username
|
170
|
+
* client.user.setUsername('discordjs')
|
171
|
+
* .then(user => console.log(`My new username is ${user.username}`))
|
172
|
+
* .catch(console.error);
|
173
|
+
*/
|
174
|
+
setUsername(username, password) {
|
175
|
+
if (!password && !this.client.password) {
|
176
|
+
throw new Error('A password is required to change a username.');
|
177
|
+
}
|
178
|
+
return this.edit({
|
179
|
+
username,
|
180
|
+
discriminator: this.discriminator,
|
181
|
+
password: this.client.password ? this.client.password : password,
|
182
|
+
});
|
183
|
+
}
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Sets the avatar of the logged in client.
|
187
|
+
* @param {?(BufferResolvable|Base64Resolvable)} avatar The new avatar
|
188
|
+
* @returns {Promise<ClientUser>}
|
189
|
+
* @example
|
190
|
+
* // Set avatar
|
191
|
+
* client.user.setAvatar('./avatar.png')
|
192
|
+
* .then(user => console.log(`New avatar set!`))
|
193
|
+
* .catch(console.error);
|
194
|
+
*/
|
195
|
+
async setAvatar(avatar) {
|
196
|
+
avatar = avatar && (await DataResolver.resolveImage(avatar));
|
197
|
+
return this.edit({ avatar });
|
198
|
+
}
|
199
|
+
/**
|
200
|
+
* Sets the banner of the logged in client.
|
201
|
+
* @param {?(BufferResolvable|Base64Resolvable)} banner The new banner
|
202
|
+
* @returns {Promise<ClientUser>}
|
203
|
+
* @example
|
204
|
+
* // Set banner
|
205
|
+
* client.user.setBanner('./banner.png')
|
206
|
+
* .then(user => console.log(`New banner set!`))
|
207
|
+
* .catch(console.error);
|
208
|
+
*/
|
209
|
+
async setBanner(banner) {
|
210
|
+
if (this.nitroType !== 'NITRO_BOOST') {
|
211
|
+
throw new Error('You must be a Nitro Boosted User to change your banner.');
|
212
|
+
}
|
213
|
+
banner = banner && (await DataResolver.resolveImage(banner));
|
214
|
+
return this.edit({ banner });
|
215
|
+
}
|
216
|
+
|
217
|
+
/**
|
218
|
+
* Set HyperSquad House
|
219
|
+
* @param {HypeSquadType} type
|
220
|
+
* * `LEAVE`: 0
|
221
|
+
* * `HOUSE_BRAVERY`: 1
|
222
|
+
* * `HOUSE_BRILLIANCE`: 2
|
223
|
+
* * `HOUSE_BALANCE`: 3
|
224
|
+
* @returns {Promise<void>}
|
225
|
+
* @example
|
226
|
+
* // Set HyperSquad HOUSE_BRAVERY
|
227
|
+
* client.user.setHypeSquad(1); || client.user.setHypeSquad('HOUSE_BRAVERY');
|
228
|
+
* // Leave
|
229
|
+
* client.user.setHypeSquad(0);
|
230
|
+
*/
|
231
|
+
async setHypeSquad(type) {
|
232
|
+
const id = typeof type === 'string' ? HypeSquadType[type] : type;
|
233
|
+
if (!id && id !== 0) throw new Error('Invalid HypeSquad type.');
|
234
|
+
if (id !== 0) {
|
235
|
+
const data = await this.client.api.hypesquad.online.post({
|
236
|
+
data: { house_id: id },
|
237
|
+
});
|
238
|
+
return data;
|
239
|
+
} else {
|
240
|
+
const data = await this.client.api.hypesquad.online.delete();
|
241
|
+
return data;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
/**
|
246
|
+
* Set Accent color
|
247
|
+
* @param {ColorResolvable} color Color to set
|
248
|
+
* @returns {Promise<ClientUser>}
|
249
|
+
*/
|
250
|
+
setAccentColor(color = null) {
|
251
|
+
return this.edit({ accent_color: color ? Util.resolveColor(color) : null });
|
252
|
+
}
|
253
|
+
|
254
|
+
/**
|
255
|
+
* Set discriminator
|
256
|
+
* @param {User.discriminator} discriminator It is #1234
|
257
|
+
* @param {string} password The password of the account
|
258
|
+
* @returns {Promise<ClientUser>}
|
259
|
+
*/
|
260
|
+
setDiscriminator(discriminator, password) {
|
261
|
+
if (this.nitroType == 'NONE') throw new Error('You must be a Nitro User to change your discriminator.');
|
262
|
+
if (!password && !this.client.password) {
|
263
|
+
throw new Error('A password is required to change a discriminator.');
|
264
|
+
}
|
265
|
+
return this.edit({
|
266
|
+
discriminator,
|
267
|
+
username: this.username,
|
268
|
+
password: this.client.password ? this.client.password : password,
|
269
|
+
});
|
270
|
+
}
|
271
|
+
|
272
|
+
/**
|
273
|
+
* Set About me
|
274
|
+
* @param {string | null} bio Bio to set
|
275
|
+
* @returns {Promise<ClientUser>}
|
276
|
+
*/
|
277
|
+
setAboutMe(bio = null) {
|
278
|
+
return this.edit({
|
279
|
+
bio,
|
280
|
+
});
|
281
|
+
}
|
282
|
+
|
283
|
+
/**
|
284
|
+
* Change the email
|
285
|
+
* @param {Email<string>} email Email to change
|
286
|
+
* @param {string} password Password of the account
|
287
|
+
* @returns {Promise<ClientUser>}
|
288
|
+
*/
|
289
|
+
setEmail(email, password) {
|
290
|
+
throw new Error('This method is not available yet. Please use the official Discord client to change your email.');
|
291
|
+
// eslint-disable-next-line no-unreachable
|
292
|
+
if (!password && !this.client.password) {
|
293
|
+
throw new Error('A password is required to change a email.');
|
294
|
+
}
|
295
|
+
return this.edit({
|
296
|
+
email,
|
297
|
+
password: this.client.password ? this.client.password : password,
|
298
|
+
});
|
299
|
+
}
|
300
|
+
|
301
|
+
/**
|
302
|
+
* Set new password
|
303
|
+
* @param {string} oldPassword Old password
|
304
|
+
* @param {string} newPassword New password to set
|
305
|
+
* @returns {Promise<ClientUser>}
|
306
|
+
*/
|
307
|
+
setPassword(oldPassword, newPassword) {
|
308
|
+
if (!oldPassword && !this.client.password) {
|
309
|
+
throw new Error('A password is required to change a password.');
|
310
|
+
}
|
311
|
+
if (!newPassword) throw new Error('New password is required.');
|
312
|
+
return this.edit({
|
313
|
+
password: this.client.password ? this.client.password : oldPassword,
|
314
|
+
new_password: newPassword,
|
315
|
+
});
|
316
|
+
}
|
317
|
+
|
318
|
+
/**
|
319
|
+
* Disable account
|
320
|
+
* @param {string} password Password of the account
|
321
|
+
* @returns {Promise<ClientUser>}
|
322
|
+
*/
|
323
|
+
async disableAccount(password) {
|
324
|
+
if (!password && !this.client.password) {
|
325
|
+
throw new Error('A password is required to disable an account.');
|
326
|
+
}
|
327
|
+
const data = await this.client.api.users['@me'].disable.post({
|
328
|
+
data: {
|
329
|
+
password: this.client.password ? this.client.password : password,
|
330
|
+
},
|
331
|
+
});
|
332
|
+
return data;
|
333
|
+
}
|
334
|
+
|
335
|
+
/**
|
336
|
+
* Set selfdeaf (Global)
|
337
|
+
* @param {boolean} status Whether or not the ClientUser is deafened
|
338
|
+
* @returns {boolean}
|
339
|
+
*/
|
340
|
+
setDeaf(status) {
|
341
|
+
if (typeof status !== 'boolean') throw new Error('Deaf status must be a boolean.');
|
342
|
+
this.client.ws.broadcast({
|
343
|
+
op: Opcodes.VOICE_STATE_UPDATE,
|
344
|
+
d: { self_deaf: status },
|
345
|
+
});
|
346
|
+
return status;
|
347
|
+
}
|
348
|
+
|
349
|
+
/**
|
350
|
+
* Set selfmute (Global)
|
351
|
+
* @param {boolean} status Whether or not the ClientUser is muted
|
352
|
+
* @returns {boolean}
|
353
|
+
*/
|
354
|
+
setMute(status) {
|
355
|
+
if (typeof status !== 'boolean') throw new Error('Mute status must be a boolean.');
|
356
|
+
this.client.ws.broadcast({
|
357
|
+
op: Opcodes.VOICE_STATE_UPDATE,
|
358
|
+
d: { self_mute: status },
|
359
|
+
});
|
360
|
+
return status;
|
361
|
+
}
|
362
|
+
|
363
|
+
/**
|
364
|
+
* Delete account. Warning: Cannot be changed once used!
|
365
|
+
* @param {string} password Password of the account
|
366
|
+
* @returns {Promise<ClientUser>}
|
367
|
+
*/
|
368
|
+
async deleteAccount(password) {
|
369
|
+
if (!password && !this.client.password) {
|
370
|
+
throw new Error('A password is required to delete an account.');
|
371
|
+
}
|
372
|
+
const data = await this.client.api.users['@me/delete'].post({
|
373
|
+
data: {
|
374
|
+
password: this.client.password ? this.client.password : password,
|
375
|
+
},
|
376
|
+
});
|
377
|
+
return data;
|
378
|
+
}
|
379
|
+
|
380
|
+
/**
|
381
|
+
* Options for setting activities
|
382
|
+
* @typedef {Object} ActivitiesOptions
|
383
|
+
* @property {string} [name] Name of the activity
|
384
|
+
* @property {ActivityType|number} [type] Type of the activity
|
385
|
+
* @property {string} [url] Twitch / YouTube stream URL
|
386
|
+
*/
|
387
|
+
|
388
|
+
/**
|
389
|
+
* Data resembling a raw Discord presence.
|
390
|
+
* @typedef {Object} PresenceData
|
391
|
+
* @property {PresenceStatusData} [status] Status of the user
|
392
|
+
* @property {boolean} [afk] Whether the user is AFK
|
393
|
+
* @property {ActivitiesOptions[]|CustomStatus[]|RichPresence[]|SpotifyRPC[]} [activities] Activity the user is playing
|
394
|
+
* @property {number|number[]} [shardId] Shard id(s) to have the activity set on
|
395
|
+
*/
|
396
|
+
|
397
|
+
/**
|
398
|
+
* Sets the full presence of the client user.
|
399
|
+
* @param {PresenceData} data Data for the presence
|
400
|
+
* @returns {ClientPresence}
|
401
|
+
* @example
|
402
|
+
* // Set the client user's presence
|
403
|
+
* client.user.setPresence({ activities: [{ name: 'with discord.js' }], status: 'idle' });
|
404
|
+
* @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
|
405
|
+
*/
|
406
|
+
setPresence(data) {
|
407
|
+
return this.client.presence.set(data);
|
408
|
+
}
|
409
|
+
|
410
|
+
/**
|
411
|
+
* A user's status. Must be one of:
|
412
|
+
* * `online`
|
413
|
+
* * `idle`
|
414
|
+
* * `invisible`
|
415
|
+
* * `dnd` (do not disturb)
|
416
|
+
* @typedef {string} PresenceStatusData
|
417
|
+
*/
|
418
|
+
|
419
|
+
/**
|
420
|
+
* Sets the status of the client user.
|
421
|
+
* @param {PresenceStatusData} status Status to change to
|
422
|
+
* @param {number|number[]} [shardId] Shard id(s) to have the activity set on
|
423
|
+
* @returns {ClientPresence}
|
424
|
+
* @example
|
425
|
+
* // Set the client user's status
|
426
|
+
* client.user.setStatus('idle');
|
427
|
+
*/
|
428
|
+
setStatus(status, shardId) {
|
429
|
+
return this.setPresence({ status, shardId });
|
430
|
+
}
|
431
|
+
|
432
|
+
/**
|
433
|
+
* Options for setting an activity.
|
434
|
+
* @typedef {Object} ActivityOptions
|
435
|
+
* @property {string} [name] Name of the activity
|
436
|
+
* @property {string} [url] Twitch / YouTube stream URL
|
437
|
+
* @property {ActivityType|number} [type] Type of the activity
|
438
|
+
* @property {number|number[]} [shardId] Shard Id(s) to have the activity set on
|
439
|
+
*/
|
440
|
+
|
441
|
+
/**
|
442
|
+
* Sets the activity the client user is playing.
|
443
|
+
* @param {string|ActivityOptions} [name] Activity being played, or options for setting the activity
|
444
|
+
* @param {ActivityOptions} [options] Options for setting the activity
|
445
|
+
* @returns {ClientPresence}
|
446
|
+
* @example
|
447
|
+
* // Set the client user's activity
|
448
|
+
* client.user.setActivity('discord.js', { type: 'WATCHING' });
|
449
|
+
* @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
|
450
|
+
*/
|
451
|
+
setActivity(name, options = {}) {
|
452
|
+
if (!name) {
|
453
|
+
return this.setPresence({ activities: [], shardId: options.shardId });
|
454
|
+
}
|
455
|
+
|
456
|
+
const activity = Object.assign({}, options, typeof name === 'object' ? name : { name });
|
457
|
+
return this.setPresence({
|
458
|
+
activities: [activity],
|
459
|
+
shardId: activity.shardId,
|
460
|
+
});
|
461
|
+
}
|
462
|
+
|
463
|
+
/**
|
464
|
+
* Sets/removes the AFK flag for the client user.
|
465
|
+
* @param {boolean} [afk=true] Whether or not the user is AFK
|
466
|
+
* @param {number|number[]} [shardId] Shard Id(s) to have the AFK flag set on
|
467
|
+
* @returns {ClientPresence}
|
468
|
+
*/
|
469
|
+
setAFK(afk = true, shardId) {
|
470
|
+
return this.setPresence({ afk, shardId });
|
471
|
+
}
|
472
|
+
|
473
|
+
/**
|
474
|
+
* Create an invite [Friend Invites]
|
475
|
+
* maxAge: 604800 | maxUses: 1
|
476
|
+
* @returns {Promise<Invite>}
|
477
|
+
* @see {@link https://github.com/13-05/hidden-disc-docs#js-snippet-for-creating-friend-invites}
|
478
|
+
* @example
|
479
|
+
* // Options not working
|
480
|
+
* client.user.createFriendInvite();
|
481
|
+
* .then(console.log)
|
482
|
+
* .catch(console.error);
|
483
|
+
*/
|
484
|
+
async createFriendInvite() {
|
485
|
+
const data = await this.client.api.users['@me'].invites.post({
|
486
|
+
data: {},
|
487
|
+
});
|
488
|
+
return new Invite(this.client, data);
|
489
|
+
}
|
490
|
+
|
491
|
+
/**
|
492
|
+
* Get all friend invites
|
493
|
+
* @returns {Promise<Collection<string, Invite>>}
|
494
|
+
*/
|
495
|
+
async getAllFriendInvites() {
|
496
|
+
const data = await this.client.api.users['@me'].invites.get();
|
497
|
+
const collection = new Collection();
|
498
|
+
for (const invite of data) {
|
499
|
+
collection.set(invite.code, new Invite(this.client, invite));
|
500
|
+
}
|
501
|
+
return collection;
|
502
|
+
}
|
503
|
+
|
504
|
+
/**
|
505
|
+
* Revoke all friend invites
|
506
|
+
* @returns {Promise<Collection<string, Invite>>}
|
507
|
+
*/
|
508
|
+
async revokeAllFriendInvites() {
|
509
|
+
const data = await this.client.api.users['@me'].invites.delete();
|
510
|
+
const collection = new Collection();
|
511
|
+
for (const invite of data) {
|
512
|
+
collection.set(invite.code, new Invite(this.client, invite));
|
513
|
+
}
|
514
|
+
return collection;
|
515
|
+
}
|
516
|
+
|
517
|
+
/**
|
518
|
+
* Get a collection of messages mentioning clientUser
|
519
|
+
* @param {number} [limit=25] Maximum number of messages to get
|
520
|
+
* @param {boolean} [mentionRoles=true] Whether or not to mention roles
|
521
|
+
* @param {boolean} [mentionEveryone=true] Whether or not to mention `@everyone`
|
522
|
+
* @returns {Promise<Collection<Snowflake, Message>>}
|
523
|
+
*/
|
524
|
+
async getMentions(limit = 25, mentionRoles = true, mentionEveryone = true) {
|
525
|
+
// https://canary.discord.com/api/v9/users/@me/mentions?limit=25&roles=true&everyone=true
|
526
|
+
const data = await this.client.api.users['@me'].mentions.get({
|
527
|
+
query: {
|
528
|
+
limit,
|
529
|
+
roles: mentionRoles,
|
530
|
+
everyone: mentionEveryone,
|
531
|
+
},
|
532
|
+
});
|
533
|
+
const collection = new Collection();
|
534
|
+
for (const msg of data) {
|
535
|
+
collection.set(msg.id, new Message(this.client, msg));
|
536
|
+
}
|
537
|
+
return collection;
|
538
|
+
}
|
539
|
+
|
540
|
+
/**
|
541
|
+
* Change Theme color
|
542
|
+
* @param {ColorResolvable} primary The primary color of the user's profile
|
543
|
+
* @param {ColorResolvable} accent The accent color of the user's profile
|
544
|
+
* @returns {Promise<ClientUser>}
|
545
|
+
*/
|
546
|
+
async setThemeColors(primary, accent) {
|
547
|
+
if (!primary || !accent) throw new Error('PRIMARY_COLOR or ACCENT_COLOR are required.');
|
548
|
+
// Check nitro
|
549
|
+
if (this.nitroType !== 'NITRO_BOOST') {
|
550
|
+
throw new Error_('NITRO_BOOST_REQUIRED', 'themeColors');
|
551
|
+
}
|
552
|
+
primary = Util.resolveColor(primary) || this.themeColors[0];
|
553
|
+
accent = Util.resolveColor(accent) || this.themeColors[1];
|
554
|
+
const data_ = await this.client.api.users['@me'].profile.patch({
|
555
|
+
data: {
|
556
|
+
theme_colors: [primary, accent],
|
557
|
+
},
|
558
|
+
});
|
559
|
+
this._ProfilePatch({
|
560
|
+
user_profile: data_,
|
561
|
+
});
|
562
|
+
return this;
|
563
|
+
}
|
564
|
+
|
565
|
+
/**
|
566
|
+
* Sets Discord Playing status to "Playing on Samsung Galaxy". Only selected gamss from discords database works
|
567
|
+
* @param {string} packageName Android package name
|
568
|
+
* @param {?string} type Must be START, UPDATE, or STOP
|
569
|
+
* @returns {Promise<ClientUser>}
|
570
|
+
* @example
|
571
|
+
* // Set the client user's status
|
572
|
+
* client.user.setSamsungActivity('com.YostarJP.BlueArchive', 'START');
|
573
|
+
* // Update
|
574
|
+
* client.user.setSamsungActivity('com.miHoYo.bh3oversea', 'UPDATE');
|
575
|
+
* // Stop
|
576
|
+
* client.user.setSamsungActivity('com.miHoYo.GenshinImpact', 'STOP');
|
577
|
+
*/
|
578
|
+
async setSamsungActivity(packageName, type = 'START') {
|
579
|
+
type = type.toUpperCase();
|
580
|
+
if (!packageName || typeof packageName !== 'string') throw new Error('Package name is required.');
|
581
|
+
if (!['START', 'UPDATE', 'STOP'].includes(type)) throw new Error('Invalid type (Must be START, UPDATE, or STOP)');
|
582
|
+
await this.client.api.presences.post({
|
583
|
+
data: {
|
584
|
+
package_name: packageName,
|
585
|
+
update: type,
|
586
|
+
},
|
587
|
+
});
|
588
|
+
if (type !== 'STOP') this._packageName = packageName;
|
589
|
+
else this._packageName = null;
|
590
|
+
return this;
|
591
|
+
}
|
592
|
+
|
593
|
+
/**
|
594
|
+
* Stop ringing
|
595
|
+
* @param {ChannelResolvable} channel DMChannel | GroupDMChannel
|
596
|
+
* @returns {Promise<void>}
|
597
|
+
*/
|
598
|
+
stopRinging(channel) {
|
599
|
+
const id = this.client.channels.resolveId(channel);
|
600
|
+
if (!channel) return false;
|
601
|
+
return this.client.api.channels(id).call['stop-ringing'].post({
|
602
|
+
data: {},
|
603
|
+
});
|
604
|
+
}
|
605
|
+
|
606
|
+
/**
|
607
|
+
* Super Reactions
|
608
|
+
* @returns {Promise<number>}
|
609
|
+
*/
|
610
|
+
fetchBurstCredit() {
|
611
|
+
return this.client.api.users['@me']['burst-credits'].get().then(d => d.amount);
|
612
|
+
}
|
613
|
+
|
614
|
+
/**
|
615
|
+
* Set display name
|
616
|
+
* @param {string} displayName The new display name
|
617
|
+
* @returns {Promise<ClientUser>}
|
618
|
+
*/
|
619
|
+
setDisplayName(displayName = '') {
|
620
|
+
return this.edit({ global_name: displayName });
|
621
|
+
}
|
622
|
+
}
|
623
|
+
|
624
|
+
module.exports = ClientUser;
|
@@ -0,0 +1,41 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const BaseCommandInteraction = require('./BaseCommandInteraction');
|
4
|
+
const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Represents a command interaction.
|
8
|
+
* @extends {BaseCommandInteraction}
|
9
|
+
*/
|
10
|
+
class CommandInteraction extends BaseCommandInteraction {
|
11
|
+
constructor(client, data) {
|
12
|
+
super(client, data);
|
13
|
+
|
14
|
+
/**
|
15
|
+
* The options passed to the command.
|
16
|
+
* @type {CommandInteractionOptionResolver}
|
17
|
+
*/
|
18
|
+
this.options = new CommandInteractionOptionResolver(
|
19
|
+
this.client,
|
20
|
+
data.data.options?.map(option => this.transformOption(option, data.data.resolved)) ?? [],
|
21
|
+
this.transformResolved(data.data.resolved ?? {}),
|
22
|
+
);
|
23
|
+
}
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Returns a string representation of the command interaction.
|
27
|
+
* This can then be copied by a user and executed again in a new command while keeping the option order.
|
28
|
+
* @returns {string}
|
29
|
+
*/
|
30
|
+
toString() {
|
31
|
+
const properties = [
|
32
|
+
this.commandName,
|
33
|
+
this.options._group,
|
34
|
+
this.options._subcommand,
|
35
|
+
...this.options._hoistedOptions.map(o => `${o.name}:${o.value}`),
|
36
|
+
];
|
37
|
+
return `/${properties.filter(Boolean).join(' ')}`;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
module.exports = CommandInteraction;
|