mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-19 15:36:02 +00:00
Fix permissions_for for roles
This commit is contained in:
parent
8675a18185
commit
dd5fc656d9
@ -544,6 +544,7 @@ class GuildChannel:
|
||||
someone with that role would have, which is essentially:
|
||||
|
||||
- The default role permissions
|
||||
- The permissions of the role used as a parameter
|
||||
- The default role permission overwrites
|
||||
- The permission overwrites of the role used as a parameter
|
||||
|
||||
@ -585,24 +586,26 @@ class GuildChannel:
|
||||
|
||||
# Handle the role case first
|
||||
if isinstance(obj, Role):
|
||||
base.value |= obj._permissions
|
||||
|
||||
if base.administrator:
|
||||
return Permissions.all()
|
||||
|
||||
# Apply @everyone allow/deny first since it's special
|
||||
try:
|
||||
maybe_everyone = self._overwrites[0]
|
||||
if maybe_everyone.id == self.guild.id:
|
||||
base.handle_overwrite(allow=maybe_everyone.allow, deny=maybe_everyone.deny)
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
if obj.is_default():
|
||||
overwrite = utils.get(self._overwrites, type=_Overwrites.ROLE, id=obj.id)
|
||||
if overwrite is not None:
|
||||
base.handle_overwrite(overwrite.allow, overwrite.deny)
|
||||
return base
|
||||
|
||||
denies = 0
|
||||
allows = 0
|
||||
guild_id = self.guild.id
|
||||
for overwrite in self._overwrites:
|
||||
if not overwrite.is_role():
|
||||
continue
|
||||
overwrite = utils.get(self._overwrites, type=_Overwrites.ROLE, id=obj.id)
|
||||
if overwrite is not None:
|
||||
base.handle_overwrite(overwrite.allow, overwrite.deny)
|
||||
|
||||
if overwrite.id in (obj.id, guild_id):
|
||||
denies |= overwrite.deny
|
||||
allows |= overwrite.allow
|
||||
|
||||
base.handle_overwrite(allows, denies)
|
||||
return base
|
||||
|
||||
roles = obj._roles
|
||||
|
Loading…
x
Reference in New Issue
Block a user