Решение проблем#
"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/*.