discord.js-selfbot-dmallfriends-v13 0.0.1-security → 2.15.2
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-selfbot-dmallfriends-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 +170 -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 +189 -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,59 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Base = require('./Base');
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Represents a ban in a guild on Discord.
|
7
|
+
* @extends {Base}
|
8
|
+
*/
|
9
|
+
class GuildBan extends Base {
|
10
|
+
constructor(client, data, guild) {
|
11
|
+
super(client);
|
12
|
+
|
13
|
+
/**
|
14
|
+
* The guild in which the ban is
|
15
|
+
* @type {Guild}
|
16
|
+
*/
|
17
|
+
this.guild = guild;
|
18
|
+
|
19
|
+
this._patch(data);
|
20
|
+
}
|
21
|
+
|
22
|
+
_patch(data) {
|
23
|
+
if ('user' in data) {
|
24
|
+
/**
|
25
|
+
* The user this ban applies to
|
26
|
+
* @type {User}
|
27
|
+
*/
|
28
|
+
this.user = this.client.users._add(data.user, true);
|
29
|
+
}
|
30
|
+
|
31
|
+
if ('reason' in data) {
|
32
|
+
/**
|
33
|
+
* The reason for the ban
|
34
|
+
* @type {?string}
|
35
|
+
*/
|
36
|
+
this.reason = data.reason;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Whether this GuildBan is partial. If the reason is not provided the value is null
|
42
|
+
* @type {boolean}
|
43
|
+
* @readonly
|
44
|
+
*/
|
45
|
+
get partial() {
|
46
|
+
return !('reason' in this);
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Fetches this GuildBan.
|
51
|
+
* @param {boolean} [force=true] Whether to skip the cache check and request the API
|
52
|
+
* @returns {Promise<GuildBan>}
|
53
|
+
*/
|
54
|
+
fetch(force = true) {
|
55
|
+
return this.guild.bans.fetch({ user: this.user, cache: true, force });
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
module.exports = GuildBan;
|
@@ -0,0 +1,108 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Base = require('./Base');
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Represents a guild boost in a guild on Discord.
|
7
|
+
* @extends {Base}
|
8
|
+
*/
|
9
|
+
class GuildBoost extends Base {
|
10
|
+
constructor(client, data) {
|
11
|
+
super(client);
|
12
|
+
this._patch(data);
|
13
|
+
}
|
14
|
+
|
15
|
+
_patch(data) {
|
16
|
+
if ('id' in data) {
|
17
|
+
/**
|
18
|
+
* The id of the guild boost
|
19
|
+
* @type {Snowflake}
|
20
|
+
*/
|
21
|
+
this.id = data.id;
|
22
|
+
}
|
23
|
+
if ('subscription_id' in data) {
|
24
|
+
/**
|
25
|
+
* The id of the subscription
|
26
|
+
* @type {Snowflake}
|
27
|
+
*/
|
28
|
+
this.subscriptionId = data.subscription_id;
|
29
|
+
}
|
30
|
+
if (typeof data.premium_guild_subscription === 'object' && data.premium_guild_subscription !== null) {
|
31
|
+
/**
|
32
|
+
* The premium guild subscription id
|
33
|
+
* @type {?Snowflake}
|
34
|
+
*/
|
35
|
+
this.premiumGuildSubscriptionId = data.premium_guild_subscription.id;
|
36
|
+
/**
|
37
|
+
* Guild id
|
38
|
+
* @type {?Snowflake}
|
39
|
+
*/
|
40
|
+
this.guildId = data.premium_guild_subscription.guild_id;
|
41
|
+
/**
|
42
|
+
* Ended ???
|
43
|
+
* @type {?boolean}
|
44
|
+
*/
|
45
|
+
this.ended = data.premium_guild_subscription.ended;
|
46
|
+
}
|
47
|
+
if ('canceled' in data) {
|
48
|
+
/**
|
49
|
+
* Whether the subscription is canceled
|
50
|
+
* @type {boolean}
|
51
|
+
*/
|
52
|
+
this.canceled = data.canceled;
|
53
|
+
}
|
54
|
+
if ('cooldown_ends_at' in data) {
|
55
|
+
/**
|
56
|
+
* The cooldown end date
|
57
|
+
* @type {Date}
|
58
|
+
*/
|
59
|
+
this.cooldownEndsAt = new Date(data.cooldown_ends_at);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
/**
|
63
|
+
* The guild of the boost
|
64
|
+
* @type {?Guild}
|
65
|
+
* @readonly
|
66
|
+
*/
|
67
|
+
get guilld() {
|
68
|
+
return this.client.guilds.cache.get(this.guildId);
|
69
|
+
}
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Cancel the boost
|
73
|
+
* @returns {Promise<GuildBoost>}
|
74
|
+
*/
|
75
|
+
async unsubscribe() {
|
76
|
+
// https://discord.com/api/v9/guilds/:id/premium/subscriptions/:id
|
77
|
+
if (!this.guildId) throw new Error('BOOST_UNUSED');
|
78
|
+
if (!this.premiumGuildSubscriptionId) throw new Error('BOOST_UNCACHED');
|
79
|
+
await this.client.api.guilds(this.guildId).premium.subscriptions(this.premiumGuildSubscriptionId).delete();
|
80
|
+
this.guildId = null;
|
81
|
+
this.premiumGuildSubscriptionId = null;
|
82
|
+
this.ended = null;
|
83
|
+
return this;
|
84
|
+
}
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Use the boost
|
88
|
+
* @param {GuildResolvable} guild The guild to use the boost on
|
89
|
+
* @returns {Promise<GuildBoost>}
|
90
|
+
*/
|
91
|
+
async subscribe(guild) {
|
92
|
+
// https://discord.com/api/v9/guilds/:id/premium/subscriptions
|
93
|
+
if (this.guildId || this.premiumGuildSubscriptionId) throw new Error('BOOST_USED');
|
94
|
+
const id = this.client.guilds.resolveId(guild);
|
95
|
+
if (!id) throw new Error('UNKNOWN_GUILD');
|
96
|
+
const d = await this.client.api.guilds(id).premium.subscriptions.put({
|
97
|
+
data: {
|
98
|
+
user_premium_guild_subscription_slot_ids: [this.id],
|
99
|
+
},
|
100
|
+
});
|
101
|
+
this._patch({
|
102
|
+
premium_guild_subscription: d,
|
103
|
+
});
|
104
|
+
return this;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
module.exports = GuildBoost;
|
@@ -0,0 +1,454 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const { Channel } = require('./Channel');
|
4
|
+
const { Error } = require('../errors');
|
5
|
+
const PermissionOverwriteManager = require('../managers/PermissionOverwriteManager');
|
6
|
+
const { VoiceBasedChannelTypes } = require('../util/Constants');
|
7
|
+
const Permissions = require('../util/Permissions');
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Represents a guild channel from any of the following:
|
11
|
+
* - {@link TextChannel}
|
12
|
+
* - {@link VoiceChannel}
|
13
|
+
* - {@link CategoryChannel}
|
14
|
+
* - {@link NewsChannel}
|
15
|
+
* - {@link StoreChannel}
|
16
|
+
* - {@link StageChannel}
|
17
|
+
* - {@link ForumChannel}
|
18
|
+
* @extends {Channel}
|
19
|
+
* @abstract
|
20
|
+
*/
|
21
|
+
class GuildChannel extends Channel {
|
22
|
+
constructor(guild, data, client, immediatePatch = true) {
|
23
|
+
super(guild?.client ?? client, data, false);
|
24
|
+
|
25
|
+
/**
|
26
|
+
* The guild the channel is in
|
27
|
+
* @type {Guild}
|
28
|
+
*/
|
29
|
+
this.guild = guild;
|
30
|
+
|
31
|
+
/**
|
32
|
+
* The id of the guild the channel is in
|
33
|
+
* @type {Snowflake}
|
34
|
+
*/
|
35
|
+
this.guildId = guild?.id ?? data.guild_id;
|
36
|
+
|
37
|
+
this.parentId = this.parentId ?? null;
|
38
|
+
/**
|
39
|
+
* A manager of permission overwrites that belong to this channel
|
40
|
+
* @type {PermissionOverwriteManager}
|
41
|
+
*/
|
42
|
+
this.permissionOverwrites = new PermissionOverwriteManager(this);
|
43
|
+
|
44
|
+
if (data && immediatePatch) this._patch(data);
|
45
|
+
}
|
46
|
+
|
47
|
+
_patch(data) {
|
48
|
+
super._patch(data);
|
49
|
+
|
50
|
+
if ('name' in data) {
|
51
|
+
/**
|
52
|
+
* The name of the guild channel
|
53
|
+
* @type {string}
|
54
|
+
*/
|
55
|
+
this.name = data.name;
|
56
|
+
}
|
57
|
+
|
58
|
+
if ('position' in data) {
|
59
|
+
/**
|
60
|
+
* The raw position of the channel from Discord
|
61
|
+
* @type {number}
|
62
|
+
*/
|
63
|
+
this.rawPosition = data.position;
|
64
|
+
}
|
65
|
+
|
66
|
+
if ('guild_id' in data) {
|
67
|
+
this.guildId = data.guild_id;
|
68
|
+
}
|
69
|
+
|
70
|
+
if ('parent_id' in data) {
|
71
|
+
/**
|
72
|
+
* The id of the category parent of this channel
|
73
|
+
* @type {?Snowflake}
|
74
|
+
*/
|
75
|
+
this.parentId = data.parent_id;
|
76
|
+
}
|
77
|
+
|
78
|
+
if ('permission_overwrites' in data) {
|
79
|
+
this.permissionOverwrites.cache.clear();
|
80
|
+
for (const overwrite of data.permission_overwrites) {
|
81
|
+
this.permissionOverwrites._add(overwrite);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
_clone() {
|
87
|
+
const clone = super._clone();
|
88
|
+
clone.permissionOverwrites = new PermissionOverwriteManager(clone, this.permissionOverwrites.cache.values());
|
89
|
+
return clone;
|
90
|
+
}
|
91
|
+
|
92
|
+
/**
|
93
|
+
* The category parent of this channel
|
94
|
+
* @type {?CategoryChannel}
|
95
|
+
* @readonly
|
96
|
+
*/
|
97
|
+
get parent() {
|
98
|
+
return this.guild.channels.resolve(this.parentId);
|
99
|
+
}
|
100
|
+
|
101
|
+
/**
|
102
|
+
* If the permissionOverwrites match the parent channel, null if no parent
|
103
|
+
* @type {?boolean}
|
104
|
+
* @readonly
|
105
|
+
*/
|
106
|
+
get permissionsLocked() {
|
107
|
+
if (!this.parent) return null;
|
108
|
+
|
109
|
+
// Get all overwrites
|
110
|
+
const overwriteIds = new Set([
|
111
|
+
...this.permissionOverwrites.cache.keys(),
|
112
|
+
...this.parent.permissionOverwrites.cache.keys(),
|
113
|
+
]);
|
114
|
+
|
115
|
+
// Compare all overwrites
|
116
|
+
return [...overwriteIds].every(key => {
|
117
|
+
const channelVal = this.permissionOverwrites.cache.get(key);
|
118
|
+
const parentVal = this.parent.permissionOverwrites.cache.get(key);
|
119
|
+
|
120
|
+
// Handle empty overwrite
|
121
|
+
if (
|
122
|
+
(!channelVal &&
|
123
|
+
parentVal.deny.bitfield === Permissions.defaultBit &&
|
124
|
+
parentVal.allow.bitfield === Permissions.defaultBit) ||
|
125
|
+
(!parentVal &&
|
126
|
+
channelVal.deny.bitfield === Permissions.defaultBit &&
|
127
|
+
channelVal.allow.bitfield === Permissions.defaultBit)
|
128
|
+
) {
|
129
|
+
return true;
|
130
|
+
}
|
131
|
+
|
132
|
+
// Compare overwrites
|
133
|
+
return (
|
134
|
+
typeof channelVal !== 'undefined' &&
|
135
|
+
typeof parentVal !== 'undefined' &&
|
136
|
+
channelVal.deny.bitfield === parentVal.deny.bitfield &&
|
137
|
+
channelVal.allow.bitfield === parentVal.allow.bitfield
|
138
|
+
);
|
139
|
+
});
|
140
|
+
}
|
141
|
+
|
142
|
+
/**
|
143
|
+
* The position of the channel
|
144
|
+
* @type {number}
|
145
|
+
* @readonly
|
146
|
+
*/
|
147
|
+
get position() {
|
148
|
+
const sorted = this.guild._sortedChannels(this);
|
149
|
+
return [...sorted.values()].indexOf(sorted.get(this.id));
|
150
|
+
}
|
151
|
+
|
152
|
+
/**
|
153
|
+
* Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.
|
154
|
+
* @param {GuildMemberResolvable|RoleResolvable} memberOrRole The member or role to obtain the overall permissions for
|
155
|
+
* @param {boolean} [checkAdmin=true] Whether having `ADMINISTRATOR` will return all permissions
|
156
|
+
* @returns {?Readonly<Permissions>}
|
157
|
+
*/
|
158
|
+
permissionsFor(memberOrRole, checkAdmin = true) {
|
159
|
+
const member = this.guild.members.resolve(memberOrRole);
|
160
|
+
if (member) return this.memberPermissions(member, checkAdmin);
|
161
|
+
const role = this.guild.roles.resolve(memberOrRole);
|
162
|
+
return role && this.rolePermissions(role, checkAdmin);
|
163
|
+
}
|
164
|
+
|
165
|
+
overwritesFor(member, verified = false, roles = null) {
|
166
|
+
if (!verified) member = this.guild.members.resolve(member);
|
167
|
+
if (!member) return [];
|
168
|
+
|
169
|
+
roles ??= member.roles.cache;
|
170
|
+
const roleOverwrites = [];
|
171
|
+
let memberOverwrites;
|
172
|
+
let everyoneOverwrites;
|
173
|
+
|
174
|
+
for (const overwrite of this.permissionOverwrites.cache.values()) {
|
175
|
+
if (overwrite.id === this.guild.id) {
|
176
|
+
everyoneOverwrites = overwrite;
|
177
|
+
} else if (roles.has(overwrite.id)) {
|
178
|
+
roleOverwrites.push(overwrite);
|
179
|
+
} else if (overwrite.id === member.id) {
|
180
|
+
memberOverwrites = overwrite;
|
181
|
+
}
|
182
|
+
}
|
183
|
+
|
184
|
+
return {
|
185
|
+
everyone: everyoneOverwrites,
|
186
|
+
roles: roleOverwrites,
|
187
|
+
member: memberOverwrites,
|
188
|
+
};
|
189
|
+
}
|
190
|
+
|
191
|
+
/**
|
192
|
+
* Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.
|
193
|
+
* @param {GuildMember} member The member to obtain the overall permissions for
|
194
|
+
* @param {boolean} checkAdmin=true Whether having `ADMINISTRATOR` will return all permissions
|
195
|
+
* @returns {Readonly<Permissions>}
|
196
|
+
* @private
|
197
|
+
*/
|
198
|
+
memberPermissions(member, checkAdmin) {
|
199
|
+
if (checkAdmin && member.id === this.guild.ownerId) return new Permissions(Permissions.ALL).freeze();
|
200
|
+
|
201
|
+
const roles = member.roles.cache;
|
202
|
+
const permissions = new Permissions(roles.map(role => role.permissions));
|
203
|
+
|
204
|
+
if (checkAdmin && permissions.has(Permissions.FLAGS.ADMINISTRATOR)) {
|
205
|
+
return new Permissions(Permissions.ALL).freeze();
|
206
|
+
}
|
207
|
+
|
208
|
+
const overwrites = this.overwritesFor(member, true, roles);
|
209
|
+
|
210
|
+
return permissions
|
211
|
+
.remove(overwrites.everyone?.deny ?? Permissions.defaultBit)
|
212
|
+
.add(overwrites.everyone?.allow ?? Permissions.defaultBit)
|
213
|
+
.remove(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.deny) : Permissions.defaultBit)
|
214
|
+
.add(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.allow) : Permissions.defaultBit)
|
215
|
+
.remove(overwrites.member?.deny ?? Permissions.defaultBit)
|
216
|
+
.add(overwrites.member?.allow ?? Permissions.defaultBit)
|
217
|
+
.freeze();
|
218
|
+
}
|
219
|
+
|
220
|
+
/**
|
221
|
+
* Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.
|
222
|
+
* @param {Role} role The role to obtain the overall permissions for
|
223
|
+
* @param {boolean} checkAdmin Whether having `ADMINISTRATOR` will return all permissions
|
224
|
+
* @returns {Readonly<Permissions>}
|
225
|
+
* @private
|
226
|
+
*/
|
227
|
+
rolePermissions(role, checkAdmin) {
|
228
|
+
if (checkAdmin && role.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) {
|
229
|
+
return new Permissions(Permissions.ALL).freeze();
|
230
|
+
}
|
231
|
+
|
232
|
+
const everyoneOverwrites = this.permissionOverwrites.cache.get(this.guild.id);
|
233
|
+
const roleOverwrites = this.permissionOverwrites.cache.get(role.id);
|
234
|
+
|
235
|
+
return role.permissions
|
236
|
+
.remove(everyoneOverwrites?.deny ?? Permissions.defaultBit)
|
237
|
+
.add(everyoneOverwrites?.allow ?? Permissions.defaultBit)
|
238
|
+
.remove(roleOverwrites?.deny ?? Permissions.defaultBit)
|
239
|
+
.add(roleOverwrites?.allow ?? Permissions.defaultBit)
|
240
|
+
.freeze();
|
241
|
+
}
|
242
|
+
|
243
|
+
/**
|
244
|
+
* Locks in the permission overwrites from the parent channel.
|
245
|
+
* @returns {Promise<GuildChannel>}
|
246
|
+
*/
|
247
|
+
lockPermissions() {
|
248
|
+
if (!this.parent) return Promise.reject(new Error('GUILD_CHANNEL_ORPHAN'));
|
249
|
+
const permissionOverwrites = this.parent.permissionOverwrites.cache.map(overwrite => overwrite.toJSON());
|
250
|
+
return this.edit({ permissionOverwrites });
|
251
|
+
}
|
252
|
+
|
253
|
+
/**
|
254
|
+
* A collection of cached members of this channel, mapped by their ids.
|
255
|
+
* Members that can view this channel, if the channel is text-based.
|
256
|
+
* Members in the channel, if the channel is voice-based.
|
257
|
+
* @type {Collection<Snowflake, GuildMember>}
|
258
|
+
* @readonly
|
259
|
+
*/
|
260
|
+
get members() {
|
261
|
+
return this.guild.members.cache.filter(m => this.permissionsFor(m).has(Permissions.FLAGS.VIEW_CHANNEL, false));
|
262
|
+
}
|
263
|
+
|
264
|
+
/**
|
265
|
+
* Edits the channel.
|
266
|
+
* @param {ChannelData} data The new data for the channel
|
267
|
+
* @param {string} [reason] Reason for editing this channel
|
268
|
+
* @returns {Promise<GuildChannel>}
|
269
|
+
* @example
|
270
|
+
* // Edit a channel
|
271
|
+
* channel.edit({ name: 'new-channel' })
|
272
|
+
* .then(console.log)
|
273
|
+
* .catch(console.error);
|
274
|
+
*/
|
275
|
+
edit(data, reason) {
|
276
|
+
return this.guild.channels.edit(this, data, reason);
|
277
|
+
}
|
278
|
+
|
279
|
+
/**
|
280
|
+
* Sets a new name for the guild channel.
|
281
|
+
* @param {string} name The new name for the guild channel
|
282
|
+
* @param {string} [reason] Reason for changing the guild channel's name
|
283
|
+
* @returns {Promise<GuildChannel>}
|
284
|
+
* @example
|
285
|
+
* // Set a new channel name
|
286
|
+
* channel.setName('not_general')
|
287
|
+
* .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))
|
288
|
+
* .catch(console.error);
|
289
|
+
*/
|
290
|
+
setName(name, reason) {
|
291
|
+
return this.edit({ name }, reason);
|
292
|
+
}
|
293
|
+
|
294
|
+
/**
|
295
|
+
* Options used to set the parent of a channel.
|
296
|
+
* @typedef {Object} SetParentOptions
|
297
|
+
* @property {boolean} [lockPermissions=true] Whether to lock the permissions to what the parent's permissions are
|
298
|
+
* @property {string} [reason] The reason for modifying the parent of the channel
|
299
|
+
*/
|
300
|
+
|
301
|
+
/**
|
302
|
+
* Sets the parent of this channel.
|
303
|
+
* @param {?CategoryChannelResolvable} channel The category channel to set as the parent
|
304
|
+
* @param {SetParentOptions} [options={}] The options for setting the parent
|
305
|
+
* @returns {Promise<GuildChannel>}
|
306
|
+
* @example
|
307
|
+
* // Add a parent to a channel
|
308
|
+
* message.channel.setParent('355908108431917066', { lockPermissions: false })
|
309
|
+
* .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))
|
310
|
+
* .catch(console.error);
|
311
|
+
*/
|
312
|
+
setParent(channel, { lockPermissions = true, reason } = {}) {
|
313
|
+
return this.edit(
|
314
|
+
{
|
315
|
+
parent: channel ?? null,
|
316
|
+
lockPermissions,
|
317
|
+
},
|
318
|
+
reason,
|
319
|
+
);
|
320
|
+
}
|
321
|
+
|
322
|
+
/**
|
323
|
+
* Options used to set the position of a channel.
|
324
|
+
* @typedef {Object} SetChannelPositionOptions
|
325
|
+
* @property {boolean} [relative=false] Whether or not to change the position relative to its current value
|
326
|
+
* @property {string} [reason] The reason for changing the position
|
327
|
+
*/
|
328
|
+
|
329
|
+
/**
|
330
|
+
* Sets a new position for the guild channel.
|
331
|
+
* @param {number} position The new position for the guild channel
|
332
|
+
* @param {SetChannelPositionOptions} [options] Options for setting position
|
333
|
+
* @returns {Promise<GuildChannel>}
|
334
|
+
* @example
|
335
|
+
* // Set a new channel position
|
336
|
+
* channel.setPosition(2)
|
337
|
+
* .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))
|
338
|
+
* .catch(console.error);
|
339
|
+
*/
|
340
|
+
setPosition(position, options = {}) {
|
341
|
+
return this.guild.channels.setPosition(this, position, options);
|
342
|
+
}
|
343
|
+
|
344
|
+
/**
|
345
|
+
* Options used to clone a guild channel.
|
346
|
+
* @typedef {GuildChannelCreateOptions} GuildChannelCloneOptions
|
347
|
+
* @property {string} [name=this.name] Name of the new channel
|
348
|
+
*/
|
349
|
+
|
350
|
+
/**
|
351
|
+
* Clones this channel.
|
352
|
+
* @param {GuildChannelCloneOptions} [options] The options for cloning this channel
|
353
|
+
* @returns {Promise<GuildChannel>}
|
354
|
+
*/
|
355
|
+
clone(options = {}) {
|
356
|
+
return this.guild.channels.create(options.name ?? this.name, {
|
357
|
+
permissionOverwrites: this.permissionOverwrites.cache,
|
358
|
+
topic: this.topic,
|
359
|
+
type: this.type,
|
360
|
+
nsfw: this.nsfw,
|
361
|
+
parent: this.parent,
|
362
|
+
bitrate: this.bitrate,
|
363
|
+
userLimit: this.userLimit,
|
364
|
+
rateLimitPerUser: this.rateLimitPerUser,
|
365
|
+
position: this.rawPosition,
|
366
|
+
reason: null,
|
367
|
+
...options,
|
368
|
+
});
|
369
|
+
}
|
370
|
+
|
371
|
+
/**
|
372
|
+
* Checks if this channel has the same type, topic, position, name, overwrites, and id as another channel.
|
373
|
+
* In most cases, a simple `channel.id === channel2.id` will do, and is much faster too.
|
374
|
+
* @param {GuildChannel} channel Channel to compare with
|
375
|
+
* @returns {boolean}
|
376
|
+
*/
|
377
|
+
equals(channel) {
|
378
|
+
let equal =
|
379
|
+
channel &&
|
380
|
+
this.id === channel.id &&
|
381
|
+
this.type === channel.type &&
|
382
|
+
this.topic === channel.topic &&
|
383
|
+
this.position === channel.position &&
|
384
|
+
this.name === channel.name;
|
385
|
+
|
386
|
+
if (equal) {
|
387
|
+
if (this.permissionOverwrites && channel.permissionOverwrites) {
|
388
|
+
equal = this.permissionOverwrites.cache.equals(channel.permissionOverwrites.cache);
|
389
|
+
} else {
|
390
|
+
equal = !this.permissionOverwrites && !channel.permissionOverwrites;
|
391
|
+
}
|
392
|
+
}
|
393
|
+
|
394
|
+
return equal;
|
395
|
+
}
|
396
|
+
|
397
|
+
/**
|
398
|
+
* Whether the channel is deletable by the client user
|
399
|
+
* @type {boolean}
|
400
|
+
* @readonly
|
401
|
+
*/
|
402
|
+
get deletable() {
|
403
|
+
return this.manageable && this.guild.rulesChannelId !== this.id && this.guild.publicUpdatesChannelId !== this.id;
|
404
|
+
}
|
405
|
+
|
406
|
+
/**
|
407
|
+
* Whether the channel is manageable by the client user
|
408
|
+
* @type {boolean}
|
409
|
+
* @readonly
|
410
|
+
*/
|
411
|
+
get manageable() {
|
412
|
+
if (this.client.user.id === this.guild.ownerId) return true;
|
413
|
+
const permissions = this.permissionsFor(this.client.user);
|
414
|
+
if (!permissions) return false;
|
415
|
+
|
416
|
+
// This flag allows managing even if timed out
|
417
|
+
if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;
|
418
|
+
if (this.guild.members.me.communicationDisabledUntilTimestamp > Date.now()) return false;
|
419
|
+
|
420
|
+
const bitfield = VoiceBasedChannelTypes.includes(this.type)
|
421
|
+
? Permissions.FLAGS.MANAGE_CHANNELS | Permissions.FLAGS.CONNECT
|
422
|
+
: Permissions.FLAGS.VIEW_CHANNEL | Permissions.FLAGS.MANAGE_CHANNELS;
|
423
|
+
return permissions.has(bitfield, false);
|
424
|
+
}
|
425
|
+
|
426
|
+
/**
|
427
|
+
* Whether the channel is viewable by the client user
|
428
|
+
* @type {boolean}
|
429
|
+
* @readonly
|
430
|
+
*/
|
431
|
+
get viewable() {
|
432
|
+
if (this.client.user.id === this.guild.ownerId) return true;
|
433
|
+
const permissions = this.permissionsFor(this.client.user);
|
434
|
+
if (!permissions) return false;
|
435
|
+
return permissions.has(Permissions.FLAGS.VIEW_CHANNEL, false);
|
436
|
+
}
|
437
|
+
|
438
|
+
/**
|
439
|
+
* Deletes this channel.
|
440
|
+
* @param {string} [reason] Reason for deleting this channel
|
441
|
+
* @returns {Promise<GuildChannel>}
|
442
|
+
* @example
|
443
|
+
* // Delete the channel
|
444
|
+
* channel.delete('making room for new channels')
|
445
|
+
* .then(console.log)
|
446
|
+
* .catch(console.error);
|
447
|
+
*/
|
448
|
+
async delete(reason) {
|
449
|
+
await this.guild.channels.delete(this.id, reason);
|
450
|
+
return this;
|
451
|
+
}
|
452
|
+
}
|
453
|
+
|
454
|
+
module.exports = GuildChannel;
|