Browse Source

[commands] Allow FlagCommand subclasses to inherit options

pull/6766/head
Josh 4 years ago
committed by GitHub
parent
commit
cfe93f19b1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 26
      discord/ext/commands/flags.py

26
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

Loading…
Cancel
Save