Change internal role storage in Guild to a dict instead of a list.

This adds the following APIs:

* Guild.get_role

This removes the following APIs:

* Guild.role_hierarchy

To compensate for the removed APIs, Guild.roles is now a sorted list
based on hierarchy. The first element will always be the @everyone
role.

This speeds up access at the cost of some memory, theoretically.
This commit is contained in:
Rapptz
2018-09-24 21:05:41 -04:00
parent 12cb074316
commit 3d03dbc451
9 changed files with 61 additions and 46 deletions

View File

@ -189,8 +189,8 @@ class Member(discord.abc.Messageable, _BaseUser):
def _update_roles(self, data):
# update the roles
self.roles = [self.guild.default_role]
for roleid in map(int, data['roles']):
role = utils.find(lambda r: r.id == roleid, self.guild.roles)
for role_id in map(int, data['roles']):
role = self.guild.get_role(role_id)
if role is not None:
self.roles.append(role)