Skip to main content

Решение проблем#

"tgcloud login" requires an interactive terminal#

CLI нужен TTY. Используйте login_bot: токен уходит в stdin с TGCLOUD_ASSUME_TTY=1. Для CI: TGCLOUD_TOKEN='app...'.

Token format looks wrong. Expected "app<id>:<secret>"#

Передан Bot API токен. Нужен CLI access token: @BotFather → бот → Serverless → CLI Access.

Could not reach the tgcloud server#

Нет доступа к cloud.telegram.org. Проверьте сеть и прокси. Обёртка CLI: HTTPS_PROXY + NODE_USE_ENV_PROXY=1 через TGCLOUD_CLI.

This bot already has N deployed modules (revision R)#

Облако и проект разъехались: fetch → diff → push (или осознанно push { force: true, confirm: true }).

non-interactive session — specify --safe, --yes, or --dry-run#

Используйте migrate. По умолчанию --dry-run. Применение: dry_run: false и confirm: true. apply: "safe" — это --safe (warning-дропы пропускаются). apply: "yes" — это --yes (warning-дропы применяются, ручная смена типа пропускается).

Команды отказываются, если schema.js лежит в корне#

Это layout до CLI 0.2.0. Сначала upgrade с dry_run: true, затем upgrade { dry_run: false, confirm: true }.

chat not found в run_handler#

Ожидаемо для выдуманного chat id: запись в БД проходит, падает только реальная отправка в Telegram. Логика handler при этом выполняется.

Нет логов развёрнутого бота#

Команды, которая скачивает логи развёрнутого бота, нет. tgcloud run (run_handler) захватывает console.*, но запускает ваши локальные файлы на платформе без деплоя — это не вывод развёрнутого бота. Чтобы разобрать сбой в деплое, читайте webhook_status (tgcloud webhook): последняя ошибка доставки и состояние синхронизации — первые зацепки. Затем воспроизведите путь через run_handler.

Mini App показывает старый фронтенд#

push не запускает бандлер. Вызовите deploy или соберите проект и затем push. immutable в tgcloud.jsonc кеширует совпавшие файлы на год — только для путей с хэшем в имени, например /assets/*.