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);}}