discord.py-rewrite - лучший способ перезаписи команды перезарядки - PullRequest
0 голосов
/ 12 мая 2019

Так что я пишу команды с перезарядкой для каждого из них. Как это:

@client.command()
@commands.cooldown(...)
async def bot_command(ctx):
   pass

Проблема в том, что время восстановления распространяется на каждого пользователя. Однако я хочу, чтобы время восстановления не распространялось на разработчиков ботов (IDS хранятся в списке). Как я могу сделать это более эффективным способом?

1 Ответ

1 голос
/ 12 мая 2019

Вы можете перехватить исключение в обработчике исключений и оттуда вызвать команду вручную.

@client.command()
@commands.cooldown(...)
async def bot_command(ctx):
   pass

@bot_command.error
async def bot_command_error(ctx, error):
    if isinstance(error, CommandOnCooldown):
        if ctx.author.id in list_of_ids:
            args = ()
            kwargs = {}
            await ctx.invoke(ctx.command, *args, **kwargs)
    else:
        raise error

Обратите внимание, что Context.invoke ничего не делает, но вызывает обратный вызов с предоставленными аргументами. Вам придется самостоятельно обрабатывать все входные преобразования, перехваты вызова до / после и т. Д.

...