Хостинг: Cloudflare Workers (Node.js)
Cloudflare Workers — це загальнодоступна безсерверна обчислювальна платформа, яка пропонує зручне та просте рішення для запуску JavaScript за допомогою парадигми кордонних обчислень. Маючи здатність обробляти HTTP трафік та базуючись на Service Worker API, розробка ботів Telegram стає легкою справою. Крім того, ви можете розробляти вебдодатки використовуючи кордонні обчислення, і все це безкоштовно у межах певних лімітів.
Цей посібник допоможе вам розмістити вашого бота Telegram на Cloudflare Workers.
Шукаєте версію для Deno?
Цей посібник пояснює, як розгорнути бота Telegram на Cloudflare Workers за допомогою Node.js. Якщо ви шукаєте версію для Deno, перегляньте цей посібник.
Передумови
Щоб продовжити, переконайтеся, що у вас є обліковий запис Cloudflare з налаштованим піддоменом worker’ів.
Налаштування
Спочатку створіть новий проєкт:
npx wrangler generate my-bot
Ви можете змінити my
на будь-що інше. Це буде назвою вашого бота та каталогу проєкту.
Після запуску вищезазначеної команди слідуйте інструкціям, які ви бачите, щоб ініціалізувати проєкт. Там ви можете вибрати між JavaScript або TypeScript.
Коли проєкт ініціалізовано, виконайте команду cd my
або перейдіть в каталог проєкту, який ви ініціалізували. В залежності від того, як ви ініціалізували проєкт, ви повинні побачити структуру файлів, схожу на таку:
.
├── node_modules
├── package.json
├── package-lock.json
├── src
│ ├── index.js
│ └── index.test.js
└── wrangler.toml
Далі встановіть grammy
та інші пакети, які вам можуть знадобитись:
npm install grammy
Створення вашого бота
Відредагуйте src
або src
та напишіть такий код всередині:
import { Bot, webhookCallback } from "grammy";
// Наступний рядок коду передбачає, що ви налаштували секрети BOT_TOKEN та BOT_INFO.
// Дивіться https://developers.cloudflare.com/workers/platform/environment-variables/#secrets-on-deployed-workers
// BOT_INFO отримуємо за допомогою `bot.api.getMe()`.
const bot = new Bot(BOT_TOKEN, { botInfo: BOT_INFO });
bot.command("start", async (ctx) => {
await ctx.reply("Привіт, світ!");
});
addEventListener("fetch", webhookCallback(bot, "cloudflare"));
2
3
4
5
6
7
8
9
10
11
12
Вищезазначений бот відповідає “Привіт, світ!”, коли отримує /start
.
Розгортання вашого бота
Перед розгортанням нам потрібно відредагувати файл wrangler
:
account_id = 'ідентифікатор облікового запису' # Отримайте його з панелі керування Cloudflare.
name = 'my-bot' # Назва вашого бота, яка зʼявиться в URL-адресі вебхука: https://my-bot.my-subdomain.workers.dev
main = "src/index.js" # Основний файл worker'а.
compatibility_date = "2023-01-16"
2
3
4
Після цього ви можете розгорнути бота за допомогою наступної команди:
npm run deploy
Встановлення вашого вебхуку
Нам потрібно повідомити Telegram, куди надсилати оновлення. Відкрийте свій браузер і відвідайте цей URL:
https://api.telegram.org/bot<токен-бота>/setWebhook?url=https://<назва-бота>.<піддомен>.workers.dev/
Замініть <токен
, <назва
та <піддомен>
своїми значеннями. Якщо налаштування пройшло успішно, ви побачите відповідь у форматі JSON, схожу на цю:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}
2
3
4
5
Тестування вашого бота
Відкрийте свою програму Telegram та запустіть свого бота. Якщо він відповідає, значить все працює!
Налагодження вашого бота
Для тестування та налагодження бота ви можете запустити локальний або віддалений сервер розробки перед розгортанням бота у продакшені. Просто запустіть наступну команду:
npm run start
Після запуску сервера розробки ви можете протестувати свого бота, надсилаючи приклади оновлень до нього за допомогою певних інструментів, як-от curl
, Insomnia або Postman. Для прикладів оновлень зверніться сюди, а для отримання додаткової інформації про структуру оновлень зверніться сюди.