From fbe6e2f520ddd27dcbb740d8732165f9adec8293 Mon Sep 17 00:00:00 2001
From: Michael H <michael@michaelhall.tech>
Date: Mon, 5 Apr 2021 20:25:23 -0400
Subject: [PATCH] [commands] Fix @classmethod converters

---
 discord/ext/commands/core.py | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index ec2e7deb7..57c97daa2 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -444,13 +444,16 @@ class Command(_BaseCommand):
 
         try:
             if inspect.isclass(converter):
-                if issubclass(converter, converters.Converter):
-                    instance = converter()
-                    ret = await instance.convert(ctx, argument)
-                    return ret
+                if inspect.ismethod(converter.convert):
+                    if converter.convert.__self__ is converter:
+                        # class method
+                        func = converter.convert
+                    else:
+                        # instance method
+                        func = converter().convert
+                    return await func.convert(ctx, argument)
             elif isinstance(converter, converters.Converter):
-                ret = await converter.convert(ctx, argument)
-                return ret
+                return await converter.convert(ctx, argument)
         except CommandError:
             raise
         except Exception as exc: