Как задеплоить бота на 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.