aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhazhyk <[email protected]>2017-07-24 21:03:08 -0700
committerRapptz <[email protected]>2017-07-25 06:09:41 -0400
commit2c4876f2e71ce69612d88cec351aa581a3d6902a (patch)
tree2d745f187dcf417a4346eca09907645580d41a23
parentavatar_url_as improvements (diff)
downloaddiscord.py-2c4876f2e71ce69612d88cec351aa581a3d6902a.tar.xz
discord.py-2c4876f2e71ce69612d88cec351aa581a3d6902a.zip
add Guild.icon_url_as
Guild icons can also be up to 1024px, jpg, png, or webp
-rw-r--r--discord/guild.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/discord/guild.py b/discord/guild.py
index 215dff84..34eed175 100644
--- a/discord/guild.py
+++ b/discord/guild.py
@@ -39,10 +39,13 @@ from .errors import InvalidArgument, ClientException
from .channel import *
from .enums import VoiceRegion, Status, ChannelType, try_enum, VerificationLevel, ContentFilter
from .mixins import Hashable
+from .utils import valid_icon_size
from .user import User
from .invite import Invite
from .iterators import AuditLogIterator
+VALID_ICON_FORMATS = {"jpeg", "jpg", "webp", "png"}
+
BanEntry = namedtuple('BanEntry', 'reason user')
class Guild(Hashable):
@@ -332,9 +335,40 @@ class Guild(Hashable):
@property
def icon_url(self):
"""Returns the URL version of the guild's icon. Returns an empty string if it has no icon."""
+ 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.
+
+ The format must be one of 'webp', 'jpeg', 'jpg', or 'png'. The
+ size must be a power of 2 between 16 and 1024.
+
+ Parameters
+ -----------
+ format: str
+ The format to attempt to convert the icon 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 1024")
+ if format not in VALID_ICON_FORMATS:
+ raise InvalidArgument("format must be one of {}".format(VALID_ICON_FORMATS))
+
if self.icon is None:
return ''
- return 'https://cdn.discordapp.com/icons/{0.id}/{0.icon}.jpg'.format(self)
+
+ return 'https://cdn.discordapp.com/icons/{0.id}/{0.icon}.{1}?size={2}'.format(self, format, size)
@property
def splash_url(self):