aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-05-12 21:14:52 -0400
committerRapptz <[email protected]>2016-05-12 21:25:18 -0400
commit9176caa355de3afcf2f711a7f0cea825fefadadc (patch)
tree8f8e9176095ce65061759f02ef21736c265ecfa2
parentAdd Permissions.administrator and change Permissions.manage_roles (diff)
downloaddiscord.py-9176caa355de3afcf2f711a7f0cea825fefadadc.tar.xz
discord.py-9176caa355de3afcf2f711a7f0cea825fefadadc.zip
Fix Channel.permissions_for to work with the new permission system.
-rw-r--r--discord/channel.py19
1 files changed, 7 insertions, 12 deletions
diff --git a/discord/channel.py b/discord/channel.py
index 8353b1ba..08631a6c 100644
--- a/discord/channel.py
+++ b/discord/channel.py
@@ -224,34 +224,29 @@ class Channel(Hashable):
return Permissions.all()
default = self.server.default_role
- base = deepcopy(default.permissions)
+ base = Permissions(default.permissions.value)
# Apply server roles that the member has.
for role in member.roles:
base.value |= role.permissions.value
- # Server-wide Manage Roles -> True for everything
- if base.manage_roles:
- base = Permissions.all()
+ # Server-wide Administrator -> True for everything
+ # Bypass all channel-specific overrides
+ if base.administrator:
+ return Permissions.all()
member_role_ids = set(map(lambda r: r.id, member.roles))
# Apply channel specific role permission overwrites
for overwrite in self._permission_overwrites:
- if overwrite.type == 'role':
- if overwrite.id in member_role_ids:
- base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
+ if overwrite.type == 'role' and overwrite.id in member_role_ids:
+ base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
# Apply member specific permission overwrites
for overwrite in self._permission_overwrites:
if overwrite.type == 'member' and overwrite.id == member.id:
base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
- if base.manage_roles:
- # This point is essentially Channel-specific Manage Roles.
- tmp = Permissions.all_channel()
- base.value |= tmp.value
-
if self.is_default:
base.read_messages = True