- BrainTools - https://www.braintools.ru -
Решил наконец-то рассказать о проекте, который уже полгода живёт в тени моего личного репозитория. Речь пойдёт о боте для борьбы со спамом в Telegram‑чатах. Это не просто «очередной антиспам бот», а решение, которое я писал с нуля, включая архитектуру нейросети для классификации текстов.
Забегая вперёд: бот бесплатный и открытый к тестированию. И он работает. Но обо всём по порядку.
Всё началось в чате автовладельцев, где я сам состою. Там участился спам. Встал вопрос о добавлении антиспам бота в чат. Но родилось альтернативное предложение: написать бота самому, тем более, в тот момент я закончил писать первую версию своей библиотеки по обучению [1] нейросетей. На ней решил и обкатать решение.
Я не стал брать готовые модели с HF. Решил собирать датасет и написать структуру нейросети сам, взяв за основу LSTM. Сети этой группы хорошо учитывают контекст, а прикрутив механику внимания [2] получается уже трансформер на минималках. Для задачи бинарной классификации сообщений из чата думаю это отличный вариант, с учётом что мощности для обучения ограничены.
Это, пожалуй, самая трудоемкая часть. Готовых актуальных датасетов под русскоязычный телеграм‑спам я не нашёл. Пришлось парсить публичные чаты, чаты со спамом (это захламленные чаты по типу обмена валют, барахолок и прочие малоприятные группы), вручную размечать тысячи сообщений, постоянно дообучать модель на новых поступающих данных.
Лайфхак, который сэкономил время: я добавил в интерфейс бота кнопку «✅ Это не спам». Когда модератор нажимает её, сообщение автоматически попадает в датасет с пометкой «ложное срабатывание». Так модель набирает знания для дообучения. Сейчас датасет состоит из более чем 25 000 сообщений.
Как бот работает в чате.
Помимо работы под капотом бота нейронки есть ещё пару интересных алгоритмов на которых он работает. Всех карт раскрывать не буду, скажу лишь, что эти алгоритмы помогают избежать ложных банов пользователей, а также проверить пользователей на наличие в базе спамеров.
Бот поддерживает два режима:
Стандартный (по умолчанию): сообщение проходит через нейросеть — если классифицируется как «спам» и пользователь в базе спамеров, то бот автоматически удаляет сообщение и банит пользователя. Если пользователь не в базе спамеров, то бот помечает сообщение и зовёт модераторов на принятие решения. Модератор решает: банить или отпустить. Решение сохраняется для дообучения.
Автоматический: сообщения удаляются сразу при обнаружении спама. Бан пользователя происходит только если он уже в спамбазе + сообщение распознано как спам.
Команды для пользователей:
/spam — пожаловаться на сообщение
/handbot / /autobot — смена режима (только для админов чатов)
Бот работает с 25 мая 2025 года. Ниже представлена свежая статистика на момент написания статьи.
Ручная разметка. Это медленно, трудозатратно. В планах как то автоматизировать этот момент.
Постоянная смена стратегии атаки. Спамеры пишут «нyжны» с латинской y, «вαс» с греческой α, вставляют пробелы между буквами. Также меняется подача сообщений, смена контекста и смысла сообщения.
В планах сделать публичных дашборд со статистикой в реальном времени.
Если хотите протестировать бота в своём чате:
Найдите @tantispam_bot [3] в Telegram
Добавьте его в группу и дайте права администратора на удаление сообщений и на бан.
Готово! Бот начнёт работать в стандартном режиме
Официальный канал с обновлениями: t.me/tantispam [4]
Бот полностью бесплатный. Это пет‑проект, и для меня важна обратная связь от вас)
Я не позиционирую это решение как «убийцу всего спама». Есть более совершенные инструменты. Для меня это рабочий инструмент, который я допиливаю в свободное время.
Если тема интересна задавайте вопросы в комментариях.
чсс
Автор: Lancet52
Источник [5]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/29513
URLs in this post:
[1] обучению: http://www.braintools.ru/article/5125
[2] внимания: http://www.braintools.ru/article/7595
[3] @tantispam_bot: https://t.me/tantispam_bot
[4] t.me/tantispam: https://t.me/tantispam
[5] Источник: https://habr.com/ru/articles/1029034/?utm_campaign=1029034&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.