首页 > 解决方案 > 你可以在 discord.py 中等待多个事件吗?

问题描述

我正在尝试为我的机器人等待多个事件,我确实找到了一种方法并且它有效,但是突然之间它无缘无故地崩溃了

while True:
    done, pending = await asyncio.wait(
        [
            bot.wait_for("raw_reaction_add")
            bot.wait_for("raw_reacion_remove")
        ]
    )

    payload = done.pop().result()
    if payload.event_type == "REACTION_ADD":
        ...
    elif payload.event_type == "REACTION_REMOVE":
        ...

    for future in pending:
        future.cancel()

在我的主命令中这样做是行不通的,但我做了一个测试命令,一切都一样,它工作没有问题

标签: pythonpython-3.xdiscord.pypython-asynciodiscord.py-rewrite

解决方案


您可以使用带有on_reaction_addon_reacion_remove/或原始版本的普通机器人事件来完成此操作。要在彼此之间共享数据,您可以使用 MongoDB/pymongo 或 MySQL/sqlite 等数据库。

如果您将此命令用于反应角色,那么数据库将是与主要机器人事件一起使用的更好选择。

这将使将来的调试变得更加容易。


推荐阅读