Спам в Telegram-группах — постоянная головная боль: «заработок без вложений», казино, приглашения в чужие каналы, боты-накрутчики. Спамеры обходят простые фильтры, подменяя буквы: «з@работок», «kазино» с латинской k.
За основу взял открытый бот-модератор Origin Protocol (115 звёзд на GitHub), заброшенный в 2022 году. Он был написан на библиотеке для Telegram образца 2018 года, а его модуль перевода давно перестал работать. Задача — вернуть проект к жизни и сделать из него модератора, которого можно поставить в любую группу и настроить без программиста.
Переписал бота на Python и aiogram 3, хранение — на SQLite, а правила вынес в один понятный файл: что банить, что удалять, какие вложения разрешены, сколько длится капча и мут.
Исправил ошибки оригинала: в отчётах вместо текста печатались байты; спамер с запрещённым именем банился, только когда что-то напишет, — теперь сразу при входе; подписи к фото не проверялись вовсе; после удаления пересланного сообщения проверки не останавливались.
Добавил то, что в оригинале было только в планах или отсутствовало: нормализацию текста против подмены букв (латиница ↔ кириллица, @ вместо а, невидимые символы), капчу «Я человек» для новичков (нажать может только сам вошедший), запрет ссылок для новичков в первые сутки, антифлуд с мутом, отчёт о каждом действии в закрытый чат админов и сводку /modstats. Убрал то, что не относится к модерации: перевод, анализ тональности, курс криптотокена компании и запись всей переписки группы — теперь журналируются только действия модератора.
26 автотестов, включая сквозные — через настоящий диспетчер aiogram с подменённой сетью Telegram.
Модератор, который сам удаляет спам и банит спамеров — в том числе тех, кто прячет слова за похожими буквами, — останавливает флуд и отсекает ботов капчей, а админы видят отчёт о каждом действии. Правила меняются в одном файле, запуск — одной командой или в Docker.
Проект — открытый форк с сохранением лицензии и указанием авторов оригинала; в README подробно расписано, что изменено и почему.