aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh <[email protected]>2021-04-21 21:16:23 +1000
committerGitHub <[email protected]>2021-04-21 07:16:23 -0400
commitcfe93f19b19df526d360d8d0bde4121e4e36d0ad (patch)
tree56dba8c66baf9b5bd1f9ea4604a41035776f0249
parent[commands] Add support for aliasing to FlagConverter (diff)
downloaddiscord.py-cfe93f19b19df526d360d8d0bde4121e4e36d0ad.tar.xz
discord.py-cfe93f19b19df526d360d8d0bde4121e4e36d0ad.zip
[commands] Allow FlagCommand subclasses to inherit options
-rw-r--r--discord/ext/commands/flags.py26
1 files changed, 20 insertions, 6 deletions
diff --git a/discord/ext/commands/flags.py b/discord/ext/commands/flags.py
index 8f5d34d3..b84e9a18 100644
--- a/discord/ext/commands/flags.py
+++ b/discord/ext/commands/flags.py
@@ -268,14 +268,11 @@ class FlagsMeta(type):
bases: Tuple[type, ...],
attrs: Dict[str, Any],
*,
- case_insensitive: bool = False,
- delimiter: str = ':',
- prefix: str = '',
+ case_insensitive: bool = MISSING,
+ delimiter: str = MISSING,
+ prefix: str = MISSING,
):
attrs['__commands_is_flag__'] = True
- attrs['__commands_flag_case_insensitive__'] = case_insensitive
- attrs['__commands_flag_delimiter__'] = delimiter
- attrs['__commands_flag_prefix__'] = prefix
if not prefix and not delimiter:
raise TypeError('Must have either a delimiter or a prefix set')
@@ -303,6 +300,23 @@ class FlagsMeta(type):
if base.__dict__.get('__commands_is_flag__', False):
flags.update(base.__dict__['__commands_flags__'])
aliases.update(base.__dict__['__commands_flag_aliases__'])
+ if case_insensitive is MISSING:
+ attrs['__commands_flag_case_insensitive__'] = base.__dict__['__commands_flag_case_insensitive__']
+ if delimiter is MISSING:
+ attrs['__commands_flag_delimiter__'] = base.__dict__['__commands_flag_delimiter__']
+ if prefix is MISSING:
+ attrs['__commands_flag_prefix__'] = base.__dict__['__commands_flag_prefix__']
+
+ if case_insensitive is not MISSING:
+ attrs['__commands_flag_case_insensitive__'] = case_insensitive
+ if delimiter is not MISSING:
+ attrs['__commands_flag_delimiter__'] = delimiter
+ if prefix is not MISSING:
+ attrs['__commands_flag_prefix__'] = prefix
+
+ case_insensitive = attrs.setdefault('__commands_flag_case_insensitive__', False)
+ delimiter = attrs.setdefault('__commands_flag_delimiter__', ':')
+ prefix = attrs.setdefault('__commands_flag_prefix__', '')
for flag_name, flag in get_flags(attrs, global_ns, local_ns).items():
flags[flag_name] = flag