Skip to content

Commit e85c9f5

Browse files
committed
✨ Add fetch_roles_member_counts method to Guild and corresponding HTTP route
1 parent 9060a84 commit e85c9f5

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

discord/guild.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,6 +1119,18 @@ def get_role(self, role_id: int, /) -> Role | None:
11191119
"""
11201120
return self._roles.get(role_id)
11211121

1122+
async def fetch_roles_member_counts(self) -> dict[int, int]:
1123+
"""|coro|
1124+
Fetches a mapping of role IDs to their member counts for this guild.
1125+
1126+
Returns
1127+
-------
1128+
Dict[:class:`int`, :class:`int`]
1129+
A mapping of role IDs to their member counts.
1130+
"""
1131+
r = await self._state.http.get_roles_member_counts(self.id)
1132+
return {int(role_id): count for role_id, count in r.items()}
1133+
11221134
@property
11231135
def default_role(self) -> Role:
11241136
"""Gets the @everyone role that all members have by default."""

discord/http.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2145,6 +2145,11 @@ def delete_invite(
21452145
def get_roles(self, guild_id: Snowflake) -> Response[list[role.Role]]:
21462146
return self.request(Route("GET", "/guilds/{guild_id}/roles", guild_id=guild_id))
21472147

2148+
def get_roles_member_counts(self, guild_id: Snowflake) -> Response[dict[str, int]]:
2149+
return self.request(
2150+
Route("GET", "/guilds/{guild_id}/roles/member-counts", guild_id=guild_id)
2151+
)
2152+
21482153
def get_role(self, guild_id: Snowflake, role_id: Snowflake) -> Response[role.Role]:
21492154
return self.request(
21502155
Route(

0 commit comments

Comments
 (0)