因此,我在编写每个命令时都带有冷却时间的命令。像这样:
@client.command()
@commands.cooldown(...)
async def bot_command(ctx):
pass
问题在于,冷却时间适用于每个用户。但是,我希望冷却时间不适用于机器人开发人员(IDS存储在列表中)。如何以更有效的方式做到这一点?
答案 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
不会执行任何操作,只是使用提供的参数调用回调。您必须自己处理所有输入转换,前后调用挂钩等。