Add Channel.overwrites to get a channel's permission overwrites.
Fixes #414.
This commit is contained in:
parent
6302ef8094
commit
c7946606f4
@ -191,6 +191,34 @@ class Channel(Hashable):
|
|||||||
|
|
||||||
return PermissionOverwrite()
|
return PermissionOverwrite()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def overwrites(self):
|
||||||
|
"""Returns all of the channel's overwrites.
|
||||||
|
|
||||||
|
This is returned as a list of two-element tuples containing the target,
|
||||||
|
which can be either a :class:`Role` or a :class:`Member` and the overwrite
|
||||||
|
as the second element as a :class:`PermissionOverwrite`.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
--------
|
||||||
|
List[Tuple[Union[:class:`Role`, :class:`Member`], :class:`PermissionOverwrite`]]:
|
||||||
|
The channel's permission overwrites.
|
||||||
|
"""
|
||||||
|
ret = []
|
||||||
|
for ow in self._permission_overwrites:
|
||||||
|
allow = Permissions(ow.allow)
|
||||||
|
deny = Permissions(ow.deny)
|
||||||
|
overwrite = PermissionOverwrite.from_pair(allow, deny)
|
||||||
|
|
||||||
|
if ow.type == 'role':
|
||||||
|
# accidentally quadratic
|
||||||
|
target = utils.find(lambda r: r.id == ow.id, self.server.roles)
|
||||||
|
elif ow.type == 'member':
|
||||||
|
target = self.server.get_member(ow.id)
|
||||||
|
|
||||||
|
ret.append((target, overwrite))
|
||||||
|
return ret
|
||||||
|
|
||||||
def permissions_for(self, member):
|
def permissions_for(self, member):
|
||||||
"""Handles permission resolution for the current :class:`Member`.
|
"""Handles permission resolution for the current :class:`Member`.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user