aboutsummaryrefslogtreecommitdiff
path: root/discord/ext
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-06-04 22:31:00 -0400
committerRapptz <[email protected]>2016-06-04 22:31:00 -0400
commit661645ac9731c3d0fef9c1343a075757e5472fe9 (patch)
tree43a994e36126a12cc794450020c23807978f5847 /discord/ext
parent[commands] Fix bug where Context.command would not update. (diff)
downloaddiscord.py-661645ac9731c3d0fef9c1343a075757e5472fe9.tar.xz
discord.py-661645ac9731c3d0fef9c1343a075757e5472fe9.zip
[commands] Add Command.qualified_name to get the full command name.
This also sets `__str__` to do the same thing.
Diffstat (limited to 'discord/ext')
-rw-r--r--discord/ext/commands/core.py32
-rw-r--r--discord/ext/commands/formatter.py20
2 files changed, 36 insertions, 16 deletions
diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index 46a5d89b..fb60274b 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 2339a90f..d20d6579 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