├── lib
├── off.json
├── vote
│ └── lupa bang
├── voting.json
├── color.js
├── offline.js
├── jadibot.js
├── vote.js
├── webp2mp4.js
├── functions.js
├── fetcher.js
└── ytdl.js
├── Procfile
├── stik
├── data.exif
├── fake.jpeg
└── thumb.jpeg
├── install.sh
├── package.json
├── main.js
├── README.md
└── index.js
/lib/off.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/vote/lupa bang:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/voting.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | worker: node main.js
--------------------------------------------------------------------------------
/stik/data.exif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexagonz/SELF-HX/HEAD/stik/data.exif
--------------------------------------------------------------------------------
/stik/fake.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexagonz/SELF-HX/HEAD/stik/fake.jpeg
--------------------------------------------------------------------------------
/stik/thumb.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexagonz/SELF-HX/HEAD/stik/thumb.jpeg
--------------------------------------------------------------------------------
/lib/color.js:
--------------------------------------------------------------------------------
1 | const chalk = require('chalk')
2 |
3 | const color = (text, color) => {
4 | return !color ? chalk.green(text) : chalk.keyword(color)(text)
5 | }
6 |
7 | const bgcolor = (text, bgcolor) => {
8 | return !bgcolor ? chalk.green(text) : chalk.bgKeyword(bgcolor)(text)
9 | }
10 |
11 | module.exports = {
12 | color,
13 | bgcolor
14 | }
15 |
--------------------------------------------------------------------------------
/install.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/bash
2 |
3 | apt-get update
4 | apt-get upgrade
5 | apt-get install nodejs
6 | apt-get install libwebp
7 | apt-get install mc
8 | apt-get install ffmpeg
9 | apt-get install wget
10 | apt-get install tesseract
11 | apt-get install nmap
12 | wget -O ~/../usr/share/tessdata/ind.traineddata "https://github.com/tesseract-ocr/tessdata/blob/master/ind.traineddata?raw=true"
13 | npm install
14 |
15 | echo "DONE INSTALLING ALL PACKAGE REQUIRE, TINGGAL RUN npm start"
16 |
--------------------------------------------------------------------------------
/lib/offline.js:
--------------------------------------------------------------------------------
1 | const toMs = require('ms')
2 | const ms = require('parse-ms')
3 | const fs = require("fs")
4 | const afk = JSON.parse(fs.readFileSync('./lib/off.json'))
5 |
6 | const addafk = (from) => {
7 | const obj = { id: from, expired: Date.now() + toMs('2m') }
8 | afk.push(obj)
9 | fs.writeFileSync('./lib/off.json', JSON.stringify(afk))
10 | }
11 |
12 |
13 | const cekafk = (_dir) => {
14 | setInterval(() => {
15 | let position = null
16 | Object.keys(_dir).forEach((i) => {
17 | if (Date.now() >= _dir[i].expired) {
18 | position = i
19 | }
20 | })
21 | if (position !== null) {
22 | _dir.splice(position, 1)
23 | fs.writeFileSync('./lib/off.json', JSON.stringify(_dir))
24 | }
25 | }, 1000)
26 | }
27 |
28 |
29 | const isAfk = (idi) => {
30 | let status = false
31 | Object.keys(afk).forEach((i) => {
32 | if (afk[i].id === idi) {
33 | status = true
34 | }
35 | })
36 | return status
37 | }
38 |
39 | const sleep = async (ms) => {
40 | return new Promise(resolve => setTimeout(resolve, ms));
41 | }
42 |
43 |
44 | module.exports = {
45 | sleep,
46 | isAfk,
47 | cekafk,
48 | addafk
49 | }
--------------------------------------------------------------------------------
/lib/jadibot.js:
--------------------------------------------------------------------------------
1 |
2 | let { WAConnection, MessageType, Mimetype} = require('@adiwajshing/baileys')
3 | let qrcode = require('qrcode')
4 | const fs = require('fs')
5 |
6 | listjadibot = [];
7 |
8 | const jadibot = async(reply,client,id) => {
9 | conn = new WAConnection()
10 | conn.logger.level = 'warn'
11 | conn.version = [2, 2123, 8]
12 | conn.browserDescription = [ 'jadibot', '', '3.0' ]
13 | conn.on('qr', async qr => {
14 | let bot = await qrcode.toDataURL(qr, { scale: 8 })
15 | let buffer = new Buffer.from(bot.replace('data:image/png;base64,', ''), 'base64')
16 | bot = await client.sendMessage(id,buffer,MessageType.image,{caption:'Scan QR Untuk menjadi bot\n*Rules:*\nQR akan diganti setiap 30 detik'})
17 | setTimeout(() => {
18 | client.deleteMessage(id, bot.key)
19 | },30000)
20 | })
21 | conn.on('connecting', () => {
22 | })
23 | conn.on('open', () => {
24 | reply(`Sukses Jadi BOT\n\n*Device*:\n\n ${JSON.stringify(conn.user,null,2)}`)
25 | })
26 | await conn.connect({timeoutMs: 30 * 1000})
27 | listjadibot.push(conn.user)
28 | conn.on('chat-update', async (message) => {
29 | require('../index.js')(conn, message)
30 | })
31 | }
32 |
33 | const stopjadibot = (reply) => {
34 | conn = new WAConnection();
35 | conn.close()
36 | reply('Sukses stop jadibot')
37 | }
38 |
39 | module.exports = {
40 | jadibot,
41 | stopjadibot,
42 | listjadibot
43 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "HEXAGONZ",
3 | "version": "1.0.0",
4 | "description": "HEXA",
5 | "main": "main.js",
6 | "directories": {
7 | "lib": "lib"
8 | },
9 | "dependencies": {
10 | "@adiwajshing/baileys": "^3.5.0",
11 | "async": "^2.4.1",
12 | "awesome-phonenumber": "^2.48.0",
13 | "axios": "^0.21.1",
14 | "brainly-scraper": "^1.0.3",
15 | "browser-id3-writer": "^4.4.0",
16 | "cfonts": "^2.9.0",
17 | "child_process": "^1.0.2",
18 | "crypto": "^1.0.1",
19 | "dotenv": "^8.2.0",
20 | "emoji-api": "^1.0.2",
21 | "file-type": "^16.3.0",
22 | "fluent-ffmpeg": "^2.1.2",
23 | "g-i-s": "^2.1.6",
24 | "got": "^11.8.2",
25 | "hxz-api": "^1.0.1",
26 | "image-to-base64": "^2.2.0",
27 | "insta-fetcher": "^1.2.3",
28 | "jsdom": "^16.5.2",
29 | "moment-timezone": "^0.5.33",
30 | "ms": "^2.1.3",
31 | "parse-ms": "^2.1.0",
32 | "performance-now": "^2.1.0",
33 | "qrcode": "^1.4.4",
34 | "qrcode-terminal": "^0.12.0",
35 | "qs": "^6.10.1",
36 | "request": "^2.88.2",
37 | "scraper-instagram": "^1.0.17",
38 | "spinnies": "^0.5.1",
39 | "yt-search": "^2.7.6"
40 | },
41 | "scripts": {
42 | "start": "node main",
43 | "test": "supervisor main"
44 | },
45 | "repository": {
46 | "type": "git",
47 | "url": "git+https://github.com/Hexagonz"
48 | },
49 | "keywords": [
50 | "Wasu"
51 | ],
52 | "author": "HEXAGON",
53 | "license": "ISC",
54 | "bugs": {
55 | "url": "https://github.com/Hexagonz"
56 | },
57 | "homepage": "https://github.com/Hexagonz"
58 | }
59 |
--------------------------------------------------------------------------------
/lib/vote.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const voting = JSON.parse(fs.readFileSync('./lib/voting.json'))
3 |
4 | const sleep = async (ms) => {
5 | return new Promise(resolve => setTimeout(resolve, ms));
6 | }
7 |
8 | const delVote = (_id) => {
9 | voting.splice(_id,0)
10 | fs.writeFileSync(`./lib/voting.json`, JSON.stringify(voting))
11 | fs.unlinkSync(`./lib/vote/${_id}.json`)
12 | fs.unlinkSync(`./lib/${_id}.json`)
13 | }
14 |
15 | const addVote = async(_id,_value1,_value2,_value3,reply) => {
16 | voting.push(_id)
17 | fs.writeFileSync(`./lib/${_id}.json`,'[]')
18 | fs.writeFileSync(`./lib/vote/${_id}.json`,'[]')
19 | fs.writeFileSync('./lib/voting.json', JSON.stringify(voting))
20 | await sleep(2000)
21 | let votes = JSON.parse(fs.readFileSync(`./lib/vote/${_id}.json`))
22 | votes.push({
23 | reason: _value1 ? _value1 : '-',
24 | votes: _value2.trim() +'@s.whatsapp.net',
25 | durasi: _value3
26 | })
27 | fs.writeFileSync(`./lib/vote/${_id}.json`, JSON.stringify(votes))
28 | setTimeout(async function() {
29 | let vote = JSON.parse(fs.readFileSync(`./lib/${_id}.json`))
30 | let tru = vote.filter(a => a.voting == '✅')
31 | let fals = vote.filter(a => a.voting == '❌')
32 | reply(`*Waktu Habis*\n\n*Hasil Akhir*\n✅ = ${tru.length}\n❌ = ${fals.length}`)
33 | fs.unlinkSync(`./lib/vote/${_id}.json`)
34 | fs.unlinkSync(`./lib/${_id}.json`)
35 | fs.writeFileSync(`./lib/voting.json`, JSON.stringify(voting))
36 | }, _value3 * 60 * 1000);
37 | }
38 |
39 | module.exports = {
40 | delVote,
41 | addVote,
42 | }
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | const {
2 | WAConnection,
3 | MessageType,
4 | Presence,
5 | Mimetype,
6 | GroupSettingChange
7 | } = require('@adiwajshing/baileys')
8 | const fs = require('fs')
9 | const { banner, start, success } = require('./lib/functions')
10 | const { color } = require('./lib/color')
11 |
12 | require('./index.js')
13 | nocache('./index.js', module => console.log(`${module} is now updated!`))
14 |
15 | const starts = async (hexa = new WAConnection()) => {
16 | hexa.logger.level = 'warn'
17 | hexa.version = [2, 2123, 8]
18 | hexa.browserDescription = [ 'Hexagonz', 'Chrome', '3.0' ]
19 | console.log(banner.string)
20 | hexa.on('qr', () => {
21 | console.log(color('[','white'), color('!','red'), color(']','white'), color(' Scan bang'))
22 | })
23 |
24 | fs.existsSync('./session.json') && hexa.loadAuthInfo('./session.json')
25 | hexa.on('connecting', () => {
26 | start('2', 'Connecting...')
27 | })
28 | hexa.on('open', () => {
29 | success('2', 'Connected')
30 | })
31 | await hexa.connect({timeoutMs: 30*1000})
32 | fs.writeFileSync('./session.json', JSON.stringify(hexa.base64EncodedAuthInfo(), null, '\t'))
33 |
34 | hexa.on('chat-update', async (message) => {
35 | require('./index.js')(hexa, message)
36 | })
37 | }
38 |
39 | /**
40 | * Uncache if there is file change
41 | * @param {string} module Module name or path
42 | * @param {function} cb
3 |
4 | # DAHLAH
5 |
6 | >
7 | >
8 | >
9 |
13 | KYAAA ONI CHAN >//<
14 |
15 |
425 | ► _x_
426 |
427 | **
428 | ► _${prefix}jadibot_
429 | ► _${prefix}stopjadibot_
430 | ► _${prefix}listbot_
431 |
432 | **
433 | ► _${prefix}voting_
434 | ► _${prefix}delvote_
435 | ► _vote_
436 | ► _devote_
437 |
438 | ❏ *SELF-BOT* ❏`
439 | fakestatus(menu)
440 | break
441 | case 'delvote':
442 | if(!mek.key.remoteJid) return
443 | if(isVote) return reply('Tidak ada sesi Voting')
444 | delVote(from)
445 | reply('Sukses Menghapus sesi Voting Di Grup Ini')
446 | break
447 | case 'voting':
448 | if(!isGroupAdmins && !mek.key.fromMe) return
449 | if(!isGroup) return reply(mess.only.group)
450 | if (isVote) return reply('Sesi Voting Sedang Berlangsung Di Grup Ini')
451 | if(!q) return reply('*Voting*\n\n'+ prefix+ 'voting @tag target | reason | 1 (1 = 1 Menit)')
452 | if (mek.message.extendedTextMessage.contextInfo.mentionedJid.length > 0 || mek.message.extendedTextMessage.contextInfo == null) {
453 | let id = mek.message.extendedTextMessage.contextInfo.mentionedJid[0]
454 | split = args.join(' ').replace('@', '').split('|')
455 | if(!Number(split[2])) return reply('masukan angka di baris ke 3\nContoh: 1-9999\n1 = 1 Menit')
456 | await mentions('Vote ' +'@'+ id.split('@')[0]+' Di Mulai' +'\n\n' + `vote = ✅\ndevote = ❌\n\nAlasan: ${split[1]}`,[id],true)
457 | addVote(from,split[1],split[0],split[2],reply)
458 | }
459 | break
460 | case 'linkwa':
461 | if(!q) return reply('cari group apa?')
462 | hx.linkwa(q)
463 | .then(result => {
464 | let res = '*「 _LINK WA_ 」*\n\n'
465 | for (let i of result) {
466 | res += `*Nama*: *${i.nama}\n*Link*: ${i.link}\n\n`
467 | }
468 | reply(res)
469 | });
470 | break
471 | case 'igstory':
472 | if(!q) return reply('Usernamenya?')
473 | hx.igstory(q)
474 | .then(async result => {
475 | for(let i of result.medias){
476 | if(i.url.includes('mp4')){
477 | let link = await getBuffer(i.url)
478 | hexa.sendMessage(from,link,video,{quoted: mek,caption: `Type : ${i.type}`})
479 | } else {
480 | let link = await getBuffer(i.url)
481 | hexa.sendMessage(from,link,image,{quoted: mek,caption: `Type : ${i.type}`})
482 | }
483 | }
484 | });
485 | break
486 | case 'caripesan':
487 | if(!q)return reply('pesannya apa bang?')
488 | let v = await hexa.searchMessages(q,from,10,1)
489 | let s = v.messages
490 | let el = s.filter(v => v.message)
491 | el.shift()
492 | try {
493 | if(el[0].message.conversation == undefined) return
494 | reply(`Ditemukan ${el.length} pesan`)
495 | await sleep(3000)
496 | for(let i = 0; i < el.length; i++) {
497 | await hexa.sendMessage(from,'Nih pesannya',text,{quoted:el[i]})
498 | }
499 | } catch(e){
500 | reply('Pesan tidak ditemukan!')
501 | }
502 | break
503 | case 'lirik':
504 | if(!q) return reply('lagu apa?')
505 | let song = await hx.lirik(q)
506 | sendMediaURL(from,song.thumb,song.lirik)
507 | break
508 | case 'otaku':
509 | if(!q) return reply('judul animenya?')
510 | let anime = await hx.otakudesu(q)
511 | rem = `*Judul* : ${anime.judul}
512 | *Jepang* : ${anime.jepang}
513 | *Rating* : ${anime.rate}
514 | *Produser* : ${anime.produser}
515 | *Status* : ${anime.status}
516 | *Episode* : ${anime.episode}
517 | *Durasi* : ${anime.durasi}
518 | *Rilis* : ${anime.rilis}
519 | *Studio* : ${anime.studio}
520 | *Genre* : ${anime.genre}\n
521 | *Sinopsis* :
522 | ${anime.desc}\n\n*Link Batch* : ${anime.batch}\n*Link Download SD* : ${anime.batchSD}\n*Link Download HD* : ${anime.batchHD}`
523 | ram = await getBuffer(anime.img)
524 | hexa.sendMessage(from,ram,image,{quoted:mek,caption:rem})
525 | break
526 | case 'komiku':
527 | if(!q) return reply(`judulnya?\n${prefix}komiku mao gakuin`)
528 | let komik = await hx.komiku(q)
529 | result = `*Title* : ${komik.title}\n
530 | *Title Indo* : ${komik.indo}\n
531 | *Update* : ${komik.update}\n
532 | *Desc* : ${komik.desc}\n
533 | *Chapter Awal* : ${komik.chapter_awal}
534 | *Chapter Akhir* : ${komik.chapter_akhir}`
535 | sendMediaURL(from, komik.image,result)
536 | break
537 | case 'chara':
538 | if(!q) return reply(`gambar apa?\n${prefix}chara nino`)
539 | let im = await hx.chara(q)
540 | let acak = im[Math.floor(Math.random() * im.length)]
541 | let li = await getBuffer(acak)
542 | await hexa.sendMessage(from,li,image,{quoted: mek})
543 | break
544 | case 'pinterest':
545 | if(!q) return reply('gambar apa?')
546 | let pin = await hx.pinterest(q)
547 | let ac = pin[Math.floor(Math.random() * pin.length)]
548 | let di = await getBuffer(ac)
549 | await hexa.sendMessage(from,di,image,{quoted: mek})
550 | break
551 | case 'playstore':
552 | if(!q) return reply('lu nyari apa?')
553 | let play = await hx.playstore(q)
554 | let store = '❉─────────────────────❉\n'
555 | for (let i of play){
556 | store += `\n*「 _PLAY STORE_ 」*\n
557 | - *Nama* : ${i.name}
558 | - *Link* : ${i.link}\n
559 | - *Dev* : ${i.developer}
560 | - *Link Dev* : ${i.link_dev}\n❉─────────────────────❉`
561 | }
562 | reply(store)
563 | break
564 | case 'on':
565 | if (!mek.key.fromMe) return
566 | offline = false
567 | fakestatus(' ```ANDA TELAH ONLINE``` ')
568 | break
569 | case 'status':
570 | fakestatus(`*STATUS*\n${offline ? '> OFFLINE' : '> ONLINE'}\n${banChats ? '> SELF-MODE' : '> PUBLIC-MODE'}`)
571 | break
572 | case 'off':
573 | if (!mek.key.fromMe) return
574 | offline = true
575 | waktu = Date.now()
576 | anuu = q ? q : '-'
577 | alasan = anuu
578 | fakestatus(' ```ANDA TELAH OFFLINE``` ')
579 | break
580 | case 'get':
581 | if(!q) return reply('linknya?')
582 | fetch(`${args[0]}`).then(res => res.text())
583 | .then(bu =>{
584 | fakestatus(bu)
585 | })
586 | break
587 | case 'kontag':
588 | if (!mek.key.fromMe) return reply('SELF-BOT')
589 | pe = args.join('')
590 | entah = pe.split('|')[0]
591 | nah = pe.split('|')[1]
592 | if (isNaN(entah)) return reply('Invalid phone number');
593 | members_ids = []
594 | for (let mem of groupMembers) {
595 | members_ids.push(mem.jid)
596 | }
597 | vcard = 'BEGIN:VCARD\n'
598 | + 'VERSION:3.0\n'
599 | + `FN:${nah}\n`
600 | + `TEL;type=CELL;type=VOICE;waid=${entah}:${phoneNum('+' + entah).getNumber('internasional')}\n`
601 | + 'END:VCARD'.trim()
602 | hexa.sendMessage(from, {displayName: `${nah}`, vcard: vcard}, contact, {contextInfo: {"mentionedJid": members_ids}})
603 | break
604 | case 'sticktag':
605 | if ((isMedia && !mek.message.videoMessage || isQuotedSticker) && args.length == 0) {
606 | encmedia = isQuotedSticker ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
607 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
608 | value = args.join(" ")
609 | var group = await hexa.groupMetadata(from)
610 | var member = group['participants']
611 | var mem = []
612 | member.map(async adm => {
613 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
614 | })
615 | var options = {
616 | contextInfo: { mentionedJid: mem },
617 | quoted: mek
618 | }
619 | ini_buffer = fs.readFileSync(file)
620 | hexa.sendMessage(from, ini_buffer, sticker, options)
621 | fs.unlinkSync(file)
622 | } else {
623 | reply(`*Reply sticker yang sudah dikirim*`)
624 | }
625 | break
626 | case 'totag':
627 | if ((isMedia && !mek.message.videoMessage || isQuotedSticker) && args.length == 0) {
628 | encmedia = isQuotedSticker ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
629 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
630 | value = args.join(" ")
631 | var group = await hexa.groupMetadata(from)
632 | var member = group['participants']
633 | var mem = []
634 | member.map(async adm => {
635 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
636 | })
637 | var options = {
638 | contextInfo: { mentionedJid: mem },
639 | quoted: mek
640 | }
641 | ini_buffer = fs.readFileSync(file)
642 | hexa.sendMessage(from, ini_buffer, sticker, options)
643 | fs.unlinkSync(file)
644 | } else if ((isMedia && !mek.message.videoMessage || isQuotedImage) && args.length == 0) {
645 | encmedia = isQuotedImage ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
646 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
647 | value = args.join(" ")
648 | var group = await hexa.groupMetadata(from)
649 | var member = group['participants']
650 | var mem = []
651 | member.map(async adm => {
652 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
653 | })
654 | var options = {
655 | contextInfo: { mentionedJid: mem },
656 | quoted: mek
657 | }
658 | ini_buffer = fs.readFileSync(file)
659 | hexa.sendMessage(from, ini_buffer, image, options)
660 | fs.unlinkSync(file)
661 | } else if ((isMedia && !mek.message.videoMessage || isQuotedAudio) && args.length == 0) {
662 | encmedia = isQuotedAudio ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
663 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
664 | value = args.join(" ")
665 | var group = await hexa.groupMetadata(from)
666 | var member = group['participants']
667 | var mem = []
668 | member.map(async adm => {
669 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
670 | })
671 | var options = {
672 | mimetype : 'audio/mp4',
673 | ptt : true,
674 | contextInfo: { mentionedJid: mem },
675 | quoted: mek
676 | }
677 | ini_buffer = fs.readFileSync(file)
678 | hexa.sendMessage(from, ini_buffer, audio, options)
679 | fs.unlinkSync(file)
680 | } else if ((isMedia && !mek.message.videoMessage || isQuotedVideo) && args.length == 0) {
681 | encmedia = isQuotedVideo ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
682 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
683 | value = args.join(" ")
684 | var group = await hexa.groupMetadata(from)
685 | var member = group['participants']
686 | var mem = []
687 | member.map(async adm => {
688 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
689 | })
690 | var options = {
691 | mimetype : 'video/mp4',
692 | contextInfo: { mentionedJid: mem },
693 | quoted: mek
694 | }
695 | ini_buffer = fs.readFileSync(file)
696 | hexa.sendMessage(from, ini_buffer, video, options)
697 | fs.unlinkSync(file)
698 | } else{
699 | reply(`reply gambar/sticker/audio/video dengan caption ${prefix}totag`)
700 | }
701 | break
702 | case 'fitnah':
703 | if (args.length < 1) return reply(`Usage :\n${prefix}fitnah [@tag|pesan|balasanbot]]\n\nEx : \n${prefix}fitnah @tagmember|hai|hai juga`)
704 | var gh = args.join('')
705 | mentioned = mek.message.extendedTextMessage.contextInfo.mentionedJid
706 | var replace = gh.split("|")[0];
707 | var target = gh.split("|")[1];
708 | var bot = gh.split("|")[2];
709 | hexa.sendMessage(from, `${bot}`, text, {quoted: { key: { fromMe: false, participant: `${mentioned}`, ...(from ? { remoteJid: from } : {}) }, message: { conversation: `${target}` }}})
710 | break
711 | case 'settarget':
712 | if(!q) return reply(`${prefix}settarget 628xxxxx`)
713 | targetpc = args[0]
714 | fakegroup(`Succes Mengganti target fitnahpc : ${targetpc}`)
715 | break
716 | case 'fitnahpc':
717 | if(!q) return reply(`${prefix}fitnahpc teks target|teks lu`)
718 | jids = `${targetpc}@s.whatsapp.net` // nomer target
719 | var split = args.join(' ').replace(/@|\d/gi, '').split('|')
720 | var taged = mek.message.extendedTextMessage.contextInfo.mentionedJid[0]
721 | var options = {contextInfo: {quotedMessage: {extendedTextMessage: {text: split[0]}}}}
722 | const responye = await hexa.sendMessage(jids, `${split[1]}`, MessageType.text, options)
723 | await hexa.deleteMessage(jids, { id: responye.messageID, remoteJid: jids, fromMe: true })
724 | break
725 | case 'tomp3':
726 | if (!isQuotedVideo) return fakegroup('Reply videonya!')
727 | fakegroup(mess.wait)
728 | encmedia = JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo
729 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
730 | ran = getRandom('.mp4')
731 | exec(`ffmpeg -i ${media} ${ran}`, (err) => {
732 | fs.unlinkSync(media)
733 | if (err) return fakegroup(`Err: ${err}`)
734 | buffer453 = fs.readFileSync(ran)
735 | hexa.sendMessage(from, buffer453, audio, { mimetype: 'audio/mp4', quoted: mek })
736 | fs.unlinkSync(ran)
737 | })
738 | break
739 | case 'fast':
740 | if (!isQuotedVideo) return fakegroup('Reply videonya!')
741 | fakegroup(mess.wait)
742 | encmedia = JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo
743 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
744 | ran = getRandom('.mp4')
745 | exec(`ffmpeg -i ${media} -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" ${ran}`, (err) => {
746 | fs.unlinkSync(media)
747 | if (err) return fakegroup(`Err: ${err}`)
748 | buffer453 = fs.readFileSync(ran)
749 | hexa.sendMessage(from, buffer453, video, { mimetype: 'video/mp4', quoted: mek })
750 | fs.unlinkSync(ran)
751 | })
752 | break
753 | case 'slow':
754 | if (!isQuotedVideo) return fakegroup('Reply videonya!')
755 | fakegroup(mess.wait)
756 | encmedia = JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo
757 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
758 | ran = getRandom('.mp4')
759 | exec(`ffmpeg -i ${media} -filter_complex "[0:v]setpts=2*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" ${ran}`, (err) => {
760 | fs.unlinkSync(media)
761 | if (err) return fakegroup(`Err: ${err}`)
762 | buffer453 = fs.readFileSync(ran)
763 | hexa.sendMessage(from, buffer453, video, { mimetype: 'video/mp4', quoted: mek })
764 | fs.unlinkSync(ran)
765 | })
766 | break
767 | case 'reverse':
768 | if (!isQuotedVideo) return fakegroup('Reply videonya!')
769 | encmedia = JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo
770 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
771 | ran = getRandom('.mp4')
772 | exec(`ffmpeg -i ${media} -vf reverse -af areverse ${ran}`, (err) => {
773 | fs.unlinkSync(media)
774 | if (err) return fakegroup(`Err: ${err}`)
775 | buffer453 = fs.readFileSync(ran)
776 | hexa.sendMessage(from, buffer453, video, { mimetype: 'video/mp4', quoted: mek })
777 | fs.unlinkSync(ran)
778 | })
779 | break
780 | case 'anime':
781 | reply(mess.wait)
782 | fetch('https://raw.githubusercontent.com/pajaar/grabbed-results/master/pajaar-2020-gambar-anime.txt')
783 | .then(res => res.text())
784 | .then(body => {
785 | let tod = body.split("\n");
786 | let pjr = tod[Math.floor(Math.random() * tod.length)];
787 | imageToBase64(pjr)
788 | .then((response) => {
789 | media = Buffer.from(response, 'base64');
790 | hexa.sendMessage(from,media,image,{quoted:mek,caption:'NIH'})
791 | }
792 | )
793 | .catch((error) => {
794 | console.log(error);
795 | }
796 | )
797 | });
798 | break
799 | case 'kontak':
800 | pe = args.join(' ')
801 | entah = pe.split('|')[0]
802 | nah = pe.split('|')[1]
803 | if (isNaN(entah)) return reply('Invalid phone number');
804 | vcard = 'BEGIN:VCARD\n'
805 | + 'VERSION:3.0\n'
806 | + `FN:${nah}\n`
807 | + `TEL;type=CELL;type=VOICE;waid=${entah}:${phoneNum('+' + entah).getNumber('internasional')}\n`
808 | + 'END:VCARD'.trim()
809 | hexa.sendMessage(from, {displayName: `${nah}`, vcard: vcard}, contact)
810 | break
811 | case 'take':
812 | case 'colong':
813 | if (!isQuotedSticker) return reply('Stiker aja om')
814 | encmedia = JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo
815 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
816 | anu = args.join(' ').split('|')
817 | satu = anu[0] !== '' ? anu[0] : `SELF`
818 | dua = typeof anu[1] !== 'undefined' ? anu[1] : `BOT`
819 | require('./lib/fetcher.js').createExif(satu, dua)
820 | require('./lib/fetcher.js').modStick(media, hexa, mek, from)
821 | break
822 | case 'stikerwm':
823 | case 'stickerwm':
824 | case 'swm':
825 | pe = args.join('')
826 | var a = pe.split("|")[0];
827 | var b = pe.split("|")[1];
828 | if (isMedia && !mek.message.videoMessage || isQuotedImage ) {
829 | const encmedia = isQuotedImage ? JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo : mek
830 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
831 | await createExif(a,b)
832 | out = getRandom('.webp')
833 | ffmpeg(media)
834 | .on('error', (e) => {
835 | console.log(e)
836 | hexa.sendMessage(from, 'Terjadi kesalahan', 'conversation', { quoted: mek })
837 | fs.unlinkSync(media)
838 | })
839 | .on('end', () => {
840 | _out = getRandom('.webp')
841 | spawn('webpmux', ['-set','exif','./stik/data.exif', out, '-o', _out])
842 | .on('exit', () => {
843 | hexa.sendMessage(from, fs.readFileSync(_out),'stickerMessage', { quoted: mek })
844 | fs.unlinkSync(out)
845 | fs.unlinkSync(_out)
846 | fs.unlinkSync(media)
847 | })
848 | })
849 | .addOutputOptions([`-vcodec`,`libwebp`,`-vf`,`scale='min(320,iw)':min'(320,ih)':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:color=white@0.0, split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse`])
850 | .toFormat('webp')
851 | .save(out)
852 | } else if ((isMedia && mek.message.videoMessage.seconds < 11 || isQuotedVideo && mek.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage.seconds < 11) && args.length == 0) {
853 | const encmedia = isQuotedVideo ? JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo : mek
854 | const media = await hexa.downloadAndSaveMediaMessage(encmedia)
855 | pe = args.join('')
856 | var a = pe.split("|")[0];
857 | var b = pe.split("|")[1];
858 | await createExif(a,b)
859 | out = getRandom('.webp')
860 | ffmpeg(media)
861 | .on('error', (e) => {
862 | console.log(e)
863 | hexa.sendMessage(from, 'Terjadi kesalahan', 'conversation', { quoted: mek })
864 | fs.unlinkSync(media)
865 | })
866 | .on('end', () => {
867 | _out = getRandom('.webp')
868 | spawn('webpmux', ['-set','exif','./stik/data.exif', out, '-o', _out])
869 | .on('exit', () => {
870 | hexa.sendMessage(from, fs.readFileSync(_out),'stickerMessage', { quoted: mek })
871 | fs.unlinkSync(out)
872 | fs.unlinkSync(_out)
873 | fs.unlinkSync(media)
874 | })
875 | })
876 | .addOutputOptions([`-vcodec`,`libwebp`,`-vf`,`scale='min(320,iw)':min'(320,ih)':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:color=white@0.0, split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse`])
877 | .toFormat('webp')
878 | .save(out)
879 | } else {
880 | reply(`Kirim gambar dengan caption ${prefix}swm teks|teks atau tag gambar yang sudah dikirim`)
881 | }
882 | break
883 | case 'upswteks':
884 | if (!q) return fakestatus('Isi teksnya!')
885 | hexa.sendMessage('status@broadcast', `${q}`, extendedText)
886 | fakegroup(`Sukses Up story wea teks ${q}`)
887 | break
888 | case 'upswimage':
889 | if (isQuotedImage) {
890 | const swsw = isQuotedImage ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
891 | cihcih = await hexa.downloadMediaMessage(swsw)
892 | hexa.sendMessage('status@broadcast', cihcih, image, { caption: `${q}` })
893 | bur = `Sukses Upload Story Image dengan Caption: ${q}`
894 | hexa.sendMessage(from, bur, text, { quoted: mek })
895 | } else {
896 | fakestatus('Reply gambarnya!')
897 | }
898 | break
899 | case 'upswvideo':
900 | if (isQuotedVideo) {
901 | const swsw = isQuotedVideo ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
902 | cihcih = await hexa.downloadMediaMessage(swsw)
903 | hexa.sendMessage('status@broadcast', cihcih, video, { caption: `${q}` })
904 | bur = `Sukses Upload Story Video dengan Caption: ${q}`
905 | hexa.sendMessage(from, bur, text, { quoted: mek })
906 | } else {
907 | fakestatus('reply videonya!')
908 | }
909 | break
910 | case 'fdeface':
911 | ge = args.join('')
912 | var pe = ge.split("|")[0];
913 | var pen = ge.split("|")[1];
914 | var pn = ge.split("|")[2];
915 | var be = ge.split("|")[3];
916 | const fde = `kirim/reply image dengan capion ${prefix}fdeface link|title|desc|teks`
917 | if (args.length < 1) return reply (fde)
918 | const dipes = isQuotedSticker || isQuotedImage ? JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo : mek
919 | const tipes = await hexa.downloadAndSaveMediaMessage(dipes)
920 | const bufer = fs.readFileSync(tipes)
921 | const desc = `${pn}`
922 | const title = `${pen}`
923 | const url = `${pe}`
924 | const buu = `https://${be}`
925 | var anu = {
926 | detectLinks: false
927 | }
928 | var mat = await hexa.generateLinkPreview(url)
929 | mat.title = title;
930 | mat.description = desc;
931 | mat.jpegThumbnail = bufer;
932 | mat.canonicalUrl = buu;
933 | hexa.sendMessage(from, mat, MessageType.extendedText, anu)
934 | break
935 | case 'public':
936 | if (!mek.key.fromMe) return fakestatus('SELF-BOT')
937 | if (banChats === false) return
938 | // var taged = ben.message.extendedTextMessage.contextInfo.mentionedJid[0]
939 | banChats = false
940 | fakestatus(`「 *PUBLIC-MODE* 」`)
941 | break
942 | case 'self':
943 | if (!mek.key.fromMe) return fakestatus('SELF-BOT')
944 | if (banChats === true) return
945 | uptime = process.uptime()
946 | // var taged = ben.message.extendedTextMessage.contextInfo.mentionedJid[0]
947 | banChats = true
948 | fakestatus(`「 *SELF-MODE* 」`)
949 | break
950 | case 'hidetag':
951 | if (!mek.key.fromMe) return fakestatus('SELF-BOT')
952 | if (!isGroup) return reply(mess.only.group)
953 | var value = args.join(' ')
954 | var group = await hexa.groupMetadata(from)
955 | var member = group['participants']
956 | var mem = []
957 | member.map(async adm => {
958 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
959 | })
960 | var optionshidetag = {
961 | text: value,
962 | contextInfo: { mentionedJid: mem },
963 | quoted: mek
964 | }
965 | hexa.sendMessage(from, optionshidetag, text)
966 | break
967 | case 'play':
968 | if (args.length === 0) return reply(`Kirim perintah *${prefix}play* _Judul lagu yang akan dicari_`)
969 | var srch = args.join('')
970 | aramas = await yts(srch);
971 | aramat = aramas.all
972 | var mulaikah = aramat[0].url
973 | try {
974 | yta(mulaikah)
975 | .then((res) => {
976 | const { dl_link, thumb, title, filesizeF, filesize } = res
977 | axios.get(`https://tinyurl.com/api-create.php?url=${dl_link}`)
978 | .then(async (a) => {
979 | if (Number(filesize) >= 100000) return sendMediaURL(from, thumb, `*PLAY MUSIC*\n\n*Title* : ${title}\n*Ext* : MP3\n*Filesize* : ${filesizeF}\n*Link* : ${a.data}\n\n_Untuk durasi lebih dari batas disajikan dalam mektuk link_`)
980 | const captions = `*PLAY MUSIC*\n\n*Title* : ${title}\n*Ext* : MP3\n*Size* : ${filesizeF}\n*Link* : ${a.data}\n\n_Silahkan tunggu file media sedang dikirim mungkin butuh beberapa menit_`
981 | sendMediaURL(from, thumb, captions)
982 | await sendMediaURL(from, dl_link).catch(() => reply('error'))
983 | })
984 | })
985 | } catch (err) {
986 | reply(mess.error.api)
987 | }
988 | break
989 | case 'video':
990 | if (args.length === 0) return reply(`Kirim perintah *${prefix}video* _Judul lagu yang akan dicari_`)
991 | var srch = args.join('')
992 | aramas = await yts(srch);
993 | aramat = aramas.all
994 | var mulaikah = aramat[0].url
995 | try {
996 | ytv(mulaikah)
997 | .then((res) => {
998 | const { dl_link, thumb, title, filesizeF, filesize } = res
999 | axios.get(`https://tinyurl.com/api-create.php?url=${dl_link}`)
1000 | .then(async (a) => {
1001 | if (Number(filesize) >= 100000) return sendMediaURL(from, thumb, `*PLAY VIDEO*\n\n*Title* : ${title}\n*Ext* : MP3\n*Filesize* : ${filesizeF}\n*Link* : ${a.data}\n\n_Untuk durasi lebih dari batas disajikan dalam mektuk link_`)
1002 | const captions = `*PLAY VIDEO*\n\n*Title* : ${title}\n*Ext* : MP4\n*Size* : ${filesizeF}\n*Link* : ${a.data}\n\n_Silahkan tunggu file media sedang dikirim mungkin butuh beberapa menit_`
1003 | sendMediaURL(from, thumb, captions)
1004 | await sendMediaURL(from, dl_link).catch(() => reply('error'))
1005 | })
1006 | })
1007 | } catch (err) {
1008 | reply(mess.error.api)
1009 | }
1010 | break
1011 | case 'sticker':
1012 | case 'stiker':
1013 | case 'sg':
1014 | case 's':
1015 | if ((isMedia && !mek.message.videoMessage || isQuotedImage) && args.length == 0) {
1016 | const encmedia = isQuotedImage ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1017 | const media = await hexa.downloadAndSaveMediaMessage(encmedia)
1018 | ran = '666.webp'
1019 | await ffmpeg(`./${media}`)
1020 | .input(media)
1021 | .on('start', function (cmd) {
1022 | console.log(`Started : ${cmd}`)
1023 | })
1024 | .on('error', function (err) {
1025 | console.log(`Error : ${err}`)
1026 | fs.unlinkSync(media)
1027 | reply('error')
1028 | })
1029 | .on('end', function () {
1030 | console.log('Finish')
1031 | hexa.sendMessage(from, fs.readFileSync(ran), sticker, {quoted: mek})
1032 | fs.unlinkSync(media)
1033 | fs.unlinkSync(ran)
1034 | })
1035 | .addOutputOptions([`-vcodec`, `libwebp`, `-vf`, `scale='min(320,iw)':min'(320,ih)':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:color=white@0.0, split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse`])
1036 | .toFormat('webp')
1037 | .save(ran)
1038 | } else if ((isMedia && mek.message.videoMessage.seconds < 11 || isQuotedVideo && mek.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage.seconds < 11) && args.length == 0) {
1039 | const encmedia = isQuotedVideo ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1040 | const media = await hexa.downloadAndSaveMediaMessage(encmedia)
1041 | ran = '999.webp'
1042 | reply(mess.wait)
1043 | await ffmpeg(`./${media}`)
1044 | .inputFormat(media.split('.')[1])
1045 | .on('start', function (cmd) {
1046 | console.log(`Started : ${cmd}`)
1047 | })
1048 | .on('error', function (err) {
1049 | console.log(`Error : ${err}`)
1050 | fs.unlinkSync(media)
1051 | tipe = media.endsWith('.mp4') ? 'video' : 'gif'
1052 | reply(`Gagal, pada saat mengkonversi ${tipe} ke stiker`)
1053 | })
1054 | .on('end', function () {
1055 | console.log('Finish')
1056 | hexa.sendMessage(from, fs.readFileSync(ran), sticker, {quoted: mek})
1057 | fs.unlinkSync(media)
1058 | fs.unlinkSync(ran)
1059 | })
1060 | .addOutputOptions([`-vcodec`, `libwebp`, `-vf`, `scale='min(320,iw)':min'(320,ih)':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:color=white@0.0, split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse`])
1061 | .toFormat('webp')
1062 | .save(ran)
1063 | } else {
1064 | reply(`Kirim gambar dengan caption ${prefix}sticker\nDurasi Sticker Video 1-9 Detik`)
1065 | }
1066 | break
1067 | case 'toimg':
1068 | if (!isQuotedSticker) return reply('𝗥𝗲𝗽𝗹𝘆/𝘁𝗮𝗴 𝘀𝘁𝗶𝗰𝗸𝗲𝗿 !')
1069 | reply(mess.wait)
1070 | encmedia = JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo
1071 | media = await hexa.downloadAndSaveMediaMessage(encmedia)
1072 | ran = getRandom('.png')
1073 | exec(`ffmpeg -i ${media} ${ran}`, (err) => {
1074 | fs.unlinkSync(media)
1075 | if (err) return reply('Yah gagal, coba ulangi ^_^')
1076 | buffer = fs.readFileSync(ran)
1077 | fakethumb(buffer,'NIH')
1078 | fs.unlinkSync(ran)
1079 | })
1080 | break
1081 | case 'ytsearch':
1082 | if (args.length < 1) return reply('Tolong masukan query!')
1083 | var srch = args.join('');
1084 | try {
1085 | var aramas = await yts(srch);
1086 | } catch {
1087 | return await hexa.sendMessage(from, 'Error!', MessageType.text, dload)
1088 | }
1089 | aramat = aramas.all
1090 | var tbuff = await getBuffer(aramat[0].image)
1091 | var ytresult = '';
1092 | ytresult += '「 *YOUTUBE SEARCH* 」'
1093 | ytresult += '\n________________________\n\n'
1094 | aramas.all.map((video) => {
1095 | ytresult += '❏ Title: ' + video.title + '\n'
1096 | ytresult += '❏ Link: ' + video.url + '\n'
1097 | ytresult += '❏ Durasi: ' + video.timestamp + '\n'
1098 | ytresult += '❏ Upload: ' + video.ago + '\n________________________\n\n'
1099 | });
1100 | ytresult += '◩ *SELF-BOT*'
1101 | await fakethumb(tbuff,ytresult)
1102 | break
1103 | case 'setreply':
1104 | case 'setfake':
1105 | if (!q) return fakegroup(mess.wrongFormat)
1106 | fake = q
1107 | fakegroup(`Succes Mengganti Conversation Fake : ${q}`)
1108 | break
1109 | case 'setfakeimg':
1110 | if ((isMedia && !mek.message.videoMessage || isQuotedImage || isQuotedSticker) && args.length == 0) {
1111 | boij = isQuotedImage || isQuotedSticker ? JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo : mek
1112 | delb = await hexa.downloadMediaMessage(boij)
1113 | fs.writeFileSync(`./stik/fake.jpeg`, delb)
1114 | fakestatus('Sukses')
1115 | } else {
1116 | reply(`Kirim gambar dengan caption ${prefix}sethumb`)
1117 | }
1118 | break
1119 | case 'setthumb':
1120 | if ((isMedia && !mek.message.videoMessage || isQuotedImage || isQuotedSticker) && args.length == 0) {
1121 | boij = isQuotedImage || isQuotedSticker ? JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo : mek
1122 | delb = await hexa.downloadMediaMessage(boij)
1123 | fs.writeFileSync(`./stik/thumb.jpeg`, delb)
1124 | fakestatus('Sukses')
1125 | } else {
1126 | reply(`Kirim gambar dengan caption ${prefix}sethumb`)
1127 | }
1128 | break
1129 | case 'ytmp4':
1130 | if (args.length === 0) return reply(`Kirim perintah *${prefix}ytmp4 [linkYt]*`)
1131 | let isLinks2 = args[0].match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/)
1132 | if (!isLinks2) return reply(mess.error.Iv)
1133 | try {
1134 | reply(mess.wait)
1135 | ytv(args[0])
1136 | .then((res) => {
1137 | const { dl_link, thumb, title, filesizeF, filesize } = res
1138 | axios.get(`https://tinyurl.com/api-create.php?url=${dl_link}`)
1139 | .then((a) => {
1140 | if (Number(filesize) >= 40000) return sendMediaURL(from, thumb, `*YTMP 4!*\n\n*Title* : ${title}\n*Ext* : MP3\n*Filesize* : ${filesizeF}\n*Link* : ${a.data}\n\n_Untuk durasi lebih dari batas disajikan dalam mektuk link_`)
1141 | const captionsYtmp4 = `*Data Berhasil Didapatkan!*\n\n*Title* : ${title}\n*Ext* : MP4\n*Size* : ${filesizeF}\n\n_Silahkan tunggu file media sedang dikirim mungkin butuh beberapa menit_`
1142 | sendMediaURL(from, thumb, captionsYtmp4)
1143 | sendMediaURL(from, dl_link).catch(() => reply(mess.error.api))
1144 | })
1145 | })
1146 | } catch (err) {
1147 | reply(mess.error.api)
1148 | }
1149 | break
1150 | case 'emoji':
1151 | if (!q) return fakegroup('emojinya?')
1152 | qes = args.join(' ')
1153 | emoji.get(`${qes}`).then(emoji => {
1154 | teks = `${emoji.images[4].url}`
1155 | sendStickerFromUrl(from,`${teks}`)
1156 | console.log(teks)
1157 | })
1158 | break
1159 | case 'ytmp3':
1160 | if (args.length === 0) return reply(`Kirim perintah *${prefix}ytmp3 [linkYt]*`)
1161 | let isLinks = args[0].match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/)
1162 | if (!isLinks) return reply(mess.error.Iv)
1163 | try {
1164 | reply(mess.wait)
1165 | yta(args[0])
1166 | .then((res) => {
1167 | const { dl_link, thumb, title, filesizeF, filesize } = res
1168 | axios.get(`https://tinyurl.com/api-create.php?url=${dl_link}`)
1169 | .then((a) => {
1170 | if (Number(filesize) >= 30000) return sendMediaURL(from, thumb, `*Data Berhasil Didapatkan!*\n\n*Title* : ${title}\n*Ext* : MP3\n*Filesize* : ${filesizeF}\n*Link* : ${a.data}\n\n_Untuk durasi lebih dari batas disajikan dalam mektuk link_`)
1171 | const captions = `*YTMP3*\n\n*Title* : ${title}\n*Ext* : MP3\n*Size* : ${filesizeF}\n\n_Silahkan tunggu file media sedang dikirim mungkin butuh beberapa menit_`
1172 | sendMediaURL(from, thumb, captions)
1173 | sendMediaURL(from, dl_link).catch(() => reply(mess.error.api))
1174 | })
1175 | })
1176 | } catch (err) {
1177 | reply(mess.error.api)
1178 | }
1179 | break
1180 | case 'image':
1181 | if (args.length < 1) return reply('Masukan teks!')
1182 | const gimg = args.join('');
1183 | reply(mess.wait)
1184 | gis(gimg, async (error, result) => {
1185 | n = result
1186 | images = n[Math.floor(Math.random() * n.length)].url
1187 | hexa.sendMessage(from,{url:images},image,{quoted:mek})
1188 | });
1189 | break
1190 | case 'tiktok':
1191 | if (!isUrl(args[0]) && !args[0].includes('tiktok.com')) return reply(mess.Iv)
1192 | if (!q) return fakegroup('Linknya?')
1193 | reply(mess.wait)
1194 | hx.ttdownloader(`${args[0]}`)
1195 | .then(result => {
1196 | const { wm, nowm, audio } = result
1197 | axios.get(`https://tinyurl.com/api-create.php?url=${nowm}`)
1198 | .then(async (a) => {
1199 | me = `*Link* : ${a.data}`
1200 | hexa.sendMessage(from,{url:`${nowm}`},video,{mimetype:'video/mp4',quoted:mek,caption:me})
1201 | })
1202 | })
1203 | .catch(e => console.log(e))
1204 | break
1205 | case 'tiktokaudio':
1206 | if (!isUrl(args[0]) && !args[0].includes('tiktok.com')) return reply(mess.Iv)
1207 | if (!q) return fakegroup('Linknya?')
1208 | reply(mess.wait)
1209 | hx.ttdownloader(`${args[0]}`)
1210 | .then(result => {
1211 | const { audio} = result
1212 | sendMediaURL(from,audio,'')
1213 | })
1214 | .catch(e => console.log(e))
1215 | break
1216 | case 'brainly':
1217 | if (args.length < 1) return reply('Pertanyaan apa')
1218 | brien = args.join(' ')
1219 | brainly(`${brien}`).then(res => {
1220 | teks = '❉───────────────────────❉\n'
1221 | for (let Y of res.data) {
1222 | teks += `\n*「 _BRAINLY_ 」*\n\n*➸ Pertanyaan:* ${Y.pertanyaan}\n\n*➸ Jawaban:* ${Y.jawaban[0].text}\n❉──────────────────❉\n`
1223 | }
1224 | hexa.sendMessage(from, teks, text,{quoted:mek,detectLinks: false})
1225 | })
1226 | break
1227 | case 'ig':
1228 | if (!isUrl(args[0]) && !args[0].includes('instagram.com')) return reply(mess.Iv)
1229 | if (!q) return fakegroup('Linknya?')
1230 | reply(mess.wait)
1231 | hx.igdl(args[0])
1232 | .then(async(result) => {
1233 | for(let i of result.medias){
1234 | if(i.url.includes('mp4')){
1235 | let link = await getBuffer(i.url)
1236 | hexa.sendMessage(from,link,video,{quoted: mek,caption: `Type : ${i.type}`})
1237 | } else {
1238 | let link = await getBuffer(i.url)
1239 | hexa.sendMessage(from,link,image,{quoted: mek,caption: `Type : ${i.type}`})
1240 | }
1241 | }
1242 | });
1243 | break
1244 | case 'igstalk':
1245 | if (!q) return fakegroup('Usernamenya?')
1246 | ig.fetchUser(`${args.join(' ')}`).then(Y => {
1247 | console.log(`${args.join(' ')}`)
1248 | ten = `${Y.profile_pic_url_hd}`
1249 | teks = `*ID* : ${Y.profile_id}\n*Username* : ${args.join('')}\n*Full Name* : ${Y.full_name}\n*Bio* : ${Y.biography}\n*Followers* : ${Y.followers}\n*Following* : ${Y.following}\n*Private* : ${Y.is_private}\n*Verified* : ${Y.is_verified}\n\n*Link* : https://instagram.com/${args.join('')}`
1250 | sendMediaURL(from,ten,teks)
1251 | })
1252 | break
1253 | case 'fb':
1254 | if (!q) return reply('Linknya?')
1255 | if (!isUrl(args[0]) && !args[0].includes('facebook.com')) return reply(mess.Iv)
1256 | reply(mess.wait)
1257 | te = args.join(' ')
1258 | hx.fbdown(`${te}`)
1259 | .then(G => {
1260 | ten = `${G.HD}`
1261 | sendMediaURL(from,ten,`*Link video_normal* : ${G.Normal_video}`)
1262 | })
1263 | break
1264 | case 'term':
1265 | if (!q) return fakegroup(mess.wrongFormat)
1266 | exec(q, (err, stdout) => {
1267 | if (err) return fakegroup(`SELF-BOT:~ ${err}`)
1268 | if (stdout) {
1269 | fakegroup(stdout)
1270 | }
1271 | })
1272 | break
1273 | case 'join':
1274 | try {
1275 | if (!isUrl(args[0]) && !args[0].includes('whatsapp.com')) return reply(mess.Iv)
1276 | hen = args[0]
1277 | if (!q) return fakestatus('Masukan link group')
1278 | var codeInvite = hen.split('https://chat.whatsapp.com/')[1]
1279 | if (!codeInvite) return fakegroup ('pastikan link sudah benar!')
1280 | var response = await hexa.acceptInvite(codeInvite)
1281 | fakestatus('SUKSES')
1282 | } catch {
1283 | fakegroup('LINK ERROR!')
1284 | }
1285 | break
1286 | case'twitter':
1287 | if (!isUrl(args[0]) && !args[0].includes('twitter.com')) return reply(mess.Iv)
1288 | if (!q) return fakegroup('Linknya?')
1289 | ten = args[0]
1290 | var res = await hx.twitter(`${ten}`)
1291 | ren = `${g.HD}`
1292 | sendMediaURL(from,ren,'DONE')
1293 | break
1294 | case 'runtime':
1295 | case 'test':
1296 | run = process.uptime()
1297 | teks = `${kyun(run)}`
1298 | fakegroup(teks)
1299 | break
1300 | case 'speed':
1301 | case 'ping':
1302 | const timestamp = speed();
1303 | const latensi = speed() - timestamp
1304 | exec(`neofetch --stdout`, (error, stdout, stderr) => {
1305 | const child = stdout.toString('utf-8')
1306 | const teks = child.replace(/Memory:/, "Ram:")
1307 | const pingnya = `*${teks}Speed: ${latensi.toFixed(4)} Second*`
1308 | fakegroup(pingnya)
1309 | })
1310 | break
1311 | case 'totag':
1312 | if ((isMedia && !mek.message.videoMessage || isQuotedSticker) && args.length == 0) {
1313 | encmedia = isQuotedSticker ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1314 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
1315 | value = args.join(" ")
1316 | var group = await hexa.groupMetadata(from)
1317 | var member = group['participants']
1318 | var mem = []
1319 | member.map(async adm => {
1320 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
1321 | })
1322 | var options = {
1323 | contextInfo: { mentionedJid: mem },
1324 | quoted: mek
1325 | }
1326 | ini_buffer = fs.readFileSync(file)
1327 | hexa.sendMessage(from, ini_buffer, sticker, options)
1328 | fs.unlinkSync(file)
1329 | } else if ((isMedia && !mek.message.videoMessage || isQuotedImage) && args.length == 0) {
1330 | encmedia = isQuotedImage ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1331 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
1332 | value = args.join(" ")
1333 | var group = await hexa.groupMetadata(from)
1334 | var member = group['participants']
1335 | var mem = []
1336 | member.map(async adm => {
1337 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
1338 | })
1339 | var options = {
1340 | contextInfo: { mentionedJid: mem },
1341 | quoted: mek
1342 | }
1343 | ini_buffer = fs.readFileSync(file)
1344 | hexa.sendMessage(from, ini_buffer, image, options)
1345 | fs.unlinkSync(file)
1346 | } else if ((isMedia && !mek.message.videoMessage || isQuotedAudio) && args.length == 0) {
1347 | encmedia = isQuotedAudio ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1348 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
1349 | value = args.join(" ")
1350 | var group = await hexa.groupMetadata(from)
1351 | var member = group['participants']
1352 | var mem = []
1353 | member.map(async adm => {
1354 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
1355 | })
1356 | var options = {
1357 | mimetype : 'audio/mp4',
1358 | ptt : true,
1359 | contextInfo: { mentionedJid: mem },
1360 | quoted: mek
1361 | }
1362 | ini_buffer = fs.readFileSync(file)
1363 | hexa.sendMessage(from, ini_buffer, audio, options)
1364 | fs.unlinkSync(file)
1365 | } else if ((isMedia && !mek.message.videoMessage || isQuotedVideo) && args.length == 0) {
1366 | encmedia = isQuotedVideo ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1367 | file = await hexa.downloadAndSaveMediaMessage(encmedia, filename = getRandom())
1368 | value = args.join(" ")
1369 | var group = await hexa.groupMetadata(from)
1370 | var member = group['participants']
1371 | var mem = []
1372 | member.map(async adm => {
1373 | mem.push(adm.id.replace('c.us', 's.whatsapp.net'))
1374 | })
1375 | var options = {
1376 | mimetype : 'video/mp4',
1377 | contextInfo: { mentionedJid: mem },
1378 | quoted: mek
1379 | }
1380 | ini_buffer = fs.readFileSync(file)
1381 | hexa.sendMessage(from, ini_buffer, video, options)
1382 | fs.unlinkSync(file)
1383 | } else{
1384 | reply(`reply gambar/sticker/audio/video dengan caption ${prefix}totag`)
1385 | }
1386 | break
1387 | case 'tomp4':
1388 | if ((isMedia && !mek.message.videoMessage || isQuotedSticker) && args.length == 0) {
1389 | ger = isQuotedSticker ? JSON.parse(JSON.stringify(mek).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : mek
1390 | owgi = await hexa.downloadAndSaveMediaMessage(ger)
1391 | webp2mp4File(owgi).then(res=>{
1392 | sendMediaURL(from,res.result,'Done')
1393 | })
1394 | }else {
1395 | reply('reply stiker')
1396 | }
1397 | fs.unlinkSync(owgi)
1398 | break
1399 | case 'tourl':
1400 | if ((isMedia && !mek.message.videoMessage || isQuotedImage || isQuotedVideo ) && args.length == 0) {
1401 | boij = isQuotedImage || isQuotedVideo ? JSON.parse(JSON.stringify(mek).replace('quotedM','m')).message.extendedTextMessage.contextInfo : mek
1402 | owgi = await hexa.downloadMediaMessage(boij)
1403 | res = await upload(owgi)
1404 | reply(res)
1405 | } else {
1406 | reply('kirim/reply gambar/video')
1407 | }
1408 | break
1409 | case 'inspect':
1410 | try {
1411 | if (!isUrl(args[0]) && !args[0].includes('whatsapp.com')) return reply(mess.Iv)
1412 | if (!q) return reply('masukan link wa')
1413 | cos = args[0]
1414 | var net = cos.split('https://chat.whatsapp.com/')[1]
1415 | if (!net) return reply('pastikan itu link https://whatsapp.com/')
1416 | jids = []
1417 | let { id, owner, subject, subjectOwner, desc, descId, participants, size, descOwner, descTime, creation} = await hexa.query({
1418 | json: ["query", "invite",net],
1419 | expect200:true })
1420 | let par = `*Id* : ${id}
1421 | ${owner ? `*Owner* : @${owner.split('@')[0]}` : '*Owner* : -'}
1422 | *Nama Gc* : ${subject}
1423 | *Gc dibuat Tanggal* : ${formatDate(creation * 1000)}
1424 | *Jumlah Member* : ${size}
1425 | ${desc ? `*Desc* : ${desc}` : '*Desc* : tidak ada'}
1426 | *Id desc* : ${descId}
1427 | ${descOwner ? `*Desc diubah oleh* : @${descOwner.split('@')[0]}` : '*Desc diubah oleh* : -'}\n*Tanggal* : ${descTime ? `${formatDate(descTime * 1000)}` : '-'}\n\n*Kontak yang tersimpan*\n`
1428 | for ( let y of participants) {
1429 | par += `> @${y.id.split('@')[0]}\n*Admin* : ${y.isAdmin ? 'Ya' : 'Tidak'}\n`
1430 | jids.push(`${y.id.replace(/@c.us/g,'@s.whatsapp.net')}`)
1431 | }
1432 | jids.push(`${owner ? `${owner.replace(/@c.us/g,'@s.whatsapp.net')}` : '-'}`)
1433 | jids.push(`${descOwner ? `${descOwner.replace(/@c.us/g,'@s.whatsapp.net')}` : '-'}`)
1434 | hexa.sendMessage(from,par,text,{quoted:mek,contextInfo:{mentionedJid:jids}})
1435 | } catch {
1436 | reply('Link error')
1437 | }
1438 | break
1439 | default:
1440 | if (budy.startsWith('x')){
1441 | try {
1442 | return hexa.sendMessage(from, JSON.stringify(eval(budy.slice(2)),null,'\t'),text, {quoted: mek})
1443 | } catch(err) {
1444 | e = String(err)
1445 | reply(e)
1446 | }
1447 | }
1448 |
1449 | }
1450 | if (isGroup && budy != undefined) {
1451 | } else {
1452 | console.log(color('[TEXT]', 'red'), 'SELF-MODE', color(sender.split('@')[0]))
1453 | }
1454 | } catch (e) {
1455 | e = String(e)
1456 | if (!e.includes("this.isZero") && !e.includes("jid")) {
1457 | console.log('Message : %s', color(e, 'green'))
1458 | }
1459 | // console.log(e)
1460 | }
1461 | }
1462 |
1463 |
1464 |
1465 |
1466 |
--------------------------------------------------------------------------------