@velliajs/discord 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +133 -0
- package/package.json +82 -0
- package/src/client/BaseClient.js +83 -0
- package/src/client/Client.js +591 -0
- package/src/client/WebhookClient.js +103 -0
- package/src/client/actions/Action.js +119 -0
- package/src/client/actions/ActionsManager.js +79 -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 +23 -0
- package/src/client/actions/ChannelUpdate.js +33 -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 +44 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +19 -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 +31 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +29 -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 +19 -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 +101 -0
- package/src/client/actions/InviteCreate.js +28 -0
- package/src/client/actions/InviteDelete.js +30 -0
- package/src/client/actions/MessageCreate.js +37 -0
- package/src/client/actions/MessageDelete.js +32 -0
- package/src/client/actions/MessageDeleteBulk.js +47 -0
- package/src/client/actions/MessageReactionAdd.js +55 -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 +42 -0
- package/src/client/actions/StageInstanceCreate.js +28 -0
- package/src/client/actions/StageInstanceDelete.js +31 -0
- package/src/client/actions/StageInstanceUpdate.js +30 -0
- package/src/client/actions/ThreadCreate.js +24 -0
- package/src/client/actions/ThreadDelete.js +26 -0
- package/src/client/actions/ThreadListSync.js +60 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +47 -0
- package/src/client/actions/TypingStart.js +29 -0
- package/src/client/actions/UserUpdate.js +36 -0
- package/src/client/actions/VoiceStateUpdate.js +43 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +44 -0
- package/src/client/websocket/WebSocketManager.js +393 -0
- package/src/client/websocket/WebSocketShard.js +231 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -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/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_UPDATE.js +16 -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 +26 -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_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 +5 -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_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 +27 -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_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 +64 -0
- package/src/errors/DJSError.js +48 -0
- package/src/errors/ErrorCodes.js +319 -0
- package/src/errors/Messages.js +170 -0
- package/src/errors/index.js +5 -0
- package/src/index.js +213 -0
- package/src/managers/ApplicationCommandManager.js +263 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +434 -0
- package/src/managers/AutoModerationRuleManager.js +288 -0
- package/src/managers/BaseGuildEmojiManager.js +80 -0
- package/src/managers/BaseManager.js +19 -0
- package/src/managers/CachedManager.js +57 -0
- package/src/managers/CategoryChannelChildManager.js +77 -0
- package/src/managers/ChannelManager.js +128 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/GuildApplicationCommandManager.js +28 -0
- package/src/managers/GuildBanManager.js +204 -0
- package/src/managers/GuildChannelManager.js +494 -0
- package/src/managers/GuildEmojiManager.js +174 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildForumThreadManager.js +83 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +283 -0
- package/src/managers/GuildMemberManager.js +540 -0
- package/src/managers/GuildMemberRoleManager.js +204 -0
- package/src/managers/GuildScheduledEventManager.js +297 -0
- package/src/managers/GuildStickerManager.js +182 -0
- package/src/managers/GuildTextThreadManager.js +91 -0
- package/src/managers/MessageManager.js +259 -0
- package/src/managers/PermissionOverwriteManager.js +168 -0
- package/src/managers/PresenceManager.js +58 -0
- package/src/managers/ReactionManager.js +68 -0
- package/src/managers/ReactionUserManager.js +77 -0
- package/src/managers/RoleManager.js +360 -0
- package/src/managers/StageInstanceManager.js +154 -0
- package/src/managers/ThreadManager.js +204 -0
- package/src/managers/ThreadMemberManager.js +182 -0
- package/src/managers/UserManager.js +139 -0
- package/src/managers/VoiceStateManager.js +37 -0
- package/src/sharding/Shard.js +457 -0
- package/src/sharding/ShardClientUtil.js +285 -0
- package/src/sharding/ShardingManager.js +326 -0
- package/src/structures/ActionRow.js +46 -0
- package/src/structures/ActionRowBuilder.js +35 -0
- package/src/structures/AnonymousGuild.js +97 -0
- package/src/structures/ApplicationCommand.js +606 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +46 -0
- package/src/structures/Attachment.js +140 -0
- package/src/structures/AttachmentBuilder.js +116 -0
- package/src/structures/AutoModerationActionExecution.js +116 -0
- package/src/structures/AutoModerationRule.js +284 -0
- package/src/structures/AutocompleteInteraction.js +97 -0
- package/src/structures/Base.js +43 -0
- package/src/structures/BaseChannel.js +160 -0
- package/src/structures/BaseGuild.js +119 -0
- package/src/structures/BaseGuildEmoji.js +56 -0
- package/src/structures/BaseGuildTextChannel.js +186 -0
- package/src/structures/BaseGuildVoiceChannel.js +234 -0
- package/src/structures/BaseInteraction.js +344 -0
- package/src/structures/BaseSelectMenuComponent.js +56 -0
- package/src/structures/ButtonBuilder.js +44 -0
- package/src/structures/ButtonComponent.js +65 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/CategoryChannel.js +45 -0
- package/src/structures/ChannelSelectMenuBuilder.js +31 -0
- package/src/structures/ChannelSelectMenuComponent.js +20 -0
- package/src/structures/ChannelSelectMenuInteraction.js +33 -0
- package/src/structures/ChatInputCommandInteraction.js +41 -0
- package/src/structures/ClientApplication.js +193 -0
- package/src/structures/ClientPresence.js +82 -0
- package/src/structures/ClientUser.js +185 -0
- package/src/structures/CommandInteraction.js +224 -0
- package/src/structures/CommandInteractionOptionResolver.js +308 -0
- package/src/structures/Component.js +47 -0
- package/src/structures/ContextMenuCommandInteraction.js +64 -0
- package/src/structures/DMChannel.js +129 -0
- package/src/structures/DirectoryChannel.js +36 -0
- package/src/structures/Embed.js +220 -0
- package/src/structures/EmbedBuilder.js +41 -0
- package/src/structures/Emoji.js +108 -0
- package/src/structures/ForumChannel.js +264 -0
- package/src/structures/Guild.js +1361 -0
- package/src/structures/GuildAuditLogs.js +91 -0
- package/src/structures/GuildAuditLogsEntry.js +527 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildChannel.js +457 -0
- package/src/structures/GuildEmoji.js +148 -0
- package/src/structures/GuildMember.js +518 -0
- package/src/structures/GuildPreview.js +193 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +439 -0
- package/src/structures/GuildTemplate.js +241 -0
- package/src/structures/Integration.js +220 -0
- package/src/structures/IntegrationApplication.js +85 -0
- package/src/structures/InteractionCollector.js +263 -0
- package/src/structures/InteractionResponse.js +102 -0
- package/src/structures/InteractionWebhook.js +59 -0
- package/src/structures/Invite.js +322 -0
- package/src/structures/InviteGuild.js +22 -0
- package/src/structures/InviteStageInstance.js +87 -0
- package/src/structures/MentionableSelectMenuBuilder.js +32 -0
- package/src/structures/MentionableSelectMenuComponent.js +11 -0
- package/src/structures/MentionableSelectMenuInteraction.js +71 -0
- package/src/structures/Message.js +997 -0
- package/src/structures/MessageCollector.js +146 -0
- package/src/structures/MessageComponentInteraction.js +107 -0
- package/src/structures/MessageContextMenuCommandInteraction.js +20 -0
- package/src/structures/MessageMentions.js +297 -0
- package/src/structures/MessagePayload.js +299 -0
- package/src/structures/MessageReaction.js +142 -0
- package/src/structures/ModalBuilder.js +34 -0
- package/src/structures/ModalSubmitFields.js +55 -0
- package/src/structures/ModalSubmitInteraction.js +121 -0
- package/src/structures/NewsChannel.js +32 -0
- package/src/structures/OAuth2Guild.js +28 -0
- package/src/structures/PartialGroupDMChannel.js +60 -0
- package/src/structures/PermissionOverwrites.js +196 -0
- package/src/structures/Presence.js +372 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/Role.js +458 -0
- package/src/structures/RoleSelectMenuBuilder.js +31 -0
- package/src/structures/RoleSelectMenuComponent.js +11 -0
- package/src/structures/RoleSelectMenuInteraction.js +33 -0
- package/src/structures/SelectMenuBuilder.js +26 -0
- package/src/structures/SelectMenuComponent.js +26 -0
- package/src/structures/SelectMenuInteraction.js +26 -0
- package/src/structures/SelectMenuOptionBuilder.js +26 -0
- package/src/structures/StageChannel.js +112 -0
- package/src/structures/StageInstance.js +167 -0
- package/src/structures/Sticker.js +272 -0
- package/src/structures/StickerPack.js +95 -0
- package/src/structures/StringSelectMenuBuilder.js +79 -0
- package/src/structures/StringSelectMenuComponent.js +20 -0
- package/src/structures/StringSelectMenuInteraction.js +21 -0
- package/src/structures/StringSelectMenuOptionBuilder.js +49 -0
- package/src/structures/Team.js +117 -0
- package/src/structures/TeamMember.js +70 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextInputBuilder.js +31 -0
- package/src/structures/TextInputComponent.js +29 -0
- package/src/structures/ThreadChannel.js +606 -0
- package/src/structures/ThreadMember.js +113 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/User.js +331 -0
- package/src/structures/UserContextMenuCommandInteraction.js +29 -0
- package/src/structures/UserSelectMenuBuilder.js +31 -0
- package/src/structures/UserSelectMenuComponent.js +11 -0
- package/src/structures/UserSelectMenuInteraction.js +51 -0
- package/src/structures/VoiceChannel.js +96 -0
- package/src/structures/VoiceRegion.js +46 -0
- package/src/structures/VoiceState.js +303 -0
- package/src/structures/Webhook.js +481 -0
- package/src/structures/WelcomeChannel.js +60 -0
- package/src/structures/WelcomeScreen.js +49 -0
- package/src/structures/Widget.js +88 -0
- package/src/structures/WidgetMember.js +99 -0
- package/src/structures/interfaces/Application.js +108 -0
- package/src/structures/interfaces/Collector.js +335 -0
- package/src/structures/interfaces/InteractionResponses.js +320 -0
- package/src/structures/interfaces/TextBasedChannel.js +413 -0
- package/src/util/APITypes.js +456 -0
- package/src/util/ActivityFlagsBitField.js +26 -0
- package/src/util/ApplicationFlagsBitField.js +26 -0
- package/src/util/BitField.js +176 -0
- package/src/util/ChannelFlagsBitField.js +41 -0
- package/src/util/Channels.js +150 -0
- package/src/util/Colors.js +73 -0
- package/src/util/Components.js +152 -0
- package/src/util/Constants.js +230 -0
- package/src/util/DataResolver.js +140 -0
- package/src/util/Enums.js +13 -0
- package/src/util/Events.js +160 -0
- package/src/util/Formatters.js +413 -0
- package/src/util/GuildMemberFlagsBitField.js +41 -0
- package/src/util/IntentsBitField.js +34 -0
- package/src/util/LimitedCollection.js +68 -0
- package/src/util/MessageFlagsBitField.js +32 -0
- package/src/util/Options.js +216 -0
- package/src/util/Partials.js +44 -0
- package/src/util/PermissionsBitField.js +104 -0
- package/src/util/ShardEvents.js +27 -0
- package/src/util/Status.js +33 -0
- package/src/util/Sweepers.js +467 -0
- package/src/util/SystemChannelFlagsBitField.js +43 -0
- package/src/util/ThreadMemberFlagsBitField.js +31 -0
- package/src/util/Transformers.js +36 -0
- package/src/util/UserFlagsBitField.js +32 -0
- package/src/util/Util.js +394 -0
- package/src/util/WebSocketShardEvents.js +25 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Base = require('./Base');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a typing state for a user in a channel.
|
|
7
|
+
* @extends {Base}
|
|
8
|
+
*/
|
|
9
|
+
class Typing extends Base {
|
|
10
|
+
constructor(channel, user, data) {
|
|
11
|
+
super(channel.client);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The channel the status is from
|
|
15
|
+
* @type {TextBasedChannels}
|
|
16
|
+
*/
|
|
17
|
+
this.channel = channel;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The user who is typing
|
|
21
|
+
* @type {User}
|
|
22
|
+
*/
|
|
23
|
+
this.user = user;
|
|
24
|
+
|
|
25
|
+
this._patch(data);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_patch(data) {
|
|
29
|
+
if ('timestamp' in data) {
|
|
30
|
+
/**
|
|
31
|
+
* The UNIX timestamp in milliseconds the user started typing at
|
|
32
|
+
* @type {number}
|
|
33
|
+
*/
|
|
34
|
+
this.startedTimestamp = data.timestamp * 1_000;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Indicates whether the status is received from a guild.
|
|
40
|
+
* @returns {boolean}
|
|
41
|
+
*/
|
|
42
|
+
inGuild() {
|
|
43
|
+
return this.guild !== null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The time the user started typing at
|
|
48
|
+
* @type {Date}
|
|
49
|
+
* @readonly
|
|
50
|
+
*/
|
|
51
|
+
get startedAt() {
|
|
52
|
+
return new Date(this.startedTimestamp);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The guild the status is from
|
|
57
|
+
* @type {?Guild}
|
|
58
|
+
* @readonly
|
|
59
|
+
*/
|
|
60
|
+
get guild() {
|
|
61
|
+
return this.channel.guild ?? null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The member who is typing
|
|
66
|
+
* @type {?GuildMember}
|
|
67
|
+
* @readonly
|
|
68
|
+
*/
|
|
69
|
+
get member() {
|
|
70
|
+
return this.guild?.members.resolve(this.user) ?? null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
module.exports = Typing;
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { userMention } = require('@discordjs/builders');
|
|
4
|
+
const { DiscordSnowflake } = require('@sapphire/snowflake');
|
|
5
|
+
const Base = require('./Base');
|
|
6
|
+
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
|
7
|
+
const UserFlagsBitField = require('../util/UserFlagsBitField');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Represents a user on Discord.
|
|
11
|
+
* @implements {TextBasedChannel}
|
|
12
|
+
* @extends {Base}
|
|
13
|
+
*/
|
|
14
|
+
class User extends Base {
|
|
15
|
+
constructor(client, data) {
|
|
16
|
+
super(client);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The user's id
|
|
20
|
+
* @type {Snowflake}
|
|
21
|
+
*/
|
|
22
|
+
this.id = data.id;
|
|
23
|
+
|
|
24
|
+
this.bot = null;
|
|
25
|
+
|
|
26
|
+
this.system = null;
|
|
27
|
+
|
|
28
|
+
this.flags = null;
|
|
29
|
+
|
|
30
|
+
this._patch(data);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
_patch(data) {
|
|
34
|
+
if ('username' in data) {
|
|
35
|
+
/**
|
|
36
|
+
* The username of the user
|
|
37
|
+
* @type {?string}
|
|
38
|
+
*/
|
|
39
|
+
this.username = data.username;
|
|
40
|
+
} else {
|
|
41
|
+
this.username ??= null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if ('bot' in data) {
|
|
45
|
+
/**
|
|
46
|
+
* Whether or not the user is a bot
|
|
47
|
+
* @type {?boolean}
|
|
48
|
+
*/
|
|
49
|
+
this.bot = Boolean(data.bot);
|
|
50
|
+
} else if (!this.partial && typeof this.bot !== 'boolean') {
|
|
51
|
+
this.bot = false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if ('discriminator' in data) {
|
|
55
|
+
/**
|
|
56
|
+
* A discriminator based on username for the user
|
|
57
|
+
* @type {?string}
|
|
58
|
+
*/
|
|
59
|
+
this.discriminator = data.discriminator;
|
|
60
|
+
} else {
|
|
61
|
+
this.discriminator ??= null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if ('avatar' in data) {
|
|
65
|
+
/**
|
|
66
|
+
* The user avatar's hash
|
|
67
|
+
* @type {?string}
|
|
68
|
+
*/
|
|
69
|
+
this.avatar = data.avatar;
|
|
70
|
+
} else {
|
|
71
|
+
this.avatar ??= null;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if ('banner' in data) {
|
|
75
|
+
/**
|
|
76
|
+
* The user banner's hash
|
|
77
|
+
* <info>The user must be force fetched for this property to be present or be updated</info>
|
|
78
|
+
* @type {?string}
|
|
79
|
+
*/
|
|
80
|
+
this.banner = data.banner;
|
|
81
|
+
} else if (this.banner !== null) {
|
|
82
|
+
this.banner ??= undefined;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if ('accent_color' in data) {
|
|
86
|
+
/**
|
|
87
|
+
* The base 10 accent color of the user's banner
|
|
88
|
+
* <info>The user must be force fetched for this property to be present or be updated</info>
|
|
89
|
+
* @type {?number}
|
|
90
|
+
*/
|
|
91
|
+
this.accentColor = data.accent_color;
|
|
92
|
+
} else if (this.accentColor !== null) {
|
|
93
|
+
this.accentColor ??= undefined;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if ('system' in data) {
|
|
97
|
+
/**
|
|
98
|
+
* Whether the user is an Official Discord System user (part of the urgent message system)
|
|
99
|
+
* @type {?boolean}
|
|
100
|
+
*/
|
|
101
|
+
this.system = Boolean(data.system);
|
|
102
|
+
} else if (!this.partial && typeof this.system !== 'boolean') {
|
|
103
|
+
this.system = false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if ('public_flags' in data) {
|
|
107
|
+
/**
|
|
108
|
+
* The flags for this user
|
|
109
|
+
* @type {?UserFlagsBitField}
|
|
110
|
+
*/
|
|
111
|
+
this.flags = new UserFlagsBitField(data.public_flags);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Whether this User is a partial
|
|
117
|
+
* @type {boolean}
|
|
118
|
+
* @readonly
|
|
119
|
+
*/
|
|
120
|
+
get partial() {
|
|
121
|
+
return typeof this.username !== 'string';
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* The timestamp the user was created at
|
|
126
|
+
* @type {number}
|
|
127
|
+
* @readonly
|
|
128
|
+
*/
|
|
129
|
+
get createdTimestamp() {
|
|
130
|
+
return DiscordSnowflake.timestampFrom(this.id);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* The time the user was created at
|
|
135
|
+
* @type {Date}
|
|
136
|
+
* @readonly
|
|
137
|
+
*/
|
|
138
|
+
get createdAt() {
|
|
139
|
+
return new Date(this.createdTimestamp);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* A link to the user's avatar.
|
|
144
|
+
* @param {ImageURLOptions} [options={}] Options for the image URL
|
|
145
|
+
* @returns {?string}
|
|
146
|
+
*/
|
|
147
|
+
avatarURL(options = {}) {
|
|
148
|
+
return this.avatar && this.client.rest.cdn.avatar(this.id, this.avatar, options);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* A link to the user's default avatar
|
|
153
|
+
* @type {string}
|
|
154
|
+
* @readonly
|
|
155
|
+
*/
|
|
156
|
+
get defaultAvatarURL() {
|
|
157
|
+
return this.client.rest.cdn.defaultAvatar(this.discriminator % 5);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* A link to the user's avatar if they have one.
|
|
162
|
+
* Otherwise a link to their default avatar will be returned.
|
|
163
|
+
* @param {ImageURLOptions} [options={}] Options for the Image URL
|
|
164
|
+
* @returns {string}
|
|
165
|
+
*/
|
|
166
|
+
displayAvatarURL(options) {
|
|
167
|
+
return this.avatarURL(options) ?? this.defaultAvatarURL;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* The hexadecimal version of the user accent color, with a leading hash
|
|
172
|
+
* <info>The user must be force fetched for this property to be present</info>
|
|
173
|
+
* @type {?string}
|
|
174
|
+
* @readonly
|
|
175
|
+
*/
|
|
176
|
+
get hexAccentColor() {
|
|
177
|
+
if (typeof this.accentColor !== 'number') return this.accentColor;
|
|
178
|
+
return `#${this.accentColor.toString(16).padStart(6, '0')}`;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* A link to the user's banner. See {@link User#banner} for more info
|
|
183
|
+
* @param {ImageURLOptions} [options={}] Options for the image URL
|
|
184
|
+
* @returns {?string}
|
|
185
|
+
*/
|
|
186
|
+
bannerURL(options = {}) {
|
|
187
|
+
return this.banner && this.client.rest.cdn.banner(this.id, this.banner, options);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* The Discord "tag" (e.g. `hydrabolt#0001`) for this user
|
|
192
|
+
* @type {?string}
|
|
193
|
+
* @readonly
|
|
194
|
+
*/
|
|
195
|
+
get tag() {
|
|
196
|
+
return typeof this.username === 'string' ? `${this.username}#${this.discriminator}` : null;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* The DM between the client's user and this user
|
|
201
|
+
* @type {?DMChannel}
|
|
202
|
+
* @readonly
|
|
203
|
+
*/
|
|
204
|
+
get dmChannel() {
|
|
205
|
+
return this.client.users.dmChannel(this.id);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Creates a DM channel between the client and the user.
|
|
210
|
+
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
|
211
|
+
* @returns {Promise<DMChannel>}
|
|
212
|
+
*/
|
|
213
|
+
createDM(force = false) {
|
|
214
|
+
return this.client.users.createDM(this.id, { force });
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Deletes a DM channel (if one exists) between the client and the user. Resolves with the channel if successful.
|
|
219
|
+
* @returns {Promise<DMChannel>}
|
|
220
|
+
*/
|
|
221
|
+
deleteDM() {
|
|
222
|
+
return this.client.users.deleteDM(this.id);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Checks if the user is equal to another.
|
|
227
|
+
* It compares id, username, discriminator, avatar, banner, accent color, and bot flags.
|
|
228
|
+
* It is recommended to compare equality by using `user.id === user2.id` unless you want to compare all properties.
|
|
229
|
+
* @param {User} user User to compare with
|
|
230
|
+
* @returns {boolean}
|
|
231
|
+
*/
|
|
232
|
+
equals(user) {
|
|
233
|
+
return (
|
|
234
|
+
user &&
|
|
235
|
+
this.id === user.id &&
|
|
236
|
+
this.username === user.username &&
|
|
237
|
+
this.discriminator === user.discriminator &&
|
|
238
|
+
this.avatar === user.avatar &&
|
|
239
|
+
this.flags?.bitfield === user.flags?.bitfield &&
|
|
240
|
+
this.banner === user.banner &&
|
|
241
|
+
this.accentColor === user.accentColor
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Compares the user with an API user object
|
|
247
|
+
* @param {APIUser} user The API user object to compare
|
|
248
|
+
* @returns {boolean}
|
|
249
|
+
* @private
|
|
250
|
+
*/
|
|
251
|
+
_equals(user) {
|
|
252
|
+
return (
|
|
253
|
+
user &&
|
|
254
|
+
this.id === user.id &&
|
|
255
|
+
this.username === user.username &&
|
|
256
|
+
this.discriminator === user.discriminator &&
|
|
257
|
+
this.avatar === user.avatar &&
|
|
258
|
+
this.flags?.bitfield === user.public_flags &&
|
|
259
|
+
('banner' in user ? this.banner === user.banner : true) &&
|
|
260
|
+
('accent_color' in user ? this.accentColor === user.accent_color : true)
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Fetches this user's flags.
|
|
266
|
+
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
|
267
|
+
* @returns {Promise<UserFlagsBitField>}
|
|
268
|
+
*/
|
|
269
|
+
fetchFlags(force = false) {
|
|
270
|
+
return this.client.users.fetchFlags(this.id, { force });
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Fetches this user.
|
|
275
|
+
* @param {boolean} [force=true] Whether to skip the cache check and request the API
|
|
276
|
+
* @returns {Promise<User>}
|
|
277
|
+
*/
|
|
278
|
+
fetch(force = true) {
|
|
279
|
+
return this.client.users.fetch(this.id, { force });
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* When concatenated with a string, this automatically returns the user's mention instead of the User object.
|
|
284
|
+
* @returns {string}
|
|
285
|
+
* @example
|
|
286
|
+
* // Logs: Hello from <@123456789012345678>!
|
|
287
|
+
* console.log(`Hello from ${user}!`);
|
|
288
|
+
*/
|
|
289
|
+
toString() {
|
|
290
|
+
return userMention(this.id);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
toJSON(...props) {
|
|
294
|
+
const json = super.toJSON(
|
|
295
|
+
{
|
|
296
|
+
createdTimestamp: true,
|
|
297
|
+
defaultAvatarURL: true,
|
|
298
|
+
hexAccentColor: true,
|
|
299
|
+
tag: true,
|
|
300
|
+
},
|
|
301
|
+
...props,
|
|
302
|
+
);
|
|
303
|
+
json.avatarURL = this.avatarURL();
|
|
304
|
+
json.displayAvatarURL = this.displayAvatarURL();
|
|
305
|
+
json.bannerURL = this.banner ? this.bannerURL() : this.banner;
|
|
306
|
+
return json;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Sends a message to this user.
|
|
312
|
+
* @method send
|
|
313
|
+
* @memberof User
|
|
314
|
+
* @instance
|
|
315
|
+
* @param {string|MessagePayload|MessageCreateOptions} options The options to provide
|
|
316
|
+
* @returns {Promise<Message>}
|
|
317
|
+
* @example
|
|
318
|
+
* // Send a direct message
|
|
319
|
+
* user.send('Hello!')
|
|
320
|
+
* .then(message => console.log(`Sent message: ${message.content} to ${user.tag}`))
|
|
321
|
+
* .catch(console.error);
|
|
322
|
+
*/
|
|
323
|
+
|
|
324
|
+
TextBasedChannel.applyToClass(User);
|
|
325
|
+
|
|
326
|
+
module.exports = User;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* @external APIUser
|
|
330
|
+
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
|
|
331
|
+
*/
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const ContextMenuCommandInteraction = require('./ContextMenuCommandInteraction');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a user context menu interaction.
|
|
7
|
+
* @extends {ContextMenuCommandInteraction}
|
|
8
|
+
*/
|
|
9
|
+
class UserContextMenuCommandInteraction extends ContextMenuCommandInteraction {
|
|
10
|
+
/**
|
|
11
|
+
* The target user from this interaction
|
|
12
|
+
* @type {User}
|
|
13
|
+
* @readonly
|
|
14
|
+
*/
|
|
15
|
+
get targetUser() {
|
|
16
|
+
return this.options.getUser('user');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The target member from this interaction
|
|
21
|
+
* @type {?(GuildMember|APIGuildMember)}
|
|
22
|
+
* @readonly
|
|
23
|
+
*/
|
|
24
|
+
get targetMember() {
|
|
25
|
+
return this.options.getMember('user');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = UserContextMenuCommandInteraction;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { UserSelectMenuBuilder: BuildersUserSelectMenu } = require('@discordjs/builders');
|
|
4
|
+
const { isJSONEncodable } = require('@discordjs/util');
|
|
5
|
+
const { toSnakeCase } = require('../util/Transformers');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Class used to build select menu components to be sent through the API
|
|
9
|
+
* @extends {BuildersUserSelectMenu}
|
|
10
|
+
*/
|
|
11
|
+
class UserSelectMenuBuilder extends BuildersUserSelectMenu {
|
|
12
|
+
constructor(data = {}) {
|
|
13
|
+
super(toSnakeCase(data));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new select menu builder from JSON data
|
|
18
|
+
* @param {UserSelectMenuBuilder|UserSelectMenuComponent|APIUserSelectComponent} other The other data
|
|
19
|
+
* @returns {UserSelectMenuBuilder}
|
|
20
|
+
*/
|
|
21
|
+
static from(other) {
|
|
22
|
+
return new this(isJSONEncodable(other) ? other.toJSON() : other);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = UserSelectMenuBuilder;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @external BuildersUserSelectMenu
|
|
30
|
+
* @see {@link https://discord.js.org/docs/packages/rest/stable/UserSelectMenuBuilder:Class}
|
|
31
|
+
*/
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BaseSelectMenuComponent = require('./BaseSelectMenuComponent');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a user select menu component
|
|
7
|
+
* @extends {BaseSelectMenuComponent}
|
|
8
|
+
*/
|
|
9
|
+
class UserSelectMenuComponent extends BaseSelectMenuComponent {}
|
|
10
|
+
|
|
11
|
+
module.exports = UserSelectMenuComponent;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const MessageComponentInteraction = require('./MessageComponentInteraction');
|
|
5
|
+
const Events = require('../util/Events');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Represents a {@link ComponentType.UserSelect} select menu interaction.
|
|
9
|
+
* @extends {MessageComponentInteraction}
|
|
10
|
+
*/
|
|
11
|
+
class UserSelectMenuInteraction extends MessageComponentInteraction {
|
|
12
|
+
constructor(client, data) {
|
|
13
|
+
super(client, data);
|
|
14
|
+
const { resolved, values } = data.data;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* An array of the selected user ids
|
|
18
|
+
* @type {Snowflake[]}
|
|
19
|
+
*/
|
|
20
|
+
this.values = values ?? [];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Collection of the selected users
|
|
24
|
+
* @type {Collection<Snowflake, User>}
|
|
25
|
+
*/
|
|
26
|
+
this.users = new Collection();
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Collection of the selected members
|
|
30
|
+
* @type {Collection<Snowflake, GuildMember|APIGuildMember>}
|
|
31
|
+
*/
|
|
32
|
+
this.members = new Collection();
|
|
33
|
+
|
|
34
|
+
for (const user of Object.values(resolved?.users ?? {})) {
|
|
35
|
+
this.users.set(user.id, this.client.users._add(user));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
for (const [id, member] of Object.entries(resolved?.members ?? {})) {
|
|
39
|
+
const user = resolved.users[id];
|
|
40
|
+
|
|
41
|
+
if (!user) {
|
|
42
|
+
this.client.emit(Events.Debug, `[UserSelectMenuInteraction] Received a member without a user, skipping ${id}`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
module.exports = UserSelectMenuInteraction;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { PermissionFlagsBits } = require('discord-api-types/v10');
|
|
4
|
+
const BaseGuildVoiceChannel = require('./BaseGuildVoiceChannel');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents a guild voice channel on Discord.
|
|
8
|
+
* @extends {BaseGuildVoiceChannel}
|
|
9
|
+
*/
|
|
10
|
+
class VoiceChannel extends BaseGuildVoiceChannel {
|
|
11
|
+
/**
|
|
12
|
+
* Whether the channel is joinable by the client user
|
|
13
|
+
* @type {boolean}
|
|
14
|
+
* @readonly
|
|
15
|
+
*/
|
|
16
|
+
get joinable() {
|
|
17
|
+
if (!super.joinable) return false;
|
|
18
|
+
if (this.full && !this.permissionsFor(this.client.user).has(PermissionFlagsBits.MoveMembers, false)) return false;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Checks if the client has permission to send audio to the voice channel
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
*/
|
|
27
|
+
get speakable() {
|
|
28
|
+
const permissions = this.permissionsFor(this.client.user);
|
|
29
|
+
if (!permissions) return false;
|
|
30
|
+
// This flag allows speaking even if timed out
|
|
31
|
+
if (permissions.has(PermissionFlagsBits.Administrator, false)) return true;
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
this.guild.members.me.communicationDisabledUntilTimestamp < Date.now() &&
|
|
35
|
+
permissions.has(PermissionFlagsBits.Speak, false)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Sets the bitrate of the channel.
|
|
42
|
+
* @method setBitrate
|
|
43
|
+
* @memberof VoiceChannel
|
|
44
|
+
* @instance
|
|
45
|
+
* @param {number} bitrate The new bitrate
|
|
46
|
+
* @param {string} [reason] Reason for changing the channel's bitrate
|
|
47
|
+
* @returns {Promise<VoiceChannel>}
|
|
48
|
+
* @example
|
|
49
|
+
* // Set the bitrate of a voice channel
|
|
50
|
+
* voiceChannel.setBitrate(48_000)
|
|
51
|
+
* .then(channel => console.log(`Set bitrate to ${channel.bitrate}bps for ${channel.name}`))
|
|
52
|
+
* .catch(console.error);
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Sets the RTC region of the channel.
|
|
57
|
+
* @method setRTCRegion
|
|
58
|
+
* @memberof VoiceChannel
|
|
59
|
+
* @instance
|
|
60
|
+
* @param {?string} rtcRegion The new region of the channel. Set to `null` to remove a specific region for the channel
|
|
61
|
+
* @param {string} [reason] The reason for modifying this region.
|
|
62
|
+
* @returns {Promise<VoiceChannel>}
|
|
63
|
+
* @example
|
|
64
|
+
* // Set the RTC region to sydney
|
|
65
|
+
* voiceChannel.setRTCRegion('sydney');
|
|
66
|
+
* @example
|
|
67
|
+
* // Remove a fixed region for this channel - let Discord decide automatically
|
|
68
|
+
* voiceChannel.setRTCRegion(null, 'We want to let Discord decide.');
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Sets the user limit of the channel.
|
|
73
|
+
* @method setUserLimit
|
|
74
|
+
* @memberof VoiceChannel
|
|
75
|
+
* @instance
|
|
76
|
+
* @param {number} userLimit The new user limit
|
|
77
|
+
* @param {string} [reason] Reason for changing the user limit
|
|
78
|
+
* @returns {Promise<VoiceChannel>}
|
|
79
|
+
* @example
|
|
80
|
+
* // Set the user limit of a voice channel
|
|
81
|
+
* voiceChannel.setUserLimit(42)
|
|
82
|
+
* .then(channel => console.log(`Set user limit to ${channel.userLimit} for ${channel.name}`))
|
|
83
|
+
* .catch(console.error);
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Sets the camera video quality mode of the channel.
|
|
88
|
+
* @method setVideoQualityMode
|
|
89
|
+
* @memberof VoiceChannel
|
|
90
|
+
* @instance
|
|
91
|
+
* @param {VideoQualityMode} videoQualityMode The new camera video quality mode.
|
|
92
|
+
* @param {string} [reason] Reason for changing the camera video quality mode.
|
|
93
|
+
* @returns {Promise<VoiceChannel>}
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
module.exports = VoiceChannel;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { flatten } = require('../util/Util');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a Discord voice region for guilds.
|
|
7
|
+
*/
|
|
8
|
+
class VoiceRegion {
|
|
9
|
+
constructor(data) {
|
|
10
|
+
/**
|
|
11
|
+
* The region's id
|
|
12
|
+
* @type {string}
|
|
13
|
+
*/
|
|
14
|
+
this.id = data.id;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Name of the region
|
|
18
|
+
* @type {string}
|
|
19
|
+
*/
|
|
20
|
+
this.name = data.name;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Whether the region is deprecated
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
*/
|
|
26
|
+
this.deprecated = data.deprecated;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Whether the region is optimal
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
*/
|
|
32
|
+
this.optimal = data.optimal;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Whether the region is custom
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
*/
|
|
38
|
+
this.custom = data.custom;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
toJSON() {
|
|
42
|
+
return flatten(this);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
module.exports = VoiceRegion;
|