[commands] Add Bot.help_attrs to customise the help command.
The help message now uses the invoked_with attribute of the context to get the name of the command it uses instead of a hardcoded help.
This commit is contained in:
parent
abbe79919b
commit
bb5e222f29
@ -51,7 +51,6 @@ def when_mentioned(bot, msg):
|
|||||||
to being mentioned, e.g. ``@bot ``."""
|
to being mentioned, e.g. ``@bot ``."""
|
||||||
return '{0.user.mention} '.format(bot)
|
return '{0.user.mention} '.format(bot)
|
||||||
|
|
||||||
@command(pass_context=True, name='help')
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def _default_help_command(ctx, *commands : str):
|
def _default_help_command(ctx, *commands : str):
|
||||||
"""Shows this message."""
|
"""Shows this message."""
|
||||||
@ -142,6 +141,12 @@ class Bot(GroupMixin, discord.Client):
|
|||||||
output is PM'd. If ``None``, then the bot will only PM when the help
|
output is PM'd. If ``None``, then the bot will only PM when the help
|
||||||
message becomes too long (dictated by more than 1000 characters).
|
message becomes too long (dictated by more than 1000 characters).
|
||||||
Defaults to ``False``.
|
Defaults to ``False``.
|
||||||
|
help_attrs : dict
|
||||||
|
A dictionary of options to pass in for the construction of the help command.
|
||||||
|
This allows you to change the command behaviour without actually changing
|
||||||
|
the implementation of the command. The attributes will be the same as the
|
||||||
|
ones passed in the :class:`Command` constructor. Note that ``pass_context``
|
||||||
|
will always be set to ``True`` regardless of what you pass in.
|
||||||
"""
|
"""
|
||||||
def __init__(self, command_prefix, formatter=None, description=None, pm_help=False, **options):
|
def __init__(self, command_prefix, formatter=None, description=None, pm_help=False, **options):
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
@ -151,6 +156,13 @@ class Bot(GroupMixin, discord.Client):
|
|||||||
self.extensions = {}
|
self.extensions = {}
|
||||||
self.description = inspect.cleandoc(description) if description else ''
|
self.description = inspect.cleandoc(description) if description else ''
|
||||||
self.pm_help = pm_help
|
self.pm_help = pm_help
|
||||||
|
|
||||||
|
self.help_attrs = options.pop('help_attrs', {})
|
||||||
|
self.help_attrs['pass_context'] = True
|
||||||
|
|
||||||
|
if 'name' not in self.help_attrs:
|
||||||
|
self.help_attrs['name'] = 'help'
|
||||||
|
|
||||||
if formatter is not None:
|
if formatter is not None:
|
||||||
if not isinstance(formatter, HelpFormatter):
|
if not isinstance(formatter, HelpFormatter):
|
||||||
raise discord.ClientException('Formatter must be a subclass of HelpFormatter')
|
raise discord.ClientException('Formatter must be a subclass of HelpFormatter')
|
||||||
@ -158,7 +170,8 @@ class Bot(GroupMixin, discord.Client):
|
|||||||
else:
|
else:
|
||||||
self.formatter = HelpFormatter()
|
self.formatter = HelpFormatter()
|
||||||
|
|
||||||
self.add_command(_default_help_command)
|
# pay no mind to this ugliness.
|
||||||
|
self.command(**self.help_attrs)(_default_help_command)
|
||||||
|
|
||||||
# internal helpers
|
# internal helpers
|
||||||
|
|
||||||
|
@ -160,8 +160,9 @@ class HelpFormatter:
|
|||||||
return ' '.join(result)
|
return ' '.join(result)
|
||||||
|
|
||||||
def get_ending_note(self):
|
def get_ending_note(self):
|
||||||
return "Type {0}help command for more info on a command.\n" \
|
command_name = self.context.invoked_with
|
||||||
"You can also type {0}help category for more info on a category.".format(self.clean_prefix)
|
return "Type {0}{1} command for more info on a command.\n" \
|
||||||
|
"You can also type {0}{1} category for more info on a category.".format(self.clean_prefix, command_name)
|
||||||
|
|
||||||
def filter_command_list(self):
|
def filter_command_list(self):
|
||||||
"""Returns a filtered list of commands based on the two attributes
|
"""Returns a filtered list of commands based on the two attributes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user