Усі пости
12 хв читання

Як налаштувати фільтр за словами в Telegram-групі

Бот видаляє повідомлення з потрібними словами. Розбираємо, як зібрати правило з кількох слів, додати синоніми та винятки й перевірити його до ввімкнення.

Рано чи пізно в будь-якому живому чаті починає повторюватися одне й те саме: «пишіть у приватні», «продам акаунт», оголошення про обмін крипти. Чистити це руками виснажливо, а тримати цілодобового модератора ні до чого — з такою рекламою та спамом справляється фільтр за словами: бот сам видаляє повідомлення, у яких знайшлися потрібні слова.

У Scarabeus цей фільтр називається модерацією за фразами. На відміну від ШІ-правил тут немає здогадів: правило або знайшло слова в повідомленні, або ні. Тому фрази зручні там, де формулювання передбачувані, а ціна помилки висока.

Конструктор виглядає як набір фрагментів, пов’язаних між собою. Нижче — що означає кожен зв’язок, як вони поєднуються і чому одне й те саме правило іноді поводиться не так, як очікуєш. Усі приклади з результатами «упіймає» та «пропустить» перевірені на тому самому механізмі, який працює в боті.

Де налаштовуються стоп-слова в Telegram-групі#

Розділ Модерація → картка «Модерація за фразами». На самій картці — перемикач, який вмикає та вимикає весь блок, а кнопка «Налаштувати» відкриває набори правил.

Картка «Модерація за фразами» в розділі «Модерація»

Зведення на картці одразу показує, скільки наборів і правил увімкнено та в скількох наборах ще не задані санкції.

Правила живуть усередині наборів. Набір — це тематична пачка: «Крипта», «Реклама каналів», «Мат». Сенс поділу не косметичний: ланцюжок покарань прив’язаний до набору, тому реклама й образи можуть каратися по-різному і не змішувати лічильники порушень.

Як зібрати перше правило#

Усередині набору натисніть «Додати правило». Правило збирається з фрагментів двох видів:

  • фраза — конкретні слова, які шукаємо в повідомленні;
  • число — будь-яка послідовність цифр, відображається як «будь-яке число».

Між сусідніми фрагментами завжди стоїть зв’язок — АБО чи І. Кнопка «Додати фрагмент» додає наступний шматок, а «Згрупувати» об’єднує сусідні фрагменти в групу.

Редактор правила: група «buy АБО sell», зв’язок І з відстанню 10 і фраза «crypto»

Згори редактора завжди висить попередній перегляд — він показує, як правило прочитається насправді.

Візьмімо для прикладу набір «Крипта»: у чаті про настільні ігри оголошення про обмін валют не потрібні. Найпростіше робоче правило — одна фраза:

Воно впіймає прямі оголошення й пропустить усе, що сформульовано інакше. Далі починається те, заради чого потрібен конструктор.

І — обидві частини мають бути в повідомленні#

Зв’язок І означає, що в тексті мають зустрітися обидва фрагменти. Поруч зі зв’язком з’являється поле «До n символів» — максимальна відстань між ними.

  • Упіймає: “swap usdt at a good rate”.
  • Упіймає: “usdt for swap” — без суворого порядку неважливо, яке слово йде першим.
  • Пропустить: “swap stickers happens every friday at our board game club, and questions about usdt belong in another chat” — між словами більше ніж 40 символів.

АБО — достатньо будь-якої з частин#

Зв’язок АБО спрацьовує, якщо знайдена хоча б одна із сусідніх частин:

  • Упіймає: “buying a couch” — АБО не вимагає нічого, крім одного зі слів, тому таке правило широке.
  • Пропустить: “trading cards”.

Важлива тонкість: АБО зв’язує сильніше, ніж І. Ось це правило:

читається як «swap або p2p — і поруч usdt», а не як «або swap, або p2p поруч із usdt». Явно той самий зв’язок виглядає так:

  • Пропустить: “swap stickers” — слово “swap” саме по собі нічого не ловить, йому теж потрібен “usdt” неподалік.
  • Упіймає: “p2p usdt” і “swap usdt”.

