aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/client.py32
-rw-r--r--discord/server.py24
2 files changed, 45 insertions, 11 deletions
diff --git a/discord/client.py b/discord/client.py
index 948b5b92..8cfe48ef 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -2290,20 +2290,25 @@ class Client:
Parameters
----------
- server : :class:`Server`
+ server: :class:`Server`
The server to edit.
- name : str
+ name: str
The new name of the server.
- icon : bytes
+ icon: bytes
A *bytes-like* object representing the icon. See :meth:`edit_profile`
- for more details. Could be ``None`` to denote
- region : :class:`ServerRegion`
+ for more details. Could be ``None`` to denote no icon.
+ splash: bytes
+ A *bytes-like* object representing the invite splash. See
+ :meth:`edit_profile` for more details. Could be ``None`` to denote
+ no invite splash. Only available for partnered servers with
+ ``INVITE_SPLASH`` feature.
+ region: :class:`ServerRegion`
The new region for the server's voice communication.
- afk_channel : :class:`Channel`
+ afk_channel: :class:`Channel`
The new channel that is the AFK channel. Could be ``None`` for no AFK channel.
- afk_timeout : int
+ afk_timeout: int
The number of seconds until someone is moved to the AFK channel.
- owner : :class:`Member`
+ owner: :class:`Member`
The new owner of the server to transfer ownership to. Note that you must
be owner of the server to do this.
verification_level: :class:`VerificationLevel`
@@ -2333,7 +2338,18 @@ class Client:
else:
icon = None
+ try:
+ splash_bytes = fields['splash']
+ except KeyError:
+ splash = server.splash
+ else:
+ if splash_bytes is not None:
+ splash = utils._bytes_to_base64_data(splash_bytes)
+ else:
+ splash = None
+
fields['icon'] = icon
+ fields['splash'] = splash
if 'afk_channel' in fields:
fields['afk_channel_id'] = fields['afk_channel'].id
diff --git a/discord/server.py b/discord/server.py
index c2514509..18e9647e 100644
--- a/discord/server.py
+++ b/discord/server.py
@@ -97,13 +97,22 @@ class Server(Hashable):
1 then they do.
verification_level: :class:`VerificationLevel`
The server's verification level.
+ features: List[str]
+ A list of features that the server has. They are currently as follows:
+
+ - ``VIP_REGIONS``: Server has VIP voice regions
+ - ``VANITY_URL``: Server has a vanity invite URL (e.g. discord.gg/discord-api)
+ - ``INVITE_SPLASH``: Server's invite page has a special splash.
+
+ splash: str
+ The server's invite splash.
"""
__slots__ = ['afk_timeout', 'afk_channel', '_members', '_channels', 'icon',
'name', 'id', 'owner', 'unavailable', 'name', 'region',
'_default_role', '_default_channel', 'roles', '_member_count',
- 'large', 'owner_id', 'mfa_level', 'emojis',
- 'verification_level' ]
+ 'large', 'owner_id', 'mfa_level', 'emojis', 'features',
+ 'verification_level', 'splash' ]
def __init__(self, **kwargs):
self._channels = {}
@@ -191,6 +200,8 @@ class Server(Hashable):
self.roles = [Role(server=self, **r) for r in guild.get('roles', [])]
self.mfa_level = guild.get('mfa_level')
self.emojis = [Emoji(server=self, **r) for r in guild.get('emojis', [])]
+ self.features = guild.get('features', [])
+ self.splash = guild.get('splash')
for mdata in guild.get('members', []):
roles = [self.default_role]
@@ -205,7 +216,7 @@ class Server(Hashable):
self._add_member(member)
self._sync(guild)
- self.large = None if member_count is None else self._member_count > 250
+ self.large = None if member_count is None else self._member_count >= 250
if 'owner_id' in guild:
self.owner_id = guild['owner_id']
@@ -258,6 +269,13 @@ class Server(Hashable):
return 'https://discordapp.com/api/guilds/{0.id}/icons/{0.icon}.jpg'.format(self)
@property
+ def splash_url(self):
+ """Returns the URL version of the server's invite splash. Returns an empty string if it has no splash."""
+ if self.splash is None:
+ return ''
+ return 'https://cdn.discordapp.com/splashes/{0.id}/{0.splash}.jpg?size=2048'.format(self)
+
+ @property
def member_count(self):
"""Returns the true member count regardless of it being loaded fully or not."""
return self._member_count