@velliajs/discord 1.0.2 → 1.0.4
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/README.md +4 -11
- package/package.json +3 -3
- package/src/client/BaseClient.js +7 -28
- package/src/client/Client.js +116 -283
- package/src/client/WebhookClient.js +17 -59
- package/src/client/actions/Action.js +0 -10
- package/src/client/actions/ActionsManager.js +3 -3
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +2 -15
- package/src/client/actions/AutoModerationActionExecution.js +1 -6
- package/src/client/actions/AutoModerationRuleCreate.js +1 -6
- package/src/client/actions/AutoModerationRuleDelete.js +1 -6
- package/src/client/actions/AutoModerationRuleUpdate.js +1 -7
- package/src/client/actions/ChannelCreate.js +1 -5
- package/src/client/actions/ChannelDelete.js +1 -5
- package/src/client/actions/GuildAuditLogEntryCreate.js +1 -6
- package/src/client/actions/GuildBanAdd.js +1 -5
- package/src/client/actions/GuildBanRemove.js +1 -5
- package/src/client/actions/GuildDelete.js +6 -14
- package/src/client/actions/GuildEmojiCreate.js +1 -5
- package/src/client/actions/GuildEmojiDelete.js +1 -5
- package/src/client/actions/GuildEmojiUpdate.js +1 -6
- package/src/client/actions/GuildEmojisUpdate.js +4 -4
- package/src/client/actions/GuildIntegrationsUpdate.js +1 -5
- package/src/client/actions/GuildMemberRemove.js +1 -5
- package/src/client/actions/GuildMemberUpdate.js +2 -11
- package/src/client/actions/GuildRoleCreate.js +1 -5
- package/src/client/actions/GuildRoleDelete.js +1 -5
- package/src/client/actions/GuildRoleUpdate.js +1 -6
- package/src/client/actions/GuildScheduledEventCreate.js +1 -5
- package/src/client/actions/GuildScheduledEventDelete.js +1 -5
- package/src/client/actions/GuildScheduledEventUpdate.js +1 -6
- package/src/client/actions/GuildScheduledEventUserAdd.js +1 -6
- package/src/client/actions/GuildScheduledEventUserRemove.js +1 -6
- package/src/client/actions/GuildStickerCreate.js +1 -5
- package/src/client/actions/GuildStickerDelete.js +1 -5
- package/src/client/actions/GuildStickerUpdate.js +1 -6
- package/src/client/actions/GuildStickersUpdate.js +4 -4
- package/src/client/actions/GuildUpdate.js +1 -6
- package/src/client/actions/InteractionCreate.js +3 -7
- package/src/client/actions/InviteCreate.js +1 -7
- package/src/client/actions/InviteDelete.js +1 -7
- package/src/client/actions/MessageCreate.js +1 -5
- package/src/client/actions/MessageDelete.js +1 -5
- package/src/client/actions/MessageDeleteBulk.js +1 -6
- package/src/client/actions/MessageReactionAdd.js +5 -18
- package/src/client/actions/MessageReactionRemove.js +5 -16
- package/src/client/actions/MessageReactionRemoveAll.js +4 -9
- package/src/client/actions/MessageReactionRemoveEmoji.js +1 -5
- package/src/client/actions/PresenceUpdate.js +1 -6
- package/src/client/actions/StageInstanceCreate.js +1 -5
- package/src/client/actions/StageInstanceDelete.js +1 -5
- package/src/client/actions/StageInstanceUpdate.js +1 -6
- package/src/client/actions/ThreadCreate.js +1 -6
- package/src/client/actions/ThreadDelete.js +1 -5
- package/src/client/actions/ThreadListSync.js +2 -7
- package/src/client/actions/ThreadMemberUpdate.js +2 -7
- package/src/client/actions/ThreadMembersUpdate.js +2 -9
- package/src/client/actions/TypingStart.js +1 -5
- package/src/client/actions/UserUpdate.js +1 -8
- package/src/client/actions/VoiceStateUpdate.js +4 -9
- package/src/client/actions/WebhooksUpdate.js +1 -6
- package/src/client/voice/ClientVoiceManager.js +3 -13
- package/src/client/websocket/WebSocketManager.js +25 -117
- package/src/client/websocket/WebSocketShard.js +29 -116
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +2 -8
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +1 -6
- package/src/client/websocket/handlers/GUILD_CREATE.js +3 -7
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +2 -16
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +1 -5
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +1 -6
- package/src/client/websocket/handlers/RESUMED.js +1 -6
- package/src/client/websocket/handlers/THREAD_UPDATE.js +1 -6
- package/src/errors/DJSError.js +3 -14
- package/src/errors/ErrorCodes.js +2 -164
- package/src/index.js +6 -6
- package/src/managers/ApplicationCommandManager.js +14 -130
- package/src/managers/ApplicationCommandPermissionsManager.js +31 -202
- package/src/managers/AutoModerationRuleManager.js +17 -145
- package/src/managers/BaseGuildEmojiManager.js +7 -38
- package/src/managers/BaseManager.js +2 -10
- package/src/managers/CachedManager.js +3 -17
- package/src/managers/CategoryChannelChildManager.js +6 -48
- package/src/managers/ChannelManager.js +11 -52
- package/src/managers/DataManager.js +5 -27
- package/src/managers/GuildApplicationCommandManager.js +3 -12
- package/src/managers/GuildBanManager.js +16 -105
- package/src/managers/GuildChannelManager.js +31 -226
- package/src/managers/GuildEmojiManager.js +9 -65
- package/src/managers/GuildEmojiRoleManager.js +8 -47
- package/src/managers/GuildForumThreadManager.js +5 -39
- package/src/managers/GuildInviteManager.js +18 -117
- package/src/managers/GuildManager.js +14 -115
- package/src/managers/GuildMemberManager.js +38 -256
- package/src/managers/GuildMemberRoleManager.js +13 -76
- package/src/managers/GuildScheduledEventManager.js +25 -128
- package/src/managers/GuildStickerManager.js +16 -96
- package/src/managers/GuildTextThreadManager.js +4 -47
- package/src/managers/MessageManager.js +23 -137
- package/src/managers/PermissionOverwriteManager.js +10 -78
- package/src/managers/PresenceManager.js +6 -27
- package/src/managers/ReactionManager.js +7 -40
- package/src/managers/ReactionUserManager.js +6 -29
- package/src/managers/RoleManager.js +29 -177
- package/src/managers/StageInstanceManager.js +14 -77
- package/src/managers/ThreadManager.js +23 -113
- package/src/managers/ThreadMemberManager.js +20 -89
- package/src/managers/UserManager.js +13 -65
- package/src/managers/VoiceStateManager.js +3 -13
- package/src/sharding/Shard.js +42 -158
- package/src/sharding/ShardClientUtil.js +17 -101
- package/src/sharding/ShardingManager.js +34 -151
- package/src/structures/ActionRow.js +4 -21
- package/src/structures/ActionRowBuilder.js +3 -13
- package/src/structures/AnonymousGuild.js +10 -43
- package/src/structures/ApplicationCommand.js +54 -308
- package/src/structures/ApplicationRoleConnectionMetadata.js +7 -27
- package/src/structures/Attachment.js +16 -65
- package/src/structures/AttachmentBuilder.js +13 -58
- package/src/structures/AutoModerationActionExecution.js +16 -69
- package/src/structures/AutoModerationRule.js +32 -164
- package/src/structures/AutocompleteInteraction.js +10 -52
- package/src/structures/Base.js +2 -10
- package/src/structures/BaseChannel.js +16 -80
- package/src/structures/BaseGuild.js +13 -59
- package/src/structures/BaseGuildEmoji.js +5 -21
- package/src/structures/BaseGuildTextChannel.js +19 -100
- package/src/structures/BaseGuildVoiceChannel.js +21 -110
- package/src/structures/BaseInteraction.js +40 -196
- package/src/structures/BaseSelectMenuComponent.js +6 -29
- package/src/structures/ButtonBuilder.js +4 -18
- package/src/structures/ButtonComponent.js +7 -34
- package/src/structures/ButtonInteraction.js +1 -4
- package/src/structures/CategoryChannel.js +5 -30
- package/src/structures/ChannelSelectMenuBuilder.js +3 -13
- package/src/structures/ChannelSelectMenuComponent.js +2 -9
- package/src/structures/ChannelSelectMenuInteraction.js +3 -12
- package/src/structures/ChatInputCommandInteraction.js +3 -13
- package/src/structures/ClientApplication.js +20 -83
- package/src/structures/ClientPresence.js +5 -20
- package/src/structures/ClientUser.js +21 -118
- package/src/structures/CommandInteraction.js +21 -96
- package/src/structures/CommandInteractionOptionResolver.js +26 -147
- package/src/structures/Component.js +5 -21
- package/src/structures/ContextMenuCommandInteraction.js +4 -18
- package/src/structures/DMChannel.js +17 -52
- package/src/structures/DirectoryChannel.js +4 -16
- package/src/structures/Embed.js +21 -107
- package/src/structures/EmbedBuilder.js +4 -18
- package/src/structures/Emoji.js +12 -60
- package/src/structures/ForumChannel.js +30 -140
- package/src/structures/Guild.js +117 -697
- package/src/structures/GuildAuditLogs.js +7 -32
- package/src/structures/GuildAuditLogsEntry.js +27 -135
- package/src/structures/GuildBan.js +6 -26
- package/src/structures/GuildChannel.js +36 -188
- package/src/structures/GuildEmoji.js +13 -67
- package/src/structures/GuildMember.js +47 -270
- package/src/structures/GuildPreview.js +19 -84
- package/src/structures/GuildPreviewEmoji.js +3 -13
- package/src/structures/GuildScheduledEvent.js +46 -250
- package/src/structures/GuildTemplate.js +24 -108
- package/src/structures/Integration.js +25 -103
- package/src/structures/IntegrationApplication.js +8 -32
- package/src/structures/InteractionCollector.js +22 -113
- package/src/structures/InteractionResponse.js +11 -46
- package/src/structures/InteractionWebhook.js +8 -33
- package/src/structures/Invite.js +27 -131
- package/src/structures/InviteGuild.js +2 -8
- package/src/structures/InviteStageInstance.js +9 -39
- package/src/structures/MentionableSelectMenuBuilder.js +3 -14
- package/src/structures/MentionableSelectMenuComponent.js +1 -4
- package/src/structures/MentionableSelectMenuInteraction.js +5 -20
- package/src/structures/Message.js +85 -460
- package/src/structures/MessageCollector.js +14 -70
- package/src/structures/MessageComponentInteraction.js +14 -57
- package/src/structures/MessageContextMenuCommandInteraction.js +2 -9
- package/src/structures/MessageMentions.js +25 -136
- package/src/structures/MessagePayload.js +24 -94
- package/src/structures/MessageReaction.js +13 -51
- package/src/structures/ModalBuilder.js +3 -13
- package/src/structures/ModalSubmitFields.js +5 -22
- package/src/structures/ModalSubmitInteraction.js +17 -61
- package/src/structures/NewsChannel.js +2 -16
- package/src/structures/OAuth2Guild.js +3 -12
- package/src/structures/PartialGroupDMChannel.js +7 -27
- package/src/structures/PermissionOverwrites.js +20 -99
- package/src/structures/Presence.js +45 -190
- package/src/structures/ReactionCollector.js +20 -108
- package/src/structures/ReactionEmoji.js +2 -10
- package/src/structures/Role.js +39 -261
- package/src/structures/RoleSelectMenuBuilder.js +3 -13
- package/src/structures/RoleSelectMenuComponent.js +1 -4
- package/src/structures/RoleSelectMenuInteraction.js +3 -12
- package/src/structures/SelectMenuBuilder.js +1 -4
- package/src/structures/SelectMenuComponent.js +1 -4
- package/src/structures/SelectMenuInteraction.js +1 -4
- package/src/structures/SelectMenuOptionBuilder.js +1 -4
- package/src/structures/StageChannel.js +12 -84
- package/src/structures/StageInstance.js +16 -87
- package/src/structures/Sticker.js +25 -124
- package/src/structures/StickerPack.js +12 -52
- package/src/structures/StringSelectMenuBuilder.js +6 -29
- package/src/structures/StringSelectMenuComponent.js +2 -9
- package/src/structures/StringSelectMenuInteraction.js +2 -8
- package/src/structures/StringSelectMenuOptionBuilder.js +4 -18
- package/src/structures/Team.js +11 -52
- package/src/structures/TeamMember.js +7 -33
- package/src/structures/TextChannel.js +3 -14
- package/src/structures/TextInputBuilder.js +3 -13
- package/src/structures/TextInputComponent.js +3 -14
- package/src/structures/ThreadChannel.js +59 -305
- package/src/structures/ThreadMember.js +12 -55
- package/src/structures/Typing.js +8 -35
- package/src/structures/User.js +29 -151
- package/src/structures/UserContextMenuCommandInteraction.js +3 -14
- package/src/structures/UserSelectMenuBuilder.js +3 -13
- package/src/structures/UserSelectMenuComponent.js +1 -4
- package/src/structures/UserSelectMenuInteraction.js +4 -16
- package/src/structures/VoiceChannel.js +8 -67
- package/src/structures/VoiceRegion.js +6 -23
- package/src/structures/VoiceState.js +28 -140
- package/src/structures/Webhook.js +37 -227
- package/src/structures/WelcomeChannel.js +7 -29
- package/src/structures/WelcomeScreen.js +5 -20
- package/src/structures/Widget.js +9 -40
- package/src/structures/WidgetMember.js +15 -61
- package/src/structures/interfaces/Application.js +10 -49
- package/src/structures/interfaces/Collector.js +34 -155
- package/src/structures/interfaces/InteractionResponses.js +25 -164
- package/src/structures/interfaces/TextBasedChannel.js +37 -232
- package/src/util/APITypes.js +183 -456
- package/src/util/ActivityFlagsBitField.js +3 -15
- package/src/util/ApplicationFlagsBitField.js +3 -15
- package/src/util/BitField.js +17 -82
- package/src/util/ChannelFlagsBitField.js +7 -30
- package/src/util/Channels.js +5 -35
- package/src/util/Colors.js +3 -38
- package/src/util/Components.js +21 -75
- package/src/util/Constants.js +17 -144
- package/src/util/DataResolver.js +20 -77
- package/src/util/Events.js +3 -81
- package/src/util/Formatters.js +58 -305
- package/src/util/GuildMemberFlagsBitField.js +7 -30
- package/src/util/IntentsBitField.js +4 -23
- package/src/util/LimitedCollection.js +4 -21
- package/src/util/MessageFlagsBitField.js +5 -21
- package/src/util/Options.js +24 -137
- package/src/util/Partials.js +3 -30
- package/src/util/PermissionsBitField.js +12 -67
- package/src/util/ShardEvents.js +3 -15
- package/src/util/Status.js +3 -17
- package/src/util/Sweepers.js +35 -184
- package/src/util/SystemChannelFlagsBitField.js +7 -32
- package/src/util/ThreadMemberFlagsBitField.js +5 -21
- package/src/util/Transformers.js +2 -11
- package/src/util/UserFlagsBitField.js +5 -21
- package/src/util/Util.js +30 -169
- package/src/util/WebSocketShardEvents.js +3 -14
|
@@ -14,43 +14,24 @@ const Events = require('../util/Events');
|
|
|
14
14
|
const { GuildMemberFlagsBitField } = require('../util/GuildMemberFlagsBitField');
|
|
15
15
|
const Partials = require('../util/Partials');
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
* Manages API methods for GuildMembers and stores their cache.
|
|
19
|
-
* @extends {CachedManager}
|
|
20
|
-
*/
|
|
17
|
+
|
|
21
18
|
class GuildMemberManager extends CachedManager {
|
|
22
19
|
constructor(guild, iterable) {
|
|
23
20
|
super(guild.client, GuildMember, iterable);
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
* The guild this manager belongs to
|
|
27
|
-
* @type {Guild}
|
|
28
|
-
*/
|
|
22
|
+
|
|
29
23
|
this.guild = guild;
|
|
30
24
|
}
|
|
31
25
|
|
|
32
|
-
|
|
33
|
-
* The cache of this Manager
|
|
34
|
-
* @type {Collection<Snowflake, GuildMember>}
|
|
35
|
-
* @name GuildMemberManager#cache
|
|
36
|
-
*/
|
|
26
|
+
|
|
37
27
|
|
|
38
28
|
_add(data, cache = true) {
|
|
39
29
|
return super._add(data, cache, { id: data.user.id, extras: [this.guild] });
|
|
40
30
|
}
|
|
41
31
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
* * A User resolvable
|
|
46
|
-
* @typedef {GuildMember|UserResolvable} GuildMemberResolvable
|
|
47
|
-
*/
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Resolves a {@link GuildMemberResolvable} to a {@link GuildMember} object.
|
|
51
|
-
* @param {GuildMemberResolvable} member The user that is part of the guild
|
|
52
|
-
* @returns {?GuildMember}
|
|
53
|
-
*/
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
54
35
|
resolve(member) {
|
|
55
36
|
const memberResolvable = super.resolve(member);
|
|
56
37
|
if (memberResolvable) return memberResolvable;
|
|
@@ -59,11 +40,7 @@ class GuildMemberManager extends CachedManager {
|
|
|
59
40
|
return null;
|
|
60
41
|
}
|
|
61
42
|
|
|
62
|
-
|
|
63
|
-
* Resolves a {@link GuildMemberResolvable} to a member id.
|
|
64
|
-
* @param {GuildMemberResolvable} member The user that is part of the guild
|
|
65
|
-
* @returns {?Snowflake}
|
|
66
|
-
*/
|
|
43
|
+
|
|
67
44
|
resolveId(member) {
|
|
68
45
|
const memberResolvable = super.resolveId(member);
|
|
69
46
|
if (memberResolvable) return memberResolvable;
|
|
@@ -71,30 +48,9 @@ class GuildMemberManager extends CachedManager {
|
|
|
71
48
|
return this.cache.has(userResolvable) ? userResolvable : null;
|
|
72
49
|
}
|
|
73
50
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* @property {string} accessToken An OAuth2 access token for the user with the {@link OAuth2Scopes.GuildsJoin}
|
|
78
|
-
* scope granted to the bot's application
|
|
79
|
-
* @property {string} [nick] The nickname to give to the member
|
|
80
|
-
* <info>This property requires the {@link PermissionFlagsBits.ManageNicknames} permission.</info>
|
|
81
|
-
* @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles to add to the member
|
|
82
|
-
* <info>This property requires the {@link PermissionFlagsBits.ManageRoles} permission.</info>
|
|
83
|
-
* @property {boolean} [mute] Whether the member should be muted
|
|
84
|
-
* <info>This property requires the {@link PermissionFlagsBits.MuteMembers} permission.</info>
|
|
85
|
-
* @property {boolean} [deaf] Whether the member should be deafened
|
|
86
|
-
* <info>This property requires the {@link PermissionFlagsBits.MuteMembers} permission.</info>
|
|
87
|
-
* @property {boolean} [force] Whether to skip the cache check and request the API directly
|
|
88
|
-
* @property {boolean} [fetchWhenExisting=true] Whether to fetch the user if not cached and already a member
|
|
89
|
-
*/
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Adds a user to the guild using OAuth2.
|
|
93
|
-
* <info>This method requires the {@link PermissionFlagsBits.CreateInstantInvite} permission.
|
|
94
|
-
* @param {UserResolvable} user The user to add to the guild
|
|
95
|
-
* @param {AddGuildMemberOptions} options Options for adding the user to the guild
|
|
96
|
-
* @returns {Promise<GuildMember|null>}
|
|
97
|
-
*/
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
98
54
|
async add(user, options) {
|
|
99
55
|
const userId = this.client.users.resolveId(user);
|
|
100
56
|
if (!userId) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'user', 'UserResolvable');
|
|
@@ -128,7 +84,7 @@ class GuildMemberManager extends CachedManager {
|
|
|
128
84
|
resolvedOptions.roles = resolvedRoles;
|
|
129
85
|
}
|
|
130
86
|
const data = await this.client.rest.put(Routes.guildMember(this.guild.id, userId), { body: resolvedOptions });
|
|
131
|
-
|
|
87
|
+
|
|
132
88
|
return data instanceof Uint8Array
|
|
133
89
|
? options.fetchWhenExisting === false
|
|
134
90
|
? null
|
|
@@ -136,11 +92,7 @@ class GuildMemberManager extends CachedManager {
|
|
|
136
92
|
: this._add(data);
|
|
137
93
|
}
|
|
138
94
|
|
|
139
|
-
|
|
140
|
-
* The client user as a GuildMember of this guild
|
|
141
|
-
* @type {?GuildMember}
|
|
142
|
-
* @readonly
|
|
143
|
-
*/
|
|
95
|
+
|
|
144
96
|
get me() {
|
|
145
97
|
return (
|
|
146
98
|
this.resolve(this.client.user.id) ??
|
|
@@ -150,59 +102,11 @@ class GuildMemberManager extends CachedManager {
|
|
|
150
102
|
);
|
|
151
103
|
}
|
|
152
104
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Options used to fetch multiple members from a guild.
|
|
161
|
-
* @typedef {Object} FetchMembersOptions
|
|
162
|
-
* @property {UserResolvable|UserResolvable[]} [user] The user(s) to fetch
|
|
163
|
-
* @property {?string} [query] Limit fetch to members with similar usernames
|
|
164
|
-
* @property {number} [limit=0] Maximum number of members to request
|
|
165
|
-
* @property {boolean} [withPresences=false] Whether to include the presences
|
|
166
|
-
* @property {number} [time=120e3] Timeout for receipt of members
|
|
167
|
-
* @property {?string} [nonce] Nonce for this request (32 characters max - default to base 16 now timestamp)
|
|
168
|
-
*/
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Fetches member(s) from a guild.
|
|
172
|
-
* @param {UserResolvable|FetchMemberOptions|FetchMembersOptions} [options] Options for fetching member(s).
|
|
173
|
-
* Omitting the parameter or providing `undefined` will fetch all members.
|
|
174
|
-
* @returns {Promise<GuildMember|Collection<Snowflake, GuildMember>>}
|
|
175
|
-
* @example
|
|
176
|
-
* // Fetch all members from a guild
|
|
177
|
-
* guild.members.fetch()
|
|
178
|
-
* .then(console.log)
|
|
179
|
-
* .catch(console.error);
|
|
180
|
-
* @example
|
|
181
|
-
* // Fetch a single member
|
|
182
|
-
* guild.members.fetch('66564597481480192')
|
|
183
|
-
* .then(console.log)
|
|
184
|
-
* .catch(console.error);
|
|
185
|
-
* @example
|
|
186
|
-
* // Fetch a single member without checking cache
|
|
187
|
-
* guild.members.fetch({ user, force: true })
|
|
188
|
-
* .then(console.log)
|
|
189
|
-
* .catch(console.error)
|
|
190
|
-
* @example
|
|
191
|
-
* // Fetch a single member without caching
|
|
192
|
-
* guild.members.fetch({ user, cache: false })
|
|
193
|
-
* .then(console.log)
|
|
194
|
-
* .catch(console.error);
|
|
195
|
-
* @example
|
|
196
|
-
* // Fetch by an array of users including their presences
|
|
197
|
-
* guild.members.fetch({ user: ['66564597481480192', '191615925336670208'], withPresences: true })
|
|
198
|
-
* .then(console.log)
|
|
199
|
-
* .catch(console.error);
|
|
200
|
-
* @example
|
|
201
|
-
* // Fetch by query
|
|
202
|
-
* guild.members.fetch({ query: 'hydra', limit: 1 })
|
|
203
|
-
* .then(console.log)
|
|
204
|
-
* .catch(console.error);
|
|
205
|
-
*/
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
206
110
|
fetch(options) {
|
|
207
111
|
if (!options) return this._fetchMany();
|
|
208
112
|
const { user: users, limit, withPresences, cache, force } = options;
|
|
@@ -271,28 +175,14 @@ class GuildMemberManager extends CachedManager {
|
|
|
271
175
|
});
|
|
272
176
|
}
|
|
273
177
|
|
|
274
|
-
|
|
275
|
-
* Fetches the client user as a GuildMember of the guild.
|
|
276
|
-
* @param {BaseFetchOptions} [options] The options for fetching the member
|
|
277
|
-
* @returns {Promise<GuildMember>}
|
|
278
|
-
*/
|
|
178
|
+
|
|
279
179
|
fetchMe(options) {
|
|
280
180
|
return this.fetch({ ...options, user: this.client.user.id });
|
|
281
181
|
}
|
|
282
182
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
* @property {string} query Filter members whose username or nickname start with this query
|
|
287
|
-
* @property {number} [limit] Maximum number of members to search
|
|
288
|
-
* @property {boolean} [cache=true] Whether or not to cache the fetched member(s)
|
|
289
|
-
*/
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Searches for members in the guild based on a query.
|
|
293
|
-
* @param {GuildSearchMembersOptions} options Options for searching members
|
|
294
|
-
* @returns {Promise<Collection<Snowflake, GuildMember>>}
|
|
295
|
-
*/
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
296
186
|
async search({ query, limit, cache = true } = {}) {
|
|
297
187
|
const data = await this.client.rest.get(Routes.guildMembersSearch(this.guild.id), {
|
|
298
188
|
query: makeURLSearchParams({ query, limit }),
|
|
@@ -300,47 +190,18 @@ class GuildMemberManager extends CachedManager {
|
|
|
300
190
|
return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection());
|
|
301
191
|
}
|
|
302
192
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
* @property {Snowflake} [after] Limit fetching members to those with an id greater than the supplied id
|
|
307
|
-
* @property {number} [limit] Maximum number of members to list
|
|
308
|
-
* @property {boolean} [cache=true] Whether or not to cache the fetched member(s)
|
|
309
|
-
*/
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Lists up to 1000 members of the guild.
|
|
313
|
-
* @param {GuildListMembersOptions} [options] Options for listing members
|
|
314
|
-
* @returns {Promise<Collection<Snowflake, GuildMember>>}
|
|
315
|
-
*/
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
316
196
|
async list({ after, limit, cache = true } = {}) {
|
|
317
197
|
const query = makeURLSearchParams({ limit, after });
|
|
318
198
|
const data = await this.client.rest.get(Routes.guildMembers(this.guild.id), { query });
|
|
319
199
|
return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection());
|
|
320
200
|
}
|
|
321
201
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
* @property {?string} [nick] The nickname to set for the member
|
|
326
|
-
* @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles or role ids to apply
|
|
327
|
-
* @property {boolean} [mute] Whether or not the member should be muted
|
|
328
|
-
* @property {boolean} [deaf] Whether or not the member should be deafened
|
|
329
|
-
* @property {GuildVoiceChannelResolvable|null} [channel] Channel to move the member to
|
|
330
|
-
* (if they are connected to voice), or `null` if you want to disconnect them from voice
|
|
331
|
-
* @property {DateResolvable|null} [communicationDisabledUntil] The date or timestamp
|
|
332
|
-
* for the member's communication to be disabled until. Provide `null` to enable communication again.
|
|
333
|
-
* @property {GuildMemberFlagsResolvable} [flags] The flags to set for the member
|
|
334
|
-
* @property {string} [reason] Reason for editing this user
|
|
335
|
-
*/
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Edits a member of the guild.
|
|
339
|
-
* <info>The user must be a member of the guild</info>
|
|
340
|
-
* @param {UserResolvable} user The member to edit
|
|
341
|
-
* @param {GuildMemberEditOptions} options The options to provide
|
|
342
|
-
* @returns {Promise<GuildMember>}
|
|
343
|
-
*/
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
344
205
|
async edit(user, { reason, ...options }) {
|
|
345
206
|
const id = this.client.users.resolveId(user);
|
|
346
207
|
if (!id) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'user', 'UserResolvable');
|
|
@@ -360,7 +221,7 @@ class GuildMemberManager extends CachedManager {
|
|
|
360
221
|
|
|
361
222
|
if (options.communicationDisabledUntil !== undefined) {
|
|
362
223
|
options.communication_disabled_until =
|
|
363
|
-
|
|
224
|
+
|
|
364
225
|
options.communicationDisabledUntil != null
|
|
365
226
|
? new Date(options.communicationDisabledUntil).toISOString()
|
|
366
227
|
: options.communicationDisabledUntil;
|
|
@@ -385,38 +246,9 @@ class GuildMemberManager extends CachedManager {
|
|
|
385
246
|
return clone ?? this._add(d, false);
|
|
386
247
|
}
|
|
387
248
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
* to `false` for large guilds.</info>
|
|
392
|
-
* @typedef {Object} GuildPruneMembersOptions
|
|
393
|
-
* @property {number} [days] Number of days of inactivity required to kick
|
|
394
|
-
* @property {boolean} [dry=false] Get the number of users that will be kicked, without actually kicking them
|
|
395
|
-
* @property {boolean} [count] Whether or not to return the number of users that have been kicked.
|
|
396
|
-
* @property {RoleResolvable[]} [roles] Array of roles to bypass the "...and no roles" constraint when pruning
|
|
397
|
-
* @property {string} [reason] Reason for this prune
|
|
398
|
-
*/
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Prunes members from the guild based on how long they have been inactive.
|
|
402
|
-
* @param {GuildPruneMembersOptions} [options] Options for pruning
|
|
403
|
-
* @returns {Promise<number|null>} The number of members that were/will be kicked
|
|
404
|
-
* @example
|
|
405
|
-
* // See how many members will be pruned
|
|
406
|
-
* guild.members.prune({ dry: true })
|
|
407
|
-
* .then(pruned => console.log(`This will prune ${pruned} people!`))
|
|
408
|
-
* .catch(console.error);
|
|
409
|
-
* @example
|
|
410
|
-
* // Actually prune the members
|
|
411
|
-
* guild.members.prune({ days: 1, reason: 'too many people!' })
|
|
412
|
-
* .then(pruned => console.log(`I just pruned ${pruned} people!`))
|
|
413
|
-
* .catch(console.error);
|
|
414
|
-
* @example
|
|
415
|
-
* // Include members with a specified role
|
|
416
|
-
* guild.members.prune({ days: 7, roles: ['657259391652855808'] })
|
|
417
|
-
* .then(pruned => console.log(`I just pruned ${pruned} people!`))
|
|
418
|
-
* .catch(console.error);
|
|
419
|
-
*/
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
420
252
|
async prune({ days, dry = false, count: compute_prune_count, roles = [], reason } = {}) {
|
|
421
253
|
if (typeof days !== 'number') throw new DiscordjsTypeError(ErrorCodes.PruneDaysType);
|
|
422
254
|
|
|
@@ -444,20 +276,7 @@ class GuildMemberManager extends CachedManager {
|
|
|
444
276
|
return pruned;
|
|
445
277
|
}
|
|
446
278
|
|
|
447
|
-
|
|
448
|
-
* Kicks a user from the guild.
|
|
449
|
-
* <info>The user must be a member of the guild</info>
|
|
450
|
-
* @param {UserResolvable} user The member to kick
|
|
451
|
-
* @param {string} [reason] Reason for kicking
|
|
452
|
-
* @returns {Promise<GuildMember|User|Snowflake>} Result object will be resolved as specifically as possible.
|
|
453
|
-
* If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot
|
|
454
|
-
* be resolved, the user's id will be the result.
|
|
455
|
-
* @example
|
|
456
|
-
* // Kick a user by id (or with a user/guild member object)
|
|
457
|
-
* guild.members.kick('84484653687267328')
|
|
458
|
-
* .then(kickInfo => console.log(`Kicked ${kickInfo.user?.tag ?? kickInfo.tag ?? kickInfo}`))
|
|
459
|
-
* .catch(console.error);
|
|
460
|
-
*/
|
|
279
|
+
|
|
461
280
|
async kick(user, reason) {
|
|
462
281
|
const id = this.client.users.resolveId(user);
|
|
463
282
|
if (!id) return Promise.reject(new DiscordjsTypeError(ErrorCodes.InvalidType, 'user', 'UserResolvable'));
|
|
@@ -467,52 +286,19 @@ class GuildMemberManager extends CachedManager {
|
|
|
467
286
|
return this.resolve(user) ?? this.client.users.resolve(user) ?? id;
|
|
468
287
|
}
|
|
469
288
|
|
|
470
|
-
|
|
471
|
-
* Bans a user from the guild.
|
|
472
|
-
* @param {UserResolvable} user The user to ban
|
|
473
|
-
* @param {BanOptions} [options] Options for the ban
|
|
474
|
-
* @returns {Promise<GuildMember|User|Snowflake>} Result object will be resolved as specifically as possible.
|
|
475
|
-
* If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot
|
|
476
|
-
* be resolved, the user id will be the result.
|
|
477
|
-
* Internally calls the GuildBanManager#create method.
|
|
478
|
-
* @example
|
|
479
|
-
* // Ban a user by id (or with a user/guild member object)
|
|
480
|
-
* guild.members.ban('84484653687267328')
|
|
481
|
-
* .then(banInfo => console.log(`Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo}`))
|
|
482
|
-
* .catch(console.error);
|
|
483
|
-
*/
|
|
289
|
+
|
|
484
290
|
ban(user, options) {
|
|
485
291
|
return this.guild.bans.create(user, options);
|
|
486
292
|
}
|
|
487
293
|
|
|
488
|
-
|
|
489
|
-
* Unbans a user from the guild. Internally calls the {@link GuildBanManager#remove} method.
|
|
490
|
-
* @param {UserResolvable} user The user to unban
|
|
491
|
-
* @param {string} [reason] Reason for unbanning user
|
|
492
|
-
* @returns {Promise<?User>} The user that was unbanned
|
|
493
|
-
* @example
|
|
494
|
-
* // Unban a user by id (or with a user/guild member object)
|
|
495
|
-
* guild.members.unban('84484653687267328')
|
|
496
|
-
* .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))
|
|
497
|
-
* .catch(console.error);
|
|
498
|
-
*/
|
|
294
|
+
|
|
499
295
|
unban(user, reason) {
|
|
500
296
|
return this.guild.bans.remove(user, reason);
|
|
501
297
|
}
|
|
502
298
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
* @property {GuildMemberResolvable} user The user to add/remove the role from
|
|
507
|
-
* @property {RoleResolvable} role The role to add/remove
|
|
508
|
-
* @property {string} [reason] Reason for adding/removing the role
|
|
509
|
-
*/
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* Adds a role to a member.
|
|
513
|
-
* @param {AddOrRemoveGuildMemberRoleOptions} options Options for adding the role
|
|
514
|
-
* @returns {Promise<GuildMember|User|Snowflake>}
|
|
515
|
-
*/
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
516
302
|
async addRole(options) {
|
|
517
303
|
const { user, role, reason } = options;
|
|
518
304
|
const userId = this.guild.members.resolveId(user);
|
|
@@ -522,11 +308,7 @@ class GuildMemberManager extends CachedManager {
|
|
|
522
308
|
return this.resolve(user) ?? this.client.users.resolve(user) ?? userId;
|
|
523
309
|
}
|
|
524
310
|
|
|
525
|
-
|
|
526
|
-
* Removes a role from a member.
|
|
527
|
-
* @param {AddOrRemoveGuildMemberRoleOptions} options Options for removing the role
|
|
528
|
-
* @returns {Promise<GuildMember|User|Snowflake>}
|
|
529
|
-
*/
|
|
311
|
+
|
|
530
312
|
async removeRole(options) {
|
|
531
313
|
const { user, role, reason } = options;
|
|
532
314
|
const userId = this.guild.members.resolveId(user);
|
|
@@ -6,105 +6,62 @@ const DataManager = require('./DataManager');
|
|
|
6
6
|
const { DiscordjsTypeError, ErrorCodes } = require('../errors');
|
|
7
7
|
const { Role } = require('../structures/Role');
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
* Manages API methods for roles of a GuildMember and stores their cache.
|
|
11
|
-
* @extends {DataManager}
|
|
12
|
-
*/
|
|
9
|
+
|
|
13
10
|
class GuildMemberRoleManager extends DataManager {
|
|
14
11
|
constructor(member) {
|
|
15
12
|
super(member.client, Role);
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
* The GuildMember this manager belongs to
|
|
19
|
-
* @type {GuildMember}
|
|
20
|
-
*/
|
|
14
|
+
|
|
21
15
|
this.member = member;
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
* The Guild this manager belongs to
|
|
25
|
-
* @type {Guild}
|
|
26
|
-
*/
|
|
17
|
+
|
|
27
18
|
this.guild = member.guild;
|
|
28
19
|
}
|
|
29
20
|
|
|
30
|
-
|
|
31
|
-
* The roles of this member
|
|
32
|
-
* @type {Collection<Snowflake, Role>}
|
|
33
|
-
* @readonly
|
|
34
|
-
*/
|
|
21
|
+
|
|
35
22
|
get cache() {
|
|
36
23
|
const everyone = this.guild.roles.everyone;
|
|
37
24
|
return this.guild.roles.cache.filter(role => this.member._roles.includes(role.id)).set(everyone.id, everyone);
|
|
38
25
|
}
|
|
39
26
|
|
|
40
|
-
|
|
41
|
-
* The role of the member used to hoist them in a separate category in the users list
|
|
42
|
-
* @type {?Role}
|
|
43
|
-
* @readonly
|
|
44
|
-
*/
|
|
27
|
+
|
|
45
28
|
get hoist() {
|
|
46
29
|
const hoistedRoles = this.cache.filter(role => role.hoist);
|
|
47
30
|
if (!hoistedRoles.size) return null;
|
|
48
31
|
return hoistedRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));
|
|
49
32
|
}
|
|
50
33
|
|
|
51
|
-
|
|
52
|
-
* The role of the member used to set their role icon
|
|
53
|
-
* @type {?Role}
|
|
54
|
-
* @readonly
|
|
55
|
-
*/
|
|
34
|
+
|
|
56
35
|
get icon() {
|
|
57
36
|
const iconRoles = this.cache.filter(role => role.icon || role.unicodeEmoji);
|
|
58
37
|
if (!iconRoles.size) return null;
|
|
59
38
|
return iconRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));
|
|
60
39
|
}
|
|
61
40
|
|
|
62
|
-
|
|
63
|
-
* The role of the member used to set their color
|
|
64
|
-
* @type {?Role}
|
|
65
|
-
* @readonly
|
|
66
|
-
*/
|
|
41
|
+
|
|
67
42
|
get color() {
|
|
68
43
|
const coloredRoles = this.cache.filter(role => role.color);
|
|
69
44
|
if (!coloredRoles.size) return null;
|
|
70
45
|
return coloredRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));
|
|
71
46
|
}
|
|
72
47
|
|
|
73
|
-
|
|
74
|
-
* The role of the member with the highest position
|
|
75
|
-
* @type {Role}
|
|
76
|
-
* @readonly
|
|
77
|
-
*/
|
|
48
|
+
|
|
78
49
|
get highest() {
|
|
79
50
|
return this.cache.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev), this.cache.first());
|
|
80
51
|
}
|
|
81
52
|
|
|
82
|
-
|
|
83
|
-
* The premium subscriber role of the guild, if present on the member
|
|
84
|
-
* @type {?Role}
|
|
85
|
-
* @readonly
|
|
86
|
-
*/
|
|
53
|
+
|
|
87
54
|
get premiumSubscriberRole() {
|
|
88
55
|
return this.cache.find(role => role.tags?.premiumSubscriberRole) ?? null;
|
|
89
56
|
}
|
|
90
57
|
|
|
91
|
-
|
|
92
|
-
* The managed role this member created when joining the guild, if any
|
|
93
|
-
* <info>Only ever available on bots</info>
|
|
94
|
-
* @type {?Role}
|
|
95
|
-
* @readonly
|
|
96
|
-
*/
|
|
58
|
+
|
|
97
59
|
get botRole() {
|
|
98
60
|
if (!this.member.user.bot) return null;
|
|
99
61
|
return this.cache.find(role => role.tags?.botId === this.member.user.id) ?? null;
|
|
100
62
|
}
|
|
101
63
|
|
|
102
|
-
|
|
103
|
-
* Adds a role (or multiple roles) to the member.
|
|
104
|
-
* @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to add
|
|
105
|
-
* @param {string} [reason] Reason for adding the role(s)
|
|
106
|
-
* @returns {Promise<GuildMember>}
|
|
107
|
-
*/
|
|
64
|
+
|
|
108
65
|
async add(roleOrRoles, reason) {
|
|
109
66
|
if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) {
|
|
110
67
|
const resolvedRoles = [];
|
|
@@ -136,12 +93,7 @@ class GuildMemberRoleManager extends DataManager {
|
|
|
136
93
|
}
|
|
137
94
|
}
|
|
138
95
|
|
|
139
|
-
|
|
140
|
-
* Removes a role (or multiple roles) from the member.
|
|
141
|
-
* @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to remove
|
|
142
|
-
* @param {string} [reason] Reason for removing the role(s)
|
|
143
|
-
* @returns {Promise<GuildMember>}
|
|
144
|
-
*/
|
|
96
|
+
|
|
145
97
|
async remove(roleOrRoles, reason) {
|
|
146
98
|
if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) {
|
|
147
99
|
const resolvedRoles = [];
|
|
@@ -174,22 +126,7 @@ class GuildMemberRoleManager extends DataManager {
|
|
|
174
126
|
}
|
|
175
127
|
}
|
|
176
128
|
|
|
177
|
-
|
|
178
|
-
* Sets the roles applied to the member.
|
|
179
|
-
* @param {Collection<Snowflake, Role>|RoleResolvable[]} roles The roles or role ids to apply
|
|
180
|
-
* @param {string} [reason] Reason for applying the roles
|
|
181
|
-
* @returns {Promise<GuildMember>}
|
|
182
|
-
* @example
|
|
183
|
-
* // Set the member's roles to a single role
|
|
184
|
-
* guildMember.roles.set(['391156570408615936'])
|
|
185
|
-
* .then(console.log)
|
|
186
|
-
* .catch(console.error);
|
|
187
|
-
* @example
|
|
188
|
-
* // Remove all the roles from a member
|
|
189
|
-
* guildMember.roles.set([])
|
|
190
|
-
* .then(member => console.log(`Member roles is now of ${member.roles.cache.size} size`))
|
|
191
|
-
* .catch(console.error);
|
|
192
|
-
*/
|
|
129
|
+
|
|
193
130
|
set(roles, reason) {
|
|
194
131
|
return this.member.edit({ roles, reason });
|
|
195
132
|
}
|