You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用discord.js开发机器人时如何检测句子中包含的指定短语?

问题原因

你当前使用的===是严格相等运算符,只会在消息内容和目标字符串完全一致、没有任何额外字符时才返回真值,自然无法识别混杂在长句里的目标短语。

解决方案

根据你的检测需求选对应写法即可:

1. 只要消息里包含连续的目标短语就触发(最常用)

用字符串的includes()方法做子串匹配即可,这个方法会判断转成小写后的消息内容里,是否存在你指定的目标短语,不管短语在句子开头、中间还是结尾都能识别:

// 把下面的'word'替换成你要检测的实际短语即可
if(message.content.toLowerCase().includes('word')) {
  // 这里写触发@提醒你的逻辑
}

这种写法的匹配逻辑是:只要消息里出现连续的目标字符序列就触发,不管是单独发word,还是发hello word test这类混在句子里的内容,甚至是awordb这类目标字符和其他字符连在一起的内容,都会命中规则。

2. 需要精准匹配独立单词,避免误判长单词

如果你不想要上述的宽泛匹配,比如要检测cat的时候不想把category、catch这类包含目标字符但不是独立单词的内容误触发,可以用带单词边界的正则匹配:

// 正则里\b代表单词边界,i标志代表不区分大小写,不用额外手动调用toLowerCase
const targetWord = /\bword\b/i;
if(targetWord.test(message.content)) {
  // 这里写触发@提醒你的逻辑
}

这种写法下,hello word test这类独立出现目标词的内容会正常触发,但password、word123这类目标词前后没有单词分隔边界的内容就不会误触发。

注意事项
  • 如果要检测多个不同的指定短语,只需要在判断条件里用||拼接多个includes()判断,或者把所有目标词放进数组遍历判断即可。
  • 用includes()方案时记得保留toLowerCase()调用,这样不管用户发的是Word、WORD、word这类大小写变体,都能被正常识别,不会漏判。

内容的提问来源于stack exchange,提问作者Kwehh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:09:18