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:
@ -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)
|
||||
|
||||
|
Reference in New Issue
Block a user