Langsung ke konten utama

Meracik Script Untuk Merespon Command Bot Telegram - PART 1

BotFather hanya menyiapkan menu command sedangkan menghidupkannya perlu sentuhan Apps Script. Bot Telegram mengirim command dari user, selanjutnya Apps Script membalasnya dengan konten tertentu.

Pada PART 1 kali ini dibatasi merespon command /start sedangkan untuk custom command bot yang dibuat pada artikel Membuat Menu Command Bot Telegram akan diulas mendalam pada artikel PART 2.

Bagaimana Bot Telegram berkomunikasi dengan Google Apps Script simak di artikel Telegram Bot Dengan Google Apps Script - The First EncounterSiLiKiDi

MERESPON COMMAND /start

Command /start adalah default command bawaan setiap kali membuat bot baru di Telegram.

Respon Command Kiriman JSON

Saat user memberikan command /start maka bot akan mengirimkan respon ke Apps Script berupa JSON-string dengan struktur berikut:


{
  "update_id":166769832,
  "message":{
    "message_id":25,
    "from":{
      "id":1831579451,
      "is_bot":false,
      "first_name":"RSUD CIBABAT",
      "last_name":"CIMAHI",
      "username":"rscibabatinfo",
      "language_code":"en"
    },
    "chat":{
      "id":1831579451,
      "first_name":"RSUD CIBABAT",
      "last_name":"CIMAHI",
      "username":"rscibabatinfo",
      "type":"private"
    },
    "date":1633067702,
    "text":"/start",
    "entities":[
      {
        "offset":0,
        "length":6,
        "type":"bot_command"
      }
    ]
  }
}

Identitas Command

Bagaimana kita mengetahui bahwa itu adalah command bot dapat ditelusuri dari properti message.text yang berisi satu kata diawali garis miring "/start" dan properti entities[0].type yang berisi "bot_command"

Entities Sebagai Array

Anda harus jeli mengapa properti entities[0] dituliskan berbentuk array, ini bisa dilihat dari struktur respon JSON di mana entities bukan sebagai object melainkan array yang berisi object.

[0] menunjukkan di posisi elemen pertama data-data entities berada karena dalam array posisi pertama dimulai dari 0 bukan 1.

Selengkapnya tentang pengolahan respon JSON kiriman Telegram simak di artikel Kirim Pesan Ke Telegram Dengan Apps ScriptSiLiKiDi

message.text VS entities[0].type

Dari kedua opsi penanda command tersebut, entities[0].type lebih eksak dibandingkan message.text yang terkadang tidak murni disisipi spasi kosong atau kalimat lain oleh user yang akan membuat algoritma pengolahan lebih panjang lagi.

entities[0].type diproduksi oleh sistem Telegram bukan oleh user sehingga lebih menjamin tidak akan ada distorsi karakter.SiLiKiDi

Membangun Kondisi Pemeriksaan

Setelah kita mengetahui identitas penanda command bot, selanjutnya kita bangun kondisi untuk memisahkan perlakuan antara command bot dengan yang bukan:


if ( data.message.entities[0].type === "bot_command" ) {
  
  if ( data.message.text === "/start" ){
    /*** proses di sini jika command /start ***/
  } else {
    /*** proses di sini untuk command lainnya ***/
  }
  
} else {
  /*** proses di sini jika bukan command bot ***/
}

Case Sensitive

Platform javascript sangat memperhatikan besar kecil huruf, dalam kasus tertentu user dimungkinkan untuk mengetik sendiri command /start yang terkadang typo dengan huruf besar, Snake case, ataupun Camel case. Solusinya gunakan fungsi toLowerCase() untuk memaksa Apps Script mengubah huruf kecil lebih dulu sebelum diproses:

if ( data.message.text.toLowerCase() === "/start" )

Mengirim Pesan Respon Balik

Sebagai respon atas dikirimnya command /start, kita akan coba merespon balik dengan mengirimkan pesan yang berisi teks selamat datang"Halo... [user] selamat datang di bot pertamaku":


  if ( data.message.text.toLowerCase() === "/start" ){
    
    var dataPesan = {
      method: "post",
      payload: {
        method: "sendMessage",
        chat_id: String( chatid ),
        text:
          "Halo... " 
          + data.message.from.first_name 
          + "\n" 
          + "selamat datang di bot pertamaku."
      }
    };
  
    UrlFetchApp.fetch(telegramAPIURL + "/", dataPesan);
  
  }

FINAL SCRIPT

Final Script dapat diunduh di repository dan hasil respon Telegram tampak seperti berikut ini. Selanjutnya anda bisa lebih jauh berimprovisasi dengannya:

Berlanjut artikel PART 2 meracik script untuk command bot custom selain /startSiLiKiDi
Dapatkan skrip semua materi di repository

Dukung donasi agar tutorial ini tetap operasional:
Trakteer Saya SiLiKiDi

Komentar

Postingan populer dari blog ini

Kirim Pesan Ke Telegram Dengan Apps Script

Dengan koneksi webhook anda bisa mulai ujicoba mengirim pesan pertama ke Telegram dari Google Apps Script.

Input User Dengan ForceReply Di Telegram

Metode ForceReply memungkinkan Bot memaksa user untuk memberikan input sebelum melanjutkan proses, dengan demikian anda dapat menggelar Step-by-Step formulir di Telegram.