[commands] Fix keyword-only case to actually do conversion.
This commit is contained in:
parent
b335e9ea30
commit
c29f0ea544
@ -186,19 +186,22 @@ class Command:
|
|||||||
except:
|
except:
|
||||||
raise BadArgument('Invite is invalid')
|
raise BadArgument('Invite is invalid')
|
||||||
|
|
||||||
def transform(self, ctx, param):
|
def _get_converter(self, param):
|
||||||
required = param.default is param.empty
|
|
||||||
converter = param.annotation
|
converter = param.annotation
|
||||||
view = ctx.view
|
|
||||||
|
|
||||||
if converter is param.empty:
|
if converter is param.empty:
|
||||||
if not required:
|
if param.default is not param.empty:
|
||||||
converter = str if param.default is None else type(param.default)
|
converter = str if param.default is None else type(param.default)
|
||||||
else:
|
else:
|
||||||
converter = str
|
converter = str
|
||||||
elif not inspect.isclass(type(converter)):
|
elif not inspect.isclass(type(converter)):
|
||||||
raise discord.ClientException('Function annotation must be a type')
|
raise discord.ClientException('Function annotation must be a type')
|
||||||
|
|
||||||
|
return converter
|
||||||
|
|
||||||
|
def transform(self, ctx, param):
|
||||||
|
required = param.default is param.empty
|
||||||
|
converter = self._get_converter(param)
|
||||||
|
view = ctx.view
|
||||||
view.skip_ws()
|
view.skip_ws()
|
||||||
|
|
||||||
if view.eof:
|
if view.eof:
|
||||||
@ -265,7 +268,9 @@ class Command:
|
|||||||
args.append(self.transform(ctx, param))
|
args.append(self.transform(ctx, param))
|
||||||
elif param.kind == param.KEYWORD_ONLY:
|
elif param.kind == param.KEYWORD_ONLY:
|
||||||
# kwarg only param denotes "consume rest" semantics
|
# kwarg only param denotes "consume rest" semantics
|
||||||
kwargs[name] = view.read_rest()
|
converter = self._get_converter(param)
|
||||||
|
argument = view.read_rest()
|
||||||
|
kwargs[name] = self.do_conversion(ctx.bot, ctx.message, converter, argument)
|
||||||
break
|
break
|
||||||
elif param.kind == param.VAR_POSITIONAL:
|
elif param.kind == param.VAR_POSITIONAL:
|
||||||
while not view.eof:
|
while not view.eof:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user