├── 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 43 | */ 44 | function nocache(module, cb = () => { }) { 45 | console.log('Module', `'${module}'`, 'is now being watched for changes') 46 | fs.watchFile(require.resolve(module), async () => { 47 | await uncache(require.resolve(module)) 48 | cb(module) 49 | }) 50 | } 51 | 52 | /** 53 | * Uncache a module 54 | * @param {string} module Module name or path 55 | */ 56 | function uncache(module = '.') { 57 | return new Promise((resolve, reject) => { 58 | try { 59 | delete require.cache[require.resolve(module)] 60 | resolve() 61 | } catch (e) { 62 | reject(e) 63 | } 64 | }) 65 | } 66 | 67 | starts() 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | SELF-HX 3 | 4 | # DAHLAH 5 | 6 | > 7 | > 8 | > 9 |
10 |

11 | 12 |

13 | KYAAA ONI CHAN >//< 14 |

15 |

16 | 17 | ## CARA INSTALL DI TERMUX 18 | ```bash 19 | > pkg install nodejs && pkg install git 20 | > git clone https://github.com/Hexagonz/SELF-HX 21 | > cd SELF-HX 22 | > bash install.sh 23 | > npm start/node main.js 24 | ``` 25 | ## CARA INSTALL DI LAPTOP 26 | ```bash 27 | > git clone https://github.com/Hexagonz/SELF-HX 28 | > cd SELF-HX 29 | > npm i 30 | > npm start/node main.js 31 | ``` 32 | 33 | # INSTALL 34 | * [Node.js](https://nodejs.org/en/) 35 | * [Git](https://git-scm.com/downloads) 36 | * [FFmpeg](https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2020-12-08-13-03/ffmpeg-n4.3.1-26-gca55240b8c-win64-gpl-4.3.zip) 37 | * [Libwebp](https://developers.google.com/speed/webp/download) 38 | 39 | # PIMTUR 40 | 41 | | OWNER |✅| 42 | | ------------- | ------------- | 43 | | OFF |✅| 44 | | ON |✅| 45 | | STATUS |✅| 46 | 47 | | MAKER |✅| 48 | | ------------- | ------------- | 49 | | STICKER |✅| 50 | | STICKER GIF |✅| 51 | | STICKER WM |✅| 52 | | TAKE STICKER |✅| 53 | | FDEFACE |✅| 54 | 55 | | CONVERT |✅| 56 | | ------------- | ------------- | 57 | | TOIMG |✅| 58 | | TOMP3 |✅| 59 | | TOMP4 |✅| 60 | | SLOW |✅| 61 | | FAST |✅| 62 | | REVERSE |✅| 63 | | TOURL |✅| 64 | 65 | | UP STORY |✅| 66 | | ------------- | ------------- | 67 | | UPSWTEXT |✅| 68 | | UPSWIMAGE |✅| 69 | | UPSWVIDEO |✅| 70 | 71 | | FUN |✅| 72 | | ------------- | ------------- | 73 | | FITNAH |✅| 74 | | FITNAH PC |✅| 75 | | KONTAK |✅| 76 | 77 | 78 | | TAG |✅| 79 | | ------------- | ------------- | 80 | | STICKTAG |✅| 81 | | HIDETAG |✅| 82 | | KONTAG |✅| 83 | | TOTAG |✅| 84 | 85 | | DOWNLOAD |✅| 86 | | ------------- | ------------- | 87 | | YTSEARCH |✅| 88 | | IGSTALK |✅| 89 | | PLAY |✅| 90 | | VIDEO |✅| 91 | | YTMP3 |✅| 92 | | YTMP4 |✅| 93 | | IGDL |✅| 94 | | FBDL |✅| 95 | | TIKTOKDL |✅| 96 | | TIKTOK AUDIO |✅| 97 | | TWITTER |✅| 98 | | BRAINLY |✅| 99 | | IMAGE |✅| 100 | | ANIME |✅| 101 | 102 | | OTHER |✅| 103 | | ------------- | ------------- | 104 | | SELF |✅| 105 | | PUBLIC |✅| 106 | | SET THUMB |✅| 107 | | SET FAKE IMG |✅| 108 | | SET TARGET |✅| 109 | | SET REPLY |✅| 110 | | PING |✅| 111 | | JOIN |✅| 112 | | GET |✅| 113 | | TERM |✅| 114 | | X |✅| 115 | 116 | # MAKASIH LORT 117 | * [`Baileys`](https://github.com/adiwajshing/Baileys) 118 | * [`MhankBarBar`](https://github.com/MhankBarBar) 119 | * [`MRHRTZ`](https://github.com/MRHRTZ) 120 | 121 | 122 | -------------------------------------------------------------------------------- /lib/webp2mp4.js: -------------------------------------------------------------------------------- 1 | //PAK HANIF NYURUH GUA OBFUS 2 | 3 | const _0x4dee=['input[name=\x22file\x22]','https://ezgif.com/webp-to-mp4/','new-image','1237030UWMNfK','_boundary','exports','cheerio','250622UfCTid','1lOaOuw','9099NgNSnU','axios','value','input[name=\x22token\x22]','form-data','https:','token','convert','1259543npXoXr','div#output\x20>\x20p.outfile\x20>\x20video\x20>\x20source','397qGnbhv','catch','3otGWiC','src','webp2mp4File','post','478YvNJAu','7583pkGhTM','load','296471pDoArt','file','Created\x20By\x20MRHRTZ','attr','then','https://s6.ezgif.com/webp-to-mp4','4oJTeCO','append','multipart/form-data\x20boundary=','305yvzwNy','new-image-url'];const _0x4dc654=_0x56b0;(function(_0x2d7eb4,_0x128ef8){const _0x22cb69=_0x56b0;while(!![]){try{const _0x52e4ad=-parseInt(_0x22cb69(0x1dd))+parseInt(_0x22cb69(0x1fb))*-parseInt(_0x22cb69(0x1da))+parseInt(_0x22cb69(0x1f0))*parseInt(_0x22cb69(0x1f9))+parseInt(_0x22cb69(0x1f1))*-parseInt(_0x22cb69(0x1d6))+parseInt(_0x22cb69(0x1eb))+-parseInt(_0x22cb69(0x1e3))*-parseInt(_0x22cb69(0x1ef))+parseInt(_0x22cb69(0x1e6))*-parseInt(_0x22cb69(0x1db));if(_0x52e4ad===_0x128ef8)break;else _0x2d7eb4['push'](_0x2d7eb4['shift']());}catch(_0x4bee81){_0x2d7eb4['push'](_0x2d7eb4['shift']());}}}(_0x4dee,0xa43c8));function _0x56b0(_0x3c8a89,_0x33c8c2){_0x3c8a89=_0x3c8a89-0x1d5;let _0x4dee25=_0x4dee[_0x3c8a89];return _0x4dee25;}const axios=require(_0x4dc654(0x1f2)),cheerio=require(_0x4dc654(0x1ee)),FormData=require(_0x4dc654(0x1f5)),fs=require('fs');function webp2mp4File(_0xf1f78c){return new Promise(async(_0x21be6a,_0x5a761a)=>{const _0x2ac78d=_0x56b0,_0x1e251b=new FormData();_0x1e251b[_0x2ac78d(0x1e4)](_0x2ac78d(0x1e7),''),_0x1e251b[_0x2ac78d(0x1e4)](_0x2ac78d(0x1ea),fs['createReadStream'](_0xf1f78c)),await axios({'method':_0x2ac78d(0x1d9),'url':_0x2ac78d(0x1e2),'data':_0x1e251b,'headers':{'Content-Type':'multipart/form-data\x20boundary='+_0x1e251b['_boundary']}})[_0x2ac78d(0x1e1)](async({data:_0x2cb909})=>{const _0x4f11c5=_0x2ac78d,_0x10005e=new FormData(),_0x50000f=cheerio[_0x4f11c5(0x1dc)](_0x2cb909),_0x58d695=_0x50000f(_0x4f11c5(0x1e8))[_0x4f11c5(0x1e0)]('value'),_0x52c85d=_0x50000f(_0x4f11c5(0x1f4))['attr']('value'),_0x5f50e6=_0x50000f(_0x4f11c5(0x1e8))[_0x4f11c5(0x1e0)](_0x4f11c5(0x1f3)),_0x3ca870={'file':_0x58d695,'token':_0x52c85d,'convert':_0x5f50e6};_0x10005e['append'](_0x4f11c5(0x1de),_0x3ca870[_0x4f11c5(0x1de)]),_0x10005e[_0x4f11c5(0x1e4)]('token',_0x3ca870[_0x4f11c5(0x1f7)]),_0x10005e['append'](_0x4f11c5(0x1f8),_0x3ca870[_0x4f11c5(0x1f8)]),await axios({'method':_0x4f11c5(0x1d9),'url':_0x4f11c5(0x1e9)+_0x3ca870['file'],'data':_0x10005e,'headers':{'Content-Type':_0x4f11c5(0x1e5)+_0x10005e[_0x4f11c5(0x1ec)]}})[_0x4f11c5(0x1e1)](({data:_0x7e1a68})=>{const _0x411f31=_0x4f11c5,_0x436ccc=cheerio[_0x411f31(0x1dc)](_0x7e1a68),_0x4305e4=_0x411f31(0x1f6)+_0x436ccc(_0x411f31(0x1fa))[_0x411f31(0x1e0)](_0x411f31(0x1d7));_0x21be6a({'status':!![],'message':_0x411f31(0x1df),'result':_0x4305e4});})[_0x4f11c5(0x1d5)](_0x5a761a);})[_0x2ac78d(0x1d5)](_0x5a761a);});}module[_0x4dc654(0x1ed)][_0x4dc654(0x1d8)]=webp2mp4File; -------------------------------------------------------------------------------- /lib/functions.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch') 2 | const axios = require('axios') 3 | const cfonts = require('cfonts') 4 | const spin = require('spinnies') 5 | const Crypto = require('crypto') 6 | 7 | 8 | const h2k = (number) => { 9 | var SI_POSTFIXES = ["", " K", " M", " G", " T", " P", " E"] 10 | var tier = Math.log10(Math.abs(number)) / 3 | 0 11 | if(tier == 0) return number 12 | var postfix = SI_POSTFIXES[tier] 13 | var scale = Math.pow(10, tier * 3) 14 | var scaled = number / scale 15 | var formatted = scaled.toFixed(1) + '' 16 | if (/\.0$/.test(formatted)) 17 | formatted = formatted.substr(0, formatted.length - 2) 18 | return formatted + postfix 19 | } 20 | 21 | const getBuffer = async (url, options) => { 22 | try { 23 | options ? options : {} 24 | const res = await axios({ 25 | method: "get", 26 | url, 27 | headers: { 28 | 'DNT': 1, 29 | 'Upgrade-Insecure-Request': 1 30 | }, 31 | ...options, 32 | responseType: 'arraybuffer' 33 | }) 34 | return res.data 35 | } catch (e) { 36 | console.log(`Error : ${e}`) 37 | } 38 | } 39 | 40 | const randomBytes = (length) => { 41 | return Crypto.randomBytes(length) 42 | } 43 | 44 | const generateMessageID = () => { 45 | return randomBytes(10).toString('hex').toUpperCase() 46 | } 47 | 48 | const getGroupAdmins = (participants) => { 49 | admins = [] 50 | for (let i of participants) { 51 | i.isAdmin ? admins.push(i.jid) : '' 52 | } 53 | return admins 54 | } 55 | 56 | const getRandom = (ext) => { 57 | return `${Math.floor(Math.random() * 10000)}${ext}` 58 | } 59 | 60 | const spinner = { 61 | "interval": 120, 62 | "frames": [ 63 | "🕐", 64 | "🕑", 65 | "🕒", 66 | "🕓", 67 | "🕔", 68 | "🕕", 69 | "🕖", 70 | "🕗", 71 | "🕘", 72 | "🕙", 73 | "🕚", 74 | "🕛" 75 | ]} 76 | 77 | let globalSpinner; 78 | 79 | 80 | const getGlobalSpinner = (disableSpins = false) => { 81 | if(!globalSpinner) globalSpinner = new spin({ color: 'blue', succeedColor: 'green', spinner, disableSpins}); 82 | return globalSpinner; 83 | } 84 | 85 | spins = getGlobalSpinner(false) 86 | 87 | const start = (id, text) => { 88 | spins.add(id, {text: text}) 89 | /*setTimeout(() => { 90 | spins.succeed('load-spin', {text: 'Suksess'}) 91 | }, Number(wait) * 1000)*/ 92 | } 93 | const info = (id, text) => { 94 | spins.update(id, {text: text}) 95 | } 96 | const success = (id, text) => { 97 | spins.succeed(id, {text: text}) 98 | 99 | } 100 | 101 | const close = (id, text) => { 102 | spins.fail(id, {text: text}) 103 | } 104 | 105 | const banner = cfonts.render(('SELF BOT'), { 106 | font: 'block', 107 | color: 'system', 108 | align: 'left', 109 | gradient: ["red","white"], 110 | lineHeight: 2 111 | }); 112 | 113 | 114 | 115 | module.exports = { getBuffer, h2k, generateMessageID, getGroupAdmins, getRandom, start, info, success, banner, close } 116 | -------------------------------------------------------------------------------- /lib/fetcher.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch') 2 | const fs = require('fs') 3 | const { spawn } = require("child_process") 4 | const ff = require('fluent-ffmpeg') 5 | const { getRandom } = require('./functions') 6 | 7 | exports.getBase64 = getBase64 = async (url) => { 8 | const response = await fetch(url, { headers: { 'User-Agent': 'okhttp/4.5.0' } }); 9 | if (!response.ok) throw new Error(`unexpected response ${response.statusText}`); 10 | const buffer = await response.buffer(); 11 | const videoBase64 = `data:${response.headers.get('content-type')};base64,` + buffer.toString('base64'); 12 | if (buffer) 13 | return videoBase64; 14 | }; 15 | 16 | exports.getBuffer = getBuffer = async (url) => { 17 | const res = await fetch(url, {headers: { 'User-Agent': 'okhttp/4.5.0'}, method: 'GET' }) 18 | const anu = fs.readFileSync('./src/emror.jpg') 19 | if (!res.ok) return { type: 'image/jpeg', result: anu } 20 | const buff = await res.buffer() 21 | if (buff) 22 | return { type: res.headers.get('content-type'), result: buff } 23 | } 24 | 25 | exports.fetchJson = fetchJson = (url, options) => new Promise(async (resolve, reject) => { 26 | fetch(url, options) 27 | .then(response => response.json()) 28 | .then(json => { 29 | // console.log(json) 30 | resolve(json) 31 | }) 32 | .catch((err) => { 33 | reject(err) 34 | }) 35 | }) 36 | 37 | 38 | exports.fetchText = fetchText = (url, options) => new Promise(async (resolve, reject) => { 39 | fetch(url, options) 40 | .then(response => response.text()) 41 | .then(text => { 42 | // console.log(text) 43 | resolve(text) 44 | }) 45 | .catch((err) => { 46 | reject(err) 47 | }) 48 | }) 49 | exports.kyun = (seconds) =>{ 50 | function pad(s) { 51 | return (s < 10 ? '0' : '') + s; 52 | } 53 | var hours = Math.floor(seconds / (60 * 60)); 54 | var minutes = Math.floor(seconds % (60 * 60) / 60); 55 | var seconds = Math.floor(seconds % 60); 56 | 57 | //return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) 58 | return `${pad(hours)}Jam - ${pad(minutes)}Menit - ${pad(seconds)}Detik\n\n 「 𝗕𝗔𝗜𝗟𝗘𝗬𝗦 𝗦𝗘𝗟𝗙𝗕𝗢𝗧 」` 59 | } 60 | exports.createExif = (pack, auth) =>{ 61 | const code = [0x00,0x00,0x16,0x00,0x00,0x00] 62 | const exif = {"sticker-pack-id": "com.client.tech", "sticker-pack-name": pack, "sticker-pack-publisher": auth, "android-app-store-link": "https://play.google.com/store/apps/details?id=com.termux", "ios-app-store-link": "https://itunes.apple.com/app/sticker-maker-studio/id1443326857"} 63 | let len = JSON.stringify(exif).length 64 | if (len > 256) { 65 | len = len - 256 66 | code.unshift(0x01) 67 | } else { 68 | code.unshift(0x00) 69 | } 70 | if (len < 16) { 71 | len = len.toString(16) 72 | len = "0" + len 73 | } else { 74 | len = len.toString(16) 75 | } 76 | //len = len < 16 ? `0${len.toString(16)}` : len.toString(16) 77 | const _ = Buffer.from([0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x41, 0x57, 0x07, 0x00]); 78 | const __ = Buffer.from(len, "hex") 79 | const ___ = Buffer.from(code) 80 | const ____ = Buffer.from(JSON.stringify(exif)) 81 | fs.writeFileSync('./stik/data.exif', Buffer.concat([_, __, ___, ____]), function (err) { 82 | console.log(err) 83 | if (err) return console.error(err) 84 | return `./stik/data.exif` 85 | }) 86 | 87 | } 88 | exports.modStick = (media, client, mek, from) => { 89 | out = getRandom('.webp') 90 | try { 91 | console.log(media) 92 | spawn('webpmux', ['-set','exif', './stik/data.exif', media, '-o', out]) 93 | .on('exit', () => { 94 | client.sendMessage(from, fs.readFileSync(out), 'stickerMessage', {quoted: mek}) 95 | fs.unlinkSync(out) 96 | fs.unlinkSync(media) 97 | }) 98 | } catch (e) { 99 | console.log(e) 100 | client.sendMessage(from, 'Terjadi keslahan', 'conversation', { quoted: mek }) 101 | fs.unlinkSync(media) 102 | } 103 | } 104 | 105 | //exports.getBase64 = getBase64; 106 | -------------------------------------------------------------------------------- /lib/ytdl.js: -------------------------------------------------------------------------------- 1 | //external modules 2 | const { JSDOM } = require('jsdom') 3 | const fetch = require('node-fetch') 4 | const FormData = require('form-data') 5 | const axios = require("axios") 6 | const cheerio = require("cheerio") 7 | const qs = require('qs') 8 | const { fromBuffer } = require('file-type') 9 | 10 | //varuable 11 | const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)youtube(?:\-nocookie|)\.com\/(?:watch\?.*(?:|\&)v=|embed\/|v\/)|youtu\.be\/)([-_0-9A-Za-z]{11})/ 12 | 13 | //fucntion 14 | function post(url, formdata) { 15 | console.log(Object.keys(formdata).map(key => `${key}=${encodeURIComponent(formdata[key])}`).join('&')) 16 | return fetch(url, { 17 | method: 'POST', 18 | headers: { 19 | accept: "*/*", 20 | 'accept-language': "en-US,en;q=0.9", 21 | 'content-type': "application/x-www-form-urlencoded; charset=UTF-8" 22 | }, 23 | body: Object.keys(formdata).map(key => `${key}=${encodeURIComponent(formdata[key])}`).join('&') 24 | }) 25 | } 26 | 27 | function yta(url) { 28 | return new Promise((resolve, reject) => { 29 | if (ytIdRegex.test(url)) { 30 | let ytId = ytIdRegex.exec(url) 31 | url = 'https://youtu.be/' + ytId[1] 32 | post('https://www.y2mate.com/mates/en60/analyze/ajax', { 33 | url, 34 | q_auto: 0, 35 | ajax: 1 36 | }) 37 | .then(res => res.json()) 38 | .then(res => { 39 | let document = (new JSDOM(res.result)).window.document 40 | let type = document.querySelectorAll('td') 41 | let filesize = type[type.length - 10].innerHTML 42 | let id = /var k__id = "(.*?)"/.exec(document.body.innerHTML) || ['', ''] 43 | let thumb = document.querySelector('img').src 44 | let title = document.querySelector('b').innerHTML 45 | 46 | post('https://www.y2mate.com/mates/en60/convert', { 47 | type: 'youtube', 48 | _id: id[1], 49 | v_id: ytId[1], 50 | ajax: '1', 51 | token: '', 52 | ftype: 'mp3', 53 | fquality: 128 54 | }) 55 | .then(res => res.json()) 56 | .then(res => { 57 | let KB = parseFloat(filesize) * (1000 * /MB$/.test(filesize)) 58 | resolve({ 59 | dl_link: /{ 73 | url_media = url_media.replace("reel", "p") 74 | var url = "https://igram.io/i/" 75 | const requestBody = { 76 | url: url_media.replace("reel", "p"), 77 | lang_code: "en" 78 | } 79 | 80 | const config = { 81 | headers: { 82 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.75', 83 | 'x-requested-with': ' XMLHttpRequest', 84 | 'origin': ' https://igram.io', 85 | 'referer': ' https://igram.io/en/dl/', 86 | 'sec-fetch-dest': ' empty', 87 | 'sec-fetch-mode': ' cors', 88 | 'sec-fetch-site': ' same-origin', 89 | 'Content-Type': 'application/x-www-form-urlencoded', 90 | 'Cookie': '__cfduid=d4c2ddc2229a4d74c28b6ba25cdcd2a181618175605' 91 | }, 92 | } 93 | 94 | axios.post(url, qs.stringify(requestBody), config).then(result => { 95 | let $ = cheerio.load(result.data), ig = [] 96 | //Obter todos os links de videos da pagina carregada 97 | $('[data-mediatype=Video]').each((i, element) => { 98 | let cheerioElement = $(element) 99 | ig.push(cheerioElement.attr("href")) 100 | }) 101 | //Obter todos os links de imagem da pagina carregada 102 | $('div > div.bg-white.border.rounded-sm.max-w-md > img').each((i, element) => { 103 | let cheerioElement = $(element) 104 | ig.push(cheerioElement.attr("src")) 105 | }) 106 | 107 | resolve({ 108 | results_number : ig.length, 109 | url_list: ig 110 | }) 111 | }).catch(err=>{ 112 | console.log(err.response) 113 | reject(err) 114 | }) 115 | }) 116 | } 117 | 118 | function ytv(url) { 119 | return new Promise((resolve, reject) => { 120 | if (ytIdRegex.test(url)) { 121 | let ytId = ytIdRegex.exec(url) 122 | url = 'https://youtu.be/' + ytId[1] 123 | post('https://www.y2mate.com/mates/en60/analyze/ajax', { 124 | url, 125 | q_auto: 0, 126 | ajax: 1 127 | }) 128 | .then(res => res.json()) 129 | .then(res => { 130 | document = (new JSDOM(res.result)).window.document 131 | yaha = document.querySelectorAll('td') 132 | filesize = yaha[yaha.length - 23].innerHTML 133 | id = /var k__id = "(.*?)"/.exec(document.body.innerHTML) || ['', ''] 134 | thumb = document.querySelector('img').src 135 | title = document.querySelector('b').innerHTML 136 | 137 | post('https://www.y2mate.com/mates/en60/convert', { 138 | type: 'youtube', 139 | _id: id[1], 140 | v_id: ytId[1], 141 | ajax: '1', 142 | token: '', 143 | ftype: 'mp4', 144 | fquality: 360 145 | }) 146 | .then(res => res.json()) 147 | .then(res => { 148 | let KB = parseFloat(filesize) * (1000 * /MB$/.test(filesize)) 149 | resolve({ 150 | dl_link: / { 163 | try { 164 | let { ext } = await fromBuffer(media) 165 | console.log('Uploading image to server telegra.ph') 166 | let form = new FormData() 167 | form.append('file', media, 'tmp.' + ext) 168 | await fetch('https://telegra.ph/upload', { 169 | method: 'POST', 170 | body: form 171 | }) 172 | .then(res => res.json()) 173 | .then(res => { 174 | if (res.error) return reject(res.error) 175 | resolve('https://telegra.ph' + res[0].src) 176 | }) 177 | .catch(err => reject(err)) 178 | } catch (e) { 179 | return console.log(e) 180 | } 181 | }) 182 | } 183 | 184 | function formatDate(n, locale = 'id') { 185 | let d = new Date(n) 186 | return d.toLocaleDateString(locale, { 187 | weekday: 'long', 188 | day: 'numeric', 189 | month: 'long', 190 | year: 'numeric', 191 | hour: 'numeric', 192 | minute: 'numeric', 193 | second: 'numeric' 194 | }) 195 | } 196 | module.exports.yta = yta 197 | module.exports.ytv = ytv 198 | module.exports.igdl = igdl 199 | module.exports.upload = upload 200 | module.exports.formatDate = formatDate 201 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // SC NYA JANGAN DI JUAL NGENTOD 2 | //MAKASIH DAH PAKE 3 | const 4 | { 5 | WAConnection, 6 | MessageType, 7 | Presence, 8 | MessageOptions, 9 | Mimetype, 10 | WALocationMessage, 11 | WA_MESSAGE_STUB_TYPES, 12 | WA_DEFAULT_EPHEMERAL, 13 | ReconnectMode, 14 | ProxyAgent, 15 | GroupSettingChange, 16 | waChatKey, 17 | mentionedJid, 18 | processTime, 19 | } = require("@adiwajshing/baileys") 20 | const hx = require('hxz-api') 21 | const qrcode = require("qrcode-terminal") 22 | const moment = require("moment-timezone") 23 | const speed = require('performance-now') 24 | const request = require('request'); 25 | const { spawn, exec, execSync } = require("child_process") 26 | const fs = require("fs") 27 | const axios = require("axios") 28 | const ffmpeg = require('fluent-ffmpeg') 29 | const { EmojiAPI } = require("emoji-api"); 30 | const ig = require('insta-fetcher') 31 | const emoji = new EmojiAPI() 32 | const fetch = require('node-fetch'); 33 | const phoneNum = require('awesome-phonenumber') 34 | const gis = require('g-i-s'); 35 | const got = require("got"); 36 | const imageToBase64 = require('image-to-base64'); 37 | const ID3Writer = require('browser-id3-writer'); 38 | const brainly = require('brainly-scraper') 39 | const yts = require( 'yt-search') 40 | const ms = require('parse-ms') 41 | const toMs = require('ms') 42 | const { error } = require("qrcode-terminal") 43 | const { getBuffer, h2k, generateMessageID, getGroupAdmins, getRandom, banner, start, info, success, close } = require('./lib/functions') 44 | const { color, bgcolor } = require('./lib/color') 45 | const { fetchJson, getBase64, kyun, createExif } = require('./lib/fetcher') 46 | const { yta, ytv, igdl, upload, formatDate } = require('./lib/ytdl') 47 | const { webp2mp4File} = require('./lib/webp2mp4') 48 | const time = moment().tz('Asia/Jakarta').format("HH:mm:ss") 49 | const afk = JSON.parse(fs.readFileSync('./lib/off.json')) 50 | const { sleep, isAfk, cekafk, addafk } = require('./lib/offline') 51 | const voting = JSON.parse(fs.readFileSync('./lib/voting.json')) 52 | const { addVote, delVote } = require('./lib/vote') 53 | const { jadibot, stopjadibot, listjadibot } = require('./lib/jadibot') 54 | 55 | 56 | banChats = true 57 | offline = false 58 | targetpc = '6285751056816' 59 | owner = '6285751056816' 60 | fake = 'HEXAGONZ' 61 | numbernye = '0' 62 | waktu = '-' 63 | alasan = '-' 64 | //=================================================// 65 | module.exports = hexa = async (hexa, mek) => { 66 | try { 67 | if (!mek.hasNewMessage) return 68 | mek = mek.messages.all()[0] 69 | if (!mek.message) return 70 | if (mek.key && mek.key.remoteJid == 'status@broadcast') return 71 | global.blocked 72 | mek.message = (Object.keys(mek.message)[0] === 'ephemeralMessage') ? mek.message.ephemeralMessage.message : mek.message 73 | const content = JSON.stringify(mek.message) 74 | const from = mek.key.remoteJid 75 | const { text, extendedText, contact, location, liveLocation, image, video, sticker, document, audio, product } = MessageType 76 | const time = moment.tz('Asia/Jakarta').format('DD/MM HH:mm:ss') 77 | const type = Object.keys(mek.message)[0] 78 | const cmd = (type === 'conversation' && mek.message.conversation) ? mek.message.conversation : (type == 'imageMessage') && mek.message.imageMessage.caption ? mek.message.imageMessage.caption : (type == 'videoMessage') && mek.message.videoMessage.caption ? mek.message.videoMessage.caption : (type == 'extendedTextMessage') && mek.message.extendedTextMessage.text ? mek.message.extendedTextMessage.text : ''.slice(1).trim().split(/ +/).shift().toLowerCase() 79 | const prefix = /^[°•π÷×¶∆£¢€¥®™=|~!#$%^&.?/\\©^z+*@,;]/.test(cmd) ? cmd.match(/^[°•π÷×¶∆£¢€¥®™=|~!#$%^&.?/\\©^z+*,;]/gi) : '-' 80 | body = (type === 'conversation' && mek.message.conversation.startsWith(prefix)) ? mek.message.conversation : (type == 'imageMessage') && mek.message.imageMessage.caption.startsWith(prefix) ? mek.message.imageMessage.caption : (type == 'videoMessage') && mek.message.videoMessage.caption.startsWith(prefix) ? mek.message.videoMessage.caption : (type == 'extendedTextMessage') && mek.message.extendedTextMessage.text.startsWith(prefix) ? mek.message.extendedTextMessage.text : '' 81 | budy = (type === 'conversation') ? mek.message.conversation : (type === 'extendedTextMessage') ? mek.message.extendedTextMessage.text : '' 82 | const command = body.slice(1).trim().split(/ +/).shift().toLowerCase() 83 | const args = body.trim().split(/ +/).slice(1) 84 | const isCmd = body.startsWith(prefix) 85 | const q = args.join(' ') 86 | const botNumber = hexa.user.jid 87 | const botNumberss = hexa.user.jid + '@c.us' 88 | const isGroup = from.endsWith('@g.us') 89 | let sender = isGroup ? mek.participant : mek.key.remoteJid 90 | // const isSelfNumber = config.NomorSELF 91 | // const isOwner = sender.id === isSelfNumber 92 | const totalchat = await hexa.chats.all() 93 | const groupMetadata = isGroup ? await hexa.groupMetadata(from) : '' 94 | const groupName = isGroup ? groupMetadata.subject : '' 95 | const groupId = isGroup ? groupMetadata.jid : '' 96 | const groupMembers = isGroup ? groupMetadata.participants : '' 97 | const groupDesc = isGroup ? groupMetadata.desc : '' 98 | const groupOwner = isGroup ? groupMetadata.owner : '' 99 | const groupAdmins = isGroup ? getGroupAdmins(groupMembers) : '' 100 | const isBotGroupAdmins = groupAdmins.includes(botNumber) || false 101 | const isGroupAdmins = groupAdmins.includes(sender) || false 102 | const isVote = isGroup ? voting.includes(from) : false 103 | const conts = mek.key.fromMe ? hexa.user.jid : hexa.contacts[sender] || { notify: jid.replace(/@.+/, '') } 104 | const pushname = mek.key.fromMe ? hexa.user.name : conts.notify || conts.vname || conts.name || '-' 105 | 106 | 107 | //MESS 108 | mess = { 109 | wait: 'Otewe', 110 | success: 'Berhasil!', 111 | wrongFormat: 'Format salah, coba liat lagi di menu', 112 | error: { 113 | stick: 'bukan sticker itu:v', 114 | Iv: 'Linknya error:v' 115 | }, 116 | only: { 117 | group: 'Khusus grup ngab', 118 | } 119 | } 120 | const isUrl = (url) => { 121 | return url.match(new RegExp(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%.+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%+.~#?&/=]*)/, 'gi')) 122 | } 123 | 124 | const reply = (teks) => { 125 | hexa.sendMessage(from, teks, text, {quoted:mek}) 126 | } 127 | 128 | const sendMess = (hehe, teks) => { 129 | hexa.sendMessage(hehe, teks, text) 130 | } 131 | 132 | const mentions = (teks, memberr, id) => { 133 | (id == null || id == undefined || id == false) ? hexa.sendMessage(from, teks.trim(), extendedText, { contextInfo: { "mentionedJid": memberr } }) : hexa.sendMessage(from, teks.trim(), extendedText, { quoted: mek, contextInfo: { "mentionedJid": memberr } }) 134 | } 135 | 136 | const fakestatus = (teks) => { 137 | hexa.sendMessage(from, teks, text, { 138 | quoted: { 139 | key: { 140 | fromMe: false, 141 | participant: `0@s.whatsapp.net`, ...(from ? { remoteJid: "status@broadcast" } : {}) 142 | }, 143 | message: { 144 | "imageMessage": { 145 | "url": "https://mmg.whatsapp.net/d/f/At0x7ZdIvuicfjlf9oWS6A3AR9XPh0P-hZIVPLsI70nM.enc", 146 | "mimetype": "image/jpeg", 147 | "caption": fake, 148 | "fileSha256": "+Ia+Dwib70Y1CWRMAP9QLJKjIJt54fKycOfB2OEZbTU=", 149 | "fileLength": "28777", 150 | "height": 1080, 151 | "width": 1079, 152 | "mediaKey": "vXmRR7ZUeDWjXy5iQk17TrowBzuwRya0errAFnXxbGc=", 153 | "fileEncSha256": "sR9D2RS5JSifw49HeBADguI23fWDz1aZu4faWG/CyRY=", 154 | "directPath": "/v/t62.7118-24/21427642_840952686474581_572788076332761430_n.enc?oh=3f57c1ba2fcab95f2c0bb475d72720ba&oe=602F3D69", 155 | "mediaKeyTimestamp": "1610993486", 156 | "jpegThumbnail": fs.readFileSync('./stik/thumb.jpeg'), 157 | "scansSidecar": "1W0XhfaAcDwc7xh1R8lca6Qg/1bB4naFCSngM2LKO2NoP5RI7K+zLw==" 158 | } 159 | } 160 | } 161 | }) 162 | } 163 | const fakethumb = (teks, yes) => { 164 | hexa.sendMessage(from, teks, image, {thumbnail:fs.readFileSync('./stik/fake.jpeg'),quoted:mek,caption:yes}) 165 | } 166 | const fakegroup = (teks) => { 167 | hexa.sendMessage(from, teks, text, { 168 | quoted: { 169 | key: { 170 | fromMe: false, 171 | participant: `0@s.whatsapp.net`, ...(from ? { remoteJid: "6289523258649-1604595598@g.us" } : {}) 172 | }, 173 | message: { 174 | "imageMessage": { 175 | "url": "https://mmg.whatsapp.net/d/f/At0x7ZdIvuicfjlf9oWS6A3AR9XPh0P-hZIVPLsI70nM.enc", 176 | "mimetype": "image/jpeg", 177 | "caption": fake, 178 | "fileSha256": "+Ia+Dwib70Y1CWRMAP9QLJKjIJt54fKycOfB2OEZbTU=", 179 | "fileLength": "28777", 180 | "height": 1080, 181 | "width": 1079, 182 | "mediaKey": "vXmRR7ZUeDWjXy5iQk17TrowBzuwRya0errAFnXxbGc=", 183 | "fileEncSha256": "sR9D2RS5JSifw49HeBADguI23fWDz1aZu4faWG/CyRY=", 184 | "directPath": "/v/t62.7118-24/21427642_840952686474581_572788076332761430_n.enc?oh=3f57c1ba2fcab95f2c0bb475d72720ba&oe=602F3D69", 185 | "mediaKeyTimestamp": "1610993486", 186 | "jpegThumbnail": fs.readFileSync('./stik/thumb.jpeg'), 187 | "scansSidecar": "1W0XhfaAcDwc7xh1R8lca6Qg/1bB4naFCSngM2LKO2NoP5RI7K+zLw==" 188 | } 189 | } 190 | } 191 | }) 192 | } 193 | const sendStickerFromUrl = async(to, url) => { 194 | var names = Date.now() / 10000; 195 | var download = function (uri, filename, callback) { 196 | request.head(uri, function (err, res, body) { 197 | request(uri).pipe(fs.createWriteStream(filename)).on('close', callback); 198 | }); 199 | }; 200 | download(url, './stik' + names + '.png', async function () { 201 | console.log('selesai'); 202 | let filess = './stik' + names + '.png' 203 | let asw = './stik' + names + '.webp' 204 | exec(`ffmpeg -i ${filess} -vcodec libwebp -filter:v fps=fps=20 -lossless 1 -loop 0 -preset default -an -vsync 0 -s 512:512 ${asw}`, (err) => { 205 | let media = fs.readFileSync(asw) 206 | hexa.sendMessage(to, media, MessageType.sticker,{quoted:mek}) 207 | fs.unlinkSync(filess) 208 | fs.unlinkSync(asw) 209 | }); 210 | }); 211 | } 212 | const sendMediaURL = async(to, url, text="", mids=[]) =>{ 213 | if(mids.length > 0){ 214 | text = normalizeMention(to, text, mids) 215 | } 216 | const fn = Date.now() / 10000; 217 | const filename = fn.toString() 218 | let mime = "" 219 | var download = function (uri, filename, callback) { 220 | request.head(uri, function (err, res, body) { 221 | mime = res.headers['content-type'] 222 | request(uri).pipe(fs.createWriteStream(filename)).on('close', callback); 223 | }); 224 | }; 225 | download(url, filename, async function () { 226 | console.log('done'); 227 | let media = fs.readFileSync(filename) 228 | let type = mime.split("/")[0]+"Message" 229 | if(mime === "image/gif"){ 230 | type = MessageType.video 231 | mime = Mimetype.gif 232 | } 233 | if(mime.split("/")[0] === "audio"){ 234 | mime = Mimetype.mp4Audio 235 | } 236 | hexa.sendMessage(to, media, type, { quoted: mek, mimetype: mime, caption: text,contextInfo: {"mentionedJid": mids}}) 237 | 238 | fs.unlinkSync(filename) 239 | }); 240 | } 241 | //FUNCTION 242 | cekafk(afk) 243 | if (!mek.key.remoteJid.endsWith('@g.us') && offline){ 244 | if (!mek.key.fromMe){ 245 | if (isAfk(mek.key.remoteJid)) return 246 | addafk(mek.key.remoteJid) 247 | heheh = ms(Date.now() - waktu) 248 | hexa.sendMessage(mek.key.remoteJid,`@${owner} Sedang Offline!\n\n*Alasan :* ${alasan}\n*Sejak :* ${heheh.hours} Jam, ${heheh.minutes} Menit, ${heheh.seconds} Detik lalu\n\nSilahkan Hubungi Lagi Nanti`, MessageType.text,{contextInfo:{ mentionedJid: [`${owner}@s.whatsapp.net`],'stanzaId': "B826873620DD5947E683E3ABE663F263", 'participant': "0@s.whatsapp.net", 'remoteJid': 'status@broadcast', 'quotedMessage': {"imageMessage": {"caption": "*OFFLINE*", 'jpegThumbnail': fs.readFileSync('./stik/thumb.jpeg')}}}}) 249 | } 250 | } 251 | if (mek.key.remoteJid.endsWith('@g.us') && offline) { 252 | if (!mek.key.fromMe){ 253 | if (mek.message.extendedTextMessage != undefined){ 254 | if (mek.message.extendedTextMessage.contextInfo != undefined){ 255 | if (mek.message.extendedTextMessage.contextInfo.mentionedJid != undefined){ 256 | for (let ment of mek.message.extendedTextMessage.contextInfo.mentionedJid) { 257 | if (ment === `${owner}@s.whatsapp.net`){ 258 | if (isAfk(mek.key.remoteJid)) return 259 | addafk(mek.key.remoteJid) 260 | heheh = ms(Date.now() - waktu) 261 | hexa.sendMessage(mek.key.remoteJid,`@${owner} Sedang Offline!\n\n *Alasan :* ${alasan}\n *Sejak :* ${heheh.hours} Jam, ${heheh.minutes} Menit, ${heheh.seconds} Detik lalu\n\nSilahkan Hubungi Lagi Nanti`, MessageType.text,{contextInfo:{ mentionedJid: [`${owner}@s.whatsapp.net`],'stanzaId': "B826873620DD5947E683E3ABE663F263", 'participant': "0@s.whatsapp.net", 'remoteJid': 'status@broadcast', 'quotedMessage': {"imageMessage": {"caption": "*OFFLINE*", 'jpegThumbnail': fs.readFileSync('./stik/thumb.jpeg')}}}}) 262 | } 263 | } 264 | } 265 | } 266 | } 267 | } 268 | } 269 | //========================================================================================================================// 270 | colors = ['red', 'white', 'black', 'blue', 'yellow', 'green'] 271 | const isMedia = (type === 'imageMessage' || type === 'videoMessage') 272 | const isQuotedImage = type === 'extendedTextMessage' && content.includes('imageMessage') 273 | const isQuotedVideo = type === 'extendedTextMessage' && content.includes('videoMessage') 274 | const isQuotedAudio = type === 'extendedTextMessage' && content.includes('audioMessage') 275 | const isQuotedSticker = type === 'extendedTextMessage' && content.includes('stickerMessage') 276 | if (!isGroup && isCmd) console.log('\x1b[1;31m~\x1b[1;37m>', '[\x1b[1;32mEXEC\x1b[1;37m]', time, color(command), 'from', color(sender.split('@')[0]), 'args :', color(args.length)) 277 | //if (!isGroup && !isCmd) console.log('\x1b[1;31m~\x1b[1;37m>', '[\x1b[1;31mTEXT\x1b[1;37m]', time, color('Message'), 'from', color(sender.split('@')[0]), 'args :', color(args.length)) 278 | if (isCmd && isGroup) console.log('\x1b[1;31m~\x1b[1;37m>', '[\x1b[1;32mEXEC\x1b[1;37m]', time, color(command), 'from', color(sender.split('@')[0]), 'in', color(groupName), 'args :', color(args.length)) 279 | //if (!isCmd && isGroup) console.log('\x1b[1;31m~\x1b[1;37m>', '[\x1b[1;31mTEXT\x1b[1;37m]', time, color('Message'), 'from', color(sender.split('@')[0]), 'in', color(groupName), 'args :', color(args.length)) 280 | if(isGroup && !isVote) { 281 | if (budy.toLowerCase() === 'vote'){ 282 | let vote = JSON.parse(fs.readFileSync(`./lib/${from}.json`)) 283 | let _votes = JSON.parse(fs.readFileSync(`./lib/vote/${from}.json`)) 284 | let fil = vote.map(v => v.participant) 285 | let id_vote = sender ? sender : '6285751056816@s.whatsapp.net' 286 | if(fil.includes(id_vote)) { 287 | return mentions('@'+sender.split('@')[0]+' Anda sudah vote', fil, true) 288 | } else { 289 | vote.push({ 290 | participant: id_vote, 291 | voting: '✅' 292 | }) 293 | fs.writeFileSync(`./lib/${from}.json`,JSON.stringify(vote)) 294 | let _p = [] 295 | let _vote = '*Vote* '+ '@'+ _votes[0].votes.split('@')[0] + `\n\n*Alasan*: ${_votes[0].reason}\n*Jumlah Vote* : ${vote.length} Vote\n*Durasi* : ${_votes[0].durasi} Menit\n\n` 296 | for(let i = 0; i < vote.length; i++) { 297 | _vote += `@${vote[i].participant.split('@')[0]}\n*Vote* : ${vote[i].voting}\n\n` 298 | _p.push(vote[i].participant) 299 | } 300 | _p.push(_votes[0].votes) 301 | mentions(_vote,_p,true) 302 | } 303 | } else if (budy.toLowerCase() === 'devote'){ 304 | const vote = JSON.parse(fs.readFileSync(`./lib/${from}.json`)) 305 | let _votes = JSON.parse(fs.readFileSync(`./lib/vote/${from}.json`)) 306 | let fil = vote.map(v => v.participant) 307 | let id_vote = sender ? sender : '6285751056816@s.whatsapp.net' 308 | if(fil.includes(id_vote)) { 309 | return mentions('@'+sender.split('@')[0]+' Anda sudah vote', fil, true) 310 | } else { 311 | vote.push({ 312 | participant: id_vote, 313 | voting: '❌' 314 | }) 315 | fs.writeFileSync(`./lib/${from}.json`,JSON.stringify(vote)) 316 | let _p = [] 317 | let _vote = '*Vote* '+ '@'+ _votes[0].votes.split('@')[0] + `\n\n*Alasan*: ${_votes[0].reason}\n*Jumlah Vote* : ${vote.length} Vote\n*Durasi* : ${_votes[0].durasi} Menit\n\n` 318 | for(let i = 0; i < vote.length; i++) { 319 | _vote += `@${vote[i].participant.split('@')[0]}\n*Vote* : ${vote[i].voting}\n\n` 320 | _p.push(vote[i].participant) 321 | } 322 | _p.push(_votes[0].votes) 323 | mentions(_vote,_p,true) 324 | } 325 | } 326 | } 327 | if (!mek.key.fromMe && banChats === true) return 328 | switch (command) { 329 | case 'jadibot': 330 | if(mek.key.fromMe) return reply('Tidak bisa jadibot di dalam bot') 331 | jadibot(reply,hexa,from) 332 | break 333 | case 'stopjadibot': 334 | if(mek.key.fromMe)return reply('tidak bisa stopjadibot kecuali owner') 335 | stopjadibot(reply) 336 | break 337 | case 'listbot': 338 | let tekss = '「 *LIST JADIBOT* 」\n' 339 | for(let i of listjadibot) { 340 | tekss += `*Nomor* : ${i.jid.split('@')[0]} 341 | *Nama* : ${i.name} 342 | *Device* : ${i.phone.device_manufacturer} 343 | *Model* : ${i.phone.device_model}\n\n` 344 | } 345 | reply(tekss) 346 | break 347 | case 'menu': 348 | case 'help': 349 | var menu = `Hai ${pushname} 350 | Prefix : 「 MULTI-PREFIX 」 351 | 352 | ** 353 | ► _${prefix}off_ 354 | ► _${prefix}on_ 355 | ► _${prefix}status_ 356 | 357 | ** 358 | ► _${prefix}sticker_ 359 | ► _${prefix}swm_ 360 | ► _${prefix}take_ 361 | ► _${prefix}fdeface_ 362 | ► _${prefix}emoji_ 363 | 364 | ** 365 | ► _${prefix}toimg_ 366 | ► _${prefix}tomp3_ 367 | ► _${prefix}tomp4_ 368 | ► _${prefix}slow_ 369 | ► _${prefix}fast_ 370 | ► _${prefix}reverse_ 371 | ► _${prefix}tourl_ 372 | 373 | ** 374 | ► _${prefix}upswteks_ 375 | ► _${prefix}upswimage_ 376 | ► _${prefix}upswvideo_ 377 | 378 | ** 379 | ► _${prefix}fitnah_ 380 | ► _${prefix}fitnahpc_ 381 | ► _${prefix}kontak_ 382 | 383 | ** 384 | ► _${prefix}hidetag_ 385 | ► _${prefix}kontag_ 386 | ► _${prefix}sticktag_ 387 | ► _${prefix}totag_ 388 | 389 | ** 390 | ► _${prefix}ytsearch_ 391 | ► _${prefix}igstalk_ 392 | ► _${prefix}play_ 393 | ► _${prefix}video_ 394 | ► _${prefix}ytmp3_ 395 | ► _${prefix}ytmp4_ 396 | ► _${prefix}ig_ 397 | ► _${prefix}igstory_ 398 | ► _${prefix}twitter_ 399 | ► _${prefix}tiktok_ 400 | ► _${prefix}tiktokaudio_ 401 | ► _${prefix}fb_ 402 | ► _${prefix}brainly_ 403 | ► _${prefix}image_ 404 | ► _${prefix}anime_ 405 | ► _${prefix}pinterest_ 406 | ► _${prefix}komiku_ 407 | ► _${prefix}lirik_ 408 | ► _${prefix}chara_ 409 | ► _${prefix}playstore_ 410 | ► _${prefix}otaku_ 411 | 412 | ** 413 | ► _${prefix}self_ 414 | ► _${prefix}public_ 415 | ► _${prefix}setthumb_ 416 | ► _${prefix}settarget_ 417 | ► _${prefix}setfakeimg_ 418 | ► _${prefix}setreply_ 419 | ► _${prefix}ping_ 420 | ► _${prefix}inspect_ 421 | ► _${prefix}join_ 422 | ► _${prefix}caripesan_ 423 | ► _${prefix}get_ 424 | ► _${prefix}term_ 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 | --------------------------------------------------------------------------------