aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2015-10-21 20:27:08 -0400
committerRapptz <[email protected]>2015-10-21 20:27:08 -0400
commitd2741ca38a94bde92b080fb6a9f65b6673f5a656 (patch)
tree67c03eddf403f23f278dedfcb881197ae9fdeabb
parentAdd Client.replace_roles (diff)
downloaddiscord.py-d2741ca38a94bde92b080fb6a9f65b6673f5a656.tar.xz
discord.py-d2741ca38a94bde92b080fb6a9f65b6673f5a656.zip
Better detection for the everyone role. Fixes #23.
-rw-r--r--discord/client.py9
-rw-r--r--discord/role.py4
2 files changed, 8 insertions, 5 deletions
diff --git a/discord/client.py b/discord/client.py
index 6053d7e3..ebc911c1 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -158,7 +158,7 @@ class ConnectionState(object):
return member
def _add_server(self, guild):
- guild['roles'] = [Role(**role) for role in guild['roles']]
+ guild['roles'] = [Role(everyone=(guild['id'] == role['id']), **role) for role in guild['roles']]
members = guild['members']
owner = guild['owner_id']
for i, member in enumerate(members):
@@ -334,7 +334,9 @@ class ConnectionState(object):
def handle_guild_role_create(self, data):
server = self._get_server(data.get('guild_id'))
- role = Role(**data.get('role', {}))
+ role_data = data.get('role', {})
+ everyone = server.id == role_data.get('id')
+ role = Role(everyone=everyone, **role_data)
server.roles.append(role)
self.dispatch('server_role_create', server, role)
@@ -1183,7 +1185,8 @@ class Client(object):
if is_response_successful(response):
data = response.json()
- role = Role(**data)
+ everyone = server.id == data.get('id')
+ role = Role(everyone=everyone, **data)
if self.edit_role(server, role, **fields):
# we have to call edit because you can't pass a payload to the
# http request currently.
diff --git a/discord/role.py b/discord/role.py
index 2fecfdf9..9e50cca4 100644
--- a/discord/role.py
+++ b/discord/role.py
@@ -197,8 +197,7 @@ class Role(object):
A boolean representing if the role will be displayed separately from other members.
.. attribute:: position
- The position of the role. This number is usually positive. A non-positive value indicates that
- this is the `@everyone` role.
+ The position of the role. This number is usually positive.
.. attribute:: managed
A boolean indicating if the role is managed by the server through some form of integration
@@ -217,6 +216,7 @@ class Role(object):
self.hoist = kwargs.get('hoist', False)
self.managed = kwargs.get('managed', False)
self.color = self.colour
+ self._is_everyone = kwargs.get('everyone', False)
def is_everyone(self):
"""Checks if the role is the @everyone role."""