Discord 是否可以将用户限制为每x秒1个命令?

Discord 是否可以将用户限制为每x秒1个命令?,discord,discord.py,Discord,Discord.py,我知道单独的命令有一个命令冷却时间,但是我想知道你是否可以一次限制每个命令,这样无论用户使用什么命令,在下一个命令可以使用之前,它都会有一个冷却时间。所以如果我运行!测试我不能使用!测试1再持续5秒。只需创建一个全局冷却实例 global_cooldown=commands.CooldownMapping.from_cooldown(1,5.0,commands.BucketType.user)#您可以随意更改它 然后添加一个复选框,如果您想要所有命令的全局冷却: @bot.check 异步d

我知道单独的命令有一个命令冷却时间,但是我想知道你是否可以一次限制每个命令,这样无论用户使用什么命令,在下一个命令可以使用之前,它都会有一个冷却时间。所以如果我运行
!测试
我不能使用
!测试1再持续5秒。

只需创建一个全局冷却实例

global_cooldown=commands.CooldownMapping.from_cooldown(1,5.0,commands.BucketType.user)#您可以随意更改它
然后添加一个复选框,如果您想要所有命令的全局冷却:

@bot.check
异步def冷却检查(ctx):
bucket=全局冷却。获取bucket(ctx.message)
重试\u after=bucket.update\u rate\u limit()
如果在以下时间后重试\u:
raise命令。COMMANDONCOLDOWN(存储桶,稍后重试)
返回真值
所有命令都有一个共享的冷却时间

如果您想要一个装饰器,用于一些具有共享冷却时间的命令

def共享_冷却()
定义谓词(ctx):
bucket=全局冷却。获取bucket(ctx.message)
重试\u after=bucket.update\u rate\u limit()
如果在以下时间后重试\u:
raise命令。COMMANDONCOLDOWN(存储桶,稍后重试)
返回真值
返回命令。检查(谓词)
@共享冷却时间()
异步def foo(ctx):
...
@共享冷却时间()
异步def baz(ctx):
...

foo
baz
将有一个共享的冷却时间。

是的,事实上,我相信库
discord.py
作为命令函数的装饰器提供了此功能-尽管我记不起函数名是什么了,但下面的答案会起作用-尽管没有针对性能进行优化。您可能希望将子命令/组与冷却装饰器一起使用以提高性能。图书馆提供的装饰师已经被很好地理解和测试过了。