Hosting: Cloudflare Workers
Cloudflare Workers adalah sebuah platform pengkomputasian serverless publik yang menawarkan solusi simpel dan nyaman untuk menjalankan JavaScript di edge. Dengan kemampuannya untuk menangani lalu lintas HTPP serta ditenagai oleh Service Worker API, mengembangkan bot Telegram menjadi sangat mudah. Tidak berhenti di situ, kamu bahkan bisa mengembangkan Web Apps di edge, semua tanpa biaya dengan kuota tertentu.
Panduan ini akan menuntun kamu melakukan hosting bot Telegram di Cloudflare Workers.
Persiapan
Untuk mengikuti panduan ini, pastikan kamu sudah memiliki sebuah akun Cloudflare beserta subdomain workers yang sudah dikonfigurasi.
Menyiapkan Proyek
Pertama-tama, buat sebuah proyek baru:
npx wrangler generate bot-ku-sayang
Kamu bisa mengubah bot
dengan nama lainnya. Nama tersebut akan menjadi nama untuk bot kamu serta direktori proyeknya.
Setelah menjalankan perintah di atas, ikuti instruksi yang tampilkan untuk membuat proyek tersebut. Dari situ, kamu juga bisa memilih untuk menggunakan JavaScript atau TypeScript.
Ketika proyek sudah dibuat, cd
ke dalam bot
atau direktori manapun yang telah kamu buat di proyek tadi. Tergantung dari bagaimana kamu membuatnya, struktur file proyek setidaknya mirip seperti ini:
.
├── node_modules
├── package.json
├── package-lock.json
├── src
│ ├── index.js
│ └── index.test.js
└── wrangler.toml
Selanjutnya, install grammy
dan package lain yang kamu butuhkan:
npm install grammy
Membuat Bot
Tulis kode berikut ke dalam src
atau src
:
// Perhatikan bahwa kita meng-import dari 'grammy/web', bukan 'grammy'.
import { Bot, webhookCallback } from "grammy/web";
// Baris kode berikut mengasumsikan bahwa kamu sudah mengonfigurasi secret BOT_TOKEN dan BOT_INFO.
// Lihat https://developers.cloudflare.com/workers/platform/environment-variables/#secrets-on-deployed-workers.
// BOT_INFO diperoleh dari bot.api.getMe().
const bot = new Bot(BOT_TOKEN, { botInfo: BOT_INFO });
bot.command("start", async (ctx) => {
await ctx.reply("Halo, dunia!");
});
addEventListener("fetch", webhookCallback(bot, "cloudflare"));
Bot pada contoh di atas akan membalas “Halo, dunia!” ketika menerima command /start
.
Men-deploy Bot
Sebelum di-deploy, kita perlu mengubah wrangler
:
account_id = 'id_akun kamu' # Ambil dari Cloudflare dashboard.
name = 'bot-ku-sayang' # Nama bot kamu, yang akan muncul di URL webhook, misalnya: https://bot-ku-sayang.subdomain-ku.workers.dev
main = "src/index.js" # File utama untuk worker.
compatibility_date = "2023-01-16"
Selanjutnya, kamu bisa deploy bot menggunakan perintah berikut:
npm run deploy
Mengatur Webhook
Kita perlu memberi tahu Telegram lokasi atau alamat pengiriman update. 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"
}
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:
npm run start
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.