[commands] Allow inline advanced converters via classmethods.
That way you don't need to have, e.g. Foo and FooConverter and can do it inline via Foo instead.
This commit is contained in:
parent
d85e479be6
commit
5e6491c3fe
@ -204,10 +204,16 @@ class Command:
|
|||||||
if converter.__module__.startswith('discord.') and not converter.__module__.endswith('converter'):
|
if converter.__module__.startswith('discord.') and not converter.__module__.endswith('converter'):
|
||||||
converter = getattr(converters, converter.__name__ + 'Converter')
|
converter = getattr(converters, converter.__name__ + 'Converter')
|
||||||
|
|
||||||
if inspect.isclass(converter) and issubclass(converter, converters.Converter):
|
if inspect.isclass(converter):
|
||||||
|
if issubclass(converter, converters.Converter):
|
||||||
instance = converter()
|
instance = converter()
|
||||||
ret = yield from instance.convert(ctx, argument)
|
ret = yield from instance.convert(ctx, argument)
|
||||||
return ret
|
return ret
|
||||||
|
else:
|
||||||
|
method = getattr(converter, 'convert', None)
|
||||||
|
if method is not None and inspect.ismethod(method):
|
||||||
|
ret = yield from method(ctx, argument)
|
||||||
|
return ret
|
||||||
elif isinstance(converter, converters.Converter):
|
elif isinstance(converter, converters.Converter):
|
||||||
ret = yield from converter.convert(ctx, argument)
|
ret = yield from converter.convert(ctx, argument)
|
||||||
return ret
|
return ret
|
||||||
|
Loading…
x
Reference in New Issue
Block a user