Telegram Welcome Bot Hapus Pesan Lama (GAS II-10)

5 menit saja |

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.

"Halooo Semuaaah"

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.

"Yuk Belajar"

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 User Join

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!

"Yuk Belajar"

Video

Silakan disimak di video nya jika bingung atau ingin lebih jelas dalam prosesnya.

Referensi

Penutup

"Yuk Belajar"

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.