From 661645ac9731c3d0fef9c1343a075757e5472fe9 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 4 Jun 2016 22:31:00 -0400 Subject: [PATCH] [commands] Add Command.qualified_name to get the full command name. This also sets `__str__` to do the same thing. --- discord/ext/commands/core.py | 32 +++++++++++++++++++++++++++++++ discord/ext/commands/formatter.py | 20 ++++--------------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py index 46a5d89b6..fb60274bb 100644 --- a/discord/ext/commands/core.py +++ b/discord/ext/commands/core.py @@ -306,6 +306,38 @@ class Command: return result + @property + def full_parent_name(self): + """Retrieves the fully qualified parent command name. + + This the base command name required to execute it. For example, + in ``?one two three`` the parent name would be ``one two``. + """ + entries = [] + command = self + while command.parent is not None: + command = command.parent + entries.append(command.name) + + return ' '.join(reversed(entries)) + + @property + def qualified_name(self): + """Retrieves the fully qualified command name. + + This is the full parent name with the command name as well. + For example, in ``?one two three`` the qualified name would be + ``one two three``. + """ + + parent = self.full_parent_name + if parent: + return parent + ' ' + self.name + else: + return self.name + + def __str__(self): + return self.qualified_name @asyncio.coroutine def _parse_arguments(self, ctx): diff --git a/discord/ext/commands/formatter.py b/discord/ext/commands/formatter.py index 2339a90f2..d20d65799 100644 --- a/discord/ext/commands/formatter.py +++ b/discord/ext/commands/formatter.py @@ -117,32 +117,20 @@ class HelpFormatter: # odd one. return self.context.prefix.replace(user.mention, '@' + user.name) - def get_qualified_command_name(self): - """Retrieves the fully qualified command name, i.e. the base command name - required to execute it. This does not contain the command name itself. - """ - entries = [] - command = self.command - while command.parent is not None: - command = command.parent - entries.append(command.name) - - return ' '.join(reversed(entries)) - def get_command_signature(self): """Retrieves the signature portion of the help page.""" result = [] prefix = self.clean_prefix - qualified = self.get_qualified_command_name() cmd = self.command + parent = cmd.full_parent_name if len(cmd.aliases) > 0: aliases = '|'.join(cmd.aliases) fmt = '{0}[{1.name}|{2}]' - if qualified: + if parent: fmt = '{0}{3} [{1.name}|{2}]' - result.append(fmt.format(prefix, cmd, aliases, qualified)) + result.append(fmt.format(prefix, cmd, aliases, parent)) else: - name = prefix + cmd.name if not qualified else prefix + qualified + ' ' + cmd.name + name = prefix + cmd.name if not parent else prefix + parent + ' ' + cmd.name result.append(name) params = cmd.clean_params