我试图弄清楚如何从整个消息中得到一个特定的单词。就像使用亵渎过滤器一样。
for (let x = 0; x < profanities.length; x++) {
if (message.content.toUpperCase().includes(profanities[x].toUpperCase())) {
message.channel.send('Oooooooh you said a bad word!');
client.channels.get('484375912389935126').send(`Message was deleted due to use of a blocked word:\n\n"${message.content}"`);
message.delete();
return;
}
}
现在这行得通,除了以下事实:如果在另一个单词中说了一个单词,它也会因为.includes而找到它,例如,如果我要阻止“ bum”,而有人说“ bumble”,它将删除“ bumble”,因为好。亵渎过滤条件很好,但我想为会员做一个有趣的事情:
const words = message.content.toLowerCase();
if (words.includes('bum')) {
setTimeout(function() {
message.channel.send('Are we talking about <@memberID>?!');
}, 1500);
}
我使用“ memberID”代替了真实的ID。但这会在“ bumble”中找到“ bum”,但我只希望它在邮件中将“ bum”作为一个单独的词来查找。像“这个混蛋很奇怪”之类的东西。
答案 0 :(得分:0)
就像其他答案一样,请使用正则表达式:
if (/\bbum\b/i.test(message.content)) {
setTimeout(function() {
message.channel.send('Are we talking about <@memberID>?!');
}, 1500)
}
\b
检查单词边界,而i
使其不区分大小写。