[commands] Fix @classmethod converters

This commit is contained in:
Michael H 2021-04-05 20:25:23 -04:00 committed by GitHub
parent 3abb2fde56
commit fbe6e2f520
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -444,13 +444,16 @@ class Command(_BaseCommand):
try: try:
if inspect.isclass(converter): if inspect.isclass(converter):
if issubclass(converter, converters.Converter): if inspect.ismethod(converter.convert):
instance = converter() if converter.convert.__self__ is converter:
ret = await instance.convert(ctx, argument) # class method
return ret func = converter.convert
else:
# instance method
func = converter().convert
return await func.convert(ctx, argument)
elif isinstance(converter, converters.Converter): elif isinstance(converter, converters.Converter):
ret = await converter.convert(ctx, argument) return await converter.convert(ctx, argument)
return ret
except CommandError: except CommandError:
raise raise
except Exception as exc: except Exception as exc: