Telegram Welcome Bot Hapus Pesan Lama (GAS II-10)
Sebelum kita beralih topik lain, mumpung masih di coding gak jauh dari welcome. Kita sisipkan materi welcome yang dulu banyak di request. Yakni, menghapus pesan welcome biar tidak bertumpuk.
Pendahuluan
Masih hot dengan materi “super panjang” welcome bot lib v2, kita sisipkan materi yang agak ringannya aja.
Memang welcome bot itu sesuatu yang simple, namun menjadi komplek karena seiring kebutuhan dan banyaknya variasi pengguna. Materi di awal (Welcome Bot Lib V2) saja, itu masih belum ada apa-apanya, bila dibandingkan dengan engine GeDebug yang lebih komplek memasukkan multimedia (welcome foto, video, dan lainnya).
Maka, bagi yang memang benar-benar membutuhkan welcome yang komplek agar dilanjutkan sendiri ya. Prinsipnya tidak jauh berbeda dari sebelumnya. Jika mengalami kesulitan, ya di-diskusi-kan saja di grup @botIndonesia.
Sedangkan pada materi kali ini, kita sisipkan yang ringan-ringan saja biar gak tambah pusing.
Namun, pastikan sudah mempelajari dan mempraktekkan materi sebelumnya ya.
Pra-Materi
Sudah praktek materi GAS2-09: Welcome Bot Lib V2.
Tujuan
Inti sari dari materi ini, adalah menghapus pesan welcome yang lama jika ada user baru yang masuk. Sehingga tidak terjadi penumpukkan pesan welcome.
Konsekuensinya, hanya user paling akhir saja yang terlihat ada pesan welcome nya.
Jadi trigernya adalah: tetep user join ya.
Level
Level materi ini adalah: beginner - middle
Tingkat kesulitan materi ini sebenarnya mudah atau level beginner. Terutama jika sudah melewati bahasan materi sebelumnya Welcome Bot Lib V2.
Preview
OK, Let’s Go!
Langsung buka saja codingan sebelumnya ya.
User Join
Kita modif sedikit pada EVENT USER JOIN CHAT.
Ini codingan sebelumnya:
// EVENT NEW USER dan SAY WELCOME BOT
if (msg.new_chat_members) {
// return tg.sendMsg(msg, tg.util.outToJSON(msg));
// variable baru untuk new chat member, ambil yang pertama saja
var newUser = msg.new_chat_members[0];
// mendefinisikan {nama}
var namaUser = newUser.first_name;
// jika punya last name, kita tambahkan juga
if (newUser.last_name)
namaUser += " " + newUser.last_name;
// bersihkan nama dari tag HTML
namaUser = tg.util.clearHTML(namaUser);
// mendifiniksan username
var username = newUser.username ? '@'+newUser.username : '';
// mendifinisikan iduser
var idUser = newUser.id;
// mendefinisikan grup title
var namaGrup = msg.chat.title;
// bersihkan nama grup dari tag HTML
namaGrup = tg.util.clearHTML(namaGrup);
// mendefinisikan id grup
var idGrup = msg.chat.id;
// Merangkai ucapan selamatnya digabung variable ke pesanWelcome
// ambil dulu pesan di database User
var pesanWelcome = user.getValue('welcomeMessage'+msg.chat.id);
// jika tidak ada pesan welcome, ya udah balik aja
if (!pesanWelcome) return false;
// ambil button di database User
var keyboard = user.getValue('welcomeMessageButton'+msg.chat.id);
// masukkan variable-variablenya
var teks = pesanWelcome
.replace(/{nam[ae]}/ig, namaUser) // mengubah template nama, name
.replace(/{username}/ig, username) // mengubah template username
.replace(/{iduser}/ig, idUser) // mengubah template id user
.replace(/{gro?up}/ig, namaGrup) // mengubah template title group
.replace(/{idgro?up}/ig, idGrup) // mengubah template id group
// kirim pesan welcome
// jika terdapat keyboard
if (keyboard) {
// parsing ke format yang semestinya
keyboard = JSON.parse(keyboard);
// kirim dalam inline button
return tg.sendMsgKeyboardInline(msg, teks, keyboard, 'HTML', false, msg.message_id);
}
// jika jenisnya biasa
return tg.sendMsg(msg, teks, 'HTML')
}
Nah, yang perlu kita lakukan adalah merubah / memodif sebelum return
pesan terkirim.
Perlu kita catat ID yang terkirim, kemudian di simpan.
Namun, biar gak ketimpa.. hapus dulu pesan lama yang sebelumnya (jika ada) disimpan pada mini database user service.
Modif sebelum // kirim pesan welcome
untuk pengecekkan ID welcome, sekaligus sesuaikan kirim pesan welcomenya:
// setelah memasukkan variable / template
// ambil ID welcome lama
var idWelcome = user.getValue('idWelcome'+msg.chat.id);
// jika ada, hapus pesan welcome lama tersebut
if (idWelcome)
tg.deleteMessage(msg.chat.id, parseInt(idWelcome));
// kirim pesan welcome
// jika terdapat keyboard
if (keyboard) {
// parsing ke format yang semestinya
keyboard = JSON.parse(keyboard);
// kirim dalam inline button dan ambil nilai baliknya
var nilaiBalik = tg.sendMsgKeyboardInline(msg, teks, keyboard, 'HTML', false, msg.message_id);
} else {
// jika jenisnya biasa
var nilaiBalik = tg.sendMsg(msg, teks, 'HTML')
}
// ambil ID nya, kemudian simpan
idWelcome = nilaiBalik.result.message_id;
user.setValue('idWelcome'+msg.chat.id, idWelcome);
return true;
Sehingga, script akhirnya menjadi:
// EVENT NEW USER dan SAY WELCOME BOT
if (msg.new_chat_members) {
// return tg.sendMsg(msg, tg.util.outToJSON(msg));
// variable baru untuk new chat member, ambil yang pertama saja
var newUser = msg.new_chat_members[0];
// mendefinisikan {nama}
var namaUser = newUser.first_name;
// jika punya last name, kita tambahkan juga
if (newUser.last_name)
namaUser += " " + newUser.last_name;
// bersihkan nama dari tag HTML
namaUser = tg.util.clearHTML(namaUser);
// mendifiniksan username
var username = newUser.username ? '@'+newUser.username : '';
// mendifinisikan iduser
var idUser = newUser.id;
// mendefinisikan grup title
var namaGrup = msg.chat.title;
// bersihkan nama grup dari tag HTML
namaGrup = tg.util.clearHTML(namaGrup);
// mendefinisikan id grup
var idGrup = msg.chat.id;
// Merangkai ucapan selamatnya digabung variable ke pesanWelcome
// ambil dulu pesan di database User
var pesanWelcome = user.getValue('welcomeMessage'+msg.chat.id);
// jika tidak ada pesan welcome, ya udah balik aja
if (!pesanWelcome) return false;
// ambil button di database User
var keyboard = user.getValue('welcomeMessageButton'+msg.chat.id);
// masukkan variable-variablenya
var teks = pesanWelcome
.replace(/{nam[ae]}/ig, namaUser) // mengubah template nama, name
.replace(/{username}/ig, username) // mengubah template username
.replace(/{iduser}/ig, idUser) // mengubah template id user
.replace(/{gro?up}/ig, namaGrup) // mengubah template title group
.replace(/{idgro?up}/ig, idGrup) // mengubah template id group
// setelah memasukkan variable / template
// ambil ID welcome lama
var idWelcome = user.getValue('idWelcome'+msg.chat.id);
// jika ada, hapus pesan welcome lama tersebut
if (idWelcome)
tg.deleteMessage(msg.chat.id, parseInt(idWelcome));
// kirim pesan welcome
// jika terdapat keyboard
if (keyboard) {
// parsing ke format yang semestinya
keyboard = JSON.parse(keyboard);
// kirim dalam inline button dan ambil nilai baliknya
var nilaiBalik = tg.sendMsgKeyboardInline(msg, teks, keyboard, 'HTML', false, msg.message_id);
} else {
// jika jenisnya biasa
var nilaiBalik = tg.sendMsg(msg, teks, 'HTML')
}
// ambil ID nya, kemudian simpan
idWelcome = nilaiBalik.result.message_id;
user.setValue('idWelcome'+msg.chat.id, idWelcome);
return true;
}
Gampang, kan!
Video
Silakan disimak di video nya jika bingung atau ingin lebih jelas dalam prosesnya.
Referensi
- Welcome Bot Lib V2
- Library GAS Telegram Versi 2
- Bot API Telegram
- Materi Helo Bot
- Custom Command dan Regex
- Format Text / Parse Mode
Penutup
Jika ada pertanyaan, saran atau masukkan silakan didiskusikan. Jika ingin live dan biasanya tanggapan juga lebih cepat, sangat disarankan bergabung pada group Telegram @botIndonesia. Semoga bermanfaat.