Закрытый канал на подписке
Миграция подписчиков из конструктора, бот-привратник с жизненным циклом, каталог постов канала в мини-аппе и дашборд — владелец управляет всем сам.
- Направление
- Подписочный продукт
- Клиент
- Клиентский проект
- Роль
- Продукт, миграция, разработка, инфраструктура
- Год
- 2026
- Срок
- август 2026 — сопровождение
- Стек
- TypeScript · Node.js · grammY · SQLite · Nginx · Telegram Bot API
Задача
Автор ведёт закрытый Telegram-канал по подписке. Учёт подписчиков жил в конструкторе рассылок: оплаты принимались вручную и вне системы, доступ выдавался руками, а сам контент канала существовал только внутри Telegram — найти старый пост или показать материал человеку без подписки было негде.
Задача — перенести учёт к себе и собрать продукт: подписка с жизненным циклом, каталог контента, управление без разработчика.
Решение
- Миграция без потери истории: база подписчиков переехала из конструктора с состояниями — кто активен, у кого истекает, кто сколько платил. Переезд сделан с промежуточным хранением и проверкой до переключения, откат предусмотрен.
- Бот-привратник: оплата (включая ручную — платёжный сервис клиенту недоступен, и это учтено как нормальный сценарий, а не обходной путь), выдача инвайта в канал, продления и напоминания, отвал при неоплате. Жизненный цикл подписки работает сам.
- Каталог канала в мини-аппе: посты закрытого канала собираются сборщиком в структурированный каталог с поиском и просмотрами — подписанный человек видит материалы как сайт, а не листает чат.
- Дашборд для владельца: рассылки по тегам, промо-кампании с учётом переходов, скидки, инвойсы, ручные оплаты — всё из браузера, без разработчика и без релиза. Отдельный саппорт-бот принимает вопросы.
- Регламенты вместо памяти: тесты сценариев гоняются на копиях базы (рассылки, жизненный цикл, безопасность), регламент перезагрузки сервера написан как чеклист с проверкой каждой службы.
Результат
Продукт работает: несколько сотен подписчиков, канал выдаётся и продлевается автоматически, контент живёт в каталоге, владелец делает рассылки и акции из дашборда. Цель проекта сформулирована заказчиком как требование: клиент управляет сам и дёргает разработчика как можно реже — под это спроектировано всё, от дашборда до регламентов.