python - Discord.py 等待不是命令作者的用户对消息做出反应(嵌入)
问题描述
本质上,我正在尝试在作者和对嵌入做出反应的人之间创建一个 1v1 游戏。就像您要玩井字游戏一样,例如,用户将使用“!play”发起邀请,然后下一个做出反应的人将开始两者之间的比赛。
目前,我已经尝试过文档中的 wait_for ,但是只有在发出“!play”命令的用户做出反应时它才会继续,我环顾四周但有点卡住了。这是代码如下:
msg = await ctx.send(embed=invite)
await msg.add_reaction('✅')
try:
reaction, user = await client.wait_for("reaction_add", check=lambda reaction, user: user == ctx.author and reaction.emoji in [u"\u2705"], timeout=30.0)
except asyncio.TimeoutError:
await ctx.send("Nobody wanted to play with you :(")
else:
if reaction.emoji == u"\u2705":
await ctx.send("Starting game with: " + ctx.message.author.name + " & " + str(user))
命令作者做出反应时的输出:Starting game with: user & user。
其他人反应时的输出:导致超时
我已经看到了一些关于 on_reaction_add 的东西,但是我不希望超过 1 人对它做出反应
提前致谢。
解决方案
在 lambda 检查中,您当前正在检查user == ctx.author
您是否只需更改为user != ctx.author
推荐阅读
- javascript - 使用 axios create 发送请求正文时出现问题
- sql - 在 Oracle 分层查询中放置 PRIOR 语句引起的差异
- c# - 通过构造函数的依赖注入只创建一个实例
- javascript - 如何将 Vue 方法调用到普通的 javascript 函数中?
- python - 如何单独操作字符串“x”而不将其与其他字符串混合
- numpy - 切片和更改 numpy 2D 数组,每行的列索引列表不同
- webpack - Webpack - 它可以在代码更改时自动编译捆绑的文件吗?
- regex - Ubuntu 18 Apache .htaccess 使用通配符重写到其他目录 - 美化 URL
- mysql - 在 MySQL 中有效地处理不同类型的“follow”函数
- python - Python:测试列表中的任何字符串是否包含给定文本