From 0c1be11e9571f967d41593afd8f83b286ad2c169 Mon Sep 17 00:00:00 2001 From: grey-cat-1908 Date: Tue, 31 May 2022 20:13:51 +0300 Subject: [PATCH] feat(CDNBuilder): add guild_member_avatar_url() method --- melisa/models/guild/guild.py | 4 +++- melisa/models/user/user.py | 4 +++- melisa/rest.py | 21 +++++++++++++++++---- tests/test_cdn.py | 11 +++++++++++ 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/melisa/models/guild/guild.py b/melisa/models/guild/guild.py index fcacdf3..f0af6c3 100644 --- a/melisa/models/guild/guild.py +++ b/melisa/models/guild/guild.py @@ -491,7 +491,9 @@ class Guild(APIModelBase): if self.icon is None: return None else: - return self._client.rest.cdn.avatar_url(self.id, self.icon, size=size, image_format=image_format) + return self._client.rest.cdn.avatar_url( + self.id, self.icon, size=size, image_format=image_format + ) @overload async def create_channel( diff --git a/melisa/models/user/user.py b/melisa/models/user/user.py index 6556473..94505c9 100644 --- a/melisa/models/user/user.py +++ b/melisa/models/user/user.py @@ -216,7 +216,9 @@ class User(APIModelBase): if self.avatar is None: return self.default_avatar_url() - return self._client.rest.cdn.avatar_url(self.id, self.avatar, size=size, image_format=image_format) + return self._client.rest.cdn.avatar_url( + self.id, self.avatar, size=size, image_format=image_format + ) def default_avatar_url(self): """Default avatar url (from the Discord CDN server)""" diff --git a/melisa/rest.py b/melisa/rest.py index 936fe77..3999965 100644 --- a/melisa/rest.py +++ b/melisa/rest.py @@ -700,10 +700,23 @@ class CDNBuilder: size, ) - def default_avatar_url( - self, discriminator: str + def default_avatar_url(self, discriminator: str): + return "{}/embed/avatars/{}.png".format(self.BASE_URL, int(discriminator) % 5) + + def guild_member_avatar_url( + self, + guild_id: str, + user_id: str, + _hash: str, + *, + size: int = 1024, + image_format: str = None, ): - return "{}/embed/avatars/{}.png".format( + return "{}/guilds/{}/users/{}/avatars/{}.{}?size={}".format( self.BASE_URL, - int(discriminator) % 5 + guild_id, + user_id, + _hash, + image_format if image_format is not None else self.dif, + size, ) diff --git a/tests/test_cdn.py b/tests/test_cdn.py index 8993480..269042f 100644 --- a/tests/test_cdn.py +++ b/tests/test_cdn.py @@ -25,3 +25,14 @@ class TestCDN: ) == "https://cdn.discordapp.com/icons/951867868188934216/5ef33b1f6c4b35f19b605c51c5a64469.webp?size=1024" ) + + def test_guild_member_avatar_url(self): + assert ( + cdn.guild_member_avatar_url( + "846496831533088768", + "258096047413264384", + "4c0a529ab1d524783585169fe0512240", + size=240, + ) + == "https://cdn.discordapp.com/guilds/846496831533088768/users/258096047413264384/avatars/4c0a529ab1d524783585169fe0512240.png?size=240" + )