aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/__init__.py2
-rw-r--r--discord/client.py9
-rw-r--r--discord/enums.py10
-rw-r--r--discord/server.py15
-rw-r--r--docs/api.rst24
5 files changed, 50 insertions, 10 deletions
diff --git a/discord/__init__.py b/discord/__init__.py
index 62166ddf..bd0eac31 100644
--- a/discord/__init__.py
+++ b/discord/__init__.py
@@ -34,7 +34,7 @@ from .invite import Invite
from .object import Object
from . import utils, opus, compat
from .voice_client import VoiceClient
-from .enums import ChannelType, ServerRegion, Status, MessageType
+from .enums import ChannelType, ServerRegion, Status, MessageType, VerificationLevel
from collections import namedtuple
import logging
diff --git a/discord/client.py b/discord/client.py
index 93679244..74a417cd 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -38,7 +38,7 @@ from .errors import *
from .state import ConnectionState
from .permissions import Permissions, PermissionOverwrite
from . import utils, compat
-from .enums import ChannelType, ServerRegion
+from .enums import ChannelType, ServerRegion, VerificationLevel
from .voice_client import VoiceClient
from .iterators import LogsFromIterator
from .gateway import *
@@ -1930,6 +1930,8 @@ class Client:
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`
+ The new verification level for the server.
Raises
-------
@@ -1968,6 +1970,11 @@ class Client:
if 'region' in fields:
fields['region'] = str(fields['region'])
+ level = fields.get('verification_level', server.verification_level)
+ if not isinstance(level, VerificationLevel):
+ raise InvalidArgument('verification_level field must of type VerificationLevel')
+
+ fields['verification_level'] = level.value
yield from self.http.edit_server(server.id, **fields)
@asyncio.coroutine
diff --git a/discord/enums.py b/discord/enums.py
index c5cdb6f3..191728ee 100644
--- a/discord/enums.py
+++ b/discord/enums.py
@@ -64,6 +64,16 @@ class ServerRegion(Enum):
def __str__(self):
return self.value
+class VerificationLevel(Enum):
+ none = 0
+ low = 1
+ medium = 2
+ high = 3
+ table_flip = 3
+
+ def __str__(self):
+ return self.name
+
class Status(Enum):
online = 'online'
offline = 'offline'
diff --git a/discord/server.py b/discord/server.py
index 035b52a1..6703a8fc 100644
--- a/discord/server.py
+++ b/discord/server.py
@@ -30,7 +30,7 @@ from .member import Member
from .emoji import Emoji
from .game import Game
from .channel import Channel
-from .enums import ServerRegion, Status
+from .enums import ServerRegion, Status, try_enum, VerificationLevel
from .mixins import Hashable
class Server(Hashable):
@@ -92,12 +92,15 @@ class Server(Hashable):
Indicates the server's two factor authorisation level. If this value is 0 then
the server does not require 2FA for their administrative members. If the value is
1 then they do.
+ verification_level: :class:`VerificationLevel`
+ The server's verification level.
"""
__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']
+ 'large', 'owner_id', 'mfa_level', 'emojis',
+ 'verification_level' ]
def __init__(self, **kwargs):
self._channels = {}
@@ -176,12 +179,8 @@ class Server(Hashable):
self._member_count = member_count
self.name = guild.get('name')
- self.region = guild.get('region')
- try:
- self.region = ServerRegion(self.region)
- except:
- pass
-
+ self.region = try_enum(ServerRegion, guild.get('region'))
+ self.verification_level = try_enum(VerificationLevel, guild.get('verification_level'))
self.afk_timeout = guild.get('afk_timeout')
self.icon = guild.get('icon')
self.unavailable = guild.get('unavailable', False)
diff --git a/docs/api.rst b/docs/api.rst
index 168a6f19..02572dd2 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -512,6 +512,30 @@ All enumerations are subclasses of `enum`_.
The Amsterdam region for VIP servers.
+.. class:: VerificationLevel
+
+ Specifies a :class:`Server`\'s verification level, which is the criteria in
+ which a member must meet before being able to send messages to the server.
+
+ .. attribute:: none
+
+ No criteria set.
+ .. attribute:: low
+
+ Member must have a verified email on their Discord account.
+ .. attribute:: medium
+
+ Member must have a verified email and be registered on Discord for more
+ than five minutes.
+ .. attribute:: high
+
+ Member must have a verified email, be registered on Discord for more
+ than five minutes, and be a member of the server itself for more than
+ ten minutes.
+ .. attribute:: table_flip
+
+ An alias for :attr:`high`.
+
.. class:: Status
Specifies a :class:`Member` 's status.