/home / /projects / ivan-bot-max
PRODUCTION #006

ivan-bot-max

Max-бот «Иван»: заявки клиентов, веб-панель, рассылки

Диалоговый сценарий в мессенджере Max собирает заявку по шагам (с отложенной фиксацией, чтобы пользователь успел дописать). Параллельно — Express-панель: заказы, подписчики, массовые рассылки с вложениями, настройки и несколько ботов из одной SQLite-базы. Уведомления на почту по новым заявкам и локальный HTTP-мост между веб-процессом и воркерами ботов.

Страница портфолио: здесь только описание выполненного проекта для заказчиков и коллег. Мы не предлагаем установку программ и не запрашиваем пароли, платежи или данные карт.

max-bot express-panel sqlite broadcast
💬
Max диалог и клавиатуры
📋
Orders заявки в SQLite
📣
Broadcast очередь и статистика
🧩
Multi несколько ботов
📖 README.md

# Контекст

«Нужен бот в Max, который не просто отвечает шаблонами, а ведёт клиента до заявки: части заказа, контакты, подтверждение. Чтобы заявки падали в одну базу, их можно было разбирать в панели, а подписчикам — иногда слать новости и файлы без ручного копипаста в чаты.»

# Задача

  • Собрать сценарий приёма заявки в Max с состояниями и задержкой перед финальной отправкой
  • Сохранять подписчиков, заказы и статусы в SQLite с индексами и эволюцией схемы по мере роста
  • Сделать веб-панель: вход, заказы, рассылки, вложения, учёт доставки по каждому user_id
  • Дать возможность завести несколько ботов (ключ API Max, порт уведомлений, ссылка на чат) без клонирования репозитория
  • Отправлять письмо при новой заявке и не упираться в лимиты API — очередь на отправку сообщений в Max
  • Учесть особенности апдейтов Max (в том числе когда user в payload приходит неполным)

# Архитектура

┌─────────────────────────────────────────────────────────────┐
│                      MAX MESSENGER                           │
│   clients ---- dialogs ---- keyboards / attachments          │
└────────────────────────────┬────────────────────────────────┘
                             │ @maxhub/max-bot-api + send queue
┌────────────────────────────▼────────────────────────────────┐
│  BOT WORKER (bot.js)              NOTIFY HTTP (per bot)      │
│  state machine | orders | subscribers | broadcast runner     │
└────────────────────────────┬────────────────────────────────┘
                             │ better-sqlite3
┌────────────────────────────▼────────────────────────────────┐
│                     SQLITE (WAL)                             │
│  bots | orders | subscribers | broadcasts | broadcast_files   │
│  web_users | settings | ...                                  │
└────────────────────────────┬────────────────────────────────┘
                             │
┌────────────────────────────▼────────────────────────────────┐
│  WEB APP (server.js) + static public/                        │
│  REST + cookies | uploads | trigger notify to bot workers    │
└─────────────────────────────────────────────────────────────┘
                  │ SMTP (Nodemailer)
                  ▼
            order notifications

# Модули системы

🤖
Диалоговый бот

Сбор заявки по шагам, таймер отложенной отправки, клавиатуры Max, вложения к заказу

🖥
Веб-панель

Список заявок и подписчиков, смена статусов, админы рассылок, настройки в том числе per-bot

📡
Рассылки

Очередь, счётчики sent/failed, файлы с безопасной отдачей по id, пинг воркера по HTTP

🔀
Мультибот

Таблица bots и супервизор процессов: один инстанс поднимает bot.js на каждого активного бота

Почта

Транзакционные письма по новым заявкам через настраиваемый SMTP

Эксплуатация

Абсолютные пути к .env и статике под PM2, отдельные порты notify, ключ для служебных запросов между процессами

# Технологии

Node.js ESM @maxhub/max-bot-api Express 5 better-sqlite3 Nodemailer Multer cookie-parser PM2 + Nginx

# Результат

📌

Заявки из Max оказываются в одной базе рядом с подписчиками и историей рассылок

Сценарий с отложенной отправкой снижает число обрезанных и случайных заявок

🧱

Мультибот и отдельные notify-порты дают масштабирование без дубля кода

🛡

Веб-слой и воркеры разведены процессами; к панели доступ по сессии в cookie

start-project.sh
# Нужен бот в Max, панель или рассылки под ваш процесс?
$ describe --task "max-bot, заявки, sqlite, панель, рассылки"
→ Разберём сценарии, интеграции и вариант деплоя