aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/ext/commands/bot.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py
index 11a5e751..9507dbe2 100644
--- a/discord/ext/commands/bot.py
+++ b/discord/ext/commands/bot.py
@@ -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: