bot Welcome

bot Welcome

ƈֆƈяɨקȶ

🦾 nguLik Welcome bot

@nguLikWelcomebOt
//---- EVENT NEW USER dan SAY WELCOME BOT
// ------ deteksi user join --
  if (msg.new_chat_members) {

// --- Welcome Bot v2
// variable baru untuk new chat member, ambil yang pertama saja
   var newUser = msg.new_chat_members[0];
   var namaUser = newUser.first_name;
   if (newUser.last_name)
    namaUser += " " + newUser.last_name;
   namaUser = tg.util.clearHTML(namaUser);
   var username = newUser.username ? '@'+newUser.username : '';
   var idUser = newUser.id;
// -- mention
   var umention = "<a href='tg://user?id="+idUser+"'>"+namaUser+"</a>"; // html
   var namaGroup = msg.chat.title;
   namaGroup = tg.util.clearHTML(namaGroup);
   var idGroup = msg.chat.id;


// -- LOGs jOin
     if ( tg.util.punyaAkses(joinLogs, msg.chat.id) ){
     var pesan = "╭───「➕ #JOIN_USER"
     pesan += "\n│"
     pesan += "\n├ • 🆔 <code>"+idUser+"</code>"
     pesan += "\n├ • Name: "+umention+""
     pesan += "\n├ • username: "+username+""
     pesan += "\n│"
     pesan += "\n╰── • group: <b>"+namaGrup+"</b>"
     pesan += "\n\n[#id"+idUser+"] [<code>"+idGrup+"</code>]"
     tg.sendMessage(-1001442489370, pesan, 'html');}


// 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, umention) // mengubah template nama, name
   .replace(/{username}/ig, username) // mengubah template username
   .replace(/{iduser}/ig, idUser) // mengubah template id user
   .replace(/{gro?up}/ig, namaGroup) // mengubah template title group
   .replace(/{idgro?up}/ig, idGroup) // 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){
       try{
         tg.deleteMessage(msg.chat.id, parseInt(idWelcome));
       }catch(error){
       }
     }

   if (keyboard) {
    keyboard = JSON.parse(keyboard);
    var nilaiBalik = tg.sendMsgKeyboardInline(msg, teks, keyboard, 'HTML', false, msg.message_id);
   } else {
    var nilaiBalik = tg.sendMsg(msg, teks, 'HTML')
    }
   idWelcome = nilaiBalik.result.message_id;
   user.setValue('idWelcome'+msg.chat.id, idWelcome);
   return true;

// -- batas deteksi join
  }


// --- Welcome Bot v2 - Template dan Button Inline
// trigger reply set Welcome
   var pola = /^[!\/]swelkom$/i;
   if ( cocok = pola.exec(msg.text) ){

// periksa dulu user ID nya, jika tidak ada akses tolak saja.
    if (! tg.util.punyaAkses(adminBot, msg.from.id) )
     return tg.sendMsg(msg, '🚫 Kamu tidak punya akses.', false, false, msg.message_id);
// periksa ada reply atau tidak
    if (!msg.reply_to_message)
     return tg.sendMsg(msg, '🚫 Harus reply pesan', false, false, msg.message_id);
// sederhanakan variable reply_to_message
    var msgr = msg.reply_to_message;
// periksa lagi, yang di reply text atau bukan
    if (!msgr.text)
     return tg.sendMsg(msg, '🚫 Harus tipe teks', false, false, msg.message_id);
// set up message yang akan di olah
    var pesanWelcome = msgr.text;
// uji dulu pesan yang diset bener atau enggak dalam format html :
    try {
// kirim pesan berhasil disimpan
     tg.sendMsg(msg, ''+pesanWelcome, 'HTML', false, msg.reply_to_message.message_id);
// simpan pesanWelcome
     user.setValue('welcomeMessage'+msg.chat.id, pesanWelcome);
    } catch (e) {
// jika gagal, keluarkan pesan error
     var pesanError = e.message;
// tangkep pesan error yang dari Telegram saja
     if (error = /({(?:.*)})/gmi.exec(pesanError) )
     pesanError = error[1];
// kalau Error gak usah di format HTML, buat keperluan debugging
     tg.sendMsg(msg, '⛔️ ERROR: '+pesanError, false, false, msg.message_id);
    }
// selesai kecocokan pola, kembalikan
    return;
   }


// trigger untuk button Welcome
// level: advance

