[commands] Fix handling of nested subcommand help handling.
This commit is contained in:
		| @@ -29,7 +29,6 @@ import discord | ||||
| import inspect | ||||
| import importlib | ||||
| import sys | ||||
| import functools | ||||
|  | ||||
| from .core import GroupMixin, Command, command | ||||
| from .view import StringView | ||||
| @@ -58,6 +57,7 @@ def _default_help_command(ctx, *commands : str): | ||||
|     """Shows this message.""" | ||||
|     bot = ctx.bot | ||||
|     destination = ctx.message.channel if not bot.pm_help else ctx.message.author | ||||
|  | ||||
|     # help by itself just lists our own commands. | ||||
|     if len(commands) == 0: | ||||
|         pages = bot.formatter.format_help_for(ctx, bot) | ||||
| @@ -75,12 +75,22 @@ def _default_help_command(ctx, *commands : str): | ||||
|  | ||||
|         pages = bot.formatter.format_help_for(ctx, command) | ||||
|     else: | ||||
|         try: | ||||
|             command = functools.reduce(dict.__getitem__, commands, bot.commands) | ||||
|         except KeyError as e: | ||||
|             yield from bot.send_message(destination, 'No command called "{}" found.'.format(e)) | ||||
|         name = commands[0] | ||||
|         command = bot.commands.get(name) | ||||
|         if command is None: | ||||
|             yield from bot.send_message(destination, 'No command called "{}" found.'.format(name)) | ||||
|             return | ||||
|  | ||||
|         for key in commands[1:]: | ||||
|             try: | ||||
|                 command = command.commands.get(key) | ||||
|                 if command is None: | ||||
|                     yield from bot.send_message(destination, 'No command called "{}" found.'.format(key)) | ||||
|                     return | ||||
|             except AttributeError: | ||||
|                 yield from bot.send_message(destination, 'Command "{0.name}" has no subcommands.'.format(command)) | ||||
|                 return | ||||
|  | ||||
|         pages = bot.formatter.format_help_for(ctx, command) | ||||
|  | ||||
|     for page in pages: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user