diff --git a/discord/ext/commands/flags.py b/discord/ext/commands/flags.py index abffbbcdc..14ebb774d 100644 --- a/discord/ext/commands/flags.py +++ b/discord/ext/commands/flags.py @@ -184,7 +184,7 @@ def get_flags(namespace: Dict[str, Any], globals: Dict[str, Any], locals: Dict[s annotation = flag.annotation = resolve_annotation(flag.annotation, globals, locals, cache) - if flag.default is MISSING and issubclass(annotation, FlagConverter) and annotation._can_be_constructible(): + if flag.default is MISSING and hasattr(annotation, '__commands_is_flag__') and annotation._can_be_constructible(): flag.default = annotation._construct_default if flag.aliases is MISSING: @@ -236,7 +236,7 @@ def get_flags(namespace: Dict[str, Any], globals: Dict[str, Any], locals: Dict[s flag.override = False # Validate flag names are unique - name = flag.name.casefold() if case_insensitive else flag.name + name = flag.name.casefold() if case_insensitive else flag.name if name in names: raise TypeError(f'{flag.name!r} flag conflicts with previous flag or alias.') else: @@ -340,7 +340,7 @@ class FlagsMeta(type): keys = list(re.escape(k) for k in flags) keys.extend(re.escape(a) for a in aliases) keys = sorted(keys, key=lambda t: len(t), reverse=True) - + joined = '|'.join(keys) pattern = re.compile(f'(({re.escape(prefix)})(?P<flag>{joined}){re.escape(delimiter)})', regex_flags) attrs['__commands_flag_regex__'] = pattern