Якщо потрібне інше групування — виділіть частини кнопкою «Згрупувати», тоді спочатку шукається збіг усередині групи, а вже його результат пов’язується з рештою фрагментів. Груп у правилі може бути кілька, але група всередині групи неприпустима.

Число — будь-які цифри#

Фрагмент «будь-яке число» підставляється замість будь-якої послідовності цифр: суми, кількості, номери. Він потрібен там, де слова передбачувані, а числа — ні:

  • Упіймає: “selling for 500”, “giving away 2 pieces”.
  • Пропустить: “selling advice” — цифр у ньому немає.

«До n символів»: дві пастки#

Перша: 0 означає «без обмеження», а не «впритул». Це найчастіша помилка. Якщо поставити 0, фрагменти просто мають десь зустрітися в повідомленні — хоч у першому рядку й в останньому.

Друга: відстань рахується за текстом, з якого вже прибрані пробіли.

  • Упіймає: “notcrypto”, “not crypto” і “not crypto” — пробіли зникають перед перевіркою, тож в усіх трьох випадках відстань дорівнює нулю.

Тому обмеження покриває значно більше, ніж здається на око: 40 символів без пробілів — це приблизно шість-сім слів.

Суворий порядок#

За замовчуванням зв’язок І не дивиться на порядок — як у прикладі “usdt for swap” вище. Галочка «Суворий порядок» вимагає, щоб частини йшли в тексті зліва направо — рівно так, як вони виставлені у формі. У схемі суворий порядок позначається знаком оклику:

  • Упіймає: “buying usdt”.
  • Пропустить: “usdt buying”.

Суворий порядок можна ввімкнути на все правило цілком або лише на групу.

Винятки#

Галочка «Виняток» перетворює фрагмент на умову, яка скасовує спрацювання. Виняток залишається звичайною частиною ланцюжка — зі своїм зв’язком, як і всі інші, — і відрізняється лише кольором. Що саме він скасовує, залежить від рівня.

Виняток на верхньому рівні скасовує все правило. Спочатку перевіряється основна частина, і якщо вона збіглася, але десь у повідомленні знайшовся виняток — правило не спрацьовує. Приклад — набір «Реклама каналів», де власні анонси не мають потрапляти під роздачу:

  • Упіймає: “subscribe to the channel”.
  • Скасує виняток: “subscribe to our channel”.
  • Скасує виняток: “our channel: subscribe to the channel” — де саме в повідомленні знайшовся виняток, значення не має.

Якщо «своїх» варіантів кілька, виняток ставиться на всю групу — тоді будь-який із них скасовує спрацювання:

  • Скасує виняток: “subscribe to the official channel”.
  • Упіймає: “subscribe to the channel”.

Виняток усередині групи гасить лише цю групу, а решта гілок АБО за її межами продовжують працювати. Як це виглядає на ділі — у розділі про комбінації нижче.

На кожному рівні дозволено один виняток, вкладені винятки заборонені.

Комбінації: як частини працюють разом#

Окремі зв’язки зрозумілі; несподіванки починаються, коли їх поєднуєш. А саме поєднання й потрібні, щоб вичищати рекламу та спам, не зачіпаючи звичайні розмови. Нижче — основні комбінації й те, як на них реагує правило.

Група з І всередині АБО#

Група може сама бути зв’язкою І — тоді вона цілком стає однією з гілок АБО:

  • Упіймає: “buying usdt” — спрацювала група.
  • Упіймає: “any p2p here?” — спрацювала друга гілка, група не знадобилася.
  • Пропустить: “buying a couch” — у групі забракло “usdt”, а “p2p” немає.

Ланцюжок із трьох частин#

Зв’язки І можна ставити поспіль, у кожного своя відстань. Правило спрацює лише тоді, коли знайдуться всі частини:

  • Упіймає: “selling telegram account”.
  • Пропустить: “selling an account” — однієї частини бракує.

Дві групи через І#

Груп може бути кілька — наприклад, синоніми з обох боків:

  • Упіймає: “p2p btc”, “swap usdt” — будь-яке слово з першої групи поруч із будь-яким із другої.
  • Пропустить: “swap stamps”.

Суворий порядок без обмеження відстані#

