[Permissions] Ensure defaults are cleared when clearing all rules (#3041)

- fixes #3037
This commit is contained in:
Michael H
2019-11-04 17:09:01 -05:00
committed by Kowlin
parent a729a474b1
commit ddd9c4c6b0
4 changed files with 17 additions and 8 deletions

View File

@@ -398,11 +398,9 @@ class Requires:
else:
rules[model_id] = rule
def clear_all_rules(self, guild_id: int) -> None:
def clear_all_rules(self, guild_id: int, *, preserve_default_rule: bool = True) -> None:
"""Clear all rules of a particular scope.
This will preserve the default rule, if set.
Parameters
----------
guild_id : int
@@ -410,6 +408,12 @@ class Requires:
`Requires.GLOBAL`, this will clear all global rules and
leave all guild rules untouched.
Other Parameters
----------------
preserve_default_rule : bool
Whether to preserve the default rule or not.
This defaults to being preserved
"""
if guild_id:
rules = self._guild_rules.setdefault(guild_id, _RulesDict())
@@ -417,7 +421,7 @@ class Requires:
rules = self._global_rules
default = rules.get(self.DEFAULT, None)
rules.clear()
if default is not None:
if default is not None and preserve_default_rule:
rules[self.DEFAULT] = default
def reset(self) -> None: