我正在写一个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&;所以它能正常工作。