Botxona

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

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

Шаги

1. Создайте бота

const { Bot } = require("grammy")

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

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

bot.start()

В TypeScript всё точно так же, только с import { Bot } from "grammy".

2. Используйте DATA_DIR

const path = require("path")
const fs = require("fs")

const DATA_DIR = process.env.DATA_DIR || "./data"
fs.mkdirSync(DATA_DIR, { recursive: true })
const dbPath = path.join(DATA_DIR, "bot.sqlite3")

3. package.json — скрипт "start" и точные версии

{
  "name": "mening-botim",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "grammy": "1.30.0"
  }
}

Важно, чтобы был скрипт "start" — Botxona ищет его в первую очередь (правило точки входа).

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

Задокументируйте настройки своего бота в .env.example, упакуйте папку в ZIP (не добавляйте node_modules — зависимости устанавливаются автоматически, подробнее) и загрузите в панель.

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

Разберитесь в результате на этой странице и проверьте бота в Telegram в тестовом режиме.

grammY runner (долгий polling)

Для высоконагруженных ботов рекомендуется официальный пакет grammY @grammyjs/runner — он обрабатывает больше запросов одновременно. Он полностью совместим с Botxona, поскольку все запросы всё равно автоматически проходят через прокси.

Расписание с node-cron или setInterval

Если для ежедневных сообщений или напоминаний используется node-cron или setInterval, Botxona определит это и переведёт бота в режим «всегда включён». Подробнее: Сон и пробуждение.

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

  • GrammyError: 401 Unauthorized — неверный токен, см. страницу Получение токена.
  • Cannot find module 'grammy' — grammy не указан в package.json или версия записана неверно.
  • Бот не запускается, ошибка «нет скрипта start» — добавьте в package.json "scripts": {"start": "node index.js"}.

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

Можно отдать код ИИ вместе с готовым заданием из Библиотеки промптов и автоматически привести его к стандартам Botxona.

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

Как обеспечить работу бота 24/7 и Обзор панели управления.