Комплексное решение для борьбы со спамом: сбор и анализ данных, обучение моделей, Telegram-бот и веб-панель для мониторинга. https://sas.overklassniy.space
  • Python 83.1%
  • SCSS 6.8%
  • TypeScript 4.9%
  • HTML 4.4%
  • Dockerfile 0.7%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
deadrelaxxx e0ab554ce2
All checks were successful
CI / test (push) Successful in 36s
CI / repo-stats (push) Successful in 4s
CI / wiki (push) Successful in 3s
CI / build-and-push (push) Successful in 1m16s
Исправления ошибок из GlitchTip
- Истёкшие callback-запросы и сетевые сбои Telegram больше не падают в обработчиках
- «message to delete not found» и сетевые ошибки авто-действий логируются как warning
- HTTP-исключения панели ниже 500 логируются как warning
- pg_dump обновлён до 18-й версии из PGDG для бэкапов PostgreSQL 18
2026-10-14 14:01:30 +03:00
.docs Баджи статусов и ссылки на выпуски моделей 2026-10-07 05:25:40 +03:00
.forgejo CI workflow для Forgejo: тесты, сборка образа, scc, синхронизация вики 2026-10-07 00:51:56 +03:00
assets Hero-изображение для README 2026-10-04 19:36:26 +03:00
bot Исправления ошибок из GlitchTip 2026-10-14 14:01:30 +03:00
core Финальная чистка конфигурации перед сдачей 2026-10-06 14:01:32 +03:00
migrations Схема БД в репозитории и ERD-просмотрщик на /erd 2026-10-07 00:52:01 +03:00
panel Исправления ошибок из GlitchTip 2026-10-14 14:01:30 +03:00
tests Исправления ошибок из GlitchTip 2026-10-14 14:01:30 +03:00
.dockerignore Продовые зависимости без torch 2026-09-25 19:45:41 +03:00
.env.example Финальная чистка конфигурации перед сдачей 2026-10-06 14:01:32 +03:00
.gitignore Схема БД в репозитории и ERD-просмотрщик на /erd 2026-10-07 00:52:01 +03:00
create_schema.py Схема БД в репозитории и ERD-просмотрщик на /erd 2026-10-07 00:52:01 +03:00
docker-compose.yml Финальная чистка конфигурации перед сдачей 2026-10-06 14:01:32 +03:00
Dockerfile Исправления ошибок из GlitchTip 2026-10-14 14:01:30 +03:00
package-lock.json Сборка фронтенда: npm, PostCSS, Tailwind 2026-09-16 19:54:46 +03:00
package.json Релизная сборка v3.0.1 2026-10-06 15:36:58 +03:00
postcss.config.js Сборка фронтенда: npm, PostCSS, Tailwind 2026-09-16 19:54:46 +03:00
pytest.ini Дописаны тесты, тесты ядра и панели, убраны отчёты покрытия 2026-09-27 22:11:51 +03:00
README.md Баджи статусов и ссылки на выпуски моделей 2026-10-07 05:25:40 +03:00
requirements-prod.txt Продовые зависимости без torch 2026-09-25 19:45:41 +03:00
requirements-test.txt CI workflow для Forgejo: тесты, сборка образа, scc, синхронизация вики 2026-10-07 00:51:56 +03:00
requirements.txt Финальная чистка конфигурации перед сдачей 2026-10-06 14:01:32 +03:00
run.py Интеграция Sentry для трекинга ошибок 2026-09-23 20:31:34 +03:00

СТАНКИН Анти-Спам

СТАНКИН Анти-Спам — система автоматической модерации Telegram-групп через ruBERT и дополнительные метрики

Python 3.14+ aiogram 3.x FastAPI PostgreSQL 14+ ONNX Runtime TypeScript

Статус CI Последний выпуск моделей Docker-образ

О проекте

Система модерации Telegram-групп, которая автоматически обнаруживает и блокирует спам-сообщения. Проект разработан для университетских чатов, но применим в любых Telegram-сообществах.

Система анализирует каждое сообщение через BERT-классификатор, проверяет отправителя по внешним базам данных спамеров (CAS, LOLS) и при необходимости дополняет анализ через ChatGPT. Результаты модерации доступны через веб-панель с управлением настройками, просмотром журнала спама и списка ограниченных пользователей.

