Расширенная команда помощи на Discord.Py? - PullRequest
0 голосов
/ 22 февраля 2019

Я знаю, что я новичок здесь, но у меня есть к вам вопрос:

Что если вы когда-нибудь захотите написать бота Discord на Python со специальными Cogs и заменить команду помощи по умолчанию на эту:

@commands.command(pass_context=True)
async def help(self,ctx,*cog:str):
    """Gives you info on my cogs *and* their commands."""
    if not cog:
        halp=discord.Embed(title='Cog Listing and Uncatergorized Commands',
                           description='Use `!help *cog*` to find out more about them!')
        cogs_desc = ''
        for x in self.bot.cogs:
            cogs_desc += ('{} - {}'.format(x,self.bot.cogs[x].__doc__)+'\n')
        halp.add_field(name='Cogs',value=cogs_desc[0:len(cogs_desc)-1])
    else:
        halp=discord.Embed(title='{cog} Command Listing')
        for x in self.bot.cogs[cog]:
            halp.add_field(name=x,value=x.__doc__)

    await self.bot.whisper(embed=halp)

... и команда просто отлично отправляет информацию о винтиках вашего бота, но отказывается предоставить вам информацию о командах конкретного винтика и дает вам следующее:

    Ignoring exception in command help
Traceback (most recent call last):
  File "/home/pi/.local/lib/python3.5/site-packages/discord/ext/commands/core.py", line 50, in wrapped
    ret = yield from coro(*args, **kwargs)
  File "/home/pi/Documents/Coding/Python/AwesomeDiscordBot/cogs/info.py", line 49, in help
    for x in self.bot.cogs[cog]:
KeyError: ('Info',)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/pi/.local/lib/python3.5/site-packages/discord/ext/commands/bot.py", line 846, in process_commands
    yield from command.invoke(ctx)
  File "/home/pi/.local/lib/python3.5/site-packages/discord/ext/commands/core.py", line 374, in invoke
    yield from injected(*ctx.args, **ctx.kwargs)
  File "/home/pi/.local/lib/python3.5/site-packages/discord/ext/commands/core.py", line 54, in wrapped
    raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: KeyError: ('Info',)

Как бы вы это исправили, чтобы вы могли использовать команду помощи своего бота Discord! Help для получения информации о cogs и их командах?

PS Я использую Python 3.5 на Raspberry Pi,и я хочу включить несобранные команды в основную справочную информацию.

...