From 3727ea981119bf719db45d5bfe401cb2c5cd75a3 Mon Sep 17 00:00:00 2001 From: "Matt (IPv4)" Date: Fri, 5 Oct 2018 16:42:13 +0100 Subject: [PATCH] Add Guild.splash_url_as --- discord/guild.py | 41 ++++++++++++++++++++++++++++++++++++----- discord/utils.py | 4 ++-- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/discord/guild.py b/discord/guild.py index b61f11a3a..2288c2a73 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -404,10 +404,10 @@ class Guild(Hashable): return self.icon_url_as() def icon_url_as(self, *, format='webp', size=1024): - """Returns a friendly URL version of the guild's icon. Returns and empty string if it has no icon. + """Returns a friendly URL version of the guild's icon. Returns an empty string if it has no icon. The format must be one of 'webp', 'jpeg', 'jpg', or 'png'. The - size must be a power of 2 between 16 and 1024. + size must be a power of 2 between 16 and 2048. Parameters ----------- @@ -427,7 +427,7 @@ class Guild(Hashable): Bad image format passed to ``format`` or invalid ``size``. """ if not valid_icon_size(size): - raise InvalidArgument("size must be a power of 2 between 16 and 1024") + raise InvalidArgument("size must be a power of 2 between 16 and 2048") if format not in VALID_ICON_FORMATS: raise InvalidArgument("format must be one of {}".format(VALID_ICON_FORMATS)) @@ -435,13 +435,44 @@ class Guild(Hashable): return '' return 'https://cdn.discordapp.com/icons/{0.id}/{0.icon}.{1}?size={2}'.format(self, format, size) - + @property def splash_url(self): """Returns the URL version of the guild's invite splash. Returns an empty string if it has no splash.""" + return self.icon_url_as() + + def splash_url_as(self, *, format='webp', size=2048): + """Returns a friendly URL version of the guild's invite splash. Returns an empty string if it has no splash. + + The format must be one of 'webp', 'jpeg', 'jpg', or 'png'. The + size must be a power of 2 between 16 and 2048. + + Parameters + ----------- + format: str + The format to attempt to convert the splash to. + size: int + The size of the image to display. + + Returns + -------- + str + The resulting CDN URL. + + Raises + ------ + InvalidArgument + Bad image format passed to ``format`` or invalid ``size``. + """ + if not valid_icon_size(size): + raise InvalidArgument("size must be a power of 2 between 16 and 2048") + if format not in VALID_ICON_FORMATS: + raise InvalidArgument("format must be one of {}".format(VALID_ICON_FORMATS)) + if self.splash is None: return '' - return 'https://cdn.discordapp.com/splashes/{0.id}/{0.splash}.jpg?size=2048'.format(self) + + return 'https://cdn.discordapp.com/splashes/{0.id}/{0.splash}.{1}?size={2}'.format(self, format, size) @property def member_count(self): diff --git a/discord/utils.py b/discord/utils.py index f536200fe..705d5daa1 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -290,8 +290,8 @@ async def sane_wait_for(futures, *, timeout, loop): raise asyncio.TimeoutError() def valid_icon_size(size): - """Icons must be power of 2 within [16, 1024].""" - return ((size != 0) and not (size & (size - 1))) and size in range(16, 1025) + """Icons must be power of 2 within [16, 2048].""" + return ((size != 0) and not (size & (size - 1))) and size in range(16, 2049) class SnowflakeList(array.array): """Internal data storage class to efficiently store a list of snowflakes.