Регулярные выражения | Discord Bot | NODE.js | JavaScript | discord.js

190
20 декабря 2019, 14:50

Господа, такое дело, делаю антимат для discord бота, чтобы он заменял матные слова на цензура, принципе код написан, все отлично, но проблема в том, что бот видит матные слова в безобидных словах, например: "употреБЛЯТЬ" и успешно заменяет это слово на употрецензура, как это можно исправить?

Код:

let filterwordslist = ["мат", "этомат", "и это мат", "м а т"];
switch (true) {
case message.author.bot: return;
case new RegExp(filterwordslist.join("|")).test(message.content.toLowerCase()):
let edit = message.content.toLowerCase();
for (var i in filterwordslist) {
    edit = edit.replace(new RegExp(filterwordslist[i], "gmi"), "`*цензура*`");
};
message.delete();
message.channel.send("", {
    embed: new Discord.RichEmbed()
    .setColor("RANDOM")
    .setAuthor('FilterWords', message.guild.iconURL)
    .setDescription(`${message.author}: ` + edit)
    });
};

Answer 1

Попробуйте такой вариант:

let filterwordslist = ["мат", "этомат", "и это мат", "м а т"]; 
 
let edit = "мат слово мат м а т немат ЭТОМАТ ЭТОНЕМАТ"; 
 
filterwordslist.forEach(item => { 
  edit = edit.replace( 
    new RegExp(`(^|[^а-я])${item}([^а-я]|$)`, "gmi"), 
    "$1`*цензура*`$2" 
  ); 
}); 
 
console.log(edit);

READ ALSO
поиск по дереву

поиск по дереву

Здравствуйте у меня есть дерево в таком виде

145
Открыть конкретный блок, react

Открыть конкретный блок, react

Вопрос в следующем, имеется, допустим, 4 кнопки, при клике на кнопку текст в ней должен изменяться на "Открыто", сейчас же проблема в том, что...

138