diff options
| author | Rapptz <[email protected]> | 2018-09-24 21:05:41 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2018-09-24 21:08:48 -0400 |
| commit | 3d03dbc45179f645b59838729047e896cc387049 (patch) | |
| tree | 63592f4d631c33ee0b22b7f6bb57818ad48b2671 /discord/abc.py | |
| parent | Take the default role property into account when comparing roles. (diff) | |
| download | discord.py-3d03dbc45179f645b59838729047e896cc387049.tar.xz discord.py-3d03dbc45179f645b59838729047e896cc387049.zip | |
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.
Diffstat (limited to 'discord/abc.py')
| -rw-r--r-- | discord/abc.py | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/discord/abc.py b/discord/abc.py index 0ca11452..8482104a 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -288,8 +288,9 @@ class GuildChannel: """Returns a :class:`list` of :class:`Roles` that have been overridden from their default values in the :attr:`Guild.roles` attribute.""" ret = [] + g = self.guild for overwrite in filter(lambda o: o.type == 'role', self._overwrites): - role = utils.get(self.guild.roles, id=overwrite.id) + role = g.get_role(overwrite.id) if role is None: continue @@ -358,8 +359,7 @@ class GuildChannel: overwrite = PermissionOverwrite.from_pair(allow, deny) if ow.type == 'role': - # accidentally quadratic - target = utils.find(lambda r: r.id == ow.id, self.guild.roles) + target = self.guild.get_role(ow.id) elif ow.type == 'member': target = self.guild.get_member(ow.id) |