据我所知,这个问题还没有被问过,所以在这里。 在我的代码中,我让我的机器人对特定的触发词做出反应,它可以工作,但并非没有问题。 我遇到的问题是我的机器人正在响应一个小单词,例如"笔"并对单词做出反应,但也对"发生"这样的单词做出反应,因为它里面有笔。
bot.on('message', message=>{
if(message.content.toLowerCase().includes('pen'.toLowerCase())) {
if (message.author.id === bot.user.id) return;
message.channel.send(pen[Math.floor(Math.random() * pen.length)]);
}});
这是代码。我应该提到我对JavaScript很陌生
。我能具体做些什么来让它只对"笔"这个词做出反应吗?
您可以在正则表达式中使用单词边界来仅匹配特定单词,而不匹配其他单词的子字符串。请注意,末尾的i
标志允许它匹配大写和小写"pen"。
/bpenb/i
例如,上面的表达式将匹配单独写为单词的"笔",但不会匹配"发生"中的"笔"。以下是在 JavaScript 中使用它的方法:
/bpenb/i.test('i have a pen') // true
/bpenb/i.test('that happened') // false
最后,您的代码将如下所示:
bot.on('message', message => {
if(/bpenb/i.test(message.content)) {
if (message.author.id === bot.user.id) return;
message.channel.send(pen[Math.floor(Math.random() * pen.length)]);
}
}
);
如果你想玩弄这个表达式,我已经把它发布到RegExr。
您需要检查message.content
是否等于pen
if(message.content.toLowerCase() === 'pen')