我想知道是否有人回复我并给他们发消息



我正在写一个Discord bot。我希望它只在用户回复我的bot时才回复用户。

这是相关代码:

if message.reference:
if "How are" in message.content.lower():
await asyncio.sleep(3)
await message.channel.send(random.choice(list4), reference=message)

问题是,即使用户回复给其他人,而不是回复给机器人,也会发送消息。我怎样才能确保只有在用户明确回复机器人时才发送消息?

您当前只是检查消息是否有引用,即,如果它是对另一个人的回复,而不是它是否回复了任何人特别是

要检查用户是否回复了您的一条消息,使用message_id获取该用户回复的消息。然后,您可以通过获取(引用的)Message来检查消息是否由您的bot发送,然后检查其author:

@bot.event
async def on_message(message: discord.Message):
referred_message = await message.channel.fetch_message(message.reference.message_id) #Get the message to which it's a reply
if referred_message.author == bot.user: #Check if the message it replies to was sent by your bot
if "how are" in message.content.lower(): #Changed "How are" to "how are" (small H)
await asyncio.sleep(3)
await message.channel.send(random.choice(list4), reference=message)

此外,if "How are" in message.content.lower():将始终返回False,甚至(您所期望的)"How are"当.lower()ed不完全match ">H现在是"("H" != "h"),所以我把它改成了&;how are&;所以它能正常工作。

相关内容

  • 没有找到相关文章

最新更新