在命令中设置冷却时间

时间:2020-09-01 18:12:47

标签: discord.py

我想在discord.py中为我的机器人设置一个冷却时间,我尝试使用time.sleep(30)来完成此操作,但是由于它停止了整个机器人的运行,因此它没有用,但是我需要你可以做其他事情时间命令。请在content.split中,而不要与ext。ext。不一致。有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

您想要的是在命令上使用装饰器。 冷却的装饰器是@commands.cooldown

@bot.command()
@commands.cooldown(x, y, commands.BucketType.z)
#your code here
...

x是命令在给定时间范围内可以使用的次数

y是该时间范围(以秒为单位)

z是适用于谁(用户,频道,服务器,甚至是全局(默认))

因此:...cooldown(2, 10, commands.BucketType.user)将允许每个用户在10秒内使用两次该命令。

祝你好运!

您可以在这里阅读:Discord.py commands.cooldown

作为旁注:time.sleep()是可用于在命令中“暂停”机器人的程序

print("hi")
time.sleep(30)
print("there")

这将在两条消息之间放置一个延迟,而不是一个接一个地立即打印它们。您应该对此进行测试!

答案 1 :(得分:1)

我认为您可以为此使用asyncio:

import asyncio 

asyncio.sleep(seconds)

asyncio.sleep的工作方式类似于time.sleep,但是time.sleep阻止了整个代码,asyncio.sleep仅停止了一个事件。您可以详细了解time.sleep和asyncio.sleep here之间的区别。

答案 2 :(得分:0)

这是因为time.sleep正在阻止,您可以使用

@commands.cooldown(1, 5, commands.BucketType.user)