[V3 Checks] Respect administrator and guildowner permissions (#1711)

* respect admin and guildowner (implicitly) in checks for permissions

* this needed it too
This commit is contained in:
Michael H 2018-05-24 11:17:21 -04:00 committed by Tobotimus
parent ccbaa926ce
commit 928be5717f
2 changed files with 12 additions and 4 deletions

View File

@ -19,7 +19,9 @@ def mod_or_voice_permissions(**perms):
for vc in guild.voice_channels:
resolved = vc.permissions_for(author)
good = all(getattr(resolved, name, None) == value for name, value in perms.items())
good = resolved.administrator or all(
getattr(resolved, name, None) == value for name, value in perms.items()
)
if not good:
return False
else:
@ -40,7 +42,9 @@ def admin_or_voice_permissions(**perms):
return True
for vc in guild.voice_channels:
resolved = vc.permissions_for(author)
good = all(getattr(resolved, name, None) == value for name, value in perms.items())
good = resolved.administrator or all(
getattr(resolved, name, None) == value for name, value in perms.items()
)
if not good:
return False
else:
@ -55,7 +59,9 @@ def bot_has_voice_permissions(**perms):
guild = ctx.guild
for vc in guild.voice_channels:
resolved = vc.permissions_for(guild.me)
good = all(getattr(resolved, name, None) == value for name, value in perms.items())
good = resolved.administrator or all(
getattr(resolved, name, None) == value for name, value in perms.items()
)
if not good:
return False
else:

View File

@ -31,7 +31,9 @@ async def check_permissions(ctx, perms):
return False
resolved = ctx.channel.permissions_for(ctx.author)
return all(getattr(resolved, name, None) == value for name, value in perms.items())
return resolved.administrator or all(
getattr(resolved, name, None) == value for name, value in perms.items()
)
async def is_mod_or_superior(ctx):