Привет, Хабр!
Решил наконец-то рассказать о проекте, который уже полгода живёт в тени моего личного репозитория. Речь пойдёт о боте для борьбы со спамом в Telegram‑чатах. Это не просто «очередной антиспам бот», а решение, которое я писал с нуля, включая архитектуру нейросети для классификации текстов.
Забегая вперёд: бот бесплатный и открытый к тестированию. И он работает. Но обо всём по порядку.
Зачем мне все это?
Всё началось в чате автовладельцев, где я сам состою. Там участился спам. Встал вопрос о добавлении антиспам бота в чат. Но родилось альтернативное предложение: написать бота самому, тем более, в тот момент я закончил писать первую версию своей библиотеки по обучению нейросетей. На ней решил и обкатать решение.
Архитектура
Я не стал брать готовые модели с HF. Решил собирать датасет и написать структуру нейросети сам, взяв за основу LSTM. Сети этой группы хорошо учитывают контекст, а прикрутив механику внимания получается уже трансформер на минималках. Для задачи бинарной классификации сообщений из чата думаю это отличный вариант, с учётом что мощности для обучения ограничены.
Набор данных (датасет)
Это, пожалуй, самая трудоемкая часть. Готовых актуальных датасетов под русскоязычный телеграм‑спам я не нашёл. Пришлось парсить публичные чаты, чаты со спамом (это захламленные чаты по типу обмена валют, барахолок и прочие малоприятные группы), вручную размечать тысячи сообщений, постоянно дообучать модель на новых поступающих данных.
Лайфхак, который сэкономил время: я добавил в интерфейс бота кнопку «✅ Это не спам». Когда модератор нажимает её, сообщение автоматически попадает в датасет с пометкой «ложное срабатывание». Так модель набирает знания для дообучения. Сейчас датасет состоит из более чем 25 000 сообщений.
Как бот работает в чате.
Помимо работы под капотом бота нейронки есть ещё пару интересных алгоритмов на которых он работает. Всех карт раскрывать не буду, скажу лишь, что эти алгоритмы помогают избежать ложных банов пользователей, а также проверить пользователей на наличие в базе спамеров.
Бот поддерживает два режима:
-
Стандартный (по умолчанию): сообщение проходит через нейросеть — если классифицируется как «спам» и пользователь в базе спамеров, то бот автоматически удаляет сообщение и банит пользователя. Если пользователь не в базе спамеров, то бот помечает сообщение и зовёт модераторов на принятие решения. Модератор решает: банить или отпустить. Решение сохраняется для дообучения.
-
Автоматический: сообщения удаляются сразу при обнаружении спама. Бан пользователя происходит только если он уже в спамбазе + сообщение распознано как спам.
Команды для пользователей:
/spam — пожаловаться на сообщение
/handbot / /autobot — смена режима (только для админов чатов)
Немного статистики.
Бот работает с 25 мая 2025 года. Ниже представлена свежая статистика на момент написания статьи.
С какими проблемами столкнулся
-
Ручная разметка. Это медленно, трудозатратно. В планах как то автоматизировать этот момент.
-
Постоянная смена стратегии атаки. Спамеры пишут «нyжны» с латинской y, «вαс» с греческой α, вставляют пробелы между буквами. Также меняется подача сообщений, смена контекста и смысла сообщения.
В планах сделать публичных дашборд со статистикой в реальном времени.
Как попробовать
Если хотите протестировать бота в своём чате:
-
Найдите @tantispam_bot в Telegram
-
Добавьте его в группу и дайте права администратора на удаление сообщений и на бан.
-
Готово! Бот начнёт работать в стандартном режиме
Официальный канал с обновлениями: t.me/tantispam
Бот полностью бесплатный. Это пет‑проект, и для меня важна обратная связь от вас)
Вместо заключения
Я не позиционирую это решение как «убийцу всего спама». Есть более совершенные инструменты. Для меня это рабочий инструмент, который я допиливаю в свободное время.
Если тема интересна задавайте вопросы в комментариях.
чсс
ссылка на оригинал статьи https://habr.com/ru/articles/1029034/