Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查特定用户是否对特定消息有反应[discord.py]_Python_Discord_Discord.py - Fatal编程技术网

Python 如何检查特定用户是否对特定消息有反应[discord.py]

Python 如何检查特定用户是否对特定消息有反应[discord.py],python,discord,discord.py,Python,Discord,Discord.py,我看过类似的问题,但没有一个答案对我有用。我正在开发一个bot,您在其中键入prefixsuggest建议,然后它会发送一条消息,询问您是否确定要发送建议。如果他们对该消息的反应是机器人添加了复选标记,则机器人会将建议发送到通道 简而言之,我如何创建一个触发器,如果某个特定的人用特定的表情符号对特定的消息做出反应,那么它将发送输出?您可以使用wait_for函数让机器人等待,直到作者用复选标记做出反应 首先,进行检查,确保只有消息作者使用复选标记作出反应时,bot才会将建议发送到建议通道: 然后

我看过类似的问题,但没有一个答案对我有用。我正在开发一个bot,您在其中键入prefixsuggest建议,然后它会发送一条消息,询问您是否确定要发送建议。如果他们对该消息的反应是机器人添加了复选标记,则机器人会将建议发送到通道

简而言之,我如何创建一个触发器,如果某个特定的人用特定的表情符号对特定的消息做出反应,那么它将发送输出?

您可以使用wait_for函数让机器人等待,直到作者用复选标记做出反应

首先,进行检查,确保只有消息作者使用复选标记作出反应时,bot才会将建议发送到建议通道:

然后输入发送确认消息并具有等待功能的代码:

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.
最后,输入一段代码,告诉bot一旦消息作者做出反应该怎么做:

if confirmation:
    await channel.send(suggestion)

要使其特定于反应检查消息,您需要在检查函数中使用reaction.message==message

下面是基于Libby答案的完整示例

message=wait ctx.send确实要提交此建议吗? 等待消息。添加\u反应✅ 确认=等待机器人。等待反应\u添加,检查=检查 channel=bot.get\u channel\u id将建议频道id放在这里。 def检查反应,用户: 返回用户==ctx.author和strreaction.emoji in[✅] 和reaction.message==message 如果确认: 等待频道发送建议
问题是,即使用户添加了对其他消息的反应,而不是对bot发送的消息的反应,bot仍然会做一些事情。
if confirmation:
    await channel.send(suggestion)