[commands] Fix keyword-only case to actually do conversion.
This commit is contained in:
		| @@ -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: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user