Member.roles array now has the default role as the first element.

This commit is contained in:
Rapptz 2015-11-28 19:26:25 -05:00
parent e10b6c767b
commit df3cb831a9
3 changed files with 6 additions and 4 deletions

View File

@ -139,7 +139,7 @@ class Channel(object):
if member.id == self.server.owner.id:
return Permissions.all()
default = self.server.get_default_role()
default = member.roles[0]
base = deepcopy(default.permissions)
# Apply server roles that the member has.
@ -155,7 +155,7 @@ class Channel(object):
# Apply channel specific role permission overwrites
for overwrite in self._permission_overwrites:
if overwrite.type == 'role':
if overwrite.id in member_role_ids or overwrite.id == self.server.id:
if overwrite.id in member_role_ids:
base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
# Apply member specific permission overwrites

View File

@ -56,7 +56,8 @@ class Member(User):
is not currently in a voice channel.
.. attribute:: roles
An array of :class:`Role` that the member belongs to.
A list of :class:`Role` that the member belongs to. Note that the first element of this
list is always the default '@everyone' role.
.. attribute:: joined_at
A datetime object that specifies the date and time in UTC that the member joined the server for

View File

@ -94,12 +94,13 @@ class Server(object):
self.unavailable = guild.get('unavailable', False)
self.id = guild['id']
self.roles = [Role(everyone=(self.id == r['id']), **r) for r in guild['roles']]
default_role = self.get_default_role()
self.members = []
self.owner = guild['owner_id']
for data in guild['members']:
roles = []
roles = [default_role]
for role_id in data['roles']:
role = utils.find(lambda r: r.id == role_id, self.roles)
if role is not None: