Инструкция · 5 шагов
Тест-чеклист
От регистрации до первого автоматического репоста — 5 минут. Если что-то не работает — есть раздел про диагностику в конце.
1. Подключение Telegram (5 мин)
- Откройте @Vaal_Repost_bot в Telegram. Если ваш аккаунт ещё не привязан — на /repost/dashboard есть кнопка «Привязать Telegram», она открывает бота с уже подготовленным ключом.
- В боте нажмите
/start— появится главное меню inline-кнопками. - Нажмите «🔗 Подключить TG-канал» → следуйте инструкции бота: добавьте @Vaal_Repost_bot админом в свой канал. Достаточно прав «Публикация сообщений».
- После добавления — бот сам определит канал и пришлёт DM «Канал-источник подключён: …». Привязка к вашему аккаунту произойдёт автоматически.
2. Подключение площадок (15 мин)
- Откройте vaalacademy.online/repost/dashboard.
- В блоке «Куда постим» нажмите «Подключить ВКонтакте» → откроется
/repost/connect/vkс двумя вариантами: OAuth (выбор группы автоматом) ИЛИ community service token (manual). Важно: ВК закрыл API для постов на личные стены с 2024 — только сообщества. Если у тебя нет паблика, создай: vk.com/groups?act=create. - Max — на /repost/connect/max. Нужен access_token от вашего Max-бота (создаётся через @MasterBot за 2 мин). Шаги:
- Открыть @MasterBot в Max → команда /newbot → имя + username
- Скопировать access_token
- Добавить созданного бота админом в свой Max-канал
- Вставить token в форму на /repost/connect/max — мы сами найдём подключённые каналы
- Дзен — на /repost/connect/dzen. У Дзен публичный API закрыт после ребрендинга 2023, поэтому работаем через стандартный RSS-импорт в Дзен Studio:
- На /repost/connect/dzen нажать «Подтвердить подключение»
- Скопировать URL вашего RSS-фида (кнопка «Копировать»)
- Открыть Дзен Studio → ваш канал → Импорт → Добавить RSS-источник → вставить URL
- Дзен sync ~раз в час, первый пост появится через 30-60 минут
- RuTube — пока «скоро». Реализация через video-upload API планируется в Phase 6.
💡 Все access_token шифруются (AES-256-GCM) до записи в БД. Plaintext нигде не сохраняется.
3. Тестовый пост (5 мин)
- Опубликуйте обычный текстовый пост в подключённом канале.
- В течение ~30 секунд cron-runner создаст RepostJob и попробует опубликовать через каждый активный adapter.
- Откройте бот → нажмите «📊 История» — увидите последние 10 jobs со статусами:
- ✅ опубликован — успех
- 🕐 в очереди — ждёт обработки
- ❌ ошибка — клик откроет пост или сообщение об ошибке
- 💸 нет баланса / ⏸ пауза — пропущен
- Или откройте /repost/dashboard — таблица всех jobs с детальной информацией.
4. Тарифы и баланс (3 мин)
- На /repost/billing — два сценария:
- Pay-as-you-go: 100/500/1000 ₽ или свою сумму. Бонусы: 500 ₽ → +50 ₽, 1000 ₽ → +150 ₽.
- Безлимит-подписка: 190 ₽ за 30 дней. Любое количество репостов.
- После оплаты — ОФД-чек прилетает на e-mail (54-ФЗ). История — в том же разделе.
5. Пауза и возобновление
- В боте — главное меню → клик по сообщению со статусом → кнопка пауза/возобновить.
- Или из бота команды
/pauseи/resume. - На паузе новые посты в канале НЕ публикуются. Возобновили — следующий пост улетит.
Если что-то не работает
- Бот не отвечает на /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.
- 📧 support@vaalacademy.online
- 🤖 @Vaal_Repost_bot — в нём же бот-команда «/help» (если есть в меню)