Как закрепить зависимости бота, чтобы перезапуск не ломал код
Закрепите зависимости бота в requirements.txt или package-lock.json, учтите devDependencies и проверьте обновления библиотек до загрузки.
Если бот работал вчера, а после перезапуска перестал, сравните установленные зависимости с последней рабочей версией. При включённой настройке «Ставить зависимости при запуске» шаблон запускает установщик перед вашим кодом. Незакреплённый диапазон версий допускает обновления, даже когда сам файл бота вы не меняли.

Подготовка воспроизводимого комплекта зависимостей
Для Python сохраните проверенные версии
В requirements.txt используйте точные версии библиотек, проверенные вашим проектом. Полный список фиксируют из отдельного окружения этого бота, чтобы не включить случайные пакеты других проектов. Проверьте также вложенные зависимости: закрепление только основной библиотеки не фиксирует весь комплект. Текущий шаблон запускает Python 3.12.
Для Node.js загрузите lock-файл
Положите package-lock.json рядом с соответствующим package.json в корень сервера. Формируйте их вместе локальной установкой зависимостей и храните вместе с рабочей версией кода. Панель запускает npm install с --omit=dev, поэтому библиотека, нужная работающему боту, должна быть в dependencies, а не только в devDependencies.
Проверьте сборку до загрузки
Если исходники требуют TypeScript или другого сборщика, подготовьте запускаемый JavaScript заранее либо предусмотрите собственный проверенный процесс сборки. Поле «Файл запуска» указывает файл для node или python; оно не превращается в npm-скрипт. Загрузка папки src сама по себе не создаёт отсутствующий dist/index.js.
- Бэкапы и файлы
Обновляйте код и зависимости одним комплектом
Сохраните бэкап, остановите бота и загрузите код вместе с его манифестом и lock-файлом. Не переносите node_modules или виртуальное окружение с другой операционной системы. После запуска прочитайте журнал установки до строки запуска приложения, затем проверьте реальную команду бота.
Отключение установки зависимостей ускоряет повторный запуск уже подготовленного проекта, но не заменяет фиксацию версий. После добавления библиотеки или восстановления на чистом окружении установку нужно снова включить. У Node.js шаблон использует npm install, а не npm ci: если манифест противоречит lock-файлу, npm может пересчитать зависимости. Проверяйте эту пару до выкладки.
Рабочий результат — бот проходит один и тот же проверочный сценарий после установки и повторного запуска. При неудаче возвращайте код вместе со списком зависимостей; восстановление одного скрипта может оставить несовместимую библиотеку. Файлы базы и пользовательские данные сохраняйте отдельно от обновляемой сборки и не заменяйте их пустыми примерами из архива проекта.