From cad826fc03700e52bdba8f1ab4110ddf1547e323 Mon Sep 17 00:00:00 2001 From: Almeida Date: Wed, 17 Dec 2025 18:59:50 +0000 Subject: [PATCH] feat(RoleManager): add `fetchMemberCounts` (#11352) * feat(RoleManager): add `fetchMemberCounts` * docs: improve description Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> --------- Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/discord.js/src/managers/RoleManager.js | 11 +++++++++++ packages/discord.js/typings/index.d.ts | 1 + 2 files changed, 12 insertions(+) diff --git a/packages/discord.js/src/managers/RoleManager.js b/packages/discord.js/src/managers/RoleManager.js index e17f4f46d..bf117b5d2 100644 --- a/packages/discord.js/src/managers/RoleManager.js +++ b/packages/discord.js/src/managers/RoleManager.js @@ -81,6 +81,17 @@ class RoleManager extends CachedManager { return this._add(data, cache); } + /** + * Fetches the member count of each role in the guild. + * This does not include the `@everyone` role. + * + * @returns {Promise>} A collection mapping role ids to their respective member counts. + */ + async fetchMemberCounts() { + const data = await this.client.rest.get(Routes.guildRoleMemberCounts(this.guild.id)); + return new Collection(Object.entries(data)); + } + /** * Data that can be resolved to a Role object. This can be: * - A Role diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 4d78d3d98..f418fdc89 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -4723,6 +4723,7 @@ export class RoleManager extends CachedManager public botRoleFor(user: UserResolvable): Role | null; public fetch(id: Snowflake, options?: BaseFetchOptions): Promise; public fetch(id?: undefined, options?: BaseFetchOptions): Promise>; + public fetchMemberCounts(): Promise>; public create(options?: RoleCreateOptions): Promise; public edit(role: RoleResolvable, options: RoleEditOptions): Promise; public delete(role: RoleResolvable, reason?: string): Promise;