discord.py-rewrite - 覆盖命令冷却时间的最佳方式

discord.py-rewrite - Best way to overwrite command cooldown

所以我正在编写每个命令都有冷却时间的命令。像这样:

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

问题是冷却时间适用于每个用户。但是,我希望冷却时间不适用于机器人开发人员(IDS 存储在列表中)。我怎样才能以更有效的方式做到这一点?

您可以在异常处理程序中捕获异常,然后从那里手动调用命令。

@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 除了使用提供的参数调用回调之外什么都不做。您必须自己处理所有输入转换、pre/post 调用挂钩等。