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:
SiLiKiDi
Komentar
Posting Komentar