From 3b738eef58bfd2c8d05a025ada89011627102b7a 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 823ef14d1..8dc8971ff 100644 --- a/packages/discord.js/src/managers/RoleManager.js +++ b/packages/discord.js/src/managers/RoleManager.js @@ -89,6 +89,17 @@ class RoleManager extends CachedManager { } } + /** + * 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 2ea591689..b052e255f 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -5337,6 +5337,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;