mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-21 00:07:51 +00:00
[commands] Add Context.show_help helper to use the HelpCommand set.
Fixes #1983
This commit is contained in:
parent
3326adf63b
commit
ed5fcb320e
@ -222,3 +222,70 @@ class Context(discord.abc.Messageable):
|
||||
r"""Optional[:class:`VoiceClient`]: A shortcut to :attr:`Guild.voice_client`\, if applicable."""
|
||||
g = self.guild
|
||||
return g.voice_client if g else None
|
||||
|
||||
async def show_help(self, *args):
|
||||
"""show_help(entity=<bot>)
|
||||
|
||||
|coro|
|
||||
|
||||
Shows the help command for the specified entity if given.
|
||||
The entity can be a command or a cog.
|
||||
|
||||
If no entity is given, then it'll show help for the
|
||||
entire bot.
|
||||
|
||||
If the entity is a string, then it looks up whether it's a
|
||||
:class:`Cog` or a :class:`Command`.
|
||||
|
||||
.. note::
|
||||
|
||||
Due to the way this function works, instead of returning
|
||||
something similar to :meth:`~.commands.HelpCommand.command_not_found`
|
||||
this returns :obj:`None` on bad input or no help command.
|
||||
|
||||
Parameters
|
||||
------------
|
||||
entity: Optional[Union[:class:`Command`, :class:`Cog`, :class:`str`]]
|
||||
The entity to show help for.
|
||||
|
||||
Returns
|
||||
--------
|
||||
Any
|
||||
The result of the help command, if any.
|
||||
"""
|
||||
from .core import Group, Command
|
||||
|
||||
bot = self.bot
|
||||
cmd = bot.help_command
|
||||
|
||||
if cmd is None:
|
||||
return None
|
||||
|
||||
if len(args) == 0:
|
||||
await cmd.prepare_help_command(self, None)
|
||||
mapping = cmd.get_bot_mapping()
|
||||
return await cmd.send_bot_help(mapping)
|
||||
|
||||
entity = args[0]
|
||||
if entity is None:
|
||||
return None
|
||||
|
||||
if isinstance(entity, str):
|
||||
entity = bot.get_cog(entity) or bot.get_command(entity)
|
||||
|
||||
try:
|
||||
qualified_name = entity.qualified_name
|
||||
except AttributeError:
|
||||
# if we're here then it's not a cog, group, or command.
|
||||
return None
|
||||
|
||||
await cmd.prepare_help_command(self, entity.qualified_name)
|
||||
|
||||
if hasattr(entity, '__cog_commands__'):
|
||||
return await cmd.send_cog_help(entity)
|
||||
elif isinstance(entity, Group):
|
||||
return await cmd.send_group_help(entity)
|
||||
elif isinstance(entity, Command):
|
||||
return await cmd.send_command_help(entity)
|
||||
else:
|
||||
return None
|
||||
|
Loading…
x
Reference in New Issue
Block a user