Discord.js亵渎过滤器将hello检测为坏词

Discord.js亵渎过滤器将hello检测为坏词,discord.js,Discord.js,我的代码: client.on('message', message =>{ for (var i = 0; i < profanities.length; i++){ if (message.content.includes(profanities[i])) { message.channel.send('Please do not say bad words.'); message.delete(); return;

我的代码:

client.on('message', message =>{
   for (var i = 0; i < profanities.length; i++){
      if (message.content.includes(profanities[i])) {
      message.channel.send('Please do not say bad words.');
      message.delete();
      return;
      }
   }
});
client.on('message',message=>{
对于(变量i=0;i<亵渎。长度;i++){
if(message.content.includes(亵渎[i])){
message.channel.send('请不要说脏话');
message.delete();
返回;
}
}
});
如何将某些单词列入白名单?或者只是让hello不被检测到或类似的东西。

如果消息仅仅包含亵渎,您可以使用而不是测试

const regex=new RegExp(`(\\b|\\d)(${profanities.join('|')})(\\b\\d)`,'i');
if(regex.test(message.content)){
message.channel.send('请不要说脏话');
message.delete();
}
regex
将类似于
/(\b\124;\ d)(见鬼去吧)(\b\d)/i
(或任何亵渎的东西)

  • (\b |\d)
    匹配单词边界或数字。A是 一个字字符后面或前面没有另一个字字符的位置,如字母和空格之间

  • (地狱|呸|发誓)
    匹配任何一种亵渎
  • 另外,
    i
    标志使其不区分大小写,因此它与
    hELl
    hELl
    匹配
下面是一个演示:

const亵渎=['hell','poo','sware'];
const regex=new RegExp(`(\\b|\\d)(${profanities.join('|')})(\\b|\\d)`,'i');
console.log(regex);
[
//将匹配
“见鬼!”,
“见鬼”,
“见鬼”,
"噗",,
“12地狱”,
“hell123”,
//不匹配
“你好”,
“勺子”

].forEach(w=>console.log(`${w}':${regex.test(w)}')您必须从比较单词开始,而不仅仅是比较字符序列。一种方法是寻找“地狱”而不是“地狱”;您还可以通过在消息的每一端添加一个空格来处理结束情况。不过,这并不能处理用标签隔开的坏单词。所以我需要建立一个黑名单?有没有办法让我列个白名单?