From 2bf09703c13afe7481071ae1b064dbc3513468e1 Mon Sep 17 00:00:00 2001 From: Ben <88249114+BenjammingKirby@users.noreply.github.com> Date: Thu, 12 Aug 2021 18:05:06 -0400 Subject: [PATCH] feat(GuildMemberManager): add 'list' method (#6403) Co-authored-by: SpaceEEC Co-authored-by: Ben --- src/managers/GuildMemberManager.js | 18 ++++++++++++++++++ typings/index.d.ts | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 59ef163ce2b3..6fb272c32ebe 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 up to 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 9bf129d9ab04..53c69b5dafb6 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -2477,6 +2477,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>; @@ -3867,6 +3868,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;