From 9a6b2fa402ce7767ebc2b79788d2f864e02e280f Mon Sep 17 00:00:00 2001 From: jack1142 <6032823+jack1142@users.noreply.github.com> Date: Thu, 17 Feb 2022 17:26:41 +0100 Subject: [PATCH] Add Thread.fetch_member See: discord/discord-api-docs#3998 --- discord/http.py | 4 ++++ discord/threads.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/discord/http.py b/discord/http.py index 39aec87f6..2524844de 100644 --- a/discord/http.py +++ b/discord/http.py @@ -975,6 +975,10 @@ class HTTPClient: route = Route('GET', '/guilds/{guild_id}/threads/active', guild_id=guild_id) return self.request(route) + def get_thread_member(self, channel_id: Snowflake, user_id: Snowflake) -> Response[threads.ThreadMember]: + route = Route('GET', '/channels/{channel_id}/thread-members/{user_id}', channel_id=channel_id, user_id=user_id) + return self.request(route) + def get_thread_members(self, channel_id: Snowflake) -> Response[List[threads.ThreadMember]]: route = Route('GET', '/channels/{channel_id}/thread-members', channel_id=channel_id) return self.request(route) diff --git a/discord/threads.py b/discord/threads.py index 892910d9e..f9d3bb1dd 100644 --- a/discord/threads.py +++ b/discord/threads.py @@ -663,6 +663,27 @@ class Thread(Messageable, Hashable): """ await self._state.http.remove_user_from_thread(self.id, user.id) + async def fetch_member(self, user_id: int, /) -> ThreadMember: + """|coro| + + Retrieves a :class:`ThreadMember` for the given user ID. + + Raises + ------- + NotFound + The specified user is not a member of this thread. + HTTPException + Retrieving the member failed. + + Returns + -------- + :class:`ThreadMember` + The thread member from the user ID. + """ + + data = await self._state.http.get_thread_member(self.id, user_id) + return ThreadMember(parent=self, data=data) + async def fetch_members(self) -> List[ThreadMember]: """|coro|