mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-13 17:29:50 +00:00
Fix Channel.permissions_for to work with the new permission system.
This commit is contained in:
parent
dd8a60f743
commit
9176caa355
@ -224,22 +224,22 @@ class Channel(Hashable):
|
|||||||
return Permissions.all()
|
return Permissions.all()
|
||||||
|
|
||||||
default = self.server.default_role
|
default = self.server.default_role
|
||||||
base = deepcopy(default.permissions)
|
base = Permissions(default.permissions.value)
|
||||||
|
|
||||||
# Apply server roles that the member has.
|
# Apply server roles that the member has.
|
||||||
for role in member.roles:
|
for role in member.roles:
|
||||||
base.value |= role.permissions.value
|
base.value |= role.permissions.value
|
||||||
|
|
||||||
# Server-wide Manage Roles -> True for everything
|
# Server-wide Administrator -> True for everything
|
||||||
if base.manage_roles:
|
# Bypass all channel-specific overrides
|
||||||
base = Permissions.all()
|
if base.administrator:
|
||||||
|
return Permissions.all()
|
||||||
|
|
||||||
member_role_ids = set(map(lambda r: r.id, member.roles))
|
member_role_ids = set(map(lambda r: r.id, member.roles))
|
||||||
|
|
||||||
# Apply channel specific role permission overwrites
|
# Apply channel specific role permission overwrites
|
||||||
for overwrite in self._permission_overwrites:
|
for overwrite in self._permission_overwrites:
|
||||||
if overwrite.type == 'role':
|
if overwrite.type == 'role' and overwrite.id in member_role_ids:
|
||||||
if overwrite.id in member_role_ids:
|
|
||||||
base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
|
base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
|
||||||
|
|
||||||
# Apply member specific permission overwrites
|
# Apply member specific permission overwrites
|
||||||
@ -247,11 +247,6 @@ class Channel(Hashable):
|
|||||||
if overwrite.type == 'member' and overwrite.id == member.id:
|
if overwrite.type == 'member' and overwrite.id == member.id:
|
||||||
base.handle_overwrite(allow=overwrite.allow, deny=overwrite.deny)
|
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:
|
if self.is_default:
|
||||||
base.read_messages = True
|
base.read_messages = True
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user