[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)
try:
if inspect.isclass(converter):
if issubclass(converter, converters.Converter):
instance = converter()
return await instance.convert(ctx, argument)
if inspect.isclass(converter) and issubclass(converter, converters.Converter):
if inspect.ismethod(converter.convert):
return await converter.convert(ctx, argument)
else:
method = getattr(converter, 'convert', None)
if method is not None and inspect.ismethod(method):
return await method(ctx, argument)
return await converter().convert(ctx, argument)
elif isinstance(converter, converters.Converter):
return await converter.convert(ctx, argument)
except CommandError: