Все посты
3 мин чтения

Регулярные выражения для модерации Telegram: готовые примеры

Когда фразовых правил мало: номера карт, подменённые буквы, инвайт-ссылки. Готовые выражения и как проверить своё до включения в чате.

Фразовая модерация закрывает подавляющее большинство задач и не требует ничего, кроме слов. Но есть класс нарушений, который словами не описать: шаблон, а не текст. Номер карты. Инвайт-ссылка с произвольным хвостом. Слово, в котором каждую вторую букву заменили похожей латиницей.

Для этого есть блок Regex.

Где это настраивается#

Раздел Модерация → карточка Regex. Правила складываются в наборы, как и фразы, и у набора своя цепочка наказаний.

Блок Regex в настройках модерации

Блок доступен на Базовом тарифе; на Ограниченном его нет.

У правила есть имя, само выражение и флаги. Имя стоит писать человеческое — оно попадёт в журнал модерации, и через месяц «Правило 4» вам ничего не скажет.

Готовые примеры#

Ниже то, что чаще всего просят. Проверьте на своих сообщениях, прежде чем включать: чужой чат — не ваш чат.

Номер банковской карты — шестнадцать цифр группами, с любыми разделителями:

\b\d{4}[ \-]?\d{4}[ \-]?\d{4}[ \-]?\d{4}\b

Приватная инвайт-ссылка Telegram — та, которую не поймать доменным правилом, потому что домен легальный:

t\.me/\+[A-Za-z0-9_-]{10,}

Номер телефона в международном формате:

\+\d{1,3}[ \-(]?\d{2,4}[ \-)]?\d{2,4}[ \-]?\d{2,4}

Сообщение капсом — больше двадцати заглавных подряд с пробелами:

[А-ЯЁA-Z]{5,}(\s+[А-ЯЁA-Z]{3,}){3,}

Слово с подменёнными буквами — классический приём обхода стоп-слов, когда кириллическую «о» пишут латиницей:

[кk][рpr][иi][пp][тt][оo0]

Кошелёк TRON — адреса USDT, которые спамеры кидают в чат:

\bT[A-Za-z1-9]{33}\b

Как не выстрелить себе в ногу#

Регулярное выражение не знает контекста и ловит ровно то, что написано. Три правила, которые экономят нервы.

Проверяйте на живых сообщениях. Возьмите десяток настоящих сообщений из своего чата — и спамных, и обычных — и прогоните правило на них, прежде чем включать.

Ставьте границы слова. \bспам\b не заденет «антиспам» и «спамер», а голое спам заденет.

Начинайте с мягкой санкции. Первое время держите набор на «удалить и предупредить», посмотрите журнал модерации через пару дней и только потом добавляйте мьюты.

И общее соображение: если задачу можно решить фразовым правилом — решайте им. Фразы читаются, редактируются коллегой и не ломаются от лишней скобки. Regex стоит доставать тогда, когда фраз действительно не хватает.

Чем regex отличается от фраз#

Фразовое правило работает по нормализованному тексту: перед проверкой из сообщения убираются пробелы, эмодзи и знаки препинания, а подменённая латиница возвращается к кириллице. Поэтому «с п а м» и «спам» для него одно и то же.

Regex смотрит на текст ближе к исходному виду — в этом и сила, и слабость. Сила: можно описать структуру, которую нормализация бы затёрла. Слабость: приёмы обхода, от которых фразы защищены по умолчанию, здесь придётся предусмотреть руками.

Если regex кажется избыточным, начните с простого: как защитить Telegram-группу от спама.

Чем regex-правила отличаются от модерации по фразам?

Фразы описывают слова и их сочетания и работают по нормализованному тексту, где убраны пробелы и подменённые буквы. Regex описывает структуру — номер, ссылку, шаблон — и смотрит текст ближе к исходному. Если задача решается фразами, лучше решать ею.

Regex доступен на бесплатном тарифе?

Нет, блок Regex входит в Базовый тариф. На Ограниченном доступны фразы, ссылки, длина, дубликаты, системные сообщения и белый список.

Как проверить выражение, не включая его в чате?

Проверьте его на тестовых строках при сохранении правила, а первое время держите набор на мягкой санкции — «удалить и предупредить» — и смотрите журнал модерации.

Можно ли наказывать за разные regex-правила по-разному?

Да. Правила складываются в наборы, а цепочка наказаний привязана к набору.

Читать дальше