Возможности

  • ML-детекция спама — BERT-классификатор (ruBERT-tiny2) с настраиваемыми порогами уверенности.
  • Внешние проверки — интеграция с CAS (Combot Anti-Spam) и LOLS (List of Lame Spammers).
  • ChatGPT-анализ — опциональная дополнительная проверка через OpenAI API для серой зоны.
  • Веб-панель управления — FastAPI-приложение с авторизацией, управлением настройками и журналами.
  • Per-chat настройки — индивидуальные пороги и проверки для каждого чата.
  • Автообнаружение чатов — автоматический поиск групп, где бот является администратором.
  • Уведомления — отправка алертов о спаме в чат управления с inline-кнопками.
  • Резервное копирование — автоматические бэкапы БД через pg_dump с отправкой в Telegram.
  • Мониторинг ошибок — интеграция с Sentry для трекинга исключений и логирования.
  • Контейнеризация — Docker-образ с многостадийной сборкой, готовый к deploy через docker-compose.

Технологии

  • Backend — Python 3.14+, aiogram 3.x, FastAPI, uvicorn.
  • База данных — PostgreSQL, asyncpg.
  • ML — transformers, ONNX Runtime, tokenizers.
  • Фронтенд — TypeScript, SCSS, Tailwind CSS.
  • Инфраструктура — Docker, Sentry.
  • Внешние API — Telegram Bot API, CAS, LOLS, OpenAI.

Архитектура

graph TB
    subgraph Telegram
        TG[Telegram Bot API]
        CHATS[Группы]
    end

    subgraph Application
        BOT[Бот<br/>aiogram]
        PANEL[Веб-панель<br/>FastAPI]
        RUN[run.py<br/>единый запуск]
    end

    subgraph Services
        MOD[ModerationService]
        SPAM[SpamDetection<br/>BERT + ONNX]
        EXT[External APIs<br/>CAS, LOLS]
        BACKUP[BackupService]
    end

    subgraph Storage
        DB[(PostgreSQL)]
        MODELS[ML-модели<br/>models/]
    end

    subgraph Browser
        UI[Веб-панель<br/>TS + SCSS + Tailwind]
    end

    TG --> BOT
    CHATS --> BOT
    BOT --> MOD
    MOD --> SPAM
    MOD --> EXT
    MOD --> DB
    SPAM --> MODELS
    BOT --> BACKUP
    BACKUP --> DB
    RUN --> BOT
    RUN --> PANEL
    PANEL --> DB
    UI --> PANEL

Система запускается через единый entry point (run.py), который поднимает бота и веб-панель в одном event loop. Бот и панель разделяют общий пул соединений PostgreSQL. Подробное описание архитектуры — в .docs/architecture.md.

Быстрый старт

Требования

  • Docker и Docker Compose
  • Telegram-бот (токен от @BotFather)
  • PostgreSQL 14+

Установка

  1. Склонируйте репозиторий:
git clone https://scm.overklassniy.space/nyashki/STANKIN_AntiSpam.git
cd STANKIN_AntiSpam
  1. Создайте файл .env на основе .env.example и заполните обязательные переменные:
cp .env.example .env
# Отредактируйте .env: BOT_TOKEN, DATABASE_URL, SECRET_KEY, NOTIFICATION_CHAT_ID
  1. Запустите через Docker Compose:
docker compose up -d

Веб-панель будет доступна по адресу http://localhost:12523.

Для получения пароля доступа к панели отправьте команду /get_password боту в личные сообщения.

Подробные инструкции по установке — в .docs/installation.md.

Структура проекта

STANKIN_AntiSpam/
  bot/                 Telegram-бот: обработчики, сервисы модерации
  core/                Ядро: конфигурация, БД, репозитории, логирование
  panel/               Веб-панель: FastAPI, REST API, фронтенд
  migrations/          Миграции схемы базы данных
  tests/               Автоматические тесты
  assets/              Медиа-ассеты для документации
  .docs/               Детальная документация
  Dockerfile           Многостадийная сборка Docker-образа
  docker-compose.yml   Конфигурация для deploy
  run.py               Единый entry point
  requirements.txt     Python-зависимости
  package.json         Node.js зависимости для сборки фронтенда

Описание каждого модуля — в README соответствующей директории:

Документация

Ветка research

Ветка research содержит исследовательскую часть проекта:

  • разведывательный анализ данных (EDA) собранного датасета сообщений;
  • эксперименты с моделями классификации (BERT, sklearn-пайплайны, ансамбли);
  • подбор гиперпараметров через Optuna с кросс-валидацией;
  • сравнение метрик (F1, precision, recall) и выбор лучшей модели;
  • Jupyter-ноутбуки с воспроизводимыми экспериментами;
  • скрипты обучения и сохранения моделей в директорию models/.

Результаты исследований переносятся в основную ветку master в виде обученных моделей и настроек порогов классификации.