discord.py-rewrite-覆盖命令冷却的最佳方法

时间:2019-05-12 16:53:31

标签: discord discord.py discord.py-rewrite

因此,我在编写每个命令时都带有冷却时间的命令。像这样:

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

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

1 个答案:

答案 0 :(得分:1)

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

@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不会执行任何操作,只是使用提供的参数调用回调。您必须自己处理所有输入转换,前后调用挂钩等。