mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-07-23 11:26:51 +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:
|
someone with that role would have, which is essentially:
|
||||||
|
|
||||||
- The default role permissions
|
- The default role permissions
|
||||||
|
- The permissions of the role used as a parameter
|
||||||
- The default role permission overwrites
|
- The default role permission overwrites
|
||||||
- The permission overwrites of the role used as a parameter
|
- The permission overwrites of the role used as a parameter
|
||||||
|
|
||||||
@ -585,24 +586,26 @@ class GuildChannel:
|
|||||||
|
|
||||||
# Handle the role case first
|
# Handle the role case first
|
||||||
if isinstance(obj, Role):
|
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():
|
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
|
return base
|
||||||
|
|
||||||
denies = 0
|
overwrite = utils.get(self._overwrites, type=_Overwrites.ROLE, id=obj.id)
|
||||||
allows = 0
|
if overwrite is not None:
|
||||||
guild_id = self.guild.id
|
base.handle_overwrite(overwrite.allow, overwrite.deny)
|
||||||
for overwrite in self._overwrites:
|
|
||||||
if not overwrite.is_role():
|
|
||||||
continue
|
|
||||||
|
|
||||||
if overwrite.id in (obj.id, guild_id):
|
|
||||||
denies |= overwrite.deny
|
|
||||||
allows |= overwrite.allow
|
|
||||||
|
|
||||||
base.handle_overwrite(allows, denies)
|
|
||||||
return base
|
return base
|
||||||
|
|
||||||
roles = obj._roles
|
roles = obj._roles
|
||||||
|
Loading…
x
Reference in New Issue
Block a user