гора.
AI / автоматизация коммуникации

Telegram auto-reply: AI отвечает за тебя 24/7

Worker слушает ваши DM, AI отвечает по правилам, Admin Bot управляет, AI-модератор сам сканирует канал и режет спам. Пять сервисов в одном Postgres.

Регион
VPS3 (Польша) · personal use
Роль
Solo: архитектура, 5 сервисов, AI-модерация
Период
2024–2026
Ниша
AI / автоматизация коммуникации

Это персональный инструмент. Имена контактов и тексты диалогов не публикуются. Архитектура и стек описаны без раскрытия конкретных пользователей.

Сводка. Дальше — почему пять сервисов вместо одного, как работает AI-модератор и где спрятана сложность.

Зачем пять сервисов. Один монолит проще, но плох на отказе. Worker умирает — Collector продолжает собирать историю, Admin Bot живой, можно посмотреть состояние через Telegram. Moderator умер — автоответчик работает. Core API падает — все остальные не страдают. Каждый сервис — свой systemd-unit, свой лог, свой restart-policy.

Worker — мозг автоответа. Telethon-сессия от лица пользователя (не бот) слушает все входящие DM. На каждое сообщение запускается каскад проверок: автоответ глобально включён? контакт в папке Personal или у него есть правило? режим ответа не off? дневной лимит не исчерпан? с прошлого ответа прошёл интервал? Если все галочки — генерируется ответ через AI (Claude → Grok → Local fallback), отправляется через ту же Telethon-сессию. Если AI упал — отправляется template как fallback.

Admin Bot — пульт. Aiogram-бот, через который владелец рулит всем: включает/выключает автоответ, добавляет/удаляет правила для контактов, смотрит историю переписок, меняет промпт, лимиты, режим. Из админ-бота можно рестартануть worker (systemctl restart worker) — без SSH.

Moderator — самообучающийся модератор канала. Это самая интересная часть. Команда /scan — бот через Telethon читает 500 последних постов канала. AI (Claude) анализирует и генерирует саммари: о чём канал, какой тон, что уместно, что нет. Саммари сохраняется в базу. Когда в discussion-группе появляется новое сообщение, AI смотрит на саммари + сообщение → выдаёт класс: OK / SPAM / HATE / OFFTOPIC. SPAM / HATE / OFFTOPIC автоматически удаляются. OK остаётся.

Без /scan модератор работает на дефолтном «общая модерация», но после /scan он адаптируется к конкретному каналу: на канале про fishing разговор о tax-стратегиях — это OFFTOPIC, а на канале про инвестиции — OK.

Антифлуд. Трекинг в памяти, не в БД (быстрее). Каждый user_id → список timestamp последних сообщений. Если в окне N секунд больше M сообщений — мут на K минут. Лимиты настраиваются через Admin Bot.

База. PostgreSQL 14, database ai_tg_core, user aiuser. Семь таблиц: peers (контакты с флагом in_personal), messages (история), auto_reply_rules (правила по контактам), auto_reply_state (состояние ответа), settings, reply_counts, chat_triggers (триггеры для модератора по чатам).

Открытый исходник. Репозиторий https://github.com/georgegoldman48-svg/tg-auto-reply — публичный, можно посмотреть полную архитектуру в README.md.

Что внутри

  • Пять сервисов в одной кодовой базе: Worker (v2.13), Admin Bot (v3.5), Collector (v1.0), Core API (v1.0), Moderator (v1.0). Каждый — отдельный systemd-unit.
  • Worker слушает все входящие DM через Telethon-сессию пользователя. AI отвечает по правилам: контакт в папке Personal или есть индивидуальное правило → отвечать; иначе игнор.
  • Многоуровневые проверки перед ответом: глобальный switch, контакт-уровень, reply_mode, дневной лимит, лимит для новых контактов, интервал с прошлого ответа.
  • AI-модератор каналов с самообучением: `/scan` читает 500 последних постов канала через Telethon, AI генерирует саммари (тематика, стиль, что уместно), при новом сообщении в discussion group классифицирует на OK / SPAM / HATE / OFFTOPIC и автоматически удаляет.
  • Три режима модератора: moderate_only (только удаление), chat (AI отвечает от имени владельца как persona), both (модерация + общение).
  • Антифлуд в памяти: трекинг user_id → timestamps, настраиваемые лимиты, авто-мут при превышении.
  • PostgreSQL backend (database `ai_tg_core`): peers, messages, auto_reply_rules, auto_reply_state, settings, reply_counts, chat_triggers.
  • Multi-AI fallback: при ошибке Claude бот пробует Grok, потом локальную модель. Не теряет ответ ни на одном провайдере.
  • Core API (FastAPI на порту 8000) — для внешних интеграций: можно дёргать состояние из webhooks или панели админа.
  • Settings API на 8085 — отдельный endpoint для горячей перенастройки worker без рестарта.

Стек

  • Telethon (user-session listener)
  • aiogram 3 (admin bot)
  • FastAPI (core REST API)
  • PostgreSQL 14
  • Anthropic Claude SDK
  • xAI Grok API
  • Local AI fallback
  • systemd × 5 unit
  • Python 3.12 + venv
Три рассказа

Один проект — три точки зрения

    Telegram auto-reply: AI отвечает за тебя 24/7 · hiregora.com