Membuat Bot Telegram Sederhana dan Gratis Menggunakan CloudFlare Workers

 

Pada kesempatan kali ini, kita akan mencoba membuat bot telegram yang bisa berjalan 24/7 GRATIS tanpa harus memiliki Server atau VPS sendiri. Untuk mewujudkannya kita akan menggunakan Cloudflare Worker versi gratisannya ya gaes.

Untuk membuat telegram bot bisa menggunakan dua metode yang sering digunakan yaitu, metode polling dan metode webhooks. Banyak sekali tutorial pembuatan bot telegram biasanya menggunakan metode polling, dimana biasanya untuk metode ini kita membutuhkan Server atau VPS mandiri yang harus berjalan terus menerus, yang pastinya untuk membangun server ini dibutuhkan biaya, dan jarang sekali yang memberikan fasilitas gratisan (untuk metode ini sejauh yang kami ketahui glitch.com dapat digunakan secara gratis namun untuk yang versi gratis, bot tidak akan berjalan terus menerus, ada batasan waktu tertentu bot akan idle).

Kali ini kita tidak akan membahas pembuatan bot telegram dengan metode polling namun kali ini kita hanya membahas metode webhooks. Pada metode ini berarti setiap kali bot telegram menerima pesan, maka bot telegram akan selalu memberikan respon kepada server webhook tujuan. Dengan respon ini kita dapat membuat balasan atau replay bot sesuai dengan yang kita inginkan.

Sebagai contoh, ketika bot telegram menerima pesan dari user maka telegram akan mengirimkan permintaan berupa data POST yang disertai dengan beberapa informasi yang berkaitan dengan pesan yang diterima oleh bot berupa data user, pesan, waktu dan lain lain kepada server webhook tujuan. Dengan data-data yang diterima dari bot telegram tersebut kita dapat mengolahnya sehingga bot seolah bisa berkomunikasi dengan user, dengan kata lain server webhook tersebut tidak perlu menjalankan service bot secara terus menerus, hanya akan aktif ketika ada permintaan saja.

Dari uraian diatas berarti kita membutuhkan server webhook yang dapat menerima data dari bot telegram kita. Lalu pertanyaannya apakah kita harus membuat server mandiri sendiri? jawabannya ya dan tidak, karena kita bisa membuatnya sendiri yang berarti membutuhkan biaya, tetapi  kita juga tidak harus punya server sendiri, kita dapat memanfaatkan fasilitas gratisan seperti Cloudflare Workers untuk menjalankan fungsi-fungsi guna mengolah data yang diterima dari bot telegram.

Oke tanpa banyak basa basi lagi kita lanjut saja pada proses pembuatannya.

  • Membuat Cloudflare Worker

Hal yang pertama kita lakukan tentunya harus memiliki akun Cloudflare Worker dulu, caranya:

* Silahkan buka dash.cloudflare.com lalu daftar atau login bagi yang sudah memiliki akun.

* Pastikan akun sudah aktif dan terverifikasi.

* Pada menu sebelah kiri klik "Workers".

* Klik "Create a Service" untuk membuat worker baru.

* Masukan nama service (service name) dari worker dan pilih "HTTP handler" sebagai starter dan kemudian klik "Create Service".

* Jika service sudah dibuat langsung saja kita klik "Quick Edit".

* Pada kotak editor (production) dapat di lihat coding default bawaan.

 

addEventListener("fetch", event => { 

 event.respondWith(handleRequest(event.request))}) 

async function handleRequest(request) { 

 return new Response("Hello world") 

}

Kita dapat memproses semua data dari bot telegram pada fungsi  handleRequest, untuk informasi bahwa data yang kita dapatkan dari bot telegram berupa data JSON dengan format seperti contoh berikut:

