diff --git a/redbot/cogs/mod/checks.py b/redbot/cogs/mod/checks.py index 56e1b1463..3cb1baaf5 100644 --- a/redbot/cogs/mod/checks.py +++ b/redbot/cogs/mod/checks.py @@ -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: diff --git a/redbot/core/checks.py b/redbot/core/checks.py index c33802fcc..a72249781 100644 --- a/redbot/core/checks.py +++ b/redbot/core/checks.py @@ -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):