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,490 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
4
|
+
const BaseManager = require('./BaseManager');
|
5
|
+
const GuildFolderManager = require('./GuildFolderManager');
|
6
|
+
const { Error, TypeError } = require('../errors/DJSError');
|
7
|
+
const GuildFolder = require('../structures/GuildFolder');
|
8
|
+
const { CustomStatus } = require('../structures/RichPresence');
|
9
|
+
const { localeSetting, DMScanLevel, stickerAnimationMode } = require('../util/Constants');
|
10
|
+
/**
|
11
|
+
* Manages API methods for users and stores their cache.
|
12
|
+
* @extends {BaseManager}
|
13
|
+
* @see {@link https://luna.gitlab.io/discord-unofficial-docs/user_settings.html}
|
14
|
+
*/
|
15
|
+
class ClientUserSettingManager extends BaseManager {
|
16
|
+
constructor(client) {
|
17
|
+
super(client);
|
18
|
+
/**
|
19
|
+
* Raw data
|
20
|
+
* @type {Object}
|
21
|
+
*/
|
22
|
+
this.rawSetting = {};
|
23
|
+
/**
|
24
|
+
* Language
|
25
|
+
* @type {?string}
|
26
|
+
*/
|
27
|
+
this.locale = null;
|
28
|
+
/**
|
29
|
+
* From: Setting => ACTIVITY SETTINGS => Activity Status => Display current activity as a status message
|
30
|
+
* @type {?boolean}
|
31
|
+
*/
|
32
|
+
this.activityDisplay = null;
|
33
|
+
/**
|
34
|
+
* Disable Direct Message from servers
|
35
|
+
* @type {Collection<Snowflake, boolean>}
|
36
|
+
*/
|
37
|
+
this.disableDMfromServer = new Collection();
|
38
|
+
/**
|
39
|
+
* Allow direct messages from server members
|
40
|
+
* @type {?boolean}
|
41
|
+
*/
|
42
|
+
this.DMfromServerMode = null;
|
43
|
+
/**
|
44
|
+
* Display images
|
45
|
+
* @type {?boolean}
|
46
|
+
*/
|
47
|
+
this.displayImage = null;
|
48
|
+
/**
|
49
|
+
* Display linked images
|
50
|
+
* @type {?boolean}
|
51
|
+
*/
|
52
|
+
this.linkedImageDisplay = null;
|
53
|
+
/**
|
54
|
+
* From: Setting => APP SETTINGS => Accessibility => Automatically play GIFs when Discord is focused.
|
55
|
+
* @type {?boolean}
|
56
|
+
*/
|
57
|
+
this.autoplayGIF = null;
|
58
|
+
/**
|
59
|
+
* Show embeds and preview website links pasted into chat
|
60
|
+
* @type {?boolean}
|
61
|
+
*/
|
62
|
+
this.previewLink = null;
|
63
|
+
/**
|
64
|
+
* From: Setting => APP SETTINGS => Accessibility => Play Animated Emojis
|
65
|
+
* @type {?boolean}
|
66
|
+
*/
|
67
|
+
this.animatedEmojis = null;
|
68
|
+
/**
|
69
|
+
* From: Setting => APP SETTINGS => Accessibility => Text-to-speech => Allow playback
|
70
|
+
* @type {?boolean}
|
71
|
+
*/
|
72
|
+
this.allowTTS = null;
|
73
|
+
/**
|
74
|
+
* From: Setting => APP SETTINGS => Appearance => Message Display => Compact Mode
|
75
|
+
* @type {?boolean}
|
76
|
+
*/
|
77
|
+
this.compactMode = null;
|
78
|
+
/**
|
79
|
+
* From: Setting => APP SETTINGS => Text & Images => Emoji => Convert Emoticons
|
80
|
+
* @type {?boolean}
|
81
|
+
*/
|
82
|
+
this.convertEmoticons = null;
|
83
|
+
/**
|
84
|
+
* SAFE DIRECT MESSAGING
|
85
|
+
* @type {?DMScanLevel}
|
86
|
+
*/
|
87
|
+
this.DMScanLevel = null;
|
88
|
+
/**
|
89
|
+
* From: Setting => APP SETTINGS => Appearance => Theme
|
90
|
+
* @type {'dark' | 'light' | null}
|
91
|
+
*/
|
92
|
+
this.theme = '';
|
93
|
+
/**
|
94
|
+
* Developer Mode (Copy ID, etc.)
|
95
|
+
* @type {?boolean}
|
96
|
+
*/
|
97
|
+
this.developerMode = null;
|
98
|
+
/**
|
99
|
+
* AFK timeout (receives notifications)
|
100
|
+
* @type {?number}
|
101
|
+
*/
|
102
|
+
this.afkTimeout = null;
|
103
|
+
/**
|
104
|
+
* Sticker animation mode
|
105
|
+
* @type {?stickerAnimationMode}
|
106
|
+
*/
|
107
|
+
this.stickerAnimationMode = null;
|
108
|
+
/**
|
109
|
+
* WHO CAN ADD YOU AS A FRIEND ?
|
110
|
+
* @type {?object}
|
111
|
+
* @see {@link https://luna.gitlab.io/discord-unofficial-docs/user_settings.html#friend-source-flags-structure}
|
112
|
+
*/
|
113
|
+
this.addFriendFrom = {
|
114
|
+
all: null,
|
115
|
+
mutual_friends: null,
|
116
|
+
mutual_guilds: null,
|
117
|
+
};
|
118
|
+
/**
|
119
|
+
* From: Setting => APP SETTINGS => Text & Images => Emoji => Show emoji reactions
|
120
|
+
* @type {?boolean}
|
121
|
+
*/
|
122
|
+
this.showEmojiReactions = null;
|
123
|
+
/**
|
124
|
+
* Custom Stauts
|
125
|
+
* @type {?object}
|
126
|
+
* @see {@link https://luna.gitlab.io/discord-unofficial-docs/custom_status.html#customstatus-structure}
|
127
|
+
*/
|
128
|
+
this.customStatus = null;
|
129
|
+
/**
|
130
|
+
* Guild folder and position
|
131
|
+
* @type {GuildFolderManager}
|
132
|
+
*/
|
133
|
+
this.guildFolder = new GuildFolderManager(client);
|
134
|
+
// Todo: add new method from Discum
|
135
|
+
}
|
136
|
+
/**
|
137
|
+
* Patch data file
|
138
|
+
* https://github.com/Merubokkusu/Discord-S.C.U.M/blob/master/discum/user/user.py
|
139
|
+
* @private
|
140
|
+
* @param {Object} data Raw Data to patch
|
141
|
+
*/
|
142
|
+
_patch(data = {}) {
|
143
|
+
this.rawSetting = Object.assign(this.rawSetting, data);
|
144
|
+
if ('locale' in data) {
|
145
|
+
this.locale = localeSetting[data.locale];
|
146
|
+
}
|
147
|
+
if ('show_current_game' in data) {
|
148
|
+
this.activityDisplay = data.show_current_game;
|
149
|
+
}
|
150
|
+
if ('default_guilds_restricted' in data) {
|
151
|
+
this.DMfromServerMode = data.default_guilds_restricted;
|
152
|
+
}
|
153
|
+
if ('inline_attachment_media' in data) {
|
154
|
+
this.displayImage = data.inline_attachment_media;
|
155
|
+
}
|
156
|
+
if ('inline_embed_media' in data) {
|
157
|
+
this.linkedImageDisplay = data.inline_embed_media;
|
158
|
+
}
|
159
|
+
if ('gif_auto_play' in data) {
|
160
|
+
this.autoplayGIF = data.gif_auto_play;
|
161
|
+
}
|
162
|
+
if ('render_embeds' in data) {
|
163
|
+
this.previewLink = data.render_embeds;
|
164
|
+
}
|
165
|
+
if ('animate_emoji' in data) {
|
166
|
+
this.animatedEmojis = data.animate_emoji;
|
167
|
+
}
|
168
|
+
if ('enable_tts_command' in data) {
|
169
|
+
this.allowTTS = data.enable_tts_command;
|
170
|
+
}
|
171
|
+
if ('message_display_compact' in data) {
|
172
|
+
this.compactMode = data.message_display_compact;
|
173
|
+
}
|
174
|
+
if ('convert_emoticons' in data) {
|
175
|
+
this.convertEmoticons = data.convert_emoticons;
|
176
|
+
}
|
177
|
+
if ('explicit_content_filter' in data) {
|
178
|
+
this.DMScanLevel = DMScanLevel[data.explicit_content_filter];
|
179
|
+
}
|
180
|
+
if ('theme' in data) {
|
181
|
+
this.theme = data.theme;
|
182
|
+
}
|
183
|
+
if ('developer_mode' in data) {
|
184
|
+
this.developerMode = data.developer_mode;
|
185
|
+
}
|
186
|
+
if ('afk_timeout' in data) {
|
187
|
+
this.afkTimeout = data.afk_timeout * 1000; // Second => milisecond
|
188
|
+
}
|
189
|
+
if ('animate_stickers' in data) {
|
190
|
+
this.stickerAnimationMode = stickerAnimationMode[data.animate_stickers];
|
191
|
+
}
|
192
|
+
if ('render_reactions' in data) {
|
193
|
+
this.showEmojiReactions = data.render_reactions;
|
194
|
+
}
|
195
|
+
if ('custom_status' in data) {
|
196
|
+
this.customStatus = data.custom_status || {}; // Thanks PinkDuwc._#3443 reported this issue
|
197
|
+
this.customStatus.status = data.status;
|
198
|
+
}
|
199
|
+
if ('friend_source_flags' in data) {
|
200
|
+
this.addFriendFrom = {
|
201
|
+
all: data.friend_source_flags.all || false,
|
202
|
+
mutual_friends: data.friend_source_flags.all ? true : data.friend_source_flags.mutual_friends,
|
203
|
+
mutual_guilds: data.friend_source_flags.all ? true : data.friend_source_flags.mutual_guilds,
|
204
|
+
};
|
205
|
+
}
|
206
|
+
if ('guild_folders' in data) {
|
207
|
+
data.guild_folders.map((folder, index) =>
|
208
|
+
this.guildFolder.cache.set(index, new GuildFolder(this.client, folder)),
|
209
|
+
);
|
210
|
+
}
|
211
|
+
if ('restricted_guilds' in data) {
|
212
|
+
this.disableDMfromServer = new Collection(data.restricted_guilds.map(guildId => [guildId, true]));
|
213
|
+
}
|
214
|
+
}
|
215
|
+
async fetch() {
|
216
|
+
if (this.client.bot) throw new Error('INVALID_BOT_METHOD');
|
217
|
+
const data = await this.client.api.users('@me').settings.get();
|
218
|
+
this._patch(data);
|
219
|
+
return this;
|
220
|
+
}
|
221
|
+
/**
|
222
|
+
* Edit data
|
223
|
+
* @param {Object} data Data to edit
|
224
|
+
* @private
|
225
|
+
*/
|
226
|
+
async edit(data) {
|
227
|
+
if (this.client.bot) throw new Error('INVALID_BOT_METHOD');
|
228
|
+
const res = await this.client.api.users('@me').settings.patch({ data });
|
229
|
+
this._patch(res);
|
230
|
+
return this;
|
231
|
+
}
|
232
|
+
/**
|
233
|
+
* Set compact mode
|
234
|
+
* @param {boolean | null} value Compact mode enable or disable
|
235
|
+
* @returns {boolean}
|
236
|
+
*/
|
237
|
+
async setDisplayCompactMode(value) {
|
238
|
+
if (typeof value !== 'boolean' && value !== null) {
|
239
|
+
throw new TypeError('INVALID_TYPE', 'value', 'boolean | null', true);
|
240
|
+
}
|
241
|
+
if (!value) value = !this.compactMode;
|
242
|
+
if (value !== this.compactMode) {
|
243
|
+
await this.edit({ message_display_compact: value });
|
244
|
+
}
|
245
|
+
return this.compactMode;
|
246
|
+
}
|
247
|
+
/**
|
248
|
+
* Discord Theme
|
249
|
+
* @param {null |dark |light} value Theme to set
|
250
|
+
* @returns {theme}
|
251
|
+
*/
|
252
|
+
async setTheme(value) {
|
253
|
+
const validValues = ['dark', 'light'];
|
254
|
+
if (typeof value !== 'string' && value !== null) {
|
255
|
+
throw new TypeError('INVALID_TYPE', 'value', 'string | null', true);
|
256
|
+
}
|
257
|
+
if (!validValues.includes(value)) {
|
258
|
+
if (value == validValues[0]) value = validValues[1];
|
259
|
+
else value = validValues[0];
|
260
|
+
}
|
261
|
+
if (value !== this.theme) {
|
262
|
+
await this.edit({ theme: value });
|
263
|
+
}
|
264
|
+
return this.theme;
|
265
|
+
}
|
266
|
+
|
267
|
+
/**
|
268
|
+
* CustomStatus Object
|
269
|
+
* @typedef {Object} CustomStatusOption
|
270
|
+
* @property {string | null} text Text to set
|
271
|
+
* @property {string | null} status The status to set: 'online', 'idle', 'dnd', 'invisible' or null.
|
272
|
+
* @property {EmojiResolvable | null} emoji UnicodeEmoji, DiscordEmoji, or null.
|
273
|
+
* @property {number | null} expires The number of seconds until the status expires, or null.
|
274
|
+
*/
|
275
|
+
|
276
|
+
/**
|
277
|
+
* Set custom status
|
278
|
+
* @param {?CustomStatus | CustomStatusOption} options CustomStatus
|
279
|
+
*/
|
280
|
+
setCustomStatus(options) {
|
281
|
+
if (typeof options !== 'object') {
|
282
|
+
this.edit({ custom_status: null });
|
283
|
+
} else if (options instanceof CustomStatus) {
|
284
|
+
options = options.toJSON();
|
285
|
+
let data = {
|
286
|
+
emoji_name: null,
|
287
|
+
expires_at: null,
|
288
|
+
text: null,
|
289
|
+
};
|
290
|
+
if (typeof options.state === 'string') {
|
291
|
+
data.text = options.state;
|
292
|
+
}
|
293
|
+
if (options.emoji) {
|
294
|
+
if (options.emoji?.id) {
|
295
|
+
data.emoji_name = options.emoji?.name;
|
296
|
+
data.emoji_id = options.emoji?.id;
|
297
|
+
} else {
|
298
|
+
data.emoji_name = typeof options.emoji?.name === 'string' ? options.emoji?.name : null;
|
299
|
+
}
|
300
|
+
}
|
301
|
+
this.edit({ custom_status: data });
|
302
|
+
} else {
|
303
|
+
let data = {
|
304
|
+
emoji_name: null,
|
305
|
+
expires_at: null,
|
306
|
+
text: null,
|
307
|
+
};
|
308
|
+
if (typeof options.text === 'string') {
|
309
|
+
if (options.text.length > 128) {
|
310
|
+
throw new RangeError('[INVALID_VALUE] Custom status text must be less than 128 characters');
|
311
|
+
}
|
312
|
+
data.text = options.text;
|
313
|
+
}
|
314
|
+
if (options.emoji) {
|
315
|
+
const emoji = this.client.emojis.resolve(options.emoji);
|
316
|
+
if (emoji) {
|
317
|
+
data.emoji_name = emoji.name;
|
318
|
+
data.emoji_id = emoji.id;
|
319
|
+
} else {
|
320
|
+
data.emoji_name = typeof options.emoji === 'string' ? options.emoji : null;
|
321
|
+
}
|
322
|
+
}
|
323
|
+
if (typeof options.expires === 'number') {
|
324
|
+
if (options.expires < Date.now()) {
|
325
|
+
throw new RangeError(`[INVALID_VALUE] Custom status expiration must be greater than ${Date.now()}`);
|
326
|
+
}
|
327
|
+
data.expires_at = new Date(options.expires).toISOString();
|
328
|
+
}
|
329
|
+
if (['online', 'idle', 'dnd', 'invisible'].includes(options.status)) this.edit({ status: options.status });
|
330
|
+
this.edit({ custom_status: data });
|
331
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
/**
|
335
|
+
* * Locale Setting, must be one of:
|
336
|
+
* * `DANISH`
|
337
|
+
* * `GERMAN`
|
338
|
+
* * `ENGLISH_UK`
|
339
|
+
* * `ENGLISH_US`
|
340
|
+
* * `SPANISH`
|
341
|
+
* * `FRENCH`
|
342
|
+
* * `CROATIAN`
|
343
|
+
* * `ITALIAN`
|
344
|
+
* * `LITHUANIAN`
|
345
|
+
* * `HUNGARIAN`
|
346
|
+
* * `DUTCH`
|
347
|
+
* * `NORWEGIAN`
|
348
|
+
* * `POLISH`
|
349
|
+
* * `BRAZILIAN_PORTUGUESE`
|
350
|
+
* * `ROMANIA_ROMANIAN`
|
351
|
+
* * `FINNISH`
|
352
|
+
* * `SWEDISH`
|
353
|
+
* * `VIETNAMESE`
|
354
|
+
* * `TURKISH`
|
355
|
+
* * `CZECH`
|
356
|
+
* * `GREEK`
|
357
|
+
* * `BULGARIAN`
|
358
|
+
* * `RUSSIAN`
|
359
|
+
* * `UKRAINIAN`
|
360
|
+
* * `HINDI`
|
361
|
+
* * `THAI`
|
362
|
+
* * `CHINA_CHINESE`
|
363
|
+
* * `JAPANESE`
|
364
|
+
* * `TAIWAN_CHINESE`
|
365
|
+
* * `KOREAN`
|
366
|
+
* @param {localeSetting} value Locale to set
|
367
|
+
* @returns {locale}
|
368
|
+
*/
|
369
|
+
async setLocale(value) {
|
370
|
+
if (typeof value !== 'string') {
|
371
|
+
throw new TypeError('INVALID_TYPE', 'value', 'string', true);
|
372
|
+
}
|
373
|
+
if (!localeSetting[value]) throw new Error('INVALID_LOCALE');
|
374
|
+
if (localeSetting[value] !== this.locale) {
|
375
|
+
await this.edit({ locale: localeSetting[value] });
|
376
|
+
}
|
377
|
+
return this.locale;
|
378
|
+
}
|
379
|
+
// TODO: Guild positions & folders
|
380
|
+
// Change Index in Array [Hidden]
|
381
|
+
/**
|
382
|
+
*
|
383
|
+
* @param {Array} array Array
|
384
|
+
* @param {number} from Index1
|
385
|
+
* @param {number} to Index2
|
386
|
+
* @returns {Array}
|
387
|
+
* @private
|
388
|
+
*/
|
389
|
+
_move(array, from, to) {
|
390
|
+
array.splice(to, 0, array.splice(from, 1)[0]);
|
391
|
+
return array;
|
392
|
+
}
|
393
|
+
// TODO: Move Guild
|
394
|
+
// folder to folder
|
395
|
+
// folder to home
|
396
|
+
// home to home
|
397
|
+
// home to folder
|
398
|
+
/**
|
399
|
+
* Change Guild Position (from * to Folder or Home)
|
400
|
+
* @param {GuildIDResolve} guildId guild.id
|
401
|
+
* @param {number} newPosition Guild Position
|
402
|
+
* * **WARNING**: Type = `FOLDER`, newPosition is the guild's index in the Folder.
|
403
|
+
* @param {number} type Move to folder or home
|
404
|
+
* * `FOLDER`: 1
|
405
|
+
* * `HOME`: 2
|
406
|
+
* @param {FolderID} folderId If you want to move to folder
|
407
|
+
* @private
|
408
|
+
*/
|
409
|
+
guildChangePosition(guildId, newPosition, type, folderId) {
|
410
|
+
// Get Guild default position
|
411
|
+
// Escape
|
412
|
+
const oldGuildFolderPosition = this.rawSetting.guild_folders.findIndex(value => value.guild_ids.includes(guildId));
|
413
|
+
const newGuildFolderPosition = this.rawSetting.guild_folders.findIndex(value =>
|
414
|
+
value.guild_ids.includes(this.rawSetting.guild_positions[newPosition]),
|
415
|
+
);
|
416
|
+
if (type == 2 || `${type}`.toUpperCase() == 'HOME') {
|
417
|
+
// Delete GuildID from Folder and create new Folder
|
418
|
+
// Check it is folder
|
419
|
+
const folder = this.rawSetting.guild_folders[oldGuildFolderPosition];
|
420
|
+
if (folder.id) {
|
421
|
+
this.rawSetting.guild_folders[oldGuildFolderPosition].guild_ids = this.rawSetting.guild_folders[
|
422
|
+
oldGuildFolderPosition
|
423
|
+
].guild_ids.filter(v => v !== guildId);
|
424
|
+
}
|
425
|
+
this.rawSetting.guild_folders = this._move(
|
426
|
+
this.rawSetting.guild_folders,
|
427
|
+
oldGuildFolderPosition,
|
428
|
+
newGuildFolderPosition,
|
429
|
+
);
|
430
|
+
this.rawSetting.guild_folders[newGuildFolderPosition].id = null;
|
431
|
+
} else if (type == 1 || `${type}`.toUpperCase() == 'FOLDER') {
|
432
|
+
// Delete GuildID from oldFolder
|
433
|
+
this.rawSetting.guild_folders[oldGuildFolderPosition].guild_ids = this.rawSetting.guild_folders[
|
434
|
+
oldGuildFolderPosition
|
435
|
+
].guild_ids.filter(v => v !== guildId);
|
436
|
+
// Index new Folder
|
437
|
+
const folderIndex = this.rawSetting.guild_folders.findIndex(value => value.id == folderId);
|
438
|
+
const folder = this.rawSetting.guild_folders[folderIndex];
|
439
|
+
folder.guild_ids.push(guildId);
|
440
|
+
folder.guild_ids = [...new Set(folder.guild_ids)];
|
441
|
+
folder.guild_ids = this._move(
|
442
|
+
folder.guild_ids,
|
443
|
+
folder.guild_ids.findIndex(v => v == guildId),
|
444
|
+
newPosition,
|
445
|
+
);
|
446
|
+
}
|
447
|
+
this.edit({ guild_folders: this.rawSetting.guild_folders });
|
448
|
+
}
|
449
|
+
|
450
|
+
/**
|
451
|
+
* Restricted guilds setting
|
452
|
+
* @param {boolean} status Restricted status
|
453
|
+
* @returns {Promise}
|
454
|
+
*/
|
455
|
+
restrictedGuilds(status) {
|
456
|
+
if (typeof status !== 'boolean') {
|
457
|
+
throw new TypeError('INVALID_TYPE', 'status', 'boolean', true);
|
458
|
+
}
|
459
|
+
return this.edit({
|
460
|
+
default_guilds_restricted: status,
|
461
|
+
restricted_guilds: status ? this.client.guilds.cache.map(v => v.id) : [],
|
462
|
+
});
|
463
|
+
}
|
464
|
+
/**
|
465
|
+
* Add a guild to the list of restricted guilds.
|
466
|
+
* @param {GuildIDResolve} guildId The guild to add
|
467
|
+
* @returns {Promise}
|
468
|
+
*/
|
469
|
+
addRestrictedGuild(guildId) {
|
470
|
+
const temp = Object.assign(
|
471
|
+
[],
|
472
|
+
this.disableDMfromServer.map((v, k) => k),
|
473
|
+
);
|
474
|
+
if (temp.includes(guildId)) throw new Error('Guild is already restricted');
|
475
|
+
temp.push(guildId);
|
476
|
+
return this.edit({ restricted_guilds: temp });
|
477
|
+
}
|
478
|
+
|
479
|
+
/**
|
480
|
+
* Remove a guild from the list of restricted guilds.
|
481
|
+
* @param {GuildIDResolve} guildId The guild to remove
|
482
|
+
* @returns {Promise}
|
483
|
+
*/
|
484
|
+
removeRestrictedGuild(guildId) {
|
485
|
+
if (!this.disableDMfromServer.delete(guildId)) throw new Error('Guild is already restricted');
|
486
|
+
return this.edit({ restricted_guilds: this.disableDMfromServer.map((v, k) => k) });
|
487
|
+
}
|
488
|
+
}
|
489
|
+
|
490
|
+
module.exports = ClientUserSettingManager;
|
@@ -0,0 +1,61 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const BaseManager = require('./BaseManager');
|
4
|
+
const { Error } = require('../errors');
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Manages the API methods of a data model along with a collection of instances.
|
8
|
+
* @extends {BaseManager}
|
9
|
+
* @abstract
|
10
|
+
*/
|
11
|
+
class DataManager extends BaseManager {
|
12
|
+
constructor(client, holds) {
|
13
|
+
super(client);
|
14
|
+
|
15
|
+
/**
|
16
|
+
* The data structure belonging to this manager.
|
17
|
+
* @name DataManager#holds
|
18
|
+
* @type {Function}
|
19
|
+
* @private
|
20
|
+
* @readonly
|
21
|
+
*/
|
22
|
+
Object.defineProperty(this, 'holds', { value: holds });
|
23
|
+
}
|
24
|
+
|
25
|
+
/**
|
26
|
+
* The cache of items for this manager.
|
27
|
+
* @type {Collection}
|
28
|
+
* @abstract
|
29
|
+
*/
|
30
|
+
get cache() {
|
31
|
+
throw new Error('NOT_IMPLEMENTED', 'get cache', this.constructor.name);
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Resolves a data entry to a data Object.
|
36
|
+
* @param {string|Object} idOrInstance The id or instance of something in this Manager
|
37
|
+
* @returns {?Object} An instance from this Manager
|
38
|
+
*/
|
39
|
+
resolve(idOrInstance) {
|
40
|
+
if (idOrInstance instanceof this.holds) return idOrInstance;
|
41
|
+
if (typeof idOrInstance === 'string') return this.cache.get(idOrInstance) ?? null;
|
42
|
+
return null;
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Resolves a data entry to an instance id.
|
47
|
+
* @param {string|Object} idOrInstance The id or instance of something in this Manager
|
48
|
+
* @returns {?Snowflake}
|
49
|
+
*/
|
50
|
+
resolveId(idOrInstance) {
|
51
|
+
if (idOrInstance instanceof this.holds) return idOrInstance.id;
|
52
|
+
if (typeof idOrInstance === 'string') return idOrInstance;
|
53
|
+
return null;
|
54
|
+
}
|
55
|
+
|
56
|
+
valueOf() {
|
57
|
+
return this.cache;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
module.exports = DataManager;
|
@@ -0,0 +1,104 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
4
|
+
const BaseManager = require('./BaseManager');
|
5
|
+
const DeveloperPortalApplication = require('../structures/DeveloperPortalApplication');
|
6
|
+
const Team = require('../structures/Team');
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Manages API methods for users and stores their cache.
|
10
|
+
* @extends {BaseManager}
|
11
|
+
*/
|
12
|
+
class DeveloperPortalManager extends BaseManager {
|
13
|
+
constructor(client) {
|
14
|
+
super(client);
|
15
|
+
/**
|
16
|
+
* A collection of all the applications the client has.
|
17
|
+
* @type {Collection<Snowflake, DeveloperPortalApplication>}
|
18
|
+
* @readonly
|
19
|
+
*/
|
20
|
+
this.applications = new Collection();
|
21
|
+
/**
|
22
|
+
* A collection of all the teams the client has.
|
23
|
+
* @type {Collection<Snowflake, Team>}
|
24
|
+
* @readonly
|
25
|
+
*/
|
26
|
+
this.teams = new Collection(); // Collection<Snowflake, Team>
|
27
|
+
}
|
28
|
+
/**
|
29
|
+
* Fetches all the applications & teams the client has.
|
30
|
+
* @returns {Promise<DeveloperPortalManager>}
|
31
|
+
*/
|
32
|
+
async fetch() {
|
33
|
+
const promise1 = this.client.api.applications.get({
|
34
|
+
query: {
|
35
|
+
with_team_applications: true,
|
36
|
+
},
|
37
|
+
});
|
38
|
+
const promise2 = this.client.api.teams.get();
|
39
|
+
const [applications, teams] = await Promise.all([promise1, promise2]);
|
40
|
+
for (const team of teams) {
|
41
|
+
this.teams.set(team.id, new Team(this.client, team));
|
42
|
+
}
|
43
|
+
for (const application of applications) {
|
44
|
+
this.applications.set(application.id, new DeveloperPortalApplication(this.client, application));
|
45
|
+
}
|
46
|
+
return this;
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Creates a new Team.
|
51
|
+
* @param {string} name Name of the team
|
52
|
+
* @returns {Promise<Team>}
|
53
|
+
*/
|
54
|
+
async createTeam(name) {
|
55
|
+
const team = await this.client.api.teams.post({
|
56
|
+
data: {
|
57
|
+
name: name,
|
58
|
+
},
|
59
|
+
});
|
60
|
+
|
61
|
+
this.teams.set(team.id, new Team(this.client, team));
|
62
|
+
return this.teams.get(team.id);
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* Creates a new application.
|
67
|
+
* @param {string} name Name of the application
|
68
|
+
* @param {?Snowflake | Team} teamId The team to create the application in
|
69
|
+
* @returns {Promise<DeveloperPortalApplication>}
|
70
|
+
*/
|
71
|
+
async createApplication(name, teamId = null) {
|
72
|
+
teamId = teamId instanceof Team ? teamId.id : teamId;
|
73
|
+
const application = await this.client.api.applications.post({
|
74
|
+
data: {
|
75
|
+
name,
|
76
|
+
team_id: teamId,
|
77
|
+
},
|
78
|
+
});
|
79
|
+
this.applications.set(application.id, new DeveloperPortalApplication(this.client, application));
|
80
|
+
return this.applications.get(application.id);
|
81
|
+
}
|
82
|
+
|
83
|
+
/**
|
84
|
+
* Deletes an application.
|
85
|
+
* @param {Snowflake} id Application ID
|
86
|
+
* @param {?number} MFACode 2FA code (if 2FA is enabled)
|
87
|
+
* @returns {Promise<void>}
|
88
|
+
*/
|
89
|
+
async deleteApplication(id, MFACode) {
|
90
|
+
if (MFACode) {
|
91
|
+
await this.client.api.applications[`${id}/delete`].post({
|
92
|
+
query: {
|
93
|
+
code: MFACode,
|
94
|
+
},
|
95
|
+
});
|
96
|
+
} else {
|
97
|
+
await this.client.api.applications[`${id}/delete`].post();
|
98
|
+
}
|
99
|
+
this.applications.delete(id);
|
100
|
+
return undefined;
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
module.exports = DeveloperPortalManager;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const ApplicationCommandManager = require('./ApplicationCommandManager');
|
4
|
+
const ApplicationCommandPermissionsManager = require('./ApplicationCommandPermissionsManager');
|
5
|
+
|
6
|
+
/**
|
7
|
+
* An extension for guild-specific application commands.
|
8
|
+
* @extends {ApplicationCommandManager}
|
9
|
+
*/
|
10
|
+
class GuildApplicationCommandManager extends ApplicationCommandManager {
|
11
|
+
constructor(guild, iterable) {
|
12
|
+
super(guild.client, iterable);
|
13
|
+
|
14
|
+
/**
|
15
|
+
* The guild that this manager belongs to
|
16
|
+
* @type {Guild}
|
17
|
+
*/
|
18
|
+
this.guild = guild;
|
19
|
+
|
20
|
+
/**
|
21
|
+
* The manager for permissions of arbitrary commands on this guild
|
22
|
+
* @type {ApplicationCommandPermissionsManager}
|
23
|
+
*/
|
24
|
+
this.permissions = new ApplicationCommandPermissionsManager(this);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
module.exports = GuildApplicationCommandManager;
|