@velliajs/discord 1.0.3 → 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.
Files changed (257) hide show
  1. package/package.json +1 -1
  2. package/src/client/BaseClient.js +7 -28
  3. package/src/client/Client.js +116 -283
  4. package/src/client/WebhookClient.js +17 -59
  5. package/src/client/actions/Action.js +0 -10
  6. package/src/client/actions/ActionsManager.js +3 -3
  7. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +2 -15
  8. package/src/client/actions/AutoModerationActionExecution.js +1 -6
  9. package/src/client/actions/AutoModerationRuleCreate.js +1 -6
  10. package/src/client/actions/AutoModerationRuleDelete.js +1 -6
  11. package/src/client/actions/AutoModerationRuleUpdate.js +1 -7
  12. package/src/client/actions/ChannelCreate.js +1 -5
  13. package/src/client/actions/ChannelDelete.js +1 -5
  14. package/src/client/actions/GuildAuditLogEntryCreate.js +1 -6
  15. package/src/client/actions/GuildBanAdd.js +1 -5
  16. package/src/client/actions/GuildBanRemove.js +1 -5
  17. package/src/client/actions/GuildDelete.js +6 -14
  18. package/src/client/actions/GuildEmojiCreate.js +1 -5
  19. package/src/client/actions/GuildEmojiDelete.js +1 -5
  20. package/src/client/actions/GuildEmojiUpdate.js +1 -6
  21. package/src/client/actions/GuildEmojisUpdate.js +4 -4
  22. package/src/client/actions/GuildIntegrationsUpdate.js +1 -5
  23. package/src/client/actions/GuildMemberRemove.js +1 -5
  24. package/src/client/actions/GuildMemberUpdate.js +2 -11
  25. package/src/client/actions/GuildRoleCreate.js +1 -5
  26. package/src/client/actions/GuildRoleDelete.js +1 -5
  27. package/src/client/actions/GuildRoleUpdate.js +1 -6
  28. package/src/client/actions/GuildScheduledEventCreate.js +1 -5
  29. package/src/client/actions/GuildScheduledEventDelete.js +1 -5
  30. package/src/client/actions/GuildScheduledEventUpdate.js +1 -6
  31. package/src/client/actions/GuildScheduledEventUserAdd.js +1 -6
  32. package/src/client/actions/GuildScheduledEventUserRemove.js +1 -6
  33. package/src/client/actions/GuildStickerCreate.js +1 -5
  34. package/src/client/actions/GuildStickerDelete.js +1 -5
  35. package/src/client/actions/GuildStickerUpdate.js +1 -6
  36. package/src/client/actions/GuildStickersUpdate.js +4 -4
  37. package/src/client/actions/GuildUpdate.js +1 -6
  38. package/src/client/actions/InteractionCreate.js +3 -7
  39. package/src/client/actions/InviteCreate.js +1 -7
  40. package/src/client/actions/InviteDelete.js +1 -7
  41. package/src/client/actions/MessageCreate.js +1 -5
  42. package/src/client/actions/MessageDelete.js +1 -5
  43. package/src/client/actions/MessageDeleteBulk.js +1 -6
  44. package/src/client/actions/MessageReactionAdd.js +5 -18
  45. package/src/client/actions/MessageReactionRemove.js +5 -16
  46. package/src/client/actions/MessageReactionRemoveAll.js +4 -9
  47. package/src/client/actions/MessageReactionRemoveEmoji.js +1 -5
  48. package/src/client/actions/PresenceUpdate.js +1 -6
  49. package/src/client/actions/StageInstanceCreate.js +1 -5
  50. package/src/client/actions/StageInstanceDelete.js +1 -5
  51. package/src/client/actions/StageInstanceUpdate.js +1 -6
  52. package/src/client/actions/ThreadCreate.js +1 -6
  53. package/src/client/actions/ThreadDelete.js +1 -5
  54. package/src/client/actions/ThreadListSync.js +2 -7
  55. package/src/client/actions/ThreadMemberUpdate.js +2 -7
  56. package/src/client/actions/ThreadMembersUpdate.js +2 -9
  57. package/src/client/actions/TypingStart.js +1 -5
  58. package/src/client/actions/UserUpdate.js +1 -8
  59. package/src/client/actions/VoiceStateUpdate.js +4 -9
  60. package/src/client/actions/WebhooksUpdate.js +1 -6
  61. package/src/client/voice/ClientVoiceManager.js +3 -13
  62. package/src/client/websocket/WebSocketManager.js +25 -117
  63. package/src/client/websocket/WebSocketShard.js +29 -116
  64. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +2 -8
  65. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +1 -6
  66. package/src/client/websocket/handlers/GUILD_CREATE.js +3 -7
  67. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +2 -16
  68. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +1 -5
  69. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +1 -6
  70. package/src/client/websocket/handlers/RESUMED.js +1 -6
  71. package/src/client/websocket/handlers/THREAD_UPDATE.js +1 -6
  72. package/src/errors/DJSError.js +3 -14
  73. package/src/errors/ErrorCodes.js +2 -164
  74. package/src/index.js +6 -6
  75. package/src/managers/ApplicationCommandManager.js +14 -130
  76. package/src/managers/ApplicationCommandPermissionsManager.js +31 -202
  77. package/src/managers/AutoModerationRuleManager.js +17 -145
  78. package/src/managers/BaseGuildEmojiManager.js +7 -38
  79. package/src/managers/BaseManager.js +2 -10
  80. package/src/managers/CachedManager.js +3 -17
  81. package/src/managers/CategoryChannelChildManager.js +6 -48
  82. package/src/managers/ChannelManager.js +11 -52
  83. package/src/managers/DataManager.js +5 -27
  84. package/src/managers/GuildApplicationCommandManager.js +3 -12
  85. package/src/managers/GuildBanManager.js +16 -105
  86. package/src/managers/GuildChannelManager.js +31 -226
  87. package/src/managers/GuildEmojiManager.js +9 -65
  88. package/src/managers/GuildEmojiRoleManager.js +8 -47
  89. package/src/managers/GuildForumThreadManager.js +5 -39
  90. package/src/managers/GuildInviteManager.js +18 -117
  91. package/src/managers/GuildManager.js +14 -115
  92. package/src/managers/GuildMemberManager.js +38 -256
  93. package/src/managers/GuildMemberRoleManager.js +13 -76
  94. package/src/managers/GuildScheduledEventManager.js +25 -128
  95. package/src/managers/GuildStickerManager.js +16 -96
  96. package/src/managers/GuildTextThreadManager.js +4 -47
  97. package/src/managers/MessageManager.js +23 -137
  98. package/src/managers/PermissionOverwriteManager.js +10 -78
  99. package/src/managers/PresenceManager.js +6 -27
  100. package/src/managers/ReactionManager.js +7 -40
  101. package/src/managers/ReactionUserManager.js +6 -29
  102. package/src/managers/RoleManager.js +29 -177
  103. package/src/managers/StageInstanceManager.js +14 -77
  104. package/src/managers/ThreadManager.js +23 -113
  105. package/src/managers/ThreadMemberManager.js +20 -89
  106. package/src/managers/UserManager.js +13 -65
  107. package/src/managers/VoiceStateManager.js +3 -13
  108. package/src/sharding/Shard.js +42 -158
  109. package/src/sharding/ShardClientUtil.js +17 -101
  110. package/src/sharding/ShardingManager.js +34 -151
  111. package/src/structures/ActionRow.js +4 -21
  112. package/src/structures/ActionRowBuilder.js +3 -13
  113. package/src/structures/AnonymousGuild.js +10 -43
  114. package/src/structures/ApplicationCommand.js +54 -308
  115. package/src/structures/ApplicationRoleConnectionMetadata.js +7 -27
  116. package/src/structures/Attachment.js +16 -65
  117. package/src/structures/AttachmentBuilder.js +13 -58
  118. package/src/structures/AutoModerationActionExecution.js +16 -69
  119. package/src/structures/AutoModerationRule.js +32 -164
  120. package/src/structures/AutocompleteInteraction.js +10 -52
  121. package/src/structures/Base.js +2 -10
  122. package/src/structures/BaseChannel.js +16 -80
  123. package/src/structures/BaseGuild.js +13 -59
  124. package/src/structures/BaseGuildEmoji.js +5 -21
  125. package/src/structures/BaseGuildTextChannel.js +19 -100
  126. package/src/structures/BaseGuildVoiceChannel.js +21 -110
  127. package/src/structures/BaseInteraction.js +40 -196
  128. package/src/structures/BaseSelectMenuComponent.js +6 -29
  129. package/src/structures/ButtonBuilder.js +4 -18
  130. package/src/structures/ButtonComponent.js +7 -34
  131. package/src/structures/ButtonInteraction.js +1 -4
  132. package/src/structures/CategoryChannel.js +5 -30
  133. package/src/structures/ChannelSelectMenuBuilder.js +3 -13
  134. package/src/structures/ChannelSelectMenuComponent.js +2 -9
  135. package/src/structures/ChannelSelectMenuInteraction.js +3 -12
  136. package/src/structures/ChatInputCommandInteraction.js +3 -13
  137. package/src/structures/ClientApplication.js +20 -83
  138. package/src/structures/ClientPresence.js +5 -20
  139. package/src/structures/ClientUser.js +21 -118
  140. package/src/structures/CommandInteraction.js +21 -96
  141. package/src/structures/CommandInteractionOptionResolver.js +26 -147
  142. package/src/structures/Component.js +5 -21
  143. package/src/structures/ContextMenuCommandInteraction.js +4 -18
  144. package/src/structures/DMChannel.js +17 -52
  145. package/src/structures/DirectoryChannel.js +4 -16
  146. package/src/structures/Embed.js +21 -107
  147. package/src/structures/EmbedBuilder.js +4 -18
  148. package/src/structures/Emoji.js +12 -60
  149. package/src/structures/ForumChannel.js +30 -140
  150. package/src/structures/Guild.js +117 -697
  151. package/src/structures/GuildAuditLogs.js +7 -32
  152. package/src/structures/GuildAuditLogsEntry.js +27 -135
  153. package/src/structures/GuildBan.js +6 -26
  154. package/src/structures/GuildChannel.js +36 -188
  155. package/src/structures/GuildEmoji.js +13 -67
  156. package/src/structures/GuildMember.js +47 -270
  157. package/src/structures/GuildPreview.js +19 -84
  158. package/src/structures/GuildPreviewEmoji.js +3 -13
  159. package/src/structures/GuildScheduledEvent.js +46 -250
  160. package/src/structures/GuildTemplate.js +24 -108
  161. package/src/structures/Integration.js +25 -103
  162. package/src/structures/IntegrationApplication.js +8 -32
  163. package/src/structures/InteractionCollector.js +22 -113
  164. package/src/structures/InteractionResponse.js +11 -46
  165. package/src/structures/InteractionWebhook.js +8 -33
  166. package/src/structures/Invite.js +27 -131
  167. package/src/structures/InviteGuild.js +2 -8
  168. package/src/structures/InviteStageInstance.js +9 -39
  169. package/src/structures/MentionableSelectMenuBuilder.js +3 -14
  170. package/src/structures/MentionableSelectMenuComponent.js +1 -4
  171. package/src/structures/MentionableSelectMenuInteraction.js +5 -20
  172. package/src/structures/Message.js +85 -460
  173. package/src/structures/MessageCollector.js +14 -70
  174. package/src/structures/MessageComponentInteraction.js +14 -57
  175. package/src/structures/MessageContextMenuCommandInteraction.js +2 -9
  176. package/src/structures/MessageMentions.js +25 -136
  177. package/src/structures/MessagePayload.js +24 -94
  178. package/src/structures/MessageReaction.js +13 -51
  179. package/src/structures/ModalBuilder.js +3 -13
  180. package/src/structures/ModalSubmitFields.js +5 -22
  181. package/src/structures/ModalSubmitInteraction.js +17 -61
  182. package/src/structures/NewsChannel.js +2 -16
  183. package/src/structures/OAuth2Guild.js +3 -12
  184. package/src/structures/PartialGroupDMChannel.js +7 -27
  185. package/src/structures/PermissionOverwrites.js +20 -99
  186. package/src/structures/Presence.js +45 -190
  187. package/src/structures/ReactionCollector.js +20 -108
  188. package/src/structures/ReactionEmoji.js +2 -10
  189. package/src/structures/Role.js +39 -261
  190. package/src/structures/RoleSelectMenuBuilder.js +3 -13
  191. package/src/structures/RoleSelectMenuComponent.js +1 -4
  192. package/src/structures/RoleSelectMenuInteraction.js +3 -12
  193. package/src/structures/SelectMenuBuilder.js +1 -4
  194. package/src/structures/SelectMenuComponent.js +1 -4
  195. package/src/structures/SelectMenuInteraction.js +1 -4
  196. package/src/structures/SelectMenuOptionBuilder.js +1 -4
  197. package/src/structures/StageChannel.js +12 -84
  198. package/src/structures/StageInstance.js +16 -87
  199. package/src/structures/Sticker.js +25 -124
  200. package/src/structures/StickerPack.js +12 -52
  201. package/src/structures/StringSelectMenuBuilder.js +6 -29
  202. package/src/structures/StringSelectMenuComponent.js +2 -9
  203. package/src/structures/StringSelectMenuInteraction.js +2 -8
  204. package/src/structures/StringSelectMenuOptionBuilder.js +4 -18
  205. package/src/structures/Team.js +11 -52
  206. package/src/structures/TeamMember.js +7 -33
  207. package/src/structures/TextChannel.js +3 -14
  208. package/src/structures/TextInputBuilder.js +3 -13
  209. package/src/structures/TextInputComponent.js +3 -14
  210. package/src/structures/ThreadChannel.js +59 -305
  211. package/src/structures/ThreadMember.js +12 -55
  212. package/src/structures/Typing.js +8 -35
  213. package/src/structures/User.js +29 -151
  214. package/src/structures/UserContextMenuCommandInteraction.js +3 -14
  215. package/src/structures/UserSelectMenuBuilder.js +3 -13
  216. package/src/structures/UserSelectMenuComponent.js +1 -4
  217. package/src/structures/UserSelectMenuInteraction.js +4 -16
  218. package/src/structures/VoiceChannel.js +8 -67
  219. package/src/structures/VoiceRegion.js +6 -23
  220. package/src/structures/VoiceState.js +28 -140
  221. package/src/structures/Webhook.js +37 -227
  222. package/src/structures/WelcomeChannel.js +7 -29
  223. package/src/structures/WelcomeScreen.js +5 -20
  224. package/src/structures/Widget.js +9 -40
  225. package/src/structures/WidgetMember.js +15 -61
  226. package/src/structures/interfaces/Application.js +10 -49
  227. package/src/structures/interfaces/Collector.js +34 -155
  228. package/src/structures/interfaces/InteractionResponses.js +25 -164
  229. package/src/structures/interfaces/TextBasedChannel.js +37 -232
  230. package/src/util/APITypes.js +183 -456
  231. package/src/util/ActivityFlagsBitField.js +3 -15
  232. package/src/util/ApplicationFlagsBitField.js +3 -15
  233. package/src/util/BitField.js +17 -82
  234. package/src/util/ChannelFlagsBitField.js +7 -30
  235. package/src/util/Channels.js +5 -35
  236. package/src/util/Colors.js +3 -38
  237. package/src/util/Components.js +21 -75
  238. package/src/util/Constants.js +17 -144
  239. package/src/util/DataResolver.js +20 -77
  240. package/src/util/Events.js +3 -81
  241. package/src/util/Formatters.js +58 -305
  242. package/src/util/GuildMemberFlagsBitField.js +7 -30
  243. package/src/util/IntentsBitField.js +4 -23
  244. package/src/util/LimitedCollection.js +4 -21
  245. package/src/util/MessageFlagsBitField.js +5 -21
  246. package/src/util/Options.js +24 -137
  247. package/src/util/Partials.js +3 -30
  248. package/src/util/PermissionsBitField.js +12 -67
  249. package/src/util/ShardEvents.js +3 -15
  250. package/src/util/Status.js +3 -17
  251. package/src/util/Sweepers.js +35 -184
  252. package/src/util/SystemChannelFlagsBitField.js +7 -32
  253. package/src/util/ThreadMemberFlagsBitField.js +5 -21
  254. package/src/util/Transformers.js +2 -11
  255. package/src/util/UserFlagsBitField.js +5 -21
  256. package/src/util/Util.js +30 -169
  257. 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
- * Data that resolves to give a GuildMember object. This can be:
44
- * * A GuildMember object
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
- * Options used to add a user to a guild using OAuth2.
76
- * @typedef {Object} AddGuildMemberOptions
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
- // Data is an empty Uint8Array if the member is already part of the guild.
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
- * Options used to fetch a single member from a guild.
155
- * @typedef {BaseFetchOptions} FetchMemberOptions
156
- * @property {UserResolvable} user The user to fetch
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
- * Options used for searching guild members.
285
- * @typedef {Object} GuildSearchMembersOptions
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
- * Options used for listing guild members.
305
- * @typedef {Object} GuildListMembersOptions
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
- * The data for editing a guild member.
324
- * @typedef {Object} GuildMemberEditOptions
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
- // eslint-disable-next-line eqeqeq
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
- * Options used for pruning guild members.
390
- * <info>It's recommended to set {@link GuildPruneMembersOptions#count options.count}
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
- * Options used for adding or removing a role from a member.
505
- * @typedef {Object} AddOrRemoveGuildMemberRoleOptions
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
  }