我看过类似的问题,但没有一个答案对我有用。我正在使用一个机器人,您在其中输入(前缀)建议{suggestion},然后它会发送一条消息,询问您是否确定要发送建议。如果他们对该消息的反应是该机器人已添加的响应(选中标记),则它将建议发送到渠道。
简而言之,我如何创建触发器,如果某个人对带有特定表情符号的特定消息做出反应,然后发送输出?
答案 0 :(得分:4)
要使其反应检查消息特定,您需要在检查功能中使用 reaction.message == message
。
这是基于 Libby 回答的完整示例。
message = await ctx.send("Are you sure you want to submit this suggestion?")
await message.add_reaction("✅")
confirmation = await bot.wait_for("reaction_add", check=check)
channel = bot.get_channel(channel_id) # Put suggestion channel ID here.
def check(reaction, user):
return user == ctx.author and str(reaction.emoji) in ["✅"] and reaction.message == message
if confirmation:
await channel.send(suggestion)
答案 1 :(得分:1)
您可以使用wait_for
函数使bot等待作者做出对勾标记的反应。
首先,进行检查以确保仅在消息作者做出对勾标记的情况下,机器人才将建议发送到建议频道:
def check(reaction, user):
return user == ctx.author and str(reaction.emoji) in ["✅"]
然后放入发送确认消息并具有wait_for
功能的代码:
message = await ctx.send("Are you sure you want to submit this suggestion?")
await message.add_reaction("✅")
confirmation = await bot.wait_for("reaction_add", check=check)
channel = bot.get_channel(channel_id) # Put suggestion channel ID here.
最后,放置告诉机器人,一旦消息作者做出反应后该怎么做的代码:
if confirmation:
await channel.send(suggestion)