Тип бота
Модерация, которая выдерживает приход трёхсот аккаунтов разом
Telegram-бот модерации применяет правила публикации, придерживает новые аккаунты, гасит флуд и наращивает санкции автоматически, записывая каждое решение. Он сохраняет большую группу пригодной для жизни, пока модераторы спят. Судить он не умеет, и слишком туго затянутые правила заглушат настоящих участников вместе со спамерами.
Боты модерации сообществ: цена, сроки и ограничения
- Фиксированная цена
- $5,400 USD
- Срок
- 21 календарный день с момента старта
- Требуемые права
- Администратор с правом ограничивать и банить
- Окно удаления
- 48 часов — дальше бот сообщение не уберёт
- Потолок на группу
- ~20 сообщений/мин в одну группу
- Прочность бана
- Забаненный возвращается с нового аккаунта сразу
As of 2025-10-01, Telegram Bot API 13.4
Какую задачу это решает
Сообщество на двести человек модерируют внимательные люди. На двадцати тысячах, размазанных по всем часовым поясам, людей структурно не хватает — и самые важные минуты приходятся ровно на то время, когда никто не бодрствует. Согласованный спам-заход в четыре утра по местному времени проживёт сорок минут, прежде чем его увидит модератор, а к этому моменту комната уже испорчена.
Коробочные боты модерации закрывают лёгкую половину: списки стоп-слов, блокировку ссылок, капчу на входе. Плохо они закрывают тот сценарий, который реально бьёт по крипто-сообществу, — это не одиночный спамер, а согласованный приход: десятки аккаунтов, заведённых на одной неделе, вступают с разницей в минуты и пишут почти одинаковые сообщения, разные ровно настолько, чтобы обойти фильтр по словам.
Чтобы это заметить, смотреть надо на группу, а не на отдельные сообщения: распределение аккаунтов по возрасту, кучность вступлений, схожесть сообщений между разными отправителями и скорость изменения всех трёх величин. И нужна лестница санкций, потому что правильная реакция на первое нарушение от двухлетнего аккаунта — не та же, что на сороковое сообщение от когорты, зарегистрированной во вторник. Разработку имеет смысл затевать тогда, когда сообщество достаточно велико, чтобы этот сценарий стал неизбежным, а не гипотетическим.
Как идёт разработка
Новых участников ограничивают, а не блокируют
Короткий период только на чтение, длина которого зависит от возраста аккаунта. Двухлетний аккаунт ждёт минуты; аккаунт, созданный сегодня утром, ждёт заметно дольше. Глухая блокировка теряет живых людей, а ограничение настоящему участнику почти ничего не стоит.
chat-member-updatesЛимиты частоты считаются и по пользователю, и по когорте
Один аккаунт, который пишет часто, — это увлечённый человек. Тридцать аккаунтов, вступивших в одни и те же десять минут и пишущих в унисон, — это набег, и различает их только второй сигнал.
chat-member-updatesСхожесть сообщений сравнивается между отправителями, а не внутри одного
Согласованный спам варьирует формулировки, чтобы обойти стоп-слова, но остаётся близким по смыслу. Сравнение шинглов по недавним сообщениям разных отправителей ловит то, чего список слов не поймает никогда.
webhookСанкции нарастают, а не прыгают сразу к бану
Предупреждение, мут, временный бан, постоянный бан — со сбросом лестницы по прошествии времени. Первое нарушение, закрытое вечным баном, — это ровно тот способ, которым сообщества теряют людей из-за неудачно настроенного регулярного выражения.
chat-member-updatesМодератор отменяет любое действие в одно нажатие
Каждое автоматическое действие уходит в модераторский топик с кнопкой отмены. Автоматика, которую человек не может тут же поправить, — это автоматика, которую сообщество возненавидит за неделю.
forum-topicsКаждое решение записывается вместе с причиной
Кто, что, по какому правилу и на каком основании. Споры о модерации в большом сообществе неизбежны, и журнал закрывает их за секунды, вместо того чтобы превращать в препирательство о том, что вообще произошло.
webhook
Что Telegram разрешает, а что нет
Чтобы модерировать группу, бот должен быть администратором с правами ограничивать и банить.
Потеря этих прав молча отключает модерацию. Бот проверяет собственные права по расписанию и предупреждает при их изменении, потому что узнать об этом во время набега — уже поздно.
Telegram не отдаёт дату создания аккаунта — только числовой идентификатор пользователя, который растёт.
Возраст аккаунта выводится из идентификатора: порядок надёжен, дата приблизительна. Правила пишутся про относительную свежесть, а не про точный возраст, которого API не даёт.
Бот отправляет примерно 20 сообщений в минуту в одну группу.
Во время набега бот не может объявлять в группе о каждом действии — он упрётся в собственный лимит. Действия выполняются молча, а отчёт уходит в отдельный модераторский топик, что и по существу правильнее.
Удалить сообщение можно в течение 48 часов; после этого бот его уже не уберёт.
У ретроспективной уборки жёсткое окно. Всё, что старше, остаётся в истории, и это довод в пользу того, чтобы ловить проблему почти в реальном времени, а не полагаться на периодическую зачистку.
Забаненный пользователь может тут же вернуться с нового аккаунта.
Бан отпугивает, а не запрещает. Стоимость возвращения поднимает именно период ограничения для новых аккаунтов — поэтому оба механизма проектируются вместе.
Когда это не нужно строить
- В группе меньше примерно тысячи человек. Живые модераторы тут быстрее, точнее и снисходительнее, а автоматика на таком размере в основном раздражает.
- Вы хотите, чтобы бот следил за субъективным качеством. Он видит закономерности, а не смысл, и правила, написанные против постов ни о чём, отловят энтузиазм.
- У вас вообще нет модераторов. Автоматические действия, которые некому отменить, превращают каждое ложное срабатывание в безвозвратную потерю.
- Сообщество уже озлоблено, и вы надеетесь починить это инструментом. Модерация закрепляет норму, но не создаёт её.
На чём это работает
| Компонент | Версия | Зачем |
|---|---|---|
| grammY | 1.45 | Фреймворк бота, обработчики событий chat-member и сообщений. |
| Cloudflare Workers | current | Среда исполнения, рассчитанная на всплеск нагрузки во время набега. |
| Cloudflare D1 | current | Состояние участников, лестница санкций, учёт когорт и журнал решений. |
| Cloudflare Durable Objects | current | Лимиты частоты на группу со счётчиками, которые не расходятся. |
| TypeScript | 5.9 | Строгий режим. Лестница санкций — конечный автомат, и типизирована как автомат. |
О чём спрашивают перед стартом
Чем это отличается от бесплатных ботов модерации?
Бесплатные боты хорошо закрывают фильтрацию по словам и капчу на входе. Чего они, как правило, не делают — не смотрят поперёк отправителей: кучность по возрасту аккаунтов, время вступления и схожесть сообщений между разными людьми. Именно это и порождает согласованный набег.
Забанит ли он живых участников по ошибке?
Изредка — поэтому лестница начинается с предупреждения, а любое действие отменяется из модераторского топика в одно нажатие. Любая система, затянутая достаточно туго, чтобы останавливать набеги, будет давать ложные срабатывания; проектный вопрос в том, как быстро их можно откатить.
Может ли он помешать забаненному просто завести новый аккаунт?
Нет, и этого не может никто. Стоимость возврата поднимает период ограничения для новых аккаунтов: свежий аккаунт не сможет писать сразу. Баны и ограничения работают в паре, по отдельности каждый слаб.
Нужны ли боту права администратора группы?
Да, с правом ограничивать и банить. Он проверяет собственные разрешения по расписанию и сообщает, если их сняли, потому что модерирующий бот, тихо потерявший права, выглядит точно так же, как бот, которому нечего делать.
Что именно происходит во время набега?
Срабатывают когортные лимиты частоты, новоприбывшие получают ограничение, похожие сообщения от разных отправителей удаляются, а в модераторский топик уходит одна сводка вместо объявления на каждое действие — иначе бот упёрся бы в лимит сообщений на группу.
Видит ли модератор, почему было принято то или иное действие?
Да: правило, основание и отметка времени. Споры о модерации на масштабе гарантированы, и журнал превращает их в поиск по записи, а не в спор о том, кто что помнит.