如何仅对特定消息使用 wait_for("reaction_add") 函数?不和谐.py

时间:2021-03-24 07:54:45

标签: python async-await discord.py

就像机器人不会读取消息的任何其他反应,而只会读取特定消息。

在此代码中添加 reaction.message == msgg 是否有助于解决问题? (我不知道那个函数是否存在,我也测试过,但对我不起作用)

reaction, user = await client.wait_for("reaction_add")
if user == members.user and str(reaction.emoji) == "✔️":
  await members.user.send("your answer is ✔️")
else:
  return

3 个答案:

答案 0 :(得分:0)

您将检查 reaction.message.content 是否与您想要的消息相同。

reaction, user = await client.wait_for("reaction_add")
if reaction.message.content == "<desired message>":
    if user == members.user and str(reaction.emoji) == "✔️":
        await members.user.send("your answer is ✔️")
    else:
        return

答案 1 :(得分:0)

您可以为此使用 on_reaction_add 函数,然后检查用户正在响应的消息是否是所需的消息。

@client.event
async def on_reaction_add(reaction, user):
      if user.bot:
         return
      my_message_id = 1234567
      if reaction.message.id == my_message_id
         await message.channel.send("Your answer is ✔️")
      else:
         return
      

答案 2 :(得分:0)

这适用于 check 函数的 wait_for 参数:

reaction, user = await client.wait_for("reaction_add", check=lambda m: m.id == MESSAGE_ID)

if user == members.user and str(reaction.emoji) == "✔️":
    await members.user.send("your answer is ✔️")

else:
    return

(Idk 如果 lambda mm.id 对反应有效,您必须对此进行测试)