Суворий порядок і відстань незалежні. З нулем порядок важливий, а розрив — ні:

  • Упіймає: “swap stickers, and at the very end about usdt”.
  • Пропустить: “usdt first, swap later”.

Суворий порядок лише всередині групи#

Порядок можна вимагати від однієї групи, не зв’язуючи решту правила:

  • Упіймає: “buying usdt”.
  • Пропустить: “usdt buying” — усередині групи порядок порушений.
  • Упіймає: “usdt buying via p2p” — група не спрацювала, зате спрацювала гілка “p2p”.

Число першим#

Число може стояти будь-де в ланцюжку. Разом із суворим порядком це дозволяє ловити «сума, потім валюта», не чіпаючи зворотний порядок:

  • Упіймає: “500 usdt”.
  • Пропустить: “usdt 500”.

Виняток усередині групи#

Найтонший випадок: виняток гасить лише свою групу, а сусідня гілка АБО живе власним життям:

  • Упіймає: “swap usdt” — група спрацювала, винятку немає.
  • Скасує виняток: “swap stickers” — групу погашено, інших гілок у повідомленні немає.
  • Упіймає: “swap stickers and p2p” — групу погашено, але гілка “p2p” спрацювала сама.

Суворий порядок і виняток#

Виняток не бере участі в порядку: суворий порядок перевіряє основні частини, а виняток шукається по всьому повідомленню:

  • Упіймає: “buying usdt”.
  • Скасує виняток: “buying from you usdt”.

Чому правило спрацьовує не так: що відбувається з текстом перед перевіркою#

Це ключовий розділ: половина несподіванок пояснюється саме ним. І правило, і повідомлення зводяться до одного вигляду, і лише потім порівнюються:

  1. текст переводиться в нижній регістр — регістр ніколи не важливий;
  2. емодзі видаляються;
  3. розділові знаки та символи замінюються на пробіл;
  4. підміна літер розпізнається: у словах, де перемішані алфавіти або літери з цифрами, зайві символи повертаються назад — “go0ds” читається як “goods”, а “cаnal” із кириличною «а» — як “canal”. Послідовність цифр не чіпають, тож “100” залишається “100” — і “g00ds” із двома нулями поспіль теж не перетворюється;
  5. усі пробіли видаляються.

Звідси три наслідки, які варто пам’ятати:

  • Пошук іде за підрядком, меж слів немає. Фраза ban знайдеться в “banana” та “urban”. Короткі фрази майже завжди треба уточнювати зв’язком І або замінювати довшими.
  • Пробіли та знаки всередині фрази не заважають. Правило spam спрацює на “s p a m” і “s.p.a.m”.
  • Фраза з самих лише емодзі чи розділових знаків не спрацює ніколи — після нормалізації від неї нічого не залишиться.

Перевірте правило до того, як воно запрацює#

Унизу редактора є картка «Перевірити правило». Вставте в поле «Текст для перевірки» справжнє повідомлення й натисніть «Перевірити».

Перевіряється чернетка, яка зараз відкрита у формі, — зберігати правило не потрібно. Санкцій це не викликає і в журнал не потрапляє. Відповідь буває трьох видів:

  • «Текст не проходить модерацію» — правило спрацювало б;
  • «Текст проходить модерацію» — не спрацювало; нижче перелічено, чого саме забракло: «У тексті не знайдено: …»;
  • «Текст проходить модерацію» і при цьому підсвічений виняток — правило спрацювало, але було скасоване винятком.

Підсвічування показує текст уже після нормалізації: без пробілів, емодзі та розділових знаків. Виглядає незвично, зате одразу видно, що саме порівнює бот.

Картка «Перевірити правило»: текст “sell crypto” не проходить модерацію

Перевірка нічого не зберігає й нікого не карає — вона лише показує, чи спрацювало б правило на цьому тексті.

Чому правило не видаляє повідомлення: санкції задаються в наборі#

Ланцюжок покарань задається лише в наборі: «Після N порушень — попередження, після наступного — м’ют» і так далі. Ні в окремого правила, ні в блоку загалом свого ланцюжка немає — саме набір і є тією одиницею, якій призначається суворість. Тому правила й варто розкладати по наборах: «Крипта», «Реклама каналів», «Мат» караються по-різному.

