Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/AzzBot.js
1113 views
1
/**
2
* Create By Yahyaganzz
3
*/
4
5
require('./config')
6
const { BufferJSON, WA_DEFAULT_EPHEMERAL, generateWAMessageFromContent, proto, generateWAMessageContent, generateWAMessage, prepareWAMessageMedia, areJidsSameUser, getContentType } = require('@adiwajshing/baileys')
7
const fs = require('fs')
8
const util = require('util')
9
const chalk = require('chalk')
10
const { exec, spawn, execSync } = require("child_process")
11
const axios = require('axios')
12
const path = require('path')
13
const os = require('os')
14
const hx = require('hxz-api')
15
const xa = require('xfarr-api')
16
const { facebook, facebook2 } = require('./lib/scrapedl.js')
17
const moment = require('moment-timezone')
18
const { JSDOM } = require('jsdom')
19
const Jimp = require('jimp')
20
const speed = require('performance-now')
21
const { performance } = require('perf_hooks')
22
const { Primbon } = require('scrape-primbon')
23
const primbon = new Primbon()
24
const { smsg, formatp, tanggal, formatDate, getTime, isUrl, sleep, clockString, runtime, fetchJson, getBuffer, jsonformat, format, parseMention, getRandom } = require('./lib/myfunc')
25
26
//Apikey
27
let _cmd = JSON.parse(fs.readFileSync('./database/command.json'));
28
let _cmdUser = JSON.parse(fs.readFileSync('./database/commandUser.json'));
29
let setting = JSON.parse(fs.readFileSync('./apikey.json'))
30
31
//limit
32
limitawal = '20'
33
botname = 'Lanox Bot Assisten'
34
wm = '© Lanox Bot Assisten'
35
36
// read database
37
let tebaklagu = db.data.game.tebaklagu = []
38
let _family100 = db.data.game.family100 = []
39
let kuismath = db.data.game.math = []
40
let tebakgambar = db.data.game.tebakgambar = []
41
let tebakkata = db.data.game.tebakkata = []
42
let caklontong = db.data.game.lontong = []
43
let caklontong_desk = db.data.game.lontong_desk = []
44
let tebakkalimat = db.data.game.kalimat = []
45
let tebaklirik = db.data.game.lirik = []
46
let tebaktebakan = db.data.game.tebakan = []
47
let vote = db.data.others.vote = []
48
49
module.exports = zets = async (zets, m, chatUpdate, store) => {
50
try {
51
var body = (m.mtype === 'conversation') ? m.message.conversation : (m.mtype == 'imageMessage') ? m.message.imageMessage.caption : (m.mtype == 'videoMessage') ? m.message.videoMessage.caption : (m.mtype == 'extendedTextMessage') ? m.message.extendedTextMessage.text : (m.mtype == 'buttonsResponseMessage') ? m.message.buttonsResponseMessage.selectedButtonId : (m.mtype == 'listResponseMessage') ? m.message.listResponseMessage.singleSelectReply.selectedRowId : (m.mtype == 'templateButtonReplyMessage') ? m.message.templateButtonReplyMessage.selectedId : (m.mtype === 'messageContextInfo') ? (m.message.buttonsResponseMessage?.selectedButtonId || m.message.listResponseMessage?.singleSelectReply.selectedRowId || m.text) : ''
52
var budy = (typeof m.text == 'string' ? m.text : '')
53
var prefix = prefa ? /^[°•π÷×¶∆£¢€¥®™+✓_=|~!?@#$%^&.©^]/gi.test(body) ? body.match(/^[°•π÷×¶∆£¢€¥®™+✓_=|~!?@#$%^&.©^]/gi)[0] : "" : prefa ?? global.prefix
54
const isCmd = body.startsWith(prefix)
55
const command = body.replace(prefix, '').trim().split(/ +/).shift().toLowerCase()
56
const args = body.trim().split(/ +/).slice(1)
57
const pushname = m.pushName || "No Name"
58
const botNumber = await zets.decodeJid(zets.user.id)
59
const isCreator = [botNumber, ...global.owner].map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender)
60
const itsMe = m.sender == botNumber ? true : false
61
const text = q = args.join(" ")
62
const sender = m.sender
63
const quoted = m.quoted ? m.quoted : m
64
const mime = (quoted.msg || quoted).mimetype || ''
65
const isMedia = /image|video|sticker|audio/.test(mime)
66
67
// Group
68
const groupMetadata = m.isGroup ? await zets.groupMetadata(m.chat).catch(e => {}) : ''
69
const groupName = m.isGroup ? groupMetadata.subject : ''
70
const participants = m.isGroup ? await groupMetadata.participants : ''
71
const groupAdmins = m.isGroup ? await participants.filter(v => v.admin !== null).map(v => v.id) : ''
72
const groupOwner = m.isGroup ? groupMetadata.owner : ''
73
const isBotAdmins = m.isGroup ? groupAdmins.includes(botNumber) : false
74
const isAdmins = m.isGroup ? groupAdmins.includes(m.sender) : false
75
const isPremium = isCreator || global.premium.map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender) || false
76
77
78
try {
79
let isNumber = x => typeof x === 'number' && !isNaN(x)
80
let limitUser = isPremium ? global.limitawal.premium : global.limitawal.free
81
let user = global.db.data.users[m.sender]
82
if (typeof user !== 'object') global.db.data.users[m.sender] = {}
83
if (user) {
84
if (!isNumber(user.afkTime)) user.afkTime = -1
85
if (!('afkReason' in user)) user.afkReason = ''
86
if (!isNumber(user.limit)) user.limit = limitUser
87
} else global.db.data.users[m.sender] = {
88
afkTime: -1,
89
afkReason: '',
90
limit: limitUser,
91
}
92
93
let chats = global.db.data.chats[m.chat]
94
if (typeof chats !== 'object') global.db.data.chats[m.chat] = {}
95
if (chats) {
96
if (!('mute' in chats)) chats.mute = false
97
if (!('antilink' in chats)) chats.antilink = false
98
} else global.db.data.chats[m.chat] = {
99
mute: false,
100
antilink: false,
101
}
102
103
let setting = global.db.data.settings[botNumber]
104
if (typeof setting !== 'object') global.db.data.settings[botNumber] = {}
105
if (setting) {
106
if (!isNumber(setting.status)) setting.status = 0
107
if (!('autobio' in setting)) setting.autobio = false
108
if (!('templateImage' in setting)) setting.templateImage = true
109
if (!('templateVideo' in setting)) setting.templateVideo = false
110
if (!('templateGif' in setting)) setting.templateGif = false
111
if (!('templateMsg' in setting)) setting.templateMsg = false
112
} else global.db.data.settings[botNumber] = {
113
status: 0,
114
autobio: false,
115
templateImage: true,
116
templateVideo: false,
117
templateGif: false,
118
templateMsg: false,
119
}
120
121
} catch (err) {
122
console.error(err)
123
}
124
125
//itung mundor fax
126
const hariRaya = new Date('6 1, 2022 00:00:00')
127
const sekarang = new Date().getTime();
128
const Selisih = hariRaya - sekarang;
129
const jhari = Math.floor( Selisih / (1000 * 60 * 60 * 24));
130
const jjam = Math.floor( Selisih % (1000 * 60 * 60 * 24) / (1000 * 60 * 60))
131
const mmmenit = Math.floor( Selisih % (1000 * 60 * 60) / (1000 * 60));
132
const ddetik = Math.floor( Selisih % (1000 * 60) / 1000);
133
const ultah = `${jhari}Hari ${jjam}Jam ${mmmenit}Menit ${ddetik}Detik`
134
135
async function hitungmundur(bulan, tanggal) { //By Fax Ngk Usah Di Ubah
136
let from = new Date(`${bulan} ${tanggal}, 2022 00:00:00`).getTime();
137
let now = Date.now();
138
let distance = from - now;
139
let days = Math.floor(distance / (1000 * 60 * 60 * 24));
140
let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
141
let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
142
let seconds = Math.floor((distance % (1000 * 60)) / 1000);
143
return days + "Hari " + hours + "Jam " + minutes + "Menit " + seconds + "Detik"
144
}
145
146
// Public & Self
147
if (!zets.public) {
148
if (!m.key.fromMe) return
149
}
150
151
// Push Message To Console && Auto Read
152
if (m.message) {
153
zets.readMessages([m.key])
154
console.log(chalk.black(chalk.bgWhite('[ PESAN ]')), chalk.black(chalk.bgGreen(new Date)), chalk.black(chalk.bgBlue(budy || m.mtype)) + '\n' + chalk.magenta('=> Dari'), chalk.green(pushname), chalk.yellow(m.sender) + '\n' + chalk.blueBright('=> Di'), chalk.green(m.isGroup ? pushname : 'Private Chat', m.chat))
155
}
156
157
const reSize = async(buffer, ukur1, ukur2) => {
158
return new Promise(async(resolve, reject) => {
159
var baper = await Jimp.read(buffer);
160
var ab = await baper.resize(ukur1, ukur2).getBufferAsync(Jimp.MIME_JPEG)
161
resolve(ab)
162
})
163
}
164
// write database every 1 minute
165
setInterval(() => {
166
fs.writeFileSync('./src/database.json', JSON.stringify(global.db, null, 2))
167
}, 60 * 1000)
168
169
async function addCountCmd(nama, sender, _db) {
170
addCountCmdUser(nama, sender, _cmdUser)
171
var posi = null
172
Object.keys(_db).forEach((i) => {
173
if (_db[i].nama === nama) {
174
posi = i
175
}
176
})
177
if (posi === null) {
178
_db.push({nama: nama, count: 1})
179
fs.writeFileSync('./database/command.json',JSON.stringify(_db, null, 2));
180
} else {
181
_db[posi].count += 1
182
fs.writeFileSync('./database/command.json',JSON.stringify(_db, null, 2));
183
}
184
}
185
186
async function addCountCmdUser(nama, sender, u) {
187
var posi = null
188
var pos = null
189
Object.keys(u).forEach((i) => {
190
if (u[i].jid === sender) {
191
posi = i
192
}
193
})
194
if (posi === null) {
195
u.push({jid: sender, db: [{nama: nama, count: 0}]})
196
fs.writeFileSync('./database/commandUser.json', JSON.stringify(u, null, 2));
197
Object.keys(u).forEach((i) => {
198
if (u[i].jid === sender) {
199
posi = i
200
}
201
})
202
}
203
if (posi !== null) {
204
Object.keys(u[posi].db).forEach((i) => {
205
if (u[posi].db[i].nama === nama) {
206
pos = i
207
}
208
})
209
if (pos === null) {
210
u[posi].db.push({nama: nama, count: 1})
211
fs.writeFileSync('./database/commandUser.json', JSON.stringify(u, null, 2));
212
} else {
213
u[posi].db[pos].count += 1
214
fs.writeFileSync('./database/commandUser.json', JSON.stringify(u, null, 2));
215
}
216
}
217
}
218
219
async function getPosiCmdUser(sender, _db) {
220
var posi = null
221
Object.keys(_db).forEach((i) => {
222
if (_db[i].jid === sender) {
223
posi = i
224
}
225
})
226
return posi
227
}
228
229
// reset limit every 12 hours
230
let cron = require('node-cron')
231
cron.schedule('00 12 * * *', () => {
232
let user = Object.keys(global.db.data.users)
233
let limitUser = isPremium ? global.limitawal.premium : global.limitawal.free
234
for (let jid of user) global.db.data.users[jid].limit = limitUser
235
console.log('Reseted Limit')
236
}, {
237
scheduled: true,
238
timezone: "Asia/Jakarta"
239
})
240
241
// auto set bio
242
if (db.data.settings[botNumber].autobio) {
243
let setting = global.db.data.settings[botNumber]
244
if (new Date() * 1 - setting.status > 1000) {
245
let uptime = await runtime(process.uptime())
246
await zets.setStatus(`${zets.user.name} | Runtime : ${runtime(uptime)}`)
247
setting.status = new Date() * 1
248
}
249
}
250
251
const listmsg = (from, title, desc, list) => { // ngeread nya pake rowsId, jadi command nya ga keliatan
252
let po = zets.prepareMessageFromContent(from, {"listMessage": {"title": title,"description": desc,"buttonText": "Pilih Disini","footerText": "𝐻𝑒𝑟𝑚𝑎𝑛 𝐶ℎ𝑎𝑛𝑒𝑙᭄𓅂","listType": "SINGLE_SELECT","sections": list, quoted:mek}}, {})
253
return zets.relayWAMessage(po, {waitForAck: true, quoted:mek})
254
}
255
256
// Anti Link
257
if (db.data.chats[m.chat].antilink) {
258
if (budy.match(`chat.whatsapp.com`)) {
259
m.reply(`「 ANTI LINK 」\n\nKamu terdeteksi mengirim link group, maaf kamu akan di kick !`)
260
if (!isBotAdmins) return m.reply(`Ehh bot gak admin T_T`)
261
let gclink = (`https://chat.whatsapp.com/`+await zets.groupInviteCode(m.chat))
262
let isLinkThisGc = new RegExp(gclink, 'i')
263
let isgclink = isLinkThisGc.test(m.text)
264
if (isgclink) return m.reply(`Ehh maaf gak jadi, karena kamu ngirim link group ini`)
265
if (isAdmins) return m.reply(`Ehh maaf kamu admin`)
266
if (isCreator) return m.reply(`Ehh maaf kamu owner bot ku`)
267
zets.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
268
}
269
}
270
271
// Mute Chat
272
if (db.data.chats[m.chat].mute && !isAdmins && !isCreator) {
273
return
274
}
275
276
// Respon Cmd with media
277
if (isMedia && m.msg.fileSha256 && (m.msg.fileSha256.toString('base64') in global.db.data.sticker)) {
278
let hash = global.db.data.sticker[m.msg.fileSha256.toString('base64')]
279
let { text, mentionedJid } = hash
280
let messages = await generateWAMessage(m.chat, { text: text, mentions: mentionedJid }, {
281
userJid: zets.user.id,
282
quoted: m.quoted && m.quoted.fakeObj
283
})
284
messages.key.fromMe = areJidsSameUser(m.sender, zets.user.id)
285
messages.key.id = m.key.id
286
messages.pushName = m.pushName
287
if (m.isGroup) messages.participant = m.sender
288
let msg = {
289
...chatUpdate,
290
messages: [proto.WebMessageInfo.fromObject(messages)],
291
type: 'append'
292
}
293
zets.ev.emit('messages.upsert', msg)
294
}
295
296
if (('family100'+m.chat in _family100) && isCmd) {
297
kuis = true
298
let room = _family100['family100'+m.chat]
299
let teks = budy.toLowerCase().replace(/[^\w\s\-]+/, '')
300
let isSurender = /^((me)?nyerah|surr?ender)$/i.test(m.text)
301
if (!isSurender) {
302
let index = room.jawaban.findIndex(v => v.toLowerCase().replace(/[^\w\s\-]+/, '') === teks)
303
if (room.terjawab[index]) return !0
304
room.terjawab[index] = m.sender
305
}
306
let isWin = room.terjawab.length === room.terjawab.filter(v => v).length
307
let caption = `
308
Jawablah Pertanyaan Berikut :\n${room.soal}\n\n\nTerdapat ${room.jawaban.length} Jawaban ${room.jawaban.find(v => v.includes(' ')) ? `(beberapa Jawaban Terdapat Spasi)` : ''}
309
${isWin ? `Semua Jawaban Terjawab` : isSurender ? 'Menyerah!' : ''}
310
${Array.from(room.jawaban, (jawaban, index) => {
311
return isSurender || room.terjawab[index] ? `(${index + 1}) ${jawaban} ${room.terjawab[index] ? '@' + room.terjawab[index].split('@')[0] : ''}`.trim() : false
312
}).filter(v => v).join('\n')}
313
${isSurender ? '' : `Perfect Player`}`.trim()
314
zets.sendText(m.chat, caption, m, { contextInfo: { mentionedJid: parseMention(caption) }}).then(mes => { return _family100['family100'+m.chat].pesan = mesg }).catch(_ => _)
315
if (isWin || isSurender) delete _family100['family100'+m.chat]
316
}
317
318
if (tebaklagu.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
319
kuis = true
320
jawaban = tebaklagu[m.sender.split('@')[0]]
321
if (budy.toLowerCase() == jawaban) {
322
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak lagu', buttonText: { displayText: 'Tebak Lagu' }, type: 1 }], `🎮 Tebak Lagu 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
323
delete tebaklagu[m.sender.split('@')[0]]
324
} else m.reply('*Jawaban Salah!*')
325
}
326
327
if (kuismath.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
328
kuis = true
329
jawaban = kuismath[m.sender.split('@')[0]]
330
if (budy.toLowerCase() == jawaban) {
331
await m.reply(`🎮 Kuis Matematika 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? kirim ${prefix}math mode`)
332
delete kuismath[m.sender.split('@')[0]]
333
} else m.reply('*Jawaban Salah!*')
334
}
335
336
if (tebakgambar.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
337
kuis = true
338
jawaban = tebakgambar[m.sender.split('@')[0]]
339
if (budy.toLowerCase() == jawaban) {
340
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak gambar', buttonText: { displayText: 'Tebak Gambar' }, type: 1 }], `🎮 Tebak Gambar 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
341
delete tebakgambar[m.sender.split('@')[0]]
342
} else m.reply('*Jawaban Salah!*')
343
}
344
345
if (tebakkata.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
346
kuis = true
347
jawaban = tebakkata[m.sender.split('@')[0]]
348
if (budy.toLowerCase() == jawaban) {
349
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak kata', buttonText: { displayText: 'Tebak Kata' }, type: 1 }], `🎮 Tebak Kata 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
350
delete tebakkata[m.sender.split('@')[0]]
351
} else m.reply('*Jawaban Salah!*')
352
}
353
354
if (caklontong.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
355
kuis = true
356
jawaban = caklontong[m.sender.split('@')[0]]
357
deskripsi = caklontong_desk[m.sender.split('@')[0]]
358
if (budy.toLowerCase() == jawaban) {
359
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak lontong', buttonText: { displayText: 'Tebak Lontong' }, type: 1 }], `🎮 Cak Lontong 🎮\n\nJawaban Benar 🎉\n*${deskripsi}*\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
360
delete caklontong[m.sender.split('@')[0]]
361
delete caklontong_desk[m.sender.split('@')[0]]
362
} else m.reply('*Jawaban Salah!*')
363
}
364
365
if (tebakkalimat.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
366
kuis = true
367
jawaban = tebakkalimat[m.sender.split('@')[0]]
368
if (budy.toLowerCase() == jawaban) {
369
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak kalimat', buttonText: { displayText: 'Tebak Kalimat' }, type: 1 }], `🎮 Tebak Kalimat 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
370
delete tebakkalimat[m.sender.split('@')[0]]
371
} else m.reply('*Jawaban Salah!*')
372
}
373
374
if (tebaklirik.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
375
kuis = true
376
jawaban = tebaklirik[m.sender.split('@')[0]]
377
if (budy.toLowerCase() == jawaban) {
378
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak lirik', buttonText: { displayText: 'Tebak Lirik' }, type: 1 }], `🎮 Tebak Lirik 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
379
delete tebaklirik[m.sender.split('@')[0]]
380
} else m.reply('*Jawaban Salah!*')
381
}
382
383
if (tebaktebakan.hasOwnProperty(m.sender.split('@')[0]) && isCmd) {
384
kuis = true
385
jawaban = tebaktebakan[m.sender.split('@')[0]]
386
if (budy.toLowerCase() == jawaban) {
387
await zets.sendButtonText(m.chat, [{ buttonId: 'tebak tebakan', buttonText: { displayText: 'Tebak Tebakan' }, type: 1 }], `🎮 Tebak Tebakan 🎮\n\nJawaban Benar 🎉\n\nIngin bermain lagi? tekan button dibawah`, zets.user.name, m)
388
delete tebaktebakan[m.sender.split('@')[0]]
389
} else m.reply('*Jawaban Salah!*')
390
}
391
392
//TicTacToe
393
this.game = this.game ? this.game : {}
394
let room = Object.values(this.game).find(room => room.id && room.game && room.state && room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender) && room.state == 'PLAYING')
395
if (room) {
396
let ok
397
let isWin = !1
398
let isTie = !1
399
let isSurrender = !1
400
// m.reply(`[DEBUG]\n${parseInt(m.text)}`)
401
if (!/^([1-9]|(me)?nyerah|surr?ender|off|skip)$/i.test(m.text)) return
402
isSurrender = !/^[1-9]$/.test(m.text)
403
if (m.sender !== room.game.currentTurn) { // nek wayahku
404
if (!isSurrender) return !0
405
}
406
if (!isSurrender && 1 > (ok = room.game.turn(m.sender === room.game.playerO, parseInt(m.text) - 1))) {
407
m.reply({
408
'-3': 'Game telah berakhir',
409
'-2': 'Invalid',
410
'-1': 'Posisi Invalid',
411
0: 'Posisi Invalid',
412
}[ok])
413
return !0
414
}
415
if (m.sender === room.game.winner) isWin = true
416
else if (room.game.board === 511) isTie = true
417
let arr = room.game.render().map(v => {
418
return {
419
X: '❌',
420
O: '⭕',
421
1: '1️⃣',
422
2: '2️⃣',
423
3: '3️⃣',
424
4: '4️⃣',
425
5: '5️⃣',
426
6: '6️⃣',
427
7: '7️⃣',
428
8: '8️⃣',
429
9: '9️⃣',
430
}[v]
431
})
432
if (isSurrender) {
433
room.game._currentTurn = m.sender === room.game.playerX
434
isWin = true
435
}
436
let winner = isSurrender ? room.game.currentTurn : room.game.winner
437
let str = `Room ID: ${room.id}
438
439
${arr.slice(0, 3).join('')}
440
${arr.slice(3, 6).join('')}
441
${arr.slice(6).join('')}
442
443
${isWin ? `@${winner.split('@')[0]} Menang!` : isTie ? `Game berakhir` : `Giliran ${['❌', '⭕'][1 * room.game._currentTurn]} (@${room.game.currentTurn.split('@')[0]})`}
444
❌: @${room.game.playerX.split('@')[0]}
445
⭕: @${room.game.playerO.split('@')[0]}
446
447
Ketik *nyerah* untuk menyerah dan mengakui kekalahan`
448
if ((room.game._currentTurn ^ isSurrender ? room.x : room.o) !== m.chat)
449
room[room.game._currentTurn ^ isSurrender ? 'x' : 'o'] = m.chat
450
if (room.x !== room.o) await zets.sendText(room.x, str, m, { mentions: parseMention(str) } )
451
await zets.sendText(room.o, str, m, { mentions: parseMention(str) } )
452
if (isTie || isWin) {
453
delete this.game[room.id]
454
}
455
}
456
457
//Suit PvP
458
this.suit = this.suit ? this.suit : {}
459
let roof = Object.values(this.suit).find(roof => roof.id && roof.status && [roof.p, roof.p2].includes(m.sender))
460
if (roof) {
461
let win = ''
462
let tie = false
463
if (m.sender == roof.p2 && /^(acc(ept)?|terima|gas|oke?|tolak|gamau|nanti|ga(k.)?bisa|y)/i.test(m.text) && m.isGroup && roof.status == 'wait') {
464
if (/^(tolak|gamau|nanti|n|ga(k.)?bisa)/i.test(m.text)) {
465
zets.sendTextWithMentions(m.chat, `@${roof.p2.split`@`[0]} menolak suit, suit dibatalkan`, m)
466
delete this.suit[roof.id]
467
return !0
468
}
469
roof.status = 'play'
470
roof.asal = m.chat
471
clearTimeout(roof.waktu)
472
//delete roof[roof.id].waktu
473
zets.sendText(m.chat, `Suit telah dikirimkan ke chat
474
475
@${roof.p.split`@`[0]} dan
476
@${roof.p2.split`@`[0]}
477
478
Silahkan pilih suit di chat masing"
479
klik https://wa.me/${botNumber.split`@`[0]}`, m, { mentions: [roof.p, roof.p2] })
480
if (!roof.pilih) zets.sendText(roof.p, `Silahkan pilih \n\nBatu🗿\nKertas📄\nGunting✂️`, m)
481
if (!roof.pilih2) zets.sendText(roof.p2, `Silahkan pilih \n\nBatu🗿\nKertas📄\nGunting✂️`, m)
482
roof.waktu_milih = setTimeout(() => {
483
if (!roof.pilih && !roof.pilih2) zets.sendText(m.chat, `Kedua pemain tidak niat main,\nSuit dibatalkan`)
484
else if (!roof.pilih || !roof.pilih2) {
485
win = !roof.pilih ? roof.p2 : roof.p
486
zets.sendTextWithMentions(m.chat, `@${(roof.pilih ? roof.p2 : roof.p).split`@`[0]} tidak memilih suit, game berakhir`, m)
487
}
488
delete this.suit[roof.id]
489
return !0
490
}, roof.timeout)
491
}
492
let jwb = m.sender == roof.p
493
let jwb2 = m.sender == roof.p2
494
let g = /gunting/i
495
let b = /batu/i
496
let k = /kertas/i
497
let reg = /^(gunting|batu|kertas)/i
498
if (jwb && reg.test(m.text) && !roof.pilih && !m.isGroup) {
499
roof.pilih = reg.exec(m.text.toLowerCase())[0]
500
roof.text = m.text
501
m.reply(`Kamu telah memilih ${m.text} ${!roof.pilih2 ? `\n\nMenunggu lawan memilih` : ''}`)
502
if (!roof.pilih2) zets.sendText(roof.p2, '_Lawan sudah memilih_\nSekarang giliran kamu', 0)
503
}
504
if (jwb2 && reg.test(m.text) && !roof.pilih2 && !m.isGroup) {
505
roof.pilih2 = reg.exec(m.text.toLowerCase())[0]
506
roof.text2 = m.text
507
m.reply(`Kamu telah memilih ${m.text} ${!roof.pilih ? `\n\nMenunggu lawan memilih` : ''}`)
508
if (!roof.pilih) zets.sendText(roof.p, '_Lawan sudah memilih_\nSekarang giliran kamu', 0)
509
}
510
let stage = roof.pilih
511
let stage2 = roof.pilih2
512
if (roof.pilih && roof.pilih2) {
513
clearTimeout(roof.waktu_milih)
514
if (b.test(stage) && g.test(stage2)) win = roof.p
515
else if (b.test(stage) && k.test(stage2)) win = roof.p2
516
else if (g.test(stage) && k.test(stage2)) win = roof.p
517
else if (g.test(stage) && b.test(stage2)) win = roof.p2
518
else if (k.test(stage) && b.test(stage2)) win = roof.p
519
else if (k.test(stage) && g.test(stage2)) win = roof.p2
520
else if (stage == stage2) tie = true
521
zets.sendText(roof.asal, `_*Hasil Suit*_${tie ? '\nSERI' : ''}
522
523
@${roof.p.split`@`[0]} (${roof.text}) ${tie ? '' : roof.p == win ? ` Menang \n` : ` Kalah \n`}
524
@${roof.p2.split`@`[0]} (${roof.text2}) ${tie ? '' : roof.p2 == win ? ` Menang \n` : ` Kalah \n`}
525
`.trim(), m, { mentions: [roof.p, roof.p2] })
526
delete this.suit[roof.id]
527
}
528
}
529
530
let mentionUser = [...new Set([...(m.mentionedJid || []), ...(m.quoted ? [m.quoted.sender] : [])])]
531
for (let jid of mentionUser) {
532
let user = global.db.data.users[jid]
533
if (!user) continue
534
let afkTime = user.afkTime
535
if (!afkTime || afkTime < 0) continue
536
let reason = user.afkReason || ''
537
m.reply(`
538
Jangan tag dia!
539
Dia sedang AFK ${reason ? 'dengan alasan ' + reason : 'tanpa alasan'}
540
Selama ${clockString(new Date - afkTime)}
541
`.trim())
542
}
543
544
if (db.data.users[m.sender].afkTime > -1) {
545
let user = global.db.data.users[m.sender]
546
m.reply(`
547
Kamu berhenti AFK${user.afkReason ? ' setelah ' + user.afkReason : ''}
548
Selama ${clockString(new Date - user.afkTime)}
549
`.trim())
550
user.afkTime = -1
551
user.afkReason = ''
552
}
553
554
switch(command) {
555
case 'afk': {
556
let user = global.db.data.users[m.sender]
557
user.afkTime = + new Date
558
user.afkReason = text
559
m.reply(`${m.pushName} Telah Afk${text ? ': ' + text : ''}`)
560
}
561
break
562
case 'ttc': case 'ttt': case 'tictactoe': {
563
let TicTacToe = require("./lib/tictactoe")
564
this.game = this.game ? this.game : {}
565
if (Object.values(this.game).find(room => room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender))) throw 'Kamu masih didalam game'
566
let room = Object.values(this.game).find(room => room.state === 'WAITING' && (text ? room.name === text : true))
567
if (room) {
568
m.reply('Partner ditemukan!')
569
room.o = m.chat
570
room.game.playerO = m.sender
571
room.state = 'PLAYING'
572
let arr = room.game.render().map(v => {
573
return {
574
X: '❌',
575
O: '⭕',
576
1: '1️⃣',
577
2: '2️⃣',
578
3: '3️⃣',
579
4: '4️⃣',
580
5: '5️⃣',
581
6: '6️⃣',
582
7: '7️⃣',
583
8: '8️⃣',
584
9: '9️⃣',
585
}[v]
586
})
587
let str = `Room ID: ${room.id}
588
589
${arr.slice(0, 3).join('')}
590
${arr.slice(3, 6).join('')}
591
${arr.slice(6).join('')}
592
593
Menunggu @${room.game.currentTurn.split('@')[0]}
594
595
Ketik *nyerah* untuk menyerah dan mengakui kekalahan`
596
if (room.x !== room.o) await zets.sendText(room.x, str, m, { mentions: parseMention(str) } )
597
await zets.sendText(room.o, str, m, { mentions: parseMention(str) } )
598
} else {
599
room = {
600
id: 'tictactoe-' + (+new Date),
601
x: m.chat,
602
o: '',
603
game: new TicTacToe(m.sender, 'o'),
604
state: 'WAITING'
605
}
606
if (text) room.name = text
607
m.reply('Menunggu partner' + (text ? ` mengetik command dibawah ini ${prefix}${command} ${text}` : ''))
608
this.game[room.id] = room
609
}
610
}
611
break
612
case 'delttc': case 'delttt': {
613
this.game = this.game ? this.game : {}
614
try {
615
if (this.game) {
616
delete this.game
617
zets.sendText(m.chat, `Berhasil delete session TicTacToe`, m)
618
} else if (!this.game) {
619
m.reply(`Session TicTacToe🎮 tidak ada`)
620
} else throw '?'
621
} catch (e) {
622
m.reply('rusak')
623
}
624
}
625
break
626
case 'suitpvp': case 'suit': {
627
this.suit = this.suit ? this.suit : {}
628
let poin = 10
629
let poin_lose = 10
630
let timeout = 60000
631
if (Object.values(this.suit).find(roof => roof.id.startsWith('suit') && [roof.p, roof.p2].includes(m.sender))) m.reply(`Selesaikan suit mu yang sebelumnya`)
632
if (m.mentionedJid[0] === m.sender) return m.reply(`Tidak bisa bermain dengan diri sendiri !`)
633
if (!m.mentionedJid[0]) return m.reply(`_Siapa yang ingin kamu tantang?_\nTag orangnya..\n\nContoh : ${prefix}suit @${owner[1]}`, m.chat, { mentions: [owner[1] + '@s.whatsapp.net'] })
634
if (Object.values(this.suit).find(roof => roof.id.startsWith('suit') && [roof.p, roof.p2].includes(m.mentionedJid[0]))) throw `Orang yang kamu tantang sedang bermain suit bersama orang lain :(`
635
let id = 'suit_' + new Date() * 1
636
let caption = `_*SUIT PvP*_
637
638
@${m.sender.split`@`[0]} menantang @${m.mentionedJid[0].split`@`[0]} untuk bermain suit
639
640
Silahkan @${m.mentionedJid[0].split`@`[0]} untuk ketik terima/tolak`
641
this.suit[id] = {
642
chat: await zets.sendText(m.chat, caption, m, { mentions: parseMention(caption) }),
643
id: id,
644
p: m.sender,
645
p2: m.mentionedJid[0],
646
status: 'wait',
647
waktu: setTimeout(() => {
648
if (this.suit[id]) zets.sendText(m.chat, `_Waktu suit habis_`, m)
649
delete this.suit[id]
650
}, 60000), poin, poin_lose, timeout
651
}
652
}
653
break
654
case 'donasi': case 'sewabot': case 'sewa': case 'buypremium': case 'donate': {
655
zets.sendMessage(m.chat, { image: { url: 'https://i.postimg.cc/7ZWmBrMB/IMG-20220819-WA0027.jpg' }, caption: `*Hai Kak ${m.pushName}*\n\n Bot Rental Prices\n⌕ 15k Per Group via E-Walet 1 Month\n⌕ 20k via pulsa 1 Month\n\n Premium Price Bot\n⌕ 10k per User 1 bulan\n\nPayment can be via Paypal/link aja/pulsa\n\nFor more details, you can chat with the owner\nhttps://wa.me/6281252848955 (Owner)\n\nDonate For Me : \n\n⌕ Paypal : https://www.paypal.me/Rifando35\n⌕ Saweria : https://saweria.co/Nando35` }, { quoted: m })
656
}
657
break
658
case 'sc': case 'sourcecode': {
659
addCountCmd(`#${command.slice(1)}`, sender, _cmd)
660
anu = `
661
⌕ Script : https://github.com/MR414N-ID
662
663
Jangan lupa kasih bintang.
664
⌕ Donate : 082271639290 (Dana / pulsa)
665
⌕ Saweria : Kaga ada
666
⌕ Paypal : kaga ada
667
668
Dont Forget Donate
669
`
670
let btn = [{
671
urlButton: {
672
displayText: 'Instagram',
673
url: 'https://instagram.com/naando.jpeg'
674
}
675
}]
676
zets.send5ButImg(m.chat, anu, botname, global.sc, btn)
677
}
678
break
679
680
case 'tqto': case 'partner': case 'credits': {
681
anu = `Terima kasih
682
683
LANOX / ALAN
684
⌕ https://github.com/MR414N-ID
685
⌕ https://instagram.com/_lanox_
686
687
`
688
let btn = [{
689
urlButton: {
690
displayText: 'Instagram',
691
url: 'https://instagram.com'
692
}
693
}]
694
zets.send5ButImg(m.chat, anu, botname, global.tq, btn)
695
}
696
break
697
698
case 'chat': {
699
addCountCmd(`#${command.slice(1)}`, sender, _cmd)
700
if (!isCreator) throw mess.owner
701
if (!q) throw 'Option : 1. mute\n2. unmute\n3. archive\n4. unarchive\n5. read\n6. unread\n7. delete'
702
if (args[0] === 'mute') {
703
zets.chatModify({ mute: 'Infinity' }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
704
} else if (args[0] === 'unmute') {
705
zets.chatModify({ mute: null }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
706
} else if (args[0] === 'archive') {
707
zets.chatModify({ archive: true }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
708
} else if (args[0] === 'unarchive') {
709
zets.chatModify({ archive: false }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
710
} else if (args[0] === 'read') {
711
zets.chatModify({ markRead: true }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
712
} else if (args[0] === 'unread') {
713
zets.chatModify({ markRead: false }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
714
} else if (args[0] === 'delete') {
715
zets.chatModify({ clear: { message: { id: m.quoted.id, fromMe: true }} }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
716
}
717
}
718
break
719
case 'family100': {
720
if ('family100'+m.chat in _family100) {
721
m.reply('Masih Ada Sesi Yang Belum Diselesaikan!')
722
throw false
723
}
724
let anu = await fetchJson('https://raw.githubusercontent.com/BochilTeam/database/master/games/family100.json')
725
let random = anu[Math.floor(Math.random() * anu.length)]
726
let hasil = `*Jawablah Pertanyaan Berikut :*\n${random.soal}\n\nTerdapat *${random.jawaban.length}* Jawaban ${random.jawaban.find(v => v.includes(' ')) ? `(beberapa Jawaban Terdapat Spasi)` : ''}`.trim()
727
_family100['family100'+m.chat] = {
728
id: 'family100'+m.chat,
729
pesan: await zets.sendText(m.chat, hasil, m),
730
...random,
731
terjawab: Array.from(random.jawaban, () => false),
732
hadiah: 6,
733
}
734
}
735
break
736
case 'halah': case 'hilih': case 'huluh': case 'heleh': case 'holoh':
737
if (!m.quoted && !text) throw `Kirim/reply text dengan caption ${prefix + command}`
738
ter = command[1].toLowerCase()
739
tex = m.quoted ? m.quoted.text ? m.quoted.text : q ? q : m.text : q ? q : m.text
740
m.reply(tex.replace(/[aiueo]/g, ter).replace(/[AIUEO]/g, ter.toUpperCase()))
741
break
742
case 'tebak': {
743
if (!text) throw `Example : ${prefix + command} lagu\n\nOption : \n1. lagu\n2. gambar\n3. kata\n4. kalimat\n5. lirik\n6.lontong`
744
if (args[0] === "lagu") {
745
if (tebaklagu.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
746
let anu = await fetchJson('https://fatiharridho.github.io/tebaklagu.json')
747
let result = anu[Math.floor(Math.random() * anu.length)]
748
let msg = await zets.sendMessage(m.chat, { audio: { url: result.link_song }, mimetype: 'audio/mpeg' }, { quoted: m })
749
zets.sendText(m.chat, `Lagu Tersebut Adalah Lagu dari?\n\nArtist : ${result.artist}\nWaktu : 60s`, msg).then(() => {
750
tebaklagu[m.sender.split('@')[0]] = result.jawaban.toLowerCase()
751
})
752
await sleep(60000)
753
if (tebaklagu.hasOwnProperty(m.sender.split('@')[0])) {
754
console.log("Jawaban: " + result.jawaban)
755
zets.sendButtonText(m.chat, [{ buttonId: 'tebak lagu', buttonText: { displayText: 'Tebak Lagu' }, type: 1 }], `Waktu Habis\nJawaban: ${tebaklagu[m.sender.split('@')[0]]}\n\nIngin bermain? tekan button dibawah`, zets.user.name, m)
756
delete tebaklagu[m.sender.split('@')[0]]
757
}
758
} else if (args[0] === 'gambar') {
759
if (tebakgambar.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
760
let anu = await fetchJson('https://raw.githubusercontent.com/BochilTeam/database/master/games/tebakgambar.json')
761
let result = anu[Math.floor(Math.random() * anu.length)]
762
zets.sendImage(m.chat, result.img, `Silahkan Jawab Soal Di Atas Ini\n\nDeskripsi : ${result.deskripsi}\nWaktu : 60s`, m).then(() => {
763
tebakgambar[m.sender.split('@')[0]] = result.jawaban.toLowerCase()
764
})
765
await sleep(60000)
766
if (tebakgambar.hasOwnProperty(m.sender.split('@')[0])) {
767
console.log("Jawaban: " + result.jawaban)
768
zets.sendButtonText(m.chat, [{ buttonId: 'tebak gambar', buttonText: { displayText: 'Tebak Gambar' }, type: 1 }], `Waktu Habis\nJawaban: ${tebakgambar[m.sender.split('@')[0]]}\n\nIngin bermain? tekan button dibawah`, zets.user.name, m)
769
delete tebakgambar[m.sender.split('@')[0]]
770
}
771
} else if (args[0] === 'kata') {
772
if (tebakkata.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
773
let anu = await fetchJson('https://raw.githubusercontent.com/BochilTeam/database/master/games/tebakkata.json')
774
let result = anu[Math.floor(Math.random() * anu.length)]
775
zets.sendText(m.chat, `Silahkan Jawab Pertanyaan Berikut\n\n${result.soal}\nWaktu : 60s`, m).then(() => {
776
tebakkata[m.sender.split('@')[0]] = result.jawaban.toLowerCase()
777
})
778
await sleep(60000)
779
if (tebakkata.hasOwnProperty(m.sender.split('@')[0])) {
780
console.log("Jawaban: " + result.jawaban)
781
zets.sendButtonText(m.chat, [{ buttonId: 'tebak kata', buttonText: { displayText: 'Tebak Kata' }, type: 1 }], `Waktu Habis\nJawaban: ${tebakkata[m.sender.split('@')[0]]}\n\nIngin bermain? tekan button dibawah`, zets.user.name, m)
782
delete tebakkata[m.sender.split('@')[0]]
783
}
784
} else if (args[0] === 'kalimat') {
785
if (tebakkalimat.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
786
let anu = await fetchJson('https://raw.githubusercontent.com/BochilTeam/database/master/games/tebakkalimat.json')
787
let result = anu[Math.floor(Math.random() * anu.length)]
788
zets.sendText(m.chat, `Silahkan Jawab Pertanyaan Berikut\n\n${result.soal}\nWaktu : 60s`, m).then(() => {
789
tebakkalimat[m.sender.split('@')[0]] = result.jawaban.toLowerCase()
790
})
791
await sleep(60000)
792
if (tebakkalimat.hasOwnProperty(m.sender.split('@')[0])) {
793
console.log("Jawaban: " + result.jawaban)
794
zets.sendButtonText(m.chat, [{ buttonId: 'tebak kalimat', buttonText: { displayText: 'Tebak Kalimat' }, type: 1 }], `Waktu Habis\nJawaban: ${tebakkalimat[m.sender.split('@')[0]]}\n\nIngin bermain? tekan button dibawah`, zets.user.name, m)
795
delete tebakkalimat[m.sender.split('@')[0]]
796
}
797
} else if (args[0] === 'lirik') {
798
if (tebaklirik.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
799
let anu = await fetchJson('https://raw.githubusercontent.com/BochilTeam/database/master/games/tebaklirik.json')
800
let result = anu[Math.floor(Math.random() * anu.length)]
801
zets.sendText(m.chat, `Ini Adalah Lirik Dari Lagu? : *${result.soal}*?\nWaktu : 60s`, m).then(() => {
802
tebaklirik[m.sender.split('@')[0]] = result.jawaban.toLowerCase()
803
})
804
await sleep(60000)
805
if (tebaklirik.hasOwnProperty(m.sender.split('@')[0])) {
806
console.log("Jawaban: " + result.jawaban)
807
zets.sendButtonText(m.chat, [{ buttonId: 'tebak lirik', buttonText: { displayText: 'Tebak Lirik' }, type: 1 }], `Waktu Habis\nJawaban: ${tebaklirik[m.sender.split('@')[0]]}\n\nIngin bermain? tekan button dibawah`, zets.user.name, m)
808
delete tebaklirik[m.sender.split('@')[0]]
809
}
810
} else if (args[0] === 'lontong') {
811
if (caklontong.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
812
let anu = await fetchJson('https://raw.githubusercontent.com/BochilTeam/database/master/games/caklontong.json')
813
let result = anu[Math.floor(Math.random() * anu.length)]
814
zets.sendText(m.chat, `*Jawablah Pertanyaan Berikut :*\n${result.soal}*\nWaktu : 60s`, m).then(() => {
815
caklontong[m.sender.split('@')[0]] = result.jawaban.toLowerCase()
816
caklontong_desk[m.sender.split('@')[0]] = result.deskripsi
817
})
818
await sleep(60000)
819
if (caklontong.hasOwnProperty(m.sender.split('@')[0])) {
820
console.log("Jawaban: " + result.jawaban)
821
zets.sendButtonText(m.chat, [{ buttonId: 'tebak lontong', buttonText: { displayText: 'Tebak Lontong' }, type: 1 }], `Waktu Habis\nJawaban: ${caklontong[m.sender.split('@')[0]]}\nDeskripsi : ${caklontong_desk[m.sender.split('@')[0]]}\n\nIngin bermain? tekan button dibawah`, zets.user.name, m)
822
delete caklontong[m.sender.split('@')[0]]
823
delete caklontong_desk[m.sender.split('@')[0]]
824
}
825
}
826
}
827
break
828
case 'kuismath': case 'math': {
829
if (kuismath.hasOwnProperty(m.sender.split('@')[0])) throw "Masih Ada Sesi Yang Belum Diselesaikan!"
830
let { genMath, modes } = require('./src/math')
831
if (!text) throw `Mode: ${Object.keys(modes).join(' | ')}\nContoh penggunaan: ${prefix}math medium`
832
let result = await genMath(text.toLowerCase())
833
zets.sendText(m.chat, `*Berapa hasil dari: ${result.soal.toLowerCase()}*?\n\nWaktu: ${(result.waktu / 1000).toFixed(2)} detik`, m).then(() => {
834
kuismath[m.sender.split('@')[0]] = result.jawaban
835
})
836
await sleep(result.waktu)
837
if (kuismath.hasOwnProperty(m.sender.split('@')[0])) {
838
console.log("Jawaban: " + result.jawaban)
839
m.reply("Waktu Habis\nJawaban: " + kuismath[m.sender.split('@')[0]])
840
delete kuismath[m.sender.split('@')[0]]
841
}
842
}
843
break
844
case 'jodohku': {
845
if (!m.isGroup) throw mess.group
846
let member = participants.map(u => u.id)
847
let me = m.sender
848
let jodoh = member[Math.floor(Math.random() * member.length)]
849
let jawab = `👫Jodoh mu adalah
850
851
@${me.split('@')[0]} ❤️ @${jodoh.split('@')[0]}`
852
let ments = [me, jodoh]
853
let buttons = [
854
{ buttonId: 'jodohku', buttonText: { displayText: 'Jodohku' }, type: 1 }
855
]
856
await zets.sendButtonText(m.chat, buttons, jawab, zets.user.name, m, {mentions: ments})
857
}
858
break
859
case 'jadian': {
860
if (!m.isGroup) throw mess.group
861
let member = participants.map(u => u.id)
862
let orang = member[Math.floor(Math.random() * member.length)]
863
let jodoh = member[Math.floor(Math.random() * member.length)]
864
let jawab = `Ciee yang Jadian💖 Jangan lupa pajak jadiannya🐤
865
866
@${orang.split('@')[0]} ❤️ @${jodoh.split('@')[0]}`
867
let menst = [orang, jodoh]
868
let buttons = [
869
{ buttonId: 'jadian', buttonText: { displayText: 'Jodohku' }, type: 1 }
870
]
871
await zets.sendButtonText(m.chat, buttons, jawab, zets.user.name, m, {mentions: menst})
872
}
873
break
874
case 'react': {
875
if (!isCreator) throw mess.owner
876
reactionMessage = {
877
react: {
878
text: args[0],
879
key: { remoteJid: m.chat, fromMe: true, id: quoted.id }
880
}
881
}
882
zets.sendMessage(m.chat, reactionMessage)
883
}
884
break
885
case 'join': {
886
if (!isCreator) throw mess.owner
887
if (!text) throw 'Masukkan Link Group!'
888
if (!isUrl(args[0]) && !args[0].includes('whatsapp.com')) throw 'Link Invalid!'
889
m.reply(mess.wait)
890
let result = args[0].split('https://chat.whatsapp.com/')[1]
891
await zets.groupAcceptInvite(result).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
892
}
893
break
894
case 'leave': {
895
if (!isCreator) throw mess.owner
896
await zets.groupLeave(m.chat).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
897
}
898
break
899
case 'setexif': {
900
if (!isCreator) throw mess.owner
901
if (!text) throw `Example : ${prefix + command} packname|author`
902
global.packname = text.split("|")[0]
903
global.author = text.split("|")[1]
904
m.reply(`Exif berhasil diubah menjadi\n\n⌕ Packname : ${global.packname}\n⌕ Author : ${global.author}`)
905
}
906
break
907
case 'kick': {
908
if (!m.isGroup) throw mess.group
909
if (!isBotAdmins) throw mess.botAdmin
910
if (!isAdmins) throw mess.admin
911
let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
912
await zets.groupParticipantsUpdate(m.chat, [users], 'remove').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
913
}
914
break
915
case 'add': {
916
if (!m.isGroup) throw mess.group
917
if (!isBotAdmins) throw mess.botAdmin
918
if (!isAdmins) throw mess.admin
919
let users = m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
920
await zets.groupParticipantsUpdate(m.chat, [users], 'add').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
921
}
922
break
923
case 'promote': {
924
if (!m.isGroup) throw mess.group
925
if (!isBotAdmins) throw mess.botAdmin
926
if (!isAdmins) throw mess.admin
927
let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
928
await zets.groupParticipantsUpdate(m.chat, [users], 'promote').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
929
}
930
break
931
case 'demote': {
932
if (!m.isGroup) throw mess.group
933
if (!isBotAdmins) throw mess.botAdmin
934
if (!isAdmins) throw mess.admin
935
let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
936
await zets.groupParticipantsUpdate(m.chat, [users], 'demote').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
937
}
938
break
939
case 'block': {
940
if (!isCreator) throw mess.owner
941
let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
942
await zets.updateBlockStatus(users, 'block').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
943
}
944
break
945
case 'unblock': {
946
if (!isCreator) throw mess.owner
947
let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
948
await zets.updateBlockStatus(users, 'unblock').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
949
}
950
break
951
case 'setname': case 'setsubject': {
952
if (!m.isGroup) throw mess.group
953
if (!isBotAdmins) throw mess.botAdmin
954
if (!isAdmins) throw mess.admin
955
if (!text) throw 'Text ?'
956
await zets.groupUpdateSubject(m.chat, text).then((res) => m.reply(mess.success)).catch((err) => m.reply(jsonformat(err)))
957
}
958
break
959
case 'setdesc': case 'setdesk': {
960
if (!m.isGroup) throw mess.group
961
if (!isBotAdmins) throw mess.botAdmin
962
if (!isAdmins) throw mess.admin
963
if (!text) throw 'Text ?'
964
await zets.groupUpdateDescription(m.chat, text).then((res) => m.reply(mess.success)).catch((err) => m.reply(jsonformat(err)))
965
}
966
break
967
case 'setppbot': {
968
if (!isCreator) throw mess.owner
969
if (!quoted) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
970
if (!/image/.test(mime)) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
971
if (/webp/.test(mime)) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
972
let media = await zets.downloadAndSaveMediaMessage(quoted)
973
await zets.updateProfilePicture(botNumber, { url: media }).catch((err) => fs.unlinkSync(media))
974
m.reply(mess.success)
975
}
976
break
977
case 'setppgroup': case 'setppgrup': case 'setppgc': {
978
if (!m.isGroup) throw mess.group
979
if (!isAdmins) throw mess.admin
980
if (!quoted) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
981
if (!/image/.test(mime)) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
982
if (/webp/.test(mime)) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
983
let media = await zets.downloadAndSaveMediaMessage(quoted)
984
await zets.updateProfilePicture(m.chat, { url: media }).catch((err) => fs.unlinkSync(media))
985
m.reply(mess.success)
986
}
987
break
988
case 'tagall': {
989
if (!m.isGroup) throw mess.group
990
if (!isBotAdmins) throw mess.botAdmin
991
if (!isAdmins) throw mess.admin
992
let teks = `══✪〘 *👥 Tag All* 〙✪══
993
994
➲ *Pesan : ${q ? q : 'kosong'}*\n\n`
995
for (let mem of participants) {
996
teks += `⌕ @${mem.id.split('@')[0]}\n`
997
}
998
zets.sendMessage(m.chat, { text: teks, mentions: participants.map(a => a.id) }, { quoted: m })
999
}
1000
break
1001
case 'hidetag': {
1002
if (!m.isGroup) throw mess.group
1003
if (!isBotAdmins) throw mess.botAdmin
1004
if (!isAdmins) throw mess.admin
1005
zets.sendMessage(m.chat, { text : q ? q : '' , mentions: participants.map(a => a.id)}, { quoted: m })
1006
}
1007
break
1008
case 'style': case 'styletext': {
1009
if (!isPremium && global.db.data.users[m.sender].limit < 1) return m.reply(mess.endLimit) // respon ketika limit habis
1010
db.data.users[m.sender].limit -= 1 // -1 limit
1011
let { styletext } = require('./lib/scraper')
1012
if (!text) throw 'Masukkan Query text!'
1013
let anu = await styletext(text)
1014
let teks = `Srtle Text From ${text}\n\n`
1015
for (let i of anu) {
1016
teks += `⌕ *${i.name}* : ${i.result}\n\n`
1017
}
1018
m.reply(teks)
1019
}
1020
break
1021
case 'vote': {
1022
if (!m.isGroup) throw mess.group
1023
if (m.chat in vote) throw `_Masih ada vote di chat ini!_\n\n*${prefix}hapusvote* - untuk menghapus vote`
1024
if (!text) throw `Masukkan Alasan Melakukan Vote, Example: *${prefix + command} Owner Ganteng*`
1025
m.reply(`Vote dimulai!\n\n*${prefix}upvote* - untuk ya\n*${prefix}devote* - untuk tidak\n*${prefix}cekvote* - untuk mengecek vote\n*${prefix}hapusvote* - untuk menghapus vote`)
1026
vote[m.chat] = [q, [], []]
1027
await sleep(1000)
1028
upvote = vote[m.chat][1]
1029
devote = vote[m.chat][2]
1030
teks_vote = `*「 VOTE 」*
1031
1032
*Alasan:* ${vote[m.chat][0]}
1033
1034
┌〔 UPVOTE 〕
1035
1036
├ Total: ${vote[m.chat][1].length}
1037
1038
1039
└────
1040
1041
┌〔 DEVOTE 〕
1042
1043
├ Total: ${vote[m.chat][2].length}
1044
1045
1046
└────
1047
1048
*${prefix}hapusvote* - untuk menghapus vote`
1049
let buttonsVote = [
1050
{buttonId: `${prefix}upvote`, buttonText: {displayText: '𝚄𝙿𝚅𝙾𝚃𝙴'}, type: 1},
1051
{buttonId: `${prefix}devote`, buttonText: {displayText: '𝙳𝙴𝚅𝙾𝚃𝙴'}, type: 1}
1052
]
1053
1054
let buttonMessageVote = {
1055
text: teks_vote,
1056
footer: zets.user.name,
1057
buttons: buttonsVote,
1058
headerType: 1
1059
}
1060
zets.sendMessage(m.chat, buttonMessageVote)
1061
}
1062
break
1063
case 'upvote': {
1064
if (!m.isGroup) throw mess.group
1065
if (!(m.chat in vote)) throw `_*tidak ada voting digrup ini!*_\n\n*${prefix}vote* - untuk memulai vote`
1066
isVote = vote[m.chat][1].concat(vote[m.chat][2])
1067
wasVote = isVote.includes(m.sender)
1068
if (wasVote) throw 'Kamu Sudah Vote'
1069
vote[m.chat][1].push(m.sender)
1070
menvote = vote[m.chat][1].concat(vote[m.chat][2])
1071
teks_vote = `*「 VOTE 」*
1072
1073
*Alasan:* ${vote[m.chat][0]}
1074
1075
┌〔 UPVOTE 〕
1076
1077
├ Total: ${vote[m.chat][1].length}
1078
${vote[m.chat][1].map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n')}
1079
1080
└────
1081
1082
┌〔 DEVOTE 〕
1083
1084
├ Total: ${vote[m.chat][2].length}
1085
${vote[m.chat][2].map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n')}
1086
1087
└────
1088
1089
*${prefix}hapusvote* - untuk menghapus vote`
1090
let buttonsUpvote = [
1091
{buttonId: `${prefix}upvote`, buttonText: {displayText: '𝚄𝙿𝚅𝙾𝚃𝙴'}, type: 1},
1092
{buttonId: `${prefix}devote`, buttonText: {displayText: '𝙳𝙴𝚅𝙾𝚃𝙴'}, type: 1}
1093
]
1094
1095
let buttonMessageUpvote = {
1096
text: teks_vote,
1097
footer: zets.user.name,
1098
buttons: buttonsUpvote,
1099
headerType: 1,
1100
mentions: menvote
1101
}
1102
zets.sendMessage(m.chat, buttonMessageUpvote)
1103
}
1104
break
1105
case 'devote': {
1106
if (!m.isGroup) throw mess.group
1107
if (!(m.chat in vote)) throw `_*tidak ada voting digrup ini!*_\n\n*${prefix}vote* - untuk memulai vote`
1108
isVote = vote[m.chat][1].concat(vote[m.chat][2])
1109
wasVote = isVote.includes(m.sender)
1110
if (wasVote) throw 'Kamu Sudah Vote'
1111
vote[m.chat][2].push(m.sender)
1112
menvote = vote[m.chat][1].concat(vote[m.chat][2])
1113
teks_vote = `*「 VOTE 」*
1114
1115
*Alasan:* ${vote[m.chat][0]}
1116
1117
┌〔 UPVOTE 〕
1118
1119
├ Total: ${vote[m.chat][1].length}
1120
${vote[m.chat][1].map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n')}
1121
1122
└────
1123
1124
┌〔 DEVOTE 〕
1125
1126
├ Total: ${vote[m.chat][2].length}
1127
${vote[m.chat][2].map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n')}
1128
1129
└────
1130
1131
*${prefix}hapusvote* - untuk menghapus vote`
1132
let buttonsDevote = [
1133
{buttonId: `${prefix}upvote`, buttonText: {displayText: '𝚄𝙿𝚅𝙾𝚃𝙴'}, type: 1},
1134
{buttonId: `${prefix}devote`, buttonText: {displayText: '𝙳𝙴𝚅𝙾𝚃𝙴'}, type: 1}
1135
]
1136
1137
let buttonMessageDevote = {
1138
text: teks_vote,
1139
footer: zets.user.name,
1140
buttons: buttonsDevote,
1141
headerType: 1,
1142
mentions: menvote
1143
}
1144
zets.sendMessage(m.chat, buttonMessageDevote)
1145
}
1146
break
1147
1148
case 'cekvote':
1149
if (!m.isGroup) throw mess.group
1150
if (!(m.chat in vote)) throw `_*tidak ada voting digrup ini!*_\n\n*${prefix}vote* - untuk memulai vote`
1151
teks_vote = `*「 VOTE 」*
1152
1153
*Alasan:* ${vote[m.chat][0]}
1154
1155
┌〔 UPVOTE 〕
1156
1157
├ Total: ${upvote.length}
1158
${vote[m.chat][1].map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n')}
1159
1160
└────
1161
1162
┌〔 DEVOTE 〕
1163
1164
├ Total: ${devote.length}
1165
${vote[m.chat][2].map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n')}
1166
1167
└────
1168
1169
*${prefix}hapusvote* - untuk menghapus vote
1170
1171
1172
©${zets.user.id}
1173
`
1174
zets.sendTextWithMentions(m.chat, teks_vote, m)
1175
break
1176
case 'deletevote': case'delvote': case 'hapusvote': {
1177
if (!m.isGroup) throw mess.group
1178
if (!(m.chat in vote)) throw `_*tidak ada voting digrup ini!*_\n\n*${prefix}vote* - untuk memulai vote`
1179
delete vote[m.chat]
1180
m.reply('Berhasil Menghapus Sesi Vote Di Grup Ini')
1181
}
1182
break
1183
case 'group': case 'grup': {
1184
if (!m.isGroup) throw mess.group
1185
if (!isBotAdmins) throw mess.botAdmin
1186
if (!isAdmins) throw mess.admin
1187
if (args[0] === 'close'){
1188
await zets.groupSettingUpdate(m.chat, 'announcement').then((res) => m.reply(`Sukses Menutup Group`)).catch((err) => m.reply(jsonformat(err)))
1189
} else if (args[0] === 'open'){
1190
await zets.groupSettingUpdate(m.chat, 'not_announcement').then((res) => m.reply(`Sukses Membuka Group`)).catch((err) => m.reply(jsonformat(err)))
1191
} else {
1192
let buttons = [
1193
{ buttonId: 'group open', buttonText: { displayText: 'Open' }, type: 1 },
1194
{ buttonId: 'group close', buttonText: { displayText: 'Close' }, type: 1 }
1195
]
1196
await zets.sendButtonText(m.chat, buttons, `Mode Group`, zets.user.name, m)
1197
1198
}
1199
}
1200
break
1201
case 'editinfo': {
1202
if (!m.isGroup) throw mess.group
1203
if (!isBotAdmins) throw mess.botAdmin
1204
if (!isAdmins) throw mess.admin
1205
if (args[0] === 'open'){
1206
await zets.groupSettingUpdate(m.chat, 'unlocked').then((res) => m.reply(`Sukses Membuka Edit Info Group`)).catch((err) => m.reply(jsonformat(err)))
1207
} else if (args[0] === 'close'){
1208
await zets.groupSettingUpdate(m.chat, 'locked').then((res) => m.reply(`Sukses Menutup Edit Info Group`)).catch((err) => m.reply(jsonformat(err)))
1209
} else {
1210
let buttons = [
1211
{ buttonId: 'editinfo open', buttonText: { displayText: 'Open' }, type: 1 },
1212
{ buttonId: 'editinfo close', buttonText: { displayText: 'Close' }, type: 1 }
1213
]
1214
await zets.sendButtonText(m.chat, buttons, `Mode Edit Info`, zets.user.name, m)
1215
1216
}
1217
}
1218
break
1219
case 'antilink': {
1220
if (!m.isGroup) throw mess.group
1221
if (!isBotAdmins) throw mess.botAdmin
1222
if (!isAdmins) throw mess.admin
1223
if (args[0] === "on") {
1224
if (db.data.chats[m.chat].antilink) return m.reply(`Sudah Aktif Sebelumnya`)
1225
db.data.chats[m.chat].antilink = true
1226
m.reply(`Antilink Aktif !`)
1227
} else if (args[0] === "off") {
1228
if (!db.data.chats[m.chat].antilink) return m.reply(`Sudah Tidak Aktif Sebelumnya`)
1229
db.data.chats[m.chat].antilink = false
1230
m.reply(`Antilink Tidak Aktif !`)
1231
} else {
1232
let buttons = [
1233
{ buttonId: 'antilink on', buttonText: { displayText: 'On' }, type: 1 },
1234
{ buttonId: 'antilink off', buttonText: { displayText: 'Off' }, type: 1 }
1235
]
1236
await zets.sendButtonText(m.chat, buttons, `Mode Antilink`, zets.user.name, m)
1237
}
1238
}
1239
break
1240
case 'mute': {
1241
if (!m.isGroup) throw mess.group
1242
if (!isBotAdmins) throw mess.botAdmin
1243
if (!isAdmins) throw mess.admin
1244
if (args[0] === "on") {
1245
if (db.data.chats[m.chat].mute) return m.reply(`Sudah Aktif Sebelumnya`)
1246
db.data.chats[m.chat].mute = true
1247
m.reply(`${zets.user.name} telah di mute di group ini !`)
1248
} else if (args[0] === "off") {
1249
if (!db.data.chats[m.chat].mute) return m.reply(`Sudah Tidak Aktif Sebelumnya`)
1250
db.data.chats[m.chat].mute = false
1251
m.reply(`${zets.user.name} telah di unmute di group ini !`)
1252
} else {
1253
let buttons = [
1254
{ buttonId: 'mute on', buttonText: { displayText: 'On' }, type: 1 },
1255
{ buttonId: 'mute off', buttonText: { displayText: 'Off' }, type: 1 }
1256
]
1257
await zets.sendButtonText(m.chat, buttons, `Mute Bot`, zets.user.name, m)
1258
}
1259
}
1260
break
1261
case 'linkgroup': case 'linkgc': {
1262
if (!m.isGroup) throw mess.group
1263
let response = await zets.groupInviteCode(m.chat)
1264
zets.sendText(m.chat, `https://chat.whatsapp.com/${response}\n\nLink Group : ${groupMetadata.subject}`, m, { detectLink: true })
1265
}
1266
break
1267
case 'ephemeral': {
1268
if (!m.isGroup) throw mess.group
1269
if (!isBotAdmins) throw mess.botAdmin
1270
if (!isAdmins) throw mess.admin
1271
if (!text) throw 'Masukkan value enable/disable'
1272
if (args[0] === 'enable') {
1273
await zets.sendMessage(m.chat, { disappearingMessagesInChat: WA_DEFAULT_EPHEMERAL }).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
1274
} else if (args[0] === 'disable') {
1275
await zets.sendMessage(m.chat, { disappearingMessagesInChat: false }).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
1276
}
1277
}
1278
break
1279
case 'delete': case 'del': {
1280
if (!m.quoted) throw false
1281
let { chat, fromMe, id, isBaileys } = m.quoted
1282
if (!isBaileys) throw 'Pesan tersebut bukan dikirim oleh bot!'
1283
zets.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: true, id: m.quoted.id, participant: m.quoted.sender } })
1284
}
1285
break
1286
case 'bcgc': case 'bcgroup': {
1287
if (!isCreator) throw mess.owner
1288
if (!text) throw `Text mana?\n\nExample : ${prefix + command} fatih-san`
1289
let getGroups = await zets.groupFetchAllParticipating()
1290
let groups = Object.entries(getGroups).slice(0).map(entry => entry[1])
1291
let anu = groups.map(v => v.id)
1292
m.reply(`Mengirim Broadcast Ke ${anu.length} Group Chat, Waktu Selesai ${anu.length * 1.5} detik`)
1293
for (let i of anu) {
1294
await sleep(1500)
1295
let btn = [{
1296
urlButton: {
1297
displayText: 'Source Code',
1298
url: 'https://github.com/DikaArdnt/zets-Morou'
1299
}
1300
}]
1301
let txt = `「 Broadcast Bot 」\n\n${text}`
1302
zets.send5ButImg(i, txt, zets.user.name, global.thumb, btn)
1303
}
1304
m.reply(`Sukses Mengirim Broadcast Ke ${anu.length} Group`)
1305
}
1306
break
1307
case 'bc': case 'broadcast': case 'bcall': {
1308
if (!isCreator) throw mess.owner
1309
if (!text) throw `Text mana?\n\nExample : ${prefix + command} fatih-san`
1310
let anu = await store.chats.all().map(v => v.id)
1311
m.reply(`Mengirim Broadcast Ke ${anu.length} Chat\nWaktu Selesai ${anu.length * 1.5} detik`)
1312
for (let yoi of anu) {
1313
await sleep(1500)
1314
let btn = [{
1315
urlButton: {
1316
displayText: 'Source Code',
1317
url: 'https://github.com/DikaArdnt/zets-Morou'
1318
}
1319
}]
1320
let txt = `「 Broadcast Bot 」\n\n${text}`
1321
zets.send5ButImg(yoi, txt, zets.user.name, global.thumb, btn)
1322
}
1323
m.reply('Sukses Broadcast')
1324
}
1325
break
1326
case 'infochat': {
1327
if (!m.quoted) m.reply('Reply Pesan')
1328
let msg = await m.getQuotedObj()
1329
if (!m.quoted.isBaileys) throw 'Pesan tersebut bukan dikirim oleh bot!'
1330
let teks = ''
1331
for (let i of msg.userReceipt) {
1332
let read = i.readTimestamp
1333
let unread = i.receiptTimestamp
1334
let waktu = read ? read : unread
1335
teks += `⌕ @${i.userJid.split('@')[0]}\n`
1336
teks += ` ┗━⌕ *Waktu :* ${moment(waktu * 1000).format('DD/MM/YY HH:mm:ss')} ⌕ *Status :* ${read ? 'Dibaca' : 'Terkirim'}\n\n`
1337
}
1338
zets.sendTextWithMentions(m.chat, teks, m)
1339
}
1340
break
1341
case 'q': case 'quoted': {
1342
if (!m.quoted) return m.reply('Reply Pesannya!!')
1343
let wokwol = await zets.serializeM(await m.getQuotedObj())
1344
if (!wokwol.quoted) return m.reply('Pesan Yang anda reply tidak mengandung reply')
1345
await wokwol.quoted.copyNForward(m.chat, true)
1346
}
1347
break
1348
case 'listpc': {
1349
let anu = await store.chats.all().filter(v => v.id.endsWith('.net')).map(v => v.id)
1350
let teks = `⬣ *LIST PERSONAL CHAT*\n\nTotal Chat : ${anu.length} Chat\n\n`
1351
for (let i of anu) {
1352
let nama = store.messages[i].array[0].pushName
1353
teks += `⌕ *Nama :* ${nama}\n⌕ *User :* @${i.split('@')[0]}\n⌕ *Chat :* https://wa.me/${i.split('@')[0]}\n\n────────────────────────\n\n`
1354
}
1355
zets.sendTextWithMentions(m.chat, teks, m)
1356
}
1357
break
1358
case 'listgc': {
1359
let anu = await store.chats.all().filter(v => v.id.endsWith('@g.us')).map(v => v.id)
1360
let teks = `⬣ *LIST GROUP CHAT*\n\nTotal Group : ${anu.length} Group\n\n`
1361
for (let i of anu) {
1362
let metadata = await zets.groupMetadata(i)
1363
teks += `⌕ *Nama :* ${metadata.subject}\n⌕ *Owner :* @${metadata.owner.split('@')[0]}\n⌕ *ID :* ${metadata.id}\n⌕ *Dibuat :* ${moment(metadata.creation * 1000).tz('Asia/Jakarta').format('DD/MM/YYYY HH:mm:ss')}\n⌕ *Member :* ${metadata.participants.length}\n\n────────────────────────\n\n`
1364
}
1365
zets.sendTextWithMentions(m.chat, teks, m)
1366
}
1367
break
1368
case 'listonline': case 'liston': {
1369
let id = args && /\d+\-\[email protected]/.test(args[0]) ? args[0] : m.chat
1370
let online = [...Object.keys(store.presences[id]), botNumber]
1371
zets.sendText(m.chat, 'List Online:\n\n' + online.map(v => '⌕ @' + v.replace(/@.+/, '')).join`\n`, m, { mentions: online })
1372
}
1373
break
1374
case 'sticker': case 's': case 'stickergif': case 'sgif': {
1375
if (!quoted) throw `Balas Video/Image Dengan Caption ${prefix + command}`
1376
m.reply(mess.wait)
1377
if (/image/.test(mime)) {
1378
let media = await quoted.download()
1379
let encmedia = await zets.sendImageAsSticker(m.chat, media, m, { packname: global.packname, author: global.author })
1380
await fs.unlinkSync(encmedia)
1381
} else if (/video/.test(mime)) {
1382
if ((quoted.msg || quoted).seconds > 11) return m.reply('Maksimal 10 detik!')
1383
let media = await quoted.download()
1384
let encmedia = await zets.sendVideoAsSticker(m.chat, media, m, { packname: global.packname, author: global.author })
1385
await fs.unlinkSync(encmedia)
1386
} else {
1387
throw `Kirim Gambar/Video Dengan Caption ${prefix + command}\nDurasi Video 1-9 Detik`
1388
}
1389
}
1390
break
1391
case 'ebinary': {
1392
if (!m.quoted.text && !text) throw `Kirim/reply text dengan caption ${prefix + command}`
1393
let { eBinary } = require('./lib/binary')
1394
let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text
1395
let eb = await eBinary(teks)
1396
m.reply(eb)
1397
}
1398
break
1399
case 'dbinary': {
1400
if (!m.quoted.text && !text) throw `Kirim/reply text dengan caption ${prefix + command}`
1401
let { dBinary } = require('./lib/binary')
1402
let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text
1403
let db = await dBinary(teks)
1404
m.reply(db)
1405
}
1406
break
1407
case 'emojimix': {
1408
if (!text) throw `Example : ${prefix + command} 😅+🤔`
1409
let [emoji1, emoji2] = text.split`+`
1410
let anu = await fetchJson(`https://tenor.googleapis.com/v2/featured?key=AIzaSyAyimkuYQYF_FXVALexPuGQctUWRURdCYQ&contentfilter=high&media_filter=png_transparent&component=proactive&collection=emoji_kitchen_v5&q=${encodeURIComponent(emoji1)}_${encodeURIComponent(emoji2)}`)
1411
for (let res of anu.results) {
1412
let encmedia = await zets.sendImageAsSticker(m.chat, res.url, m, { packname: global.packname, author: global.author, categories: res.tags })
1413
await fs.unlinkSync(encmedia)
1414
}
1415
}
1416
break
1417
case 'toimage': case 'toimg': {
1418
if (!quoted) throw 'Reply Image'
1419
if (!/webp/.test(mime)) throw `balas stiker dengan caption *${prefix + command}*`
1420
m.reply(mess.wait)
1421
let media = await zets.downloadAndSaveMediaMessage(quoted)
1422
let ran = await getRandom('.png')
1423
exec(`ffmpeg -i ${media} ${ran}`, (err) => {
1424
fs.unlinkSync(media)
1425
if (err) throw err
1426
let buffer = fs.readFileSync(ran)
1427
zets.sendMessage(m.chat, { image: buffer }, { quoted: m })
1428
fs.unlinkSync(ran)
1429
})
1430
}
1431
break
1432
case 'tomp4': case 'tovideo': {
1433
if (!quoted) throw 'Reply Image'
1434
if (!/webp/.test(mime)) throw `balas stiker dengan caption *${prefix + command}*`
1435
m.reply(mess.wait)
1436
let { webp2mp4File } = require('./lib/uploader')
1437
let media = await zets.downloadAndSaveMediaMessage(quoted)
1438
let webpToMp4 = await webp2mp4File(media)
1439
await zets.sendMessage(m.chat, { video: { url: webpToMp4.result, caption: 'Convert Webp To Video' } }, { quoted: m })
1440
await fs.unlinkSync(media)
1441
}
1442
break
1443
case 'toaud': case 'toaudio': {
1444
if (!/video/.test(mime) && !/audio/.test(mime)) throw `Kirim/Reply Video/Audio Yang Ingin Dijadikan Audio Dengan Caption ${prefix + command}`
1445
if (!quoted) throw `Kirim/Reply Video/Audio Yang Ingin Dijadikan Audio Dengan Caption ${prefix + command}`
1446
m.reply(mess.wait)
1447
let media = await quoted.download()
1448
let { toAudio } = require('./lib/converter')
1449
let audio = await toAudio(media, 'mp4')
1450
zets.sendMessage(m.chat, {audio: audio, mimetype: 'audio/mpeg'}, { quoted : m })
1451
}
1452
break
1453
case 'tomp3': {
1454
if (/document/.test(mime)) throw `Kirim/Reply Video/Audio Yang Ingin Dijadikan MP3 Dengan Caption ${prefix + command}`
1455
if (!/video/.test(mime) && !/audio/.test(mime)) throw `Kirim/Reply Video/Audio Yang Ingin Dijadikan MP3 Dengan Caption ${prefix + command}`
1456
if (!quoted) throw `Kirim/Reply Video/Audio Yang Ingin Dijadikan MP3 Dengan Caption ${prefix + command}`
1457
m.reply(mess.wait)
1458
let media = await quoted.download()
1459
let { toAudio } = require('./lib/converter')
1460
let audio = await toAudio(media, 'mp4')
1461
zets.sendMessage(m.chat, {document: audio, mimetype: 'audio/mpeg', fileName: `Convert By ${zets.user.name}.mp3`}, { quoted : m })
1462
}
1463
break
1464
case 'tovn': case 'toptt': {
1465
if (!/video/.test(mime) && !/audio/.test(mime)) throw `Reply Video/Audio Yang Ingin Dijadikan VN Dengan Caption ${prefix + command}`
1466
if (!quoted) throw `Reply Video/Audio Yang Ingin Dijadikan VN Dengan Caption ${prefix + command}`
1467
m.reply(mess.wait)
1468
let media = await quoted.download()
1469
let { toPTT } = require('./lib/converter')
1470
let audio = await toPTT(media, 'mp4')
1471
zets.sendMessage(m.chat, {audio: audio, mimetype:'audio/mpeg', ptt:true }, {quoted:m})
1472
}
1473
break
1474
case 'togif': {
1475
if (!quoted) throw 'Reply Image'
1476
if (!/webp/.test(mime)) throw `balas stiker dengan caption *${prefix + command}*`
1477
m.reply(mess.wait)
1478
let { webp2mp4File } = require('./lib/uploader')
1479
let media = await zets.downloadAndSaveMediaMessage(quoted)
1480
let webpToMp4 = await webp2mp4File(media)
1481
await zets.sendMessage(m.chat, { video: { url: webpToMp4.result, caption: 'Convert Webp To Video' }, gifPlayback: true }, { quoted: m })
1482
await fs.unlinkSync(media)
1483
}
1484
break
1485
case 'tourl': {
1486
m.reply(mess.wait)
1487
let { UploadFileUgu, webp2mp4File, TelegraPh } = require('./lib/uploader')
1488
let media = await zets.downloadAndSaveMediaMessage(quoted)
1489
if (/image/.test(mime)) {
1490
let anu = await TelegraPh(media)
1491
m.reply(util.format(anu))
1492
} else if (!/image/.test(mime)) {
1493
let anu = await UploadFileUgu(media)
1494
m.reply(util.format(anu))
1495
}
1496
await fs.unlinkSync(media)
1497
}
1498
break
1499
case 'imagenobg': case 'removebg': case 'remove-bg': {
1500
if (!quoted) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
1501
if (!/image/.test(mime)) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
1502
if (/webp/.test(mime)) throw `Kirim/Reply Image Dengan Caption ${prefix + command}`
1503
let remobg = require('remove.bg')
1504
let apirnobg = ['q61faXzzR5zNU6cvcrwtUkRU','S258diZhcuFJooAtHTaPEn4T','5LjfCVAp4vVNYiTjq9mXJWHF','aT7ibfUsGSwFyjaPZ9eoJc61','BY63t7Vx2tS68YZFY6AJ4HHF','5Gdq1sSWSeyZzPMHqz7ENfi8','86h6d6u4AXrst4BVMD9dzdGZ','xp8pSDavAgfE5XScqXo9UKHF','dWbCoCb3TacCP93imNEcPxcL']
1505
let apinobg = apirnobg[Math.floor(Math.random() * apirnobg.length)]
1506
hmm = await './src/remobg-'+getRandom('')
1507
localFile = await zets.downloadAndSaveMediaMessage(quoted, hmm)
1508
outputFile = await './src/hremo-'+getRandom('.png')
1509
m.reply(mess.wait)
1510
remobg.removeBackgroundFromImageFile({
1511
path: localFile,
1512
apiKey: apinobg,
1513
size: "regular",
1514
type: "auto",
1515
scale: "100%",
1516
outputFile
1517
}).then(async result => {
1518
zets.sendMessage(m.chat, {image: fs.readFileSync(outputFile), caption: mess.success}, { quoted : m })
1519
await fs.unlinkSync(localFile)
1520
await fs.unlinkSync(outputFile)
1521
})
1522
}
1523
break
1524
case 'yts': case 'ytsearch': {
1525
if (!text) throw `Example : ${prefix + command} story wa anime`
1526
let yts = require("yt-search")
1527
let search = await yts(text)
1528
let teks = 'YouTube Search\n\n Result From '+text+'\n\n'
1529
let no = 1
1530
for (let i of search.all) {
1531
teks += `⭔ No : ${no++}\n⭔ Type : ${i.type}\n⭔ Video ID : ${i.videoId}\n⭔ Title : ${i.title}\n⭔ Views : ${i.views}\n⭔ Duration : ${i.timestamp}\n⭔ Upload At : ${i.ago}\n⭔ Author : ${i.author.name}\n⭔ Url : ${i.url}\n\n─────────────────\n\n`
1532
}
1533
zets.sendMessage(m.chat, { image: { url: search.all[0].thumbnail }, caption: teks }, { quoted: m })
1534
}
1535
break
1536
case 'google': {
1537
if (!text) throw `Example : ${prefix + command} fatih arridho`
1538
let google = require('google-it')
1539
google({'query': text}).then(res => {
1540
let teks = `Google Search From : ${text}\n\n`
1541
for (let g of res) {
1542
teks += `⌕ *Title* : ${g.title}\n`
1543
teks += `⌕ *Description* : ${g.snippet}\n`
1544
teks += `⌕ *Link* : ${g.link}\n\n────────────────────────\n\n`
1545
}
1546
m.reply(teks)
1547
})
1548
}
1549
break
1550
case 'gimage': {
1551
if (!text) throw `Example : ${prefix + command} kaori cicak`
1552
let gis = require('g-i-s')
1553
gis(text, async (error, result) => {
1554
n = result
1555
images = n[Math.floor(Math.random() * n.length)].url
1556
let buttons = [
1557
{buttonId: `gimage ${text}`, buttonText: {displayText: 'Next Image'}, type: 1}
1558
]
1559
let buttonMessage = {
1560
image: { url: images },
1561
caption: `*-------「 GIMAGE SEARCH 」-------*
1562
🤠 *Query* : ${text}
1563
🔗 *Media Url* : ${images}`,
1564
footer: zets.user.name,
1565
buttons: buttons,
1566
headerType: 4
1567
}
1568
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1569
})
1570
}
1571
break
1572
case 'dashboard':
1573
addCountCmd('#dashboard', sender, _cmd)
1574
var posi = await getPosiCmdUser(sender, _cmdUser)
1575
_cmdUser[posi].db.sort((a, b) => (a.count < b.count) ? 1 : -1)
1576
_cmd.sort((a, b) => (a.count < b.count) ? 1 : -1)
1577
var posi = await getPosiCmdUser(sender, _cmdUser)
1578
var jumlahCmd = _cmd.length
1579
if (jumlahCmd > 10) jumlahCmd = 10
1580
var jumlah = _cmdUser[posi].db.length
1581
if (jumlah > 5) jumlah = 5
1582
var totalUser = 0
1583
for (let x of _cmdUser[posi].db) {
1584
totalUser = totalUser + x.count
1585
}
1586
var total = 0
1587
for (let o of _cmd) {
1588
total = total + o.count
1589
}
1590
var teks = `*ZETS BOT DASHBOARD*\n\n*HIT*\n• GLOBAL : ${total}\n• USER : ${totalUser}\n\n`
1591
teks += `*Most Command Global*\n`
1592
for (let u = 0; u < jumlahCmd; u ++) {
1593
teks += `• ${_cmd[u].nama} : ${_cmd[u].count}\n`
1594
}
1595
teks += `\n*Most Command User*\n`
1596
for (let i = 0; i < jumlah; i ++) {
1597
teks += `• ${_cmdUser[posi].db[i].nama} : ${_cmdUser[posi].db[i].count}\n`
1598
}
1599
m.reply(teks)
1600
break
1601
case 'play': case 'ytplay': {
1602
if (!text) throw `Example : ${prefix + command} story wa anime`
1603
let yts = require("yt-search")
1604
let search = await yts(text)
1605
let anu = search.videos[Math.floor(Math.random() * search.videos.length)]
1606
let buttons = [
1607
{buttonId: `ytmp3 ${anu.url}`, buttonText: {displayText: '♫ Audio'}, type: 1},
1608
{buttonId: `ytmp4 ${anu.url}`, buttonText: {displayText: '► Video'}, type: 1}
1609
]
1610
let buttonMessage = {
1611
image: { url: anu.thumbnail },
1612
caption: `
1613
⭔ Title : ${anu.title}
1614
⭔ Ext : Search
1615
⭔ ID : ${anu.videoId}
1616
⭔ Duration : ${anu.timestamp}
1617
⭔ Viewers : ${anu.views}
1618
⭔ Upload At : ${anu.ago}
1619
⭔ Author : ${anu.author.name}
1620
⭔ Channel : ${anu.author.url}
1621
⭔ Description : ${anu.description}
1622
⭔ Url : ${anu.url}`,
1623
footer: botname,
1624
buttons: buttons,
1625
headerType: 4
1626
}
1627
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1628
}
1629
break
1630
case 'ytmp3': case 'ytaudio': {
1631
addCountCmd(`#${command.slice(1)}`, sender, _cmd)
1632
let { yta } = require('./lib/y2mate')
1633
if (!text) throw `Example : ${prefix + command} https://youtube.com/watch?v=PtFMh6Tccag%27 128kbps`
1634
let quality = args[1] ? args[1] : '128kbps'
1635
let media = await yta(text, quality)
1636
if (media.filesize >= 100000) return m.reply('File Melebihi Batas '+util.format(media))
1637
zets.sendImage(m.chat, media.thumb, `⌕ Title : ${media.title}\n⌕ File Size : ${media.filesizeF}\n⌕ Url : ${isUrl(text)}\n⌕ Ext : MP3\n⌕ Resolusi : ${args[1] || '128kbps'}`, m)
1638
zets.sendMessage(m.chat, { document: await getBuffer(media.dl_link), mimetype: 'audio/mpeg', fileName: `${media.title}.mp3` }, { quoted: m })
1639
}
1640
break
1641
case 'ytmp4': case 'ytvideo': {
1642
addCountCmd(`#${command.slice(1)}`, sender, _cmd)
1643
let { ytv } = require('./lib/y2mate')
1644
if (!text) throw `Example : ${prefix + command} https://youtube.com/watch?v=PtFMh6Tccag%27 360p`
1645
let quality = args[1] ? args[1] : '360p'
1646
let media = await ytv(text, quality)
1647
if (media.filesize >= 100000) return m.reply('File Melebihi Batas '+util.format(media))
1648
zets.sendMessage(m.chat, { video: { url: media.dl_link }, mimetype: 'video/mp4', fileName: `${media.title}.mp4`, caption: `⌕ Title : ${media.title}\n⌕ File Size : ${media.filesizeF}\n⌕ Url : ${isUrl(text)}\n⌕ Ext : MP3\n⌕ Resolusi : ${args[1] || '360p'}` }, { quoted: m })
1649
}
1650
break
1651
case 'getmusic': {
1652
let { yta } = require('./lib/y2mate')
1653
if (!text) throw `Example : ${prefix + command} 1`
1654
if (!m.quoted) return m.reply('Reply Pesan')
1655
if (!m.quoted.isBaileys) throw `Hanya Bisa Membalas Pesan Dari Bot`
1656
let urls = quoted.text.match(new RegExp(/(?:https?:\/\/)?(?:youtu\.be\/|(?:www\.|m\.)?youtube\.com\/(?:watch|v|embed|shorts)(?:\.php)?(?:\?.*v=|\/))([a-zA-Z0-9\_-]+)/, 'gi'))
1657
if (!urls) throw `Mungkin pesan yang anda reply tidak mengandung result ytsearch`
1658
let quality = args[1] ? args[1] : '128kbps'
1659
let media = await yta(urls[text - 1], quality)
1660
if (media.filesize >= 100000) return m.reply('File Melebihi Batas '+util.format(media))
1661
zets.sendImage(m.chat, media.thumb, `⌕ Title : ${media.title}\n⌕ File Size : ${media.filesizeF}\n⌕ Url : ${urls[text - 1]}\n⌕ Ext : MP3\n⌕ Resolusi : ${args[1] || '128kbps'}`, m)
1662
zets.sendMessage(m.chat, { document: await getBuffer(media.dl_link), mimetype: 'audio/mpeg', fileName: `${media.title}.mp3` }, { quoted: m })
1663
}
1664
break
1665
case 'getvideo': {
1666
let { ytv } = require('./lib/y2mate')
1667
if (!text) throw `Example : ${prefix + command} 1`
1668
if (!m.quoted) return m.reply('Reply Pesan')
1669
if (!m.quoted.isBaileys) throw `Hanya Bisa Membalas Pesan Dari Bot`
1670
let urls = quoted.text.match(new RegExp(/(?:https?:\/\/)?(?:youtu\.be\/|(?:www\.|m\.)?youtube\.com\/(?:watch|v|embed|shorts)(?:\.php)?(?:\?.*v=|\/))([a-zA-Z0-9\_-]+)/, 'gi'))
1671
if (!urls) throw `Mungkin pesan yang anda reply tidak mengandung result ytsearch`
1672
let quality = args[1] ? args[1] : '360p'
1673
let media = await ytv(urls[text - 1], quality)
1674
if (media.filesize >= 100000) return m.reply('File Melebihi Batas '+util.format(media))
1675
zets.sendMessage(m.chat, { video: { url: media.dl_link }, mimetype: 'video/mp4', fileName: `${media.title}.mp4`, caption: `⌕ Title : ${media.title}\n⌕ File Size : ${media.filesizeF}\n⌕ Url : ${urls[text - 1]}\n⌕ Ext : MP3\n⌕ Resolusi : ${args[1] || '360p'}` }, { quoted: m })
1676
}
1677
break
1678
case 'pinterest': {
1679
if (!text) throw `Example : ${prefix + command}`
1680
m.reply(mess.wait)
1681
let { pinterest } = require('./lib/scraper')
1682
anu = await pinterest(text)
1683
result = anu[Math.floor(Math.random() * anu.length)]
1684
let buttons = [
1685
{buttonId: `pinterest ${text}`, buttonText: {displayText: '► NEXT'}, type: 1}
1686
]
1687
let buttonMessage = {
1688
image: { url: result },
1689
caption: `*Klik Next Untuk Melanjutkan*`,
1690
footer: zets.user.name,
1691
buttons: buttons,
1692
headerType: 4
1693
}
1694
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1695
}
1696
break
1697
case 'anime': case 'waifu': case 'husbu': case 'neko': case 'shinobu': case 'megumin': case 'waifus': case 'nekos': case 'trap': case 'blowjob': {
1698
m.reply(mess.wait)
1699
zets.sendMessage(m.chat, { image: { url: api('zenz', '/api/random/'+command, {}, 'apikey') }, caption: 'Generate Random ' + command }, { quoted: m })
1700
}
1701
break
1702
case 'couple': {
1703
m.reply(mess.wait)
1704
let anu = await fetchJson('https://raw.githubusercontent.com/iamriz7/kopel_/main/kopel.json')
1705
let random = anu[Math.floor(Math.random() * anu.length)]
1706
zets.sendMessage(m.chat, { image: { url: random.male }, caption: `Couple Male` }, { quoted: m })
1707
zets.sendMessage(m.chat, { image: { url: random.female }, caption: `Couple Female` }, { quoted: m })
1708
}
1709
break
1710
case 'coffe': case 'kopi': {
1711
let buttons = [
1712
{buttonId: `coffe`, buttonText: {displayText: 'Next Image'}, type: 1}
1713
]
1714
let buttonMessage = {
1715
image: { url: 'https://coffee.alexflipnote.dev/random' },
1716
caption: `☕ Random Coffe`,
1717
footer: zets.user.name,
1718
buttons: buttons,
1719
headerType: 4
1720
}
1721
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1722
}
1723
break
1724
case 'wallpaper': {
1725
if (!text) throw 'Masukkan Query Title'
1726
let { wallpaper } = require('./lib/scraper')
1727
anu = await wallpaper(text)
1728
result = anu[Math.floor(Math.random() * anu.length)]
1729
let buttons = [
1730
{buttonId: `wallpaper ${text}`, buttonText: {displayText: 'Next Image'}, type: 1}
1731
]
1732
let buttonMessage = {
1733
image: { url: result.image[0] },
1734
caption: `⌕ Title : ${result.title}\n⌕ Category : ${result.type}\n⌕ Detail : ${result.source}\n⌕ Media Url : ${result.image[2] || result.image[1] || result.image[0]}`,
1735
footer: zets.user.name,
1736
buttons: buttons,
1737
headerType: 4
1738
}
1739
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1740
}
1741
break
1742
case 'wikimedia': {
1743
if (!text) throw 'Masukkan Query Title'
1744
let { wikimedia } = require('./lib/scraper')
1745
anu = await wikimedia(text)
1746
result = anu[Math.floor(Math.random() * anu.length)]
1747
let buttons = [
1748
{buttonId: `wikimedia ${text}`, buttonText: {displayText: 'Next Image'}, type: 1}
1749
]
1750
let buttonMessage = {
1751
image: { url: result.image },
1752
caption: `⌕ Title : ${result.title}\n⌕ Source : ${result.source}\n⌕ Media Url : ${result.image}`,
1753
footer: zets.user.name,
1754
buttons: buttons,
1755
headerType: 4
1756
}
1757
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1758
}
1759
break
1760
case 'quotesanime': case 'quoteanime': {
1761
let { quotesAnime } = require('./lib/scraper')
1762
let anu = await quotesAnime()
1763
result = anu[Math.floor(Math.random() * anu.length)]
1764
let buttons = [
1765
{buttonId: `quotesanime`, buttonText: {displayText: 'Next'}, type: 1}
1766
]
1767
let buttonMessage = {
1768
text: `~_${result.quotes}_\n\nBy '${result.karakter}', ${result.anime}\n\n- ${result.up_at}`,
1769
footer: 'Press The Button Below',
1770
buttons: buttons,
1771
headerType: 2
1772
}
1773
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1774
}
1775
break
1776
case 'motivasi': case 'dilanquote': case 'bucinquote': case 'katasenja': case 'puisi': {
1777
let anu = await fetchJson(api('zenz', '/api/'+command, {}, 'apikey'))
1778
let buttons = [
1779
{buttonId: `motivasi`, buttonText: {displayText: 'Next'}, type: 1}
1780
]
1781
let buttonMessage = {
1782
text: anu.result.message,
1783
footer: 'Press The Button Below',
1784
buttons: buttons,
1785
headerType: 2
1786
}
1787
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
1788
}
1789
break
1790
1791
//────────────────────[ TEXT PROO ]────────────────────
1792
1793
case 'neon': case 'snowtext': case 'cloudtext': case '3dluxury': case '3dgradient': case 'blackpink': case 'realisticvintage': case 'realisticloud': case 'cloudsky': case 'sandsummerbeach': case 'sandwriting': case 'sandengraved': case 'ballontext': case '3dglue': case 'space3d': case 'metaldarkgold': case 'glitch': case 'neongalaxy': case '1917text': case 'minion3d': case 'holographic3d': case 'metalpurple': case 'duluxesilver': case 'bluemetal': case 'duluxegold': case 'glossycarbon': case 'febric': case 'stone': case 'pornhub': case '3davengers': case 'marvelstudios': case 'marvel': case 'happynewyear': case 'newyear3d': case 'neontext': case 'darkgoldeffect': case 'hollowenfire': case 'bloodtext': case 'xmas3d': case '3dmetalsilver': case '3drosegold': case '3dmetalgold': case '3dmetalgalaxy': case 'lionlogo': case 'wolflogoblack': case 'wolflogogalaxy': case 'ninjalogo': case 'jokerlogo': case 'wicker': case 'naturalleaves': case 'fireworksparkle': case 'skeleton': case 'redfoilballon': case 'purplefoilballon': case 'pinkfoilballon': case 'greenfoilballon': case 'cyanfoilballon': case 'bluefoilballon': case 'goldfoilballon': case 'steel': case 'ultragloss': case 'denim': case 'decorategreen': case 'decoratepurple': case 'peridotstone': case 'rock': case 'lava': case 'yellowglass': case 'purpleglass': case 'orangeglass': case 'greenglass': case 'blueglass': case 'redglass': case 'purpleshinyglass': case 'captainamerica': case 'robotr2d2': case 'toxic': case 'rainbowequalizier': case 'pinksparklingjewelry': {
1794
if (!text) throw `Example : ${prefix + command} text`
1795
m.reply(mess.wait)
1796
anu = await getBuffer(`https://xteam.xyz/textpro/${command}?text=${text}&APIKEY=${global.xteam}`)
1797
zets.sendMessage(m.chat, { image: anu, caption: `Text Pro ${command}` }, { quoted: m}).catch((err) => m.reply('Maaf server Xteam sedang down'))
1798
}
1799
break
1800
1801
//────────────────────[ PRIMBON ]────────────────────
1802
1803
case 'nomerhoki': case 'nomorhoki': {
1804
if (!Number(text)) throw `Example : ${prefix + command} 6288292024190`
1805
let anu = await primbon.nomer_hoki(Number(text))
1806
if (anu.status == false) return m.reply(anu.message)
1807
zets.sendText(m.chat, `⌕ *Nomor HP :* ${anu.message.nomer_hp}\n⌕ *Angka Shuzi :* ${anu.message.angka_shuzi}\n⌕ *Energi Positif :*\n- Kekayaan : ${anu.message.energi_positif.kekayaan}\n- Kesehatan : ${anu.message.energi_positif.kesehatan}\n- Cinta : ${anu.message.energi_positif.cinta}\n- Kestabilan : ${anu.message.energi_positif.kestabilan}\n- Persentase : ${anu.message.energi_positif.persentase}\n⌕ *Energi Negatif :*\n- Perselisihan : ${anu.message.energi_negatif.perselisihan}\n- Kehilangan : ${anu.message.energi_negatif.kehilangan}\n- Malapetaka : ${anu.message.energi_negatif.malapetaka}\n- Kehancuran : ${anu.message.energi_negatif.kehancuran}\n- Persentase : ${anu.message.energi_negatif.persentase}`, m)
1808
}
1809
break
1810
case 'artimimpi': case 'tafsirmimpi': {
1811
if (!text) throw `Example : ${prefix + command} belanja`
1812
let anu = await primbon.tafsir_mimpi(text)
1813
if (anu.status == false) return m.reply(anu.message)
1814
zets.sendText(m.chat, `⌕ *Mimpi :* ${anu.message.mimpi}\n⌕ *Arti :* ${anu.message.arti}\n⌕ *Solusi :* ${anu.message.solusi}`, m)
1815
}
1816
break
1817
case 'ramalanjodoh': case 'ramaljodoh': {
1818
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005, Novia, 16, 11, 2004`
1819
let [nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2] = text.split`,`
1820
let anu = await primbon.ramalan_jodoh(nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2)
1821
if (anu.status == false) return m.reply(anu.message)
1822
zets.sendText(m.chat, `⌕ *Nama Anda :* ${anu.message.nama_anda.nama}\n⌕ *Lahir Anda :* ${anu.message.nama_anda.tgl_lahir}\n⌕ *Nama Pasangan :* ${anu.message.nama_pasangan.nama}\n⌕ *Lahir Pasangan :* ${anu.message.nama_pasangan.tgl_lahir}\n⌕ *Hasil :* ${anu.message.result}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1823
}
1824
break
1825
case 'ramalanjodohbali': case 'ramaljodohbali': {
1826
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005, Novia, 16, 11, 2004`
1827
let [nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2] = text.split`,`
1828
let anu = await primbon.ramalan_jodoh_bali(nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2)
1829
if (anu.status == false) return m.reply(anu.message)
1830
zets.sendText(m.chat, `⌕ *Nama Anda :* ${anu.message.nama_anda.nama}\n⌕ *Lahir Anda :* ${anu.message.nama_anda.tgl_lahir}\n⌕ *Nama Pasangan :* ${anu.message.nama_pasangan.nama}\n⌕ *Lahir Pasangan :* ${anu.message.nama_pasangan.tgl_lahir}\n⌕ *Hasil :* ${anu.message.result}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1831
}
1832
break
1833
case 'suamiistri': {
1834
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005, Novia, 16, 11, 2004`
1835
let [nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2] = text.split`,`
1836
let anu = await primbon.suami_istri(nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2)
1837
if (anu.status == false) return m.reply(anu.message)
1838
zets.sendText(m.chat, `⌕ *Nama Suami :* ${anu.message.suami.nama}\n⌕ *Lahir Suami :* ${anu.message.suami.tgl_lahir}\n⌕ *Nama Istri :* ${anu.message.istri.nama}\n⌕ *Lahir Istri :* ${anu.message.istri.tgl_lahir}\n⌕ *Hasil :* ${anu.message.result}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1839
}
1840
break
1841
case 'ramalancinta': case 'ramalcinta': {
1842
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005, Novia, 16, 11, 2004`
1843
let [nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2] = text.split`,`
1844
let anu = await primbon.ramalan_cinta(nama1, tgl1, bln1, thn1, nama2, tgl2, bln2, thn2)
1845
if (anu.status == false) return m.reply(anu.message)
1846
zets.sendText(m.chat, `⌕ *Nama Anda :* ${anu.message.nama_anda.nama}\n⌕ *Lahir Anda :* ${anu.message.nama_anda.tgl_lahir}\n⌕ *Nama Pasangan :* ${anu.message.nama_pasangan.nama}\n⌕ *Lahir Pasangan :* ${anu.message.nama_pasangan.tgl_lahir}\n⌕ *Sisi Positif :* ${anu.message.sisi_positif}\n⌕ *Sisi Negatif :* ${anu.message.sisi_negatif}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1847
}
1848
break
1849
case 'artinama': {
1850
if (!text) throw `Example : ${prefix + command} Dika Ardianta`
1851
let anu = await primbon.arti_nama(text)
1852
if (anu.status == false) return m.reply(anu.message)
1853
zets.sendText(m.chat, `⌕ *Nama :* ${anu.message.nama}\n⌕ *Arti :* ${anu.message.arti}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1854
}
1855
break
1856
case 'kecocokannama': case 'cocoknama': {
1857
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005`
1858
let [nama, tgl, bln, thn] = text.split`,`
1859
let anu = await primbon.kecocokan_nama(nama, tgl, bln, thn)
1860
if (anu.status == false) return m.reply(anu.message)
1861
zets.sendText(m.chat, `⌕ *Nama :* ${anu.message.nama}\n⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Life Path :* ${anu.message.life_path}\n⌕ *Destiny :* ${anu.message.destiny}\n⌕ *Destiny Desire :* ${anu.message.destiny_desire}\n⌕ *Personality :* ${anu.message.personality}\n⌕ *Persentase :* ${anu.message.persentase_kecocokan}`, m)
1862
}
1863
break
1864
case 'kecocokanpasangan': case 'cocokpasangan': case 'pasangan': {
1865
if (!text) throw `Example : ${prefix + command} Dika|Novia`
1866
let [nama1, nama2] = text.split`|`
1867
let anu = await primbon.kecocokan_nama_pasangan(nama1, nama2)
1868
if (anu.status == false) return m.reply(anu.message)
1869
zets.sendImage(m.chat, anu.message.gambar, `⌕ *Nama Anda :* ${anu.message.nama_anda}\n⌕ *Nama Pasangan :* ${anu.message.nama_pasangan}\n⌕ *Sisi Positif :* ${anu.message.sisi_positif}\n⌕ *Sisi Negatif :* ${anu.message.sisi_negatif}`, m)
1870
}
1871
break
1872
case 'jadianpernikahan': case 'jadiannikah': {
1873
if (!text) throw `Example : ${prefix + command} 6, 12, 2020`
1874
let [tgl, bln, thn] = text.split`,`
1875
let anu = await primbon.tanggal_jadian_pernikahan(tgl, bln, thn)
1876
if (anu.status == false) return m.reply(anu.message)
1877
zets.sendText(m.chat, `⌕ *Tanggal Pernikahan :* ${anu.message.tanggal}\n⌕ *karakteristik :* ${anu.message.karakteristik}`, m)
1878
}
1879
break
1880
case 'sifatusaha': {
1881
if (!ext)throw `Example : ${prefix+ command} 28, 12, 2021`
1882
let [tgl, bln, thn] = text.split`,`
1883
let anu = await primbon.sifat_usaha_bisnis(tgl, bln, thn)
1884
if (anu.status == false) return m.reply(anu.message)
1885
zets.sendText(m.chat, `⌕ *Lahir :* ${anu.message.hari_lahir}\n⌕ *Usaha :* ${anu.message.usaha}`, m)
1886
}
1887
break
1888
case 'rejeki': case 'rezeki': {
1889
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1890
let [tgl, bln, thn] = text.split`,`
1891
let anu = await primbon.rejeki_hoki_weton(tgl, bln, thn)
1892
if (anu.status == false) return m.reply(anu.message)
1893
zets.sendText(m.chat, `⌕ *Lahir :* ${anu.message.hari_lahir}\n⌕ *Rezeki :* ${anu.message.rejeki}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1894
}
1895
break
1896
case 'pekerjaan': case 'kerja': {
1897
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1898
let [tgl, bln, thn] = text.split`,`
1899
let anu = await primbon.pekerjaan_weton_lahir(tgl, bln, thn)
1900
if (anu.status == false) return m.reply(anu.message)
1901
zets.sendText(m.chat, `⌕ *Lahir :* ${anu.message.hari_lahir}\n⌕ *Pekerjaan :* ${anu.message.pekerjaan}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1902
}
1903
break
1904
case 'ramalannasib': case 'ramalnasib': case 'nasib': {
1905
if (!text) throw `Example : 7, 7, 2005`
1906
let [tgl, bln, thn] = text.split`,`
1907
let anu = await primbon.ramalan_nasib(tgl, bln, thn)
1908
if (anu.status == false) return m.reply(anu.message)
1909
zets.sendText(m.chat, `⌕ *Analisa :* ${anu.message.analisa}\n⌕ *Angka Akar :* ${anu.message.angka_akar}\n⌕ *Sifat :* ${anu.message.sifat}\n⌕ *Elemen :* ${anu.message.elemen}\n⌕ *Angka Keberuntungan :* ${anu.message.angka_keberuntungan}`, m)
1910
}
1911
break
1912
case 'potensipenyakit': case 'penyakit': {
1913
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1914
let [tgl, bln, thn] = text.split`,`
1915
let anu = await primbon.cek_potensi_penyakit(tgl, bln, thn)
1916
if (anu.status == false) return m.reply(anu.message)
1917
zets.sendText(m.chat, `⌕ *Analisa :* ${anu.message.analisa}\n⌕ *Sektor :* ${anu.message.sektor}\n⌕ *Elemen :* ${anu.message.elemen}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1918
}
1919
break
1920
case 'artitarot': case 'tarot': {
1921
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1922
let [tgl, bln, thn] = text.split`,`
1923
let anu = await primbon.arti_kartu_tarot(tgl, bln, thn)
1924
if (anu.status == false) return m.reply(anu.message)
1925
zets.sendImage(m.chat, anu.message.image, `⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Simbol Tarot :* ${anu.message.simbol_tarot}\n⌕ *Arti :* ${anu.message.arti}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1926
}
1927
break
1928
case 'fengshui': {
1929
if (!text) throw `Example : ${prefix + command} Dika, 1, 2005\n\nNote : ${prefix + command} Nama, gender, tahun lahir\nGender : 1 untuk laki-laki & 2 untuk perempuan`
1930
let [nama, gender, tahun] = text.split`,`
1931
let anu = await primbon.perhitungan_feng_shui(nama, gender, tahun)
1932
if (anu.status == false) return m.reply(anu.message)
1933
zets.sendText(m.chat, `⌕ *Nama :* ${anu.message.nama}\n⌕ *Lahir :* ${anu.message.tahun_lahir}\n⌕ *Gender :* ${anu.message.jenis_kelamin}\n⌕ *Angka Kua :* ${anu.message.angka_kua}\n⌕ *Kelompok :* ${anu.message.kelompok}\n⌕ *Karakter :* ${anu.message.karakter}\n⌕ *Sektor Baik :* ${anu.message.sektor_baik}\n⌕ *Sektor Buruk :* ${anu.message.sektor_buruk}`, m)
1934
}
1935
break
1936
case 'haribaik': {
1937
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1938
let [tgl, bln, thn] = text.split`,`
1939
let anu = await primbon.petung_hari_baik(tgl, bln, thn)
1940
if (anu.status == false) return m.reply(anu.message)
1941
zets.sendText(m.chat, `⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Kala Tinantang :* ${anu.message.kala_tinantang}\n⌕ *Info :* ${anu.message.info}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1942
}
1943
break
1944
case 'harisangar': case 'taliwangke': {
1945
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1946
let [tgl, bln, thn] = text.split`,`
1947
let anu = await primbon.hari_sangar_taliwangke(tgl, bln, thn)
1948
if (anu.status == false) return m.reply(anu.message)
1949
zets.sendText(m.chat, `⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Hasil :* ${anu.message.result}\n⌕ *Info :* ${anu.message.info}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1950
}
1951
break
1952
case 'harinaas': case 'harisial': {
1953
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1954
let [tgl, bln, thn] = text.split`,`
1955
let anu = await primbon.primbon_hari_naas(tgl, bln, thn)
1956
if (anu.status == false) return m.reply(anu.message)
1957
zets.sendText(m.chat, `⌕ *Hari Lahir :* ${anu.message.hari_lahir}\n⌕ *Tanggal Lahir :* ${anu.message.tgl_lahir}\n⌕ *Hari Naas :* ${anu.message.hari_naas}\n⌕ *Info :* ${anu.message.catatan}\n⌕ *Catatan :* ${anu.message.info}`, m)
1958
}
1959
break
1960
case 'nagahari': case 'harinaga': {
1961
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1962
let [tgl, bln, thn] = text.split`,`
1963
let anu = await primbon.rahasia_naga_hari(tgl, bln, thn)
1964
if (anu.status == false) return m.reply(anu.message)
1965
zets.sendText(m.chat, `⌕ *Hari Lahir :* ${anu.message.hari_lahir}\n⌕ *Tanggal Lahir :* ${anu.message.tgl_lahir}\n⌕ *Arah Naga Hari :* ${anu.message.arah_naga_hari}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1966
}
1967
break
1968
case 'arahrejeki': case 'arahrezeki': {
1969
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1970
let [tgl, bln, thn] = text.split`,`
1971
let anu = await primbon.primbon_arah_rejeki(tgl, bln, thn)
1972
if (anu.status == false) return m.reply(anu.message)
1973
zets.sendText(m.chat, `⌕ *Hari Lahir :* ${anu.message.hari_lahir}\n⌕ *tanggal Lahir :* ${anu.message.tgl_lahir}\n⌕ *Arah Rezeki :* ${anu.message.arah_rejeki}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1974
}
1975
break
1976
case 'peruntungan': {
1977
if (!text) throw `Example : ${prefix + command} DIka, 7, 7, 2005, 2022\n\nNote : ${prefix + command} Nama, tanggal lahir, bulan lahir, tahun lahir, untuk tahun`
1978
let [nama, tgl, bln, thn, untuk] = text.split`,`
1979
let anu = await primbon.ramalan_peruntungan(nama, tgl, bln, thn, untuk)
1980
if (anu.status == false) return m.reply(anu.message)
1981
zets.sendText(m.chat, `⌕ *Nama :* ${anu.message.nama}\n⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Peruntungan Tahun :* ${anu.message.peruntungan_tahun}\n⌕ *Hasil :* ${anu.message.result}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
1982
}
1983
break
1984
case 'weton': case 'wetonjawa': {
1985
if (!text) throw `Example : ${prefix + command} 7, 7, 2005`
1986
let [tgl, bln, thn] = text.split`,`
1987
let anu = await primbon.weton_jawa(tgl, bln, thn)
1988
if (anu.status == false) return m.reply(anu.message)
1989
zets.sendText(m.chat, `⌕ *Tanggal :* ${anu.message.tanggal}\n⌕ *Jumlah Neptu :* ${anu.message.jumlah_neptu}\n⌕ *Watak Hari :* ${anu.message.watak_hari}\n⌕ *Naga Hari :* ${anu.message.naga_hari}\n⌕ *Jam Baik :* ${anu.message.jam_baik}\n⌕ *Watak Kelahiran :* ${anu.message.watak_kelahiran}`, m)
1990
}
1991
break
1992
case 'sifat': case 'karakter': {
1993
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005`
1994
let [nama, tgl, bln, thn] = text.split`,`
1995
let anu = await primbon.sifat_karakter_tanggal_lahir(nama, tgl, bln, thn)
1996
if (anu.status == false) return m.reply(anu.message)
1997
zets.sendText(m.chat, `⌕ *Nama :* ${anu.message.nama}\n⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Garis Hidup :* ${anu.message.garis_hidup}`, m)
1998
}
1999
break
2000
case 'keberuntungan': {
2001
if (!text) throw `Example : ${prefix + command} Dika, 7, 7, 2005`
2002
let [nama, tgl, bln, thn] = text.split`,`
2003
let anu = await primbon.potensi_keberuntungan(nama, tgl, bln, thn)
2004
if (anu.status == false) return m.reply(anu.message)
2005
zets.sendText(m.chat, `⌕ *Nama :* ${anu.message.nama}\n⌕ *Lahir :* ${anu.message.tgl_lahir}\n⌕ *Hasil :* ${anu.message.result}`, m)
2006
}
2007
break
2008
case 'memancing': {
2009
if (!text) throw `Example : ${prefix + command} 12, 1, 2022`
2010
let [tgl, bln, thn] = text.split`,`
2011
let anu = await primbon.primbon_memancing_ikan(tgl, bln, thn)
2012
if (anu.status == false) return m.reply(anu.message)
2013
zets.sendText(m.chat, `⌕ *Tanggal :* ${anu.message.tgl_memancing}\n⌕ *Hasil :* ${anu.message.result}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
2014
}
2015
break
2016
case 'masasubur': {
2017
if (!text) throw `Example : ${prefix + command} 12, 1, 2022, 28\n\nNote : ${prefix + command} hari pertama menstruasi, siklus`
2018
let [tgl, bln, thn, siklus] = text.split`,`
2019
let anu = await primbon.masa_subur(tgl, bln, thn, siklus)
2020
if (anu.status == false) return m.reply(anu.message)
2021
zets.sendText(m.chat, `⌕ *Hasil :* ${anu.message.result}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
2022
}
2023
break
2024
case 'zodiak': case 'zodiac': {
2025
if (!text) throw `Example : ${prefix+ command} 7 7 2005`
2026
let zodiak = [
2027
["capricorn", new Date(1970, 0, 1)],
2028
["aquarius", new Date(1970, 0, 20)],
2029
["pisces", new Date(1970, 1, 19)],
2030
["aries", new Date(1970, 2, 21)],
2031
["taurus", new Date(1970, 3, 21)],
2032
["gemini", new Date(1970, 4, 21)],
2033
["cancer", new Date(1970, 5, 22)],
2034
["leo", new Date(1970, 6, 23)],
2035
["virgo", new Date(1970, 7, 23)],
2036
["libra", new Date(1970, 8, 23)],
2037
["scorpio", new Date(1970, 9, 23)],
2038
["sagittarius", new Date(1970, 10, 22)],
2039
["capricorn", new Date(1970, 11, 22)]
2040
].reverse()
2041
2042
function getZodiac(month, day) {
2043
let d = new Date(1970, month - 1, day)
2044
return zodiak.find(([_,_d]) => d >= _d)[0]
2045
}
2046
let date = new Date(text)
2047
if (date == 'Invalid Date') throw date
2048
let d = new Date()
2049
let [tahun, bulan, tanggal] = [d.getFullYear(), d.getMonth() + 1, d.getDate()]
2050
let birth = [date.getFullYear(), date.getMonth() + 1, date.getDate()]
2051
2052
let zodiac = await getZodiac(birth[1], birth[2])
2053
2054
let anu = await primbon.zodiak(zodiac)
2055
if (anu.status == false) return m.reply(anu.message)
2056
zets.sendText(m.chat, `⌕ *Zodiak :* ${anu.message.zodiak}\n⌕ *Nomor :* ${anu.message.nomor_keberuntungan}\n⌕ *Aroma :* ${anu.message.aroma_keberuntungan}\n⌕ *Planet :* ${anu.message.planet_yang_mengitari}\n⌕ *Bunga :* ${anu.message.bunga_keberuntungan}\n⌕ *Warna :* ${anu.message.warna_keberuntungan}\n⌕ *Batu :* ${anu.message.batu_keberuntungan}\n⌕ *Elemen :* ${anu.message.elemen_keberuntungan}\n⌕ *Pasangan Zodiak :* ${anu.message.pasangan_zodiak}\n⌕ *Catatan :* ${anu.message.catatan}`, m)
2057
}
2058
break
2059
case 'shio': {
2060
if (!text) throw `Example : ${prefix + command} tikus\n\nNote : For Detail https://primbon.com/shio.htm`
2061
let anu = await primbon.shio(text)
2062
if (anu.status == false) return m.reply(anu.message)
2063
zets.sendText(m.chat, `⌕ *Hasil :* ${anu.message}`, m)
2064
}
2065
break
2066
case 'stalker': case 'stalk': {
2067
if (!isPremium && global.db.data.users[m.sender].limit < 1) return m.reply('Limit Harian Anda Telah Habis')
2068
if (!text) return m.reply(`Example : ${prefix +command} type id\n\nList Type :\n1. ff (Free Fire)\n2. ml (Mobile Legends)\n3. aov (Arena Of Valor)\n4. cod (Call Of Duty)\n5. pb (point Blank)\n6. ig (Instagram)\n7. npm (https://npmjs.com)`)
2069
let [type, id, zone] = args
2070
if (type.toLowerCase() == 'ff') {
2071
if (!id) throw `No Query id, Example ${prefix + command} ff 552992060`
2072
let anu = await fetchJson(api('zenz', '/api/nickff', { apikey: global.APIKeys[global.APIs['zenz']], query: id }))
2073
if (anu.status == false) return m.reply(anu.result.message)
2074
m.reply(`ID : ${anu.result.gameId}\nUsername : ${anu.result.userName}`)
2075
db.data.users[m.sender].limit -= 1
2076
} else if (type.toLowerCase() == 'ml') {
2077
if (!id) throw `No Query id, Example : ${prefix + command} ml 214885010 2253`
2078
if (!zone) throw `No Query id, Example : ${prefix + command} ml 214885010 2253`
2079
let anu = await fetchJson(api('zenz', '/api/nickml', { apikey: global.APIKeys[global.APIs['zenz']], query: id, query2: zone }))
2080
if (anu.status == false) return m.reply(anu.result.message)
2081
m.reply(`ID : ${anu.result.gameId}\nZone : ${anu.result.zoneId}\nUsername : ${anu.result.userName}`)
2082
db.data.users[m.sender].limit -= 1
2083
} else if (type.toLowerCase() == 'aov') {
2084
if (!id) throw `No Query id, Example ${prefix + command} aov 293306941441181`
2085
let anu = await fetchJson(api('zenz', '/api/nickaov', { apikey: global.APIKeys[global.APIs['zenz']], query: id }))
2086
if (anu.status == false) return m.reply(anu.result.message)
2087
m.reply(`ID : ${anu.result.gameId}\nUsername : ${anu.result.userName}`)
2088
db.data.users[m.sender].limit -= 1
2089
} else if (type.toLowerCase() == 'cod') {
2090
if (!id) throw `No Query id, Example ${prefix + command} cod 6290150021186841472`
2091
let anu = await fetchJson(api('zenz', '/api/nickcod', { apikey: global.APIKeys[global.APIs['zenz']], query: id }))
2092
if (anu.status == false) return m.reply(anu.result.message)
2093
m.reply(`ID : ${anu.result.gameId}\nUsername : ${anu.result.userName}`)
2094
db.data.users[m.sender].limit -= 1
2095
} else if (type.toLowerCase() == 'pb') {
2096
if (!id) throw `No Query id, Example ${prefix + command} pb riio46`
2097
let anu = await fetchJson(api('zenz', '/api/nickpb', { apikey: global.APIKeys[global.APIs['zenz']], query: id }))
2098
if (anu.status == false) return m.reply(anu.result.message)
2099
m.reply(`ID : ${anu.result.gameId}\nUsername : ${anu.result.userName}`)
2100
db.data.users[m.sender].limit -= 1
2101
} else if (type.toLowerCase() == 'ig') {
2102
if (!id) throw `No Query username, Example : ${prefix + command} ig cak_haho`
2103
let { result: anu } = await fetchJson(api('zenz', '/api/stalker/ig', { username: id }, 'apikey'))
2104
if (anu.status == false) return m.reply(anu.result.message)
2105
zets.sendMedia(m.chat, anu.caption.profile_hd, '', `⌕ Full Name : ${anu.caption.full_name}\n⌕ User Name : ${anu.caption.user_name}\n⌕ ID ${anu.caption.user_id}\n⌕ Followers : ${anu.caption.followers}\n⌕ Following : ${anu.caption.following}\n⌕ Bussines : ${anu.caption.bussines}\n⌕ Profesional : ${anu.caption.profesional}\n⌕ Verified : ${anu.caption.verified}\n⌕ Private : ${anu.caption.private}\n⌕ Bio : ${anu.caption.biography}\n⌕ Bio Url : ${anu.caption.bio_url}`, m)
2106
db.data.users[m.sender].limit -= 1
2107
} else if (type.toLowerCase() == 'npm') {
2108
if (!id) throw `No Query username, Example : ${prefix + command} npm scrape-primbon`
2109
let { result: anu } = await fetchJson(api('zenz', '/api/stalker/npm', { query: id }, 'apikey'))
2110
if (anu.status == false) return m.reply(anu.result.message)
2111
m.reply(`⌕ Name : ${anu.name}\n⌕ Version : ${Object.keys(anu.versions)}\n⌕ Created : ${tanggal(anu.time.created)}\n⌕ Modified : ${tanggal(anu.time.modified)}\n⌕ Maintainers :\n ${anu.maintainers.map(v => `- ${v.name} : ${v.email}`).join('\n')}\n\n⌕ Description : ${anu.description}\n⌕ Homepage : ${anu.homepage}\n⌕ Keywords : ${anu.keywords}\n⌕ Author : ${anu.author.name}\n⌕ License : ${anu.license}\n⌕ Readme : ${anu.readme}`)
2112
db.data.users[m.sender].limit -= 1
2113
} else {
2114
m.reply(`Example : ${prefix +command} type id\n\nList Type :\n1. ff (Free Fire)\n2. ml (Mobile Legends)\n3. aov (Arena Of Valor)\n4. cod (Call Of Duty)\n5. pb (point Blank)\n6. ig (Instagram)\n7. npm (https://npmjs.com)`)
2115
}
2116
}
2117
break
2118
2119
//────────────────────[ DOWNLOADER ]────────────────────
2120
2121
case 'tiktok': {
2122
if (!text) throw 'Masukkan Query Link!'
2123
m.reply(mess.wait)
2124
hx.ttdownloader(q).then( data => {
2125
zets.sendMessage(m.chat, {
2126
video: { url: data.wm },
2127
caption: `Kamu bisa mengubahnya menjadi Vidio Tanpa Watermark atau Audio, pencet tombol dibawah untuk mengubahnya!`,
2128
buttons: [{buttonId: `${prefix}ttnowm ${args[0]} ${m.sender}`, buttonText: { displayText: "Tiktok Nowm" }, type: 1 }],
2129
footer: "Untuk Mengubah Ke Audio Gunakan Manual #tiktokaudio [link]"
2130
}, { quoted: m })
2131
})
2132
}
2133
break
2134
2135
case 'ttnowm':
2136
if (!text) throw 'Masukkan Query Link!'
2137
m.reply(mess.wait)
2138
hx.ttdownloader(q).then( data => {
2139
zets.sendMessage(m.chat, { video: { url: data.nowm }, mimetype: 'video/mp4' }, { quoted: m })
2140
})
2141
break
2142
2143
case 'ttaudio':
2144
if (!text) throw 'Masukkan Query Link!'
2145
m.reply(mess.wait)
2146
hx.ttdownloader(q).then( data => {
2147
zets.sendMessage(m.chat, { audio: { url: data.nowm }, mimetype: 'audio/mp4' }, { quoted: m })
2148
})
2149
break
2150
2151
case 'ig': case 'igdl': case 'instagram': {
2152
if (!text) throw 'Masukkan Query Link!'
2153
if (!isUrl(args[0]) && !args[0].includes('instagram.com')) throw 'Link yang kamu berikan tidak.valid'
2154
m.reply(mess.wait)
2155
let urlnya = text
2156
hx.igdl(urlnya)
2157
.then(async(result) => {
2158
for(let i of result.medias){
2159
if(i.url.includes('mp4')){
2160
let link = await getBuffer(i.url)
2161
zets.sendMessage(m.chat, { video: link, }, { quoted: m })
2162
} else {
2163
let link = await getBuffer(i.url)
2164
zets.sendMessage(m.chat, { image: link, }, { quoted: m })
2165
}
2166
}
2167
}).catch((err) => m.reply(`Server eror`))
2168
}
2169
break
2170
2171
case 'igs': case 'igstory': case 'instagramstory': {
2172
if (!text) throw 'Masukkan Username!'
2173
m.reply(mess.wait)
2174
hx.igstory(text)
2175
.then(async(result) => {
2176
for(let i of result.medias){
2177
if(i.url.includes('mp4')){
2178
let link = await getBuffer(i.url)
2179
zets.sendMessage(m.chat, { video: link, }, { quoted: m })
2180
} else {
2181
let link = await getBuffer(i.url)
2182
zets.sendMessage(m.chat, { image: link, }, { quoted: m })
2183
}
2184
}
2185
}).catch((err) => m.reply(`Sorry the username was not found`))
2186
}
2187
break
2188
2189
case 'joox': case 'jooxdl': {
2190
if (!text) throw 'No Query Title'
2191
m.reply(mess.wait)
2192
let anu = await fetchJson(`https://api.lolhuman.xyz/api/jooxplay?apikey=${global.lolhuman}&query=${text}`)
2193
let msg = await zets.sendImage(m.chat, anu.result.image, `⌕ Title : ${anu.result.info.song}\n⌕ Album : ${anu.result.info.album}\n⌕ Singer : ${anu.result.info.song}\n⌕ Publish : ${anu.result.info.date}\n⌕ Lirik :\n${anu.result.audio[0].link}`, m)
2194
zets.sendMessage(m.chat, { audio: { url: anu.result.audio[0].link }, mimetype: 'audio/mpeg' }, { quoted: msg })
2195
}
2196
break
2197
2198
case 'fbdl': case 'fb': case 'facebook': {
2199
if (!text) throw 'Masukkan Query Link!'
2200
if (!isUrl(args[0]) && !args[0].includes('facebook.com')) throw 'Link yang kamu berikan tidak.valid'
2201
m.reply(mess.wait)
2202
xa.Facebook(`${text}`).then(async (data) => {
2203
let txt = `*----「 FACEBOOK MP4 」----*\n\n`
2204
txt += `*• Title :* ${data.title}\n`
2205
txt += `*• Quality :* ${data.medias[1].quality}\n`
2206
txt += `*• Type :* ${data.medias[1].extension}\n`
2207
txt += `*• Size :* ${data.medias[1].formattedSize}\n`
2208
txt += `*• Url Source :* ${data.url}\n\n`
2209
txt += `*Halo Kak ${pushname} Bot Telah Mendapatkan Title Tersebut Silahkan Tunggu Beberapa Menit, Jangan Lupa Donasi Ya Kak*`
2210
zets.sendMessage(m.chat, { video: { url: data.medias[1].url }, caption: `${txt}`}, { quoted: m })
2211
}).catch((err) => {
2212
m.reply(`*Gagal Saat mendownload media dan mengirm video*`)
2213
})
2214
}
2215
break
2216
2217
case 'umma': case 'ummadl': {
2218
if (!text) throw `Example : ${prefix + command} https://umma.id/channel/video/post/gus-arafat-sumber-kecewa-84464612933698`
2219
let { umma } = require('./lib) scraper')
2220
let anu = await umma(isUrl(text)[0])
2221
if (anu.type == 'video') {
2222
let buttons = [
2223
{buttonId: `ytmp3 ${anu.media[0]} 128kbps`, buttonText: {displayText: '♫ Audio'}, type: 1},
2224
{buttonId: `ytmp4 ${anu.media[0]} 360p`, buttonText: {displayText: '► Video'}, type: 1}
2225
]
2226
let buttonMessage = {
2227
image: { url: anu.author.profilePic },
2228
caption: `
2229
⌕ Title : ${anu.title}
2230
⌕ Author : ${anu.author.name}
2231
⌕ Like : ${anu.like}
2232
⌕ Caption : ${anu.caption}
2233
⌕ Url : ${anu.media[0]}
2234
Untuk Download Media Silahkan Klik salah satu Button dibawah ini atau masukkan command ytmp3/ytmp4 dengan url diatas
2235
`,
2236
footer: zets.user.name,
2237
buttons,
2238
headerType: 4
2239
}
2240
zets.sendMessage(m.chat, buttonMessage, { quoted: m })
2241
} else if (anu.type == 'image') {
2242
anu.media.map(async (url) => {
2243
zets.sendMessage(m.chat, { image: { url }, caption: `⌕ Title : ${anu.title}\n⌕ Author : ${anu.author.name}\n⌕ Like : ${anu.like}\n⌕ Caption : ${anu.caption}` }, { quoted: m })
2244
})
2245
}
2246
}
2247
break
2248
2249
//────────────────────[ ISLAMIC FEATURE ]────────────────────
2250
2251
case 'ringtone': {
2252
if (!text) throw `Example : ${prefix + command} black rover`
2253
let { ringtone } = require('./lib/scraper')
2254
let anu = await ringtone(text)
2255
let result = anu[Math.floor(Math.random() * anu.length)]
2256
zets.sendMessage(m.chat, { audio: { url: result.audio }, fileName: result.title+'.mp3', mimetype: 'audio/mpeg' }, { quoted: m })
2257
}
2258
break
2259
case 'iqra': {
2260
oh = `Example : ${prefix + command} 3\n\nIQRA Yang tersedia : 1,2,3,4,5,6`
2261
if (!text) throw oh
2262
yy = await getBuffer(`https://islamic-api-indonesia.herokuapp.com/api/data/pdf/iqra${text}`)
2263
zets.sendMessage(m.chat, {document: yy, mimetype: 'application/pdf', fileName: `iqra${text}.pdf`}, {quoted:m}).catch ((err) => m.reply(oh))
2264
}
2265
break
2266
case 'juzamma': {
2267
if (args[0] === 'pdf') {
2268
m.reply(mess.wait)
2269
zets.sendMessage(m.chat, {document: {url: 'https://fatiharridho.my.id/database/islam/juz-amma-arab-latin-indonesia.pdf'}, mimetype: 'application/pdf', fileName: 'juz-amma-arab-latin-indonesia.pdf'}, {quoted:m})
2270
} else if (args[0] === 'docx') {
2271
m.reply(mess.wait)
2272
zets.sendMessage(m.chat, {document: {url: 'https://fatiharridho.my.id/database/islam/juz-amma-arab-latin-indonesia.docx'}, mimetype: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', fileName: 'juz-amma-arab-latin-indonesia.docx'}, {quoted:m})
2273
} else if (args[0] === 'pptx') {
2274
m.reply(mess.wait)
2275
zets.sendMessage(m.chat, {document: {url: 'https://fatiharridho.my.id/database/islam/juz-amma-arab-latin-indonesia.pptx'}, mimetype: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', fileName: 'juz-amma-arab-latin-indonesia.pptx'}, {quoted:m})
2276
} else if (args[0] === 'xlsx') {
2277
m.reply(mess.wait)
2278
zets.sendMessage(m.chat, {document: {url: 'https://fatiharridho.my.id/database/islam/juz-amma-arab-latin-indonesia.xlsx'}, mimetype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', fileName: 'juz-amma-arab-latin-indonesia.xlsx'}, {quoted:m})
2279
} else {
2280
m.reply(`Mau format apa ? Example : ${prefix + command} pdf
2281
2282
Format yang tersedia : pdf, docx, pptx, xlsx`)
2283
}
2284
}
2285
break
2286
case 'hadis': case 'hadist': {
2287
if (!args[0]) throw `Contoh:
2288
${prefix + command} bukhari 1
2289
${prefix + command} abu-daud 1
2290
2291
Pilihan tersedia:
2292
abu-daud
2293
1 - 4590
2294
ahmad
2295
1 - 26363
2296
bukhari
2297
1 - 7008
2298
darimi
2299
1 - 3367
2300
ibu-majah
2301
1 - 4331
2302
nasai
2303
1 - 5662
2304
malik
2305
1 - 1594
2306
muslim
2307
1 - 5362`
2308
if (!args[1]) throw `Hadis yang ke berapa?\n\ncontoh:\n${prefix + command} muslim 1`
2309
try {
2310
let res = await fetchJson(`https://islamic-api-indonesia.herokuapp.com/api/data/json/hadith/${args[0]}`)
2311
let { number, arab, id } = res.find(v => v.number == args[1])
2312
m.reply(`No. ${number}
2313
2314
${arab}
2315
2316
${id}`)
2317
} catch (e) {
2318
m.reply(`Hadis tidak ditemukan !`)
2319
}
2320
}
2321
break
2322
case 'alquran': {
2323
if (!args[0]) throw `Contoh penggunaan:\n${prefix + command} 1 2\n\nmaka hasilnya adalah surah Al-Fatihah ayat 2 beserta audionya, dan ayatnya 1 aja`
2324
if (!args[1]) throw `Contoh penggunaan:\n${prefix + command} 1 2\n\nmaka hasilnya adalah surah Al-Fatihah ayat 2 beserta audionya, dan ayatnya 1 aja`
2325
let res = await fetchJson(`https://islamic-api-indonesia.herokuapp.com/api/data/quran?surah=${args[0]}&ayat=${args[1]}`)
2326
let txt = `*Arab* : ${res.result.data.text.arab}
2327
*English* : ${res.result.data.translation.en}
2328
*Indonesia* : ${res.result.data.translation.id}
2329
2330
( Q.S ${res.result.data.surah.name.transliteration.id} : ${res.result.data.number.inSurah} )`
2331
m.reply(txt)
2332
zets.sendMessage(m.chat, {audio: { url: res.result.data.audio.primary }, mimetype: 'audio/mpeg'}, { quoted : m })
2333
}
2334
break
2335
case 'tafsirsurah': {
2336
if (!args[0]) throw `Contoh penggunaan:\n${prefix + command} 1 2\n\nmaka hasilnya adalah tafsir surah Al-Fatihah ayat 2`
2337
if (!args[1]) throw `Contoh penggunaan:\n${prefix + command} 1 2\n\nmaka hasilnya adalah tafsir surah Al-Fatihah ayat 2`
2338
let res = await fetchJson(`https://islamic-api-indonesia.herokuapp.com/api/data/quran?surah=${args[0]}&ayat=${args[1]}`)
2339
let txt = `「 *Tafsir Surah* 」
2340
2341
*Pendek* : ${res.result.data.tafsir.id.short}
2342
2343
*Panjang* : ${res.result.data.tafsir.id.long}
2344
2345
( Q.S ${res.result.data.surah.name.transliteration.id} : ${res.result.data.number.inSurah} )`
2346
m.reply(txt)
2347
}
2348
break
2349
2350
//────────────────────[ VOICE CHANGER ]────────────────────
2351
2352
case 'bass': case 'blown': case 'deep': case 'earrape': case 'fast': case 'fat': case 'nightcore': case 'reverse': case 'robot': case 'slow': case 'smooth': case 'tupai':
2353
try {
2354
let set
2355
if (/bass/.test(command)) set = '-af equalizer=f=54:width_type=o:width=2:g=20'
2356
if (/blown/.test(command)) set = '-af acrusher=.1:1:64:0:log'
2357
if (/deep/.test(command)) set = '-af atempo=4/4,asetrate=44500*2/3'
2358
if (/earrape/.test(command)) set = '-af volume=12'
2359
if (/fast/.test(command)) set = '-filter:a "atempo=1.63,asetrate=44100"'
2360
if (/fat/.test(command)) set = '-filter:a "atempo=1.6,asetrate=22100"'
2361
if (/nightcore/.test(command)) set = '-filter:a atempo=1.06,asetrate=44100*1.25'
2362
if (/reverse/.test(command)) set = '-filter_complex "areverse"'
2363
if (/robot/.test(command)) set = '-filter_complex "afftfilt=real=\'hypot(re,im)*sin(0)\':imag=\'hypot(re,im)*cos(0)\':win_size=512:overlap=0.75"'
2364
if (/slow/.test(command)) set = '-filter:a "atempo=0.7,asetrate=44100"'
2365
if (/smooth/.test(command)) set = '-filter:v "minterpolate=\'mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120\'"'
2366
if (/tupai/.test(command)) set = '-filter:a "atempo=0.5,asetrate=65100"'
2367
if (/audio/.test(mime)) {
2368
m.reply(mess.wait)
2369
let media = await zets.downloadAndSaveMediaMessage(quoted)
2370
let ran = getRandom('.mp3')
2371
exec(`ffmpeg -i ${media} ${set} ${ran}`, (err, stderr, stdout) => {
2372
fs.unlinkSync(media)
2373
if (err) return m.reply(err)
2374
let buff = fs.readFileSync(ran)
2375
zets.sendMessage(m.chat, { audio: buff, mimetype: 'audio/mpeg' }, { quoted : m })
2376
fs.unlinkSync(ran)
2377
})
2378
} else m.reply(`Balas audio yang ingin diubah dengan caption *${prefix + command}*`)
2379
} catch (e) {
2380
m.reply(e)
2381
}
2382
break
2383
2384
//────────────────────[ DATABASE ]────────────────────
2385
2386
case 'setcmd': {
2387
if (!m.quoted) throw 'Reply Pesan!'
2388
if (!m.quoted.fileSha256) throw 'SHA256 Hash Missing'
2389
if (!text) throw `Untuk Command Apa?`
2390
let hash = m.quoted.fileSha256.toString('base64')
2391
if (global.db.data.sticker[hash] && global.db.data.sticker[hash].locked) throw 'You have no permission to change this sticker command'
2392
global.db.data.sticker[hash] = {
2393
text,
2394
mentionedJid: m.mentionedJid,
2395
creator: m.sender,
2396
at: + new Date,
2397
locked: false,
2398
}
2399
m.reply(`Done!`)
2400
}
2401
break
2402
case 'delcmd': {
2403
let hash = m.quoted.fileSha256.toString('base64')
2404
if (!hash) throw `Tidak ada hash`
2405
if (global.db.data.sticker[hash] && global.db.data.sticker[hash].locked) throw 'You have no permission to delete this sticker command'
2406
delete global.db.data.sticker[hash]
2407
m.reply(`Done!`)
2408
}
2409
break
2410
case 'listcmd': {
2411
let teks = `
2412
*List Hash*
2413
Info: *bold* hash is Locked
2414
${Object.entries(global.db.data.sticker).map(([key, value], index) => `${index + 1}. ${value.locked ? `*${key}*` : key} : ${value.text}`).join('\n')}
2415
`.trim()
2416
zets.sendText(m.chat, teks, m, { mentions: Object.values(global.db.data.sticker).map(x => x.mentionedJid).reduce((a,b) => [...a, ...b], []) })
2417
}
2418
break
2419
case 'lockcmd': {
2420
if (!isCreator) throw mess.owner
2421
if (!m.quoted) throw 'Reply Pesan!'
2422
if (!m.quoted.fileSha256) throw 'SHA256 Hash Missing'
2423
let hash = m.quoted.fileSha256.toString('base64')
2424
if (!(hash in global.db.data.sticker)) throw 'Hash not found in database'
2425
global.db.data.sticker[hash].locked = !/^un/i.test(command)
2426
m.reply('Done!')
2427
}
2428
break
2429
case 'addmsg': {
2430
if (!m.quoted) throw 'Reply Message Yang Ingin Disave Di Database'
2431
if (!text) throw `Example : ${prefix + command} nama file`
2432
let msgs = global.db.data.database
2433
if (text.toLowerCase() in msgs) throw `'${text}' telah terdaftar di list pesan`
2434
msgs[text.toLowerCase()] = quoted.fakeObj
2435
m.reply(`Berhasil menambahkan pesan di list pesan sebagai '${text}'
2436
2437
Akses dengan ${prefix}getmsg ${text}
2438
2439
Lihat list Pesan Dengan ${prefix}listmsg`)
2440
}
2441
break
2442
case 'getmsg': {
2443
if (!text) throw `Example : ${prefix + command} file name\n\nLihat list pesan dengan ${prefix}listmsg`
2444
let msgs = global.db.data.database
2445
if (!(text.toLowerCase() in msgs)) throw `'${text}' tidak terdaftar di list pesan`
2446
zets.copyNForward(m.chat, msgs[text.toLowerCase()], true)
2447
}
2448
break
2449
case 'listmsg': {
2450
let msgs = JSON.parse(fs.readFileSync('./src/database.json'))
2451
let seplit = Object.entries(global.db.data.database).map(([nama, isi]) => { return { nama, ...isi } })
2452
let teks = '「 LIST DATABASE 」\n\n'
2453
for (let i of seplit) {
2454
teks += `⌕ *Name :* ${i.nama}\n⌕ *Type :* ${getContentType(i.message).replace(/Message/i, '')}\n────────────────────────\n\n`
2455
}
2456
m.reply(teks)
2457
}
2458
break
2459
case 'delmsg': case 'deletemsg': {
2460
let msgs = global.db.data.database
2461
if (!(text.toLowerCase() in msgs)) return m.reply(`'${text}' tidak terdaftar didalam list pesan`)
2462
delete msgs[text.toLowerCase()]
2463
m.reply(`Berhasil menghapus '${text}' dari list pesan`)
2464
}
2465
break
2466
2467
//────────────────────[ ANONYMOUS CHAT ]────────────────────
2468
2469
case 'anonymous': {
2470
if (m.isGroup) return m.reply('Fitur Tidak Dapat Digunakan Untuk Group!')
2471
this.anonymous = this.anonymous ? this.anonymous : {}
2472
let buttons = [
2473
{ buttonId: 'start', buttonText: { displayText: 'Start' }, type: 1 }
2474
]
2475
zets.sendButtonText(m.chat, buttons, `\`\`\`Hi ${await zets.getName(m.sender)} Welcome To Anonymous Chat\n\nKlik Button Dibawah Ini Untuk Mencari Partner\`\`\``, zets.user.name, m)
2476
}
2477
break
2478
case 'keluar': case 'leave': {
2479
if (m.isGroup) return m.reply('Fitur Tidak Dapat Digunakan Untuk Group!')
2480
this.anonymous = this.anonymous ? this.anonymous : {}
2481
let room = Object.values(this.anonymous).find(room => room.check(m.sender))
2482
if (!room) {
2483
let buttons = [
2484
{ buttonId: 'start', buttonText: { displayText: 'Start' }, type: 1 }
2485
]
2486
await zets.sendButtonText(m.chat, buttons, `\`\`\`Kamu Sedang Tidak Berada Di Sesi Anonymous, Tekan Button Untuk Mencari Partner \`\`\``)
2487
throw false
2488
}
2489
m.reply('Ok')
2490
let other = room.other(m.sender)
2491
if (other) await zets.sendText(other, `\`\`\`Partner Telah Meninggalkan Sesi Anonymous\`\`\``, m)
2492
delete this.anonymous[room.id]
2493
if (command === 'leave') break
2494
}
2495
case 'mulai': case 'start': {
2496
if (m.isGroup) return m.reply('Fitur Tidak Dapat Digunakan Untuk Group!')
2497
this.anonymous = this.anonymous ? this.anonymous : {}
2498
if (Object.values(this.anonymous).find(room => room.check(m.sender))) {
2499
let buttons = [
2500
{ buttonId: 'keluar', buttonText: { displayText: 'Stop' }, type: 1 }
2501
]
2502
await zets.sendButtonText(m.chat, buttons, `\`\`\`Kamu Masih Berada Di dalam Sesi Anonymous, Tekan Button Dibawah Ini Untuk Menghentikan Sesi Anonymous Anda\`\`\``, zets.user.name, m)
2503
throw false
2504
}
2505
let room = Object.values(this.anonymous).find(room => room.state === 'WAITING' && !room.check(m.sender))
2506
if (room) {
2507
let buttons = [
2508
{ buttonId: 'next', buttonText: { displayText: 'Skip' }, type: 1 },
2509
{ buttonId: 'keluar', buttonText: { displayText: 'Stop' }, type: 1 }
2510
]
2511
await zets.sendButtonText(room.a, buttons, `\`\`\`Berhasil Menemukan Partner, sekarang kamu dapat mengirim pesan\`\`\``, zets.user.name, m)
2512
room.b = m.sender
2513
room.state = 'CHATTING'
2514
await zets.sendButtonText(room.b, buttons, `\`\`\`Berhasil Menemukan Partner, sekarang kamu dapat mengirim pesan\`\`\``, zets.user.name, m)
2515
} else {
2516
let id = + new Date
2517
this.anonymous[id] = {
2518
id,
2519
a: m.sender,
2520
b: '',
2521
state: 'WAITING',
2522
check: function (who = '') {
2523
return [this.a, this.b].includes(who)
2524
},
2525
other: function (who = '') {
2526
return who === this.a ? this.b : who === this.b ? this.a : ''
2527
},
2528
}
2529
let buttons = [
2530
{ buttonId: 'keluar', buttonText: { displayText: 'Stop' }, type: 1 }
2531
]
2532
await zets.sendButtonText(m.chat, buttons, `\`\`\`Mohon Tunggu Sedang Mencari Partner\`\`\``, zets.user.name, m)
2533
}
2534
break
2535
}
2536
case 'next': case 'lanjut': {
2537
if (m.isGroup) return m.reply('Fitur Tidak Dapat Digunakan Untuk Group!')
2538
this.anonymous = this.anonymous ? this.anonymous : {}
2539
let romeo = Object.values(this.anonymous).find(room => room.check(m.sender))
2540
if (!romeo) {
2541
let buttons = [
2542
{ buttonId: 'start', buttonText: { displayText: 'Start' }, type: 1 }
2543
]
2544
await zets.sendButtonText(m.chat, buttons, `\`\`\`Kamu Sedang Tidak Berada Di Sesi Anonymous, Tekan Button Untuk Mencari Partner\`\`\``)
2545
throw false
2546
}
2547
let other = romeo.other(m.sender)
2548
if (other) await zets.sendText(other, `\`\`\`Partner Telah Meninggalkan Sesi Anonymous\`\`\``, m)
2549
delete this.anonymous[romeo.id]
2550
let room = Object.values(this.anonymous).find(room => room.state === 'WAITING' && !room.check(m.sender))
2551
if (room) {
2552
let buttons = [
2553
{ buttonId: 'next', buttonText: { displayText: 'Skip' }, type: 1 },
2554
{ buttonId: 'keluar', buttonText: { displayText: 'Stop' }, type: 1 }
2555
]
2556
await zets.sendButtonText(room.a, buttons, `\`\`\`Berhasil Menemukan Partner, sekarang kamu dapat mengirim pesan\`\`\``, zets.user.name, m)
2557
room.b = m.sender
2558
room.state = 'CHATTING'
2559
await zets.sendButtonText(room.b, buttons, `\`\`\`Berhasil Menemukan Partner, sekarang kamu dapat mengirim pesan\`\`\``, zets.user.name, m)
2560
} else {
2561
let id = + new Date
2562
this.anonymous[id] = {
2563
id,
2564
a: m.sender,
2565
b: '',
2566
state: 'WAITING',
2567
check: function (who = '') {
2568
return [this.a, this.b].includes(who)
2569
},
2570
other: function (who = '') {
2571
return who === this.a ? this.b : who === this.b ? this.a : ''
2572
},
2573
}
2574
let buttons = [
2575
{ buttonId: 'keluar', buttonText: { displayText: 'Stop' }, type: 1 }
2576
]
2577
await zets.sendButtonText(m.chat, buttons, `\`\`\`Mohon Tunggu Sedang Mencari Partner\`\`\``, zets.user.name, m)
2578
}
2579
break
2580
}
2581
2582
//────────────────────[ OWNER MENU ]────────────────────
2583
2584
case 'public': {
2585
if (!isCreator) throw mess.owner
2586
zets.public = true
2587
m.reply('Sukse Change To Public Usage')
2588
}
2589
break
2590
case 'self': {
2591
if (!isCreator) throw mess.owner
2592
zets.public = false
2593
m.reply('Sukses Change To Self Usage')
2594
}
2595
break
2596
2597
//────────────────────[ INFO BOT ]────────────────────
2598
2599
case 'ping': case 'botstatus': case 'statusbot': {
2600
const used = process.memoryUsage()
2601
const cpus = os.cpus().map(cpu => {
2602
cpu.total = Object.keys(cpu.times).reduce((last, type) => last + cpu.times[type], 0)
2603
return cpu
2604
})
2605
const cpu = cpus.reduce((last, cpu, _, { length }) => {
2606
last.total += cpu.total
2607
last.speed += cpu.speed / length
2608
last.times.user += cpu.times.user
2609
last.times.nice += cpu.times.nice
2610
last.times.sys += cpu.times.sys
2611
last.times.idle += cpu.times.idle
2612
last.times.irq += cpu.times.irq
2613
return last
2614
}, {
2615
speed: 0,
2616
total: 0,
2617
times: {
2618
user: 0,
2619
nice: 0,
2620
sys: 0,
2621
idle: 0,
2622
irq: 0
2623
}
2624
})
2625
let timestamp = speed()
2626
let latensi = speed() - timestamp
2627
neww = performance.now()
2628
oldd = performance.now()
2629
respon = `
2630
Kecepatan Respon ${latensi.toFixed(4)} _Second_ \n ${oldd - neww} _miliseconds_\n\nRuntime : ${runtime(process.uptime())}
2631
2632
💻 Info Server
2633
RAM: ${formatp(os.totalmem() - os.freemem())} / ${formatp(os.totalmem())}
2634
2635
_NodeJS Memory Usaage_
2636
${Object.keys(used).map((key, _, arr) => `${key.padEnd(Math.max(...arr.map(v=>v.length)),' ')}: ${formatp(used[key])}`).join('\n')}
2637
2638
${cpus[0] ? `_Total CPU Usage_
2639
${cpus[0].model.trim()} (${cpu.speed} MHZ)\n${Object.keys(cpu.times).map(type => `- *${(type + '*').padEnd(6)}: ${(100 * cpu.times[type] / cpu.total).toFixed(2)}%`).join('\n')}
2640
_CPU Core(s) Usage (${cpus.length} Core CPU)_
2641
${cpus.map((cpu, i) => `${i + 1}. ${cpu.model.trim()} (${cpu.speed} MHZ)\n${Object.keys(cpu.times).map(type => `- *${(type + '*').padEnd(6)}: ${(100 * cpu.times[type] / cpu.total).toFixed(2)}%`).join('\n')}`).join('\n\n')}` : ''}
2642
`.trim()
2643
m.reply(respon)
2644
}
2645
break
2646
case 'speedtest': {
2647
m.reply('Testing Speed...')
2648
let cp = require('child_process')
2649
let { promisify } = require('util')
2650
let exec = promisify(cp.exec).bind(cp)
2651
let o
2652
try {
2653
o = await exec('python speed.py')
2654
} catch (e) {
2655
o = e
2656
} finally {
2657
let { stdout, stderr } = o
2658
if (stdout.trim()) m.reply(stdout)
2659
if (stderr.trim()) m.reply(stderr)
2660
}
2661
}
2662
break
2663
case 'owner': case 'creator': {
2664
zets.sendContact(m.chat, global.owner, m)
2665
}
2666
break
2667
2668
//────────────────────[ MAIN MENU HOOOOOOHHH ]────────────────────
2669
2670
case 'menu': case 'help': case '?': {
2671
addCountCmd(`#${command.slice(1)}`, sender, _cmd)
2672
buffer = `https://telegra.ph/file/ff1ef5439f8935211ab4d.jpg`
2673
anu = `Hai kak ${pushname}, have a nice day:)
2674
2675
♕︎ *INFO - BOT*
2676
✔︎ *Bot Name:* _${global.botname}_
2677
✔︎ *Owner Name:* _${global.ownername}_
2678
✔︎ *Runtime:* _${runtime(process.uptime())}_
2679
✔︎ *Gc Bot:* _${global.gc}_
2680
✔︎ *Tanggal:* _${moment.tz('Asia/Jakarta').format('DD/MM/YY')}_
2681
✔︎ *Waktu:* _${moment.tz('Asia/Jakarta').format('HH:mm:ss')}_
2682
✔︎ *Library:* _Baileys-Md_
2683
2684
♕︎ *Group*
2685
⚠︎ ${prefix}linkgroup
2686
⚠︎ ${prefix}ephemeral [option]
2687
⚠︎ ${prefix}setppgc [image]
2688
⚠︎ ${prefix}setname [text]
2689
⚠︎ ${prefix}setdesc [text]
2690
⚠︎ ${prefix}group [option]
2691
⚠︎ ${prefix}editinfo [option]
2692
⚠︎ ${prefix}add @user
2693
⚠︎ ${prefix}kick @user
2694
⚠︎ ${prefix}hidetag [text]
2695
⚠︎ ${prefix}tagall [text]
2696
⚠︎ ${prefix}antilink [on/off]
2697
⚠︎ ${prefix}mute [on/off]
2698
⚠︎ ${prefix}promote @user
2699
⚠︎ ${prefix}demote @user
2700
⚠︎ ${prefix}vote [text]
2701
⚠︎ ${prefix}devote
2702
⚠︎ ${prefix}upvote
2703
⚠︎ ${prefix}cekvote
2704
⚠︎ ${prefix}hapusvote
2705
2706
♕︎ *Downloader*
2707
⚠︎ ${prefix}tiktoknowm [url]
2708
⚠︎ ${prefix}tiktokwm [url]
2709
⚠︎ ${prefix}tiktokmp3 [url]
2710
⚠︎ ${prefix}instagram [url]
2711
⚠︎ ${prefix}twitter [url]
2712
⚠︎ ${prefix}twittermp3 [url]
2713
⚠︎ ${prefix}facebook [url]
2714
⚠︎ ${prefix}pinterestdl [url]
2715
⚠︎ ${prefix}ytmp3 [url]
2716
⚠︎ ${prefix}ytmp4 [url]
2717
⚠︎ ${prefix}getmusic [query]
2718
⚠︎ ${prefix}getvideo [query]
2719
⚠︎ ${prefix}umma [url]
2720
⚠︎ ${prefix}joox [query]
2721
⚠︎ ${prefix}soundcloud [url]
2722
2723
♕︎ *Searching*
2724
⚠︎ ${prefix}play [query]
2725
⚠︎ ${prefix}yts [query]
2726
⚠︎ ${prefix}google [query]
2727
⚠︎ ${prefix}gimage [query]
2728
⚠︎ ${prefix}pinterest [query]
2729
⚠︎ ${prefix}wallpaper [query]
2730
⚠︎ ${prefix}wikimedia [query]
2731
⚠︎ ${prefix}ytsearch [query]
2732
⚠︎ ${prefix}ringtone [query]
2733
⚠︎ ${prefix}stalk [option] [query]
2734
2735
♕︎ *Random*
2736
⚠︎ ${prefix}coffe
2737
⚠︎ ${prefix}quotesanime
2738
⚠︎ ${prefix}motivasi
2739
⚠︎ ${prefix}dilanquote
2740
⚠︎ ${prefix}bucinquote
2741
⚠︎ ${prefix}katasenja
2742
⚠︎ ${prefix}puisi
2743
⚠︎ ${prefix}couple
2744
⚠︎ ${prefix}anime
2745
⚠︎ ${prefix}waifu
2746
2747
2748
♕︎ *Textpro*
2749
⚠︎ ${prefix}3dchristma
2750
⚠︎ ${prefix}3ddeepsea
2751
⚠︎ ${prefix}americanflag
2752
⚠︎ ${prefix}3dscifi
2753
⚠︎ ${prefix}3drainbow
2754
⚠︎ ${prefix}3dwaterpipe
2755
⚠︎ ${prefix}halloweenskeleton
2756
⚠︎ ${prefix}sketch
2757
⚠︎ ${prefix}bluecircuit
2758
⚠︎ ${prefix}space
2759
⚠︎ ${prefix}metallic
2760
⚠︎ ${prefix}fiction
2761
⚠︎ ${prefix}greenhorror
2762
⚠︎ ${prefix}transformer
2763
⚠︎ ${prefix}berry
2764
⚠︎ ${prefix}thunder
2765
⚠︎ ${prefix}magma
2766
⚠︎ ${prefix}3dcrackedstone
2767
⚠︎ ${prefix}3dneonlight
2768
⚠︎ ${prefix}impressiveglitch
2769
⚠︎ ${prefix}naturalleaves
2770
⚠︎ ${prefix}fireworksparkle
2771
⚠︎ ${prefix}matrix
2772
⚠︎ ${prefix}dropwater
2773
⚠︎ ${prefix}harrypotter
2774
⚠︎ ${prefix}foggywindow
2775
⚠︎ ${prefix}neondevils
2776
⚠︎ ${prefix}christmasholiday
2777
⚠︎ ${prefix}3dgradient
2778
⚠︎ ${prefix}blackpink
2779
⚠︎ ${prefix}gluetext
2780
2781
♕︎ *Fun*
2782
⚠︎ ${prefix}halah
2783
⚠︎ ${prefix}hilih
2784
⚠︎ ${prefix}huluh
2785
⚠︎ ${prefix}heleh
2786
⚠︎ ${prefix}holoh
2787
⚠︎ ${prefix}jadian
2788
⚠︎ ${prefix}jodohku
2789
⚠︎ ${prefix}delttt
2790
⚠︎ ${prefix}tictactoe
2791
⚠︎ ${prefix}family100
2792
⚠︎ ${prefix}tebak [option]
2793
⚠︎ ${prefix}math [mode]
2794
⚠︎ ${prefix}suitpvp [@tag]
2795
2796
♕︎ *Primbon*
2797
⚠︎ ${prefix}nomorhoki
2798
⚠︎ ${prefix}artimimpi
2799
⚠︎ ${prefix}artinama
2800
⚠︎ ${prefix}ramaljodoh
2801
⚠︎ ${prefix}ramaljodohbali
2802
⚠︎ ${prefix}suamiistri
2803
⚠︎ ${prefix}ramalcinta
2804
⚠︎ ${prefix}cocoknama
2805
⚠︎ ${prefix}pasangan
2806
⚠︎ ${prefix}jadiannikah
2807
⚠︎ ${prefix}sifatusaha
2808
⚠︎ ${prefix}rezeki
2809
⚠︎ ${prefix}pekerjaan
2810
⚠︎ ${prefix}nasib
2811
⚠︎ ${prefix}penyakit
2812
⚠︎ ${prefix}tarot
2813
⚠︎ ${prefix}fengshui
2814
⚠︎ ${prefix}haribaik
2815
⚠︎ ${prefix}harisangar
2816
⚠︎ ${prefix}harisial
2817
⚠︎ ${prefix}nagahari
2818
⚠︎ ${prefix}arahrezeki
2819
⚠︎ ${prefix}peruntungan
2820
⚠︎ ${prefix}weton
2821
⚠︎ ${prefix}karakter
2822
⚠︎ ${prefix}keberuntungan
2823
⚠︎ ${prefix}memancing
2824
⚠︎ ${prefix}masasubur
2825
⚠︎ ${prefix}zodiak
2826
⚠︎ ${prefix}shio
2827
2828
♕︎ *Convert*
2829
⚠︎ ${prefix}toimage
2830
⚠︎ ${prefix}removebg
2831
⚠︎ ${prefix}sticker
2832
⚠︎ ${prefix}emojimix
2833
⚠︎ ${prefix}tovideo
2834
⚠︎ ${prefix}togif
2835
⚠︎ ${prefix}tourl
2836
⚠︎ ${prefix}tovn
2837
⚠︎ ${prefix}tomp3
2838
⚠︎ ${prefix}toaudio
2839
⚠︎ ${prefix}ebinary
2840
⚠︎ ${prefix}dbinary
2841
⚠︎ ${prefix}styletext
2842
2843
♕︎ *Main*
2844
⚠︎ ${prefix}ping
2845
⚠︎ ${prefix}owner
2846
⚠︎ ${prefix}menu / ${prefix}help / ${prefix}?
2847
⚠︎ ${prefix}delete
2848
⚠︎ ${prefix}infochat
2849
⚠︎ ${prefix}quoted
2850
⚠︎ ${prefix}listpc
2851
⚠︎ ${prefix}listgc
2852
⚠︎ ${prefix}listonline
2853
⚠︎ ${prefix}speedtest
2854
2855
♕︎ *Database*
2856
⚠︎ ${prefix}setcmd
2857
⚠︎ ${prefix}listcmd
2858
⚠︎ ${prefix}delcmd
2859
⚠︎ ${prefix}lockcmd
2860
⚠︎ ${prefix}addmsg
2861
⚠︎ ${prefix}listmsg
2862
⚠︎ ${prefix}getmsg
2863
⚠︎ ${prefix}delmsg
2864
2865
♕︎ *Anonymous Chat*
2866
⚠︎ ${prefix}anonymous
2867
⚠︎ ${prefix}start
2868
⚠︎ ${prefix}next
2869
⚠︎ ${prefix}keluar
2870
⚠︎ ${prefix}sendkontak
2871
2872
♕︎ *Islam*
2873
⚠︎ ${prefix}iqra
2874
⚠︎ ${prefix}hadist
2875
⚠︎ ${prefix}alquran
2876
⚠︎ ${prefix}juzamma
2877
⚠︎ ${prefix}tafsirsurah
2878
2879
♕︎ *Voice Changer*
2880
⚠︎ ${prefix}bass
2881
⚠︎ ${prefix}blown
2882
⚠︎ ${prefix}deep
2883
⚠︎ ${prefix}earrape
2884
⚠︎ ${prefix}fast
2885
⚠︎ ${prefix}fat
2886
⚠︎ ${prefix}nightcore
2887
⚠︎ ${prefix}reverse
2888
⚠︎ ${prefix}robot
2889
⚠︎ ${prefix}slow
2890
⚠︎ ${prefix}tupai
2891
2892
♕︎ *Owner*
2893
⚠︎ ${prefix}react [emoji]
2894
⚠︎ ${prefix}chat [option]
2895
⚠︎ ${prefix}join [link]
2896
⚠︎ ${prefix}leave
2897
⚠︎ ${prefix}block @user
2898
⚠︎ ${prefix}unblock @user
2899
⚠︎ ${prefix}bcgroup [text]
2900
⚠︎ ${prefix}bcall [text]
2901
⚠︎ ${prefix}setppbot [image]
2902
⚠︎ ${prefix}setexif
2903
`
2904
var button = [{ buttonId: `dashboard`, buttonText: { displayText: `Dashboard` }, type: 1 }, { buttonId: `owner`, buttonText: { displayText: `Owner` }, type: 1 }]
2905
zets.sendMessage(m.chat, { caption: `${anu}`, location: { jpegThumbnail: await reSize(buffer, 200, 200) }, buttons: button, footer: botname, mentions: [m.sender] })
2906
}
2907
break
2908
//────────────────────[ BATAS TEMAN ]────────────────────
2909
default:
2910
if (budy.startsWith('=>')) {
2911
if (!isCreator) return m.reply(mess.owner)
2912
function Return(sul) {
2913
sat = JSON.stringify(sul, null, 2)
2914
bang = util.format(sat)
2915
if (sat == undefined) {
2916
bang = util.format(sul)
2917
}
2918
return m.reply(bang)
2919
}
2920
try {
2921
m.reply(util.format(eval(`(async () => { return ${budy.slice(3)} })()`)))
2922
} catch (e) {
2923
m.reply(String(e))
2924
}
2925
}
2926
2927
if (budy.startsWith('>')) {
2928
if (!isCreator) return m.reply(mess.owner)
2929
try {
2930
let evaled = await eval(budy.slice(2))
2931
if (typeof evaled !== 'string') evaled = require('util').inspect(evaled)
2932
await m.reply(evaled)
2933
} catch (err) {
2934
await m.reply(String(err))
2935
}
2936
}
2937
2938
if (budy.startsWith('$')) {
2939
if (!isCreator) return m.reply(mess.owner)
2940
exec(budy.slice(2), (err, stdout) => {
2941
if(err) return m.reply(err)
2942
if (stdout) return m.reply(stdout)
2943
})
2944
}
2945
2946
if (m.chat.endsWith('@s.whatsapp.net') && isCmd) {
2947
this.anonymous = this.anonymous ? this.anonymous : {}
2948
let room = Object.values(this.anonymous).find(room => [room.a, room.b].includes(m.sender) && room.state === 'CHATTING')
2949
if (room) {
2950
if (/^.*(next|leave|start)/.test(m.text)) return
2951
if (['.next', '.leave', '.stop', '.start', 'Cari Partner', 'Keluar', 'Lanjut', 'Stop'].includes(m.text)) return
2952
let other = [room.a, room.b].find(user => user !== m.sender)
2953
m.copyNForward(other, true, m.quoted && m.quoted.fromMe ? {
2954
contextInfo: {
2955
...m.msg.contextInfo,
2956
forwardingScore: 0,
2957
isForwarded: true,
2958
participant: other
2959
}
2960
} : {})
2961
}
2962
return !0
2963
}
2964
2965
if (isCmd && budy.toLowerCase() != undefined) {
2966
if (m.chat.endsWith('broadcast')) return
2967
if (m.isBaileys) return
2968
let msgs = global.db.data.database
2969
if (!(budy.toLowerCase() in msgs)) return
2970
zets.copyNForward(m.chat, msgs[budy.toLowerCase()], true)
2971
}
2972
}
2973
2974
2975
} catch (err) {
2976
m.reply(util.format(err))
2977
}
2978
}
2979
2980
2981
let file = require.resolve(__filename)
2982
fs.watchFile(file, () => {
2983
fs.unwatchFile(file)
2984
console.log(chalk.redBright(`Update ${__filename}`))
2985
delete require.cache[file]
2986
require(file)
2987
})
2988
2989