【问题标题】: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 不会闲置, 因此大大减少了整体执行时间。

【讨论】:

猜你喜欢
  • 2018-02-15
  • 2017-11-21
  • 2018-07-07
  • 2021-05-02
  • 2022-01-16
  • 2018-05-03
  • 2021-09-07
  • 2017-06-13
相关资源
最近更新 更多