如何修改Discord bot代码使其可响应句子任意位置的指定关键词
问题原因
现有代码的判断逻辑是校验整条消息内容是否完全匹配关键词列表内的元素,所以只有用户仅发送关键词本身时才会触发判断通过,关键词出现在句子其他位置时自然无法匹配。
修改方案
- 把判断条件改为检查是否有任意一个关键词存在于消息内容中即可,你可以直接用Python内置的
any()语法实现多关键词批量匹配 - 可以额外增加机器人自身消息过滤逻辑,避免机器人自己发的内容触发回复形成死循环
- 如果需要支持不区分大小写匹配,可统一将消息内容和关键词转为小写后再做判断
修改后代码示例
@client.event async def on_message(message): # 过滤机器人自身发送的消息,不需要可删除 if message.author == client.user: return words = ['test'] # 只要消息任意位置包含列表内的关键词就触发回复 if any(word in message.content for word in words): await message.channel.send("test1")
如果需要实现不区分大小写匹配(比如Test、TEST都能触发),把判断行替换为以下内容即可:
if any(word.lower() in message.content.lower() for word in words):
内容的提问来源于stack exchange,提问作者KuFyOn
相关产品推荐
相关产品推荐

