Модерация комментариев в Telegram: что работает (2026)
Спам под постом — не то же самое, что спам на входе. Что ловят фильтры, когда мьют превращается в бан и чего не видит ни одно правило.
Коротко. Капча на входе и фильтр в комментариях решают разные задачи. На входе вы оцениваете аккаунт, под постом — сообщение, и отправитель уже внутри. AdminHub модерирует привязанную группу обсуждения: шесть фильтров по паттернам, ловля дублей, тихая эскалация до мьюта и бана и проверка ИИ для всего, что прошло правила. Каждое действие попадает в журнал. Это работа с паттернами, а не со смыслом, и дефолт фильтра ссылок строже, чем нужно большинству каналов.
Очередь заявок — известная проблема. Но вечер съедают комментарии.
Разница структурная. На входе вы оцениваете аккаунт: сколько ему дней, проходит ли он проверку, есть ли он в базе спамеров. Под постом вы оцениваете сообщение — а за ним может стоять подписчик с трёхмесячным стажем, который до сегодняшнего дня не делал ничего плохого. Дверь не спасёт: отправитель уже внутри. Поэтому каналы, закрывшие вопрос с заявками, всё равно находят крипто-ссылки под каждым постом.
Всё дальше — про вторую задачу. Про саму дверь есть отдельный разбор: защита канала от спама и ботов.
Комментарии живут в группе, а не в канале
У канала в Telegram нет собственного блока комментариев. То, что видно под постом, — это привязанная группа обсуждения, а кнопка комментариев открывает ветку внутри неё. Каждый комментарий — сообщение в группе.
Отсюда три следствия, и они определяют возможное ещё до всяких настроек.
Нет привязанной группы — нечего модерировать. Если комментарии выключены, чата нет и фильтрам нечего читать.
Бот должен быть админом в группе, а не только в канале. Права в канале дают ему публиковать. Права в группе — видеть сообщения и удалять их. Группу обсуждения AdminHub определяет сам, по связанному чату канала, но права выдаёте вы.
Бан — это бан в группе. Забаненный за спам в комментариях остаётся подписчиком канала и теряет только возможность писать под постами. Обычно ровно этого и хотелось.
Шесть фильтров и что каждый на самом деле ловит
Два включены по умолчанию, потому что вдвоём они закрывают большую часть потока.
- Инвайт-ссылки — формы
t.me/+иt.me/joinchat/в любом написании. Это тот самый спам «подпишись на мой канал». - Ссылки — любой адрес http или https, плюс список разрешённых доменов, который заполняете вы. Сверка идёт по точному домену или настоящему поддомену, поэтому разрешённый example.com не пропускает заодно evil-example.com.
Ещё четыре выключены, пока вы их не включите.
- Пересылки — любое пересланное сообщение, чем бы оно ни было.
- Упоминания — @username от четырёх символов. Почтовые адреса исключены намеренно: совпадение по @gmail внутри адреса раньше удаляло нормальные сообщения.
- Телефоны — достаточно длинная цепочка цифр. Отличить телефон от номера заказа она не может.
- Стоп-слова — ваш список, поиск по подстроке без учёта регистра. Подстрока означает, что «кран» сработает внутри слова «экран». Берите слова, которые вы удалили бы не глядя, и немного.
Порядок именно такой, побеждает первое совпадение, удаление происходит сразу и молча. Автору не сообщают, почему его сообщение исчезло.
Одно и то же сообщение трижды
Отдельно от фильтров: одинаковый текст от одного человека три раза за пять минут удаляется, а автор получает мьют на пять минут.
Сравнение точное — текст обрезается, приводится к нижнему регистру и хешируется. Один изменённый символ делает сообщения разными. Так что копипаста и залипшая клавиатура ловятся, а ротация шаблона — нет.
Пятиминутное окно здесь важно, и это исправление пришлось выкатывать отдельно. Без него три «спасибо» — вообще когда-либо, хоть за месяц — давали завсегдатаю мьют.
Ограничения по частоте тут нет: ничего не считает сообщения в секунду независимо от содержания. Это умеет нативный медленный режим Telegram в настройках группы, и умеет лучше.
Что происходит после третьего нарушения
Каждое срабатывание фильтра добавляет единицу в счётчик, который ведётся по человеку и чату. Три числа задаёте вы: мьют после N нарушений (по умолчанию 3), бан после N (6, после чего счётчик обнуляется) и длительность мьюта (по умолчанию час, задаётся от минуты до суток).
Эскалация тоже тихая. В чат ничего не пишется ни до, ни после. Случайный нарушитель теряет одно сообщение, упорный — сначала право писать, потом группу.
Одно свойство стоит знать: счётчики живут в памяти, а не в базе, поэтому перезапуск или деплой их обнуляет. То есть эскалация — это поведение в рамках сессии, а не вечное досье; работает это в обе стороны и чаще в пользу участника.
Рядом стоят два необязательных окна. Ограничения для новичков блокируют ссылки и пересылки первые N часов после вступления. Ночной режим блокирует ссылки и медиа между двумя часами по UTC — на промежуток, когда никто не смотрит. Оба по умолчанию выключены.
Проверка ИИ в конце
Правила идут первыми, потому что срабатывают мгновенно. Всё, что их пережило, уходит на проверку ИИ, и это как раз то, чего регулярное выражение не умеет в принципе: аккуратно написанное рекламное сообщение, в котором нет ни одной ссылки.
На проверку уходит текст сообщения — первые 500 символов, — название вашего канала как контекст и дополнительные правила, которые вы вписали в одно свободное поле: например, «мы обсуждаем автомобили, всё про ставки — спам». Ответ бинарный: спам или нет. Спам означает тихое удаление и плюс одно нарушение в счётчике.
Два свойства здесь важнее самой модели.
Читается только текст. Фото без подписи для проверки не существует. Стикер тоже.
Отказ трактуется в пользу автора. Если проверка упала или не уложилась в таймаут, сообщение остаётся. Сбой делает модерацию слабее, но никогда — нервознее.
Что видит владелец
Каждое действие — удаление, мьют, бан — пишется в журнал вместе с правилом, которое его вызвало, первыми 500 символами сообщения и временем. В панели видны суммы по типам действий, самые частые фильтры и последние записи.
Именно журнал делает строгие настройки переносимыми. Слишком агрессивное правило проявляется за день как череда удалений, с которыми вы не согласны, а не как подписчики, тихо решившие, что комментарии умерли.
Участники могут ещё ответить на сообщение командой /report. Это создаёт запись для вас и больше ничего — никакого автоматического удаления и никаких мер по чужому слову.
Где это не поможет
- Паттерны, а не смысл. Стоп-слова — подстроки, фильтр телефонов считает цифры, фильтр упоминаний видит любое @имя. Контекст не читает ни один из них. Проверка ИИ читает — в пределах 500 символов текста, и это суждение, а не гарантия.
- Дефолт по ссылкам строже, чем нужно большинству. Как есть, он удаляет любую ссылку у всех, включая завсегдатаев. Заполните разрешённые домены, прежде чем на него полагаться.
- Медиа без текста не оценивается. Картинка проверяется правилами про пересылки и новичков — и больше ничем.
- Отредактированные сообщения повторно не проверяются. Чистый комментарий, в который потом дописали ссылку, останется.
- Комментарии от имени канала пропускаются. Смотрятся только сообщения от настоящих пользовательских аккаунтов. Тот, кто пишет под личиной своего канала, находится вне всего этого.
- Это не заменяет человека в разгорячённой ветке. Мусор снимается автоматически. Склоки, набеги и просто занудный офтоп остаются вам.
Что сделать сейчас
- Включите модерацию в мини-приложении и проверьте, что группа обсуждения определилась.
- Выдайте боту права администратора в этой группе — как минимум удаление и ограничение участников.
- Заполните список разрешённых доменов, прежде чем оставлять фильтр ссылок включённым.
- Добавьте три-четыре стоп-слова, которые вы удалили бы не глядя. Не тридцать.
- Через день посмотрите журнал и поменяйте ровно одну настройку.
Полный список функций — на странице защиты канала, а про сторону двери у того же инструмента есть защита канала от спама и ботов. Если в комментариях тихо по другой причине — обсуждать нечего, — вторая половина задачи здесь: автоматизация контента канала.
Что обычно спрашивают
- Зачем модерация комментариев, если на входе уже стоит капча?
- Это разные задачи. На входе вы оцениваете аккаунт: возраст, историю, проходит ли он проверку. Под постом вы оцениваете сообщение, а за ним часто стоит настоящий подписчик, который три месяца ничего плохого не делал. Дверь тут не поможет — отправитель уже внутри.
- Какие фильтры комментариев включены по умолчанию?
- Два: инвайт-ссылки и обычные ссылки. Пересылки, упоминания, телефоны и ваш список стоп-слов выключены, пока вы их не включите. Первым делом настройте именно фильтр ссылок: на дефолтных настройках он удаляет любую ссылку у всех подряд, включая завсегдатая, который принёс источник, — пока вы не заполните список разрешённых доменов.
- За что в комментариях мьютят и банят?
- Каждое срабатывание фильтра добавляет одно нарушение в счётчик, который ведётся отдельно по человеку и чату. Три нарушения — мьют на час, шесть — бан в группе обсуждения; оба порога и длительность мьюта вы задаёте сами. Отдельно от этого один и тот же текст, отправленный три раза за пять минут, удаляется, а автор получает мьют на пять минут.
- ИИ видит всё?
- Нет. Он работает последним, только на сообщениях, которые прошли правила, и только по тексту — первым 500 символам комментария или подписи. Фото без подписи для него не существует, стикер тоже. Если проверка не отвечает или падает по таймауту, сообщение остаётся на месте.
- А живых людей он будет удалять?
- Иногда будет, и ради этого существует журнал. Стоп-слова ищутся как подстроки, фильтр телефонов просто считает цифры, а фильтр ссылок не отличает источник от рекламы. Каждое удаление, мьют и бан записываются вместе с правилом, которое сработало, — поэтому слишком строгая настройка видна как череда удалений, с которыми вы не согласны, а не как тихо умершие комментарии.