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;