如何在discord.py中等待多种类型的事件?

2024-04-25 11:32:53 发布

您现在位置:Python中文网/ 问答频道 /正文

等待discord.py事件时,可以使用commands.Bot.wait_for('message', timeout=30, check=check)或类似的'reaction_add'

有没有办法等待messagereaction?我能想到的唯一方法是启动另一个线程并同时运行两个commands.Bot.wait_for(),但这似乎真的很糟糕

如果有一种方法允许您等待多种类型的事件,那么最好了解一下。如果有人有任何想法,请告诉我


Tags: 方法pyaddmessageforcheckbottimeout
2条回答

使用commands.Bot.add_listener(function, 'on_message')创建侦听器,当commands.Bot.wait_for通过或超时时,删除侦听器

您可以使用asyncio.waitwait_for多个事件

done, pending = await asyncio.wait([
                    bot.wait_for('message'),
                    bot.wait_for('reaction_add')
                ], return_when=asyncio.FIRST_COMPLETED)

asyncio.FIRST_COMPLETED在至少完成一个任务时停止等待,并将其返回为done。查看文档了解更多信息

参考资料:

-^{}

相关问题 更多 >