Botxona

Как задеплоить бота на Telegraf (Node.js) — хостинг на Botxona

Telegraf — один из самых популярных и давно используемых фреймворков для Telegram-ботов на Node.js. Для работы с Botxona никаких специальных настроек не нужно — Telegram-запросы автоматически проходят через прокси платформы, telegram.apiRoot не меняйте.

Шаги

1. Создайте Telegraf

const { Telegraf } = require("telegraf")

const bot = new Telegraf(process.env.BOT_TOKEN)

bot.start((ctx) => ctx.reply("Привет! Я работаю."))
bot.launch()

process.once("SIGINT", () => bot.stop("SIGINT"))
process.once("SIGTERM", () => bot.stop("SIGTERM"))

2. Храните данные в DATA_DIR

Для хранения сессий или данных пользователей (например, telegraf-session-local):

const path = require("path")
const DATA_DIR = process.env.DATA_DIR || "./data"

const { LocalSession } = require("telegraf-session-local")
const session = new LocalSession({ database: path.join(DATA_DIR, "sessions.json") })
bot.use(session.middleware())

3. package.json

{
  "scripts": { "start": "node index.js" },
  "dependencies": { "telegraf": "4.16.3" }
}

4. .env.example и загрузка

Опишите свои настройки в .env.example, упакуйте папку в ZIP (подробнее) и загрузите в панель.

5. Проверка и тест

Изучите результат на этой странице, затем проверьте бота во время 15-минутного теста.

Long-polling вместо webhook

Не используйте режим Telegraf bot.launch({ webhook: {...} }) — Botxona сама работает через long-polling, вызов setWebhook игнорируется и не нужен. Достаточно обычного bot.launch() (без аргументов).

Запланированные задачи

Если вы добавите задачу по расписанию с node-cron или похожей библиотекой, Botxona определит это автоматически и переведёт бота в режим «всегда включён» (подробнее).

Частые ошибки

  • TelegramError: 404 Not Found — обычно устаревший токен или неверный apiRoot, вручную изменённый в коде.
  • Сессии не сохраняются — возможно, файл сессий хранится не в DATA_DIR, а в корне проекта.
  • bot.launch() сразу завершается — проверьте, нет ли в конце кода строки, которая завершает процесс (например, process.exit()).

Быстрее с помощью ИИ

Отдайте ИИ готовое задание из Библиотеки промптов — и ваш существующий код на Telegraf будет адаптирован за несколько секунд.

Следующий шаг

Обзор панели управления и Ошибки и решения.