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