discord.py机器人如何实现不区分大小写检测消息内关键词并响应
实现方法
你当前代码里的==是整句精确匹配逻辑,只有消息内容完全等于"ok"时才会触发,要实现「不区分大小写+检测消息任意位置包含关键词」的需求,直接用Python的成员运算符in替换==即可:
# 统一将消息内容转为小写,再判断目标小写关键词是否存在于内容中 if "ok" in message.content.lower(): await message.channel.send('Ok')
该写法可以覆盖所有不区分大小写的包含匹配场景,类似OK、Ok, I see、that's ok man、oK no problem这类内容都可以正常触发响应。
可选优化:避免子串误匹配
如果不想把带有"ok"字符片段的其他单词(比如look、cook、okra)误识别为关键词,可以通过正则增加单词边界判断,同样支持不区分大小写匹配:
import re # \b 代表单词边界,只会匹配独立出现的ok关键词 if re.search(r"\bok\b", message.content, re.IGNORECASE): await message.channel.send('Ok')
该写法下,类似I look at the cat这类包含ok字符片段但并非独立单词的内容不会触发响应,只有独立出现的ok(不限制大小写、不限制在消息中的位置)才会触发。
内容的提问来源于stack exchange,提问作者rfretehb
相关产品推荐
相关产品推荐

