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

Python - Is it possible to wait_for one event or another in Discord.py-v1.0?(Python - 是否可以在 Discord.py-v1.0 中等待一个事件或另一个事件?)
本文介绍了Python - 是否可以在 Discord.py-v1.0 中等待一个事件或另一个事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

是否有任何使用 wait_for 以等待 reaction_addreaction_remove 的方式?

Is there any to use wait_for in such a way that it will wait for either reaction_add or reaction_remove?

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

I've seen that there are on_reaction_add and on_reaction_remove functions, but I would like a way to do it without those.

我想要这样的东西:

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

推荐答案

由于这看起来是在使用 asyncio 工具,所以使用内置插件.只需为每个任务创建一个任务,然后使用 asyncio.wait 等待第一个触发:

Since this looks to be using asyncio facilities, use the built-ins. Just create a task for each, then use asyncio.wait to wait for the first one to fire:

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 集中.如果您在其中一个任务完成后不再对其他任务感兴趣,您可以继续取消其他任务,例如:

When one of the tasks completes, this will return, and the task which was satisfied will appear in the done_tasks set. If you're no longer interested in other tasks once one of them completes, you can go ahead and cancel the others, e.g.:

for task in pending_tasks:
    task.cancel()

这篇关于Python - 是否可以在 Discord.py-v1.0 中等待一个事件或另一个事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How do I make a list of all members in a discord server using discord.py?(如何使用 discord.py 列出不和谐服务器中的所有成员?)
how to change discord.py bot activity(如何更改 discord.py 机器人活动)
Issues with getting VoiceChannel.members and Guild.members to return a full list(让 VoiceChannel.members 和 Guild.members 返回完整列表的问题)
Add button components to a message (discord.py)(将按钮组件添加到消息(discord.py))
on_message() and @bot.command issue(on_message() 和@bot.command 问题)
How to edit a message in discord.py(如何在 discord.py 中编辑消息)