Боты
Как выложить Telegram-бота на Node.js (Telegraf)
Бот на Node.js собран: Telegraf отвечает на команды, npm start поднимает проект, локально всё работает. Дальше встаёт привычный вопрос — где его держать, чтобы он отвечал круглосуточно, а не только пока открыт ваш ноутбук. Обычный ответ — арендовать VPS, поставить Node.js на сервер, настроить процесс-менеджер вроде pm2 и автозапуск. Для небольшого бота это несоразмерно много.
Бота на Telegraf или node-telegram-bot-api можно выложить и без сервера. Разберём, как подготовить проект на Node.js и опубликовать его так, чтобы он работал сам, без вашего компьютера и без ручной настройки.
Проверьте package.json и команду запуска#
Убедитесь, что в package.json перечислены зависимости (Telegraf или node-telegram-bot-api и всё остальное) и задан скрипт запуска — обычно start. Папку node_modules в архив класть не нужно: платформа установит зависимости по package.json и package-lock.json сама.
Вынесите токен бота в переменную окружения#
Токен от BotFather не оставляйте в коде и не коммитьте в репозиторий. Читайте его из process.env, например process.env.BOT_TOKEN. При настройке проекта Netrun спросит это значение и подставит его как секрет снаружи кода.
Оставьте режим long polling#
Для простого бота проще запускать его в режиме long polling — bot.launch() в Telegraf делает именно это. Тогда не нужно поднимать веб-сервер, настраивать вебхук и открывать порт. Это самый беспроблемный режим для хостинга, и Telegraf использует его по умолчанию.
Уберите жёстко прописанные пути и порты#
Если бот попутно поднимает веб-часть, порт берите из переменной окружения, а не из жёсткого числа. Для чистого бота на long polling порт не нужен вовсе — главное не оставлять в коде путей и значений, завязанных на ваш компьютер.
Загрузите проект в Netrun#
Загрузите код ZIP-архивом или импортом из GitHub-репозитория — приватный тоже подойдёт. Netrun определит, что это Node.js, установит зависимости и запустит бота. Выбирать сервер, версию Node.js или процесс-менеджер вручную не нужно.
Запустите и проверьте бота#
После сборки бот стартует и начинает отвечать в Telegram. Логи видны в кабинете в реальном времени — если бот молчит, причина будет понятна. Компьютер для этого включать не нужно. На бесплатном тарифе бот работает три дня, а потом выключается: код, настройки и токен остаются на месте, ничего не удаляется, а за сутки до выключения приходит предупреждение. Чтобы бот работал без этого ограничения, нужен тариф Pro.
Боту на Node.js не нужен ни pm2 на арендованном VPS, ни постоянно включённый ноутбук. Загрузите код в Netrun, вынесите токен в секрет — и бот на Telegraf начнёт отвечать сам. Бесплатно бота можно запустить и проверить в деле, а чтобы он отвечал круглосуточно, понадобится тариф Pro.
Частые вопросы
Где выложить Telegram-бота на Node.js?
Бота на Node.js можно выложить в Netrun. Платформа определяет язык по package.json, устанавливает зависимости и запускает бота на своих серверах, а не на вашем компьютере. На бесплатном тарифе бот работает три дня и затем выключается, код и настройки при этом остаются на месте. Чтобы бот отвечал круглосуточно, нужен тариф Pro.
Подойдёт ли это для Telegraf и node-telegram-bot-api?
Да. Netrun запускает любой Node.js-проект независимо от библиотеки. Главное — указать зависимости и скрипт запуска в package.json, вынести токен в переменную окружения и оставить режим long polling.
Нужно ли настраивать pm2 и автозапуск?
Нет. Поддержанием процесса и перезапуском при сбое занимается платформа. Ставить pm2, настраивать systemd или автозапуск, как на VPS, не требуется.
Класть ли node_modules в архив?
Нет. Папку node_modules загружать не нужно — Netrun установит зависимости по package.json и package-lock.json при сборке. Это делает архив меньше и сборку чище.
Будет ли бот работать при выключенном компьютере?
Да. После публикации бот живёт на серверах Netrun, поэтому отвечает независимо от того, включён ли ваш ноутбук, и перезапускается сам, если упадёт.