[commands] Fix classmethod converters not working.

Protocols sure are annoying.
This commit is contained in:
Rapptz 2021-04-05 23:52:28 -04:00
parent ee5bb07c02
commit 9ab58d302d

View File

@ -443,14 +443,11 @@ class Command(_BaseCommand):
converter = getattr(converters, converter.__name__ + 'Converter', converter) converter = getattr(converters, converter.__name__ + 'Converter', converter)
try: try:
if inspect.isclass(converter): if inspect.isclass(converter) and issubclass(converter, converters.Converter):
if issubclass(converter, converters.Converter): if inspect.ismethod(converter.convert):
instance = converter() return await converter.convert(ctx, argument)
return await instance.convert(ctx, argument)
else: else:
method = getattr(converter, 'convert', None) return await converter().convert(ctx, argument)
if method is not None and inspect.ismethod(method):
return await method(ctx, argument)
elif isinstance(converter, converters.Converter): elif isinstance(converter, converters.Converter):
return await converter.convert(ctx, argument) return await converter.convert(ctx, argument)
except CommandError: except CommandError: