python - 你可以在 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()
在我的主命令中这样做是行不通的,但我做了一个测试命令,一切都一样,它工作没有问题
解决方案
您可以使用带有on_reaction_add
和on_reacion_remove
/或原始版本的普通机器人事件来完成此操作。要在彼此之间共享数据,您可以使用 MongoDB/pymongo 或 MySQL/sqlite 等数据库。
如果您将此命令用于反应角色,那么数据库将是与主要机器人事件一起使用的更好选择。
这将使将来的调试变得更加容易。
推荐阅读
- c++ - 如何调用基类中定义的派生 const 函数,而子类中有相同的名称?
- javascript - 如何将数据添加到 Firestore 中的嵌套对象
- javascript - 如何使用 React 2020 连接到 metamask
- python - 从数据框返回值
- python - 是否可以在 python 中中断 Popen 子进程?
- amazon-web-services - 有没有办法直接为 EC2 实例设置 CI/CD 管道?
- python - 在 Pandas 中合并两行的内容
- ios - 目标c,单击按钮时来自viewController的回调
- html - react-indiana-drag-scroll 最后一项的阴影未显示
- google-cloud-platform - DataFlowJavaOperator - execute specific java class file