【问题标题】:Whats event for bot disconnect, nextord/discord.py机器人断开连接的事件是什么,nextord/discord.py
【发布时间】:2023-02-12 09:21:29
【问题描述】:

我需要在未停止时关闭数据库连接(示例 - Ctrl+C)

我的代码:

class BotEvents(Cog):
    def __init__(self, bot : Bot) -> None:
        self.bot = bot

    @Cog.listener()
    async def on_ready (self) -> None:
        await database.initialize_database(database = config.database.database)

    @Cog.listener()
    async def on_disconnect(self) -> None: # not working
        await database.close_connection()`

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读How to Ask。问题是什么?有什么不起作用吗?如果是这样,有什么错误吗?你能指望什么?
  • 那就是不打电话 - on_disconnect
  • 你检查过了吗?有印刷品?此外,您的代码没有显示初始化 cog 所需的设置协程。
  • 其他活动正常。是的,我检查了印刷品

标签: python-3.x discord.py nextcord


【解决方案1】:

当您使用 control-C 时,不会进行清理,程序会立即停止。

但是,您可以制作一个信号处理程序来捕获信号,然后进行清理。

import signal

async def close_bot():
    await database.close_connection()
    await bot.close()
    exit(0)

def terminate_handler(signal, frame):
    await asyncio.get_event_loop().run(close_bot())

signal.signal(signal.SIGINT, terminate_handler)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2020-12-18
    • 2019-04-23
    • 2021-06-15
    • 2021-08-24
    • 2012-02-11
    • 2020-05-24
    • 2022-07-07
    相关资源
    最近更新 更多