【问题标题】:Cooldown For on_message On Discord Bot PythonDiscord Bot Python 上 on_message 的冷却时间
【发布时间】:2020-07-30 05:04:19
【问题描述】:
@commands.Cog.listener()
async def on_message(self, message):
if message.guild.id == 464298877823221761:
if message.content.find("Hello There") != -1:
await asyncio.sleep(0.5)
await message.channel.send("General Kenobi")
我想为此设置 30 秒的冷却时间
整个 Cog:https://hastebin.com/isuxokizum.py
【问题讨论】:
标签:
python
discord
discord.py
discord.py-rewrite
【解决方案1】:
我不知道您是代码的其他部分,所以我不知道您是否想要/需要/获得一些异步编程。
如果没有,您也可以尝试time.sleep(30) - 它只会冻结您的代码的执行
time.sleep(5)
...将代码的执行冻结 5 秒。没有进一步的
被计算或执行,直到睡眠函数完成它是 5
第二次小睡,因为没有睡眠功能,应用程序无法继续
将控制权返回给调用者。这称为同步
编程,当没有改变应用程序的机制时
它的重点并在等待期间完成其他任务,例如
等待调用数据库、Web API 或如
这种情况下的睡眠功能。在同步编程中没有
需要一个事件循环,因为不期望应用程序
管理自己的时间,也不会为了提高效率而切换任务。
asyncio.sleep(5)
... 是 asyncio 库的一部分,设计
用于将事件循环分配给任务的异步编程
被竞争,它(事件循环)监视所有它的状态
任务并从一个切换到另一个,目标是
最大限度地减少空闲/等待的时间。这不是线程
在同时执行多个进程的情况下,这是
只是优化任务执行,使 CPU 不会闲置,
因此大大减少了整体执行时间。