Skip to content

Commit 176d1cc

Browse files
committed
feat: implement Guild.fetch_role
1 parent f7a80e1 commit 176d1cc

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

discord/guild.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2814,6 +2814,30 @@ async def fetch_roles(self) -> list[Role]:
28142814
"""
28152815
data = await self._state.http.get_roles(self.id)
28162816
return [Role(guild=self, state=self._state, data=d) for d in data]
2817+
2818+
async def fetch_role(self, role_id: int) -> Role:
2819+
"""|coro|
2820+
2821+
Retrieves a :class:`Role` that the guild has.
2822+
2823+
.. note::
2824+
2825+
This method is an API call. For general usage, consider using :attr:`get_role` instead.
2826+
2827+
.. versionadded:: 2.7
2828+
2829+
Returns
2830+
-------
2831+
:class:`Role`
2832+
The role in the guild with the specified ID.
2833+
2834+
Raises
2835+
------
2836+
HTTPException
2837+
Retrieving the role failed.
2838+
"""
2839+
data = await self._state.http.get_role(self.id, role_id)
2840+
return Role(guild=self, state=self._state, data=data)
28172841

28182842
async def _fetch_role(self, role_id: int) -> Role:
28192843
"""|coro|

discord/http.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2048,6 +2048,16 @@ def delete_invite(
20482048
def get_roles(self, guild_id: Snowflake) -> Response[list[role.Role]]:
20492049
return self.request(Route("GET", "/guilds/{guild_id}/roles", guild_id=guild_id))
20502050

2051+
def get_role(self, guild_id: Snowflake, role_id: Snowflake) -> Response[role.Role]:
2052+
return self.request(
2053+
Route(
2054+
"GET",
2055+
"/guilds/{guild_id}/roles/{role_id}",
2056+
guild_id=guild_id,
2057+
role_id=role_id,
2058+
)
2059+
)
2060+
20512061
def edit_role(
20522062
self,
20532063
guild_id: Snowflake,

0 commit comments

Comments
 (0)