From 9ab938a9ea5ffcd13c8a0d8fbc662ef1a651ca5a Mon Sep 17 00:00:00 2001 From: Andrin <65789180+Puncher1@users.noreply.github.com> Date: Wed, 28 Aug 2024 21:54:34 +0200 Subject: [PATCH] Add Guild.fetch_role --- discord/guild.py | 31 +++++++++++++++++++++++++++++++ discord/http.py | 3 +++ 2 files changed, 34 insertions(+) diff --git a/discord/guild.py b/discord/guild.py index f34818b63..5296faa07 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -3408,6 +3408,37 @@ class Guild(Hashable): data = await self._state.http.get_roles(self.id) return [Role(guild=self, state=self._state, data=d) for d in data] + async def fetch_role(self, role_id: int, /) -> Role: + """|coro| + + Retrieves a :class:`Role` with the specified ID. + + .. versionadded:: 2.5 + + .. note:: + + This method is an API call. For general usage, consider :attr:`get_role` instead. + + Parameters + ---------- + role_id: :class:`int` + The role's ID. + + Raises + ------- + NotFound + The role requested could not be found. + HTTPException + An error occurred fetching the role. + + Returns + ------- + :class:`Role` + The retrieved role. + """ + data = await self._state.http.get_role(self.id, role_id) + return Role(guild=self, state=self._state, data=data) + @overload async def create_role( self, diff --git a/discord/http.py b/discord/http.py index 608595fe3..08daa6efc 100644 --- a/discord/http.py +++ b/discord/http.py @@ -1858,6 +1858,9 @@ class HTTPClient: def get_roles(self, guild_id: Snowflake) -> Response[List[role.Role]]: return self.request(Route('GET', '/guilds/{guild_id}/roles', guild_id=guild_id)) + def get_role(self, guild_id: Snowflake, role_id: Snowflake) -> Response[role.Role]: + return self.request(Route('GET', '/guilds/{guild_id}/roles/{role_id}', guild_id=guild_id, role_id=role_id)) + def edit_role( self, guild_id: Snowflake, role_id: Snowflake, *, reason: Optional[str] = None, **fields: Any ) -> Response[role.Role]: