[commands] Fix keyword-only case to actually do conversion.
This commit is contained in:
		| @@ -186,19 +186,22 @@ class Command: | ||||
|             except: | ||||
|                 raise BadArgument('Invite is invalid') | ||||
|  | ||||
|     def transform(self, ctx, param): | ||||
|         required = param.default is param.empty | ||||
|     def _get_converter(self, param): | ||||
|         converter = param.annotation | ||||
|         view = ctx.view | ||||
|  | ||||
|         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) | ||||
|             else: | ||||
|                 converter = str | ||||
|         elif not inspect.isclass(type(converter)): | ||||
|             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() | ||||
|  | ||||
|         if view.eof: | ||||
| @@ -265,7 +268,9 @@ class Command: | ||||
|                     args.append(self.transform(ctx, param)) | ||||
|                 elif param.kind == param.KEYWORD_ONLY: | ||||
|                     # 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 | ||||
|                 elif param.kind == param.VAR_POSITIONAL: | ||||
|                     while not view.eof: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user