optimize both devicesa

This commit is contained in:
2026-04-24 13:04:00 +07:00
parent 8bf72addb2
commit 942b5c56e2
6 changed files with 590 additions and 591 deletions
+49 -10
View File
@@ -11,28 +11,68 @@ struct CommentPayload {
message: String,
}
// 1. Расширенный список КОРНЕЙ.
static BAD_WORDS_REGEX: LazyLock<Regex> = LazyLock::new(|| {
Regex::new(r"(?i)(хуй|хуя|хуе|пизд|ебат|ебан|ебл|бляд|блят|шлюх|сука|сучк|порно|наркот|убить|насилие|heroin|meth|murder|gore|соли|закладк|мефедрон|гашиш|спайс|cpam|scam|crypto|binance)").unwrap()
Regex::new(r"(?i)(хуй|хуя|хуе|хул|пизд|ебат|ебан|ебл|ебуч|бляд|блят|шлюх|сука|сучк|жоп|пидор|пидар|педик|голубо|гондон|гандон|залуп|мудак|мудил|мраз|уеб|чмо|долбое|даун|чурк|нигер|нигга|хач|хохол|кацап|жид|порно|наркот|убить|насилие|соли|закладк|мефедрон|гашиш|спайс|heroin|meth|murder|gore|cpam|scam|crypto|binance|bitco)").unwrap()
});
// 2. БЕЛЫЙ СПИСОК (Исключения). Защищает нормальные слова, содержащие плохие корни.
const SAFE_WORDS: &[&str] = &[
// Защита корня "ебл/ебат" (самые частые ложные срабатывания)
"колебат",
"оскорблят",
"употреблят",
"расслаблят",
"потреблят",
"страхуй",
"рубл",
"сабл",
"истреблят",
"хлебат",
"греб",
"истреб",
"щебет",
"мебел",
"стебл",
"ослабл",
"гребл",
"хлебл",
"дебел",
"колебл",
// Защита корня "хуй"
"страхуй",
"подстрахуй",
// Защита корня "бля"
"рубл",
"сабл",
"челяб",
"влюбл",
"ограбл",
"дубл",
"гибл",
"корабл",
// Защита корня "жоп"
"джоп",
"джобс",
"прожора",
// Защита корня "пидар/пидор"
"скипидар",
"купидор",
"коридор",
// Защита корня "чмо"
"чмок",
"ячмен",
"черемух",
// Защита корня "мраз"
"мразер",
"замороз",
"мороз",
"мрамор",
// Защита корня "сука"
"рисука",
"присука",
"бамбука",
// Защита корня "жид"
"ожид",
"жидкос",
"жидк",
// Защита корня "даун"
"даунгрейд",
"адаун",
];
// Заменяет легальные слова-исключения на плейсхолдер перед проверкой
fn apply_allowlist(text: &str) -> String {
let mut safe_text = text.to_string();
@@ -41,7 +81,6 @@ fn apply_allowlist(text: &str) -> String {
}
safe_text
}
// Функция жесткой нормализации текста перед проверкой
fn normalize_for_filter(input: &str) -> String {
let mut normalized = String::new();