← Все записи
ИИ / Telegram / MAX / Разработка

Бот-саммаризатор: мониторинг групповых чатов Telegram и MAX

Как я собрал самостоятельно развёртываемый сервис, который анализирует сообщения, готовит сводки и обнаруживает инциденты.

Содержание
  1. Что решает бот
  2. Как устроено решение
  3. Почему я сделал проект переносимым
  4. Как запустить
  5. Результат

В групповых чатах обсуждения быстро превращаются в поток, за которым сложно следить: важное сообщение теряется среди коротких ответов, повторяющиеся проблемы выглядят как отдельные случаи, а чтобы восстановить контекст, приходится перечитывать десятки веток.

Я сделал Summary Bot — сервис для мониторинга групповых чатов Telegram и MAX. Он собирает доступные сообщения, анализирует их с помощью языковой модели, формирует дневные и ночные сводки и помогает замечать потенциальные инциденты.

Что решает бот

Задача не сводится к кнопке «сократить переписку». Мне нужен был инструмент с несколькими сценариями:

  • Сводки по расписанию. Получать обобщённую картину обсуждений без ручного чтения каждого сообщения.
  • Саммари по запросу. Восстанавливать содержание диалогов, когда информация нужна сейчас.
  • Алерты. Выделять возможные жалобы, конфликты и другие события, требующие внимания.
  • Разделение доступа. Работать с подразделениями, руководителями, администраторами и подписками на уведомления.

При этом модель не принимает управленческие решения. Её выводы — подсказка для человека, а не доказательство того, что инцидент действительно произошёл.

Как устроено решение

У сервиса есть русскоязычный веб-интерфейс для конфигурации и просмотра результатов. Бэкенд принимает сообщения через интеграции с мессенджерами, сохраняет данные и запускает обработку. Для анализа используется внешний AI API.

Стек проекта: Node.js 24, React, Fastify, SQLite в режиме WAL и локальное файловое хранилище. База данных и файлы остаются на сервере владельца. При этом содержимое чатов, направляемое на анализ, передаётся выбранному AI-провайдеру — это важно учитывать при работе с конфиденциальными обсуждениями.

Ботов можно подключить к Telegram и MAX в режиме polling или webhook. Для обычного сервера polling удобен тем, что не требует публичного адреса для приёма событий.

Отдельно реализована настройка подразделений, ролей, получателей уведомлений, расписаний, часового пояса и AI-модели. Приложение не должно требовать заранее заданной организационной структуры.

Почему я сделал проект переносимым

Проект готовился не под один конкретный сервер. Поэтому конфигурация вынесена в переменные окружения: токены ботов, первый администратор, адрес приложения и параметры AI-провайдера задаются при развёртывании.

Для запуска используется Docker Compose. Данные хранятся в отдельном volume, а интерфейс можно разместить за собственным HTTPS reverse proxy.

У решения есть и осознанное ограничение: текущая схема с SQLite, планировщиком и polling предполагает один экземпляр приложения, а не произвольное горизонтальное масштабирование.

Также я убрал из публичной конфигурации привязки к конкретной инфраструктуре и реальные организационные данные. Это позволяет использовать репозиторий как основу для собственного развёртывания.

Как запустить

Публичный репозиторий содержит пример настроек и инструкцию по запуску:

git clone https://github.com/roblencheg/summary_bot.git
cd summary_bot
cp .env.example .env
chmod 600 .env
# Заполнить .env своими настройками
docker compose up -d --build

Для работы AI-анализа потребуется API, совместимый с Responses API и strict JSON Schema. Без AI-ключа интерфейс доступен, но анализ и генерация сводок не работают.

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

Результат

Получился самостоятельный веб-сервис, в котором сбор сообщений, AI-анализ, расписания, уведомления и администрирование объединены в одном приложении.

Для меня ценность этого проекта не в том, чтобы сделать переписку короче. Гораздо важнее своевременно обнаружить существенное, сохранить контекст и избавить человека от необходимости постоянно просматривать весь поток сообщений.

Код и инструкция по развёртыванию: roblencheg/summary_bot.

← Все записи