Инструкция · 5 шагов

Тест-чеклист

От регистрации до первого автоматического репоста — 5 минут. Если что-то не работает — есть раздел про диагностику в конце.

1. Подключение Telegram (5 мин)

  1. Откройте @Vaal_Repost_bot в Telegram. Если ваш аккаунт ещё не привязан — на /repost/dashboard есть кнопка «Привязать Telegram», она открывает бота с уже подготовленным ключом.
  2. В боте нажмите /start — появится главное меню inline-кнопками.
  3. Нажмите «🔗 Подключить TG-канал» → следуйте инструкции бота: добавьте @Vaal_Repost_bot админом в свой канал. Достаточно прав «Публикация сообщений».
  4. После добавления — бот сам определит канал и пришлёт DM «Канал-источник подключён: …». Привязка к вашему аккаунту произойдёт автоматически.

2. Подключение площадок (15 мин)

  1. Откройте vaalacademy.online/repost/dashboard.
  2. В блоке «Куда постим» нажмите «Подключить ВКонтакте» → откроется /repost/connect/vk с двумя вариантами: OAuth (выбор группы автоматом) ИЛИ community service token (manual). Важно: ВК закрыл API для постов на личные стены с 2024 — только сообщества. Если у тебя нет паблика, создай: vk.com/groups?act=create.
  3. Max — на /repost/connect/max. Нужен access_token от вашего Max-бота (создаётся через @MasterBot за 2 мин). Шаги:
    • Открыть @MasterBot в Max → команда /newbot → имя + username
    • Скопировать access_token
    • Добавить созданного бота админом в свой Max-канал
    • Вставить token в форму на /repost/connect/max — мы сами найдём подключённые каналы
  4. Дзен — на /repost/connect/dzen. У Дзен публичный API закрыт после ребрендинга 2023, поэтому работаем через стандартный RSS-импорт в Дзен Studio:
    • На /repost/connect/dzen нажать «Подтвердить подключение»
    • Скопировать URL вашего RSS-фида (кнопка «Копировать»)
    • Открыть Дзен Studio → ваш канал → Импорт → Добавить RSS-источник → вставить URL
    • Дзен sync ~раз в час, первый пост появится через 30-60 минут
  5. RuTube — пока «скоро». Реализация через video-upload API планируется в Phase 6.
💡 Все access_token шифруются (AES-256-GCM) до записи в БД. Plaintext нигде не сохраняется.

3. Тестовый пост (5 мин)

  1. Опубликуйте обычный текстовый пост в подключённом канале.
  2. В течение ~30 секунд cron-runner создаст RepostJob и попробует опубликовать через каждый активный adapter.
  3. Откройте бот → нажмите «📊 История» — увидите последние 10 jobs со статусами:
    • ✅ опубликован — успех
    • 🕐 в очереди — ждёт обработки
    • ❌ ошибка — клик откроет пост или сообщение об ошибке
    • 💸 нет баланса / ⏸ пауза — пропущен
  4. Или откройте /repost/dashboard — таблица всех jobs с детальной информацией.

4. Тарифы и баланс (3 мин)

  1. На /repost/billing — два сценария:
  2. Pay-as-you-go: 100/500/1000 ₽ или свою сумму. Бонусы: 500 ₽ → +50 ₽, 1000 ₽ → +150 ₽.
  3. Безлимит-подписка: 190 ₽ за 30 дней. Любое количество репостов.
  4. После оплаты — ОФД-чек прилетает на e-mail (54-ФЗ). История — в том же разделе.

5. Пауза и возобновление

  1. В боте — главное меню → клик по сообщению со статусом → кнопка пауза/возобновить.
  2. Или из бота команды /pause и /resume.
  3. На паузе новые посты в канале НЕ публикуются. Возобновили — следующий пост улетит.

Если что-то не работает

  • Бот не отвечает на /start: long-polling cron (~10 сек). Если 30 сек тишина — напишите в support@vaalacademy.online. Если в течение часа — это инфраструктурная проблема, мы получаем алерт.
  • VK OAuth выдаёт ошибку: если кнопка возвращает 503 — VK App ещё не подключён (VK_APP_ID + VK_APP_SECRET в .env). Напишите в support@vaalacademy.online — добавим creds и кнопка заработает без вашего участия.
  • Max — «токен невалиден»: проверьте что токен скопирован полностью (без пробелов и переносов), и что вы добавили бота админом в канал ДО запроса. Если бот не в канале — chats endpoint вернёт пусто и мы покажем ошибку «no_chats».
  • Пост не публикуется: откройте dashboard → таблица jobs → в колонке «Статус» будет конкретная ошибка от API.
  • Дзен — медленно: по-другому никак, Дзен Studio sync с RSS ~раз в час. Это нормальный режим RSS-импорта, не баг. Если первый пост не появился за 2 часа — проверьте что URL фида валиден (откройте в браузере, должен быть XML).
  • Откат / отмена подписки: возврат остатка дней по запросу в support@vaalacademy.online (ст. 32 ЗоЗПП).

Для админов — env vars на VPS

Все секреты в /root/lms-platform/.env. Синтаксис: KEY=value без пробелов вокруг =, без кавычек, БЕЗ угловых скобок < >.

# === VAAL Repost ===
REPOST_BOT_TOKEN=1234567890:ABCDEF...     # @BotFather → /newbot
REPOST_BOT_WEBHOOK_SECRET=$(openssl rand -hex 16)
REPOST_ENC_KEY=$(openssl rand -hex 32)    # AES-256-GCM
REPOST_OAUTH_STATE_SECRET=$(openssl rand -hex 32)

# === VK (опц.) ===
VK_APP_ID=54605900                         # https://vk.com/apps?act=manage
VK_APP_SECRET=AbCdEf...                    # из настроек приложения

# === Уже должно быть ===
CRON_SECRET=...                            # для /api/cron/* guard
CP_API_SECRET_LMS=...                      # CloudPayments LMS
NEXTAUTH_SECRET=...

После изменения .env: docker compose -f docker-compose.prod.yml up -d --force-recreate app(только restart не пересоздаёт env_file — нужен force-recreate).

Smoke-test

Локально или из CI:

npm run smoke:repost             # против локального dev / .env
npm run smoke:repost -- --prod   # против vaalacademy.online

Скрипт выводит чек-лист ✅/⚠️/🔴 с конкретными fix-suggestions для каждого пункта. Exit code 0 если все ОК, 1 если есть критические ошибки.

Поддержка и обратная связь

Что не работает / неудобно / хочется добавить — пишите. Реагируем быстро и адаптируем под реальный workflow.