Meracik script untuk custom command bot selain default command /start yang telah diracik di artikel PART 1.
Sebelumnya pada artikel Membuat Menu Command Bot Telegram telah dipraktikan cara membuat menu custom command yang terdiri dari:
- /start - Memulai bot
- /about - Tentang bot ini
- /channel - Official channel informasi
- /web - Official website
- /facebook - Official facebook page
- /twitter - Official twitter
MESSAGE TEXT SEBAGAI ACUAN
Telah disebutkan sebelumnya untuk mengidentifikasi apakah respon JSON yang dikirimkan Telegram mengandung command bot atau hanya teks biasa ada pada properti message.text dan entities[0].type.
Kita akan bereksperimen tanpa melibatkan properti entities[0].type yaitu cukup dengan memindai nilai dari properti message.text saja.
Tantangannya message.text merupakan input dari user yang punya kemungkinan terdapat distorsi karakter seperti tambahan spasi kosong atau typo karakter lainSiLiKiDi
MEMFILTER DENGAN REGEX
Javascript menyediakan fungsi test()
yang dengan filter regular expression ini kita akan mengetahui keberadaaan command dalam message.text
.
Command bot Telegram punya ciri khas selalu diawali dengan / dan berbekal ciri ini dapatlah kita filter:
/*** Periksa apakah pesan diawali dengan garis miring? ***/
if ( /^\//.test(messageText) ) {
/**************************************************
Bila ya maka isolasi command dari distorsi karakter
Dengan memotong pesan berdasarkan spasi kosong
Tampung ke dalam variabel messageSPLIT
***************************************************/
var messageSplit = messageText.split(" ");
/****************************************************
Fungsi split() menghasilkan bentuk array
Karena berada di awal maka dipilih elemen pertama [0]
Lalu pindai command apakah yang ada di dalamnya
*****************************************************/
if ( messageSplit[0] === "/start" ) {
/*** proses di sini ***/
} else if ( messageSplit[0] === "/about" ) {
} /*** dan seterusnya... ***/
}
RESPON BALIK BERUPA LINK
Telegram API menyediakan banyak metode pengiriman beragam konten. Link website atau apapun akan diperlakukan sebagai pesan teks biasa jadi anda bisa menggunakan metode sendMessage untuk merespon balik berupa link web.
Pada artikel-artikel sebelumnya metode sendMessage dibuatkan fungsi custom tersendiri kirimPesan() karena penggunaannya yang berulang-ulang.
if ( messageSplit[0] === "/start" ) {
kirimPesan(
chatid,
"Halo... "
+ data.message.from.first_name
+ "\n"
+ "selamat datang di bot pertamaku."
);
} else if ( messageSplit[0] === "/about" ) {
kirimPesan( chatid, "BOT PERTAMAKU dibuat oleh SiLiKiDi" );
} else if ( messageSplit[0] === "/channel" ) {
kirimPesan( chatid, "Official Channel: @rscibabat" );
} else if ( messageSplit[0] === "/web" ) {
kirimPesan( chatid, "telegram-bot-script.blogspot.com" );
} else if ( messageSplit[0] === "/facebook" ) {
kirimPesan( chatid, "Facebook Page: fb.me/telegrambotscript" );
} else if ( messageSplit[0] === "/twitter" ) {
kirimPesan( chatid, "Twitter: twitter.com/silikidimi" );
}
PERIKSA KOMPATIBILITAS LINK
Link web tidak mentolerir spasi kosong atau karakter spesial di luar standar URL encode. Bila dalam link anda terdapat spasi kosong akan dikonversi menjadi %20. Masalahnya tidak semua sistem aplikasi secara otomatis mengkonversi yang berujung pada error.
Gunakan URL encoder online untuk memastikan link anda sesuai standarSiLiKiDi
FINAL SCRIPT
Final Script dari materi ini dapat diunduh di repository:
HASIL DI TELEGRAM
Berikut hasil eksekusi di Bot Telegram ketika user menggunakan menu command:
Dapatkan skrip semua materi di repository
Dukung donasi agar tutorial ini tetap operasional:
SiLiKiDi
Komentar
Posting Komentar