Хостинг: Deno Deploy
Цей посібник розповідає про способи, які дозволяють розмістити ваших ботів на grammY на Deno Deploy.
Зверніть увагу, що цей посібник призначений лише для користувачів Deno, а також для створення облікового запису на Deno Deploy вам потрібно мати обліковий запис на Git
Deno Deploy ідеально підходить для більшості простих ботів, проте варто зазначити, що не всі функції Deno доступні для застосунків, що працюють на Deno Deploy. Наприклад, платформа підтримує лише обмежений набір API файлової системи, які доступні в Deno. Це така ж платформа, як і багато інших безсерверних платформ, але призначена для застосунків на Deno.
Результат цього посібника можна побачити в репозиторії з прикладами ботів.
Підготовка вашого коду
Памʼятайте, що вам потрібно запустити свого бота на вебхуках, тому ви повинні використовувати
webhook
і не викликатиCallback bot
у своєму коді..start()
- Переконайтеся, що у вас є файл, який експортує ваш обʼєкт
Bot
, щоб ви могли імпортувати його пізніше для запуску. - Створіть файл з назвою
mod
або.ts mod
або насправді будь-якою назвою, яку ви хочете, але ви повинні памʼятати та використовувати його як головний файл для розгортання, із наступним вмістом:.js
import { webhookCallback } from "https://deno.land/x/grammy@v1.19.2/mod.ts";
// Ви можете змінити це на правильний спосіб імпорту вашого обʼєкта `Bot`.
import bot from "./bot.ts";
const handleUpdate = webhookCallback(bot, "std/http");
Deno.serve(async (req) => {
if (req.method === "POST") {
const url = new URL(req.url);
if (url.pathname.slice(1) === bot.token) {
try {
return await handleUpdate(req);
} catch (err) {
console.error(err);
}
}
}
return new Response();
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Ми радимо вам зареєструвати свій обробник на деякому секретному шляху, а не на кореневому (/
). В даному випадку ми використовуємо токен бота (/<токен
) як секретний шлях.
Розгортання
1-й метод: за допомогою GitHub
Це рекомендований метод і найпростіший для використання. Основна перевага використання цього методу полягає в тому, що Deno Deploy буде стежити за змінами у вашому репозиторії, включаючи код вашого бота, і автоматично розгортатиме нові версії.
Створіть репозиторій на GitHub, він може бути як приватним, так і загальнодоступним.
Завантажте свій код.
Рекомендується мати одну стабільну гілку, а тестувати свої напрацювання в інших гілках, щоб уникнути непередбачуваних помилок.
Відвідайте свою панель керування Deno Deploy.
Натисніть на “New Project” і перейдіть до розділу “Deploy from GitHub repository”.
Встановіть GitHub-застосунок Deno Deploy на свій обліковий запис або організацію та виберіть свій репозиторій.
Виберіть гілку, яку ви хочете розгорнути, а потім виберіть файл
mod
для розгортання..ts
2-й метод: за допомогою deployctl
Це метод для більш досвідчених користувачів. Він дозволяє розгорнути проєкт за допомогою командного рядка або Github Actions.
Відвідайте свою панель керування Deno Deploy.
Натисніть на “New Project”, а потім на “Empty Project”.
Встановіть
deployctl
.Виконайте наступну команду:
shdeployctl deploy --project <назва-проєкту> ./mod.ts --prod --token <токен-доступу>
1Щоб налаштувати Github Actions, дивіться це.
3-й метод: за допомогою URL
Все, що вам потрібно зробити, щоб скористатися цим методом для розгортання вашого бота на grammY, — це отримати публічний URL-адрес вашого файлу
mod
..ts
- Створіть новий проєкт на Deno Deploy.
- Натисніть на “Deploy URL”.
- Введіть загальнодоступну URL-адресу вашого файлу
mod
і натисніть на “Deploy”..ts
Примітка
Після запуску застосунку вам потрібно налаштувати вебхук вашого бота так, щоб він вказував на URL-адресу вашого застосунку. Для цього надішліть запит на адресу
https://api.telegram.org/bot<токен-бота>/setWebhook?url=<адреса>
замінивши <токен
на токен вашого бота, а <адреса>
— на повну URL-адресу вашого застосунку разом з шляхом до обробника вебхуків.