From d93f9959b94842e727206337be6aa93525592509 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 12 Aug 2021 09:34:23 -0400 Subject: [PATCH 1/7] feat(GuildMemberManager): add 'list' method --- src/managers/GuildMemberManager.js | 18 ++++++++++++++++++ typings/index.d.ts | 9 ++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 59ef163ce2b3..f3d69c236b82 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -205,6 +205,24 @@ class GuildMemberManager extends CachedManager { return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection()); } + /** + * Options used for listing guild members. + * @typedef {Object} GuildListMembersOptions + * @property {Snowflake} after Limit fetching members to those with an id greater than the supplied id + * @property {number} [limit=1] Maximum number of members to list + * @property {boolean} [cache=true] Whether or not to cache the fetched member(s) + */ + + /** + * Lists upto 1000 members of the guild. + * @param {GuildListMembersOptions} options Options for listing members + * @returns {Promise>} + */ + async list({ after, limit = 1, cache = true } = {}) { + const data = await this.client.api.guilds(this.guild.id).members.get({ query: { after, limit } }); + return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection()); + } + /** * Edits a member of the guild. * The user must be a member of the guild diff --git a/typings/index.d.ts b/typings/index.d.ts index a5ca9b5aa335..792cfeb2ca6f 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -130,7 +130,7 @@ import { RawWelcomeChannelData, RawWelcomeScreenData, RawWidgetData, - RawWidgetMemberData + RawWidgetMemberData, } from './rawDataTypes'; //#region Classes @@ -2474,6 +2474,7 @@ export class GuildMemberManager extends CachedManager; public fetch(options?: FetchMembersOptions): Promise>; public kick(user: UserResolvable, reason?: string): Promise; + public list(options?: GuildListMembersOptions): Promise>; public prune(options: GuildPruneMembersOptions & { dry?: false; count: false }): Promise; public prune(options?: GuildPruneMembersOptions): Promise; public search(options: GuildSearchMembersOptions): Promise>; @@ -3812,6 +3813,12 @@ export interface GuildSearchMembersOptions { cache?: boolean; } +export interface GuildListMembersOptions { + after?: Snowflake; + limit?: number; + cache?: boolean; +} + export type GuildTemplateResolvable = string; export type GuildVoiceChannelResolvable = VoiceChannel | StageChannel | Snowflake; From 1265e002b477453fe9b0b16c6b5f15b102207c91 Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 10:22:59 -0400 Subject: [PATCH 2/7] fix(GuildMemberManager): fix jsdoc for GuildListMembersOptions' after Co-authored-by: SpaceEEC --- src/managers/GuildMemberManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index f3d69c236b82..7d08cde4b3ce 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -208,7 +208,7 @@ class GuildMemberManager extends CachedManager { /** * Options used for listing guild members. * @typedef {Object} GuildListMembersOptions - * @property {Snowflake} after Limit fetching members to those with an id greater than the supplied id + * @property {Snowflake} [after] Limit fetching members to those with an id greater than the supplied id * @property {number} [limit=1] Maximum number of members to list * @property {boolean} [cache=true] Whether or not to cache the fetched member(s) */ From b150d11fd6faeb1f7efc5f4a73f3d217803530cb Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 10:25:57 -0400 Subject: [PATCH 3/7] fix(GuildMemberManager): make list's parameter optional on the jsdoc Co-authored-by: SpaceEEC --- src/managers/GuildMemberManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 7d08cde4b3ce..4dc35d93bcda 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -215,7 +215,7 @@ class GuildMemberManager extends CachedManager { /** * Lists upto 1000 members of the guild. - * @param {GuildListMembersOptions} options Options for listing members + * @param {GuildListMembersOptions} [options] Options for listing members * @returns {Promise>} */ async list({ after, limit = 1, cache = true } = {}) { From c3991fcd1d72f2be24a79a6478e0483aabcfd0f8 Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 10:26:34 -0400 Subject: [PATCH 4/7] fix(GuildMemberManager): fix grammatical error Co-authored-by: SpaceEEC --- src/managers/GuildMemberManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 4dc35d93bcda..6fb272c32ebe 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -214,7 +214,7 @@ class GuildMemberManager extends CachedManager { */ /** - * Lists upto 1000 members of the guild. + * Lists up to 1000 members of the guild. * @param {GuildListMembersOptions} [options] Options for listing members * @returns {Promise>} */ From 8a609924102cc6bd1bf05dccdd9e96b3ed1ba0ad Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 17:24:51 -0400 Subject: [PATCH 5/7] fix(GuildMember): remove list's default limit since the API already has a default value `1`, for [this method](https://discord.com/developers/docs/resources/guild#list-guild-members) --- src/managers/GuildMemberManager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 6fb272c32ebe..2c0333b7f1a8 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -209,7 +209,7 @@ class GuildMemberManager extends CachedManager { * Options used for listing guild members. * @typedef {Object} GuildListMembersOptions * @property {Snowflake} [after] Limit fetching members to those with an id greater than the supplied id - * @property {number} [limit=1] Maximum number of members to list + * @property {number} [limit] Maximum number of members to list * @property {boolean} [cache=true] Whether or not to cache the fetched member(s) */ @@ -218,7 +218,7 @@ class GuildMemberManager extends CachedManager { * @param {GuildListMembersOptions} [options] Options for listing members * @returns {Promise>} */ - async list({ after, limit = 1, cache = true } = {}) { + async list({ after, limit, cache = true } = {}) { const data = await this.client.api.guilds(this.guild.id).members.get({ query: { after, limit } }); return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection()); } From 96a242b225347d819a8cc1f7834afd8a89090a21 Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 17:31:49 -0400 Subject: [PATCH 6/7] revert: feat(GuildMemberManager): default limit add `1` as the default value for the list method's Option's `limit` --- src/managers/GuildMemberManager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 2c0333b7f1a8..7a4f62bd8f3d 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -209,7 +209,7 @@ class GuildMemberManager extends CachedManager { * Options used for listing guild members. * @typedef {Object} GuildListMembersOptions * @property {Snowflake} [after] Limit fetching members to those with an id greater than the supplied id - * @property {number} [limit] Maximum number of members to list + * @property {number} [limit = 1] Maximum number of members to list * @property {boolean} [cache=true] Whether or not to cache the fetched member(s) */ @@ -218,7 +218,7 @@ class GuildMemberManager extends CachedManager { * @param {GuildListMembersOptions} [options] Options for listing members * @returns {Promise>} */ - async list({ after, limit, cache = true } = {}) { + async list({ after, limit = 1, cache = true } = {}) { const data = await this.client.api.guilds(this.guild.id).members.get({ query: { after, limit } }); return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection()); } From 92b97f501a2bc02f428f242a40a49ceb5a2c9c8a Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 17:35:13 -0400 Subject: [PATCH 7/7] fix(GuildMemberManager): consistent jsdoc for list --- src/managers/GuildMemberManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 7a4f62bd8f3d..6fb272c32ebe 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -209,7 +209,7 @@ class GuildMemberManager extends CachedManager { * Options used for listing guild members. * @typedef {Object} GuildListMembersOptions * @property {Snowflake} [after] Limit fetching members to those with an id greater than the supplied id - * @property {number} [limit = 1] Maximum number of members to list + * @property {number} [limit=1] Maximum number of members to list * @property {boolean} [cache=true] Whether or not to cache the fetched member(s) */