mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-21 08:17:47 +00:00
Add Channel.overwrites_for function to get allow/deny pairs.
This commit is contained in:
parent
7023b353f6
commit
03041bdb0a
@ -29,8 +29,11 @@ from .permissions import Permissions
|
||||
from .enums import ChannelType
|
||||
from collections import namedtuple
|
||||
from .mixins import Hashable
|
||||
from .role import Role
|
||||
from .member import Member
|
||||
|
||||
Overwrites = namedtuple('Overwrites', 'id allow deny type')
|
||||
PermissionOverwrite = namedtuple('PermissionOverwrite', 'allow deny')
|
||||
|
||||
class Channel(Hashable):
|
||||
"""Represents a Discord server channel.
|
||||
@ -151,6 +154,34 @@ class Channel(Hashable):
|
||||
"""Returns the channel's creation time in UTC."""
|
||||
return utils.snowflake_time(self.id)
|
||||
|
||||
def overwrites_for(self, obj):
|
||||
"""Returns a namedtuple that gives you the channel-specific overwrites
|
||||
for a member or a role.
|
||||
|
||||
The named tuple is a tuple of (allow, deny) :class:`Permissions`
|
||||
with the appropriately named entries.
|
||||
|
||||
Parameters
|
||||
-----------
|
||||
obj
|
||||
The :class:`Role` or :class:`Member` or :class:`Object` denoting
|
||||
whose overwrite to get.
|
||||
"""
|
||||
|
||||
if isinstance(obj, Member):
|
||||
predicate = lambda p: p.type == 'member'
|
||||
elif isinstance(obj, Role):
|
||||
predicate = lambda p: p.type == 'role'
|
||||
else:
|
||||
predicate = lambda p: True
|
||||
|
||||
for overwrite in filter(predicate, self._permission_overwrites):
|
||||
if overwrite.id == obj.id:
|
||||
return PermissionOverwrite(allow=Permissions(overwrite.allow),
|
||||
deny=Permissions(overwrite.deny))
|
||||
|
||||
return PermissionOverwrite(allow=Permissions.none(), deny=Permissions.none())
|
||||
|
||||
def permissions_for(self, member):
|
||||
"""Handles permission resolution for the current :class:`Member`.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user