├── lib ├── welkom.json ├── antilink.json ├── TextoDoBemvindo.json ├── fetcher.js ├── color.js ├── swm.js ├── funções.js ├── ytdl.js └── sotoy.json ├── clover2.jpg ├── confing.json ├── README.md ├── start.sh ├── package.json ├── index.js └── clover.js /lib/welkom.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lib/antilink.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /clover2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trevo-community/Cat-Bot/HEAD/clover2.jpg -------------------------------------------------------------------------------- /lib/TextoDoBemvindo.json: -------------------------------------------------------------------------------- 1 | { 2 | "texto": "BEM VINDO AO BAR KKKKKKKKK 🔥👑👈" 3 | } -------------------------------------------------------------------------------- /confing.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "/", 3 | "nomeBot": "Bot MD", 4 | "nomeDono": "ADMNIN", 5 | "username_anikit": "SUPREMO", 6 | "key_anikit": "Adm", 7 | "owner": ["557598659560@s.whatsapp.net"] 8 | } -------------------------------------------------------------------------------- /lib/fetcher.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch') 2 | 3 | exports.fetchJson = fetchJson = (url, options) => new Promise(async (resolve, reject) => { 4 | fetch(url, options) 5 | .then(response => response.json()) 6 | .then(json => { 7 | resolve(json) 8 | }) 9 | .catch((err) => { 10 | reject(err) 11 | }) 12 | }) -------------------------------------------------------------------------------- /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 | const logs = (text, color) => { 12 | return !color ? chalk.red('[ SHIZUKU ] ') + chalk.green(text): chalk.yellow('[ SHIZUKU ] ') + chalk.keyword(color)(text) 13 | } 14 | 15 | module.exports = { 16 | color, 17 | bgcolor, 18 | logs 19 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | # Clover V6 10 | @clovermods yt 11 | 12 | # Como Instalar o Bot 13 | 1. COMANDO: 14 | 15 | ``` 16 | termux-setup-storage && pkg upgrade -y && pkg update -y && pkg install nodejs -y && pkg install nodejs-lts -y && pkg install git -y && pkg install ffmpeg -y && pkg install yarn 17 | ``` 18 | 19 | 2. COMANDO: 20 | 21 | ``` 22 | cd /sdcard && git clone https://github.com/trevo-community/Cat-Bot && cd Cat-Bot && yarn install 23 | ``` 24 | 25 | 3. COMANDO: 26 | 27 | ``` 28 | sh start.sh 29 | ``` 30 | ou 31 | ``` 32 | node index.js 33 | ``` 34 | 35 | • Depois só colocar seu numero 36 | -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | #!bin/bash 2 | NOCOLOR='\033[0m' 3 | RED='\033[0;31m' 4 | GREEN='\033[0;32m' 5 | ORANGE='\033[0;33m' 6 | BLUE='\033[0;34m' 7 | PURPLE='\033[0;35m' 8 | CYAN='\033[0;36m' 9 | LIGHTGRAY='\033[0;37m' 10 | DARKGRAY='\033[1;30m' 11 | PURPLE='\033[1;31m' 12 | LIGHTGREEN='\033[1;32m' 13 | YELLOW='\033[1;33m' 14 | LIGHTRED='\033[1;34m' 15 | LIGHTPURPLE='\033[1;35m' 16 | LIGHTCYAN='\033[1;36m' 17 | WHITE='\033[1;37m' 18 | 19 | while : 20 | do 21 | echo "${ORANGE}" 22 | cat << "EOF" 23 | ██░▀██████████████▀░███ 24 | █▌▒▒░████████████░▒▒▐██ 25 | █░▒▒▒░██████████░▒▒▒░██ 26 | ▌░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▐█ 27 | ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░█ 28 | ███▀▀▀██▄▒▒▒▒▒▒▒▄██▀▀▀█ 29 | █░░░▐█░▀█▒▒▒▒▒█▀░█▌░░░█ 30 | ▌░░░▐▄▌░▐▌▒▒▒▐▌░▐▄▌░░▐█ 31 | █░░░▐█▌░░▌▒▒▒▐░░▐█▌░░██ 32 | ▒▀▄▄▄█▄▄▄▌░▄░▐▄▄▄█▄▄▀▒█ 33 | ░░░░░░░░░░└┴┘░░░░░░░░░█ 34 | ██▄▄░░░░░░░░░░░░░░▄▄███ 35 | ████████▒▒▒▒▒▒█████████ 36 | █▀░░███▒▒░░▒░░▒▀███████ 37 | █▒░███▒▒╖░░╥░░╓▒▐██████ 38 | █▒░▀▀▀░░║░░║░░║░░██████ 39 | ██▄▄▄▄▀▀┴┴╚╧╧╝╧╧╝┴┴████ 40 | ███████████████████████ 41 | EOF 42 | echo 43 | echo "${YELLOW} CLOVER-MODS" 44 | echo "${LIGHTPURPLE}" 45 | 46 | node index.js 47 | sleep 1 48 | 49 | done 50 | -------------------------------------------------------------------------------- /lib/swm.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios') 2 | 3 | function convertSticker(base64, author, pack){ 4 | return new Promise((resolve, reject) =>{ 5 | axios('https://sticker-api-tpe3wet7da-uc.a.run.app/prepareWebp', { 6 | method: 'POST', 7 | headers: { 8 | Accept: 'application/json, text/plain, */*', 9 | 'Content-Type': 'application/json;charset=utf-8', 10 | 'User-Agent': 'axios/0.21.1', 11 | 'Content-Length': 151330 12 | }, 13 | data: `{"image": "${base64}","stickerMetadata":{"author":"${author}","pack":"${pack}","keepScale":true,"removebg":"HQ"},"sessionInfo":{"WA_VERSION":"2.2106.5","PAGE_UA":"WhatsApp/2.2037.6 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36","WA_AUTOMATE_VERSION":"3.6.10 UPDATE AVAILABLE: 3.6.11","BROWSER_VERSION":"HeadlessChrome/88.0.4324.190","OS":"Windows Server 2016","START_TS":1614310326309,"NUM":"6247","LAUNCH_TIME_MS":7934,"PHONE_VERSION":"2.20.205.16"},"config":{"sessionId":"session","headless":true,"qrTimeout":20,"authTimeout":0,"cacheEnabled":false,"useChrome":true,"killProcessOnBrowserClose":true,"throwErrorOnTosBlock":false,"chromiumArgs":["--no-sandbox","--disable-setuid-sandbox","--aggressive-cache-discard","--disable-cache","--disable-application-cache","--disable-offline-load-stale-cache","--disk-cache-size=0"],"executablePath":"C:\\\\Program Files (x86)\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe","skipBrokenMethodsCheck":true,"stickerServerEndpoint":true}}` 14 | }).then(({data}) =>{ 15 | resolve(data.webpBase64) 16 | }).catch(reject) 17 | 18 | }) 19 | } 20 | 21 | exports.convertSticker = convertSticker 22 | -------------------------------------------------------------------------------- /lib/funções.js: -------------------------------------------------------------------------------- 1 | const cfonts = require('cfonts') 2 | const chalk = require('chalk') 3 | const axios = require('axios') 4 | const fetch = require('node-fetch') 5 | const mimetype = require('mime-types') 6 | const fs = require('fs') 7 | 8 | const getBuffer = (url, options) => new Promise(async (resolve, reject) => { 9 | options ? options : {} 10 | await axios({method: "get", url, headers: {'DNT': 1, 'Upgrade-Insecure-Request': 1}, ...options, responseType: 'arraybuffer'}).then((res) => { 11 | resolve(res.data) 12 | }).catch(reject) 13 | }) 14 | 15 | const getGroupAdmins = (participants) => { 16 | admins = [] 17 | for (let i of participants) { 18 | if(i.admin == 'admin') admins.push(i.id) 19 | if(i.admin == 'superadmin') admins.push(i.id) 20 | } 21 | return admins 22 | } 23 | 24 | var corzinhas = ["red","green","yellow","blue","magenta","cyan","white","gray","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"] 25 | const cor1 = corzinhas[Math.floor(Math.random() * (corzinhas.length))] 26 | const cor2 = corzinhas[Math.floor(Math.random() * (corzinhas.length))] 27 | const cor3 = corzinhas[Math.floor(Math.random() * (corzinhas.length))] 28 | const cor4 = corzinhas[Math.floor(Math.random() * (corzinhas.length))] 29 | const cor5 = corzinhas[Math.floor(Math.random() * (corzinhas.length))] 30 | 31 | const banner = cfonts.render((''), { 32 | font: 'tiny', 33 | align: 'center', 34 | colors: [`${cor1}`,`${cor2}`,`${cor3}`,`${cor4}`,`${cor5}`], 35 | background: 'transparent', 36 | letterSpacing: 1, 37 | lineHeight: 1, 38 | space: true, 39 | maxLength: '0', 40 | gradrient: [`${cor4}`,`${cor2}`], 41 | independentGradient: false, 42 | transitionGradient: false, 43 | env: 'node' 44 | }); 45 | 46 | const getExtension = async (type) => { 47 | return await mimetype.extension(type) 48 | } 49 | 50 | const getRandom = (ext) => { 51 | return `${Math.floor(Math.random() * 10000)}${ext}`; 52 | }; 53 | 54 | module.exports = { banner, getGroupAdmins, getBuffer, getExtension, getRandom } 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "clover-v5", 3 | "version": "6.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "start": "node index.js", 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "@clovermods", 11 | "license": "MIT", 12 | "dependencies": { 13 | "@adiwajshing/keyed-db": "^0.2.4", 14 | "@hapi/boom": "^9.1.4", 15 | "@whiskeysockets/baileys": "^6.4.1", 16 | "async": "^3.2.3", 17 | "awesome-phonenumber": "^2.69.0", 18 | "axios": "^0.21.1", 19 | "cfonts": "^2.10.0", 20 | "chalk": "^4.1.2", 21 | "cheerio": "^1.0.0-rc.10", 22 | "child_process": "^1.0.2", 23 | "cli-color": "^2.0.3", 24 | "cookie": "^0.4.1", 25 | "cors": "^2.8.3", 26 | "crypto": "^1.0.1", 27 | "emoji-api": "^2.0.1", 28 | "emoji-regex": "^10.0.0", 29 | "emoji-unicode": "^2.0.1", 30 | "encodeurl": "^1.0.2", 31 | "escape-string-regexp": "^1.0.5", 32 | "express": "^4.17.1", 33 | "fake-useragent": "^1.0.1", 34 | "file-type": "^16.5.3", 35 | "fluent-ffmpeg": "^2.1.2", 36 | "fs-extra": "^10.0.0", 37 | "g-i-s": "^2.1.6", 38 | "google-it": "^1.6.2", 39 | "got": "^12.0.1", 40 | "hxz-api": "^1.0.1", 41 | "image-to-base64": "^2.2.0", 42 | "imagemagick": "^0.1.3", 43 | "imgbb-uploader": "^1.3.5", 44 | "isarray": "^2.0.5", 45 | "jpeg-js": "^0.4.3", 46 | "jsdom": "^19.0.0", 47 | "linkifyjs": "^3.0.5", 48 | "mime": "^3.0.0", 49 | "moment-timezone": "^0.5.34", 50 | "ms": "^2.1.3", 51 | "multistream": "^4.1.0", 52 | "node-cache": "^5.1.2", 53 | "node-fetch": "^2.6.7", 54 | "parse-ms": "^3.0.0", 55 | "path": "^0.12.7", 56 | "pino": "^7.8.0", 57 | "process-nextick-args": "^2.0.1", 58 | "protobufs": "^0.1.0", 59 | "qrcode-terminal": "^0.12.0", 60 | "readline": "^1.3.0", 61 | "remove.bg": "^1.3.0", 62 | "request": "^2.88.2", 63 | "ssl-express-www": "^3.0.7", 64 | "trevo-api": "github:trevo-community/trevo-api", 65 | "yt-search": "^2.9.0", 66 | "ytdl-core": "^4.10.1", 67 | "yts": "^2.0.0" 68 | }, 69 | "directories": { 70 | "lib": "lib" 71 | }, 72 | "description": "me segue kkkkkk" 73 | } 74 | -------------------------------------------------------------------------------- /lib/ytdl.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch') 2 | const { JSDOM } = require('jsdom') 3 | const path = require('path') 4 | const util = require('util') 5 | const moment = require('moment-timezone') 6 | //const time = moment().format('DD/MM HH:mm:ss') 7 | //const { color, bgcolor } = require('./color') 8 | const { Readable, Writable } = require('stream') 9 | 10 | const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)youtube(?:\-nocookie|)\.com\/(?:watch\?.*(?:|\&)v=|embed\/|v\/)|youtu\.be\/)([-_0-9A-Za-z]{11})/ 11 | 12 | function INFOLOG(info) { 13 | return 14 | } 15 | 16 | function post(url, formdata) { 17 | INFOLOG(Object.keys(formdata).map(key => `${key}=${encodeURIComponent(formdata[key])}`).join('&')) 18 | return fetch(url, { 19 | method: 'POST', 20 | headers: { 21 | accept: "*/*", 22 | 'accept-language': "en-US,en;q=0.9", 23 | 'content-type': "application/x-www-form-urlencoded; charset=UTF-8" 24 | }, 25 | body: Object.keys(formdata).map(key => `${key}=${encodeURIComponent(formdata[key])}`).join('&') 26 | }) 27 | } 28 | 29 | 30 | function ytv(url) { 31 | return new Promise((resolve, reject) => { 32 | if (ytIdRegex.test(url)) { 33 | let ytId = ytIdRegex.exec(url) 34 | url = 'https://youtu.be/' + ytId[1] 35 | post('https://www.y2mate.com/mates/en60/analyze/ajax', { 36 | url, 37 | q_auto: 0, 38 | ajax: 1 39 | }) 40 | .then(res => res.json()) 41 | .then(res => { 42 | INFOLOG('Scraping...') 43 | document = (new JSDOM(res.result)).window.document 44 | yaha = document.querySelectorAll('td') 45 | id = /var k__id = "(.*?)"/.exec(document.body.innerHTML) || ['', ''] 46 | thumb = document.querySelector('img').src 47 | title = document.querySelector('b').innerHTML 48 | 49 | post('https://www.y2mate.com/mates/en60/convert', { 50 | type: 'youtube', 51 | _id: id[1], 52 | v_id: ytId[1], 53 | ajax: '1', 54 | token: '', 55 | ftype: 'mp4', 56 | fquality: 720 57 | }) 58 | .then(res => res.json()) 59 | .then(res => { 60 | resolve({ 61 | dl_link: / { 73 | if (ytIdRegex.test(url)) { 74 | let ytId = ytIdRegex.exec(url) 75 | url = 'https://youtu.be/' + ytId[1] 76 | post('https://www.y2mate.com/mates/en60/analyze/ajax', { 77 | url, 78 | q_auto: 0, 79 | ajax: 1 80 | }) 81 | .then(res => res.json()) 82 | .then(res => { 83 | let document = (new JSDOM(res.result)).window.document 84 | let type = document.querySelectorAll('td') 85 | let id = /var k__id = "(.*?)"/.exec(document.body.innerHTML) || ['', ''] 86 | let thumb = document.querySelector('img').src 87 | let title = document.querySelector('b').innerHTML 88 | 89 | post('https://www.y2mate.com/mates/en60/convert', { 90 | type: 'youtube', 91 | _id: id[1], 92 | v_id: ytId[1], 93 | ajax: '1', 94 | token: '', 95 | ftype: 'mp3', 96 | fquality: 128 97 | }) 98 | .then(res => res.json()) 99 | .then(res => { 100 | resolve({ 101 | dl_link: / new Promise((resolve) => rl.question(text, resolve)); 47 | // BANER DO TERMINAL 48 | const cfonts = require('cfonts') 49 | const banner = cfonts.render(('Cat|bot'), 50 | { 51 | font: "block", 52 | align: "center", 53 | gradient: ["red", "blue"] 54 | }) 55 | 56 | // CONEXÃO 57 | 58 | const client = makeWASocket({ 59 | version, 60 | logger: P({ level: "silent" }), 61 | usePairingCode, 62 | mobile: false, 63 | browser: ["FireFox (linux)"], 64 | auth: state, 65 | msgRetryCounterCache, 66 | defaultQueryTimeoutMs: undefined, 67 | patchMessageBeforeSending: (message) => { 68 | const requiresPatch = !!(message.buttonsMessage || message.listMessage); 69 | if (requiresPatch) { 70 | message = { 71 | viewOnceMessage: { 72 | message: { 73 | messageContextInfo: { 74 | deviceListMetadataVersion: 2, 75 | deviceListMetadata: {}, 76 | }, ...message 77 | } 78 | } 79 | } 80 | } 81 | return message; 82 | } 83 | }); 84 | 85 | console.log(banner.string) 86 | console.log('[ Clover 6.0 online ]') 87 | 88 | if (!client.authState.creds.registered) { 89 | const phoneNumber = await question(`\nDigite seu número do WhatsApp:\nEx: ${clc.bold("557598659559")}\n `); 90 | const code = await client.requestPairingCode(phoneNumber); 91 | console.log(`Seu código de conexão é: \n\n ${clc.bold(code)}\n~>`); 92 | console.log(`Abra seu WhatsApp, vá em ${clc.bold("Aparelhos Conectados > Conectar um novo Aparelho > Conectar usando Número.")}`) 93 | } 94 | 95 | store.bind(client.ev) 96 | 97 | client.ev.on("creds.update", saveCreds) 98 | store.bind(client.ev) 99 | client.ev.on("chats.set", () => { 100 | console.log("Tem conversas", store.chats.all()) 101 | }) 102 | client.ev.on("contacts.set", () => { 103 | console.log("Tem contatos", Object.values(store.contacts)) 104 | }) 105 | // CONEXÃO ATUALIZAÇÃO 106 | client.ev.on("connection.update", (update) => { 107 | const { connection, lastDisconnect } = update 108 | if (connection === "close") { 109 | const shouldReconnect = (lastDisconnect.error)?.output?.statusCode !== DisconnectReason.loggedOut 110 | console.log("Conexão fechada devido a", lastDisconnect.error, "Tentando reconectar...", shouldReconnect); 111 | if (shouldReconnect) { 112 | clover_mods() 113 | } 114 | 115 | } else if (connection === "open") { 116 | console.log(chalk.keyword("red")("Conectado com sucesso!")); 117 | } 118 | }) 119 | 120 | const welkom = JSON.parse(fs.readFileSync('./lib/welkom.json')); 121 | const bemvindotexto = JSON.parse(fs.readFileSync('./lib/TextoDoBemvindo.json')); 122 | const trevo = bemvindotexto.texto 123 | // PARTICIPANTES DE GRUPO ATUALIZAÇÃO 124 | client.ev.on('group-participants.update', async (anu) => { 125 | //console.log(anu) 126 | if (welkom.includes(anu.id)) { 127 | try { 128 | let metadata = await client.groupMetadata(anu.id) 129 | let participants = anu.participants 130 | for (let num of participants) { 131 | try { 132 | ppimg = await client.profilePictureUrl(anu.participants[0]) 133 | } catch { 134 | ppimg = 'https://telegra.ph/file/41598dec8462fb039c130.jpg' 135 | } 136 | memb = metadata.participants.length 137 | if (anu.action == 'add') { 138 | num = anu.participants[0] 139 | client.sendMessage(anu.id, { 140 | image: { url: `${ppimg}` }, caption: `${trevo}`, headerType: 4 141 | }) 142 | } else if (anu.action == 'remove') { 143 | client.sendMessage(anu.id, { image: { url: `${ppimg}` }, caption: `OLA POVO DO GRUPO:\n*${metadata.subject}*\n\nO Membro: @${num.split('@')[0]}\n\nSaiu do Grp ou foi Banido.` }) 144 | } 145 | } 146 | } catch (err) { 147 | console.log(err) 148 | } 149 | } 150 | }) 151 | 152 | // MENSAGEM ATUALIZAÇÃO 153 | client.ev.on('messages.upsert', connection => { 154 | //console.log(connection) 155 | const info = connection.messages[0]; 156 | //if (info.key.fromMe) return; 157 | if (connection.type != 'notify') return; 158 | if (info.key.remoteJid === 'status@broadcast') return; 159 | require('./clover.js')(client, info, settings, color) 160 | }); 161 | 162 | client.ev.on('creds.update', saveCreds) 163 | } 164 | 165 | // start no bot... 166 | clover_mods(), (err) => console.log("vix boy, deu erro", color(String(err), 'red')); 167 | -------------------------------------------------------------------------------- /lib/sotoy.json: -------------------------------------------------------------------------------- 1 | ["🥑 : 🥑 : 🥑","🍉 : 🍉 : 🍉","🍓 : 🍓 : 🍓","🍎 : 🍎 : 🍎","🍍 : 🍍 : 🍍","🥝 : 🥝 : 🥝","🍑 : 🍑 : 🍑","🥥 : 🥥 : 🥥","🍇 : 🍇 : 🍇","🍊 : 🍊 : 🍊","🔔 : 🔔 : 🔔","🍒 : 🍒 : 🍒","🍌 : 🍌 : 🍌","🍐 : 🍐 : 🍐","🍋 : 🍋 : 🍋","🍊 : 🍒 : 🍐","🥝 : 🍉 : 🥑","🍌 : 🍒 : 🔔","🍐 : 🔔 : 🥝","🍉 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🥥 : 🍇","🍓 : 🍐 : 🍇","🍊 : 🍍 : 🍉","🍒 : 🔔 : 🍊","🍇 : 🥑 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍒 : 🍐","🍉 : 🍓 : 🥑","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍍 : 🍐 : 🥝","🥑 : 🍓 : 🍉","🍑 : 🔔 : 🥑","🍌 : 🍒 : 🔔","🍉 : 🍍 : 🥥","🍊 : 🍋 : 🍒","🍋 : 🍍 : 🍌","🥥 : 🍎 : 🍉","🔔 : 🍑 : 🍓","🍉 : 🥑 : 🍐","🍒 : 🔔 : 🍊","🍇 : 🍍 : 🍐","🍓 : 🥑 : 🍍","🔔 : 🍒 : 🍐","🥥 : 🍒 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍉 : 🍋","🍐 : 🍑 : 🍐","🥑 : 🍒 : 🍓","🔔 : 🍎 : 🍇","🍌 : 🍒 : 🔔","🍐 : 🥥 : 🍍","🍊 : 🍋 : 🍒","🍓 : 🍉 : 🍌","🍍 : 🔔 : 🍇","🔔 : 🍐 : 🍎","🍊 : 🍒 : 🍐","🍉 : 🔔 : 🥑","🍇 : 🥥 : 🍎","🍊 : 🍋 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🍉 : 🔔","🍐 : 🍒 : 🍋","🍑 : 🍎 : 🍐","🍊 : 🍍 : 🍒","🔔 : 🔔 : 🥑","🍌 : 🍒 : 🍉","🍐 : 🍓 : 🍎","🍊 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🍇","🍉 : 🍐 : 🥥","🔔 : 🍑 : 🥑","🍒 : 🔔 : 🍊","🍇 : 🍓 : 🍐","🍊 : 🍋 : 🔔","🥑 : 🍍 : 🍐","🔔 : 🍒 : 🍉","🍊 : 🥑 : 🔔","🍎 : 🍒 : 🍎","🍐 : 🍉 : 🍐","🍊 : 🥑 : 🍓","🍋 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🔔 : 🥑","🍓 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🥥","🍉 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🥑 : 🍓 : 🍉","🍇 : 🍒 : 🍍","🍊 : 🥑 : 🍑","🍑 : 🍎 : 🍐","🔔 : 🍒 : 🍊","🍉 : 🥝 : 🍎","🍐 : 🍉 : 🍋","🍐 : 🥑 : 🍐","🍊 : 🍒 : 🍓","🍑 : 🔔 : 🍉","🍌 : 🥑 : 🥝","🍐 : 🍉 : 🔔","🍊 : 🍓 : 🍒","🍋 : 🍋 : 🍉","🥑 : 🍎 : 🍇","🔔 : 🍑 : 🥑","🍊 : 🥥 : 🍐","🍍 : 🍓 : 🍊","🍉 : 🍒 : 🍐","🍊 : 🍋 : 🍉","🔔 : 🍎 : 🍐","🍓 : 🥑 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍑","🥝 : 🍉 : 🍐","🍓 : 🍍 : 🍒","🔔 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🍉 : 🍓","🍊 : 🍐 : 🍒","🍊 : 🍒 : 🍐","🥝 : 🍉 : 🥑","🥑 : 🍒 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍍 : 🍐","🍓 : 🍉 : 🍊","🍊 : 🍋 : 🍓","🍐 : 🍒 : 🍋","🥑 : 🍐 : 🥥","🍊 : 🍒 : 🍍","🍎 : 🔔 : 🍇","🍌 : 🍒 : 🍓","🍓 : 🔔 : 🍎","🍊 : 🍉 : 🍍","🍋 : 🍋 : 🍌","🍎 : 🔔 : 🍉","🔔 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🍍 : 🔔 : 🥑","🍇 : 🥝 : 🍎","🍊 : 🍉 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍉 : 🍐 : 🍉","🍊 : 🥥 : 🥑","🔔 : 🍍 : 🍇","🍌 : 🍎 : 🔔","🍐 : 🔔 : 🍎","🍊 : 🥥 : 🍒","🍉 : 🍋 : 🍌","🍑 : 🔔 : 🍇","🔔 : 🍐 : 🍉","🍊 : 🥝 : 🍐","🍍 : 🔔 : 🍊","🍇 : 🍒 : 🍐","🍊 : 🍋 : 🔔","🍉 : 🍒 : 🍐","🔔 : 🥝 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍍 : 🍋","🥝 : 🍐 : 🍉","🍊 : 🍑 : 🍍","🔔 : 🔔 : 🍓","🍌 : 🍒 : 🔔","🍐 : 🔔 : 🥝","🍉 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🥥 : 🍇","🍓 : 🍐 : 🍇","🍊 : 🍍 : 🍉","🍒 : 🔔 : 🍊","🍇 : 🥑 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍒 : 🍐","🍉 : 🍊 : 🥑","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍍 : 🍐 : 🥝","🥑 : 🍓 : 🍉","🍑 : 🔔 : 🥑","🍌 : 🍒 : 🔔","🍉 : 🍍 : 🥥","🍊 : 🍋 : 🍒","🍋 : 🍍 : 🍌","🥥 : 🍎 : 🍉","🔔 : 🍑 : 🍓","🍉 : 🥑 : 🍐","🍒 : 🔔 : 🍊","🍇 : 🍍 : 🍐","🍓 : 🥑 : 🍍","🔔 : 🍒 : 🍐","🥥 : 🍒 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍉 : 🍋","🍐 : 🍑 : 🍐","🥑 : 🍒 : 🍓","🔔 : 🍎 : 🍇","🍌 : 🍒 : 🔔","🍐 : 🥥 : 🍍","🍊 : 🍋 : 🍒","🍓 : 🍉 : 🍌","🍍 : 🔔 : 🍇","🔔 : 🍐 : 🍎","🍊 : 🍒 : 🍐","🍉 : 🔔 : 🥑","🍇 : 🥥 : 🍎","🍊 : 🍋 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🍉 : 🔔","🍐 : 🍒 : 🍋","🍑 : 🍎 : 🍐","🍊 : 🍍 : 🍒","🔔 : 🔔 : 🥑","🍌 : 🍒 : 🍉","🍐 : 🍓 : 🍎","🍊 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🍇","🍉 : 🍐 : 🥥","🔔 : 🍑 : 🥑","🍒 : 🔔 : 🍊","🍇 : 🍓 : 🍐","🍊 : 🍋 : 🔔","🥑 : 🍍 : 🍐","🔔 : 🍒 : 🍉","🍊 : 🥑 : 🔔","🍎 : 🍒 : 🍎","🍐 : 🍉 : 🍐","🍊 : 🥑 : 🍓","🍋 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🔔 : 🥑","🍓 : 🍋 : 🍒","🍋 : 🍇 : 🍌","🔔 : 🍎 : 🥥","🍉 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🥑 : 🍓 : 🍉","🍇 : 🍒 : 🍍","🍊 : 🥑 : 🍑","🍑 : 🍎 : 🍐","🔔 : 🍒 : 🍊","🍉 : 🥝 : 🍎","🍐 : 🍉 : 🍋","🍐 : 🥑 : 🍐","🍊 : 🍒 : 🍓","🍑 : 🔔 : 🍉","🍌 : 🥑 : 🥝","🍐 : 🍉 : 🔔","🍊 : 🍓 : 🍒","🍋 : 🍋 : 🍉","🥑 : 🍎 : 🍇","🔔 : 🍑 : 🥑","🍊 : 🥥 : 🍐","🍍 : 🍓 : 🍊","🍉 : 🍒 : 🍐","🍊 : 🍋 : 🍉","🔔 : 🍎 : 🍐","🍓 : 🥑 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍑","🥝 : 🍉 : 🍐","🍓 : 🍍 : 🍒","🔔 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🍉 : 🍓","🍊 : 🍐 : 🍒","🍊 : 🍒 : 🍐","🥝 : 🍉 : 🥑","🥑 : 🍒 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍍 : 🍐","🍓 : 🍉 : 🍊","🍊 : 🍋 : 🍓","🍐 : 🍒 : 🍋","🥑 : 🍐 : 🥥","🍊 : 🍒 : 🍍","🍎 : 🔔 : 🍇","🍌 : 🍒 : 🍓","🍓 : 🔔 : 🍎","🍊 : 🍉 : 🍍","🍋 : 🍋 : 🍌","🍎 : 🔔 : 🍉","🔔 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🍍 : 🔔 : 🥑","🍇 : 🥝 : 🍎","🍊 : 🍉 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍉 : 🍐 : 🍉","🍊 : 🥥 : 🥑","🔔 : 🍍 : 🍇","🍌 : 🍎 : 🔔","🍐 : 🔔 : 🍎","🍊 : 🥥 : 🍒","🍉 : 🍋 : 🍌","🍑 : 🔔 : 🍇","🔔 : 🍐 : 🍉","🍊 : 🥝 : 🍐","🍍 : 🔔 : 🍊","🍇 : 🍒 : 🍐","🍊 : 🍋 : 🔔","🍉 : 🍒 : 🍐","🔔 : 🥝 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍍 : 🍋","🥝 : 🍐 : 🍉","🍊 : 🍑 : 🍍","🔔 : 🔔 : 🍓","🍌 : 🍒 : 🔔","🍐 : 🔔 : 🥝","🍉 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🥥 : 🍇","🍓 : 🍐 : 🍇","🍊 : 🍍 : 🍉","🍒 : 🔔 : 🍊","🍇 : 🥑 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍒 : 🍐","🍉 : 🍓 : 🥑","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍍 : 🍐 : 🥝","🥑 : 🍓 : 🍉","🍑 : 🔔 : 🥑","🍌 : 🍒 : 🔔","🍉 : 🍍 : 🥥","🍊 : 🍋 : 🍒","🍋 : 🍍 : 🍌","🥥 : 🍎 : 🍉","🔔 : 🍑 : 🍓","🍉 : 🥑 : 🍐","🍒 : 🔔 : 🍊","🍇 : 🍍 : 🍐","🍓 : 🥑 : 🍍","🔔 : 🍒 : 🍐","🥥 : 🍒 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍉 : 🍋","🍐 : 🍑 : 🍐","🥑 : 🍒 : 🍓","🔔 : 🍎 : 🍇","🍌 : 🍒 : 🔔","🍐 : 🥥 : 🍍","🍊 : 🍋 : 🍒","🍓 : 🍉 : 🍌","🍍 : 🔔 : 🍇","🔔 : 🍐 : 🍎","🍊 : 🍒 : 🍐","🍉 : 🔔 : 🥑","🍇 : 🥥 : 🍎","🍊 : 🍋 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🍉 : 🔔","🍐 : 🍒 : 🍋","🍑 : 🍎 : 🍐","🍊 : 🍍 : 🍒","🔔 : 🔔 : 🥑","🍌 : 🍒 : 🍉","🍐 : 🍓 : 🍎","🍊 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🍇","🍉 : 🍐 : 🥥","🔔 : 🍑 : 🥑","🍒 : 🔔 : 🍊","🍇 : 🍓 : 🍐","🍊 : 🍋 : 🔔","🥑 : 🍍 : 🍐","🔔 : 🍒 : 🍉","🍊 : 🥑 : 🔔","🍎 : 🍒 : 🍎","🍐 : 🍉 : 🍐","🍊 : 🥑 : 🍓","🍋 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🔔 : 🥑","🍓 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🥥","🍉 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🥑 : 🍓 : 🍉","🍇 : 🍒 : 🍍","🍊 : 🥑 : 🍑","🍑 : 🍎 : 🍐","🔔 : 🍒 : 🍊","🍉 : 🥝 : 🍎","🍐 : 🍉 : 🍋","🍐 : 🥑 : 🍐","🍊 : 🍒 : 🍓","🍑 : 🔔 : 🍉","🍌 : 🥑 : 🥝","🍐 : 🍉 : 🔔","🍊 : 🍓 : 🍒","🍋 : 🍋 : 🍉","🥑 : 🍎 : 🍇","🔔 : 🍑 : 🥑","🍊 : 🥥 : 🍐","🍍 : 🍓 : 🍊","🍉 : 🍒 : 🍐","🍊 : 🍋 : 🍉","🔔 : 🍎 : 🍐","🍓 : 🥑 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍑","🥝 : 🍉 : 🍐","🍓 : 🍍 : 🍒","🔔 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🍉 : 🍓","🍊 : 🍐 : 🍒","🍊 : 🍒 : 🍐","🥝 : 🍉 : 🥑","🥑 : 🍒 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍍 : 🍐","🍓 : 🍉 : 🍊","🍊 : 🍋 : 🍓","🍐 : 🍒 : 🍋","🥑 : 🍐 : 🥥","🍊 : 🍒 : 🍍","🍎 : 🔔 : 🍇","🍌 : 🍇 : 🍓","🍓 : 🔔 : 🍎","🍊 : 🍉 : 🍍","🍋 : 🍋 : 🍌","🍎 : 🔔 : 🍉","🔔 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🍍 : 🔔 : 🥑","🍇 : 🥝 : 🍎","🍊 : 🍉 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍉 : 🍐 : 🍉","🍊 : 🥥 : 🥑","🔔 : 🍍 : 🍇","🍌 : 🍎 : 🔔","🍐 : 🔔 : 🍎","🍊 : 🥥 : 🍒","🍉 : 🍋 : 🍌","🍑 : 🔔 : 🍇","🔔 : 🍐 : 🍉","🍊 : 🥝 : 🍐","🍍 : 🔔 : 🍊","🍇 : 🍒 : 🍐","🍊 : 🍋 : 🔔","🍉 : 🍒 : 🍐","🔔 : 🥝 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍍 : 🍋","🥝 : 🍐 : 🍉","🍊 : 🍑 : 🍍","🔔 : 🔔 : 🍓","🍌 : 🍒 : 🔔","🍐 : 🔔 : 🥝","🍉 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🥥 : 🍇","🍓 : 🍐 : 🍇","🍊 : 🍍 : 🍉","🍒 : 🔔 : 🍊","🍇 : 🥑 : 🍐","🍊 : 🍋 : 🔔","🔔 : 🍒 : 🍐","🍉 : 🍓 : 🥑","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍋","🍍 : 🍐 : 🥝","🥑 : 🍓 : 🍉","🍑 : 🔔 : 🥑","🍌 : 🍒 : 🔔","🍉 : 🍍 : 🥥","🍊 : 🍋 : 🍒","🍋 : 🍍 : 🍌","🥥 : 🍎 : 🍉","🔔 : 🍑 : 🍓","🍉 : 🥑 : 🍐","🍒 : 🔔 : 🍊","🍇 : 🍍 : 🍐","🍓 : 🥑 : 🍍","🔔 : 🍒 : 🍐","🥥 : 🍒 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍉 : 🍋","🍐 : 🍑 : 🍐","🥑 : 🍒 : 🍓","🔔 : 🍎 : 🍇","🍌 : 🍒 : 🔔","🍐 : 🥥 : 🍍","🍊 : 🍋 : 🍒","🍓 : 🍉 : 🍌","🍍 : 🔔 : 🍇","🔔 : 🍐 : 🍎","🍊 : 🍒 : 🍐","🍉 : 🔔 : 🥑","🍇 : 🥥 : 🍎","🍊 : 🍋 : 🔔","🔔 : 🍓 : 🍐","🔔 : 🍒 : 🍊","🥑 : 🥑 : 🥑","🍉 : 🍉 : 🍉","🍓 : 🍓 : 🍓","🍎 : 🍎 : 🍎","🍍 : 🍍 : 🍍","🥝 : 🥝 : 🥝","🍑 : 🍑 : 🍑","🥥 : 🥥 : 🥥","🍇 : 🍇 : 🍇","🍊 : 🍊 : 🍊","🔔 : 🔔 : 🔔","🍒 : 🍒 : 🍒","🍌 : 🍌 : 🍌","🍐 : 🍐 : 🍐","🍋 : 🍋 : 🍋","🥑 : 🍉 : 🔔","🍐 : 🍒 : 🍋","🍑 : 🍎 : 🍐","🍊 : 🍍 : 🍒","🔔 : 🔔 : 🥑","🍌 : 🍒 : 🍉","🍐 : 🍓 : 🍎","🍊 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🍇","🍉 : 🍐 : 🥥","🔔 : 🍑 : 🥑","🍒 : 🔔 : 🍊","🍇 : 🍓 : 🍐","🍊 : 🍋 : 🔔","🥑 : 🍍 : 🍐","🔔 : 🍒 : 🍉","🍊 : 🥑 : 🔔","🍎 : 🍒 : 🍎","🍐 : 🍉 : 🍐","🍊 : 🥑 : 🍓","🍋 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🔔 : 🥑","🍓 : 🍋 : 🍒","🍋 : 🥑 : 🍌","🔔 : 🍎 : 🥥","🍉 : 🍐 : 🍇","🍊 : 🍒 : 🍐","🥑 : 🍓 : 🍉","🍇 : 🍒 : 🍍","🍊 : 🥑 : 🍑","🍑 : 🍎 : 🍐","🔔 : 🍒 : 🍊","🍉 : 🥝 : 🍎","🍐 : 🍉 : 🍋","🍐 : 🥑 : 🍐","🍊 : 🍒 : 🍓","🍑 : 🔔 : 🍉","🍌 : 🥑 : 🥝","🍐 : 🍉 : 🔔","🍊 : 🍓 : 🍒","🍋 : 🍋 : 🍉","🥑 : 🍎 : 🍇","🔔 : 🍑 : 🥑","🍊 : 🥥 : 🍐","🍍 : 🍓 : 🍊","🍉 : 🍒 : 🍐","🍊 : 🍋 : 🍉","🔔 : 🍎 : 🍐","🍓 : 🥑 : 🍊","🍊 : 🍋 : 🔔","🍐 : 🍒 : 🍑","🥝 : 🍉 : 🍐","🍓 : 🍍 : 🍒","🔔 : 🔔 : 🍇","🍌 : 🍒 : 🍉","🍐 : 🍉 : 🍓","🍊 : 🍐 : 🍒","🥑 : 🥑 : 🥑","🍉 : 🍉 : 🍉","🍓 : 🍓 : 🍓","🍎 : 🍎 : 🍎","🍍 : 🍍 : 🍍","🥝 : 🥝 : 🥝","🍑 : 🍑 : 🍑","🥥 : 🥥 : 🥥","🍇 : 🍇 : 🍇","🍊 : 🍊 : 🍊","🔔 : 🔔 : 🔔","🍒 : 🍒 : 🍒","🍌 : 🍌 : 🍌","🍐 : 🍐 : 🍐","🍋 : 🍋 : 🍋"] -------------------------------------------------------------------------------- /clover.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const P = require('pino') 3 | const { Boom } = require('@hapi/boom') 4 | const fetch = require('node-fetch') 5 | const chalk = require('chalk') 6 | const { color } = require('./lib/color') 7 | const moment = require('moment-timezone') 8 | const hora = moment.tz('America/Sao_Paulo').format('HH:mm:ss') 9 | const data = moment.tz('America/Sao_Paulo').format('DD/MM/YY') 10 | const yts = require('yt-search'); 11 | const speed = require('performance-now') 12 | const { banner, getGroupAdmins, getBuffer, getRandom, getExtension } = require('./lib/funções') 13 | const { fetchJson } = require('./lib/fetcher') 14 | const sotoy = JSON.parse(fs.readFileSync('./lib/sotoy.json')) 15 | const configurações = JSON.parse(fs.readFileSync('./confing.json')) 16 | const textobv = JSON.parse(fs.readFileSync('./lib/TextoDoBemvindo.json')) 17 | const { convertSticker } = require("./lib/swm.js"); 18 | const ffmpeg = require('fluent-ffmpeg') 19 | const { exec, spawn, execSync } = require("child_process") 20 | const axios = require("axios") 21 | const linkfy = require('linkifyjs'); 22 | const anikit = require('trevo-api'); 23 | // Definições 24 | const prefixo = configurações.prefix 25 | const prefix = configurações.prefix 26 | const nomeBot = configurações.nomeBot 27 | const NomeDoBot = nomeBot 28 | const nomeDono = configurações.nomeDono 29 | const numeroDono = configurações.owner 30 | const username = configurações.username_anikit 31 | const key = configurações.key_anikit 32 | const log = ["clover2.jpg"] 33 | const im = log[Math.floor(Math.random() * log.length)]; 34 | const imagens = fs.readFileSync(`./${im}`) 35 | const logo = imagens 36 | let girastamp = speed() 37 | let latensi = speed() - girastamp 38 | 39 | const { default: makeWASocket, downloadContentFromMessage, useMultiFileAuthState, makeInMemoryStore, DisconnectReason, WAGroupMetadata, relayWAMessage, MediaPathMap, mentionedJid, processTime, MediaType, Browser, MessageType, Presence, Mimetype, Browsers, delay, fetchLatestBaileysVersion, MessageRetryMap, extractGroupMetadata, generateWAMessageFromContent, proto } = require('@whiskeysockets/baileys'); 40 | const { response } = require('express') 41 | 42 | 43 | module.exports = client = async (client, info, settings, color) => { 44 | 45 | try { 46 | const altpdf = Object.keys(info.message) 47 | const type = altpdf[0] == 'senderKeyDistributionMessage' ? altpdf[1] == 'messageContextInfo' ? altpdf[2] : altpdf[1] : altpdf[0] 48 | global.prefixo 49 | const content = JSON.stringify(info.message) 50 | const from = info.key.remoteJid 51 | selectedButton = (type == 'buttonsResponseMessage') ? info.message.buttonsResponseMessage.selectedButtonId : '' 52 | var body = (type === 'conversation') ? 53 | info.message.conversation : (type == 'imageMessage') ? 54 | info.message.imageMessage.caption : (type == 'videoMessage') ? 55 | info.message.videoMessage.caption : (type == 'extendedTextMessage') ? 56 | info.message.extendedTextMessage.text : (type == 'buttonsResponseMessage') ? 57 | info.message.buttonsResponseMessage.selectedButtonId : (type == 'listResponseMessage') ? 58 | info.message.listResponseMessage.singleSelectReply.selectedRowId : (type == 'templateButtonReplyMessage') ? 59 | info.message.templateButtonReplyMessage.selectedId : '' 60 | const args = body.trim().split(/ +/).slice(1) 61 | const isCmd = body.startsWith(prefixo) 62 | const comando = isCmd ? body.slice(1).trim().split(/ +/).shift().toLocaleLowerCase() : null 63 | const argsButton = selectedButton.trim().split(/ +/) 64 | bady = (type === 'conversation') ? info.message.conversation : (type == 'imageMessage') ? info.message.imageMessage.caption : (type == 'videoMessage') ? info.message.videoMessage.caption : (type == 'extendedTextMessage') ? info.message.extendedTextMessage.text : (info.message.listResponseMessage && info.message.listResponseMessage.singleSelectReply.selectedRowId) ? info.message.listResponseMessage.singleSelectReply.selectedRowId : '' 65 | budy = (type === 'conversation') ? info.message.conversation : (type === 'extendedTextMessage') ? info.message.extendedTextMessage.text : '' 66 | button = (type == 'buttonsResponseMessage') ? info.message.buttonsResponseMessage.selectedDisplayText : '' 67 | button = (type == 'buttonsResponseMessage') ? info.message.buttonsResponseMessage.selectedButtonId : '' 68 | listMessage = (type == 'listResponseMessage') ? info.message.listResponseMessage.title : '' 69 | var pes = (type === 'conversation' && info.message.conversation) ? info.message.conversation : (type == 'imageMessage') && info.message.imageMessage.caption ? info.message.imageMessage.caption : (type == 'videoMessage') && info.message.videoMessage.caption ? info.message.videoMessage.caption : (type == 'extendedTextMessage') && info.message.extendedTextMessage.text ? info.message.extendedTextMessage.text : '' 70 | bidy = budy.toLowerCase() 71 | 72 | 73 | const getFileBuffer = async (mediakey, MediaType) => { 74 | const stream = await downloadContentFromMessage(mediakey, MediaType) 75 | 76 | let buffer = Buffer.from([]) 77 | for await (const chunk of stream) { 78 | buffer = Buffer.concat([buffer, chunk]) 79 | } 80 | return buffer 81 | } 82 | 83 | const antilink = JSON.parse(fs.readFileSync('./lib/antilink.json')) 84 | const messagesC = pes.slice(0).trim().split(/ +/).shift().toLowerCase() 85 | const arg = body.substring(body.indexOf(' ') + 1) 86 | const argss = body.split(/ +/g) 87 | const testat = body 88 | const ants = body 89 | const isGroup = info.key.remoteJid.endsWith('@g.us') 90 | const tescuk = ['0@s.whatsapp.net'] 91 | const q = args.join(' ') 92 | const sender = isGroup ? info.key.participant : info.key.remoteJid 93 | const pushname = info.pushName ? info.pushName : '' 94 | const groupMetadata = isGroup ? await client.groupMetadata(from) : '' 95 | const groupName = isGroup ? groupMetadata.subject : '' 96 | const groupDesc = isGroup ? groupMetadata.desc : '' 97 | const groupMembers = isGroup ? groupMetadata.participants : '' 98 | const groupAdmins = isGroup ? getGroupAdmins(groupMembers) : '' 99 | const text = args.join(' ') 100 | var isAntilink = isGroup ? antilink.includes(from) : false 101 | 102 | // Selos de verificado 103 | const ContatVR = { key: { participant: '0@s.whatsapp.net' }, message: { contactMessage: { displayName: `${pushname}` } } } 104 | const LiveVR = { key: { participant: '0@s.whatsapp.net' }, message: { liveLocationMessage: { displayName: `${pushname}` } } } 105 | const ImagenVR = { key: { participant: '0@s.whatsapp.net' }, message: { imageMessage: { displayName: `${pushname}` } } } 106 | const VideoVR = { key: { participant: '0@s.whatsapp.net' }, message: { videoMessage: { displayName: `${pushname}` } } } 107 | const DocVR = { key: { participant: '0@s.whatsapp.net' }, message: { documentMessage: { displayName: `${pushname}` } } } 108 | 109 | 110 | // Consts dono/adm etc... 111 | const quoted = info.quoted ? info.quoted : info 112 | const mime = (quoted.info || quoted).mimetype || "" 113 | const numeroBot = client.user.id.split(':')[0] + '@s.whatsapp.net' 114 | const isBot = info.key.fromMe ? true : false 115 | const isBotGroupAdmins = groupAdmins.includes(numeroBot) || false 116 | const isGroupAdmins = groupAdmins.includes(sender) || false 117 | const argis = bidy.trim().split(/ +/) 118 | const isOwner = sender.includes(numeroDono) 119 | const enviar = (texto) => { 120 | client.sendMessage(from, { text: texto }, { quoted: info }) 121 | } 122 | const reply = (texto) => { 123 | client.sendMessage(from, { text: texto }, { quoted: info }) 124 | } 125 | const participants = isGroup ? await groupMetadata.participants : '' 126 | 127 | 128 | 129 | const welkom = JSON.parse(fs.readFileSync('./lib/welkom.json')); 130 | const isWelkom = isGroup ? welkom.includes(from) : false 131 | 132 | 133 | 134 | // Consts isQuoted 135 | const isImage = type == 'imageMessage' 136 | const isVideo = type == 'videoMessage' 137 | const isAudio = type == 'audioMessage' 138 | const isSticker = type == 'stickerMessage' 139 | const isContact = type == 'contactMessage' 140 | const isLocation = type == 'locationMessage' 141 | const isProduct = type == 'productMessage' 142 | const isMedia = (type === 'imageMessage' || type === 'videoMessage' || type === 'audioMessage') 143 | typeMessage = body.substr(0, 50).replace(/\n/g, '') 144 | if (isImage) typeMessage = 'Image' 145 | else if (isVideo) typeMessage = 'Video' 146 | else if (isAudio) typeMessage = 'Audio' 147 | else if (isSticker) typeMessage = 'Sticker' 148 | else if (isContact) typeMessage = 'Contact' 149 | else if (isLocation) typeMessage = 'Location' 150 | else if (isProduct) typeMessage = 'Product' 151 | const isQuotedMsg = type === 'extendedTextMessage' && content.includes('textMessage') 152 | const isQuotedImage = type === 'extendedTextMessage' && content.includes('imageMessage') 153 | const isQuotedVideo = type === 'extendedTextMessage' && content.includes('videoMessage') 154 | const isQuotedDocument = type === 'extendedTextMessage' && content.includes('documentMessage') 155 | const isQuotedAudio = type === 'extendedTextMessage' && content.includes('audioMessage') 156 | const isQuotedSticker = type === 'extendedTextMessage' && content.includes('stickerMessage') 157 | const isQuotedContact = type === 'extendedTextMessage' && content.includes('contactMessage') 158 | const isQuotedLocation = type === 'extendedTextMessage' && content.includes('locationMessage') 159 | const isQuotedProduct = type === 'extendedTextMessage' && content.includes('productMessage') 160 | 161 | var msg = { 162 | espere: "agrade um momento...." 163 | } 164 | resposta = { 165 | espere: "[⚙️️]Aguarde...enviando ", 166 | aguarde: "[⚙️️]Aguarde...enviando ", 167 | dono: "[⚙️️]Esse comando so pode ser usado pelo meu dono!!! ", 168 | grupo: "[⚙️️]Esse comando só pode ser usado em grupo ", 169 | premium: "[⚙️️]comando so pra usuários premium", 170 | privado: "[⚙️️]Esse comando só pode ser usado no privado ", 171 | adm: "[⚙️️]Esse comando só pode ser usado por administradores de grupo", 172 | botadm: "[⚙️️]Este comando só pode ser usado quando o bot se torna administrador ", 173 | registro: `[⚙️️] Você não se registrou utilize ${prefix}rg para se registrar `, 174 | norg: "[⚙️️] Você ja está registrado ", 175 | erro: "[⚙️️] Error, tente novamente mais tarde ", 176 | menu: "aaaaa" 177 | } 178 | 179 | 180 | const isUrl = (url) => { 181 | if (linkfy.find(url)[0]) return true 182 | return false 183 | } 184 | if (isUrl(body) && isAntilink && isGroup && isBotGroupAdmins) { 185 | if (!isAntilink) return 186 | if (!isUrl(body)) return 187 | if (body.includes("http")) { 188 | if (!budy.includes("http")) return 189 | if (isBot) return 190 | linkgpp = await client.groupInviteCode(from) 191 | if (budy.match(`${linkgpp}`)) return reply('*Link do nosso grupo, não irei remover.. *') 192 | if (isGroupAdmins) return reply("*Link detectado, porém usuário é admin*") 193 | if (!JSON.stringify(groupMembers).includes(sender)) return 194 | client.sendMessage(from, { delete: { remoteJid: from, fromMe: false, id: info.key.id, participant: [sender] } }) 195 | client.groupParticipantsUpdate(from, [sender], 'remove') 196 | } 197 | } 198 | 199 | const mentions = (teks, memberr, id) => { 200 | (id == null || id == undefined || id == false) ? client.sendMessage(from, { text: teks.trim(), mentions: memberr }) : client.sendMessage(from, { text: teks.trim(), mentions: memberr }) 201 | } 202 | 203 | if (!isGroup && isCmd) console.log(`${color('╭━━━━━━━━━━━━━━━━━━━━━━━━━╮', 'cyan')}\n${color('┃', 'cyan')} ${color('Número:', 'yellow')} ${color(sender.split('@')[0], 'purple')}\n${color('┃', 'cyan')} ${color('Nome:', 'yellow')} ${color(pushname, 'purple')}\n${color('┃', 'cyan')} ${color('Comando:', 'yellow')} ${color(comando)}\n${color('┃', 'cyan')} ${color('Palavras:', 'yellow')} ${color(budy.length, 'magenta')}\n${color('╰━━━━━━━━━━━━━━━━━━━━━━━━━╯', 'cyan')}`) 204 | if (!isGroup && !isCmd) console.log(`${color('╭━━━━━━━━━━━━━━━━━━━━━━━━━╮', 'cyan')}\n${color('┃', 'cyan')} ${color('Número:', 'yellow')} ${color(sender.split('@')[0], 'magenta')}\n${color('┃', 'cyan')} ${color('Nome:', 'yellow')} ${color(pushname, 'purple')}\n${color('┃', 'cyan')} ${color('Comando:', 'yellow')} ${color('Não', 'red')}\n${color('┃', 'cyan')} ${color('Palavras:', 'yellow')} ${color(budy.length, 'magenta')}\n${color('╰━━━━━━━━━━━━━━━━━━━━━━━━━╯', 'cyan')}`) 205 | if (isGroup && isGroup) console.log(`${color('╭━━━━━━━━━━━━━━━━━━━━━━━━━╮', 'cyan')}\n${color('┃', 'cyan')} ${color('Número:', 'yellow')} ${color(sender.split('@')[0], 'magenta')}\n${color('┃', 'cyan')} ${color('Nome:', 'yellow')} ${color(pushname, 'purple')}\n${color('┃', 'cyan')} ${color('Comando:', 'yellow')} ${color(comando)}\n${color('┃', 'cyan')} ${color('Palavras:', 'yellow')} ${color(budy.length, 'magenta')}\n${color('┃', 'cyan')} ${color('Grupo:', 'yellow')} ${color(groupName, 'magenta')}\n${color('╰━━━━━━━━━━━━━━━━━━━━━━━━━╯', 'cyan')}`) 206 | if (!isGroup && isGroup) console.log(`${color('╭━━━━━━━━━━━━━━━━━━━━━━━━━╮', 'cyan')}\n${color('┃', 'cyan')} ${color('Número:', 'yellow')} ${color(sender.split('@')[0], 'magenta')}\n${color('┃', 'cyan')} ${color('Nome:', 'yellow')} ${color(pushname, 'purple')}\n${color('┃', 'cyan')} ${color('Horário:', 'yellow')} ${color(time, 'magenta')}\n${color('┃', 'cyan')} ${color('Comando:', 'yellow')} ${color('Não', 'red')}\n${color('┃', 'cyan')} ${color('Palavras:', 'yellow')} ${color(budy.length, 'magenta')}\n${color('┃', 'cyan')} ${color('Grupo:', 'yellow')} ${color(groupName, 'magenta')}\n${color('╰━━━━━━━━━━━━━━━━━━━━━━━━━╯', 'cyan')}`) 207 | 208 | 209 | var command = comando 210 | switch (comando) { 211 | // COMANDOS COM PREFIXO COMEÇAM A PARTIR DAQUI!!! \\ 212 | 213 | case "comandos": 214 | case "help": 215 | case "start": 216 | case 'menu': { 217 | client.sendMessage(from, { 218 | image: fs.readFileSync('./clover2.jpg'), caption: ` 219 | ╭━━━━━━━━━━━━━━━━━━━━━━━━━╮ 220 | ┃~> MENU ADM 221 | ┃━━━━━━━━━━━━━━━━━━━━━━━━━╯ 222 | ┃ ${prefix}ban 223 | ┃ ${prefix}reviver 224 | ┃ ${prefix}bemvindo 1/0 225 | ┃ ${prefix}marcar 226 | ┃ ${prefix}hidetag 227 | ┃ ${prefix}tagall 228 | ┃ ${prefix}grupo a 229 | ┃ ${prefix}grupo f 230 | ┃ ${prefix}nomegp 231 | ┃ ${prefix}descgp 232 | ┃ ${prefix}fotogp 233 | ┃ ${prefix}resetarlink 234 | ┃ ${prefix}gplink 235 | ┃ ${prefix}promover 236 | ┃ ${prefix}rebaixar 237 | ┃ ${prefix}antilink 1/0 238 | ┃ ${prefix} 239 | ┃ ${prefix} 240 | ╰━━━━━━━━━━━━━━━━━━━━━━━━━╯ 241 | ╭━━━━━━━━━━━━━━━━━━━━━━━━━╮ 242 | ┃~> MENU BRINCADEIRA 243 | ┃━━━━━━━━━━━━━━━━━━━━━━━━━╯ 244 | ┃ ${prefix}feio 245 | ┃ ${prefix}gay 246 | ┃ ${prefix}gostoso 247 | ┃ ${prefix}lindo 248 | ┃ ${prefix}punheteiro 249 | ┃ ${prefix}cassino 250 | ┃ ${prefix}ppt 251 | ╭━━━━━━━━━━━━━━━━━━━━━━━━━╮ 252 | ┃~> MENU ANIME 253 | ┃━━━━━━━━━━━━━━━━━━━━━━━━━╯ 254 | ┃ ${prefix}eps-recentes 255 | ┃━━━━━━━━━━━━━━━━━━━━━━━━ 256 | ┃ ${prefix}cosplay 257 | ┃ ${prefix}waifu 258 | ┃ ${prefix}waifu2 259 | ┃ ${prefix}shota 260 | ┃ ${prefix}loli 261 | ┃ ${prefix}yotsuba 262 | ┃ ${prefix}shinomiya 263 | ┃ ${prefix}yumeko 264 | ┃ ${prefix}tejina 265 | ┃ ${prefix}chiho 266 | ┃ ${prefix}shizuka 267 | ┃ ${prefix}boruto 268 | ┃ ${prefix}kagori 269 | ┃ ${prefix}kaga 270 | ┃ ${prefix}kotori 271 | ┃ ${prefix}mikasa 272 | ┃ ${prefix}akiyama 273 | ┃ ${prefix}hinata 274 | ┃ ${prefix}minato 275 | ┃ ${prefix}naruto 276 | ┃ ${prefix}nezuko 277 | ┃ ${prefix}yuki 278 | ┃ ${prefix}hestia 279 | ┃ ${prefix}emilia 280 | ┃ ${prefix}itachi 281 | ┃ ${prefix}elaina 282 | ┃ ${prefix}madara 283 | ┃ ${prefix}sasuke 284 | ┃ ${prefix}deidara 285 | ┃ ${prefix}sakura 286 | ┃ ${prefix}tsunade 287 | ┃━ HENTAI 288 | ┃ ${prefix}ahegao 289 | ┃ ${prefix}ass 290 | ┃ ${prefix}bdsm 291 | ┃ ${prefix}blowjob 292 | ┃ ${prefix}cuckold 293 | ┃ ${prefix}cum 294 | ┃ ${prefix}ero 295 | ┃ ${prefix}kasedaiki 296 | ┃ ${prefix}femdom 297 | ┃ ${prefix}foot 298 | ┃ ${prefix}gangbang 299 | ┃ ${prefix}glasses 300 | ┃ ${prefix}hentai2 301 | ┃ ${prefix}jahy 302 | ┃ ${prefix}manga 303 | ┃ ${prefix}masturbation 304 | ┃ ${prefix}neko 305 | ┃ ${prefix}orgy 306 | ┃ ${prefix}panties 307 | ┃ ${prefix}pussy 308 | ┃ ${prefix}neko2 309 | ┃ ${prefix}neko 310 | ┃ ${prefix}tentacles 311 | ┃ ${prefix}thighs 312 | ┃ ${prefix}yuri 313 | ┃ ${prefix}zettai 314 | ╰━━━━━━━━━━━━━━━━━━━━━━━━━╯ 315 | os comandos nao estao todos listados aqui entao vc nao pode achar alguns nesse menu... 316 | `}) 317 | } break 318 | 319 | 320 | case 'play-vídeo': 321 | case 'play-video': { 322 | if (!args.join(' ' < 1)) return reply("Coloque o nume do video junto ou o link mas tem que ser do youtube...") 323 | const pedido = args.join(''); 324 | reply("enviando...") 325 | anikit.playMP4(`${q}`, username, key).then((response) => { 326 | //console.log(response); 327 | client.sendMessage(from, { 328 | image: { url: `${response.thumb}` }, caption: ` 329 | Titulo: ${response.title} 330 | Canal: ${response.channel} 331 | Views: ${response.views} 332 | `}); 333 | 334 | client.sendMessage(from, { video: { url: `${response.url}` } }); 335 | }) 336 | } break 337 | 338 | case 'play-áudio': 339 | case 'play-audio': { 340 | if (!args.join(' ' < 1)) return reply("Coloque o nume do video junto ou o link mas tem que ser do youtube...") 341 | const pedido = args.join(''); 342 | reply("enviando...") 343 | anikit.playMP3(`${q}`, username, key).then((response) => { 344 | //console.log(response); 345 | client.sendMessage(from, { 346 | image: { url: `${response.thumb}` }, caption: ` 347 | Titulo: ${response.title} 348 | Canal: ${response.channel} 349 | Views: ${response.views} 350 | `}); 351 | 352 | client.sendMessage(from, { audio: { url: `${response.url}` }, mimetype: 'audio/mpeg' }); 353 | }) 354 | } break 355 | 356 | /* 357 | client.sendMessage(from, { 358 | image: { url: `${response.thumb}` }, caption: ` 359 | Titulo: ${response.title} 360 | Canal: ${response.channel} 361 | Views: ${response.views} 362 | `}); 363 | 364 | client.sendMessage(from, { video: { url:`${response.url}` } }); 365 | */ 366 | 367 | case 'novamensagem': 368 | if (!isOwner) return reply(resposta.dono); 369 | const novaMensagem = `${q}`; 370 | textobv.texto = novaMensagem 371 | fs.writeFileSync('./lib/TextoDoBemvindo.json', JSON.stringify(textobv, null, '\t')) 372 | reply('A mensagem de boas-vindas foi alterada com sucesso.'); 373 | break; 374 | 375 | 376 | 377 | case 'welcome': 378 | case 'bemvindo': 379 | if (!isGroup) return reply(`SÓ EM GRUPO`) 380 | if (!isGroupAdmins) return reply(`PRECISA SER ADMININASTROR`) 381 | if (!isBotGroupAdmins) return reply(`BOT PREPRECISA SER ADMININASTROR`) 382 | if (Number(args[0]) === 1) { 383 | if (isWelkom) return reply('Ja esta ativo') 384 | welkom.push(from) 385 | fs.writeFileSync('./lib/welkom.json', JSON.stringify(welkom)) 386 | reply(' Ativou com sucesso o recurso de bem vindo neste grupo 📝') 387 | } else if (Number(args[0]) === 0) { 388 | if (!isWelkom) return reply('Ja esta Desativado') 389 | pesquisar = from 390 | processo = welkom.indexOf(pesquisar) 391 | while (processo >= 0) { 392 | welkom.splice(processo, 1) 393 | processo = welkom.indexOf(pesquisar) 394 | } 395 | fs.writeFileSync('./lib/welkom.json', JSON.stringify(welkom)) 396 | reply('‼️ Desativou com sucesso o recurso de bemvindo neste grupo✔️') 397 | } else { 398 | reply("1 para ativar, 0 para desativar") 399 | } 400 | break 401 | 402 | 403 | 404 | case 'gerarlink': 405 | case 'imgpralink': 406 | case "telegra.ph": 407 | try { 408 | if (isQuotedImage) { 409 | boij = isQuotedImage || isQuotedVideo ? JSON.parse(JSON.stringify(info).replace("quotedM", "m")).message.extendedTextMessage.contextInfo.message.imageMessage : info 410 | const fetch = require('node-fetch'); 411 | const FormData = require('form-data'); 412 | const fs = require('fs'); 413 | async function uploadImageToTelegraph(imageBuffer) { 414 | const form = new FormData(); 415 | form.append('file', imageBuffer, { filename: 'image.jpg' }); 416 | 417 | const response = await fetch('https://telegra.ph/upload', { 418 | method: 'POST', 419 | body: form, 420 | }); 421 | const data = await response.json(); 422 | if (data && data[0] && data[0].src) { 423 | return 'https://telegra.ph' + data[0].src; 424 | } else { 425 | throw new Error('Failed to retrieve the image URL from the response.'); 426 | } 427 | } 428 | const owgi = await getFileBuffer(boij, "image"); 429 | const imageUrl = await uploadImageToTelegraph(owgi); 430 | reply(imageUrl); 431 | } else { 432 | reply('marque a ft') 433 | } 434 | } catch (e) { 435 | console.log(e) 436 | reply('error...') 437 | } 438 | break 439 | 440 | case 'tagall': 441 | case 'marcar': { 442 | if (!isGroup) return reply(resposta.group) 443 | if (!isGroupAdmins) return reply(resposta.adm) 444 | let metadata = await client.groupMetadata(from) 445 | let teks = ` 446 | \n ${metadata.participants.length ? metadata.participants.length : "undefined"} participantes do grupo 447 | \n ${args.join(" ") ? args.join(" ") : 'kosong'}*\n\n` 448 | for (let mem of participants) { 449 | teks += `┃❖ @${mem.id.split('@')[0]}\n` 450 | } 451 | client.sendMessage(from, { text: teks, mentions: participants.map(a => a.id) }, { quoted: info }) 452 | } 453 | break 454 | 455 | case 'videourl': 456 | case 'videopralink': 457 | try { 458 | if (isQuotedVideo) { 459 | boij = isQuotedVideo ? info.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage 460 | : info.message.videoMessage; 461 | const fetch = require('node-fetch'); 462 | const FormData = require('form-data'); 463 | const fs = require('fs'); 464 | async function uploadVideoToTelegraph(videoBuffer) { 465 | const form = new FormData(); 466 | form.append('file', videoBuffer, { filename: 'media' }); 467 | 468 | const response = await fetch('https://telegra.ph/upload', { 469 | method: 'POST', 470 | body: form, 471 | }); 472 | const data = await response.json(); 473 | if (data && data[0] && data[0].src) { 474 | return 'https://telegra.ph' + data[0].src; 475 | } else { 476 | throw new Error('Failed to retrieve the image URL from the response.'); 477 | } 478 | } 479 | const owgi = await getFileBuffer(boij, "video"); 480 | const imageUrl = await uploadVideoToTelegraph(owgi); 481 | reply(imageUrl); 482 | } else { 483 | reply('marque o video') 484 | } 485 | } catch (e) { 486 | console.log(e) 487 | reply('error...') 488 | } 489 | break 490 | 491 | 492 | 493 | case 'totag': 494 | case 'cita': 495 | case 'hidetag': 496 | if (!isGroup) return reply('Este comando só deve ser utilizado em Grupo.') 497 | if (!isGroupAdmins) return reply('Você precisa ser ADM pra utilizar este comando') 498 | if (q.includes(`${prefix}`)) return reply("Não pode utilizar comandos nesse comando") 499 | if (q.includes("=>") || q.includes(">")) return 500 | membros = (groupId, membros1) => { 501 | array = [] 502 | for (let i = 0; i < membros1.length; i++) { 503 | array.push(membros1[i].id) 504 | } 505 | return array 506 | } 507 | var yd = membros(from, groupMembers) 508 | if ((isMedia && !info.message.videoMessage || isQuotedSticker) && args.length == 0) { 509 | media = isQuotedSticker ? info.message.extendedTextMessage.contextInfo.quotedMessage.stickerMessage : info.message.stickerMessage 510 | rane = getRandom('.' + await getExtension(media.mimetype)) 511 | img = await getFileBuffer(media, 'sticker') 512 | fs.writeFileSync(rane, img) 513 | fig = fs.readFileSync(rane) 514 | var options = { 515 | sticker: fig, 516 | mentions: yd 517 | } 518 | client.sendMessage(from, options) 519 | } else if ((isMedia && !info.message.videoMessage || isQuotedImage) && args.length == 0) { 520 | media = isQuotedImage ? info.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage : info.message.imageMessage 521 | rane = getRandom('.' + await getExtension(media.mimetype)) 522 | img = await getFileBuffer(media, 'image') 523 | fs.writeFileSync(rane, img) 524 | buff = fs.readFileSync(rane) 525 | client.sendMessage(from, { image: buff, mentions: yd }, { quoted: info }) 526 | } else if ((isMedia && !info.message.videoMessage || isQuotedVideo) && args.length == 0) { 527 | media = isQuotedVideo ? info.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage : info.message.videoMessage 528 | rane = getRandom('.' + await getExtension(media.mimetype)) 529 | vid = await getFileBuffer(media, 'video') 530 | fs.writeFileSync(rane, vid) 531 | buff = fs.readFileSync(rane) 532 | client.sendMessage(from, { video: buff, mimetype: 'video/mp4', mentions: yd }, { quoted: info }) 533 | } else if ((isMedia && !info.message.videoMessage || isQuotedAudio) && args.length == 0) { 534 | media = isQuotedAudio ? info.message.extendedTextMessage.contextInfo.quotedMessage.audioMessage : info.message.audioMessage 535 | rane = getRandom('.' + await getExtension(media.mimetype)) 536 | aud = await getFileBuffer(media, 'audio') 537 | fs.writeFileSync(rane, aud) 538 | buff = fs.readFileSync(rane) 539 | client.sendMessage(from, { audio: buff, mimetype: 'audio/mp4', ptt: true, mentions: yd }, { quoted: info }) 540 | } else if ((isMedia && !info.message.videoMessage || isQuotedDocument) && args.length == 0) { 541 | media = isQuotedDocument ? info.message.extendedTextMessage.contextInfo.quotedMessage.documentMessage : info.message.documentMessage 542 | rane = getRandom('.' + await getExtension(media.mimetype)) 543 | doc = await getFileBuffer(media, 'document') 544 | fs.writeFileSync(rane, doc) 545 | buff = fs.readFileSync(rane) 546 | client.sendMessage(from, { document: buff, mimetype: 'text/plain', mentions: yd }, { quoted: info }) 547 | } else if (budy) { 548 | if (q.length < 1) return reply('Citar oq?') 549 | client.sendMessage(from, { text: body.slice(command.length + 2), mentions: yd }) 550 | } else { 551 | reply(`Responder imagem/documento/gif/adesivo/áudio/vídeo com legenda ${prefix + command}`) 552 | } 553 | break 554 | 555 | 556 | 557 | case 'reviver': 558 | case 'add': 559 | if (!isGroup) return reply('🌸COMANDO SO PARA GRUPO🌸') 560 | if (!isOwner) return reply(resposta.dono) 561 | if (!isGroupAdmins) return reply('😂COMANDO SO PARA ADM😂') 562 | if (!isBotGroupAdmins) return reply("🌸BOT PRECISA SER ADM🌸") 563 | if (info.message.extendedTextMessage === undefined || info.message.extendedTextMessage === null) return reply('🌸MARQUE A MENSAGEM DO USUÁRIO PRA MIM ADICIONA🌸') 564 | response2 = await client.groupParticipantsUpdate(from, [menc_prt], "add") 565 | reply('🌸USUÁRIO ADICIONADO COM SUCESSO 🌸') 566 | break 567 | 568 | case 'sairgp': 569 | if (isGroup && !isOwner && !info.key.fromMe) return reply("🌸COMANDO SO PARA DONO🌸") 570 | try { 571 | client.groupLeave(from) 572 | } catch (erro) { 573 | reply(String(erro)) 574 | } 575 | break 576 | 577 | 578 | 579 | case 'abrirgp': 580 | case 'fechagp': 581 | case 'grupo': 582 | if (!isGroup) return reply(`SÓ EM GRUPO`) 583 | if (!isGroupAdmins) return reply(`PRECISA SER ADMININASTROR`) 584 | if (!isBotGroupAdmins) return reply(`BOT PREPRECISA SER ADMININASTROR`) 585 | if (args[0] === 'a') { 586 | reply(`*GRUPO ABERTO COM SUCESSO*`) 587 | await client.groupSettingUpdate(from, 'not_announcement') 588 | } else if (args[0] === 'f') { 589 | reply(`*GRUPO FECHADO COM SUCESSO*`) 590 | await client.groupSettingUpdate(from, 'announcement') 591 | } 592 | break 593 | 594 | 595 | 596 | case 'novolink': 597 | case 'redefinir': 598 | if (!isGroupAdmins) return reply(resposta.adm) 599 | if (!isGroup) return reply(resposta.grupo) 600 | if (!isBotGroupAdmins) return reply(resposta.botadm) 601 | try { 602 | await client.groupRevokeInvite(from) 603 | reply('🌸LINK DO GRUPO REDEFINIDO🌸') 604 | } catch (e) { 605 | console.log(e) 606 | reply(`ERRO`) 607 | } 608 | break 609 | 610 | 611 | 612 | case 'setfotogp': 613 | case 'fotogp': 614 | addFilter(from) 615 | if (!isGroup) return reply('🌸ESTE COMANDO SO PODE SER UTILIZANDO EM GRUPO🌸') 616 | if (!isGroupAdmins) return reply('🌸COMANDO SO PARA ADM🌸') 617 | if (!isBotGroupAdmins) return reply('🌸O BOT PRECISA SER ADM🌸') 618 | if (!isQuotedImage) return reply(`Use: ${prefix + command} Marque uma foto`) 619 | ftgp = isQuotedImage ? info.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage : info.message.imageMessage 620 | rane = getRandom('.' + await getExtension(ftgp.mimetype)) 621 | buffimg = await getFileBuffer(ftgp, 'image') 622 | fs.writeFileSync(rane, buffimg) 623 | medipp = rane 624 | await client.updateProfilePicture(from, { url: medipp }) 625 | reply(`🌸FOTO DO GRUPO ALTERADA COM SUCESSO🌸`) 626 | break 627 | 628 | 629 | 630 | case 'nomegp': 631 | { 632 | if (!isGroup) return reply(resposta.grupo) 633 | if (!isGroupAdmins) return reply(resposta.adm) 634 | if (!isBotGroupAdmins) return reply(resposta.botadm) 635 | blat = args.join(" ") 636 | client.groupUpdateSubject(from, `${blat}`) 637 | client.sendMessage(from, { text: '🌸NOME DO GRUPO ALTERADO COM SUCESSO 🌸' }, { quoted: info }).catch((err) => { 638 | reply(`erro`); 639 | }) 640 | } 641 | break 642 | 643 | 644 | 645 | case 'descgp': 646 | case 'descriçãogp': 647 | if (!isGroup) return reply(resposta.grupo) 648 | if (!isGroupAdmins) return reply(resposta.adm) 649 | if (!isBotGroupAdmins) return reply(resposta.botadm) 650 | blabla = args.join(" ") 651 | client.groupUpdateDescription(from, `${blabla}`) 652 | client.sendMessage(from, { text: 'Sucesso, alterou a descrição do grupo' }, { quoted: info }) 653 | break 654 | 655 | 656 | case 'setfotogp': 657 | case 'fotogp': 658 | addFilter(from) 659 | if (!isGroup) return reply('Só pode ser utilizado em Grupo') 660 | if (!isGroupAdmins) return reply('Você precisa ser ADM') 661 | if (!isBotGroupAdmins) return reply('O bot Precisa ser ADM') 662 | if (!isQuotedImage) return reply(`Use: ${prefix + command} `) 663 | ftgp = isQuotedImage ? info.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage : info.message.imageMessage 664 | rane = getRandom('.' + await getExtension(ftgp.mimetype)) 665 | buffimg = await getFileBuffer(ftgp, 'image') 666 | fs.writeFileSync(rane, buffimg) 667 | medipp = rane 668 | await client.updateProfilePicture(from, { url: medipp }) 669 | reply(`Foto do grupo alterada com sucesso`) 670 | break 671 | 672 | 673 | case 'fotobot': 674 | if (!isOwner) return reply(resposta.dono) 675 | if (!isQuotedImage) return reply(`Envie fotos com legendas ${prefix}fotobot ou tags de imagem que já foram enviadas`) 676 | buff = await getFileBuffer(info.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage, 'image') 677 | await client.updateProfilePicture(botNumber, buff) 678 | reply('Obrigado pelo novo perfil vlw') 679 | break 680 | 681 | 682 | case 's': 683 | case 'stickergif': 684 | case 'sgif': 685 | case 'f': 686 | case 'figu': 687 | case 'st': 688 | case 'stk': 689 | { 690 | (async function () { 691 | var legenda = q ? q?.split("/")[0] : ` ` 692 | var autor = q ? q?.split("/")[1] : q?.split("/")[0] ? '' : ` ` 693 | if (isMedia && !info.message.videoMessage || isQuotedImage) { 694 | var encmedia = isQuotedImage ? info.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage : info.message.imageMessage 695 | rane = getRandom('.' + await getExtension(encmedia.mimetype)) 696 | buffimg = await getFileBuffer(encmedia, 'image') 697 | fs.writeFileSync(rane, buffimg) 698 | rano = getRandom('.webp') 699 | exec(`ffmpeg -i ${rane} -vcodec libwebp -filter:v fps=fps=15 -lossless 1 -loop 0 -preset default -an -vsync 0 -s 800:800 ${rano}`, (err) => { 700 | fs.unlinkSync(rane) 701 | // "android-app-store-link": "https://play.google.com/store/search?q=%2B55%2094%209147-2796%20%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5&c=apps", 702 | var json = { 703 | "sticker-pack-name": nomeDono, 704 | "sticker-pack-publisher": nomeBot 705 | } 706 | var exifAttr = Buffer.from([0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x41, 0x57, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00]) 707 | var jsonBuff = Buffer.from(JSON.stringify(json), "utf-8") 708 | var exif = Buffer.concat([exifAttr, jsonBuff]) 709 | exif.writeUIntLE(jsonBuff.length, 14, 4) 710 | let nomemeta = Math.floor(Math.random() * (99999 - 11111 + 1) + 11111) + ".temp.exif" 711 | fs.writeFileSync(`./${nomemeta}`, exif) 712 | exec(`webpmux -set exif ${nomemeta} ${rano} -o ${rano}`, () => { 713 | client.sendMessage(from, { sticker: fs.readFileSync(rano) }, { quoted: info }) 714 | fs.unlinkSync(nomemeta) 715 | fs.unlinkSync(rano) 716 | }) 717 | }) 718 | } else if (isMedia && info.message.videoMessage.seconds < 11 || isQuotedVideo && info.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage.seconds < 35) { 719 | var encmedia = isQuotedVideo ? info.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage : info.message.videoMessage 720 | rane = getRandom('.' + await getExtension(encmedia.mimetype)) 721 | buffimg = await getFileBuffer(encmedia, 'video') 722 | fs.writeFileSync(rane, buffimg) 723 | rano = getRandom('.webp') 724 | await ffmpeg(`./${rane}`) 725 | .inputFormat(rane.split('.')[1]) 726 | exec(`ffmpeg -i ${rane} -vcodec libwebp -filter:v fps=fps=15 -lossless 1 -loop 0 -preset default -an -vsync 0 -s 200:200 ${rano}`, (err) => { 727 | fs.unlinkSync(rane) 728 | let json = { 729 | "sticker-pack-name": legenda, 730 | "sticker-pack-publisher": autor 731 | } 732 | let exifAttr = Buffer.from([0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x41, 0x57, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00]) 733 | let jsonBuff = Buffer.from(JSON.stringify(json), "utf-8") 734 | let exif = Buffer.concat([exifAttr, jsonBuff]) 735 | exif.writeUIntLE(jsonBuff.length, 14, 4) 736 | let nomemeta = "temp.exif" 737 | fs.writeFileSync(`./${nomemeta}`, exif) 738 | exec(`webpmux -set exif ${nomemeta} ${rano} -o ${rano}`, () => { 739 | client.sendMessage(from, { sticker: fs.readFileSync(rano) }, { quoted: info }) 740 | fs.unlinkSync(nomemeta) 741 | fs.unlinkSync(rano) 742 | }) 743 | }) 744 | } else { 745 | reply(`Você precisa enviar ou marcar uma imagem ou vídeo com no máximo 10 segundos`) 746 | } 747 | })().catch(e => { 748 | console.log(e) 749 | reply("Hmm deu erro") 750 | try { 751 | if (fs.existsSync("temp.exif")) fs.unlinkSync("temp.exif"); 752 | if (fs.existsSync(rano)) fs.unlinkSync(rano); 753 | if (fs.existsSync(media)) fs.unlinkSync(media); 754 | } catch { } 755 | }) 756 | } 757 | break 758 | 759 | 760 | case 'rename': 761 | case 'roubar': 762 | if (!isQuotedSticker) return reply('Marque uma figurinha...') 763 | encmediats = await getFileBuffer(info.message.extendedTextMessage.contextInfo.quotedMessage.stickerMessage, 'sticker') 764 | var kls = q 765 | var pack = kls.split("/")[0]; 766 | var author2 = kls.split("/")[1]; 767 | if (!q) return reply('*E o autor e o nome do pacote?*') 768 | if (!pack) return reply(`*por favor escreve o formato certo: ${prefix + command} sad/bla*`) 769 | if (!author2) return reply(`*por favor escreve o formato certo: ${prefix + command} sad/dms*`) 770 | bas64 = `data:image/jpeg;base64,${encmediats.toString('base64')}` 771 | var mantap = await convertSticker(bas64, `${author2}`, `${pack}`) 772 | var sti = new Buffer.from(mantap, 'base64'); 773 | client.sendMessage(from, { sticker: sti, contextInfo: { externalAdReply: { title: `${pack}|${author2}`, body: "", previewType: "PHOTO", thumbnail: sti } } }, { quoted: info }) 774 | .catch((err) => { 775 | reply(`❎ Error, tenta mais tarde`); 776 | }) 777 | break 778 | 779 | case 'bc': case 'bcgroup': case 'transmitir': case 'transmissão': { 780 | if (!isOwner) return reply(resposta.dono) 781 | if (!q) return reply(`Texto onde?\n\nExemplo : ${prefix + command} BOM DIA `) 782 | let getGroups = await client.groupFetchAllParticipating() 783 | let groups = Object.entries(getGroups).slice(0).map(entry => entry[1]) 784 | let anu = groups.map(v => v.id) 785 | for (let i of anu) { 786 | await delay(150) 787 | let txt = `「 TRANSMISSÃO DO BOT 」\n\n ${q}` 788 | client.sendMessage(i, { text: txt }) 789 | } 790 | reply(`Enviando com sucesso `) 791 | } 792 | break 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | case 'cassino': 801 | // CincoFolhas 802 | //CASSINO 803 | const soto = [ 804 | '🍊 : 🍒 : 🍐', 805 | '🍒 : 🔔 : 🍊', 806 | '🍇 : 🍇 : 🍇', 807 | '🍊 : 🍋 : 🔔', 808 | '🔔 : 🍒 : 🍐', 809 | '🔔 : 🍒 : 🍊', 810 | '🍊 : 🍋 : ??', 811 | '🍐 : 🍒 : 🍋', 812 | '🍐 : 🍐 : 🍐', 813 | '🍊 : 🍒 : 🍒', 814 | '🔔 : 🔔 : 🍇', 815 | '🍌 : 🍒 : 🔔', 816 | '🍐 : 🔔 : 🔔', 817 | '🍊 : 🍋 : 🍒', 818 | '🍋 : 🍋 : 🍌', 819 | '🔔 : 🔔 : 🍇', 820 | '🔔 : 🍐 : 🍇', 821 | '🔔 : 🔔 : 🔔', 822 | '🍒 : 🍒 : 🍒', 823 | '🍌 : 🍌 : 🍌' 824 | ] 825 | monty = Math.floor(Math.random() * 415) + 80 826 | const mining = Math.ceil(Math.random() * 200) + 1 827 | const somtoy2 = sotoy[Math.floor(Math.random() * sotoy.length)] 828 | if ((somtoy2 == '🥑 : 🥑 : 🥑') || (somtoy2 == '🍉 : 🍉 : 🍉') || (somtoy2 == '🍓 : 🍓 : 🍓') || (somtoy2 == '🍎 : 🍎 : 🍎') || (somtoy2 == '🍍 : 🍍 : 🍍') || (somtoy2 == '🥝 : 🥝 : 🥝') || (somtoy2 == '🍑 : 🍑 : 🍑') || (somtoy2 == '🥥 : 🥥 : 🥥') || (somtoy2 == '🍋 : 🍋 : 🍋') || (somtoy2 == '🍐 : ?? : 🍐') || (somtoy2 == '🍌 : 🍌 : 🍌') || (somtoy2 == '🍒 : 🍒 : 🍒') || (somtoy2 == '🔔 : 🔔 : 🔔') || (somtoy2 == '🍊 : 🍊 : 🍊') || (somtoy2 == '🍇 : 🍇 : 🍇')) { 829 | var Vitória = `Você ganhou Botcoin: ${monty} 🔮` 830 | addKoinUser(sender, monty) 831 | } else { 832 | var Vitória = `Você perdeu...` 833 | } 834 | 835 | const cassino = ` 836 | ©clover 837 | ╔═════💦︎═════╗ 838 | ┣► ${somtoy2}◄┛ 839 | ╚═════💦︎═════╝ 840 | 841 | *${Vitória}*` 842 | enviar(cassino) 843 | if (Vitória == "Você ganhou!!!") { 844 | 845 | } 846 | //await client(sender) 847 | break 848 | 849 | case "ping": 850 | // CincoFolhas 851 | enviar(`💦 Velocidade de resposta ${latensi.toFixed(4)} segundos `) 852 | break 853 | 854 | case "ppt": 855 | // CincoFolhas 856 | if (!isGroup) return enviar(resposta.grupo) 857 | if (args.length < 1) return enviar('exemplo: /ppt pedra') 858 | ppt = ["pedra", "papel", "tesoura"] 859 | ppy = ppt[Math.floor(Math.random() * ppt.length)] 860 | ppg = Math.floor(Math.random() * 50) 861 | pptb = ppy 862 | pph = `Você ganhou ${ppg} em money` 863 | if ((pptb == "pedra" && args == "papel") || 864 | (pptb == "papel" && args == "tesoura") || 865 | (pptb == "tesoura" && args == "pedra")) { 866 | var vit = "vitoria" 867 | } else if ((pptb == "pedra" && args == "tesoura") || 868 | (pptb == "papel" && args == "pedra") || 869 | (pptb == "tesoura" && args == "papel")) { 870 | var vit = "derrota" 871 | } else if ((pptb == "pedra" && args == "pedra") || 872 | (pptb == "papel" && args == "papel") || 873 | (pptb == "tesoura" && args == "tesoura")) { 874 | var vit = "empate" 875 | } else if (vit = "undefined") { 876 | return enviar(linguagem.tterro()) 877 | } 878 | if (vit == "vitoria") { 879 | var tes = `Você ganhou ${ppg} em money` 880 | } 881 | if (vit == "derrota") { 882 | var tes = "A vitória é do bot" 883 | } 884 | if (vit == "empate") { 885 | var tes = "O jogo terminou em empate" 886 | } 887 | enviar(`Bot jogou: ${pptb}\nO jogador jogou: ${args}\n\n${tes}`) 888 | if (tes == "Vitória do jogador") { 889 | //enviar(pph) 890 | } 891 | break 892 | 893 | case 'gay':// Sem Fotos 894 | // CincoFolhas 895 | const aleta = `${Math.floor(Math.random() * 105)}` 896 | enviar('Aguarde, confiscando sua porcentagem...') 897 | await delay(5000) 898 | enviar(`${pushname} Sua Porcentagem De Gay é De : ${aleta}%`) 899 | break 900 | case 'feio': // Sem Fotos 901 | // CincoFolhas 902 | const aletb = `${Math.floor(Math.random() * 105)}` 903 | enviar('Aguarde, confiscando sua porcentagem...') 904 | await delay(5000) 905 | enviar(`${pushname} Sua Porcentagem De Feio é De : ${aletb}%`) 906 | break 907 | break 908 | case 'lindo': 909 | // CincoFolhas 910 | const aletc = `${Math.floor(Math.random() * 105)}` 911 | enviar('Aguarde, confiscando sua porcentagem...') 912 | await delay(5000) 913 | enviar(`${pushname} Sua Porcentagem De Lindo(a) é De : ${aletc}%`) 914 | break 915 | case 'gostoso': 916 | // CincoFolhas 917 | const aletd = `${Math.floor(Math.random() * 105)}` 918 | enviar('Aguarde, confiscando sua porcentagem...') 919 | await delay(5000) 920 | enviar(`${pushname} Sua Porcentagem De Gostoso(a) é De : ${aletd}%`) 921 | break 922 | 923 | case 'gado': 924 | // CincoFolhas 925 | const alete = `${Math.floor(Math.random() * 105)}` 926 | enviar('Aguarde, confiscando sua porcentagem...') 927 | await delay(5000) 928 | enviar(`${pushname} Sua Porcentagem De Gado(a) é De : ${alete}%`) 929 | break 930 | case 'punheteiro': 931 | // CincoFolhas 932 | const aletl = `${Math.floor(Math.random() * 105)}` 933 | enviar('Aguarde, confiscando sua porcentagem...') 934 | await delay(5000) 935 | enviar(`${pushname} Sua Porcentagem De punheteiro(a) é De : ${aletl}%`) 936 | break 937 | 938 | case "gplink": 939 | if (!isGroup) return enviar(resposta.grupo) 940 | if (!isGroupAdmins) return enviar(resposta.adm) 941 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 942 | const link = await client.groupInviteCode(from) 943 | enviar(`💦 Link do grupo : https://chat.whatsapp.com/${link} `) 944 | break 945 | 946 | case "resetarlink": 947 | if (!isGroup) return enviar(resposta.grupo) 948 | if (!isGroupAdmins) return enviar(resposta.adm) 949 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 950 | try { 951 | await client.groupRevokeInvite(from) 952 | enviar("💦 Link de convite resetado com sucesso ✓ ") 953 | } catch (e) { 954 | console.log(e) 955 | enviar(resposta.erro) 956 | } 957 | break 958 | case "rebaixar": 959 | // CincoFolhas 960 | if (!isGroup) return enviar(resposta.grupo) 961 | if (!isGroupAdmins) return enviar(resposta.adm) 962 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 963 | if (q < 1) return enviar("💦 Digite o número, animal ") 964 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 965 | try { 966 | client.groupParticipantsUpdate(from, [`${q}@s.whatsapp.net`], "demote") 967 | enviar(`💦 ${q} Foi rebaixado a membro comum com sucesso `) 968 | } catch (e) { 969 | console.log(e) 970 | enviar(resposta.erro) 971 | } 972 | break 973 | 974 | case "promover": 975 | // CincoFolhas 976 | if (!isGroup) return enviar(resposta.grupo) 977 | if (!isGroupAdmins) return enviar(resposta.adm) 978 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 979 | if (q < 1) return enviar("💦 Cade o número, mongolóide ") 980 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 981 | try { 982 | client.groupParticipantsUpdate(from, [`${q}@s.whatsapp.net`], "promote") 983 | enviar(`💦 ${q} Foi promovido a adm com sucesso `) 984 | kak = fs.readFileSync("./audios/promover.mp3") 985 | client.sendMessage(from, { audio: kak, mimetype: "audio/mp4", ptt: true }, { quoted: info }) 986 | } catch (e) { 987 | console.log(e) 988 | enviar(resposta.erro) 989 | } 990 | break 991 | l 992 | case "ban": 993 | // CincoFolhas 994 | if (!isGroup) return enviar(resposta.grupo) 995 | if (!isGroupAdmins) return enviar(resposta.adm) 996 | if (q < 1) return enviar("💦 Cade o número, mongolóide ") 997 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 998 | if (info.message.extendedTextMessage != undefined || info.message.extendedTextMessage != null) { 999 | kicka = info.message.extendedTextMessage.contextInfo.participant 1000 | cod = fs.readFileSync("./arquivos/audios/ban.mp3") 1001 | client.sendMessage(from, { audio: cod, mimetype: "audio/mp4", ptt: true }, { quoted: info }) 1002 | client.groupParticipantsUpdate(from, [`${q}@s.whatsapp.net`], "remove") 1003 | } else { 1004 | enviar("࿐ Marque a mensagem da pessoa") 1005 | } 1006 | break 1007 | 1008 | case "grupo": 1009 | // CincoFolhas 1010 | if (!isGroup) return enviar(resposta.grupo) 1011 | if (!isGroupAdmins) return enviar(resposta.adm) 1012 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 1013 | try { 1014 | if (q == "a") { 1015 | await client.groupSettingUpdate(from, "not_announcement") 1016 | enviar("Grupo aberto com sucesso") 1017 | } 1018 | if (q == "f") { 1019 | await client.groupSettingUpdate(from, "announcement") 1020 | enviar("Grupo fechado com sucesso ") 1021 | } 1022 | } catch (e) { 1023 | console.log(e) 1024 | enviar(resposta.erro) 1025 | } 1026 | break 1027 | 1028 | case "infogp": 1029 | // CincoFolhas 1030 | if (!isGroup) return enviar(resposta.grupo) 1031 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 1032 | enviar(` 1033 | Nome : ${groupName} 1034 | Descrição : ${groupDesc} 1035 | Id : ${from} 1036 | Data : ${data} 1037 | Horário : ${hora} 1038 | `) 1039 | break 1040 | 1041 | case 'listadm': 1042 | if (!isGroup) return enviar(resposta.grupo) 1043 | teks = `List admin of group *${groupMetadata.subject}*\nTotal : ${groupAdmins.length}\n\n` 1044 | no = 0 1045 | for (let admon of groupAdmins) { 1046 | no += 1 1047 | teks += `[${no.toString()}] @${admon.split('@')[0]}\n` 1048 | } 1049 | mentions(teks, groupAdmins, true) 1050 | break 1051 | 1052 | case 'antilink': 1053 | if (!isGroupAdmins) return enviar(resposta.adm) 1054 | if (!isBotGroupAdmins) return enviar(resposta.botadm) 1055 | if (args.length < 1) return enviar('digite 1 para ativar ou 0 para desativar ') 1056 | if (Number(args[0]) === 1) { 1057 | if (isAntilink) return enviar('o anti-link está ativo') 1058 | antilink.push(from) 1059 | fs.writeFileSync('./lib/antilink.json', JSON.stringify(antilink)) 1060 | enviar('O anti-link foi ativo no grupo ✔️') 1061 | } else if (Number(args[0]) === 0) { 1062 | antilink.splice(from, 1) 1063 | fs.writeFileSync('./lib/antilink.json', JSON.stringify(antilink)) 1064 | enviar('O anti-link foi desativado com sucesso neste grupo✔️') 1065 | } else { 1066 | enviar('1 para ativar, 0 para desativar ') 1067 | } 1068 | break 1069 | 1070 | 1071 | case 'report': 1072 | case 'bug': 1073 | if (!q) return enviar('Ex: bug no menu..') 1074 | enviar(`Obrigada pela colaboração, o bug foi reportado ao meu criador... 1075 | <♨️>bugs falsos nao serão respondidos`) 1076 | let templateMesssage = { 1077 | image: { 1078 | url: './clover2.jpg', 1079 | quoted: info 1080 | }, 1081 | caption: `♨️𝗨𝗺 𝗕𝘂𝗴♨️\nDo Número: @${sender.split('@')[0]},\nReportou:\n${q}`, 1082 | footer: 'clover_md' 1083 | } 1084 | client.sendMessage(`${numeroDono}@s.whatsapp.net`, templateMesssage) 1085 | break 1086 | 1087 | case 'novocmd': 1088 | if (!q) return enviar('Ex: novocmd coloca antilink') 1089 | enviar(`Obrigada pela colaboração, a sua idea foi reportada ao meu criador 😊`) 1090 | const qp = args.join(" ") 1091 | let templateMessage = { 1092 | image: { 1093 | url: './clover2.jpg', 1094 | quoted: info 1095 | }, 1096 | caption: `♨️IDEIA DE CMD♨️\nDo Número: @${sender.split('@')[0]},\nA Ideia É:\n ${q}`, 1097 | footer: 'clover_md' 1098 | } 1099 | client.sendMessage(`${numeroDono}@s.whatsapp.net`, templateMessage) 1100 | break 1101 | 1102 | 1103 | case "cosplay": 1104 | case "waifu": 1105 | case "waifu2": 1106 | case "shota": 1107 | case "loli": 1108 | case "yotsuba": 1109 | case "shinomiya": 1110 | case "yumeko": 1111 | case "tejina": 1112 | case "chiho": 1113 | case "shizuka": 1114 | case "boruto": 1115 | case "kagori": 1116 | case "kaga": 1117 | case "kotori": 1118 | case "mikasa": 1119 | case "akiyama": 1120 | case "hinata": 1121 | case "minato": 1122 | case "naruto": 1123 | case "nezuko": 1124 | case "yuki": 1125 | case "hestia": 1126 | case "emilia": 1127 | case "itachi": 1128 | case "elaina": 1129 | case "madara": 1130 | case "sasuke": 1131 | case "deidara": 1132 | case "sakura": 1133 | case "tsunade": 1134 | try { 1135 | client.sendMessage(from, { react: { text: '🕚', key: info.key } }) 1136 | anikit.getAnimeInfo(`${command}`, username, key).then((response) => { 1137 | let buttonMessage4 = { 1138 | image: { url: `${response.url}` }, 1139 | caption: `🏕 Olá ${pushname}, aqui está sua imagem 🎲`, 1140 | footer: '', 1141 | //buttons: buttons, 1142 | headerType: 4 1143 | } 1144 | client.sendMessage(from, buttonMessage4, { quoted: info }) 1145 | }) 1146 | } catch (e) { 1147 | console.log(e) 1148 | reply("nao achei a foto, tente novamente mais tarde") 1149 | } 1150 | break 1151 | 1152 | case 'ahegao': 1153 | case 'ass': 1154 | case 'bdsm': 1155 | case 'blowjob': 1156 | case 'cuckold': 1157 | case 'cum': 1158 | case 'ero': 1159 | case 'kasedaiki': 1160 | case 'femdom': 1161 | case 'foot': 1162 | case 'gangbang': 1163 | case 'glasses': 1164 | case 'hentai2': 1165 | case 'jahy': 1166 | case 'manga': 1167 | case 'masturbation': 1168 | case 'neko': 1169 | case 'orgy': 1170 | case 'panties': 1171 | case 'pussy': 1172 | case 'neko2': 1173 | case "neko": 1174 | case 'tentacles': 1175 | case 'thighs': 1176 | case 'yuri': 1177 | case 'zettai': 1178 | try { 1179 | client.sendMessage(from, { react: { text: '🕚', key: info.key } }) 1180 | anikit.getNSFWInfo(`${command}`, username, key).then((response) => { 1181 | let buttonMessage4 = { 1182 | image: { url: `${response.url}` }, 1183 | caption: `🏕 Olá ${pushname}, aqui está sua imagem 🎲`, 1184 | footer: '', 1185 | //buttons: buttons, 1186 | headerType: 4 1187 | } 1188 | client.sendMessage(sender, buttonMessage4, { quoted: info }) 1189 | }) 1190 | } catch (e) { 1191 | console.log(e) 1192 | reply("nao achei a foto, tente novamente mais tarde") 1193 | } 1194 | break 1195 | 1196 | case "eps-recentes": { 1197 | anikit.getRecentEpisodes(username, key).then((response) => { 1198 | let resultInstance = ""; // Inicialize resultInstance como uma string vazia 1199 | 1200 | for (let i = 0; i < response.length; i++) { 1201 | // Concatene os resultados de cada episódio a resultInstance 1202 | resultInstance += `------------------------------------- 1203 | Anime: ${response[i].title} 1204 | Ep: ${response[i].episodeNum} 1205 | `; 1206 | } 1207 | 1208 | reply("ANIMES LANÇAMENTOS\n\n" + resultInstance + "\n\n-------------------------------------"); 1209 | }); 1210 | } break; 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | default: 1218 | if (isCmd && command) { 1219 | const buttonMessage = { 1220 | text: `comando nem existe kkkkkkk...`, 1221 | // footer: '𝙻𝚎𝚒𝚊 𝚘 𝚖𝚎𝚗𝚞 𝚌𝚘𝚖 𝚊𝚝𝚎𝚗𝚌̧𝚊̃𝚘!', 1222 | headerType: 1 1223 | } 1224 | client.sendMessage(from, buttonMessage) 1225 | } 1226 | 1227 | } 1228 | // Fim do switch \\ 1229 | 1230 | 1231 | } catch (erro) { 1232 | console.log(erro) 1233 | } 1234 | } 1235 | 1236 | let file = require.resolve(__filename); 1237 | fs.watchFile(file, () => { 1238 | fs.unwatchFile(file); 1239 | console.log(`Update file: ${__filename}`); 1240 | delete require.cache[file]; 1241 | require(file); 1242 | }); --------------------------------------------------------------------------------