aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/ext/commands/core.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index 3655deaf..4c541f41 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -204,10 +204,16 @@ class Command:
if converter.__module__.startswith('discord.') and not converter.__module__.endswith('converter'):
converter = getattr(converters, converter.__name__ + 'Converter')
- if inspect.isclass(converter) and issubclass(converter, converters.Converter):
- instance = converter()
- ret = yield from instance.convert(ctx, argument)
- return ret
+ if inspect.isclass(converter):
+ if issubclass(converter, converters.Converter):
+ instance = converter()
+ ret = yield from instance.convert(ctx, argument)
+ 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):
ret = yield from converter.convert(ctx, argument)
return ret