/* syntax: !buttonWelcome jmlKolomButton SYNTAX_URL
  
  jmlKolomButton banyaknya kolom dalam 1 baris: button1, button2
  SYNTAX_URL format markdown [title](URL)
  
  URL protocol yang benar (http/https).
  
  SYNTAX_URL dipisahkan apa aja, boleh spasi, ENTER, koma, dlsb
*/
   var pola = /^[!\/]tWelkom (\d+)/i;
   if ( cocok = pola.exec(msg.text) ){
// periksa dulu user ID nya, jika tidak ada akses tolak saja.
    if (! tg.util.punyaAkses(adminBot, msg.from.id) )
     return tg.sendMsg(msg, '🚫 Kamu tidak punya akses.', false, false, msg.message_id);
// periksa ada reply atau tidak, keluarkan pesan error
    if (!msg.reply_to_message)
     return tg.sendMsg(msg, '🚫 Harus reply pesan.', false, false, msg.message_id);
// sederhanakan variable reply_to_message
    var msgr = msg.reply_to_message;
// periksa lagi, yang di reply text atau bukan
    if (!msgr.text)
     return tg.sendMsg(msg, '🚫 Harus bertipe text.', false, false, msg.message_id);
// set up message yang akan di olah
    var pesanWelcome = msgr.text;
// sekarang kita parsing button nya
// jangan kebalik ya, yang diparsing adalah msg biasa, bukan msgr (messsage reply)
    var pesanButton = msg.text;
// sanitasi: ubah ke Integer
    var jmlKolomButton = parseInt(cocok[1]);
// periksa berapa nilainya, jika 0 batalin aja
    if (jmlKolomButton<1)
    return tg.sendMsg(msg, '🚫 Minimal 1', false, false, msg.message_id); 
// kasih batas maksimal aja juga, terserah berapa sepantasnya
// di sini aku kasih 5 aja
    var jmlMaxKolomButton = 5;
    if (jmlKolomButton>jmlMaxKolomButton) 
     return tg.sendMsg(msg, '🚫 Maksimal '+jmlMaxKolomButton, false, false, msg.message_id); 
// proses pembuatan / penyusunan button
// dipahami sendiri ya, ini rumit bagi yang baru memulai. Makanya level nya advance
// pola button
    var polaButton = /\[(?<judul>[^\]]+)\]\((?<url>https?:\/\/[^\)]+)\)/gmi;
// buat variable pendukung
    var keyboard= []
    var baris = [];
    var nBaris = 0;
    var kolom = []
    var nKolom = 0;
// proses penyusunan
    while (cocokButton = polaButton.exec(pesanButton) ) {
// buat 1 button di variable button
     tombol = tg.button.url(cocokButton.groups.judul, cocokButton.groups.url);
// susun dalam baris
     baris.push(tombol);
// tambah index button kolom
     nKolom++;
// jika index button kolom sesuai jmlKolomButton
     if (nKolom == jmlKolomButton) {
// masukkan ke dalam susunan keyboard
      keyboard[[nBaris][0]] = baris;
// tambahkan index baris / row keyboardnya
      nBaris++;
// reset index kolom dan baris
      nKolom = 0;
      baris = [];   
     }
    }
// sisa baris yang tidak diakomodir, masukkan di baris paling akhir
    if (nKolom>0)
     keyboard[[nBaris][0]] = baris; 
// keyboard udah jadi, tinggal di coba send
// uji dulu pesan yang diset bener atau enggak dalam format html
// verifikasi text dan keyboad
    try {
// kirim pesan berhasil disimpan
// syntax lib 2 API: sendMsgKeyboardInline(msg, text, keyboard, parse_mode, disable_web_page_preview, reply_to_message_id)
     tg.sendMsgKeyboardInline(msg, pesanWelcome, keyboard, 'HTML', false, msg.reply_to_message.message_id);
// simpan pesanWelcome
     user.setValue('welcomeMessage'+msg.chat.id, pesanWelcome);
// simpan buttonnya juga, bentuk string
     user.setValue('welcomeMessageButton'+msg.chat.id, JSON.stringify(keyboard));
    } catch (e) {
// jika gagal, keluarkan pesan error
     var pesanError = e.message;
// tangkep pesan error yang dari Telegram saja
     if (error = /({(?:.*)})/gmi.exec(pesanError) )
     pesanError = error[1];
// kalau Error gak usah di format HTML, buat keperluan debugging
     tg.sendMsg(msg, '⛔️ ERROR: '+pesanError, false, false, msg.message_id);
    }
// selesai kecocokan pola, kembalikan
    return;
   }


// --- trigger cek Welcome
     if ( /^!cWelcome$/i.exec(msg.text) ){if ( tg.util.punyaAkses(adminBot, msg.from.id) ){

       var pesanWelcome = user.getValue('welcomeMessage'+msg.chat.id);
       var tombolWelcome = user.getValue('welcomeMessageButton'+msg.chat.id);

// jika kosong variablenya
       if (!pesanWelcome) return tg.sendMsg(msg, '🚫 Tidak ada welcome.', false, false, msg.message_id);

// kirim pesan welcome:
       var pesan = "💬 pesan <b>WELCOME</b> ::\n\n"+pesanWelcome+""
       pesan += "\n\n⏺ <b>inline keyboard</b> ::\n<code>"+tombolWelcome+"</code>"
       if (tombolWelcome) {
         tombolWelcome = JSON.parse(tombolWelcome);
         return tg.sendMsgKeyboardInline(msg, pesan, tombolWelcome, 'HTML', false, msg.message_id);}}}


// --- trigger Welcome OFF
     if ( /^!xWelcome$/i.exec(msg.text) ){if ( tg.util.punyaAkses(adminBot, msg.from.id) ){

// non-aktif pesan Welcome
       user.delete('welcomeMessage'+msg.chat.id);
       user.delete('welcomeMessageButton'+msg.chat.id);
       user.delete('idWelcome'+msg.chat.id);
// -- kirim Laporan
       return tg.sendMsg(msg, '‼️welcome <i>OFF</i>', 'html', false, msg.message_id);}}

Report Page