mirror of
				https://github.com/Rapptz/discord.py.git
				synced 2025-10-30 21:12:58 +00:00 
			
		
		
		
	Add Channel.overwrites_for function to get allow/deny pairs.
This commit is contained in:
		| @@ -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`. | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user