From 701259158f92e454682dc5e8391328acd5ded25c Mon Sep 17 00:00:00 2001 From: Toby Harradine Date: Fri, 21 Dec 2018 10:35:17 +1100 Subject: [PATCH] [Permissions] Always respect default rules (#2341) Resolves #2340. Signed-off-by: Toby Harradine --- redbot/core/commands/requires.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/redbot/core/commands/requires.py b/redbot/core/commands/requires.py index 911e3243d..2b98d69c7 100644 --- a/redbot/core/commands/requires.py +++ b/redbot/core/commands/requires.py @@ -452,7 +452,20 @@ class Requires: should_invoke = await self._verify_user(ctx) elif isinstance(next_state, dict): # NORMAL to PASSIVE_ALLOW; should we proceed as normal or transition? - next_state = next_state[await self._verify_user(ctx)] + # We must check what would happen normally, if no explicit rules were set. + default_rule = PermState.NORMAL + if ctx.guild is not None: + default_rule = self.get_default_guild_rule(guild_id=ctx.guild.id) + if default_rule is PermState.NORMAL: + default_rule = self.default_global_rule + + if default_rule == PermState.ACTIVE_DENY: + would_invoke = False + elif default_rule == PermState.ACTIVE_ALLOW: + would_invoke = True + else: + would_invoke = await self._verify_user(ctx) + next_state = next_state[would_invoke] ctx.permission_state = next_state return should_invoke