Python-Discord.py-v1.0中是否可以等待一个事件或另一个事件?

时间:2019-12-21 02:52:18

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

是否可以使用wait_forreaction_add来使用reaction_remove

我已经看到有on_reaction_addon_reaction_remove函数,但是我想要一种没有这些函数的方法。

我想要这样的东西:

reaction,user=await bot.wait_for('reaction_add/reaction_remove',check=check)

1 个答案:

答案 0 :(得分:1)

由于这似乎是在使用asyncio工具,因此请使用内置工具。只需为每个任务创建一个任务,然后使用asyncio.wait等待第一个任务触发:

pending_tasks = [bot.wait_for('reaction_add',check=check),
                 bot.wait_for('reaction_remove',check=check)]
done_tasks, pending_tasks = await asyncio.wait(pending_tasks, return_when=asyncio.FIRST_COMPLETED)

其中一项任务完成时,它将返回,并且满足的任务将出现在done_tasks集中。如果您不再对其他任务感兴趣,则可以继续执行并取消其他任务,例如:

for task in pending_tasks:
    task.cancel()
相关问题