Набір «Profanity»: два правила й ланцюжок «без санкції → попередження → м’ют»

Правила набору видно списком, а внизу картки — його ланцюжок покарань.

Якщо в наборі не налаштовані санкції, його правила не спрацюють узагалі — і в журналі не з’явиться жодного рядка. Набір виглядає робочим, але насправді не діє. Якщо правило «не ловить», перевіряти варто насамперед це.

Галочка «Свій лічильник порушень» у редакторі правила потрібна, коли одне правило не повинно тягнути за собою решту: його спрацювання рахуються окремо й не зсувають спільний лічильник набору. Зворотний бік — при вимкненні галочки накопичений лічильник цього правила видаляється, і ескалація починається заново.

Що і коли перевіряється#

  • Перевіряється текст повідомлення та підпис до медіа. Повідомлення без тексту текстові шари не зачіпають.
  • Відредаговані повідомлення перевіряються заново — правка не рятує.
  • Адміни чату й учасники з білого списку пропускаються до всіх перевірок: ні спрацювань, ні лічильників.
  • Шари йдуть по черзі: довжина → дублікати → фрази → регулярні вирази → посилання. Перший шар, що спрацював, завершує перевірку, тому повідомлення, спіймане за довжиною чи дублікатами, до фраз уже не доходить.
  • Якщо спрацювали кілька фразових правил, зараховується перше за порядком — від нього й береться набір, а отже і ланцюжок покарань.

У журналі модерації спрацювання відображається як «Фрази: назва набору», там же видно, яке правило збіглося і на якому щаблі ескалації опинився учасник.

Ліміти тарифів#

На Обмеженому тарифі одночасно працює не більше ніж десять фразових правил: перемикач у картці набору обирає, які саме з них активні. Кількість самих наборів не обмежена. На Base обмежень за фразами немає, і там же доступні регулярні вирази та окремі налаштування для тем форуму. Що входить у кожен тариф — на сторінці тарифів.

Часті запитання#

Чим фразові правила відрізняються від звичайних стоп-слів?

Стоп-слово заборонене саме по собі. Фразове правило вміє вимагати кілька слів поруч, допускати синоніми через АБО, враховувати порядок і мовчати, якщо в повідомленні знайшовся виняток. Тому воно значно рідше зачіпає звичайні розмови.

Як заблокувати мат у Telegram-чаті?

Заведіть окремий набір — наприклад, «Нецензурна лексика», — складіть у нього правила з варіантами написання через АБО й призначте набору ланцюжок покарань. Поки в наборі немає санкцій, його правила не спрацьовують.

Чому моє правило нічого не видаляє?

Найчастіше в наборі не налаштований ланцюжок покарань. Інші причини: блок «Модерація за фразами» вимкнений; повідомлення спіймав раніший шар — довжина або дублікати; автор виявився адміном чату чи учасником білого списку; на Обмеженому тарифі правило не потрапило в десятку активних.

Чи ловляться слова з пробілами та підміненими літерами?

Так. Перед перевіркою з тексту прибираються пробіли, емодзі й розділові знаки, а зайві цифри чи літери з іншого алфавіту всередині слова повертаються назад. Тому “s p a m”, “s.p.a.m” і “spam” для правила — одне й те саме.

Чи перевіряються підписи до фото та відредаговані повідомлення?

Так. Правила дивляться на текст повідомлення та підпис до медіа, а відредаговане повідомлення перевіряється заново — правка його не рятує.

Короткий чеклист#

  • Набору призначений ланцюжок покарань — інакше правила мовчать.
  • Значення «До n символів» — не 0, якщо ви мали на увазі «поруч».
  • Потрібен порядок слів — увімкнений «Суворий порядок».
  • Короткі фрази на кшталт ban уточнені зв’язком І, щоб не ловити “banana”.
  • Правило перевірене на справжньому повідомленні в картці «Перевірити правило».
  • Власні анонси винесені у виняток.

Інші інструкції з налаштування модерації Telegram-груп — у журналі Scarabeus.

Читати далі