Hosting: Cloudflare Workers (Deno)
Cloudflare Workers adalah sebuah platform pengkomputasian serverless publik yang menawarkan solusi simpel dan nyaman untuk menjalankan beban kerja yang tidak terlalu berat di edge.
Panduan ini akan menuntun kamu melakukan hosting bot Telegram di Cloudflare Workers.
Mencari Versi yang Node.js?
Tutorial ini berisi langkah-langkah untuk men-deploy bot Telegram ke Cloudflare Workers menggunakan Deno. Jika kamu sedang mencari versi yang Node.js, silahkan beralih ke tutorial berikut.
Persiapan
Untuk mengikuti panduan ini, pastikan kamu sudah memiliki sebuah akun Cloudflare beserta subdomain workers yang sudah dikonfigurasi.
Menyiapkan Proyek
Pastikan kamu sudah menginstal Deno dan Denoflare.
Buat sebuah direktori baru, lalu buat sebuah file bernama .denoflare
di dalamnya. Isi file dengan konten berikut:
Catatan: Key “$schema” pada kode JSON berikut berisi versi tertaut di URL-nya (“v0.5.12”). Ketika dokumentasi ini dibuat, itu merupakan versi yang paling baru. Kamu perlu memperbaruinya ke versi yang terbaru.
{
"$schema": "https://raw.githubusercontent.com/skymethod/denoflare/v0.5.12/common/config.schema.json",
"scripts": {
"my-bot": {
"path": "bot.ts",
"localPort": 3030,
"bindings": {
"BOT_TOKEN": {
"value": "TOKEN_BOT_KAMU"
}
},
"workersDev": true
}
},
"profiles": {
"account1": {
"accountId": "ID_AKUN_KAMU",
"apiToken": "TOKEN_API_KAMU"
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Pastikan untuk mengganti ID
, TOKEN
, dan TOKEN
dengan nilai yang sesuai. Ketika membuat token API, kamu bisa memilih pra atur Edit Cloudflare Workers
dari perizinan yang telah diatur.
Membuat Bot
Buat sebuah file baru bernama bot
lalu isi dengan kode berikut:
import { Bot, webhookCallback } from "https://deno.land/x/grammy@v1.33.0/mod.ts";
import { UserFromGetMe } from "https://deno.land/x/grammy@v1.33.0/types.ts";
interface Environment {
BOT_TOKEN: string;
}
let botInfo: UserFromGetMe | undefined = undefined;
export default {
async fetch(request: Request, env: Environment) {
try {
const bot = new Bot(env.BOT_TOKEN, { botInfo });
if (botInfo === undefined) {
await bot.init();
botInfo = bot.botInfo;
}
bot.command(
"start",
(ctx) => ctx.reply("Selamat datang! Bot berjalan dengan baik."),
);
bot.on("message", (ctx) => ctx.reply("Dapat pesan baru!"));
const cb = webhookCallback(bot, "cloudflare-mod");
return await cb(request);
} catch (e) {
return new Response(e.message);
}
},
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Men-deploy Bot
Caranya mudah sekali. Cukup jalankan perintah berikut:
denoflare push my-bot
Hasil keluaran atau output dari perintah di atas berisi host tempat worker-nya dijalankan. Cari baris yang mengandung string serupa yang dengan <BOT
. String tersebut adalah alamat atau host dimana bot kamu menunggu untuk dipanggil.
Mengatur Webhook
Kita perlu memberi tahu Telegram ke mana update seharusnya dikirim. Buka browser kamu lalu kunjungi URL ini:
https://api.telegram.org/bot<TOKEN_BOT>/setWebhook?url=https://<BOT_KU>.<SUBDOMAIN_KU>.workers.dev/
Ganti <TOKEN
, <BOT
, dan <SUBDOMAIN
dengan nilai yang sesuai. Jika konfigurasinya tepat, kamu akan menerima respon JSON seperti ini:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}
2
3
4
5
Uji Coba Bot
Buka aplikasi Telegram lalu /start
bot kamu. Jika ia merespon, berarti kamu telah berhasil!
Men-debug Bot
Untuk melakukan pengujian dan debugging, kamu bisa menjalankan sebuah server pengembangan lokal maupun remote sebelum men-deploy bot kamu ke tahap produksi. Cukup jalankan perintah berikut:
denoflare serve my-bot
Ketika server pengembangan dimulai, kamu bisa menguji bot kamu dengan cara mengirimkan sampel update ke bot tersebut menggunakan alat seperti curl
, Insomnia, atau Postman. Lihat di sini untuk contoh update dan di sini untuk informasi mengenai struktur update tersebut.