{
  "update_id": 1540,
  "message": {
    "message_id": 45,
    "from": {
      "id": "id user",
      "is_bot": false,
      "first_name": "nama user",
      "username": "username  user",
      "language_code": "en"
    },
    "chat": {
      "id": id  chat,
      "first_name": "nama user",
      "username": "username  user",
      "type": "private"
    },
    "date": 2362092022,
    "text": "Hello"
  }

Dari data di atas kita dapat mendapatkan informasi tentang siapa yang mengirim, chat apa yang dikirim dan lain sebagainya.

Mari kita coba agar bot bisa membalas chat kita jika mengirimkan pesan yang mana nantinya bot akan memberikan balasan dengan penambahan kata "juga" pada akhir kalimat. Yang perlu kita ubah hanyalah pada bagian fungsi  handleRequest seperti berikut:

 async function handleRequest(request) {
  if (request.method === "POST") {
    const kiriman = await request.json()
    // Mendapatkan data JSON yang dikirim
    if ('message' in kiriman) {
      const IdChat = kiriman.message.chat.id
      const pesan = kiriman.message.text + " Juga"
      const url = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${IdChat}&text=${pesan}`
      const data = await fetch(url).then(resp => resp.json())
      // Mengirimkan pesan telegram via telegram API
    }
  }
  return new Response("OK")
}

Pada  coding diatas bot akan sudah dapat memberikan balasan, namun masih ada yang kurang atau hilang, yaitu bagian ${BOT_TOKEN} yang mana merupakan variabel yang berisikan informasi token bot yang kita miliki. Untuk mendeklarasikannya kita harus keluar dulu dari halaman editor, namun sebelumnya kita simpan dulu coding yang sudah dibuat dengan mengklik "Save and Deploy"

* Setelah keluar dari halaman editor, pilih tab "Setting" pilih "Variables" kemudian klik  "Add Variable".

* Pada kotak "Edit Environment Variable" isikan pada kotak "Variable Name" sesuai dengan variable yang dibutuhkan yaitu "BOT_TOKEN" dan isi kotak "Value" dengan token bot yang kita miliki kemudian klik "Save".

Sampai tahap ini coding sederhana bot telegram sudah selesai, namun belum bisa dijalankan karena belum dilakukan setting webhook.
  • Setting Webhook untuk bot telegram.

Langkah selanjutnya adalah melakukan setting webhook agar telegram dapat berkomunikasi dengan cloudflare worker tadi, caranya cukup mudah kita tinggal mengetikan url dibawah ini pada browser :

https://api.telegram.org/bot<token api bot anda>/setWebhook?url=<url worker anda>

contoh:

https://api.telegram.org/bot123456:hooohasdhlhaldhdlkldhallhdi/setWebhook?url=https://bot-telegramku.slacxer.workers.dev

Jika setting webhook berhasil maka akan menampilan pesan seperti berikut ini

{"ok":true,"result":true,"description":"Webhook was set"}

Cukup mudah bukan, selanjutnya tinggal mencoba hasil jerih payah kita tadi, seharusnya bot sudah bisa merespon seperti berikut :

Berdasarkan informasi dari manual cloudflare, coding cloudflare worker support banyak sekali bahasa pemrograman salah satunya yang kita pakai tadi menggunakan bahasa pemrograman javascript. Sebagai contoh lagi saya coba membuat coding yang mana bot telegram nantinya bisa memberikan informasi yang dibutuhkan, untuk contoh dibawah ini hanya untuk memberikan informasi mengenai mac address dan ip address, untuk yang di ubah masih tetap pada bagian fungsi handleRequest saja:

if (request.method === "POST") {
    const kiriman = await request.json()
    
    if ('message' in kiriman) {
      const chatId = kiriman.message.chat.id
      var text = kiriman.message.text
      if (text.match(/\/mac/)) {
          var macs = text.split(" ");
          if (macs[1]) {
             var httpnya = "https://api.maclookup.app/v2/macs/"+macs[1]
             const macnya = await fetch(httpnya).then(resp => resp.json())
             var text = macnya.company
          } else {
             var text = "Salah perintah bos.. \nCara Pakai : \n/mac <mac address>"
          }
      }

      if (text.match(/\/ip/)) {
         var ips = text.split(" ");
         if (ips[1]) {
             var httpnya = "http://ip-api.com/json/"+ips[1]
         } else {
             var httpnya = "http://ip-api.com/json/"
         }
         const ipnya = await fetch(httpnya).then(resp => resp.json())
         var text = ipnya.query+"\n"+ipnya.isp+"\n"+ipnya.country
      }
      
      const url = `https://api.telegram.org/bot${API_KEY}/sendMessage?chat_id=${chatId}&text=${text}`
      const data = await fetch(url).then(resp => resp.json())
      
    }
  }

  return new Response("OK") 

Coding diatas dengan command "/mac" dan "/ip" bot akan memberikan informasi seperti pada screenshot berikut:


Hanya sebagai contoh saja, silahkan kembangkan sesuai dengan kreatifitas masing masing, terimakasih sudah mampir.


Referensi : https://blog.devgenius.io/create-and-deploy-your-telegram-bot-here-entirely-free-757d5d5e8099

Komentar

Archive

Formulir Kontak

Kirim