Browse Source

add Guild.icon_url_as

Guild icons can also be up to 1024px, jpg, png, or webp
pull/670/merge
khazhyk 8 years ago
committed by Rapptz
parent
commit
2c4876f2e7
  1. 36
      discord/guild.py

36
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):

Loading…
Cancel
Save