Панель
Закриті клуби
Окремий клубний бот, приватні канали/групи, тарифи, оплата в DM, заявки на вступ.
Два Telegram-боти в проєкті
Для закритих клубів потрібен окремий клубний бот — не той самий токен, що в Налаштування → Канали → Telegram (бот для діалогів і flows у DM).
Клубний бот: підписка/оплата в особистих повідомленнях, видача інвайтів, обробка заявок на вступ, синхронізація прав у каналах і групах. Один клубний бот на весь проєкт — і канали, і групи.
Без підключеного клубного бота додати канал у розділі «Закриті клуби» неможливо (fallback на основний бот вимкнено).
Підключення клубного бота
- У Telegram: @BotFather → /newbot → скопіюйте токен **другого** бота
- Панель → **Закриті клуби** (/closed-clubs) → картка «Бот клубу» → вставте токен → Підключити
- Оберіть стартовий flow для DM /start (за замовчуванням tpl_tg_closed_club)
- Після деплою webhook реєструється на …/webhook/telegram-club/{secret}/{projectId}
Канал або група
Додайте клубного бота адміністратором у приватний канал або групу з правами: запрошення користувачів, обмеження учасників. У каналі увімкніть Заявку на вступ (join request).
У панелі: вкладка Канали → Chat ID (-100…) → Підключити. Система перевірить права бота через Telegram API.
- join_handler_mode: авто-approve якщо оплачено / завжди decline
- grace_days — дні після закінчення доступу до відкликання
- invite_ttl_hours — термін дії одноразового інвайт-лінку
- renewal_flow_slug — flow після закінчення підписки
Тарифи
Вкладка Тарифи: ціна в ₴, термін доступу (дні), провайдер з підтримкою рекурентних платежів (LiqPay, Monobank тощо). Демо-тариф — без оплати на N днів.
Тариф прив'язується до основного каналу; додаткові канали/групи — через extra channels (одна підписка → кілька чатів).
Flow: два окремі блоки
Користувач пише клубному боту в DM → стартовий flow (оплата, демо). Після оплати блок Платний клуб видає одноразове посилання createChatInviteLink.
Для маркетингу (бонус за підписку на публічний канал) використовуйте блок Перевірка підписки в основному боті — це окрема задача, не змішуйте з клубом.
Шаблони клубу: tpl_tg_closed_club, tpl_tg_club_renewal, tpl_tg_join_handler. Маркетинг: tpl_tg_subscription_bonus, комбо tpl_tg_subscribe_and_club.
Тригери вступу / виходу
У блоці Тригер режими «Вступ у канал» та «Вихід з каналу» — для welcome/onboarding або реактивації.
Клубний бот синхронізує теги учасника (tg_ch__member / tg_ch__left) для сегментації розсилок.
Журнал подій каналу — вкладка Події в панелі «Закриті клуби» (вступ, кік, інвайт, перевірки, пости).
Webhook на продакшені
Основний бот: /webhook/telegram/{secret}/{projectId} — лише message і callback_query.
Клубний бот: /webhook/telegram-club/{secret}/{projectId} — message, callback, chat_join_request, my_chat_member.
Після деплою або зміни токена: перепідключіть бота в UI або на сервері `node apps/api/dist/scripts/reregister-webhooks.js`.