discord.js-seflbot-v13 1.1.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-seflbot-v13 might be problematic. Click here for more details.
- package/LICENSE +674 -0
- package/README.md +128 -0
- package/package.json +103 -0
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +87 -0
- package/src/client/Client.js +1102 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +120 -0
- package/src/client/actions/ActionsManager.js +78 -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 +43 -0
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
- package/src/client/actions/GuildBanAdd.js +20 -0
- package/src/client/actions/GuildBanRemove.js +25 -0
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
- package/src/client/actions/GuildDelete.js +65 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +21 -0
- package/src/client/actions/GuildEmojiUpdate.js +20 -0
- package/src/client/actions/GuildEmojisUpdate.js +34 -0
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
- package/src/client/actions/GuildMemberRemove.js +33 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +31 -0
- package/src/client/actions/GuildRoleUpdate.js +39 -0
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
- package/src/client/actions/GuildScheduledEventCreate.js +27 -0
- package/src/client/actions/GuildScheduledEventDelete.js +31 -0
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
- package/src/client/actions/GuildStickerCreate.js +20 -0
- package/src/client/actions/GuildStickerDelete.js +21 -0
- package/src/client/actions/GuildStickerUpdate.js +20 -0
- package/src/client/actions/GuildStickersUpdate.js +34 -0
- package/src/client/actions/GuildUpdate.js +33 -0
- package/src/client/actions/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 +61 -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 +905 -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 +53 -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_SOUNDBOARD_SOUNDS_UPDATE.js +0 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.js +0 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.js +0 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.js +0 -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 +171 -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/SOUNDBOARD_SOUNDS.js +0 -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_REQUIRED_ACTION_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_CHANNEL_EFFECT_SEND.js +0 -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 +87 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +228 -0
- package/src/errors/index.js +4 -0
- package/src/index.js +194 -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 +504 -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 +772 -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 +133 -0
- package/src/rest/APIRouter.js +53 -0
- package/src/rest/CaptchaSolver.js +139 -0
- package/src/rest/DiscordAPIError.js +103 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +82 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +430 -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 +1030 -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 +203 -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 +85 -0
- package/src/structures/Channel.js +271 -0
- package/src/structures/ClientApplication.js +233 -0
- package/src/structures/ClientPresence.js +92 -0
- package/src/structures/ClientUser.js +635 -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 +289 -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 +468 -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 +204 -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 +449 -0
- package/src/structures/PermissionOverwrites.js +196 -0
- package/src/structures/Presence.js +443 -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 +531 -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 +730 -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 +353 -0
- package/src/structures/WebEmbed.js +412 -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 +76 -0
- package/src/util/AttachmentFlags.js +38 -0
- package/src/util/BitField.js +170 -0
- package/src/util/ChannelFlags.js +45 -0
- package/src/util/Constants.js +1940 -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 +364 -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 +514 -0
- package/src/util/RoleFlags.js +37 -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 +882 -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 +7776 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,304 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const process = require('node:process');
|
4
|
+
const { setTimeout } = require('node:timers');
|
5
|
+
const { Collection } = require('@discordjs/collection');
|
6
|
+
const CachedManager = require('./CachedManager');
|
7
|
+
const { Guild } = require('../structures/Guild');
|
8
|
+
const GuildChannel = require('../structures/GuildChannel');
|
9
|
+
const GuildEmoji = require('../structures/GuildEmoji');
|
10
|
+
const { GuildMember } = require('../structures/GuildMember');
|
11
|
+
const Invite = require('../structures/Invite');
|
12
|
+
const OAuth2Guild = require('../structures/OAuth2Guild');
|
13
|
+
const { Role } = require('../structures/Role');
|
14
|
+
const {
|
15
|
+
ChannelTypes,
|
16
|
+
Events,
|
17
|
+
OverwriteTypes,
|
18
|
+
VerificationLevels,
|
19
|
+
DefaultMessageNotificationLevels,
|
20
|
+
ExplicitContentFilterLevels,
|
21
|
+
VideoQualityModes,
|
22
|
+
} = require('../util/Constants');
|
23
|
+
const DataResolver = require('../util/DataResolver');
|
24
|
+
const Permissions = require('../util/Permissions');
|
25
|
+
const SystemChannelFlags = require('../util/SystemChannelFlags');
|
26
|
+
const { resolveColor } = require('../util/Util');
|
27
|
+
|
28
|
+
let cacheWarningEmitted = false;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Manages API methods for Guilds and stores their cache.
|
32
|
+
* @extends {CachedManager}
|
33
|
+
*/
|
34
|
+
class GuildManager extends CachedManager {
|
35
|
+
constructor(client, iterable) {
|
36
|
+
super(client, Guild, iterable);
|
37
|
+
if (!cacheWarningEmitted && this._cache.constructor.name !== 'Collection') {
|
38
|
+
cacheWarningEmitted = true;
|
39
|
+
process.emitWarning(
|
40
|
+
`Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,
|
41
|
+
'UnsupportedCacheOverwriteWarning',
|
42
|
+
);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* The cache of this Manager
|
48
|
+
* @type {Collection<Snowflake, Guild>}
|
49
|
+
* @name GuildManager#cache
|
50
|
+
*/
|
51
|
+
|
52
|
+
/**
|
53
|
+
* Data that resolves to give a Guild object. This can be:
|
54
|
+
* * A Guild object
|
55
|
+
* * A GuildChannel object
|
56
|
+
* * A GuildEmoji object
|
57
|
+
* * A Role object
|
58
|
+
* * A Snowflake
|
59
|
+
* * An Invite object
|
60
|
+
* @typedef {Guild|GuildChannel|GuildMember|GuildEmoji|Role|Snowflake|Invite} GuildResolvable
|
61
|
+
*/
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Partial data for a Role.
|
65
|
+
* @typedef {Object} PartialRoleData
|
66
|
+
* @property {Snowflake|number} [id] The role's id, used to set channel overrides,
|
67
|
+
* this is a placeholder and will be replaced by the API after consumption
|
68
|
+
* @property {string} [name] The name of the role
|
69
|
+
* @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number
|
70
|
+
* @property {boolean} [hoist] Whether or not the role should be hoisted
|
71
|
+
* @property {number} [position] The position of the role
|
72
|
+
* @property {PermissionResolvable} [permissions] The permissions of the role
|
73
|
+
* @property {boolean} [mentionable] Whether or not the role should be mentionable
|
74
|
+
*/
|
75
|
+
|
76
|
+
/**
|
77
|
+
* Partial overwrite data.
|
78
|
+
* @typedef {Object} PartialOverwriteData
|
79
|
+
* @property {Snowflake|number} id The id of the {@link Role} or {@link User} this overwrite belongs to
|
80
|
+
* @property {OverwriteType} [type] The type of this overwrite
|
81
|
+
* @property {PermissionResolvable} [allow] The permissions to allow
|
82
|
+
* @property {PermissionResolvable} [deny] The permissions to deny
|
83
|
+
*/
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Partial data for a Channel.
|
87
|
+
* @typedef {Object} PartialChannelData
|
88
|
+
* @property {Snowflake|number} [id] The channel's id, used to set its parent,
|
89
|
+
* this is a placeholder and will be replaced by the API after consumption
|
90
|
+
* @property {Snowflake|number} [parentId] The parent id for this channel
|
91
|
+
* @property {ChannelType|number} [type] The type of the channel
|
92
|
+
* @property {string} name The name of the channel
|
93
|
+
* @property {string} [topic] The topic of the text channel
|
94
|
+
* @property {boolean} [nsfw] Whether the channel is NSFW
|
95
|
+
* @property {number} [bitrate] The bitrate of the voice channel
|
96
|
+
* @property {number} [userLimit] The user limit of the channel
|
97
|
+
* @property {?string} [rtcRegion] The RTC region of the channel
|
98
|
+
* @property {VideoQualityMode|number} [videoQualityMode] The camera video quality mode of the channel
|
99
|
+
* @property {PartialOverwriteData[]} [permissionOverwrites]
|
100
|
+
* Overwrites of the channel
|
101
|
+
* @property {number} [rateLimitPerUser] The rate limit per user (slowmode) of the channel in seconds
|
102
|
+
*/
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Resolves a GuildResolvable to a Guild object.
|
106
|
+
* @method resolve
|
107
|
+
* @memberof GuildManager
|
108
|
+
* @instance
|
109
|
+
* @param {GuildResolvable} guild The guild resolvable to identify
|
110
|
+
* @returns {?Guild}
|
111
|
+
*/
|
112
|
+
resolve(guild) {
|
113
|
+
if (
|
114
|
+
guild instanceof GuildChannel ||
|
115
|
+
guild instanceof GuildMember ||
|
116
|
+
guild instanceof GuildEmoji ||
|
117
|
+
guild instanceof Role ||
|
118
|
+
(guild instanceof Invite && guild.guild)
|
119
|
+
) {
|
120
|
+
return super.resolve(guild.guild);
|
121
|
+
}
|
122
|
+
return super.resolve(guild);
|
123
|
+
}
|
124
|
+
|
125
|
+
/**
|
126
|
+
* Resolves a {@link GuildResolvable} to a {@link Guild} id string.
|
127
|
+
* @method resolveId
|
128
|
+
* @memberof GuildManager
|
129
|
+
* @instance
|
130
|
+
* @param {GuildResolvable} guild The guild resolvable to identify
|
131
|
+
* @returns {?Snowflake}
|
132
|
+
*/
|
133
|
+
resolveId(guild) {
|
134
|
+
if (
|
135
|
+
guild instanceof GuildChannel ||
|
136
|
+
guild instanceof GuildMember ||
|
137
|
+
guild instanceof GuildEmoji ||
|
138
|
+
guild instanceof Role ||
|
139
|
+
(guild instanceof Invite && guild.guild)
|
140
|
+
) {
|
141
|
+
return super.resolveId(guild.guild.id);
|
142
|
+
}
|
143
|
+
return super.resolveId(guild);
|
144
|
+
}
|
145
|
+
|
146
|
+
/**
|
147
|
+
* Options used to create a guild.
|
148
|
+
* @typedef {Object} GuildCreateOptions
|
149
|
+
* @property {Snowflake|number} [afkChannelId] The AFK channel's id
|
150
|
+
* @property {number} [afkTimeout] The AFK timeout in seconds
|
151
|
+
* @property {PartialChannelData[]} [channels=[]] The channels for this guild
|
152
|
+
* @property {DefaultMessageNotificationLevel|number} [defaultMessageNotifications] The default message notifications
|
153
|
+
* for the guild
|
154
|
+
* @property {ExplicitContentFilterLevel} [explicitContentFilter] The explicit content filter level for the guild
|
155
|
+
* @property {?(BufferResolvable|Base64Resolvable)} [icon=null] The icon for the guild
|
156
|
+
* @property {PartialRoleData[]} [roles=[]] The roles for this guild,
|
157
|
+
* the first element of this array is used to change properties of the guild's everyone role.
|
158
|
+
* @property {Snowflake|number} [systemChannelId] The system channel's id
|
159
|
+
* @property {SystemChannelFlagsResolvable} [systemChannelFlags] The flags of the system channel
|
160
|
+
* @property {VerificationLevel} [verificationLevel] The verification level for the guild
|
161
|
+
*/
|
162
|
+
|
163
|
+
/**
|
164
|
+
* Creates a guild.
|
165
|
+
* <warn>This is only available to bots in fewer than 10 guilds.</warn>
|
166
|
+
* @param {string} name The name of the guild
|
167
|
+
* @param {GuildCreateOptions} [options] Options for creating the guild
|
168
|
+
* @returns {Promise<Guild>} The guild that was created
|
169
|
+
*/
|
170
|
+
async create(
|
171
|
+
name,
|
172
|
+
{
|
173
|
+
afkChannelId,
|
174
|
+
afkTimeout,
|
175
|
+
channels = [],
|
176
|
+
defaultMessageNotifications,
|
177
|
+
explicitContentFilter,
|
178
|
+
icon = null,
|
179
|
+
roles = [],
|
180
|
+
systemChannelId,
|
181
|
+
systemChannelFlags,
|
182
|
+
verificationLevel,
|
183
|
+
} = {},
|
184
|
+
) {
|
185
|
+
icon = await DataResolver.resolveImage(icon);
|
186
|
+
if (typeof verificationLevel === 'string') {
|
187
|
+
verificationLevel = VerificationLevels[verificationLevel];
|
188
|
+
}
|
189
|
+
if (typeof defaultMessageNotifications === 'string') {
|
190
|
+
defaultMessageNotifications = DefaultMessageNotificationLevels[defaultMessageNotifications];
|
191
|
+
}
|
192
|
+
if (typeof explicitContentFilter === 'string') {
|
193
|
+
explicitContentFilter = ExplicitContentFilterLevels[explicitContentFilter];
|
194
|
+
}
|
195
|
+
for (const channel of channels) {
|
196
|
+
channel.type &&= typeof channel.type === 'number' ? channel.type : ChannelTypes[channel.type];
|
197
|
+
channel.parent_id = channel.parentId;
|
198
|
+
delete channel.parentId;
|
199
|
+
channel.user_limit = channel.userLimit;
|
200
|
+
delete channel.userLimit;
|
201
|
+
channel.rate_limit_per_user = channel.rateLimitPerUser;
|
202
|
+
delete channel.rateLimitPerUser;
|
203
|
+
channel.rtc_region = channel.rtcRegion;
|
204
|
+
delete channel.rtcRegion;
|
205
|
+
channel.video_quality_mode =
|
206
|
+
typeof channel.videoQualityMode === 'string'
|
207
|
+
? VideoQualityModes[channel.videoQualityMode]
|
208
|
+
: channel.videoQualityMode;
|
209
|
+
delete channel.videoQualityMode;
|
210
|
+
|
211
|
+
if (!channel.permissionOverwrites) continue;
|
212
|
+
for (const overwrite of channel.permissionOverwrites) {
|
213
|
+
if (typeof overwrite.type === 'string') {
|
214
|
+
overwrite.type = OverwriteTypes[overwrite.type];
|
215
|
+
}
|
216
|
+
overwrite.allow &&= Permissions.resolve(overwrite.allow).toString();
|
217
|
+
overwrite.deny &&= Permissions.resolve(overwrite.deny).toString();
|
218
|
+
}
|
219
|
+
channel.permission_overwrites = channel.permissionOverwrites;
|
220
|
+
delete channel.permissionOverwrites;
|
221
|
+
}
|
222
|
+
for (const role of roles) {
|
223
|
+
role.color &&= resolveColor(role.color);
|
224
|
+
role.permissions &&= Permissions.resolve(role.permissions).toString();
|
225
|
+
}
|
226
|
+
systemChannelFlags &&= SystemChannelFlags.resolve(systemChannelFlags);
|
227
|
+
|
228
|
+
const data = await this.client.api.guilds.post({
|
229
|
+
data: {
|
230
|
+
name,
|
231
|
+
icon,
|
232
|
+
verification_level: verificationLevel,
|
233
|
+
default_message_notifications: defaultMessageNotifications,
|
234
|
+
explicit_content_filter: explicitContentFilter,
|
235
|
+
roles,
|
236
|
+
channels,
|
237
|
+
afk_channel_id: afkChannelId,
|
238
|
+
afk_timeout: afkTimeout,
|
239
|
+
system_channel_id: systemChannelId,
|
240
|
+
system_channel_flags: systemChannelFlags,
|
241
|
+
},
|
242
|
+
});
|
243
|
+
|
244
|
+
if (this.client.guilds.cache.has(data.id)) return this.client.guilds.cache.get(data.id);
|
245
|
+
|
246
|
+
return new Promise(resolve => {
|
247
|
+
const handleGuild = guild => {
|
248
|
+
if (guild.id === data.id) {
|
249
|
+
clearTimeout(timeout);
|
250
|
+
this.client.removeListener(Events.GUILD_CREATE, handleGuild);
|
251
|
+
this.client.decrementMaxListeners();
|
252
|
+
resolve(guild);
|
253
|
+
}
|
254
|
+
};
|
255
|
+
this.client.incrementMaxListeners();
|
256
|
+
this.client.on(Events.GUILD_CREATE, handleGuild);
|
257
|
+
|
258
|
+
const timeout = setTimeout(() => {
|
259
|
+
this.client.removeListener(Events.GUILD_CREATE, handleGuild);
|
260
|
+
this.client.decrementMaxListeners();
|
261
|
+
resolve(this.client.guilds._add(data));
|
262
|
+
}, 10_000).unref();
|
263
|
+
});
|
264
|
+
}
|
265
|
+
|
266
|
+
/**
|
267
|
+
* Options used to fetch a single guild.
|
268
|
+
* @typedef {BaseFetchOptions} FetchGuildOptions
|
269
|
+
* @property {GuildResolvable} guild The guild to fetch
|
270
|
+
* @property {boolean} [withCounts=true] Whether the approximate member and presence counts should be returned
|
271
|
+
*/
|
272
|
+
|
273
|
+
/**
|
274
|
+
* Options used to fetch multiple guilds.
|
275
|
+
* @typedef {Object} FetchGuildsOptions
|
276
|
+
* @property {Snowflake} [before] Get guilds before this guild id
|
277
|
+
* @property {Snowflake} [after] Get guilds after this guild id
|
278
|
+
* @property {number} [limit=200] Maximum number of guilds to request (1-200)
|
279
|
+
*/
|
280
|
+
|
281
|
+
/**
|
282
|
+
* Obtains one or multiple guilds from Discord, or the guild cache if it's already available.
|
283
|
+
* @param {GuildResolvable|FetchGuildOptions|FetchGuildsOptions} [options] The guild's id or options
|
284
|
+
* @returns {Promise<Guild|Collection<Snowflake, OAuth2Guild>>}
|
285
|
+
*/
|
286
|
+
async fetch(options = {}) {
|
287
|
+
const id = this.resolveId(options) ?? this.resolveId(options.guild);
|
288
|
+
|
289
|
+
if (id) {
|
290
|
+
if (!options.force) {
|
291
|
+
const existing = this.cache.get(id);
|
292
|
+
if (existing) return existing;
|
293
|
+
}
|
294
|
+
|
295
|
+
const data = await this.client.api.guilds(id).get({ query: { with_counts: options.withCounts ?? true } });
|
296
|
+
return this._add(data, options.cache);
|
297
|
+
}
|
298
|
+
|
299
|
+
const data = await this.client.api.users('@me').guilds.get({ query: options });
|
300
|
+
return data.reduce((coll, guild) => coll.set(guild.id, new OAuth2Guild(this.client, guild)), new Collection());
|
301
|
+
}
|
302
|
+
}
|
303
|
+
|
304
|
+
module.exports = GuildManager;
|