From 047747fc8d2c31ce3658b9c39f4078b0c7032319 Mon Sep 17 00:00:00 2001 From: dolfies Date: Wed, 30 Aug 2023 17:44:30 +0300 Subject: [PATCH] Add User.fetch_mutual_friends() --- discord/http.py | 2 +- discord/member.py | 2 +- discord/user.py | 23 ++++++++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/discord/http.py b/discord/http.py index a65c160ac..af83f129e 100644 --- a/discord/http.py +++ b/discord/http.py @@ -4506,7 +4506,7 @@ class HTTPClient: return self.request(Route('GET', '/users/{user_id}/profile', user_id=user_id), params=params) - def get_mutual_friends(self, user_id: Snowflake): # TODO: return type + def get_mutual_friends(self, user_id: Snowflake) -> Response[List[user.PartialUser]]: return self.request(Route('GET', '/users/{user_id}/relationships', user_id=user_id)) def get_notes(self) -> Response[Dict[Snowflake, str]]: diff --git a/discord/member.py b/discord/member.py index 1f5f43c79..935b5eb4f 100644 --- a/discord/member.py +++ b/discord/member.py @@ -304,7 +304,7 @@ class Member(discord.abc.Messageable, discord.abc.Connectable, _UserTag): block: Callable[[], Awaitable[None]] unblock: Callable[[], Awaitable[None]] remove_friend: Callable[[], Awaitable[None]] - mutual_guilds: List[Guild] + fetch_mutual_friends: Callable[[], Awaitable[List[User]]] public_flags: PublicUserFlags banner: Optional[Asset] accent_color: Optional[Colour] diff --git a/discord/user.py b/discord/user.py index 7bd278363..dd244f32d 100644 --- a/discord/user.py +++ b/discord/user.py @@ -24,7 +24,7 @@ DEALINGS IN THE SOFTWARE. from __future__ import annotations -from typing import Any, Callable, Dict, Optional, Tuple, TYPE_CHECKING, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, TYPE_CHECKING, Union import discord.abc from .asset import Asset @@ -598,6 +598,27 @@ class BaseUser(_UserTag): with_mutual_friends=with_mutual_friends, ) + async def fetch_mutual_friends(self) -> List[User]: + """|coro| + + Fetches mutual friends with the user. + + .. versionadded:: 2.1 + + Raises + ------- + HTTPException + Fetching the mutual friends failed. + + Returns + -------- + List[:class:`User`] + The mutual friends with the user. + """ + state = self._state + data = await state.http.get_mutual_friends(self.id) + return [state.store_user(u) for u in data] + class ClientUser(BaseUser): """Represents your Discord user.