async def command_callback(self, ctx, *, command=None):
await self.prepare_help_command(ctx, command)<EOL>bot = ctx.bot<EOL>if command is None:<EOL><INDENT>mapping = self.get_bot_mapping()<EOL>return await self.send_bot_help(mapping)<EOL><DEDENT>cog = bot.get_cog(command)<EOL>if cog is not None:<EOL><INDENT>return await self.send_cog_help(cog)<EOL><DEDENT>maybe_coro = discord.utils.maybe_coroutine<EOL>keys = command.split('<STR_LIT:U+0020>')<EOL>cmd = bot.all_commands.get(keys[<NUM_LIT:0>])<EOL>if cmd is None:<EOL><INDENT>string = await maybe_coro(self.command_not_found, self.remove_mentions(keys[<NUM_LIT:0>]))<EOL>return await self.send_error_message(string)<EOL><DEDENT>for key in keys[<NUM_LIT:1>:]:<EOL><INDENT>try:<EOL><INDENT>found = cmd.all_commands.get(key)<EOL><DEDENT>except AttributeError:<EOL><INDENT>string = await maybe_coro(self.subcommand_not_found, cmd, self.remove_mentions(key))<EOL>return await self.send_error_message(string)<EOL><DEDENT>else:<EOL><INDENT>if found is None:<EOL><INDENT>string = await maybe_coro(self.subcommand_not_found, cmd, self.remove_mentions(key))<EOL>return await self.send_error_message(string)<EOL><DEDENT>cmd = found<EOL><DEDENT><DEDENT>if isinstance(cmd, Group):<EOL><INDENT>return await self.send_group_help(cmd)<EOL><DEDENT>else:<EOL><INDENT>return await self.send_command_help(cmd)<EOL><DEDENT>
|coro|

        The actual implementation of the help command.

        It is not recommended to override this method and instead change
        the behaviour through the methods that actually get dispatched.

        - :meth:`send_bot_help`
        - :meth:`send_cog_help`
        - :meth:`send_group_help`
        - :meth:`send_command_help`
        - :meth:`get_destination`
        - :meth:`command_not_found`
        - :meth:`subcommand_not_found`
        - :meth:`send_error_message`
        - :meth:`on_help_command_error`
        - :meth:`prepare_help_command`