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 调用挂钩等。
所以我正在编写每个命令都有冷却时间的命令。像这样:
@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 调用挂钩等。