├── Dockerfile ├── README.md ├── config.js ├── elaina.js ├── handler.js ├── index.js ├── koyeb.yaml ├── lib ├── Gifbuffer.js ├── converter.js ├── file ├── levelling.js ├── print.js ├── simple.js ├── sticker.js ├── store.js ├── uploadFile.js ├── uploadImage.js ├── webp.js └── webp2mp4.js ├── package.json ├── plugins ├── Tranks Daniel ├── _acertijo.json ├── _antiArab.js ├── _antiBot.js ├── _antilink.js ├── _clearCore.js ├── _cmdWithMedia.js ├── _expired.js ├── _fakeAi.js ├── _fakeAi.js.bak ├── _fakeReply.js ├── _fakeReply.js.bak ├── _fototeta.js ├── _premium.js ├── _templateResponse.js ├── _welcome.js ├── _youtube-audio.js ├── _youtube-video.js ├── afk-_afk.js ├── afk-afk.js ├── audio-efectos.js ├── cmd-del.js ├── cmd-list.js ├── cmd-set.js ├── downloader-aptoide.js ├── downloader-danbooru.js ├── downloader-fb.js ├── downloader-gitclone.js ├── downloader-ig.js ├── downloader-likee.js ├── downloader-mediafire.js ├── downloader-pinterest.js ├── downloader-soundcloud.js ├── downloader-spotify.js ├── downloader-spotifydl.js ├── downloader-tiktok.js ├── downloader-tiktok_img.js ├── downloader-tiktokuser.js ├── downloader-tiktokvid.js ├── enable.js ├── fun-calculador.js ├── fun-dance.js ├── fun-follar.js ├── fun-formarpareja.js ├── fun-gay.js ├── fun-iqtest.js ├── fun-love.js ├── fun-nameninja.js ├── fun-personalidad.js ├── fun-piropos.js ├── fun-piropos.js.bak ├── fun-pregunta.js ├── fun-reacciones.js ├── fun-reto.js ├── fun-simi.js ├── fun-simi.js.bak ├── fun-top.js ├── game-acertijo.js ├── game-acertijo_resp.js ├── game-casino.js ├── game-casino.js.bak ├── game-math.js ├── game-math_answer.js ├── game-ruleta.js ├── game-ruleta.js.bak ├── group-antiBot.js ├── group-banchat.js ├── group-checkexpired.js ├── group-delete.js ├── group-demote.js ├── group-groupInfo.js ├── group-invite.js ├── group-kick.js ├── group-link.js ├── group-poll.js ├── group-poll.js.bak ├── group-promote.js ├── group-resetLink.js ├── group-setpp.js ├── group-settings.js ├── group-sorteo.js ├── group-totag.js ├── group-unbanchat.js ├── img-image.js ├── img-megumin.js ├── img-neko.js ├── img-neko2.js ├── img-pinterest.js ├── img-pinterest.js.bak ├── img-pixivdl.js ├── img-ppcouple.js ├── img-shinobu.js ├── img-waifu.js ├── img-wallpaper.js ├── img-wallpaper.js.bak ├── info-ds.js ├── main-Infototal.js ├── main-creator.js ├── main-creator.js.bak ├── main-grupos.js ├── main-grupos.js.bak ├── main-infobot.js ├── main-menu.js ├── main-menu.js.bak ├── main-ping.js ├── main-runtime.js ├── main-script.js ├── nsfw-hentai.js ├── nsfw-nsfw.js ├── nsfw-rule34.js ├── nsfw-xnxxdl.js ├── nsfw-xvideosdl.js ├── owner-addexpired.js ├── owner-addprem.js ├── owner-autoadmin.js ├── owner-banlist.js ├── owner-banuser.js ├── owner-clearsession.js ├── owner-deletefile.js ├── owner-delexpired.js ├── owner-delprem.js ├── owner-exec.js ├── owner-exec.js.bak ├── owner-exec2.js ├── owner-fetch.js ├── owner-getdb.js ├── owner-getsesion.js ├── owner-join.js ├── owner-noetiqueta.js ├── owner-otag.js ├── owner-resetUser.js ├── owner-restart.js ├── owner-salir.js ├── owner-savefile.js ├── owner-setppbot.js ├── owner-unbanuser.js ├── owner-update.js ├── rg-myns.js ├── rg-perfil.js ├── rg-reg.js ├── rg-reg.js.bak ├── rg-unreg.js ├── rpg-bank.js ├── rpg-bank.js.bak ├── rpg-crimen.js ├── rpg-crimen.js.bak ├── rpg-daily.js ├── rpg-daily.js.bak ├── rpg-darcoins.js ├── rpg-darcoins.js.bak ├── rpg-darxp.js ├── rpg-deposit.js ├── rpg-deposit.js.bak ├── rpg-eris.js ├── rpg-eris.js.bak ├── rpg-lb.js ├── rpg-lb.js.bak ├── rpg-levelup.js ├── rpg-levelup.js.bak ├── rpg-minar.js ├── rpg-retirar.js ├── rpg-retirar.js.bak ├── rpg-shop.js ├── rpg-shop.js.bak ├── rpg-work.js ├── search-spotify.js ├── search-tiktok.js ├── search-tiktok.js.bak ├── search-tiktoksearchb.js ├── search-tweet-posts.js ├── serach-google.js ├── serbot-bots.js ├── serbot-bots.js.bak ├── serbot-code.js ├── serbot-delserbot.js ├── serbot-serbot.js ├── serbot-stop.js ├── sticker-emojimix.js ├── sticker-qc.js ├── sticker-scat.js ├── sticker-smeme.js ├── sticker-sticker.js ├── sticker-wm.js ├── sticker-wm2.js ├── tools-acortar.js ├── tools-ai.js ├── tools-blackbox.js ├── tools-cal.js ├── tools-chazam.js ├── tools-detectface.js ├── tools-fake.js ├── tools-gemini.js ├── tools-getbio.js ├── tools-getname.js ├── tools-getprofile.js ├── tools-hd.js ├── tools-ibb.js ├── tools-igstalk.js ├── tools-morse.js ├── tools-qrcode.js ├── tools-react.js ├── tools-readmore.js ├── tools-readviewonce.js ├── tools-reenviar.js ├── tools-similarface.js ├── tools-ssweb.js ├── tools-styletext.js ├── tools-tamaño.js ├── tools-tiktokstalk.js ├── tools-todoc.js ├── tools-togifaud.js ├── tools-toimg.js ├── tools-tomp3.js ├── tools-tourl.js ├── tools-tourl.js.bak ├── tools-tovid.js ├── tools-trad.js ├── tools-transcrip-yt.js ├── tools-tts.js ├── tools-tweetstalk.js ├── tools-vcard.js ├── tools-whatmusic.js ├── tools-zodiac.js ├── youtube-play.js ├── youtube-play2.js ├── youtube-ytdl.js ├── youtube-ytmp3.js ├── youtube-ytmp3doc.js ├── youtube-ytmp4.js ├── youtube-ytmp4doc.js └── youtube-ytsearch.js ├── server.js ├── sessions ├── P └── creds.json ├── sorteo.json ├── storage ├── databases │ └── database.json └── img │ ├── avatar_contact.png │ ├── catalogo.png │ ├── file │ └── miniurl.jpg └── tmp └── file /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-buster 2 | 3 | RUN apt-get update && \ 4 | apt-get install -y \ 5 | ffmpeg \ 6 | imagemagick \ 7 | webp && \ 8 | apt-get upgrade -y && \ 9 | rm -rf /var/lib/apt/lists/* 10 | 11 | COPY package.json . 12 | 13 | RUN npm install && npm install qrcode-terminal 14 | 15 | COPY . . 16 | 17 | EXPOSE 5000 18 | 19 | CMD ["node", "index.js", "--server"] 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### **`TK HOST 📲`** 2 | 3 | 4 |
5 | :paperclip: Enlaces Importantes 6 | 7 | - **Dashboard:** [`Aquí`](https://dash.tk-joanhost.com) 8 | - **Panel:** [`Aquí`](https://panel.tk-joanhost.com) 9 | - **Canal de WhatsApp:** [`Aquí`](https://whatsapp.com/channel/0029VaoZXbk6RGJNYQVP8r27) 10 | 11 |
12 | 13 | ## TRANKS DANIEL AND TEAM!! 14 | -------------------------------------------------------------------------------- /koyeb.yaml: -------------------------------------------------------------------------------- 1 | name: anya-bot 2 | type: app 3 | regions: 4 | - fra # Frankfurt (choose your preferred region) 5 | ports: 6 | - 8080:8080 7 | build: 8 | type: node 9 | files: 10 | - package.json 11 | - package-lock.json 12 | - index.js 13 | - .env 14 | plan: web # Ensuring it's a web service, not a worker 15 | -------------------------------------------------------------------------------- /lib/Gifbuffer.js: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises"; 2 | import { promisify } from "util"; 3 | import { exec } from "child_process"; 4 | import path from "path"; 5 | 6 | const __dirname = path.resolve(); 7 | 8 | const sleep = promisify(setTimeout); 9 | 10 | const GIFBufferToVideoBuffer = async (image) => { 11 | try { 12 | const filename = `${Math.random().toString(36)}`; 13 | const gifFilePath = path.join(__dirname, "tmp", `${filename}.gif`); 14 | const mp4FilePath = path.join(__dirname, "tmp", `${filename}.mp4`); 15 | 16 | await fs.writeFile(gifFilePath, image); 17 | 18 | const ffmpegCommand = `ffmpeg -i "${gifFilePath}" -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" "${mp4FilePath}"`; 19 | 20 | await promisify(exec)(ffmpegCommand); 21 | 22 | await sleep(4000); 23 | 24 | const videoBuffer = await fs.readFile(mp4FilePath); 25 | 26 | await Promise.all([fs.unlink(gifFilePath), fs.unlink(mp4FilePath)]); 27 | 28 | return videoBuffer; 29 | } catch (error) { 30 | console.error(error); 31 | throw new Error("Error processing GIF to video."); 32 | } 33 | }; 34 | 35 | export default GIFBufferToVideoBuffer; 36 | -------------------------------------------------------------------------------- /lib/converter.js: -------------------------------------------------------------------------------- 1 | import { promises } from 'fs' 2 | import { join } from 'path' 3 | import { spawn } from 'child_process' 4 | 5 | function ffmpeg(buffer, args = [], ext = '', ext2 = '') { 6 | return new Promise(async (resolve, reject) => { 7 | try { 8 | let tmp = join(global.__dirname(import.meta.url), '../tmp', + new Date + '.' + ext) 9 | let out = tmp + '.' + ext2 10 | await promises.writeFile(tmp, buffer) 11 | spawn('ffmpeg', [ 12 | '-y', 13 | '-i', tmp, 14 | ...args, 15 | out 16 | ]) 17 | .on('error', reject) 18 | .on('close', async (code) => { 19 | try { 20 | await promises.unlink(tmp) 21 | if (code !== 0) return reject(code) 22 | resolve({ 23 | data: await promises.readFile(out), 24 | filename: out, 25 | delete() { 26 | return promises.unlink(out) 27 | } 28 | }) 29 | } catch (e) { 30 | reject(e) 31 | } 32 | }) 33 | } catch (e) { 34 | reject(e) 35 | } 36 | }) 37 | } 38 | 39 | function toPTT(buffer, ext) { 40 | return ffmpeg(buffer, [ 41 | '-vn', 42 | '-c:a', 'libopus', 43 | '-b:a', '128k', 44 | '-vbr', 'on', 45 | ], ext, 'ogg') 46 | } 47 | 48 | function toAudio(buffer, ext) { 49 | return ffmpeg(buffer, [ 50 | '-vn', 51 | '-c:a', 'libopus', 52 | '-b:a', '128k', 53 | '-vbr', 'on', 54 | '-compression_level', '10' 55 | ], ext, 'opus') 56 | } 57 | 58 | function toVideo(buffer, ext) { 59 | return ffmpeg(buffer, [ 60 | '-c:v', 'libx264', 61 | '-c:a', 'aac', 62 | '-ab', '128k', 63 | '-ar', '44100', 64 | '-crf', '32', 65 | '-preset', 'slow' 66 | ], ext, 'mp4') 67 | } 68 | 69 | export { toAudio, toPTT, toVideo, ffmpeg } -------------------------------------------------------------------------------- /lib/file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/levelling.js: -------------------------------------------------------------------------------- 1 | export const growth = Math.pow(Math.PI / Math.E, 1.618) * Math.E * .75 2 | export function xpRange(level, multiplier = global.multiplier || 1) { 3 | if (level < 0) 4 | throw new TypeError('level cannot be negative value') 5 | level = Math.floor(level) 6 | let min = level === 0 ? 0 : Math.round(Math.pow(level, growth) * multiplier) + 1 7 | let max = Math.round(Math.pow(++level, growth) * multiplier) 8 | return { 9 | min, 10 | max, 11 | xp: max - min 12 | } 13 | } 14 | 15 | export function findLevel(xp, multiplier = global.multiplier || 1) { 16 | if (xp === Infinity) 17 | return Infinity 18 | if (isNaN(xp)) 19 | return NaN 20 | if (xp <= 0) 21 | return -1 22 | let level = 0 23 | do 24 | level++ 25 | while (xpRange(level, multiplier).min <= xp) 26 | return --level 27 | } 28 | 29 | export function canLevelUp(level, xp, multiplier = global.multiplier || 1) { 30 | if (level < 0) 31 | return false 32 | if (xp === Infinity) 33 | return true 34 | if (isNaN(xp)) 35 | return false 36 | if (xp <= 0) 37 | return false 38 | return level < findLevel(xp, multiplier) 39 | } -------------------------------------------------------------------------------- /lib/uploadFile.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { FormData, Blob } from 'formdata-node' 3 | import { fileTypeFromBuffer } from 'file-type' 4 | 5 | const fileIO = async buffer => { 6 | const { ext, mime } = await fileTypeFromBuffer(buffer) || {} 7 | let form = new FormData() 8 | const blob = new Blob([buffer.toArrayBuffer()], { type: mime }) 9 | form.append('file', blob, 'tmp.' + ext) 10 | let res = await fetch('https://file.io/?expires=1d', { 11 | method: 'POST', 12 | body: form 13 | }) 14 | let json = await res.json() 15 | if (!json.success) throw json 16 | return json.link 17 | } 18 | 19 | const RESTfulAPI = async inp => { 20 | let form = new FormData() 21 | let buffers = inp 22 | if (!Array.isArray(inp)) buffers = [inp] 23 | for (let buffer of buffers) { 24 | const blob = new Blob([buffer.toArrayBuffer()]) 25 | form.append('file', blob) 26 | } 27 | let res = await fetch('https://storage.restfulapi.my.id/upload', { 28 | method: 'POST', 29 | body: form 30 | }) 31 | let json = await res.text() 32 | try { 33 | json = JSON.parse(json) 34 | if (!Array.isArray(inp)) return json.files[0].url 35 | return json.files.map(res => res.url) 36 | } catch (e) { 37 | throw json 38 | } 39 | } 40 | 41 | export default async function (inp) { 42 | let err = false 43 | for (let upload of [RESTfulAPI, fileIO]) { 44 | try { 45 | return await upload(inp) 46 | } catch (e) { 47 | err = e 48 | } 49 | } 50 | if (err) throw err 51 | } -------------------------------------------------------------------------------- /lib/uploadImage.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | import { FormData, Blob } from 'formdata-node'; 3 | import { fileTypeFromBuffer } from 'file-type' 4 | 5 | export default async buffer => { 6 | const { ext, mime } = await fileTypeFromBuffer(buffer) 7 | let form = new FormData() 8 | const blob = new Blob([buffer.toArrayBuffer()], { type: mime }) 9 | form.append('file', blob, 'tmp.' + ext) 10 | let res = await fetch('https://telegra.ph/upload', { 11 | method: 'POST', 12 | body: form 13 | }) 14 | let img = await res.json() 15 | if (img.error) throw img.error 16 | return 'https://telegra.ph' + img[0].src 17 | } -------------------------------------------------------------------------------- /plugins/Tranks Daniel: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /plugins/_antiArab.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m, {conn, isAdmin, isBotAdmin, isOwner} ) { 4 | if (!m.isGroup) return !1 5 | let chat = global.db.data.chats[m.chat] 6 | 7 | if (isBotAdmin && chat.onlyLatinos && !isAdmin && !isOwner) { 8 | let forbidPrefixes = ["212", "265", "234", "258", "263", "93", "967", "92", "234", "91", "254", "213"] 9 | 10 | for (let prefix of forbidPrefixes) { 11 | if (m.sender.startsWith(prefix)) { 12 | m.reply('🚩 En este grupo solo se permite personas de habla hispana.', m.sender) 13 | await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 14 | return false 15 | } 16 | } 17 | } 18 | 19 | return true 20 | } 21 | 22 | export default handler -------------------------------------------------------------------------------- /plugins/_antiBot.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@whiskeysockets/baileys' 2 | 3 | export async function before(m, { participants, conn }) { 4 | if (m.isGroup) { 5 | let chat = global.db.data.chats[m.chat] 6 | 7 | if (!chat.antiBot) { 8 | return 9 | } 10 | 11 | let botJid = global.conn.user.jid 12 | 13 | if (botJid === conn.user.jid) { 14 | return 15 | } else { 16 | let isBotPresent = participants.some(p => areJidsSameUser(botJid, p.id)) 17 | 18 | if (isBotPresent) { 19 | setTimeout(async () => { 20 | await this.groupLeave(m.chat) 21 | }, 5000) 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /plugins/_antilink.js: -------------------------------------------------------------------------------- 1 | const linkRegex = /chat.whatsapp.com\/(?:invite\/)?([0-9A-Za-z]{20,24})/i 2 | 3 | export async function before(m, {conn, isAdmin, isBotAdmin }) { 4 | if (m.isBaileys && m.fromMe) 5 | return !0 6 | if (!m.isGroup) return !1 7 | let chat = global.db.data.chats[m.chat] 8 | let bot = global.db.data.settings[this.user.jid] || {} 9 | const isGroupLink = linkRegex.exec(m.text) 10 | 11 | if (chat.antiLink && isGroupLink && !isAdmin) { 12 | if (isBotAdmin) { 13 | const linkThisGroup = `https://chat.whatsapp.com/${await this.groupInviteCode(m.chat)}` 14 | if (m.text.includes(linkThisGroup)) return !0 15 | } 16 | await conn.reply(m.chat, `🚩 No permitimos enlaces de otros grupos, lo siento *@${m.sender.split('@')[0]}* serás expulsado del grupo ${isBotAdmin ? '' : '\n\nNo soy admin así que no te puedo expulsar :"v'}`, null, { mentions: [m.sender] } ) 17 | if (isBotAdmin && chat.antiLink) { 18 | await conn.sendMessage(m.chat, { delete: m.key }) 19 | await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 20 | } else if (!chat.antiLink) return //m.reply('') 21 | } 22 | return !0 23 | } -------------------------------------------------------------------------------- /plugins/_clearCore.js: -------------------------------------------------------------------------------- 1 | import { readdirSync, unlinkSync } from 'fs' 2 | import path from 'path' 3 | 4 | export async function before(m, { conn }) { 5 | let directory = "./" 6 | 7 | readdirSync(directory).forEach((file) => { 8 | let filePath = path.join(directory, file) 9 | if (file.includes('core')) { 10 | unlinkSync(filePath) 11 | } 12 | }) 13 | } -------------------------------------------------------------------------------- /plugins/_cmdWithMedia.js: -------------------------------------------------------------------------------- 1 | const { 2 | proto, 3 | generateWAMessage, 4 | areJidsSameUser 5 | } = (await import('@whiskeysockets/baileys')).default 6 | 7 | export async function all(m, chatUpdate) { 8 | if (m.isBaileys) return 9 | if (!m.message) return 10 | if (!m.msg.fileSha256) return 11 | if (!(Buffer.from(m.msg.fileSha256).toString('base64') in global.db.data.sticker)) return 12 | 13 | let hash = global.db.data.sticker[Buffer.from(m.msg.fileSha256).toString('base64')] 14 | let { text, mentionedJid } = hash 15 | let messages = await generateWAMessage(m.chat, { text: text, mentions: mentionedJid }, { 16 | userJid: this.user.id, 17 | quoted: m.quoted && m.quoted.fakeObj 18 | }) 19 | messages.key.fromMe = areJidsSameUser(m.sender, this.user.id) 20 | messages.key.id = m.key.id 21 | messages.pushName = m.pushName 22 | if (m.isGroup) messages.participant = m.sender 23 | let msg = { 24 | ...chatUpdate, 25 | messages: [proto.WebMessageInfo.fromObject(messages)], 26 | type: 'append' 27 | } 28 | this.ev.emit('messages.upsert', msg) 29 | } -------------------------------------------------------------------------------- /plugins/_expired.js: -------------------------------------------------------------------------------- 1 | export async function all(m) { 2 | if (!m.isGroup) 3 | return 4 | let chats = global.db.data.chats[m.chat] 5 | if (!chats.expired) 6 | return !0 7 | if (+new Date() > chats.expired) { 8 | await this.reply(m.chat, `🚩 Alquiler finalizado.`) 9 | await this.groupLeave(m.chat) 10 | chats.expired = null 11 | } 12 | } -------------------------------------------------------------------------------- /plugins/_fakeAi.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | let handler = async (m, { conn, usedPrefix: _p }) => { 3 | try { 4 | let pp = await conn.profilePictureUrl(m.sender, 'image') 5 | 6 | const anu = { 7 | "key": { 8 | "fromMe": false, 9 | "participant": "0@s.whatsapp.net", 10 | "remoteJid": "0@s.whatsapp.net" 11 | }, 12 | "message": { 13 | "groupInviteMessage": { 14 | "groupJid": "6285240750713-1610340626@g.us", 15 | "inviteCode": "mememteeeekkeke", 16 | "groupName": "P", 17 | "caption": "Hello, I'm Elaina Ai", 18 | "jpegThumbnail": await (await fetch(pp)).buffer() 19 | } 20 | } 21 | } 22 | 23 | conn.sendMessage(m.chat, { text: 'Hola soy Elaina Ai, ¿Cómo puedo ayudarte?' }, { quoted: anu }) 24 | } catch (error) { 25 | conn.sendMessage(m.chat, 'Hola soy Elaina Ai, ¿Cómo puedo ayudarte?', 'conversation', { quoted: m }) 26 | } 27 | } 28 | 29 | handler.customPrefix = /^(Bot)$/i 30 | handler.command = new RegExp 31 | export default handler -------------------------------------------------------------------------------- /plugins/_fakeAi.js.bak: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | let handler = async (m, { conn, usedPrefix: _p }) => { 3 | try { 4 | let pp = await conn.profilePictureUrl(m.sender, 'image') 5 | 6 | const anu = { 7 | "key": { 8 | "fromMe": false, 9 | "participant": "0@s.whatsapp.net", 10 | "remoteJid": "0@s.whatsapp.net" 11 | }, 12 | "message": { 13 | "groupInviteMessage": { 14 | "groupJid": "6285240750713-1610340626@g.us", 15 | "inviteCode": "mememteeeekkeke", 16 | "groupName": "P", 17 | "caption": "Hello, I'm Ai Hoshino", 18 | "jpegThumbnail": await (await fetch(pp)).buffer() 19 | } 20 | } 21 | } 22 | 23 | conn.sendMessage(m.chat, { text: 'Hola soy Ai Hoshino, ¿Cómo puedo ayudarte?' }, { quoted: anu }) 24 | } catch (error) { 25 | conn.sendMessage(m.chat, 'Hola soy Ai Hoshino, ¿Cómo puedo ayudarte?', 'conversation', { quoted: m }) 26 | } 27 | } 28 | 29 | handler.customPrefix = /^(Ai)$/i 30 | handler.command = new RegExp 31 | export default handler -------------------------------------------------------------------------------- /plugins/_fakeReply.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | export async function before(m, { conn }) { 4 | let img = await (await fetch(`https://i.pinimg.com/originals/79/69/bd/7969bd5faa4d1fa5193d0e30bb4e974c.jpg`)).buffer() 5 | 6 | global.rcanal = { 7 | contextInfo: { 8 | isForwarded: true, 9 | forwardedNewsletterMessageInfo: { 10 | newsletterJid: "120363319490414132@newsletter", 11 | serverMessageId: 100, 12 | newsletterName: namechannel, 13 | }, 14 | externalAdReply: { 15 | showAdAttribution: true, 16 | title: botname, 17 | body: textbot, 18 | mediaUrl: null, 19 | description: null, 20 | previewType: "PHOTO", 21 | thumbnailUrl: "https://i.pinimg.com/originals/79/69/bd/7969bd5faa4d1fa5193d0e30bb4e974c.jpg", 22 | sourceUrl: canal, 23 | mediaType: 1, 24 | renderLargerThumbnail: false }, 25 | }, 26 | } 27 | 28 | 29 | /* global.rcanal = { 30 | contextInfo: { 31 | isForwarded: true, 32 | forwardedNewsletterMessageInfo: { 33 | newsletterJid: "120363319490414132@newsletter", 34 | serverMessageId: 100, 35 | newsletterName: namechannel, 36 | }, 37 | }, 38 | }*/ 39 | 40 | global.adReply = { 41 | contextInfo: { 42 | forwardingScore: 9999, 43 | isForwarded: false, 44 | externalAdReply: { 45 | showAdAttribution: true, 46 | title: botname, 47 | body: textbot, 48 | mediaUrl: null, 49 | description: null, 50 | previewType: "PHOTO", 51 | thumbnailUrl: "https://i.ibb.co/8mdHFVK/file.jpg", 52 | thumbnail: img, 53 | sourceUrl: canal, 54 | mediaType: 1, 55 | renderLargerThumbnail: true 56 | } 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /plugins/_fakeReply.js.bak: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | export async function before(m, { conn }) { 4 | let img = await (await fetch(`https://tinyurl.com/2c5hk765`)).buffer() 5 | 6 | global.rcanal = { 7 | contextInfo: { 8 | isForwarded: true, 9 | forwardedNewsletterMessageInfo: { 10 | newsletterJid: "120363319490414132@newsletter", 11 | serverMessageId: 100, 12 | newsletterName: namechannel, 13 | }, 14 | }, 15 | } 16 | 17 | global.adReply = { 18 | contextInfo: { 19 | forwardingScore: 9999, 20 | isForwarded: false, 21 | externalAdReply: { 22 | showAdAttribution: true, 23 | title: botname, 24 | body: textbot, 25 | mediaUrl: null, 26 | description: null, 27 | previewType: "PHOTO", 28 | thumbnailUrl: img, 29 | thumbnail: img, 30 | sourceUrl: canal, 31 | mediaType: 1, 32 | renderLargerThumbnail: true 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /plugins/_fototeta.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, command}) => { 2 | await conn.reply(m.chat,`Padre nuestro, que estás en los Cielos, santificado sea tu nombre, venga tu Reino, hágase tu voluntad así en la tierra como en el cielo. y perdónanos nuestras deudas así como nosotros perdonamos a nuestros deudores, y no nos dejes caer en la tentación, mas líbranos del mal.`, estilo) 3 | } 4 | handler.customPrefix = /^(Fototeta|fototeta)$/i 5 | handler.command = new RegExp 6 | export default handler -------------------------------------------------------------------------------- /plugins/_premium.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | export async function all(m) { 3 | let user = global.db.data.users[m.sender] 4 | if (m.chat.endsWith('broadcast')) return 5 | if (user.premiumTime != 0 && user.premium) { 6 | if (new Date() * 1 >= user.premiumTime) { 7 | await m.reply(`🚩 @${m.sender.split`@`[0]} se terminó tu tiempo como usuario *Premium.*`, false, { mentions: [m.sender] }) 8 | user.premiumTime = 0 9 | user.premium = false 10 | }}} -------------------------------------------------------------------------------- /plugins/_welcome.js: -------------------------------------------------------------------------------- 1 | import {WAMessageStubType} from '@whiskeysockets/baileys' 2 | import fetch from 'node-fetch' 3 | 4 | export async function before(m, {conn, participants, groupMetadata}) { 5 | if (!m.messageStubType || !m.isGroup) return !0; 6 | let pp = await conn.profilePictureUrl(m.messageStubParameters[0], 'image').catch(_ => 'https://tinyurl.com/ylgu47w3') 7 | let img = await (await fetch(`${pp}`)).buffer() 8 | let chat = global.db.data.chats[m.chat] 9 | 10 | if (chat.bienvenida && m.messageStubType == 27) { 11 | let bienvenida = `┌─★ *${botname}* \n│「 Bienvenido 」\n└┬★ 「 @${m.messageStubParameters[0].split`@`[0]} 」\n │✑ Bienvenido a\n │✑ ${groupMetadata.subject}\n └───────────────┈ ⳹` 12 | 13 | await conn.sendAi(m.chat, botname, textbot, bienvenida, img, img, canal, estilo) 14 | } 15 | 16 | if (chat.bienvenida && m.messageStubType == 28) { 17 | let bye = `┌─★ *${botname}* \n│「 ADIOS 👋 」\n└┬★ 「 @${m.messageStubParameters[0].split`@`[0]} 」\n │✑ Se fue\n │✑ Jamás te quisimos aquí\n └───────────────┈ ⳹` 18 | await conn.sendAi(m.chat, botname, textbot, bye, img, img, canal, estilo) 19 | } 20 | 21 | if (chat.bienvenida && m.messageStubType == 32) { 22 | let kick = `┌─★ *${botname}* \n│「 ADIOS 👋 」\n└┬★ 「 @${m.messageStubParameters[0].split`@`[0]} 」\n │✑ Se fue\n │✑ Jamás te quisimos aquí\n └───────────────┈ ⳹` 23 | await conn.sendAi(m.chat, botname, textbot, kick, img, img, canal, estilo) 24 | }} -------------------------------------------------------------------------------- /plugins/_youtube-audio.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | let limit = 200 3 | 4 | let handler = async (m, { conn, text, isPrems, isOwner, usedPrefix, command }) => { 5 | if (!m.quoted) return conn.reply(m.chat, `🚩 Etiqueta el mensaje que contenga el resultado de YouTube Play.`, m, rcanal).then(_ => m.react('✖️')) 6 | if (!m.quoted.text.includes("乂 Y O U T U B E - P L A Y")) return conn.reply(m.chat, `🚩 Etiqueta el mensaje que contenga el resultado de YouTube Play.`, m, rcanal).then(_ => m.react('✖️')) 7 | let urls = m.quoted.text.match(new RegExp(/(?:https?:\/\/)?(?:youtu\.be\/|(?:www\.|m\.)?youtube\.com\/(?:watch|v|embed|shorts)(?:\.php)?(?:\?.*v=|\/))([a-zA-Z0-9\_-]+)/, 'gi')) 8 | if (!urls) return conn.reply(m.chat, `Resultado no Encontrado.`, m, rcanal).then(_ => m.react('✖️')) 9 | if (urls.length < text) return conn.reply(m.chat, `Resultado no Encontrado.`, m, rcanal).then(_ => m.react('✖️')) 10 | let user = global.db.data.users[m.sender] 11 | 12 | await m.react('🕓') 13 | try { 14 | let v = urls[0] 15 | let { title, size, quality, thumbnail, dl_url } = await Starlights.ytmp3(v) 16 | 17 | if (size.split('MB')[0] >= limit) return m.reply(`El archivo pesa mas de ${limit} MB, se canceló la Descarga.`).then(_ => m.react('✖️')) 18 | 19 | await conn.sendFile(m.chat, dl_url, title + '.mp3', null, m, false, { mimetype: 'audio/mpeg', asDocument: user.useDocument }) 20 | await m.react('✅') 21 | } catch { 22 | await m.react('✖️') 23 | }} 24 | handler.help = ['Audio'] 25 | handler.tags = ['downloader'] 26 | handler.customPrefix = /^(Audio|audio)/ 27 | handler.command = new RegExp 28 | //handler.limit = 1 29 | 30 | export default handler -------------------------------------------------------------------------------- /plugins/_youtube-video.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | let limit = 300 3 | let handler = async (m, { conn, text, isPrems, isOwner, usedPrefix, command }) => { 4 | if (!m.quoted) return conn.reply(m.chat, `🚩 Etiqueta el mensaje que contenga el resultado de YouTube Play.`, m, rcanal).then(_ => m.react('✖️')) 5 | if (!m.quoted.text.includes("乂 Y O U T U B E - P L A Y")) return conn.reply(m.chat, `🚩 Etiqueta el mensaje que contenga el resultado de YouTube Play.`, m, rcanal).then(_ => m.react('✖️')) 6 | let urls = m.quoted.text.match(new RegExp(/(?:https?:\/\/)?(?:youtu\.be\/|(?:www\.|m\.)?youtube\.com\/(?:watch|v|embed|shorts)(?:\.php)?(?:\?.*v=|\/))([a-zA-Z0-9\_-]+)/, 'gi')) 7 | if (!urls) return conn.reply(m.chat, `Resultado no Encontrado.`, m, rcanal).then(_ => m.react('✖️')) 8 | if (urls.length < text) return conn.reply(m.chat, `Resultado no Encontrado.`, m, rcanal).then(_ => m.react('✖️')) 9 | let user = global.db.data.users[m.sender] 10 | 11 | await m.react('🕓') 12 | try { 13 | let v = urls[0] 14 | let { title, size, quality, thumbnail, dl_url } = await Starlights.ytmp4(v) 15 | 16 | if (size.split('MB')[0] >= limit) return m.reply(`El archivo pesa mas de ${limit} MB, se canceló la Descarga.`).then(_ => m.react('✖️')) 17 | 18 | await conn.sendFile(m.chat, dl_url, title + '.mp4', `*» Título* : ${title}\n*» Calidad* : ${quality}`, m, false, { asDocument: user.useDocument }) 19 | await m.react('✅') 20 | } catch { 21 | await m.react('✖️') 22 | }} 23 | handler.help = ['Video'] 24 | handler.tags = ['downloader'] 25 | handler.customPrefix = /^(Video|video|vídeo|Vídeo)/ 26 | handler.command = new RegExp 27 | //handler.limit = 1 28 | 29 | export default handler -------------------------------------------------------------------------------- /plugins/afk-_afk.js: -------------------------------------------------------------------------------- 1 | export async function before(m) { 2 | let user = global.db.data.users[m.sender] 3 | if (user.afk > 0) { 4 | await conn.reply(m.chat, `🚩 Dejaste de estar *AFK* despues de *${(new Date - user.afk).toTimeString()}.*`, m, rcanal) 5 | user.afk = 0 6 | user.afkReason = '' 7 | } 8 | let jids = [...new Set([...(m.mentionedJid || []), ...(m.quoted ? [m.quoted.sender] : [])])] 9 | for (let jid of jids) { 10 | let user = global.db.data.users[jid] 11 | if (!user) 12 | continue 13 | let afkTime = user.afk 14 | if (!afkTime || afkTime < 0) 15 | continue 16 | let reason = user.afkReason || '' 17 | await conn.reply(m.chat, `🚩 El usuario que intentas etiquetar esta *AFK* por la razón *${reason ? reason : '...'}* durante *${(new Date - afkTime).toTimeString()}*.`, m) 18 | } 19 | return true 20 | } -------------------------------------------------------------------------------- /plugins/afk-afk.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, conn }) => { 2 | let user = global.db.data.users[m.sender] 3 | user.afk = + new Date 4 | user.afkReason = text 5 | await conn.reply(m.chat, `🚩 Ahora estás ausente hasta que vuelvas a enviar un nuevo mensaje, cuando te intenten tagear el usuario será notificado de tu ausencia con el motivo.\n\n*${conn.getName(m.sender)}* Esta AFK, Motivo *${text ? ': ' + text : ''}*`, m, rcanal) 6 | } 7 | handler.help = ['afk **'] 8 | handler.tags = ['fun'] 9 | handler.command = ['afk'] 10 | handler.group = true 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/cmd-del.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text }) => { 2 | let hash = text 3 | if (m.quoted && m.quoted.fileSha256) hash = m.quoted.fileSha256.toString('hex') 4 | if (!hash) return conn.reply(m.chat, `🚩 Ingresa el nombre del comamdo.`, m, rcanal) 5 | try { 6 | let sticker = global.db.data.sticker 7 | if (sticker[hash] && sticker[hash].locked) return conn.reply(m.chat, `🚩 No puedes borrar este comando.`, m, rcanal) 8 | delete sticker[hash] 9 | await conn.reply(m.chat, `🚩 Comando eliminado con éxito.`, m, rcanal) 10 | await m.react('✅') 11 | } catch { 12 | await m.react('✖️') 13 | }} 14 | handler.help = ['cmd'].map(v => 'del' + v + ' **') 15 | handler.tags = ['cmd'] 16 | handler.command = ['delcmd'] 17 | handler.owner = true 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/cmd-list.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.reply(m.chat, ` 3 | *LISTA DE COMANDOS* 4 | 5 | *Info:* Si esta en *negrita* esta bloqueado 6 | 7 | ────────────────── 8 | ${Object.entries(global.db.data.sticker).map(([key, value], index) => `${index + 1}. ${value.locked ? `(bloqueado) ${key}` : key} : ${value.text}`).join('\n')} 9 | 10 | `.trim(), null, { 11 | mentions: Object.values(global.db.data.sticker).map(x => x.mentionedJid).reduce((a, b) => [...a, ...b], []) 12 | }) 13 | } 14 | 15 | handler.help = ['listcmd'] 16 | handler.tags = ['cmd'] 17 | handler.command = ['listcmd'] 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/cmd-set.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, usedPrefix, command }) => { 2 | global.db.data.sticker = global.db.data.sticker || {} 3 | if (!m.quoted) return conn.reply(m.chat, `🚩 Responde a un mensaje.`, m, rcanal) 4 | if (!m.quoted.fileSha256) return conn.reply(m.chat, `🚩 Responde a un mensaje.`, m, rcanal) 5 | if (!text) return conn.reply(m.chat, `🚩 Ingresa el nombre del comamdo.`, m, rcanal) 6 | try { 7 | let sticker = global.db.data.sticker 8 | let hash = m.quoted.fileSha256.toString('base64') 9 | if (sticker[hash] && sticker[hash].locked) return conn.reply(m.chat, `🚩 No tienes permiso para cambiar este comando de Sticker.`, m, rcanal) 10 | sticker[hash] = { 11 | text, 12 | mentionedJid: m.mentionedJid, 13 | creator: m.sender, 14 | at: + new Date, 15 | locked: false, 16 | } 17 | await conn.reply(m.chat, `🚩 Comando guardado con exito.`, m, rcanal) 18 | await m.react('✅') 19 | } catch { 20 | await m.react('✖️') 21 | }} 22 | handler.help = ['cmd'].map(v => 'set' + v + ' **') 23 | handler.tags = ['cmd'] 24 | handler.command = ['setcmd'] 25 | handler.owner = true 26 | 27 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-aptoide.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return conn.reply(m.chat, `*• Ingresa el nombre de la aplicación que deseas descargar.*\n\nEjemplo:\n*${usedPrefix + command}* WhatsApp`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let { name, packname, update, size, thumbnail, dl_url } = await Starlights.aptoide(text) 8 | if (size.includes('GB') || size.replace(' MB', '') > 300) { return await m.reply('El archivo pesa mas de 300 MB, se canceló la Descarga.')} 9 | let txt = `*乂 A P T O I D E - D O W N L O A D*\n\n` 10 | txt += ` ✩ *Nombre* : ${name}\n` 11 | txt += ` ✩ *Package* : ${packname}\n` 12 | txt += ` ✩ *Update* : ${update}\n` 13 | txt += ` ✩ *Peso* : ${size}\n\n` 14 | txt += `*- ↻ El archivo se esta enviando espera un momento, soy lenta. . .*` 15 | await conn.sendFile(m.chat, thumbnail, 'thumbnail.jpg', txt, m, null, rcanal) 16 | await conn.sendMessage(m.chat, {document: { url: dl_url }, mimetype: 'application/vnd.android.package-archive', fileName: name + '.apk', caption: null }, {quoted: m}) 17 | await m.react('✅') 18 | } catch { 19 | await m.react('✖️') 20 | }} 21 | handler.help = ['aptoide **'] 22 | handler.tags = ['downloader'] 23 | handler.command = ['aptoide', 'apk'] 24 | handler.register = true 25 | //handler.limit = 5 26 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-danbooru.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args[0]) return conn.reply(m.chat, '🚩 Ingresa un enlace de https://danbooru.donmai.us\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* https://danbooru.donmai.us/posts/7665436`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let { dl_url } = await Starlights.danbooru(args[0]) 8 | await conn.sendFile(m.chat, dl_url, 'thumbnail.jpg', listo, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['danbooru **'] 14 | handler.tags = ['downloader'] 15 | handler.command = ['danbooru'] 16 | //handler.limit = 1 17 | handler.register = true 18 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-fb.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args || !args[0]) return conn.reply(m.chat, '🚩 Ingresa el enlace del vídeo de Facebook junto al comando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* https://www.facebook.com/official.trash.gang/videos/873759786348039/?mibextid=rS40aB7S9Ucbxw6v`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let { dl_url } = await Starlights.fbdl(args[0]) 8 | await conn.sendFile(m.chat, dl_url, 'fbdl.mp4', listo, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['fb **'] 14 | handler.tags = ['downloader'] 15 | handler.command = /^(facebook|fb|facebookdl|fbdl)$/i 16 | //handler.limit = 1 17 | handler.register = true 18 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-gitclone.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let regex = /(?:https|git)(?::\/\/|@)github\.com[\/:]([^\/:]+)\/(.+)/i 4 | let handler = async (m, { args, usedPrefix, command }) => { 5 | if (!args[0]) { 6 | return conn.reply(m.chat, `🚩 Escribe la URL de un repositorio de GitHub que deseas descargar.`, m) 7 | } 8 | if (!regex.test(args[0])) { 9 | return conn.reply(m.chat, `Verifica que la *URL* sea de GitHub`, m).then(_ => m.react('✖️')) 10 | } 11 | let [_, user, repo] = args[0].match(regex) || [] 12 | let sanitizedRepo = repo.replace(/.git$/, '') 13 | let repoUrl = `https://api.github.com/repos/${user}/${sanitizedRepo}` 14 | let zipUrl = `https://api.github.com/repos/${user}/${sanitizedRepo}/zipball` 15 | await m.react('🕓') 16 | try { 17 | let [repoResponse, zipResponse] = await Promise.all([ 18 | fetch(repoUrl), 19 | fetch(zipUrl), 20 | ]) 21 | let repoData = await repoResponse.json() 22 | let filename = zipResponse.headers.get('content-disposition').match(/attachment; filename=(.*)/)[1] 23 | let type = zipResponse.headers.get('content-type') 24 | let img = 'https://i.ibb.co/tLKyhgM/file.png' 25 | let txt = `*乂 G I T H U B - D O W N L O A D*\n\n` 26 | txt += ` ✩ *Nombre* : ${filename}\n` 27 | txt += ` ✩ *Repositorio* : ${user}/${sanitizedRepo}\n` 28 | txt += ` ✩ *Creador* : ${repoData.owner.login}\n` 29 | txt += ` ✩ *Descripción* : ${repoData.description || 'Sin descripción disponible'}\n` 30 | txt += ` ✩ *Url* : ${args[0]}\n\n` 31 | txt += `🚩 *${textbot}*` 32 | 33 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 34 | await conn.sendFile(m.chat, await zipResponse.buffer(), filename, null, m) 35 | await m.react('✅') 36 | } catch { 37 | await m.react('✖️') 38 | } 39 | } 40 | handler.help = ['gitclone **'] 41 | handler.tags = ['downloader'] 42 | handler.command = /^(gitclone)$/i 43 | handler.register = true 44 | //handler.star = 1 45 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-ig.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args[0]) return conn.reply(m.chat, '🚩 Ingresa el enlace del vídeo de Instagram junto al comando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* https://www.instagram.com/p/C60xXk3J-sb/?igsh=YzljYTk1ODg3Zg==`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let { dl_url } = await Starlights.igdl(args[0]) 8 | await conn.sendFile(m.chat, dl_url, 'igdl.mp4', listo, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['instagram **'] 14 | handler.tags = ['downloader'] 15 | handler.command = /^(instagramdl|instagram|igdl|ig|instagramdl2|instagram2|igdl2|ig2|instagramdl3|instagram3|igdl3|ig3)$/i 16 | //handler.limit = 1 17 | handler.register = true 18 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-likee.js: -------------------------------------------------------------------------------- 1 | //Para Usuarios De Likee 🙃 2 | import fetch from 'node-fetch' 3 | 4 | let handler = async (m, { conn, text }) => { 5 | if (!text) return conn.reply(m.chat, '🚩 Ingrese la url de un video de *Likee*.', m, rcanal) 6 | await m.react('🕓') 7 | try { 8 | let app = await fetch(`https://apis-starlights-team.koyeb.app/starlight/like-downloader?url=${text}`, { headers: { 'Content-Type': 'application/json' }}) 9 | let json = await app.json() 10 | let video = json.links['no watermark'] 11 | await conn.sendFile(m.chat, video, 'samu.mp4', `${json.caption}`, m, null, rcanal) 12 | await m.react('✅') 13 | } catch { 14 | await m.react('✖️') 15 | }} 16 | handler.help = ['likeedl **'] 17 | handler.tags = ['downloader'] 18 | handler.command = /^(likeedl)$/i 19 | handler.register = true 20 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-mediafire.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args[0]) return conn.reply(m.chat, '🚩 Ingrese el enlace de un archivo de Mediafire.', m, rcanal) 5 | if (!args[0].match(/mediafire/gi)) return conn.reply(m.chat, 'El enlace deve ser de un archivo de Mediafire.', m, rcanal) 6 | await m.react('🕓') 7 | try { 8 | let { title, ext, aploud, size, dl_url } = await Starlights.mediafire(args[0]) 9 | let txt = `乂 *M E D I A F I R E - D O W N L O A D*\n\n` 10 | txt += ` ✩ *Nombre* : ${title}\n` 11 | txt += ` ✩ *Peso* : ${size}\n` 12 | txt += ` ✩ *Publicado* : ${aploud}\n` 13 | txt += ` ✩ *MimeType* : ${ext}\n\n` 14 | txt += `*- ↻ El archivo se esta enviando espera un momento, soy lenta. . .*` 15 | let img = await (await fetch('https://i.ibb.co/wLQFn7q/logo-mediafire.jpg')).buffer() 16 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 17 | await conn.sendFile(m.chat, dl_url, title, null, m, null, { mimetype: ext, asDocument: true }) 18 | await m.react('✅') 19 | } catch { 20 | try { 21 | let { title, ext, aploud, size, dl_url } = await Starlights.mediafireV2(args[0]) 22 | let txt = `乂 *M E D I A F I R E - D O W N L O A D*\n\n` 23 | txt += ` ✩ *Nombre* : ${title}\n` 24 | txt += ` ✩ *Peso* : ${size}\n` 25 | txt += ` ✩ *Publicado* : ${aploud}\n` 26 | txt += ` ✩ *MimeType* : ${ext}\n\n` 27 | txt += `*- ↻ El archivo se esta enviando espera un momento, soy lenta. . .*` 28 | let img = await (await fetch('https://i.ibb.co/wLQFn7q/logo-mediafire.jpg')).buffer() 29 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 30 | await conn.sendFile(m.chat, dl_url, title, null, m, null, { mimetype: ext, asDocument: true }) 31 | await m.react('✅') 32 | } catch { 33 | await m.react('✖️') 34 | }}} 35 | 36 | handler.help = ['mediafire'].map(v => v + ' **') 37 | handler.tags = ['downloader', 'premium'] 38 | handler.command = ['mediafire', 'mdfire', 'mf'] 39 | handler.premium = true 40 | 41 | export default handler 42 | -------------------------------------------------------------------------------- /plugins/downloader-pinterest.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper'; 2 | 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args[0]) return conn.reply(m.chat,`🚩 Ingrese un enlace de Pinterest\n\nEjemplo:\n> *${usedPrefix + command}* https://ar.pinterest.com/pin/588142032613788991/`, m); 5 | 6 | await m.react('🕓'); 7 | try { 8 | let { dl_url, quality, size, duration, url } = await Starlights.pinterestdl(args[0]); 9 | 10 | let txt = '`乂 P I N T E R E S T - D L`\n\n' 11 | txt += ` ✩ *Calidad* : ${quality}\n`; 12 | txt += ` ✩ *Tamaño* : ${size}\n`; 13 | txt += ` ✩ *Duracion* : ${duration}\n`; 14 | txt += ` ✩ *Url* : ${url}\n\n` 15 | txt += `> 🚩 *${textbot}*` 16 | 17 | 18 | await conn.sendMessage(m.chat, { video: { url: dl_url }, caption: txt, mimetype: 'video/mp4', fileName: `pinterest.mp4`}, {quoted: m }) 19 | await m.react('✅'); 20 | } catch { 21 | await m.react('✖️'); 22 | } 23 | }; 24 | 25 | handler.help = ['pinterestdl **']; 26 | handler.tags = ['downloader']; 27 | handler.command = ['pinterestdl', 'pindl']; 28 | handler.register = true; 29 | 30 | export default handler; 31 | -------------------------------------------------------------------------------- /plugins/downloader-spotifydl.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper'; 2 | import fetch from 'node-fetch'; 3 | 4 | let handler = async (m, { conn, text }) => { 5 | if (!text) return conn.reply(m.chat, '🚩 Ingresa el enlace de algún Track, Playlist o Álbum de Spotify.', m); 6 | 7 | let isSpotifyUrl = text.match(/^(https:\/\/open\.spotify\.com\/(album|track|playlist)\/[a-zA-Z0-9]+)/i); 8 | if (!isSpotifyUrl) return conn.reply(m.chat, '🚩 Ingresa un enlace válido de Track, Playlist o Álbum de Spotify.', m); 9 | 10 | await m.react('🕓') 11 | try { 12 | let { title, artist, album, thumbnail, dl_url } = await Starlights.spotifydl(text); 13 | let img = await (await fetch(thumbnail)).buffer(); 14 | 15 | let txt = `*乂 S P O T I F Y - D O W N L O A D*\n\n`; 16 | txt += ` ✩ *Título* : ${title}\n`; 17 | txt += ` ✩ *Álbum* : ${album}\n`; 18 | txt += ` ✩ *Artista* : ${artist}\n\n`; 19 | txt += `*- ↻ Los audios se están enviando, espera un momento. . .*`; 20 | 21 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal); 22 | await conn.sendMessage(m.chat, { audio: { url: dl_url }, fileName: `${title}.mp3`, mimetype: 'audio/mp4' }, { quoted: m }); 23 | 24 | await m.react('✅'); 25 | } catch { 26 | await m.react('✖️'); 27 | } 28 | }; 29 | 30 | handler.help = ['spotifydl']; 31 | handler.tags = ['downloader']; 32 | handler.command = ['spotifydl']; 33 | // handler.limit = 1; 34 | handler.register = true; 35 | 36 | export default handler; 37 | -------------------------------------------------------------------------------- /plugins/downloader-tiktok.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args || !args[0]) return conn.reply(m.chat, '🚩 Ingresa un enlace del vídeo de TikTok junto al comando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* https://vm.tiktok.com/ZMrFCX5jf/`, m, rcanal) 5 | if (!args[0].match(/tiktok/gi)) return conn.reply(m.chat, `Verifica que el link sea de TikTok`, m, rcanal).then(_ => m.react('✖️')) 6 | await m.react('🕓') 7 | try { 8 | let { title, author, duration, views, likes, comment, share, published, downloads, dl_url } = await Starlights.tiktokdl(args[0]) 9 | let txt = '`乂 T I K T O K - D O W N L O A D`\n\n' 10 | txt += ` ✩ *Título* : ${title}\n` 11 | txt += ` ✩ *Autor* : ${author}\n` 12 | txt += ` ✩ *Duración* : ${duration} segundos\n` 13 | txt += ` ✩ *Vistas* : ${views}\n` 14 | txt += ` ✩ *Likes* : ${likes}\n` 15 | txt += ` ✩ *Comentarios* : ${comment}\n` 16 | txt += ` ✩ *Compartidos* : ${share}\n` 17 | txt += ` ✩ *Publicado* : ${published}\n` 18 | txt += ` ✩ *Descargas* : ${downloads}\n\n` 19 | txt += `> 🚩 *${textbot}*` 20 | await conn.sendFile(m.chat, dl_url, 'tiktok.mp4', txt, m, null, rcanal) 21 | await m.react('✅') 22 | } catch { 23 | await m.react('✖️') 24 | }} 25 | handler.help = ['tiktok **'] 26 | handler.tags = ['downloader'] 27 | handler.command = /^(tiktok|ttdl|tiktokdl|tiktoknowm)$/i 28 | handler.register = true 29 | 30 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-tiktokuser.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, usedPrefix, command, text }) => { 4 | if (!text) return conn.reply(m.chat, '🚩 Ingresa el nombre de usuario de TikTok que deseas buscar.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* yuuzu_u_`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let data = await Starlights.tiktokuser(text) 8 | 9 | if (data && data.length > 0) { 10 | for (let i = 0; i < data.length; i++) { 11 | let video = data[i] 12 | 13 | let txt = '`乂 T I K T O K - D O W N L O A D`\n\n' 14 | txt += ` ✩ *Nro* : ${video.nro}\n` 15 | txt += ` ✩ *Título* : ${video.title}\n` 16 | txt += ` ✩ *Autor* : ${video.author}\n` 17 | txt += ` ✩ *Duración* : ${video.duration} segundos\n` 18 | txt += ` ✩ *Vistas* : ${video.views}\n` 19 | txt += ` ✩ *Likes* : ${video.likes}\n` 20 | txt += ` ✩ *Comentarios* : ${video.comments_count}\n` 21 | txt += ` ✩ *Compartidos* : ${video.share_count}\n` 22 | txt += ` ✩ *Publicado* : ${video.published}\n` 23 | txt += ` ✩ *Descargas* : ${video.download_count}\n\n` 24 | txt += `> 🚩 ${textbot}` 25 | 26 | await conn.sendFile(m.chat, video.dl_url, `video_${i + 1}.mp4`, txt, m, null, rcanal) 27 | } 28 | await m.react('✅') 29 | } else { 30 | await m.react('✖️') 31 | } 32 | } catch { 33 | await m.react('✖️') 34 | } 35 | } 36 | handler.tags = ['downloader'] 37 | handler.help = ['tiktokuser **'] 38 | handler.command = ['tiktokuser', 'tiktokus'] 39 | handler.register = true 40 | 41 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-tiktokvid.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, usedPrefix, command, text, args }) => { 4 | if (!text) return conn.reply(m.chat, '🚩 Ingresa un texto junto al comando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* Ai Hoshino Edit`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let { title, author, duration, views, likes, comments_count, share_count, download_count, published, dl_url } = await Starlights.tiktokvid(text) 8 | 9 | let txt = '`乂 T I K T O K - D O W N L O A D`\n\n' 10 | txt += ` ✩ *Título* : ${title}\n` 11 | txt += ` ✩ *Autor* : ${author}\n` 12 | txt += ` ✩ *Duración* : ${duration} segundos\n` 13 | txt += ` ✩ *Vistas* : ${views}\n` 14 | txt += ` ✩ *Likes* : ${likes}\n` 15 | txt += ` ✩ *Comentarios* : ${comments_count}\n` 16 | txt += ` ✩ *Compartidos* : ${share_count}\n` 17 | txt += ` ✩ *Publicado* : ${published}\n` 18 | txt += ` ✩ *Descargas* : ${download_count}\n\n` 19 | txt += `> 🚩 ${textbot}` 20 | 21 | await conn.sendFile(m.chat, dl_url, `thumbnail.mp4`, txt, m) 22 | await m.react('✅') 23 | 24 | } catch { 25 | await m.react('✖️') 26 | } 27 | } 28 | handler.help = ['tiktokvid **'] 29 | handler.tags = ['downloader'] 30 | handler.command = ['ttvid', 'tiktokvid'] 31 | handler.register = true 32 | 33 | export default handler -------------------------------------------------------------------------------- /plugins/fun-dance.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, command}) => { 2 | let pp = 'https://tinyurl.com/26djysdo' 3 | let pp2 = 'https://tinyurl.com/294oahv9' 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] 6 | else who = m.chat 7 | if (!who) return conn.reply(m.chat, '✦ Menciona al usuario con *@user*', m, rcanal) 8 | let name2 = conn.getName(who) 9 | let name = conn.getName(m.sender) 10 | 11 | await conn.sendMessage(m.chat, { video: { url: [pp, pp2].getRandom() }, gifPlayback: true, caption: `*${name}*` + ' está bailando con' + ` *${name2}*` + ' (ノ^ヮ^)ノ*:・゚✧' }, { quoted: m }) 12 | } 13 | handler.help = ['dance *<@user>*'] 14 | handler.tags = ['fun'] 15 | handler.command = ['dance', 'bailar'] 16 | export default handler -------------------------------------------------------------------------------- /plugins/fun-follar.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, command, text }) => { 3 | if (!text) return m.reply(`*Ingresa el @ o el nombre de la persona que quieras saber si te puedes ${command.replace('how', '')}*`) 4 | try { 5 | let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender 6 | m.reply(`🤤👅🥵 *𝐀𝐂𝐀𝐁𝐀𝐒 𝐃𝐄 𝐅𝐎𝐋𝐋𝐀𝐑𝐓𝐄𝐋@!*🥵👅🤤 7 | 8 | *𝙏𝙚 𝙖𝙘𝙖𝙗𝙖𝙨 𝙙𝙚 𝙛𝙤𝙡𝙡𝙖𝙧 𝙖 𝙡𝙖 𝙥𝙚𝙧𝙧𝙖 𝙙𝙚* *${text}* ⁩ *𝙖 𝟰 𝙥𝙖𝙩𝙖𝙨 𝙢𝙞𝙚𝙣𝙩𝙧𝙖𝙨 𝙩𝙚 𝙜𝙚𝙢𝙞𝙖 𝙘𝙤𝙢𝙤 𝙪𝙣𝙖 𝙢𝙖𝙡𝙙𝙞𝙩𝙖 𝙥𝙚𝙧𝙧𝙖 "𝐀𝐚𝐚𝐡.., 𝐀𝐚𝐚𝐡𝐡, 𝐬𝐢𝐠𝐮𝐞, 𝐧𝐨 𝐩𝐚𝐫𝐞𝐬, 𝐧𝐨 𝐩𝐚𝐫𝐞𝐬.." 𝙮 𝙡𝙖 𝙝𝙖𝙨 𝙙𝙚𝙟𝙖𝙙𝙤 𝙩𝙖𝙣 𝙧𝙚𝙫𝙚𝙣𝙩𝙖𝙙𝙖 𝙦𝙪𝙚 𝙣𝙤 𝙥𝙪𝙚𝙙𝙚 𝙨𝙤𝙨𝙩𝙚𝙣𝙚𝙧 𝙣𝙞 𝙨𝙪 𝙥𝙧𝙤𝙥𝙞𝙤 𝙘𝙪𝙚𝙧𝙥𝙤 𝙡𝙖 𝙢𝙖𝙡𝙙𝙞𝙩𝙖 𝙯𝙤𝙧𝙧𝙖!* 9 | 10 | *${text}* 11 | 🤤🥵 *¡𝐘𝐀 𝐓𝐄 𝐇𝐀𝐍 𝐅𝐎𝐋𝐋𝐀𝐃𝐎!* 🥵🤤`, null, { mentions: [user] }) 12 | } catch (err) { 13 | }} 14 | handler.help = ['follar'] 15 | handler.tags = ['fun'] 16 | handler.command = /^(Follar|violar)/i 17 | 18 | handler.register = true 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/fun-formarpareja.js: -------------------------------------------------------------------------------- 1 | let toM = a => '@' + a.split('@')[0] 2 | function handler(m, { groupMetadata }) { 3 | let ps = groupMetadata.participants.map(v => v.id) 4 | let a = ps.getRandom() 5 | let b 6 | do b = ps.getRandom() 7 | while (b === a) 8 | m.reply(`*${toM(a)}, 𝙳𝙴𝙱𝙴𝚁𝙸𝙰𝚂 𝙲𝙰𝚂𝙰𝚁𝚃𝙴 💍 𝙲𝙾𝙽 ${toM(b)}, 𝙷𝙰𝙲𝙴𝙽 𝚄𝙽𝙰 𝙱𝚄𝙴𝙽𝙰 𝙿𝙰𝚁𝙴𝙹𝙰 💓*`, null, { 9 | mentions: [a, b] 10 | })} 11 | handler.help = ['formarpareja'] 12 | handler.tags = ['fun'] 13 | handler.command = ['formarpareja','formarparejas'] 14 | handler.group = true 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/fun-gay.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, {conn}) => { 2 | let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | await conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/overlay/gay', { 4 | avatar: await conn.profilePictureUrl(who, 'image').catch((_) => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'error.png', '*Quien quiere violar a este gay?* 🏳️‍🌈', m) 6 | } 7 | handler.help = ['gay *@user*'] 8 | handler.tags = ['fun'] 9 | handler.command = /^(gay)$/i 10 | export default handler -------------------------------------------------------------------------------- /plugins/fun-iqtest.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.reply(m.chat,`${pickRandom(global.iq)}`, m) 3 | } 4 | handler.help = ['iqtest'] 5 | handler.tags = ['game'] 6 | handler.command = /^(iqtest)$/i 7 | handler.register = true 8 | 9 | 10 | handler.fail = null 11 | 12 | export default handler 13 | 14 | function pickRandom(list) { 15 | return list[Math.floor(list.length * Math.random())] 16 | } 17 | 18 | global.iq = [ 19 | 'Tu IQ es de: 1', 20 | 'Tu IQ es de: 14', 21 | 'Tu IQ es de: 23', 22 | 'Tu IQ es de: 35', 23 | 'Tu IQ es de: 41', 24 | 'Tu IQ es de: 50', 25 | 'Tu IQ es de: 67', 26 | 'Tu IQ es de: 72', 27 | 'Tu IQ es de: 86', 28 | 'Tu IQ es de: 99', 29 | 'Tu IQ es de: 150', 30 | 'Tu IQ es de: 340', 31 | 'Tu IQ es de: 423', 32 | 'Tu IQ es de: 500', 33 | 'Tu IQ es de: 676', 34 | 'Tu IQ es de: 780', 35 | 'Tu IQ es de: 812', 36 | 'Tu IQ es de: 945', 37 | 'Tu IQ es de: 1000', 38 | 'Tu IQ es de: Ilimitado!!', 39 | 'Tu IQ es de: 5000', 40 | 'Tu IQ es de: 7500', 41 | 'Tu IQ es de: 10000', 42 | ] 43 | -------------------------------------------------------------------------------- /plugins/fun-love.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, command, text }) => { 2 | let love = `*❤️❤️ MEDIDOR DE AMOR ❤️❤️* 3 | *El amor de ${text} por ti es de* *${Math.floor(Math.random() * 100)}%* *de un 100%* 4 | *Deberias pedirle que sea tu novia/o ?* 5 | `.trim() 6 | m.reply(love, null, { mentions: conn.parseMention(love) })} 7 | handler.help = ['love *@user*'] 8 | handler.tags = ['fun'] 9 | handler.command = /^(love)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/fun-nameninja.js: -------------------------------------------------------------------------------- 1 | function handler(m, { text }) { 2 | if (!text) return m.reply(`🚩 Ingresa tu nombre junto al comando.`) 3 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text 4 | m.reply(teks.replace(/[a-z]/gi, v => { 5 | return { 6 | 'a': 'ka', 7 | 'b': 'tsu', 8 | 'c': 'mi', 9 | 'd': 'te', 10 | 'e': 'ku', 11 | 'f': 'hi', 12 | 'g': 'ji', 13 | 'h': 'ri', 14 | 'i': 'ki', 15 | 'j': 'zu', 16 | 'k': 'me', 17 | 'l': 'ta', 18 | 'm': 'rin', 19 | 'n': 'to', 20 | 'o': 'mo', 21 | 'p': 'no', 22 | 'q': 'ke', 23 | 'r': 'shi', 24 | 's': 'ari', 25 | 't': 'chi', 26 | 'u': 'do', 27 | 'v': 'ru', 28 | 'w': 'mei', 29 | 'x': 'na', 30 | 'y': 'fu', 31 | 'z': 'mori' 32 | }[v.toLowerCase()] || v 33 | })) 34 | } 35 | handler.help = ['nombreninja **'] 36 | handler.tags = ['fun'] 37 | handler.command = ['nombreninja'] 38 | handler.register = true 39 | 40 | export default handler 41 | -------------------------------------------------------------------------------- /plugins/fun-pregunta.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, text }) => m.reply(` 2 | *⁉️ 𝐏𝐑𝐄𝐆𝐔𝐍𝐓𝐀𝐒 ⁉️* 3 | 4 | *𝙿𝚁𝙴𝙶𝚄𝙽𝚃𝙰:* ${text} 5 | *𝚁𝙴𝚂𝙿𝚄𝙴𝚂𝚃𝙰:* ${['Si','Tal vez sí','Posiblemente','Probablemente no','No','Imposible'].getRandom()} 6 | `.trim(), null, m.mentionedJid ? { 7 | mentions: m.mentionedJid 8 | } : {}) 9 | handler.help = ['pregunta **'] 10 | handler.tags = ['fun'] 11 | handler.command = /^pregunta|preguntas|apakah$/i 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/fun-simi.js: -------------------------------------------------------------------------------- 1 | import translate from '@vitalets/google-translate-api' 2 | import fetch from 'node-fetch' 3 | const handler = async (m, {text, command, args, usedPrefix}) => { 4 | if (!text) return m.reply(`*• Ingresa un texto*\n\n*Ejemplo:*\n*${usedPrefix + command}* Hola bot`) 5 | try { 6 | const api = await fetch('https://api.simsimi.net/v2/?text=' + text + '&lc=es'); 7 | const resSimi = await api.json(); 8 | m.reply(resSimi.success); 9 | } catch { 10 | try { 11 | if (text.includes('Hola')) text = text.replace('Hola', 'Hello'); 12 | if (text.includes('hola')) text = text.replace('hola', 'Hello'); 13 | if (text.includes('HOLA')) text = text.replace('HOLA', 'HELLO'); 14 | const reis = await fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=' + text); 15 | const resu = await reis.json(); 16 | const nama = m.pushName || '1'; 17 | const api = await fetch('http://api.brainshop.ai/get?bid=153868&key=rcKonOgrUFmn5usX&uid=' + nama + '&msg=' + resu[0][0][0]); 18 | const res = await api.json(); 19 | const reis2 = await fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=' + res.cnt); 20 | const resu2 = await reis2.json(); 21 | m.reply(resu2[0][0][0]); 22 | } catch { 23 | throw `「 *ERROR* 」\n\nOcurrió un *Error*`; 24 | } 25 | } 26 | }; 27 | handler.help = ['simi'] 28 | handler.tags = ['fun']; 29 | handler.command = /^((sim)?simi|alexa|cortana|bot)$/i; 30 | export default handler; -------------------------------------------------------------------------------- /plugins/fun-simi.js.bak: -------------------------------------------------------------------------------- 1 | import translate from '@vitalets/google-translate-api' 2 | import fetch from 'node-fetch' 3 | const handler = async (m, {text, command, args, usedPrefix}) => { 4 | if (!text) return m.reply(`*• Ingresa un texto*\n\n*Ejemplo:*\n*${usedPrefix + command}* Hola bot`) 5 | try { 6 | const api = await fetch('https://api.simsimi.net/v2/?text=' + text + '&lc=es'); 7 | const resSimi = await api.json(); 8 | m.reply(resSimi.success); 9 | } catch { 10 | try { 11 | if (text.includes('Hola')) text = text.replace('Hola', 'Hello'); 12 | if (text.includes('hola')) text = text.replace('hola', 'Hello'); 13 | if (text.includes('HOLA')) text = text.replace('HOLA', 'HELLO'); 14 | const reis = await fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=' + text); 15 | const resu = await reis.json(); 16 | const nama = m.pushName || '1'; 17 | const api = await fetch('http://api.brainshop.ai/get?bid=153868&key=rcKonOgrUFmn5usX&uid=' + nama + '&msg=' + resu[0][0][0]); 18 | const res = await api.json(); 19 | const reis2 = await fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=' + res.cnt); 20 | const resu2 = await reis2.json(); 21 | m.reply(resu2[0][0][0]); 22 | } catch { 23 | throw `*Miku Bot😺* | 「 *ERROR* 」\n\nOcurrió un *Error*`; 24 | } 25 | } 26 | }; 27 | handler.help = ['simi'] 28 | handler.tags = ['fun']; 29 | handler.command = /^((sim)?simi|alexa|cortana|bot)$/i; 30 | export default handler; -------------------------------------------------------------------------------- /plugins/fun-top.js: -------------------------------------------------------------------------------- 1 | import util from 'util' 2 | import path from 'path' 3 | let user = a => '@' + a.split('@')[0] 4 | function handler(m, { groupMetadata, command, conn, text, usedPrefix}) { 5 | if (!text) return m.reply(`Ejemplo de uso:\n.top *texto*`) 6 | let ps = groupMetadata.participants.map(v => v.id) 7 | let a = ps.getRandom() 8 | let b = ps.getRandom() 9 | let c = ps.getRandom() 10 | let d = ps.getRandom() 11 | let e = ps.getRandom() 12 | let f = ps.getRandom() 13 | let g = ps.getRandom() 14 | let h = ps.getRandom() 15 | let i = ps.getRandom() 16 | let j = ps.getRandom() 17 | let k = Math.floor(Math.random() * 70); 18 | let x = `${pickRandom(['🤓','😅','😂','😳','😎', '🥵', '😱', '🤑', '🙄', '💩','🍑','🤨','🥴','🔥','👇🏻','😔', '👀','🌚'])}` 19 | let l = Math.floor(Math.random() * x.length); 20 | let vn = `https://hansxd.nasihosting.com/sound/sound${k}.mp3` 21 | let top = `*${x} Top 10 ${text} ${x}* 22 | 23 | *1. ${user(a)}* 24 | *2. ${user(b)}* 25 | *3. ${user(c)}* 26 | *4. ${user(d)}* 27 | *5. ${user(e)}* 28 | *6. ${user(f)}* 29 | *7. ${user(g)}* 30 | *8. ${user(h)}* 31 | *9. ${user(i)}* 32 | *10. ${user(j)}*` 33 | m.reply(top, null, { mentions: [a, b, c, d, e, f, g, h, i, j]}) 34 | } 35 | handler.help = handler.command = ['top'] 36 | handler.tags = ['fun'] 37 | handler.group = true 38 | export default handler 39 | function pickRandom(list) { 40 | return list[Math.floor(Math.random() * list.length)]} 41 | -------------------------------------------------------------------------------- /plugins/game-acertijo.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | 3 | let cooldown = 60000 4 | let poin = 450 5 | 6 | let handler = async (m, { conn, usedPrefix }) => { 7 | let now = new Date() 8 | let lastUsage = global.db.data.users[m.sender].lastAcet || 0 9 | if (now - lastUsage < cooldown) { 10 | let remainingTime = cooldown - (now - lastUsage) 11 | return m.reply(`⏱️ ¡Espera ${msToTime(remainingTime)} antes de volver a usar el comando!`) 12 | } 13 | conn.tekateki = conn.tekateki ? conn.tekateki : {} 14 | let id = m.chat 15 | if (id in conn.tekateki) { 16 | conn.reply(m.chat, 'Todavía hay acertijos sin responder en este chat', conn.tekateki[id][0]) 17 | return null 18 | } 19 | let tekateki = JSON.parse(fs.readFileSync(`./plugins/_acertijo.json`)) 20 | let json = tekateki[Math.floor(Math.random() * tekateki.length)] 21 | let _clue = json.response 22 | let clue = _clue.replace(/[A-Za-z]/g, '_') 23 | let caption = ` 24 | ⷮ *${json.question}* 25 | *• Tiempo:* ${(cooldown / 1000).toFixed(2)} segundos 26 | *• Bono:* +${poin} Exp 27 | `.trim() 28 | conn.tekateki[id] = [ 29 | await conn.reply(m.chat, caption, m), json, poin, 30 | setTimeout(async () => { 31 | if (conn.tekateki[id]) { 32 | await conn.reply(m.chat, `Se acabó el tiempo!\n*Respuesta:* ${json.response}`, conn.tekateki[id][0]) 33 | delete conn.tekateki[id] 34 | } 35 | }, cooldown) 36 | ] 37 | global.db.data.users[m.sender].lastAcet = now 38 | } 39 | handler.help = ['acertijo'] 40 | handler.tags = ['game'] 41 | handler.command = /^(acertijo|acert|pregunta|adivinanza|tekateki)$/i 42 | export default handler 43 | 44 | function msToTime(duration) { 45 | var seconds = Math.floor((duration / 1000) % 60), 46 | minutes = Math.floor((duration / (1000 * 60)) % 60) 47 | 48 | minutes = (minutes < 10) ? "0" + minutes : minutes 49 | seconds = (seconds < 10) ? "0" + seconds : seconds 50 | 51 | return minutes + " Minuto(s) " + seconds + " Segundo(s)" 52 | } -------------------------------------------------------------------------------- /plugins/game-acertijo_resp.js: -------------------------------------------------------------------------------- 1 | import similarity from 'similarity' 2 | const threshold = 0.72 3 | let handler = m => m 4 | handler.before = async function (m) { 5 | let id = m.chat 6 | if (!m.quoted || !m.quoted.fromMe || !m.quoted.isBaileys || !/^ⷮ/i.test(m.quoted.text)) return !0 7 | this.tekateki = this.tekateki ? this.tekateki : {} 8 | if (!(id in this.tekateki)) return m.reply('Ese acertijo ya ha terminado!') 9 | if (m.quoted.id == this.tekateki[id][0].id) { 10 | let json = JSON.parse(JSON.stringify(this.tekateki[id][1])) 11 | if (m.text.toLowerCase() == json.response.toLowerCase().trim()) { 12 | global.db.data.users[m.sender].exp += this.tekateki[id][2] 13 | m.reply(`*Respuesta correcta!*\n+${this.tekateki[id][2]} Exp`) 14 | clearTimeout(this.tekateki[id][3]) 15 | delete this.tekateki[id] 16 | } else if (similarity(m.text.toLowerCase(), json.response.toLowerCase().trim()) >= threshold) m.reply(`Casi lo logras!`) 17 | else m.reply('Respuesta incorrecta!')} 18 | return !0 19 | } 20 | handler.exp = 0 21 | export default handler -------------------------------------------------------------------------------- /plugins/game-math_answer.js: -------------------------------------------------------------------------------- 1 | // 2 | 3 | let handler = m => m 4 | handler.before = async function (m) { 5 | if (!/^-?[0-9]+(\.[0-9]+)?$/.test(m.text)) return !0 6 | let id = m.chat 7 | if (!m.quoted || !m.quoted.fromMe || !m.text || !/^▢ CUANTO ES/i.test(m.quoted.text)) return !0 8 | this.math = this.math ? this.math : {} 9 | if (!(id in this.math)) return this.reply(m.chat, 'El Juego a terminado', m) 10 | if (m.quoted.id == this.math[id][0].id) { 11 | let math = JSON.parse(JSON.stringify(this.math[id][1])) 12 | if (m.text == math.result) { 13 | global.db.data.users[m.sender].exp += math.bonus 14 | clearTimeout(this.math[id][3]) 15 | delete this.math[id] 16 | m.reply(`✅ *Respuesta correcta!*\n\n‣ Ganaste : *+${math.bonus} XP*`) 17 | } else { 18 | if (--this.math[id][2] == 0) { 19 | clearTimeout(this.math[id][3]) 20 | delete this.math[id] 21 | m.reply(`*Se acabó las oportunidades*\n\n Respuesta : *${math.result}*`) 22 | } else m.reply(`❎ *Respuesta incorrecta*\n\nTodavia hay ${this.math[id][2]} oportunidades`) 23 | } 24 | } 25 | return !0 26 | } 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/group-antiBot.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | let chat = global.db.data.chats[m.chat] || {}; 3 | if (args[0] === 'on') { 4 | if (chat.antiBot) return conn.reply(m.chat, 'AntiBot ya está activado.', m, rcanal) 5 | chat.antiBot = true 6 | await conn.reply(m.chat, '🚩 AntiBot activado para este grupo.', m, rcanal) 7 | } else if (args[0] === 'off') { 8 | if (!chat.antiBot) return conn.reply(m.chat, 'AntiBot ya está desactivado.', m, rcanal) 9 | chat.antiBot = false 10 | await conn.reply(m.chat, '🚩 AntiBot desactivado para este grupo.', m, rcanal) 11 | } else { 12 | await conn.reply(m.chat, `*Configurar AntiBot*. Escriba "on" para activar y "off" para desactivar.`, m, rcanal) 13 | } 14 | } 15 | handler.help = ['antibot **'] 16 | handler.tags = ['group'] 17 | handler.command = ['antibot'] 18 | handler.use = ['on/off'] 19 | handler.group = true 20 | handler.admin = true 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/group-banchat.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, isAdmin, isROwner }) => { 2 | if (!(isAdmin || isROwner)) return dfail('admin', m, conn) 3 | global.db.data.chats[m.chat].isBanned = true 4 | await conn.reply(m.chat, `🚩 Chat Baneado con exito.`, m, rcanal) 5 | await m.react('✅') 6 | } 7 | handler.help = ['banearbot'] 8 | handler.tags = ['group'] 9 | handler.command = ['banearbot', 'banchat'] 10 | handler.group = true 11 | export default handler -------------------------------------------------------------------------------- /plugins/group-checkexpired.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | 4 | if (global.db.data.chats[m.chat].expired < 1) return m.reply(`🚩 Este grupo no está configurado para caducar.`) 5 | let who 6 | if (m.isGroup) who = args[1] ? args[1] : m.chat 7 | else who = args[1] 8 | 9 | var nDays = 86400000 * args[0] 10 | var now = new Date() * 1 11 | 12 | m.reply(`🚩 Su alquiler expira en *${msToDate(global.db.data.chats[who].expired - now)}.*\n\n_Despues el bot saldrá automáticamente del grupo._`) 13 | 14 | } 15 | handler.help = ['checkexpired'] 16 | handler.tags = ['group'] 17 | handler.command = /^(checkexpired|cexpired)$/i 18 | handler.group = true 19 | 20 | export default handler 21 | 22 | function msToDate(ms) { 23 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 24 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 25 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 26 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 27 | return [d, ' *Días*\n ', h, ' *Horas*\n ', m, ' *Minutos*\n ', s, ' *Segundos* '].map(v => v.toString().padStart(2, 0)).join('') 28 | } -------------------------------------------------------------------------------- /plugins/group-delete.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, command }) => { 2 | 3 | if (!m.quoted) return conn.reply(m.chat, `🚩 Responde al mensaje que deseas eliminar.`, m, rcanal) 4 | try { 5 | let delet = m.message.extendedTextMessage.contextInfo.participant 6 | let bang = m.message.extendedTextMessage.contextInfo.stanzaId 7 | return conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }}) 8 | } catch { 9 | return conn.sendMessage(m.chat, { delete: m.quoted.vM.key }) 10 | } 11 | } 12 | handler.help = ['delete'] 13 | handler.tags = ['group'] 14 | handler.command = /^del(ete)?$/i 15 | handler.group = false 16 | handler.admin = true 17 | handler.botAdmin = true 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/group-demote.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn,usedPrefix, command, text }) => { 2 | if(isNaN(text) && !text.match(/@/g)){ 3 | 4 | }else if(isNaN(text)) { 5 | var number = text.split`@`[1] 6 | }else if(!isNaN(text)) { 7 | var number = text 8 | } 9 | if(!text && !m.quoted) return conn.reply(m.chat, `🚩 Menciona a una persona.`, m, rcanal) 10 | if(number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `🚩 Menciona a una persona.`, m, rcanal) 11 | try { 12 | if(text) { 13 | var user = number + '@s.whatsapp.net' 14 | } else if(m.quoted.sender) { 15 | var user = m.quoted.sender 16 | } else if(m.mentionedJid) { 17 | var user = number + '@s.whatsapp.net' 18 | } 19 | } catch (e) { 20 | } finally { 21 | conn.groupParticipantsUpdate(m.chat, [user], 'demote') 22 | await conn.reply(m.chat, `🚩 Usuario degradado.`, m, rcanal) 23 | await m.react('✅') 24 | } 25 | 26 | } 27 | handler.help = ['demote *@tag*'] 28 | handler.tags = ['group'] 29 | handler.command = ['demote', 'degradar'] 30 | handler.group = true 31 | handler.admin = true 32 | handler.botAdmin = true 33 | handler.fail = null 34 | 35 | export default handler 36 | -------------------------------------------------------------------------------- /plugins/group-groupInfo.js: -------------------------------------------------------------------------------- 1 | // 2 | 3 | let handler = async (m, { conn, participants, groupMetadata }) => { 4 | const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/avatar_contact.png' 5 | const { isBanned, welcome, detect, sWelcome, sBye, sPromote, sDemote, antiLink, delete: del } = global.db.data.chats[m.chat] 6 | const groupAdmins = participants.filter(p => p.admin) 7 | const listAdmin = groupAdmins.map((v, i) => `${i + 1}. @${v.id.split('@')[0]}`).join('\n') 8 | const owner = groupMetadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || m.chat.split`-`[0] + '@s.whatsapp.net' 9 | let text = ` 10 | ╭─「 *INFO DE GRUPO* 」 11 | ║❥ *ID:* ${groupMetadata.id} 12 | ║❥ *Nombre:* ${groupMetadata.subject} 13 | ║❥ *Miembros:* ${participants.length} 14 | ║❥ *Dueño de Grupo:* @${owner.split('@')[0]} 15 | ║❥ *Admins:* 16 | ${listAdmin} 17 | ║❥ *Configuración de grupo:* 18 | ║❥ • ${isBanned ? '✅' : '❎'} Baneado 19 | ║❥ • ${welcome ? '✅' : '❎'} Bienvenida 20 | ║❥ • ${detect ? '✅' : '❎'} Detector 21 | ║❥ • ${del ? '❎' : '✅'} Anti Delete 22 | ║❥ • ${antiLink ? '✅' : '❎'} Anti Link WhatsApp 23 | ╰──── 24 | *Configuración de mensajes:* 25 | • Bienvenida: ${sWelcome} 26 | • Despedida: ${sBye} 27 | • Promovidos: ${sPromote} 28 | • Degradados: ${sDemote} 29 | 30 | *Descripción* : 31 | • ${groupMetadata.desc?.toString() || 'desconocido'} 32 | `.trim() 33 | conn.sendFile(m.chat, pp, 'pp.jpg', text, m, false, { mentions: [...groupAdmins.map(v => v.id), owner] }) 34 | } 35 | 36 | handler.help = ['infogp'] 37 | handler.tags = ['group'] 38 | handler.command = ['infogrupo', 'groupinfo', 'infogp'] 39 | handler.group = true 40 | 41 | export default handler 42 | -------------------------------------------------------------------------------- /plugins/group-invite.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, text, usedPrefix, command }) => { 2 | if (!text) return conn.reply(m.chat, `🚩 Ingrese el número al que quiere enviar una invitación al grupo.\n\n*Ejemplo:*\n*${usedPrefix + command}* 5218261275256`, m, rcanal) 3 | if (text.includes('+')) return conn.reply(`🚩 Ingrese el número todo junto sin el *+*`, m, rcanal) 4 | if (isNaN(text)) return conn.reply(m.chat, `*Ingrese sólo números más su código de país sin espacios*`, m, rcanal) 5 | let group = m.chat 6 | let link = 'https://chat.whatsapp.com/' + await conn.groupInviteCode(group) 7 | 8 | await conn.reply(text+'@s.whatsapp.net', `🚩 *INVITACIÓN A GRUPO*\n\nUn usuario te invitó a unirte a este grupo \n\n${link}`, m, {mentions: [m.sender]}) 9 | m.reply(`Se envió un enlace de invitación al usuario.`) 10 | 11 | } 12 | handler.help = ['invite *<521>*'] 13 | handler.tags = ['group'] 14 | handler.command = ['invite','invitar'] 15 | handler.group = true 16 | handler.admin = false 17 | handler.botAdmin = true 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/group-kick.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, participants, usedPrefix, command, isROwner }) => { 2 | 3 | let kickte = `🚩 Menciona al usuario que deseas eliminar.` 4 | 5 | if (!m.mentionedJid[0] && !m.quoted) return m.reply(kickte, m.chat, { mentions: conn.parseMention(kickte)}) 6 | let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender 7 | let owr = m.chat.split`-`[0] 8 | await conn.groupParticipantsUpdate(m.chat, [user], 'remove') 9 | m.reply(`🚩 Usuario eliminado.`) 10 | m.reply(`Lo siento, acabas de ser eliminado del grupo.`, user) 11 | } 12 | 13 | handler.help = ['kick *@user*'] 14 | handler.tags = ['group'] 15 | handler.command = ['kick', 'expulsar'] 16 | handler.admin = true 17 | handler.group = true 18 | handler.botAdmin = true 19 | 20 | export default handler -------------------------------------------------------------------------------- /plugins/group-link.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@whiskeysockets/baileys' 2 | let handler = async (m, { conn, args }) => { 3 | let group = m.chat 4 | if (/^[0-9]{5,16}-?[0-9]+@g\.us$/.test(args[0])) group = args[0] 5 | let groupMetadata = await conn.groupMetadata(group) 6 | if (!groupMetadata) return m.react('✖️') 7 | if (!('participants' in groupMetadata)) return m.react('✖️') 8 | let me = groupMetadata.participants.find(user => areJidsSameUser(user.id, conn.user.id)) 9 | if (!me) return m.reply('*No estoy en ese grupo :(*') 10 | if (!me.admin) return m.reply('*No soy administrador*') 11 | m.reply('https://chat.whatsapp.com/' + await conn.groupInviteCode(group)) 12 | } 13 | handler.help = ['link'] 14 | handler.tags = ['group'] 15 | handler.command = ['link', 'linkgroup'] 16 | handler.group = true 17 | export default handler -------------------------------------------------------------------------------- /plugins/group-poll.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command, participants }) => { 2 | text = text.split(`|`) 3 | if (!text || text.length == 1) return conn.reply(m.chat, `🚩 Ingresa la pregunta y opciones.\n\n*Ejemplo:*\n*${usedPrefix + command}* Elaina Ai es la mejor bot de WhatsApp?|si|no`, m, rcanal) 4 | if (text.length > 1 && text.length < 3) return m.reply(`Mínimo *2* opciones.`) 5 | if (text.length > 13) return m.reply(`Máximo *12* opciones`) 6 | let array = [] 7 | text.slice(1).forEach(function(i) { array.push(i) }) 8 | await conn.sendPoll(m.chat, text[0], array) 9 | } 10 | handler.tags = ['group'] 11 | handler.help = ['encuesta **'] 12 | handler.command = ['encuesta', 'poll'] 13 | handler.group = true 14 | handler.register = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/group-poll.js.bak: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command, participants }) => { 2 | text = text.split(`|`) 3 | if (!text || text.length == 1) return conn.reply(m.chat, `🚩 Ingresa la pregunta y opciones.\n\n*Ejemplo:*\n*${usedPrefix + command}* Ai Hoshino es el mejor bot de WhatsApp?|si|no`, m, rcanal) 4 | if (text.length > 1 && text.length < 3) return m.reply(`Mínimo *2* opciones.`) 5 | if (text.length > 13) return m.reply(`Máximo *12* opciones`) 6 | let array = [] 7 | text.slice(1).forEach(function(i) { array.push(i) }) 8 | await conn.sendPoll(m.chat, text[0], array) 9 | } 10 | handler.tags = ['group'] 11 | handler.help = ['encuesta **'] 12 | handler.command = ['encuesta', 'poll'] 13 | handler.group = true 14 | handler.register = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/group-promote.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn,usedPrefix, command, text}) => { 2 | if(isNaN(text) && !text.match(/@/g)){ 3 | 4 | }else if(isNaN(text)) { 5 | var number = text.split`@`[1] 6 | }else if(!isNaN(text)) { 7 | var number = text 8 | } 9 | if(!text && !m.quoted) return conn.reply(m.chat, `🚩 Menciona a una persona.`, m, rcanal) 10 | if(number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `🚩 Menciona a una persona.`, m, rcanal) 11 | try { 12 | if(text) { 13 | var user = number + '@s.whatsapp.net' 14 | } else if(m.quoted.sender) { 15 | var user = m.quoted.sender 16 | } else if(m.mentionedJid) { 17 | var user = number + '@s.whatsapp.net' 18 | } 19 | } catch (e) { 20 | } finally { 21 | conn.groupParticipantsUpdate(m.chat, [user], 'promote') 22 | await conn.reply(m.chat, `🚩 Usuario promovido.`, m, rcanal) 23 | await m.react('✅') 24 | }} 25 | handler.help = ['promote *@user*'] 26 | handler.tags = ['group'] 27 | handler.command = ['promote', 'promover'] 28 | handler.group = true 29 | handler.admin = true 30 | handler.botAdmin = true 31 | handler.fail = null 32 | 33 | export default handler -------------------------------------------------------------------------------- /plugins/group-resetLink.js: -------------------------------------------------------------------------------- 1 | let handler = async(m, { conn }) => { 2 | let revoke = await conn.groupRevokeInvite(m.chat) 3 | await conn.reply(m.chat, `🚩 Se restableció con éxito el link del grupo.\n*-* Link Nuevo: ${'https://chat.whatsapp.com/' + revoke}`, m)} 4 | handler.help = ['resetlink'] 5 | handler.tags = ['group'] 6 | handler.command = ['revoke', 'resetlink', 'anularlink'] 7 | handler.group = true 8 | handler.admin = true 9 | handler.botAdmin = true 10 | export default handler -------------------------------------------------------------------------------- /plugins/group-settings.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | let isClose = { 3 | 'abrir': 'not_announcement', 4 | 'cerrar': 'announcement', 5 | }[(args[0] || '')] 6 | if (isClose === undefined) 7 | return conn.reply(`🚩 Elija una opción.\n\n*${usedPrefix + command}* abrir\n${usedPrefix + command}* cerrar`, m, rcanal) 8 | await conn.groupSettingUpdate(m.chat, isClose) 9 | } 10 | handler.help = ['group *abrir/cerrar*'] 11 | handler.tags = ['group'] 12 | handler.command = ['group', 'grupo'] 13 | handler.admin = true 14 | handler.botAdmin = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/group-totag.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, participants}) => { 2 | 3 | let users = participants.map(u => u.id).filter(v => v !== conn.user.jid) 4 | if (!m.quoted) return m.reply(`🚩 Responde a un mensaje.`) 5 | conn.sendMessage(m.chat, { forward: m.quoted.fakeObj, mentions: users } ) 6 | } 7 | 8 | handler.help = ['tag'] 9 | handler.tags = ['group'] 10 | handler.command = /^(totag|tag)$/i 11 | 12 | handler.admin = true 13 | handler.group = true 14 | 15 | export default handler -------------------------------------------------------------------------------- /plugins/group-unbanchat.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, isAdmin, isROwner} ) => { 2 | if (!(isAdmin || isROwner)) return dfail('admin', m, conn) 3 | global.db.data.chats[m.chat].isBanned = false 4 | await conn.reply(m.chat, '🚩 Bot activo en este grupo.', m, rcanal) 5 | await m.react('✅') 6 | } 7 | handler.help = ['desbanearbot'] 8 | handler.tags = ['group'] 9 | handler.command = ['desbanearbot', 'unbanchat'] 10 | handler.group = true 11 | export default handler -------------------------------------------------------------------------------- /plugins/img-image.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return m.reply('🚩 Ingresa el nombre de la imágen que estas buscando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* Ai Hoshino Icons`) 5 | const prohibited = ['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', 'cogiendo', 'cepesito', 'hot', 'buceta', 'xxx', 'rule', 'r u l e'] 6 | if (prohibited.some(word => m.text.toLowerCase().includes(word))) return m.reply('Deja de buscar eso puto enfermo de mierda, que por eso no tienes novia.').then(_ => m.react('✖️')) 7 | await m.react('🕓') 8 | try { 9 | let { dl_url } = await Starlights.GoogleImage(text) 10 | await conn.sendFile(m.chat, dl_url, 'thumbnail.jpg', `*» Resultado* : ${text}`, m, null, rcanal) 11 | await m.react('✅') 12 | } catch { 13 | await m.react('✖️') 14 | }} 15 | handler.help = ['imagen **'] 16 | handler.tags = ['img'] 17 | handler.command = ['image', 'gimage', 'imagen'] 18 | handler.register = true 19 | //handler.limit = 1 20 | export default handler -------------------------------------------------------------------------------- /plugins/img-megumin.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | await m.react('🕓') 5 | try { 6 | let res = await fetch('https://api.waifu.pics/sfw/megumin') 7 | if (!res.ok) return 8 | let json = await res.json() 9 | if (!json.url) return 10 | await conn.sendFile(m.chat, json.url, 'thumbnail.jpg', listo, m) 11 | await m.react('✅') 12 | } catch { 13 | await m.react('✖️') 14 | }} 15 | handler.help = ['megumin'] 16 | handler.tags = ['img'] 17 | handler.command = ['megumin'] 18 | //handler.limit = 1 19 | handler.register = true 20 | 21 | export default handler -------------------------------------------------------------------------------- /plugins/img-neko.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | await m.react('🕓') 5 | try { 6 | let res = await fetch('https://api.waifu.pics/sfw/neko') 7 | if (!res.ok) return 8 | let json = await res.json() 9 | if (!json.url) return 10 | await conn.sendFile(m.chat, json.url, 'thumbnail.jpg', listo, m) 11 | await m.react('✅') 12 | } catch { 13 | await m.react('✖️') 14 | }} 15 | handler.help = ['neko'] 16 | handler.tags = ['img'] 17 | handler.command = ['neko'] 18 | //handler.limit = 1 19 | handler.register = true 20 | 21 | export default handler -------------------------------------------------------------------------------- /plugins/img-neko2.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async(m, { conn }) => { 4 | try { 5 | await m.react('🕓') 6 | let response = await fetch('https://nekos.life/api/v2/img/neko') 7 | let data = await response.json() 8 | let imageUrl = data.url 9 | await conn.sendFile(m.chat, imageUrl, 'thumbnail.jpg', listo, m) 10 | await m.react('✅') 11 | } catch { 12 | await m.react('✖️') 13 | }} 14 | handler.command = ['neko2'] 15 | handler.tags = ['img'] 16 | handler.help = ['neko2'] 17 | //handler.limit = 1 18 | handler.register = true 19 | 20 | export default handler -------------------------------------------------------------------------------- /plugins/img-pinterest.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return m.reply('🚩 Ingresa el nombre de la imágen que estas buscando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* Elaina Icons`) 5 | await m.react('🕓') 6 | try { 7 | let { dl_url } = await Starlights.pinterest(text) 8 | await conn.sendFile(m.chat, dl_url, 'thumbnail.jpg', `*» Resultado* : ${text}`, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['pinterest **'] 14 | handler.tags = ['img'] 15 | handler.command = ['pinterest'] 16 | handler.register = true 17 | //handler.limit = 1 18 | export default handler -------------------------------------------------------------------------------- /plugins/img-pinterest.js.bak: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return m.reply('🚩 Ingresa el nombre de la imágen que estas buscando.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* Ai Hoshino Icons`) 5 | await m.react('🕓') 6 | try { 7 | let { dl_url } = await Starlights.pinterest(text) 8 | await conn.sendFile(m.chat, dl_url, 'thumbnail.jpg', `*» Resultado* : ${text}`, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['pinterest **'] 14 | handler.tags = ['img'] 15 | handler.command = ['pinterest'] 16 | handler.register = true 17 | //handler.limit = 1 18 | export default handler -------------------------------------------------------------------------------- /plugins/img-ppcouple.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | try { 5 | await m.react('🕓') 6 | let { women, man } = await Starlights.ppcouple("xd") 7 | await conn.sendFile(m.chat, women, 'thumbnail.jpg', `*» Chica*`, m, null, rcanal) 8 | await conn.sendFile(m.chat, man, 'thumbnail.jpg', `*» Chico*`, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['ppcouple'] 14 | handler.tags = ['img'] 15 | handler.command = ['ppcouple', 'par'] 16 | handler.register = true 17 | //handler.limit = 1 18 | export default handler -------------------------------------------------------------------------------- /plugins/img-shinobu.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | await m.react('🕓') 5 | try { 6 | let res = await fetch('https://api.waifu.pics/sfw/shinobu') 7 | if (!res.ok) return 8 | let json = await res.json() 9 | if (!json.url) return 10 | await conn.sendFile(m.chat, json.url, 'thumbnail.jpg', listo, m) 11 | await m.react('✅') 12 | } catch { 13 | await m.react('✖️') 14 | }} 15 | handler.help = ['shinobu'] 16 | handler.tags = ['img'] 17 | handler.command = ['shinobu'] 18 | //handler.limit = 1 19 | handler.register = true 20 | 21 | export default handler -------------------------------------------------------------------------------- /plugins/img-waifu.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | await m.react('🕓') 5 | try { 6 | let res = await fetch('https://api.waifu.pics/sfw/waifu') 7 | if (!res.ok) return 8 | let json = await res.json() 9 | if (!json.url) return 10 | await conn.sendFile(m.chat, json.url, 'thumbnail.jpg', listo, m, null, rcanal) 11 | await m.react('✅') 12 | } catch { 13 | await m.react('✖️') 14 | }} 15 | handler.help = ['waifu'] 16 | handler.tags = ['img'] 17 | handler.command = ['waifu'] 18 | //handler.limit = 1 19 | handler.register = true 20 | 21 | 22 | export default handler -------------------------------------------------------------------------------- /plugins/img-wallpaper.js: -------------------------------------------------------------------------------- 1 | import { googleImage, pinterest } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return conn.reply(m.chat, `🚩 Ingresa un texto junto al comando.\n\n*Ejemplo:*\n*${usedPrefix + command}* Elaina`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let res = await (await googleImage('wallpaper' + text)).getRandom() 8 | await conn.sendFile(m.chat, res, 'thumbnail.jpg', `*» Wallpaper* : ${text ? text.capitalize() : false}`, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['wallpaper **'] 14 | handler.tags = ['img'] 15 | handler.command = ['wallpaper', 'wallpapers', 'wp'] 16 | handler.register = true 17 | //handler.limit = 1 18 | export default handler -------------------------------------------------------------------------------- /plugins/img-wallpaper.js.bak: -------------------------------------------------------------------------------- 1 | import { googleImage, pinterest } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return conn.reply(m.chat, `🚩 Ingresa un texto junto al comando.\n\n*Ejemplo:*\n*${usedPrefix + command}* Ai Hoshino`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let res = await (await googleImage('wallpaper' + text)).getRandom() 8 | await conn.sendFile(m.chat, res, 'thumbnail.jpg', `*» Wallpaper* : ${text ? text.capitalize() : false}`, m, null, rcanal) 9 | await m.react('✅') 10 | } catch { 11 | await m.react('✖️') 12 | }} 13 | handler.help = ['wallpaper **'] 14 | handler.tags = ['img'] 15 | handler.command = ['wallpaper', 'wallpapers', 'wp'] 16 | handler.register = true 17 | //handler.limit = 1 18 | export default handler -------------------------------------------------------------------------------- /plugins/info-ds.js: -------------------------------------------------------------------------------- 1 | /* Codigo hecho por @Fabri115 y mejorado por BrunoSobrino */ 2 | 3 | import { readdirSync, unlinkSync, existsSync, promises as fs, rmSync } from 'fs' 4 | import path from 'path' 5 | 6 | var handler = async (m, { conn, usedPrefix }) => { 7 | 8 | if (global.conn.user.jid !== conn.user.jid) { 9 | return conn.reply(m.chat, '🤍 *Utiliza este comando directamente en el número principal del Bot*', m, rcanal, ) 10 | } 11 | 12 | let chatId = m.isGroup ? [m.chat, m.sender] : [m.sender] 13 | let sessionPath = './sessions/' 14 | 15 | try { 16 | 17 | let files = await fs.readdir(sessionPath) 18 | let filesDeleted = 0 19 | for (let file of files) { 20 | for (let id of chatId) { 21 | if (file.includes(id.split('@')[0])) { 22 | await fs.unlink(path.join(sessionPath, file)) 23 | filesDeleted++; 24 | break 25 | }}} 26 | 27 | if (filesDeleted === 0) { 28 | await conn.reply(m.chat, '🤍 *No se encontró ningún archivo que incluya la ID del chat*', m, rcanal, ) 29 | } else { 30 | await conn.reply(m.chat, `🤍 *Se eliminaron ${filesDeleted} archivos de sesión*`, m, rcanal, ) 31 | conn.reply(m.chat, `🤍 *¡Hola! ¿logras verme?*`, m, rcanal, ) 32 | } 33 | } catch (err) { 34 | console.error('Error al leer la carpeta o los archivos de sesión:', err) 35 | await conn.reply(m.chat, '🤍 *Ocurrió un fallo*', m, rcanal, ) 36 | } 37 | 38 | } 39 | handler.help = ['ds', 'fixmsgespera'] 40 | handler.tags = ['info'] 41 | handler.command = /^(fixmsgespera|ds)$/i 42 | 43 | handler.register = true 44 | 45 | export default handler 46 | -------------------------------------------------------------------------------- /plugins/main-Infototal.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let totalf = Object.values(global.plugins).filter( 3 | (v) => v.help && v.tags 4 | ).length; 5 | conn.reply(m.chat, `*» Total de Funciones* : ${totalf}`,m) 6 | } 7 | 8 | handler.help = ['totalfunciones'] 9 | handler.tags = ['main'] 10 | handler.command = ['totalfunciones'] 11 | handler.register = true 12 | export default handler -------------------------------------------------------------------------------- /plugins/main-creator.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, isOwner }) => { 2 | let txt_owner = "> _*`Hola, Este es el numero de mi creadxr, cualquier falla o si quieres agregar el bot a tu grupo, puedes hablarle`*_\n\n `+54 9 381 645-7465`" 3 | await conn.sendFile(m.chat, "https://th.bing.com/th/id/OIP.UrDEsrIiX93efNEOpMTezgHaEo?dpr=2&pid=ImgDetMain", 'thumbnail.jpg', txt_owner, m, null, rcanal) 4 | } 5 | handler.help = ['owner'] 6 | handler.tags = ['main'] 7 | handler.command = ['owner', 'creator', 'creador', 'dueño'] 8 | 9 | export default handler -------------------------------------------------------------------------------- /plugins/main-creator.js.bak: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, isOwner }) => { 2 | let txt_owner = "> _*`Hola, Este es el numero de mi creadxr, cualquier falla o si quieres agregar el bot a tu grupo, puedes hablarle`*_\n\n `+54 9 381 645-7465`" 3 | await conn.sendFile(m.chat, json.url, 'thumbnail.jpg', listo, m, null, rcanal) 4 | } 5 | handler.help = ['owner'] 6 | handler.tags = ['main'] 7 | handler.command = ['owner', 'creator', 'creador', 'dueño'] 8 | 9 | export default handler -------------------------------------------------------------------------------- /plugins/main-grupos.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let img = await (await fetch(`https://picx.zhimg.com/v2-6fc0bef40ff6e82fde900d9e0a213b68_720w.jpg?source=172ae18b`)).buffer() 5 | const more = String.fromCharCode(8206) 6 | const readMore = more.repeat(4001) 7 | let txt = `*Hola!, te invito a unirte a los grupos oficiales de del Bot para convivir con la comunidad :D* 8 | 9 | *✰* ${group} 10 | 11 | *─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ* 12 | 13 | ➠ Enlace anulado? entre aquí! 14 | 15 | Canal : 16 | *✰* ${canal} 17 | 18 | > 🚩 ${textbot}` 19 | await conn.sendFile(m.chat, img, "Thumbnail.jpg", txt, m, null, rcanal) 20 | } 21 | handler.help = ['grupos'] 22 | handler.tags = ['main'] 23 | handler.command = /^(grupos)$/i 24 | export default handler 25 | -------------------------------------------------------------------------------- /plugins/main-grupos.js.bak: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let img = await (await fetch(`https://f.uguu.se/KvZhfyZK.jpg`)).buffer() 5 | const more = String.fromCharCode(8206) 6 | const readMore = more.repeat(4001) 7 | let txt = `*Hola!, te invito a unirte a los grupos oficiales de del Bot para convivir con la comunidad :D* 8 | 9 | 1- https://chat.whatsapp.com/IozDcUnkCoVDBQBDNYF6GB 10 | *✰* ${group} 11 | 12 | *─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ⭒─ׄ─ׅ─ׄ* 13 | 14 | ➠ Enlace anulado? entre aquí! 15 | 16 | Canal : 17 | *✰* ${canal} 18 | 19 | > 🚩 ${textbot}` 20 | await conn.sendFile(m.chat, img, "Thumbnail.jpg", txt, m, null, rcanal) 21 | } 22 | handler.help = ['grupos'] 23 | handler.tags = ['main'] 24 | handler.command = /^(grupos)$/i 25 | export default handler 26 | -------------------------------------------------------------------------------- /plugins/main-ping.js: -------------------------------------------------------------------------------- 1 | import speed from 'performance-now' 2 | import { spawn, exec, execSync } from 'child_process' 3 | 4 | let handler = async (m, { conn }) => { 5 | let timestamp = speed(); 6 | let latensi = speed() - timestamp; 7 | exec(`neofetch --stdout`, (error, stdout, stderr) => { 8 | let child = stdout.toString("utf-8"); 9 | let ssd = child.replace(/Memory:/, "Ram:"); 10 | m.reply(`*» Velocidad* : ${latensi.toFixed(4)} _ms_`); 11 | }); 12 | } 13 | handler.help = ['ping'] 14 | handler.tags = ['main'] 15 | handler.command = ['ping', 'speed', 'p'] 16 | 17 | export default handler -------------------------------------------------------------------------------- /plugins/main-runtime.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | 3 | let _muptime 4 | if (process.send) { 5 | process.send('uptime') 6 | _muptime = await new Promise(resolve => { 7 | process.once('message', resolve) 8 | setTimeout(resolve, 1000) 9 | }) * 1000 10 | } 11 | let muptime = clockString(_muptime) 12 | m.reply(`*» Bot activo durante* : ${muptime}`) 13 | } 14 | handler.help = ['runtime'] 15 | handler.tags = ['main'] 16 | handler.command = ['runtime', 'uptime'] 17 | export default handler 18 | 19 | function clockString(ms) { 20 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 21 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 22 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 23 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 24 | return [d, 'd ', h, 'h ', m, 'm ', s, 's '].map(v => v.toString().padStart(2, 0)).join('') 25 | } -------------------------------------------------------------------------------- /plugins/main-script.js: -------------------------------------------------------------------------------- 1 | import moment from 'moment-timezone' 2 | import fetch from 'node-fetch' 3 | 4 | let handler = async (m, { conn, args }) => { 5 | let res = await fetch('https://api.github.com/repos/StarlightsTeam/Ai-Hoshino') 6 | let json = await res.json() 7 | try { 8 | let txt = `*乂 S C R I P T - M A I N*\n\n` 9 | txt += ` ✩ *Nombre* : ${json.name}\n` 10 | txt += ` ✩ *Visitas* : ${json.watchers_count}\n` 11 | txt += ` ✩ *Peso* : ${(json.size / 1024).toFixed(2)} MB\n` 12 | txt += ` ✩ *Actualizado* : ${moment(json.updated_at).format('DD/MM/YY - HH:mm:ss')}\n` 13 | txt += ` ✩ *Url* : ${json.html_url}\n` 14 | txt += ` ✩ *Forks* : ${json.forks_count}\n` 15 | txt += ` ✩ *Stars* : ${json.stargazers_count}\n\n` 16 | txt += `> 🚩 *${textbot}*` 17 | let img = await (await fetch(`https://i.ibb.co/LQKxczm/file.jpg`)).buffer() 18 | 19 | await conn.sendAi(m.chat, botname, textbot, txt, img, img, canal, m) 20 | } catch { 21 | await m.react('✖️') 22 | }} 23 | handler.help = ['script'] 24 | handler.tags = ['main'] 25 | handler.command = ['script', 'sc'] 26 | handler.register = true 27 | export default handler -------------------------------------------------------------------------------- /plugins/nsfw-hentai.js: -------------------------------------------------------------------------------- 1 | import { googleImage, pinterest } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!global.db.data.chats[m.chat].nsfw) return conn.reply(m.chat, `🚩 El grupo no admite contenido *Nsfw.*\n\n> Para activarlo un *Administrador* debe usar el comando */nsfw on*`, m, rcanal) 5 | 6 | await m.react('🕓') 7 | try { 8 | let res = await (await googleImage('Imagen ' + 'hentai')).getRandom() 9 | await conn.sendFile(m.chat, json.url, 'thumbnail.jpg', `*» Hentai*`, m, null, rcanal) 10 | await m.react('✅') 11 | } catch { 12 | await m.react('✖️') 13 | }} 14 | handler.help = ['hentai'] 15 | handler.tags = ['nsfw'] 16 | handler.command = ['hentai'] 17 | handler.group = true 18 | handler.register = true 19 | //handler.limit = 10 20 | export default handler -------------------------------------------------------------------------------- /plugins/nsfw-rule34.js: -------------------------------------------------------------------------------- 1 | import Starlights from "@StarlightsTeam/Scraper" 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!global.db.data.chats[m.chat].nsfw) return conn.reply(m.chat, `🚩 El grupo no admite contenido *Nsfw.*\n\n> Para activarlo un *Administrador* debe usar el comando */nsfw on*`, m, rcanal) 5 | if (!text) return m.reply('🚩 Ingresa el nombre de la imágen que estas buscando.') 6 | await m.react('🕓') 7 | try { 8 | let { dl_url } = await Starlights.rule34(text) 9 | await conn.sendFile(m.chat, dl_url, 'thumbnail.jpg', `*» Resultado* : ${text}`, m, null, rcanal) 10 | await m.react('✅') 11 | } catch { 12 | await m.react('✖️') 13 | }} 14 | handler.help = ['rule34 **'] 15 | handler.tags = ['nsfw'] 16 | handler.command = ['rule34', 'r34'] 17 | handler.register = true 18 | //handler.limit = 20 19 | handler.group = true 20 | export default handler -------------------------------------------------------------------------------- /plugins/nsfw-xnxxdl.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, args, command, usedPrefix }) => { 4 | if (!global.db.data.chats[m.chat].nsfw) return conn.reply(m.chat, `🚩 El grupo no admite contenido *Nsfw.*\n\n> Para activarlo un *Administrador* debe usar el comando */nsfw on*`, m, rcanal) 5 | if (!args[0]) return conn.reply(m.chat, `🚩 Ingresa el enlace del vídeo de Xnxx*`, m, rcanal) 6 | 7 | let user = global.db.data.users[m.sender] 8 | await m.react('🕓') 9 | try { 10 | let { title, dl_url } = await Starlights.xnxxdl(args[0]) 11 | await conn.sendFile(m.chat, dl_url, title + '.mp4', `*» Título* : ${title}`, m, false, { asDocument: user.useDocument }) 12 | await m.react('✅') 13 | } catch { 14 | await m.react('✖️') 15 | }} 16 | handler.tags = ['nsfw', 'downloader'] 17 | handler.help = ['xnxxdl **'] 18 | handler.command = ['xnxxdl'] 19 | //handler.limit = 200 20 | handler.group = true 21 | handler.register = true 22 | export default handler -------------------------------------------------------------------------------- /plugins/nsfw-xvideosdl.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, args, command, usedPrefix }) => { 4 | if (!global.db.data.chats[m.chat].nsfw) return conn.reply(m.chat, `🚩 El grupo no admite contenido *Nsfw.*\n\n> Para activarlo un *Administrador* debe usar el comando */nsfw on*`, m, rcanal) 5 | if (!args[0]) return conn.reply(m.chat, `🚩 Ingresa el enlace del vídeo de Xvideos*`, m, rcanal) 6 | 7 | let user = global.db.data.users[m.sender] 8 | await m.react('🕓') 9 | try { 10 | let { title, dl_url } = await Starlights.xvideosdl(args[0]) 11 | await conn.sendFile(m.chat, dl_url, title + '.mp4', `*» Título* : ${title}`, m, false, { asDocument: user.useDocument }) 12 | await m.react('✅') 13 | } catch { 14 | await m.react('✖️') 15 | }} 16 | handler.help = ['xvideosdl **'] 17 | handler.tags = ['downloader', 'nsfw'] 18 | handler.command = ['xvideosdl'] 19 | //handler.limit = 200 20 | handler.register = true 21 | handler.group = true 22 | export default handler -------------------------------------------------------------------------------- /plugins/owner-addexpired.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | if (!args[0] || isNaN(args[0])) return m.reply(`🚩 Ingresa un número que represente el número de días.\n\n*Ejemplo:*\n*${usedPrefix + command}* 30`) 4 | 5 | let who 6 | if (m.isGroup) who = args[1] ? args[1] : m.chat 7 | else who = args[1] 8 | 9 | var nDays = 86400000 * args[0] 10 | var now = new Date() * 1 11 | if (now < global.db.data.chats[who].expired) global.db.data.chats[who].expired += nDays 12 | else global.db.data.chats[who].expired = now + nDays 13 | let teks = `🚩 Se estableció los días de vencimiento para \n*${await conn.getName(who)}* \n\n*Durante:* ${args[0]} Días\n\n*Cuenta regresiva :* ${msToDate(global.db.data.chats[who].expired - now)}` 14 | m.reply(teks) 15 | } 16 | handler.help = ['expired **'] 17 | handler.tags = ['owner'] 18 | handler.command = /^(expired|addexpired)$/i 19 | handler.rowner = true 20 | export default handler 21 | 22 | function msToDate(ms) { 23 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 24 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 25 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 26 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 27 | return [d, ' *Días*\n ', h, ' *Horas*\n ', m, ' *Minutos*\n ', s, ' *Segundos* '].map(v => v.toString().padStart(2, 0)).join('') 28 | } -------------------------------------------------------------------------------- /plugins/owner-addprem.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 4 | else who = m.chat 5 | let user = db.data.users[who] 6 | if (!who) return m.reply(`Etiqueta o menciona a alguien`) 7 | let txt = text.replace('@' + who.split`@`[0], '').trim() 8 | if (!txt) return m.reply(`Agrega el número de días que el usuario sera *Premium*`) 9 | if (isNaN(txt)) return m.reply(`Solo números!\n\*Ejemplo*\n${usedPrefix + command} @${m.sender.split`@`[0]} 7`) 10 | global.prems.push(`${who.split`@`[0]}`) 11 | var jumlahHari = 86400000 * txt 12 | var now = new Date() * 1 13 | if (now < user.premiumTime) user.premiumTime += jumlahHari 14 | else user.premiumTime = now + jumlahHari 15 | user.premium = true 16 | m.reply(`*» Nombre* : ${user.name}\n*» Tiempo* :${txt} Días`) 17 | } 18 | handler.help = ['addprem *@user*'] 19 | handler.tags = ['owner'] 20 | handler.command = /^(addprem|addpremium)$/i 21 | 22 | handler.group = true 23 | handler.rowner = true 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/owner-autoadmin.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, participants }) => { 2 | await conn.groupParticipantsUpdate(m.chat, [m.sender], 'promote') 3 | } 4 | handler.help = ['autoadmin'] 5 | handler.tags = ['owner'] 6 | handler.command = /^(darmeadmin|autoadmin)$/i 7 | 8 | handler.rowner = true 9 | handler.group = true 10 | handler.botAdmin = true 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/owner-banlist.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, isOwner }) => { 2 | let chats = Object.entries(global.db.data.chats).filter(chat => chat[1].isBanned) 3 | let users = Object.entries(global.db.data.users).filter(user => user[1].banned) 4 | let caption = ` 5 | ╭─「 *Usuarios Baneados* 」 6 | ║❥ *Total* : ${users.length} ${users ? '\n' + users.map(([jid], i) => ` 7 | ║❥ ${isOwner ? '@' + jid.split`@`[0] : jid}`.trim()).join('\n') : '├'} 8 | ╰──── 9 | 10 | ╭─「 *Chats Baneados* 」 11 | ║❥ *Total* : ${chats.length} ${chats ? '\n' + chats.map(([jid], i) => ` 12 | ║❥ ${isOwner ? '@' + jid.split`@`[0] : jid}`.trim()).join('\n') : '├'} 13 | ╰──── 14 | `.trim() 15 | m.reply(caption, null, {mentions: conn.parseMention(caption)})} 16 | handler.help = ['banlist'] 17 | handler.tags = ['owner'] 18 | handler.command = /^banlist(ned)?|ban(ned)?list|daftarban(ned)?$/i 19 | handler.rowner = true 20 | export default handler -------------------------------------------------------------------------------- /plugins/owner-banuser.js: -------------------------------------------------------------------------------- 1 | // 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 6 | else who = m.chat 7 | let user = global.db.data.users[who] 8 | if (!who) return m.reply(`🚩 Etiqueta a un usuario.`) 9 | let users = global.db.data.users 10 | users[who].banned = true 11 | conn.reply(m.chat, `🚩 @${who.split`@`[0]} ha sido baneado con exito, ya no podrá volver a usar mis comandos.`, m, { mentions: [who] }) 12 | } 13 | handler.help = ['mban *@user*'] 14 | handler.tags = ['owner'] 15 | handler.command = /^mban$/i 16 | handler.rowner = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/owner-clearsession.js: -------------------------------------------------------------------------------- 1 | import { tmpdir } from 'os' 2 | import path, { join } from 'path' 3 | import fs from 'fs' 4 | import { readdirSync, unlinkSync, rmSync } from 'fs' 5 | 6 | let handler = async (m, { conn, __dirname, args }) => { 7 | 8 | let Sessions = "./sessions" 9 | readdirSync(Sessions).forEach((file) => { 10 | if (file !== 'creds.json') { 11 | unlinkSync(`${Sessions}/${file}`, { recursive: true, force: true }) 12 | } 13 | }) 14 | 15 | let bbtSessions = "./serbot" 16 | readdirSync(bbtSessions, { withFileTypes: true }).forEach((file) => { 17 | let filePath = `${bbtSessions}/${file.name}` 18 | if (file.isDirectory()) { 19 | readdirSync(filePath, { withFileTypes: true }).forEach((subFile) => { 20 | let subFilePath = `${filePath}/${subFile.name}` 21 | if (subFile.isFile() && subFile.name !== "creds.json") { 22 | unlinkSync(subFilePath) 23 | } 24 | }) 25 | 26 | if (readdirSync(filePath).length === 0) { 27 | fs.rmdirSync(filePath) 28 | } 29 | } else if (file.isFile() && file.name !== "creds.json") { 30 | unlinkSync(filePath) 31 | } 32 | }) 33 | await m.react('✅') 34 | } 35 | handler.help = ['clearsession'] 36 | handler.tags = ['owner'] 37 | handler.command = /^(clearsession)$/i 38 | handler.rowner = true 39 | 40 | export default handler -------------------------------------------------------------------------------- /plugins/owner-deletefile.js: -------------------------------------------------------------------------------- 1 | import { tmpdir } from 'os' 2 | import path from 'path' 3 | import { 4 | readdirSync, 5 | statSync, 6 | unlinkSync, 7 | existsSync, 8 | readFileSync, 9 | watch 10 | } from 'fs' 11 | 12 | let handler = async (m, { conn, usedPrefix: _p, __dirname, args, text }) => { 13 | if (!text) return conn.reply(m.chat, `🚩 Ingresa la ruta y el nombre del archivo que deseas eliminar.`, m, rcanal) 14 | 15 | const file = text.trim() 16 | if (!existsSync(file)) return conn.reply(m.chat, `🚩 Archivo no encontrado.`, m, rcanal) 17 | 18 | unlinkSync(file) 19 | conn.reply(m.chat, `🚩 El archivo *${file}* ha sido eliminado con éxito.`, m, rcanal) 20 | } 21 | handler.tags = ['owner'] 22 | handler.help = ['deletefile'] 23 | handler.command = /^(deletefile|df)$/i 24 | handler.rowner = true 25 | 26 | export default handler -------------------------------------------------------------------------------- /plugins/owner-delexpired.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | let who 3 | if (m.isGroup) who = args[1] ? args[1] : m.chat 4 | else who = args[1] 5 | 6 | if (new Date() * 1 < global.db.data.chats[who].expired) global.db.data.chats[who].expired = false 7 | else global.db.data.chats[who].expired = false 8 | 9 | m.reply(`🚩 Se eliminaron los días de vencimiento para este grupo.`) 10 | 11 | } 12 | handler.help = ['delexpired'] 13 | handler.tags = ['owner'] 14 | handler.command = /^(delexpired)$/i 15 | handler.rowner = true 16 | handler.group = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/owner-delprem.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix, command, text }) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : false 4 | else who = text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : m.chat 5 | let user = db.data.users[who] 6 | if (!who) return m.reply(`🚩 Etiqueta a un usuario.`) 7 | user.premium = false 8 | user.premiumTime = 0 9 | m.reply(`🚩 El usuario *${user.name}* ya no sera *Premium.*`) 10 | } 11 | handler.help = ['delprem *@user*'] 12 | handler.tags = ['owner'] 13 | handler.command = /^(-|del)p(rem)?$/i 14 | 15 | handler.group = true 16 | handler.rowner = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/owner-exec.js: -------------------------------------------------------------------------------- 1 | import syntaxerror from 'syntax-error' 2 | import { format } from 'util' 3 | import { fileURLToPath } from 'url' 4 | import { dirname } from 'path' 5 | import { createRequire } from 'module' 6 | 7 | const __dirname = dirname(fileURLToPath(import.meta.url)) 8 | const require = createRequire(__dirname) 9 | 10 | let handler = async (m, _2) => { 11 | let { conn, usedPrefix, noPrefix, args, groupMetadata } = _2 12 | let _return 13 | let _syntax = '' 14 | let _text = (/^=/.test(usedPrefix) ? 'return ' : '') + noPrefix 15 | let old = m.exp * 1 16 | try { 17 | let i = 15 18 | let f = { 19 | exports: {} 20 | } 21 | let exec = new (async () => { }).constructor('print', 'm', 'handler', 'require', 'conn', 'Array', 'process', 'args', 'groupMetadata', 'module', 'exports', 'argument', _text) 22 | _return = await exec.call(conn, (...args) => { 23 | if (--i < 1) return 24 | console.log(...args) 25 | return conn.reply(m.chat, format(...args), m) 26 | }, m, handler, require, conn, CustomArray, process, args, groupMetadata, f, f.exports, [conn, _2]) 27 | } catch (e) { 28 | let err = syntaxerror(_text, 'Función de ejecución', { 29 | allowReturnOutsideFunction: true, 30 | allowAwaitOutsideFunction: true, 31 | sourceType: 'module' 32 | }) 33 | if (err) _syntax = '```' + err + '```\n\n' 34 | _return = e 35 | } finally { 36 | conn.reply(m.chat, _syntax + format(_return), m) 37 | m.exp = old 38 | } 39 | } 40 | handler.help = ['× ', '=× '] 41 | handler.tags = ['advanced'] 42 | handler.customPrefix = /^=?× / 43 | handler.command = /(?:)/i 44 | 45 | handler.rowner = true 46 | 47 | export default handler 48 | 49 | class CustomArray extends Array { 50 | constructor(...args) { 51 | if (typeof args[0] == 'number') return super(Math.min(args[0], 10000)) 52 | else return super(...args) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /plugins/owner-exec.js.bak: -------------------------------------------------------------------------------- 1 | import syntaxerror from 'syntax-error' 2 | import { format } from 'util' 3 | import { fileURLToPath } from 'url' 4 | import { dirname } from 'path' 5 | import { createRequire } from 'module' 6 | 7 | const __dirname = dirname(fileURLToPath(import.meta.url)) 8 | const require = createRequire(__dirname) 9 | 10 | let handler = async (m, _2) => { 11 | let { conn, usedPrefix, noPrefix, args, groupMetadata } = _2 12 | let _return 13 | let _syntax = '' 14 | let _text = (/^=/.test(usedPrefix) ? 'return ' : '') + noPrefix 15 | let old = m.exp * 1 16 | try { 17 | let i = 15 18 | let f = { 19 | exports: {} 20 | } 21 | let exec = new (async () => { }).constructor('print', 'm', 'handler', 'require', 'conn', 'Array', 'process', 'args', 'groupMetadata', 'module', 'exports', 'argument', _text) 22 | _return = await exec.call(conn, (...args) => { 23 | if (--i < 1) return 24 | console.log(...args) 25 | return conn.reply(m.chat, format(...args), m) 26 | }, m, handler, require, conn, CustomArray, process, args, groupMetadata, f, f.exports, [conn, _2]) 27 | } catch (e) { 28 | let err = syntaxerror(_text, 'Función de ejecución', { 29 | allowReturnOutsideFunction: true, 30 | allowAwaitOutsideFunction: true, 31 | sourceType: 'module' 32 | }) 33 | if (err) _syntax = '```' + err + '```\n\n' 34 | _return = e 35 | } finally { 36 | conn.reply(m.chat, _syntax + format(_return), m) 37 | m.exp = old 38 | } 39 | } 40 | handler.help = ['> ', '=> '] 41 | handler.tags = ['advanced'] 42 | handler.customPrefix = /^=?> / 43 | handler.command = /(?:)/i 44 | 45 | handler.rowner = true 46 | 47 | export default handler 48 | 49 | class CustomArray extends Array { 50 | constructor(...args) { 51 | if (typeof args[0] == 'number') return super(Math.min(args[0], 10000)) 52 | else return super(...args) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /plugins/owner-exec2.js: -------------------------------------------------------------------------------- 1 | import cp, { exec as _exec } from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(_exec).bind(cp) 4 | let handler = async (m, { conn, isOwner, command, text }) => { 5 | if (conn.user.jid != conn.user.jid) return 6 | m.reply('🚩 Ejecutando...') 7 | let o 8 | try { 9 | o = await exec(command.trimStart() + ' ' + text.trimEnd()) 10 | } catch (e) { 11 | o = e 12 | } finally { 13 | let { stdout, stderr } = o 14 | if (stdout.trim()) m.reply(stdout) 15 | if (stderr.trim()) m.reply(stderr) 16 | } 17 | } 18 | handler.help = ['$'] 19 | handler.tags = ['advanced'] 20 | handler.customPrefix = /^[$] / 21 | handler.command = new RegExp 22 | handler.rowner = true 23 | export default handler -------------------------------------------------------------------------------- /plugins/owner-fetch.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { format } from 'util' 3 | let handler = async (m, { text }) => { 4 | if (!/^https?:\/\//.test(text)) throw 'Ejemplo:\nhttps://pornhub.com' 5 | let _url = new URL(text) 6 | let url = global.API(_url.origin, _url.pathname, Object.fromEntries(_url.searchParams.entries()), 'APIKEY') 7 | let res = await fetch(url) 8 | if (res.headers.get('content-length') > 100 * 1024 * 1024 * 1024) { 9 | // delete res 10 | return m.reply(`Content-Length: ${res.headers.get('content-length')}`) 11 | } 12 | if (!/text|json/.test(res.headers.get('content-type'))) return conn.sendFile(m.chat, url, 'file', text, m) 13 | let txt = await res.buffer() 14 | try { 15 | txt = format(JSON.parse(txt + '')) 16 | } catch (e) { 17 | txt = txt + '' 18 | } finally { 19 | m.reply(txt.slice(0, 65536) + '') 20 | } 21 | } 22 | handler.help = ['fetch'].map(v => v + ' **') 23 | handler.tags = ['owner'] 24 | handler.command = /^(fetch|get)$/i 25 | handler.rowner = true 26 | export default handler -------------------------------------------------------------------------------- /plugins/owner-getdb.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { conn, text }) => { 3 | await m.react('🕓') 4 | let dl_url = await fs.readFileSync('./storage/databases/database.json') 5 | await conn.sendMessage(m.chat, { document: dl_url, mimetype: 'application/json', fileName: 'database.json' }, { quoted: m }) 6 | await m.react('✅') 7 | } 8 | handler.help = ['getdb'] 9 | handler.tags = ['owner'] 10 | handler.command = /^(getdb)$/i 11 | 12 | handler.rowner = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/owner-getsesion.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { conn, text }) => { 3 | await m.react('🕓') 4 | let dl_url = await fs.readFileSync('./sessions/creds.json') 5 | await conn.sendMessage(m.chat, { document: dl_url, mimetype: 'application/json', fileName: 'creds.json' }, { quoted: m }).then(_ => m.react('✅')) 6 | } 7 | handler.help = ['getsesion'] 8 | handler.tags = ['owner'] 9 | handler.command = /^(getsesion)$/i 10 | 11 | handler.rowner = true 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/owner-join.js: -------------------------------------------------------------------------------- 1 | 2 | let linkRegex = /chat.whatsapp.com\/([0-9A-Za-z]{20,24})( [0-9]{1,3})?/i 3 | 4 | let handler = async (m, { conn, text, isOwner, usedPrefix, command }) => { 5 | 6 | if (!text) return m.reply(`🚩 Ingresa el enlace del Grupo.`) 7 | let [_, code, expired] = text.match(linkRegex) || [] 8 | if (!code) return m.reply('🚩 Enlace invalido.') 9 | let res = await conn.groupAcceptInvite(code) 10 | expired = Math.floor(Math.min(999, Math.max(1, isOwner ? isNumber(expired) ? parseInt(expired) : 0 : 3))) 11 | m.reply(`🚩 Me uní correctamente al Grupo *${res}${expired ? `* Durante *${expired}* días.` : ''}`) 12 | let chats = global.db.data.chats[res] 13 | if (!chats) chats = global.db.data.chats[res] = {} 14 | if (expired) chats.expired = +new Date() + expired * 1000 * 60 * 60 * 24 15 | let pp = 'https://telegra.ph/file/4fa3f65b6698517cd8dcf.mp4' 16 | await conn.sendMessage(res, { video: { url: pp }, gifPlayback: true, caption: 'Ya llego el mejor Bot de todo WhatsApp.', mentions: [m.sender] }, { quoted: estilo }) 17 | } 18 | handler.help = ['join * *'] 19 | handler.tags = ['owner'] 20 | 21 | handler.command = ['join', 'entrar'] 22 | handler.owner = true 23 | 24 | export default handler 25 | 26 | const isNumber = (x) => (x = parseInt(x), typeof x === 'number' && !isNaN(x)) -------------------------------------------------------------------------------- /plugins/owner-noetiqueta.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, isOwner }) => { 2 | await m.react('😺') 3 | await conn.reply(m.chat, `Hola @${m.sender.split`@`[0]} si necesitas la ayuda de mi creador porfavor escribele al privado\n*- Solo asuntos importantes -*`, estilo, { mentions: [m.sender] }) 4 | let vcard = `BEGIN:VCARD\nVERSION:3.0\nN:;おDanịel.xyz⁩;;\nFN:おDanịel.xyz⁩\nORG:おDanịel.xyz⁩\nTITLE:\nitem1.TEL;waid=5218261000681:5218261000681\nitem1.X-ABLabel:おDanịel.xyz⁩\nX-WA-BIZ-DESCRIPTION:\nX-WA-BIZ-NAME:おDanịel.xyz⁩\nEND:VCARD` 5 | await conn.sendMessage(m.chat, { contacts: { displayName: 'おDanịel.xyz⁩', contacts: [{ vcard }] }}, {quoted: m}) 6 | } 7 | handler.customPrefix = /^(@5218261275256|@5218132588591|@5218139760662|@5215659171599)$/i 8 | handler.command = new RegExp 9 | export default handler -------------------------------------------------------------------------------- /plugins/owner-otag.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, participants}) => { 2 | 3 | let users = participants.map(u => u.id).filter(v => v !== conn.user.jid) 4 | if (!m.quoted) return m.reply(`🚩 Responde a un mensaje.`) 5 | conn.sendMessage(m.chat, { forward: m.quoted.fakeObj, mentions: users } ) 6 | } 7 | 8 | handler.help = ['otag'] 9 | handler.tags = ['group'] 10 | handler.command = /^(otag|tag2)$/i 11 | 12 | handler.rowner = true 13 | handler.group = true 14 | 15 | export default handler -------------------------------------------------------------------------------- /plugins/owner-resetUser.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | function no(number){ 3 | return number.replace(/\s/g,'').replace(/([@+-])/g,'') 4 | } 5 | 6 | text = no(text) 7 | 8 | if(isNaN(text)) { 9 | var number = text.split`@`[1] 10 | } else if(!isNaN(text)) { 11 | var number = text 12 | } 13 | 14 | if(!text && !m.quoted) return m.reply(`🚩 Etiqueta o escribe el número del usuario.`) 15 | if(isNaN(number)) return m.reply(`🚩 El número no es válido.`) 16 | 17 | try { 18 | if(text) { 19 | var user = number + '@s.whatsapp.net' 20 | } else if(m.quoted.sender) { 21 | var user = m.quoted.sender 22 | } else if(m.mentionedJid) { 23 | var user = number + '@s.whatsapp.net' 24 | } 25 | } catch (e) { 26 | } finally { 27 | let number = user.split('@')[0] 28 | delete global.global.db.data.users[user] 29 | conn.reply(m.chat, `🚩 @${number} fue reiniciado con exito.`, null, { mentions: [user] }) 30 | } 31 | 32 | } 33 | handler.help = ['resetuser *@user*'] 34 | handler.tags = ['owner'] 35 | handler.command = ['resetuser'] 36 | handler.rowner = true 37 | 38 | export default handler -------------------------------------------------------------------------------- /plugins/owner-restart.js: -------------------------------------------------------------------------------- 1 | import { spawn } from 'child_process' 2 | let handler = async (m, { conn, isROwner, text }) => { 3 | if (!process.send) return m.react('✖️') 4 | if (conn.user.jid == conn.user.jid) { 5 | await m.reply('🚩 Reiniciando Bot...') 6 | process.send('reset') 7 | } else return m.react('✖️') 8 | } 9 | 10 | handler.help = ['restart'] 11 | handler.tags = ['owner'] 12 | handler.command = ['restart','reiniciar'] 13 | 14 | handler.rowner = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/owner-salir.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, command }) => { 2 | let id = text ? text : m.chat 3 | let pp = 'https://telegra.ph/file/5ab1ca8bf65c1ddb36c20.mp4' 4 | await conn.sendMessage(m.chat, { video: { url: pp }, gifPlayback: true, caption: '*Adios a todos, el Bot se despide! (≧ω≦)ゞ*', mentions: [m.sender] }, { quoted: estilo }) 5 | await conn.groupLeave(id)} 6 | handler.help = ['salir'] 7 | handler.tags = ['owner'] 8 | handler.command = /^(salir|out|leavegc|leave|salirdelgrupo)$/i 9 | handler.group = true 10 | handler.rowner = true 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/owner-savefile.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { text, usedPrefix, command }) => { 3 | if (!text) return m.reply(`🚩 Ingresa la Ruta y el nombre del Archivo junto al comando.`) 4 | try { 5 | if (!m.quoted.text) return m.reply(`🚩 Responder al mensaje.`) 6 | let path = `${text}` 7 | await fs.writeFileSync(path, m.quoted.text) 8 | m.reply(`🚩 Guardado en *${path}*.`) 9 | } catch { 10 | await m.reply(`🚩 Responder al mensaje.`) 11 | }} 12 | handler.command = ["savefile", "savejs", "savecmd"] 13 | handler.tags = ['owner'] 14 | handler.help = ['savefile'] 15 | handler.rowner = true 16 | export default handler -------------------------------------------------------------------------------- /plugins/owner-unbanuser.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 4 | else who = m.chat 5 | let user = global.db.data.users[who] 6 | if (!who) return m.reply(`🚩 Etiqueta a un usuario.`) 7 | let users = global.db.data.users 8 | users[who].banned = false 9 | conn.reply(m.chat, `🚩 @${who.split`@`[0]} ha sido desbaneado con exito, ahora podrá volver a usar mis comandos.`, m, { mentions: [who] }) 10 | } 11 | handler.help = ['munban *@user*'] 12 | handler.tags = ['owner'] 13 | handler.command = /^munban$/i 14 | handler.rowner = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/owner-update.js: -------------------------------------------------------------------------------- 1 | import { execSync } from 'child_process' 2 | let handler = async (m, { conn, text }) => { 3 | await m.react('🕓') 4 | if (conn.user.jid == conn.user.jid) { 5 | let stdout = execSync('git pull' + (m.fromMe && text ? ' ' + text : '')) 6 | await conn.reply(m.chat, stdout.toString(), m) 7 | await m.react('✅') 8 | }} 9 | handler.help = ['update'] 10 | handler.tags = ['owner'] 11 | handler.command = ['update', 'actualizar', 'fix', 'fixed'] 12 | handler.rowner = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/rg-myns.js: -------------------------------------------------------------------------------- 1 | import { createHash } from 'crypto' 2 | 3 | let handler = async function (m, { conn, text, usedPrefix }) { 4 | let sn = createHash('md5').update(m.sender).digest('hex') 5 | await conn.reply(m.chat, `${sn}`, m, rcanal) 6 | } 7 | handler.help = ['sn'] 8 | handler.tags = ['rg'] 9 | handler.command = ['nserie', 'sn', 'mysn'] 10 | handler.register = true 11 | export default handler -------------------------------------------------------------------------------- /plugins/rg-reg.js: -------------------------------------------------------------------------------- 1 | 2 | import { createHash } from 'crypto' 3 | import fs from 'fs' 4 | import fetch from 'node-fetch' 5 | 6 | let Reg = /\|?(.*)([.|] *?)([0-9]*)$/i 7 | let handler = async function (m, { conn, text, usedPrefix, command }) { 8 | let user = global.db.data.users[m.sender] 9 | let name2 = conn.getName(m.sender) 10 | if (user.registered === true) return m.reply(`🚩 Ya estás registrado.\n\n*¿Quiere volver a registrarse?*\n\nUse este comando para eliminar su registro.\n*${usedPrefix}unreg* `) 11 | if (!Reg.test(text)) return m.reply(`🚩 Formato incorrecto.\n\nUso del comamdo: *${usedPrefix + command} nombre.edad*\nEjemplo : *${usedPrefix + command} ${name2}.16*`) 12 | let [_, name, splitter, age] = text.match(Reg) 13 | if (!name) return m.reply('🚩 El nombre no puede estar vacío.') 14 | if (!age) return m.reply('🚩 La edad no puede estar vacía.') 15 | if (name.length >= 100) return m.reply('🚩 El nombre es demasiado largo.' ) 16 | age = parseInt(age) 17 | if (age > 100) return m.reply('👴🏻 Wow el abuelo quiere jugar al bot.') 18 | if (age < 5) return m.reply('🚼 hay un abuelo bebé jsjsj. ') 19 | user.name = name.trim() 20 | user.age = age 21 | user.regTime = + new Date 22 | user.registered = true 23 | let sn = createHash('md5').update(m.sender).digest('hex') 24 | let img = await (await fetch(`https://f.uguu.se/spHkJTsk.jpg`)).buffer() 25 | let txt = ` – *R E G I S T R O - U S E R*\n\n` 26 | txt += `┌ ✩ *Nombre* : ${name}\n` 27 | txt += `│ ✩ *Edad* : ${age} años\n` 28 | txt += `│ ✩ *Numero de serie*\n` 29 | txt += `└ ✩ ${sn}` 30 | await conn.sendAi(m.chat, botname, textbot, txt, img, img, canal, m) 31 | await m.react('✅') 32 | } 33 | handler.help = ['reg'].map(v => v + ' **') 34 | handler.tags = ['rg'] 35 | 36 | handler.command = ['verify', 'reg', 'register', 'registrar'] 37 | 38 | export default handler -------------------------------------------------------------------------------- /plugins/rg-reg.js.bak: -------------------------------------------------------------------------------- 1 | 2 | import { createHash } from 'crypto' 3 | import fs from 'fs' 4 | import fetch from 'node-fetch' 5 | 6 | let Reg = /\|?(.*)([.|] *?)([0-9]*)$/i 7 | let handler = async function (m, { conn, text, usedPrefix, command }) { 8 | let user = global.db.data.users[m.sender] 9 | let name2 = conn.getName(m.sender) 10 | if (user.registered === true) return m.reply(`🚩 Ya estás registrado.\n\n*¿Quiere volver a registrarse?*\n\nUse este comando para eliminar su registro.\n*${usedPrefix}unreg* `) 11 | if (!Reg.test(text)) return m.reply(`🚩 Formato incorrecto.\n\nUso del comamdo: *${usedPrefix + command} nombre.edad*\nEjemplo : *${usedPrefix + command} ${name2}.16*`) 12 | let [_, name, splitter, age] = text.match(Reg) 13 | if (!name) return m.reply('🚩 El nombre no puede estar vacío.') 14 | if (!age) return m.reply('🚩 La edad no puede estar vacía.') 15 | if (name.length >= 100) return m.reply('🚩 El nombre es demasiado largo.' ) 16 | age = parseInt(age) 17 | if (age > 100) return m.reply('👴🏻 Wow el abuelo quiere jugar al bot.') 18 | if (age < 5) return m.reply('🚼 hay un abuelo bebé jsjsj. ') 19 | user.name = name.trim() 20 | user.age = age 21 | user.regTime = + new Date 22 | user.registered = true 23 | let sn = createHash('md5').update(m.sender).digest('hex') 24 | let img = await (await fetch(`https://tinyurl.com/ynvdqh3x`)).buffer() 25 | let txt = ` – *R E G I S T R O - U S E R*\n\n` 26 | txt += `┌ ✩ *Nombre* : ${name}\n` 27 | txt += `│ ✩ *Edad* : ${age} años\n` 28 | txt += `│ ✩ *Numero de serie*\n` 29 | txt += `└ ✩ ${sn}` 30 | await conn.sendAi(m.chat, botname, textbot, txt, img, img, canal, m) 31 | await m.react('✅') 32 | } 33 | handler.help = ['reg'].map(v => v + ' **') 34 | handler.tags = ['rg'] 35 | 36 | handler.command = ['verify', 'reg', 'register', 'registrar'] 37 | 38 | export default handler -------------------------------------------------------------------------------- /plugins/rg-unreg.js: -------------------------------------------------------------------------------- 1 | import { createHash } from 'crypto' 2 | let handler = async function (m, { conn, args, usedPrefix}) { 3 | if (!args[0]) return m.reply(`🚩 Ingresa tu número de serie junto al comando.`) 4 | let user = global.db.data.users[m.sender] 5 | let sn = createHash('md5').update(m.sender).digest('hex') 6 | if (args[0] !== sn) return m.reply('🚩 Número de serie incorrecto') 7 | user.registered = false 8 | m.reply(`🚩 Registro eliminado.`) 9 | } 10 | handler.help = ['unreg'] 11 | handler.tags = ['rg'] 12 | 13 | handler.command = ['unreg'] 14 | handler.register = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-bank.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | let handler = async (m, {conn, usedPrefix}) => { 4 | let who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : m.sender 5 | if (who == conn.user.jid) return m.react('✖️') 6 | if (!(who in global.db.data.users)) return m.reply(`*El usuario no se encuentra en mi base de datos*`) 7 | let user = global.db.data.users[who] 8 | await m.reply(`${who == m.sender ? `Tienes *${user.bank} ❇️ Eris* en el Banco` : `El usuario @${who.split('@')[0]} tiene *${user.bank} ❇️ Eris* en el Banco`}`, null, { mentions: [who] }) 9 | } 10 | 11 | handler.help = ['bank'] 12 | handler.tags = ['rpg'] 13 | handler.command = ['bank', 'banco'] 14 | handler.register = true 15 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-bank.js.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | let handler = async (m, {conn, usedPrefix}) => { 4 | let who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : m.sender 5 | if (who == conn.user.jid) return m.react('✖️') 6 | if (!(who in global.db.data.users)) return m.reply(`*El usuario no se encuentra en mi base de datos*`) 7 | let user = global.db.data.users[who] 8 | await m.reply(`${who == m.sender ? `Tienes *${user.bank} ⭐ Estrellas* en el Banco` : `El usuario @${who.split('@')[0]} tiene *${user.bank} ⭐ Estrellas* en el Banco`}`, null, { mentions: [who] }) 9 | } 10 | 11 | handler.help = ['bank'] 12 | handler.tags = ['rpg'] 13 | handler.command = ['bank', 'banco'] 14 | handler.register = true 15 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-daily.js: -------------------------------------------------------------------------------- 1 | const free = 50000 2 | const prem = 100000 3 | const cooldowns = {} 4 | 5 | let handler = async (m, { conn, isPrems }) => { 6 | let user = global.db.data.users[m.sender] 7 | const tiempoEspera = 24 * 60 * 60 8 | if (cooldowns[m.sender] && Date.now() - cooldowns[m.sender] < tiempoEspera * 1000) { 9 | const tiempoRestante = segundosAHMS(Math.ceil((cooldowns[m.sender] + tiempoEspera * 1000 - Date.now()) / 1000)) 10 | conn.reply(m.chat, `🚩 Ya has realizado tu pedido gratis de hoy.\nRecuerda que solo puedes realizarlo 1 vez cada 24 horas.\n\n*Próximo Monto* : +${isPrems ? prem : free} 💫 XP\n*En* : ⏱ ${tiempoRestante}`, m, rcanal) 11 | return 12 | } 13 | 14 | global.db.data.users[m.sender].exp += isPrems ? prem : free 15 | conn.reply(m.chat, `🚩 Felicidades 🎉, reclamaste *+${isPrems ? prem : free} 💫 XP*.`, m, rcanal) 16 | 17 | cooldowns[m.sender] = Date.now() 18 | } 19 | 20 | handler.help = ['claim'] 21 | handler.tags = ['rpg'] 22 | handler.command = ['daily', 'claim'] 23 | handler.register = true 24 | 25 | export default handler 26 | 27 | function segundosAHMS(segundos) { 28 | const horas = Math.floor(segundos / 3600) 29 | const minutos = Math.floor((segundos % 3600) / 60) 30 | const segundosRestantes = segundos % 60 31 | return `${horas} horas, ${minutos} minutos y ${segundosRestantes} segundos`; 32 | } -------------------------------------------------------------------------------- /plugins/rpg-daily.js.bak: -------------------------------------------------------------------------------- 1 | const free = 50000 2 | const prem = 100000 3 | const cooldowns = {} 4 | 5 | let handler = async (m, { conn, isPrems }) => { 6 | let user = global.db.data.users[m.sender] 7 | const tiempoEspera = 24 * 60 * 60 8 | if (cooldowns[m.sender] && Date.now() - cooldowns[m.sender] < tiempoEspera * 1000) { 9 | const tiempoRestante = segundosAHMS(Math.ceil((cooldowns[m.sender] + tiempoEspera * 1000 - Date.now()) / 1000)) 10 | conn.reply(m.chat, `🚩 Ya has realizado tu pedido gratis de hoy.\nRecuerda que solo puedes realizarlo 1 vez cada 24 horas.\n\n*Próximo Monto* : +${isPrems ? prem : free} 💫 XP\n*En* : ⏱ ${tiempoRestante}`, m, rcanal) 11 | return 12 | } 13 | 14 | global.db.data.users[m.sender].exp += isPrems ? prem : free 15 | conn.reply(m.chat, `🚩 Felicidades 🎉, reclamaste *+${isPrems ? prem : free} 💫 XP*.`, m, rcanal) 16 | 17 | cooldowns[m.sender] = Date.now() 18 | } 19 | 20 | handler.help = ['claim'] 21 | handler.tags = ['rpg'] 22 | handler.command = ['daily', 'claim'] 23 | handler.register = true 24 | 25 | export default handler 26 | 27 | function segundosAHMS(segundos) { 28 | const horas = Math.floor(segundos / 3600) 29 | const minutos = Math.floor((segundos % 3600) / 60) 30 | const segundosRestantes = segundos % 60 31 | return `${horas} horas, ${minutos} minutos y ${segundosRestantes} segundos`; 32 | } -------------------------------------------------------------------------------- /plugins/rpg-darcoins.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | import MessageType from '@whiskeysockets/baileys' 4 | let impuesto = 0.02 5 | let handler = async (m, { conn, text }) => { 6 | let who 7 | if (m.isGroup) who = m.mentionedJid[0] 8 | else who = m.chat 9 | if (!who) throw '🚩 Menciona al usuario con *@user.*' 10 | let txt = text.replace('@' + who.split`@`[0], '').trim() 11 | if (!txt) throw '🚩 Ingrese la cantidad de *❇️ Eris* que quiere transferir.' 12 | if (isNaN(txt)) throw 'Sólo números.' 13 | let poin = parseInt(txt) 14 | let limit = poin 15 | let imt = Math.ceil(poin * impuesto) 16 | limit += imt 17 | if (limit < 1) throw '🚩 Mínimo es *1 ❇️ Eris*.' 18 | let users = global.db.data.users 19 | if (limit > users[m.sender].limit) throw 'No tienes suficientes *❇️ Eris* para dar.' 20 | users[m.sender].limit -= limit 21 | users[who].limit += poin 22 | 23 | await m.reply(`*${-poin}* ❇️ Eris 24 | Impuesto 2% : *${-imt}* ❇️ Eris 25 | Total gastado: *${-limit}* ❇️ Eris`) 26 | conn.fakeReply(m.chat, `*+${poin}* *❇️ Eris.*`, who, m.text) 27 | } 28 | handler.help = ['dareris *@user *'] 29 | handler.tags = ['rpg'] 30 | handler.command = ['darcoins', 'dareris'] 31 | handler.register = true 32 | 33 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-darcoins.js.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | import MessageType from '@whiskeysockets/baileys' 4 | let impuesto = 0.02 5 | let handler = async (m, { conn, text }) => { 6 | let who 7 | if (m.isGroup) who = m.mentionedJid[0] 8 | else who = m.chat 9 | if (!who) throw '🚩 Menciona al usuario con *@user.*' 10 | let txt = text.replace('@' + who.split`@`[0], '').trim() 11 | if (!txt) throw '🚩 Ingrese la cantidad de *❇️ Eris* que quiere transferir.' 12 | if (isNaN(txt)) throw 'Sólo números.' 13 | let poin = parseInt(txt) 14 | let limit = poin 15 | let imt = Math.ceil(poin * impuesto) 16 | limit += imt 17 | if (limit < 1) throw '🚩 Mínimo es *1 ❇️ Eris*.' 18 | let users = global.db.data.users 19 | if (limit > users[m.sender].limit) throw 'No tienes suficientes *❇️ Eris* para dar.' 20 | users[m.sender].limit -= limit 21 | users[who].limit += poin 22 | 23 | await m.reply(`*${-poin}* ❇️ Eris 24 | Impuesto 2% : *${-imt}* ❇️ Eris 25 | Total gastado: *${-limit}* ❇️ Eris`) 26 | conn.fakeReply(m.chat, `*+${poin}* *❇️ Eris.*`, who, m.text) 27 | } 28 | handler.help = ['darstars *@user *'] 29 | handler.tags = ['rpg'] 30 | handler.command = ['darcoins', 'darstars'] 31 | handler.register = true 32 | 33 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-darxp.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | import MessageType from '@whiskeysockets/baileys' 4 | let impuesto = 0.02 5 | let handler = async (m, { conn, text }) => { 6 | let who 7 | if (m.isGroup) who = m.mentionedJid[0] 8 | else who = m.chat 9 | if (!who) throw '🚩 Menciona al usuario con *@user.*' 10 | let txt = text.replace('@' + who.split`@`[0], '').trim() 11 | if (!txt) throw '🚩 Ingrese la cantidad de *💫 XP* que quiere transferir.' 12 | if (isNaN(txt)) throw 'Sólo números.' 13 | let xp = parseInt(txt) 14 | let exp = xp 15 | let imt = Math.ceil(xp * impuesto) 16 | exp += imt 17 | if (exp < 1) throw '🚩 Mínimo es 1 💫 XP.*' 18 | let users = global.db.data.users 19 | if (exp > users[m.sender].exp) throw '*💫 XP* insuficiente para transferir.' 20 | users[m.sender].exp -= exp 21 | users[who].exp += xp 22 | 23 | await m.reply(`*${-xp}* 💫XP 24 | Impuesto 2% : *${-imt}* 💫 XP 25 | Total gastado: *${-exp} 💫 XP*`) 26 | conn.fakeReply(m.chat, `*+${xp} 💫XP.*`, who, m.text) 27 | } 28 | handler.help = ['darxp *@user *'] 29 | handler.tags = ['rpg'] 30 | handler.command = ['darxp'] 31 | handler.register = true 32 | 33 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-deposit.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | let handler = async (m, { args }) => { 4 | let user = global.db.data.users[m.sender] 5 | if (!args[0]) return m.reply('🚩 Ingresa la cantidad de *❇️ Eris* que deseas Depositar.') 6 | if ((args[0]) < 1) return m.reply('🚩 Ingresa una cantidad válida de *❇️ Eris.') 7 | if (args[0] == 'all') { 8 | let count = parseInt(user.limit) 9 | user.limit -= count * 1 10 | user.bank += count * 1 11 | await m.reply(`Depositaste *${count} ❇️ Eris* al Banco.`) 12 | return !0 13 | } 14 | if (!Number(args[0])) return m.reply('🚩 La cantidad deve ser un Numero.') 15 | let count = parseInt(args[0]) 16 | if (!user.limit) return m.reply('No tienes *❇️ Eris* en la Cartera.') 17 | if (user.limit < count) return m.reply(`Solo tienes *${user.limit} ❇️ Eris* en la Cartera.`) 18 | user.limit -= count * 1 19 | user.bank += count * 1 20 | await m.reply(`Depositaste *${count} ❇️ Eris* al Banco.`) 21 | } 22 | 23 | handler.help = ['depositar'] 24 | handler.tags = ['rpg'] 25 | handler.command = ['deposit', 'depositar', 'dep', 'd'] 26 | handler.register = true 27 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-deposit.js.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | let handler = async (m, { args }) => { 4 | let user = global.db.data.users[m.sender] 5 | if (!args[0]) return m.reply('🚩 Ingresa la cantidad de *⭐ Estrellas* que deseas Depositar.') 6 | if ((args[0]) < 1) return m.reply('🚩 Ingresa una cantidad válida de *⭐ Estrellas.') 7 | if (args[0] == 'all') { 8 | let count = parseInt(user.limit) 9 | user.limit -= count * 1 10 | user.bank += count * 1 11 | await m.reply(`Depositaste *${count} ⭐ Estrellas* al Banco.`) 12 | return !0 13 | } 14 | if (!Number(args[0])) return m.reply('🚩 La cantidad deve ser un Numero.') 15 | let count = parseInt(args[0]) 16 | if (!user.limit) return m.reply('No tienes *⭐ Estrellas* en la Cartera.') 17 | if (user.limit < count) return m.reply(`Solo tienes *${user.limit} ⭐ Estrellas* en la Cartera.`) 18 | user.limit -= count * 1 19 | user.bank += count * 1 20 | await m.reply(`Depositaste *${count} ⭐ Estrellas* al Banco.`) 21 | } 22 | 23 | handler.help = ['depositar'] 24 | handler.tags = ['rpg'] 25 | handler.command = ['deposit', 'depositar', 'dep', 'd'] 26 | handler.register = true 27 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-eris.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, {conn, usedPrefix}) => { 4 | 5 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 6 | let user = global.db.data.users[who] 7 | let name = conn.getName(who) 8 | if (!(who in global.db.data.users)) return conn.reply(m.chat, '🚩 El usuario no se encuentra en mi base de Datos.', m, rcanal).then(_ => m.react('✖️')) 9 | let img = await (await fetch(`https://tinyurl.com/yrkgv3qm`)).buffer() 10 | let txt = ` – *S T A R S - U S E R*\n\n` 11 | txt += `┌ ✩ *Nombre* : ${user.name}\n` 12 | txt += `│ ✩ *Eris* : ${toNum(user.limit)} ( *${user.limit}* )\n` 13 | txt += `│ ✩ *Bank* : ${toNum(user.bank)} ( *${user.bank}* )\n` 14 | txt += `└ ✩ *XP* : ${toNum(user.exp)} ( *${user.exp}* )` 15 | let mentionedJid = [who] 16 | 17 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 18 | } 19 | handler.help = ['eris'] 20 | handler.tags = ['rpg'] 21 | handler.command = ['coins', 'wallet', 'cartera', 'eris', 'eri', 'bal', 'balance'] 22 | handler.register = true 23 | export default handler 24 | 25 | function toNum(number) { 26 | if (number >= 1000 && number < 1000000) { 27 | return (number / 1000).toFixed(1) + 'k' 28 | } else if (number >= 1000000) { 29 | return (number / 1000000).toFixed(1) + 'M' 30 | } else if (number <= -1000 && number > -1000000) { 31 | return (number / 1000).toFixed(1) + 'k' 32 | } else if (number <= -1000000) { 33 | return (number / 1000000).toFixed(1) + 'M' 34 | } else { 35 | return number.toString() 36 | } 37 | } -------------------------------------------------------------------------------- /plugins/rpg-eris.js.bak: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, {conn, usedPrefix}) => { 4 | 5 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 6 | let user = global.db.data.users[who] 7 | let name = conn.getName(who) 8 | if (!(who in global.db.data.users)) return conn.reply(m.chat, '🚩 El usuario no se encuentra en mi base de Datos.', m, rcanal).then(_ => m.react('✖️')) 9 | let img = await (await fetch(`https://tinyurl.com/yrkgv3qm`)).buffer() 10 | let txt = ` – *S T A R S - U S E R*\n\n` 11 | txt += `┌ ✩ *Nombre* : ${user.name}\n` 12 | txt += `│ ✩ *Estrellas* : ${toNum(user.limit)} ( *${user.limit}* )\n` 13 | txt += `│ ✩ *Bank* : ${toNum(user.bank)} ( *${user.bank}* )\n` 14 | txt += `└ ✩ *XP* : ${toNum(user.exp)} ( *${user.exp}* )` 15 | let mentionedJid = [who] 16 | 17 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 18 | } 19 | handler.help = ['estrellas'] 20 | handler.tags = ['rpg'] 21 | handler.command = ['coins', 'wallet', 'cartera', 'estrellas', 'stars', 'bal', 'balance'] 22 | handler.register = true 23 | export default handler 24 | 25 | function toNum(number) { 26 | if (number >= 1000 && number < 1000000) { 27 | return (number / 1000).toFixed(1) + 'k' 28 | } else if (number >= 1000000) { 29 | return (number / 1000000).toFixed(1) + 'M' 30 | } else if (number <= -1000 && number > -1000000) { 31 | return (number / 1000).toFixed(1) + 'k' 32 | } else if (number <= -1000000) { 33 | return (number / 1000000).toFixed(1) + 'M' 34 | } else { 35 | return number.toString() 36 | } 37 | } -------------------------------------------------------------------------------- /plugins/rpg-levelup.js: -------------------------------------------------------------------------------- 1 | import { canLevelUp, xpRange } from '../lib/levelling.js' 2 | import fetch from 'node-fetch' 3 | 4 | let handler = async (m, { conn }) => { 5 | let img = await (await fetch(`https://telegra.ph/file/b97148e2154508f63d909.jpg`)).buffer() 6 | let name = conn.getName(m.sender) 7 | let user = global.db.data.users[m.sender] 8 | if (!canLevelUp(user.level, user.exp, global.multiplier)) { 9 | let { min, xp, max } = xpRange(user.level, global.multiplier) 10 | let txt = ` – *L E V E L U P - U S E R*\n\n` 11 | txt += `┌ ✩ *Nombre* : ${name}\n` 12 | txt += `│ ✩ *Nivel* : ${user.level}\n` 13 | txt += `└ ✩ *XP* : ${user.exp - min}/${xp}\n\n` 14 | txt += `Te falta *${max - user.exp}* de *💫 XP* para subir de nivel` 15 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 16 | } 17 | let before = user.level * 1 18 | while (canLevelUp(user.level, user.exp, global.multiplier)) user.level++ 19 | if (before !== user.level) { 20 | let txt = ` – *L E V E L U P - U S E R*\n\n` 21 | txt += `┌ ✩ *Nombre* : ${conn.getName(m.sender)}\n` 22 | txt += `│ ✩ *Nivel Anterior* : ${before}\n` 23 | txt += `└ ✩ *Nivel Actual* : ${user.level}\n\n` 24 | txt += `🚩 Cuanto más interactúes con *Elaina Ai*, mayor será tu Nivel` 25 | 26 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 27 | } 28 | } 29 | handler.help = ['levelup'] 30 | handler.tags = ['rpg'] 31 | 32 | handler.command = ['nivel', 'lvl', 'levelup', 'level'] 33 | handler.register = true 34 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-levelup.js.bak: -------------------------------------------------------------------------------- 1 | import { canLevelUp, xpRange } from '../lib/levelling.js' 2 | import fetch from 'node-fetch' 3 | 4 | let handler = async (m, { conn }) => { 5 | let img = await (await fetch(`https://telegra.ph/file/b97148e2154508f63d909.jpg`)).buffer() 6 | let name = conn.getName(m.sender) 7 | let user = global.db.data.users[m.sender] 8 | if (!canLevelUp(user.level, user.exp, global.multiplier)) { 9 | let { min, xp, max } = xpRange(user.level, global.multiplier) 10 | let txt = ` – *L E V E L U P - U S E R*\n\n` 11 | txt += `┌ ✩ *Nombre* : ${name}\n` 12 | txt += `│ ✩ *Nivel* : ${user.level}\n` 13 | txt += `└ ✩ *XP* : ${user.exp - min}/${xp}\n\n` 14 | txt += `Te falta *${max - user.exp}* de *💫 XP* para subir de nivel` 15 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 16 | } 17 | let before = user.level * 1 18 | while (canLevelUp(user.level, user.exp, global.multiplier)) user.level++ 19 | if (before !== user.level) { 20 | let txt = ` – *L E V E L U P - U S E R*\n\n` 21 | txt += `┌ ✩ *Nombre* : ${conn.getName(m.sender)}\n` 22 | txt += `│ ✩ *Nivel Anterior* : ${before}\n` 23 | txt += `└ ✩ *Nivel Actual* : ${user.level}\n\n` 24 | txt += `🚩 Cuanto más interactúes con *Ai Hoshino*, mayor será tu Nivel` 25 | 26 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 27 | } 28 | } 29 | handler.help = ['levelup'] 30 | handler.tags = ['rpg'] 31 | 32 | handler.command = ['nivel', 'lvl', 'levelup', 'level'] 33 | handler.register = true 34 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-minar.js: -------------------------------------------------------------------------------- 1 | let cooldowns = {} 2 | 3 | let handler = async (m, { conn }) => { 4 | 5 | let hasil = Math.floor(Math.random() * 5000) 6 | let name = conn.getName(m.sender) 7 | 8 | let tiempoEspera = 5 * 60 9 | if (cooldowns[m.sender] && Date.now() - cooldowns[m.sender] < tiempoEspera * 1000) { 10 | let tiempoRestante = segundosAHMS(Math.ceil((cooldowns[m.sender] + tiempoEspera * 1000 - Date.now()) / 1000)) 11 | conn.reply(m.chat, `🚩 Hola ${name}, Ya has minado recientemente, espera ⏱ *${tiempoRestante}* para regresar a la Mina.`, m, rcanal) 12 | return 13 | } 14 | 15 | global.db.data.users[m.sender].exp += hasil 16 | let txt = `🚩 Genial! minaste *${hasil} 💫 XP.*` 17 | await m.react('⛏') 18 | await conn.reply(m.chat, txt, m, rcanal) 19 | 20 | cooldowns[m.sender] = Date.now() 21 | } 22 | handler.help = ['minar'] 23 | handler.tags = ['rpg'] 24 | handler.command = ['minar', 'miming', 'mine'] 25 | handler.register = true 26 | export default handler 27 | 28 | function segundosAHMS(segundos) { 29 | let horas = Math.floor(segundos / 3600) 30 | let minutos = Math.floor((segundos % 3600) / 60) 31 | let segundosRestantes = segundos % 60 32 | return `${minutos} minutos y ${segundosRestantes} segundos` 33 | } -------------------------------------------------------------------------------- /plugins/rpg-retirar.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | let handler = async (m, { args }) => { 4 | let user = global.db.data.users[m.sender] 5 | if (!args[0]) return m.reply('🚩 Ingresa la cantidad de *❇️ Eris* que deseas Retirar.') 6 | if (args[0] == 'all') { 7 | let count = parseInt(user.bank) 8 | user.bank -= count * 1 9 | user.limit += count * 1 10 | await m.reply(`🚩 Retiraste *${count} ❇️ Eris* del Banco.`) 11 | return !0 12 | } 13 | if (!Number(args[0])) return m.reply('🚩 La cantidad deve ser un Numero.') 14 | let count = parseInt(args[0]) 15 | if (!user.bank) return m.reply('No tienes *❇️ Eris* en el Banco.') 16 | if (user.bank < count) return m.reply(`Solo tienes *${user.bank} ❇️ Eris* en el Banco.`) 17 | user.bank -= count * 1 18 | user.limit += count * 1 19 | await m.reply(`🚩 Retiraste *${count} ❇️ Eris* del Banco.`) 20 | } 21 | 22 | handler.help = ['retirar'] 23 | handler.tags = ['rpg'] 24 | handler.command = ['withdraw', 'retirar', 'wd'] 25 | handler.register = true 26 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-retirar.js.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | let handler = async (m, { args }) => { 4 | let user = global.db.data.users[m.sender] 5 | if (!args[0]) return m.reply('🚩 Ingresa la cantidad de *✳️ Eris* que deseas Retirar.') 6 | if (args[0] == 'all') { 7 | let count = parseInt(user.bank) 8 | user.bank -= count * 1 9 | user.limit += count * 1 10 | await m.reply(`🚩 Retiraste *${count} ✳️ Eris* del Banco.`) 11 | return !0 12 | } 13 | if (!Number(args[0])) return m.reply('🚩 La cantidad deve ser un Numero.') 14 | let count = parseInt(args[0]) 15 | if (!user.bank) return m.reply('No tienes *✳️ Eris* en el Banco.') 16 | if (user.bank < count) return m.reply(`Solo tienes *${user.bank} ✳️ Eris* en el Banco.`) 17 | user.bank -= count * 1 18 | user.limit += count * 1 19 | await m.reply(`🚩 Retiraste *${count} ✳️ Eris* del Banco.`) 20 | } 21 | 22 | handler.help = ['retirar'] 23 | handler.tags = ['rpg'] 24 | handler.command = ['withdraw', 'retirar', 'wd'] 25 | handler.register = true 26 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-shop.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 450 2 | let handler = async (m, { conn, command, args }) => { 3 | let count = command.replace(/^buycoins/i, '') 4 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].exp / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 5 | count = Math.max(1, count) 6 | if (global.db.data.users[m.sender].exp >= xpperlimit * count) { 7 | global.db.data.users[m.sender].exp -= xpperlimit * count 8 | global.db.data.users[m.sender].limit += count 9 | conn.reply(m.chat, `╭────═[ *R P G - S H O P* ]═─────⋆ 10 | │╭───────────────··· 11 | ││✯ *Compra* : + ${count} ❇️ Eris 12 | ││✯ *Costo* : -${xpperlimit * count} 💫 XP 13 | │╰────────────────··· 14 | ╰───────────═┅═──────────`, m, rcanal) 15 | } else conn.reply(m.chat, `🚩 Lo siento, no tienes suficientes *⭐ XP* para comprar *${count} ❇️ Eris.*`, m, rcanal) 16 | } 17 | handler.help = ['buycoins', 'buyall'] 18 | handler.tags = ['rpg'] 19 | handler.command = ['buycoins', 'buyall'] 20 | handler.register = true 21 | 22 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-shop.js.bak: -------------------------------------------------------------------------------- 1 | const xpperlimit = 450 2 | let handler = async (m, { conn, command, args }) => { 3 | let count = command.replace(/^buycoins/i, '') 4 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].exp / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 5 | count = Math.max(1, count) 6 | if (global.db.data.users[m.sender].exp >= xpperlimit * count) { 7 | global.db.data.users[m.sender].exp -= xpperlimit * count 8 | global.db.data.users[m.sender].limit += count 9 | conn.reply(m.chat, `╭────═[ *R P G - S H O P* ]═─────⋆ 10 | │╭───────────────··· 11 | ││✯ *Compra* : + ${count} ✳️ Eris 12 | ││✯ *Costo* : -${xpperlimit * count} 💫 XP 13 | │╰────────────────··· 14 | ╰───────────═┅═──────────`, m, rcanal) 15 | } else conn.reply(m.chat, `🚩 Lo siento, no tienes suficientes *⭐ XP* para comprar *${count} ✳️ Eris.*`, m, rcanal) 16 | } 17 | handler.help = ['buycoins', 'buyall'] 18 | handler.tags = ['rpg'] 19 | handler.command = ['buycoins', 'buyall'] 20 | handler.register = true 21 | 22 | export default handler -------------------------------------------------------------------------------- /plugins/search-spotify.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | 3 | let handler = async (m, { conn, command, args, text, usedPrefix }) => { 4 | if (!text) return conn.reply(m.chat, '🚩 Ingresa el título de un video o canción de YouTube.\n\n`Ejemplo:`\n' + `> *${usedPrefix + command}* Gemini Aaliyah - If Only`, m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let res = await Starlights.spotifySearch(text) 8 | let img = await (await fetch(`${res[0].thumbnail}`)).buffer() 9 | let txt = '`乂 S P O T I F Y - S E A R C H`' 10 | for (let i = 0; i < res.length; i++) { 11 | txt += `\n\n` 12 | txt += ` *» Nro* : ${i + 1}\n` 13 | txt += ` *» Titulo* : ${res[i].title}\n` 14 | txt += ` *» Artista* : ${res[i].artist}\n` 15 | txt += ` *» Url* : ${res[i].url}` 16 | } 17 | 18 | await conn.sendFile(m.chat, img, 'thumbnail.jpg', txt, m, null, rcanal) 19 | await m.react('✅') 20 | } catch { 21 | await m.react('✖️') 22 | }} 23 | handler.help = ['spotifysearch **'] 24 | handler.tags = ['search'] 25 | handler.command = ['spotifysearch'] 26 | handler.register = true 27 | 28 | export default handler -------------------------------------------------------------------------------- /plugins/search-tweet-posts.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | if (!text) return conn.reply(m.chat, '🚩 Ingrese el texto del post que deseas buscar.', m, rcanal) 5 | await m.react('🕓') 6 | try { 7 | let json = await axios.get(`https://apis-starlights-team.koyeb.app/starlight/Twitter-Posts?text=${text}`, { headers: { 'Content-Type': 'application/json' }}) 8 | let result = json.data.result 9 | if (!result || !result.length) return conn.reply(m.chat, `No se encontraron resultados.`, m, rcanal) 10 | 11 | let txt = `*乂 T W I T T E R - S E A R C H*` 12 | result.forEach(({ user, post, profile, user_link }, index) => { 13 | txt += `\n\n` 14 | txt += ` *» Nro* : ${index + 1}\n` 15 | txt += ` *» User* : ${user}\n` 16 | txt += ` *» Publicacion* : ${post}\n` 17 | txt += ` *» Perfil* : ${profile}\n` 18 | txt += ` *» Link* : ${user_link}` 19 | }) 20 | await conn.reply(m.chat, txt, m, rcanal) 21 | await m.react('✅') 22 | } catch { 23 | await m.react('✖️') 24 | }} 25 | handler.help = ['tweetposts **'] 26 | handler.tags = ['search'] 27 | handler.command = ['tweetposts'] 28 | handler.register = true 29 | 30 | export default handler 31 | -------------------------------------------------------------------------------- /plugins/serach-google.js: -------------------------------------------------------------------------------- 1 | import {googleIt} from '@bochilteam/scraper'; 2 | import google from 'google-it'; 3 | import axios from 'axios'; 4 | let handler = async (m, { conn, command, args, usedPrefix }) => { 5 | const fetch = (await import('node-fetch')).default; 6 | const text = args.join` `; 7 | if (!text) return conn.reply(m.chat, '🚩 Ingresa lo que deseas buscar junto al comando.', m) 8 | await m.react('🕓') 9 | let img = 'https://i.ibb.co/P5kZNFF/file.jpg' 10 | const url = 'https://google.com/search?q=' + encodeURIComponent(text); 11 | google({'query': text}).then(res => { 12 | let teks = `\t\t\t*乂 S E A R C H - G O O G L E*\n\n` 13 | for (let g of res) { 14 | teks += `*${g.title}*\n${g.link}\n${g.snippet}\n\n` 15 | } 16 | conn.sendFile(m.chat, img, 'thumbnail.jpg', teks, m).then(_ => m.react('✅')) 17 | }) 18 | } 19 | handler.help = ['google **'] 20 | handler.tags = ['tools', 'search'] 21 | handler.command = /^googlef?$/i 22 | //handler.limit = 1 23 | handler.register = true 24 | export default handler; -------------------------------------------------------------------------------- /plugins/serbot-bots.js: -------------------------------------------------------------------------------- 1 | import ws from 'ws' 2 | import fetch from 'node-fetch' 3 | 4 | async function handler(m, { conn: _envio, usedPrefix }) { 5 | const uniqueUsers = new Map() 6 | 7 | global.conns.forEach((conn) => { 8 | if (conn.user && conn.ws.socket && conn.ws.socket.readyState !== ws.CLOSED) { 9 | uniqueUsers.set(conn.user.jid.replace(/[^0-9]/g, ''), conn.user)}}) 10 | 11 | const message = Array.from(uniqueUsers.values()).map((user, index) => `┌ ✩ *${index + 1}* : @${user.jid.replace(/[^0-9]/g, '')}\n│ ✩ *Link* : http://wa.me/${user.jid.replace(/[^0-9]/g, '')}\n└ ✩ *Nombre* : ${user.name || 'Ai Hoshino'}\n` 12 | ).join('\n') 13 | 14 | const replyMessage = message.length === 0 ? "" : message 15 | const totalUsers = uniqueUsers.size; 16 | const responseMessage = `${` – *S E R B O T - S U B B O T S*\n\n${replyMessage.trim()}`.trim()}` 17 | 18 | let img = await (await fetch(`https://f.uguu.se/KvZhfyZK.jpg`)).buffer() 19 | 20 | await _envio.sendFile(m.chat, img, 'thumbnail.jpg', responseMessage, m, false, { mentions: _envio.parseMention(responseMessage) }) 21 | } 22 | handler.command = ['listjadibot', 'bots'] 23 | handler.help = ['bots'] 24 | handler.tags = ['serbot'] 25 | export default handler -------------------------------------------------------------------------------- /plugins/serbot-bots.js.bak: -------------------------------------------------------------------------------- 1 | import ws from 'ws' 2 | import fetch from 'node-fetch' 3 | 4 | async function handler(m, { conn: _envio, usedPrefix }) { 5 | const uniqueUsers = new Map() 6 | 7 | global.conns.forEach((conn) => { 8 | if (conn.user && conn.ws.socket && conn.ws.socket.readyState !== ws.CLOSED) { 9 | uniqueUsers.set(conn.user.jid.replace(/[^0-9]/g, ''), conn.user)}}) 10 | 11 | const message = Array.from(uniqueUsers.values()).map((user, index) => `┌ ✩ *${index + 1}* : @${user.jid.replace(/[^0-9]/g, '')}\n│ ✩ *Link* : http://wa.me/${user.jid.replace(/[^0-9]/g, '')}\n└ ✩ *Nombre* : ${user.name || 'Ai Hoshino'}\n` 12 | ).join('\n') 13 | 14 | const replyMessage = message.length === 0 ? "" : message 15 | const totalUsers = uniqueUsers.size; 16 | const responseMessage = `${` – *S E R B O T - S U B B O T S*\n\n${replyMessage.trim()}`.trim()}` 17 | 18 | let img = await (await fetch(`https://i.ibb.co/1dW0kGf/file.jpg`)).buffer() 19 | 20 | await _envio.sendFile(m.chat, img, 'thumbnail.jpg', responseMessage, m, false, { mentions: _envio.parseMention(responseMessage) }) 21 | } 22 | handler.command = ['listjadibot', 'bots'] 23 | handler.help = ['bots'] 24 | handler.tags = ['serbot'] 25 | export default handler -------------------------------------------------------------------------------- /plugins/serbot-delserbot.js: -------------------------------------------------------------------------------- 1 | import { readdirSync, statSync, unlinkSync, existsSync, readFileSync, watch, rmSync, promises as fs} from "fs" 2 | import path, { join } from 'path' 3 | 4 | let handler = async (m, { conn: parentw, usedPrefix, command}, args) => { 5 | 6 | let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 7 | let uniqid = `${who.split`@`[0]}` 8 | let userS = `${conn.getName(who)}` 9 | 10 | try { 11 | await fs.rmdir("./serbot/" + uniqid, { recursive: true, force: true }) 12 | await parentw.sendMessage(m.chat, { text: '🚩 Sub-Bot eliminado.' }, { quoted: m }) 13 | } catch(err) { 14 | if (err.code === 'ENOENT' && err.path === `./serbot/${uniqid}`) { 15 | await parentw.sendMessage(m.chat, { text: "No cuentas con ninguna sesión de Sub-Bot." }, { quoted: m }) 16 | } else { 17 | await m.react('✖️') 18 | }}} 19 | handler.tags = ['serbot'] 20 | handler.help = ['delsession'] 21 | handler.command = /^(deletesess?ion|eliminarsesion|borrarsesion|delsess?ion|cerrarsesion|delserbot|logout)$/i 22 | //handler.private = true 23 | handler.fail = null 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/serbot-stop.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | if (global.conn.user.jid === conn.user.jid) { 3 | } else { 4 | await conn.reply(m.chat, `Adiós Ai :(`, m, rcanal) 5 | conn.ws.close() 6 | } 7 | } 8 | handler.help = ['stop'] 9 | handler.tags = ['serbot'] 10 | handler.command = ['stop', 'stopbot', 'stopbebot'] 11 | handler.owner = true 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-emojimix.js: -------------------------------------------------------------------------------- 1 | import MessageType from '@whiskeysockets/baileys' 2 | import fetch from 'node-fetch' 3 | import { sticker } from '../lib/sticker.js' 4 | import fs from "fs" 5 | const fetchJson = (url, options) => new Promise(async (resolve, reject) => { 6 | fetch(url, options) 7 | .then(response => response.json()) 8 | .then(json => { 9 | resolve(json) 10 | }) 11 | .catch((err) => { 12 | reject(err) 13 | })}) 14 | let handler = async (m, { conn, text, args, usedPrefix, command }) => { 15 | if (!args[0]) return m.reply(`🚩 Ejemplo: *${usedPrefix + command}* 😎+🤑`) 16 | let [emoji, emoji2] = text.split`+` 17 | let anu = await fetchJson(`https://tenor.googleapis.com/v2/featured?key=AIzaSyAyimkuYQYF_FXVALexPuGQctUWRURdCYQ&contentfilter=high&media_filter=png_transparent&component=proactive&collection=emoji_kitchen_v5&q=${encodeURIComponent(emoji)}_${encodeURIComponent(emoji2)}`) 18 | for (let res of anu.results) { 19 | let stiker = await sticker(false, res.url, global.packname, global.author) 20 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 21 | }} 22 | handler.help = ['emojimix **'] 23 | handler.tags = ['sticker'] 24 | handler.command = ['emojimix'] 25 | //handler.limit = 1 26 | handler.register = true 27 | 28 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-qc.js: -------------------------------------------------------------------------------- 1 | import { sticker } from '../lib/sticker.js' 2 | import axios from 'axios' 3 | 4 | const handler = async (m, { conn, args }) => { 5 | let text; 6 | if (args.length >= 1) { 7 | text = args.slice(0).join(" "); 8 | } else if (m.quoted && m.quoted.text) { 9 | text = m.quoted.text; 10 | } else throw "🚩 Ingresa un texto junto al comando."; 11 | if (!text) return conn.reply(m.chat, '🚩 Ingresa un texto junto al comando.', m, rcanal) 12 | if (text.length > 30) return conn.reply(m.chat, 'Solo se permiten 30 caracteres como Máximo.', m, rcanal) 13 | 14 | const randomColor = ['#000000']; 15 | 16 | const apiColor = randomColor[Math.floor(Math.random() * randomColor.length)]; 17 | 18 | const pp = await conn.profilePictureUrl(m.sender, 'image').catch(_ => 'https://telegra.ph/file/320b066dc81928b782c7b.png'); 19 | 20 | const obj = { 21 | "type": "quote", 22 | "format": "png", 23 | "backgroundColor": apiColor, 24 | "width": 512, 25 | "height": 768, 26 | "scale": 2, 27 | "messages": [{ 28 | "entities": [], 29 | "avatar": true, 30 | "from": { 31 | "id": 1, 32 | "name": m.name, 33 | "photo": { 34 | "url": pp 35 | } 36 | }, 37 | "text": text, 38 | "replyMessage": {} 39 | }] 40 | }; 41 | 42 | const json = await axios.post('https://btzqc.betabotz.eu.org/generate', obj, { 43 | headers: { 44 | 'Content-Type': 'application/json' 45 | } 46 | }); 47 | 48 | const buffer = Buffer.from(json.data.result.image, 'base64'); 49 | const stiker = await sticker(buffer, false, global.stickpack, global.stickauth); 50 | if (stiker) return conn.sendFile(m.chat, stiker, 'Quotely.webp', '', m); 51 | } 52 | 53 | handler.help = ['quotly **'] 54 | handler.tags = ['sticker'] 55 | handler.command = ['quotly', 'qc'] 56 | handler.register = true 57 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-scat.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { sticker } from '../lib/sticker.js' 3 | 4 | let handler = async (m, { conn }) => { 5 | try { 6 | let res = await fetch(global.API('https://nekos.life/api/v2', '/img/meow')) 7 | let json = await res.json() 8 | let stiker = await sticker(null, json.url, global.packname, global.author) 9 | if (stiker) return conn.sendFile(m.chat, stiker, 'sticker.gif', '', m, false, { 10 | asSticker: true 11 | }) 12 | throw stiker.toString() 13 | } catch { 14 | await m.react('✖️') 15 | }} 16 | handler.help = ['scat'] 17 | handler.tags = ['sticker'] 18 | handler.command = /^scat|stickercat|cats$/i 19 | handler.register = true 20 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-smeme.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | import { sticker } from '../lib/sticker.js' 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let [atas, bawah] = text.split`|` 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (q.msg || q).mimetype || '' 7 | if (!mime) return m.reply(`🚩 Responde a una imagen e ingresa un texto junto al comando.`) 8 | try { 9 | if (!/image\/(jpe?g|png)/.test(mime)) return await m.react('✖️') 10 | await m.react('🕓') 11 | let img = await q.download() 12 | let url = await uploadImage(img) 13 | let meme = `https://api.memegen.link/images/custom/${encodeURIComponent(atas ? atas : '')}/${encodeURIComponent(bawah ? bawah : '')}.png?background=${url}` 14 | let stiker = await sticker(false, meme, global.packname, global.author) 15 | if (stiker) await conn.sendFile(m.chat, stiker, '', author, m, '', { asSticker: 1 }) 16 | await m.react('✅') 17 | } catch { 18 | await m.react('✖️') 19 | }} 20 | handler.help = ['smeme **'] 21 | handler.tags = ['sticker'] 22 | handler.command = /^(smeme)$/i 23 | handler.register = true 24 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-wm.js: -------------------------------------------------------------------------------- 1 | import { addExif } from '../lib/sticker.js' 2 | let handler = async (m, { conn, text }) => { 3 | if (!m.quoted) return conn.reply(m.chat, `🚩 Responde a a un *Sticker.*`, m, rcanal) 4 | let stiker = false 5 | try { 6 | let [packname, ...author] = text.split('|') 7 | author = (author || []).join('|') 8 | let mime = m.quoted.mimetype || '' 9 | if (!/webp/.test(mime)) return conn.reply(m.chat, `🚩 Responde a a un *Sticker.*`, m, rcanal) 10 | let img = await m.quoted.download() 11 | if (!img) return conn.reply(m.chat, `🚩 Responde a a un *Sticker.*`, m, rcanal) 12 | stiker = await addExif(img, packname || '', author || '') 13 | } catch (e) { 14 | console.error(e) 15 | if (Buffer.isBuffer(e)) stiker = e 16 | } finally { 17 | if (stiker) conn.sendFile(m.chat, stiker, 'wm.webp', '', m) 18 | else return conn.reply(m.chat, `🚩 Responde a a un *Sticker.*`, m, rcanal) 19 | } 20 | } 21 | handler.help = ['wm *|*'] 22 | handler.tags = ['sticker'] 23 | handler.command = ['take', 'robar', 'wm'] 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-wm2.js: -------------------------------------------------------------------------------- 1 | import { addExif } from '../lib/sticker.js' 2 | let handler = async (m, { conn, text }) => { 3 | if (!m.quoted) return conn.reply(m.chat, `🚩 Responde a a un *Sticker.*`, m, rcanal) 4 | let stiker = false 5 | try { 6 | let mime = m.quoted.mimetype || '' 7 | if (!/webp/.test(mime)) throw isSticker 8 | let img = await m.quoted.download() 9 | if (!img) throw isSticker 10 | stiker = await addExif(img, global.packname, global.author) 11 | } catch (e) { 12 | console.error(e) 13 | if (Buffer.isBuffer(e)) stiker = e 14 | } finally { 15 | if (stiker) conn.sendFile(m.chat, stiker, 'wm.webp', '', m) 16 | else return conn.reply(m.chat, `🚩 Responde a a un *Sticker.*`, m, rcanal) 17 | } 18 | } 19 | 20 | handler.help = ['wm2'] 21 | handler.tags = ['sticker'] 22 | handler.command = /^(take2|robar2|wm2)$/i 23 | handler.register = true 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/tools-acortar.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | let handler = async (m, {conn, args, text}) => { 3 | try { 4 | if (!text) return m.reply('🚩 Ingresa el enlace que deseas acortar.') 5 | let shortUrl1 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text(); 6 | if (!shortUrl1) return m.reply(`🚩 Ingresa el enlace que deseas acortar.`) 7 | let done = `*» Url Acortado* : ${shortUrl1}` 8 | m.reply(done) 9 | } catch { 10 | await m.react('✖️') 11 | }} 12 | handler.help = ['acortar'].map((v) => v + ' **') 13 | handler.tags = ['tools'] 14 | handler.command = /^(tinyurl|short|acortar|corto)$/i; 15 | handler.fail = null 16 | handler.register = true 17 | export default handler -------------------------------------------------------------------------------- /plugins/tools-ai.js: -------------------------------------------------------------------------------- 1 | import Starlights from '@StarlightsTeam/Scraper' 2 | import fetch from 'node-fetch' 3 | 4 | let handler = async (m, { conn, text, usedPrefix, command }) => { 5 | if (!text) return conn.reply(m.chat,`*🚩 Ingrese su petición*\n*🪼 Ejemplo de uso:* ${usedPrefix + command} como hacer estrella de papel`, m, rcanal) 6 | await m.react('💬') 7 | try { 8 | let { msg } = await Starlights.openAi(text) 9 | await conn.reply(m.chat, msg, m, rcanal) 10 | } catch { 11 | try { 12 | let { result } = await Starlights.ChatGpt(text) 13 | await conn.reply(m.chat, result, m, rcanal) 14 | } catch { 15 | try { 16 | let { result } = await Starlights.ChatGptV2(text) 17 | await conn.reply(m.chat, result, m, rcanal) 18 | } catch { 19 | try { 20 | let api = await fetch(`https://apis-starlights-team.koyeb.app/starlight/chatgpt?text=${text}`) 21 | let json = await api.json() 22 | 23 | if (json.result) { 24 | await conn.reply(m.chat, json.result, m, rcanal) 25 | } else { 26 | await m.react('✖️') 27 | } 28 | } catch { 29 | await m.react('✖️') 30 | }}}}} 31 | 32 | handler.help = ['ai **'] 33 | handler.tags = ['tools'] 34 | handler.command = /^(miku|ai|ia|chatgpt|gpt)$/i 35 | handler.register = true 36 | 37 | export default handler 38 | -------------------------------------------------------------------------------- /plugins/tools-blackbox.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) return conn.reply(m.chat, `*🚩 Ingrese su petición*\n*🪼 Ejemplo de uso:* ${usedPrefix + command} como hacer estrella de papel`, m, rcanal) 5 | await m.react('💬') 6 | 7 | try { 8 | let api = await fetch(`https://apis-starlights-team.koyeb.app/starlight/blackbox?system=Eres+una+ai+llamada+blackbox&text=${text}`) 9 | let json = await api.json() 10 | 11 | if (json.results) { 12 | await conn.reply(m.chat, json.results, m, rcanal) 13 | } else { 14 | await m.react('✖️') 15 | } 16 | } catch { 17 | await m.react('✖️') 18 | } 19 | } 20 | handler.help = ['blackbox **'] 21 | handler.tags = ['tools'] 22 | handler.command = ['blackbox'] 23 | handler.register = true 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/tools-cal.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let id = m.chat 3 | conn.math = conn.math ? conn.math : {} 4 | if (id in conn.math) { 5 | clearTimeout(conn.math[id][3]) 6 | delete conn.math[id] 7 | m.reply('.... ') 8 | } 9 | let val = text 10 | .replace(/[^0-9\-\/+*×÷πEe()piPI/]/g, '') 11 | .replace(/×/g, '*') 12 | .replace(/÷/g, '/') 13 | .replace(/π|pi/gi, 'Math.PI') 14 | .replace(/e/gi, 'Math.E') 15 | .replace(/\/+/g, '/') 16 | .replace(/\++/g, '+') 17 | .replace(/-+/g, '-') 18 | let format = val 19 | .replace(/Math\.PI/g, 'π') 20 | .replace(/Math\.E/g, 'e') 21 | .replace(/\//g, '÷') 22 | .replace(/\*×/g, '×') 23 | try { 24 | console.log(val) 25 | let result = (new Function('return ' + val))() 26 | if (!result) throw result 27 | m.reply(`*${format}* = _${result}_`) 28 | } catch (e) { 29 | if (e == undefined) return m.reply('🚩 Ingresa la ecuación.\n\nsímbolos compatibles -, +, *, /, ×, ÷, π, e, (, )') 30 | return m.reply('Formato incorrecto, solo 0-9 y símbolo -, +, *, /, ×, ÷, π, e, (, ) que puedes usar') 31 | } 32 | } 33 | handler.help = ['cal **'] 34 | handler.tags = ['tools'] 35 | handler.command = ['cal', 'calc', 'calcular', 'calculadora'] 36 | handler.exp = 5 37 | handler.register = true 38 | export default handler -------------------------------------------------------------------------------- /plugins/tools-chazam.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import FormData from 'form-data' 3 | import fs from 'fs' 4 | 5 | let handler = async (m) => { 6 | let q = m.quoted ? m.quoted : m 7 | let mime = q.mediaType || '' 8 | if (/audio|video/.test(mime)) { 9 | let media = await q.download(true) 10 | let upload = await uploadFile(media) 11 | let shp = await fetch(`https://apis-starlights-team.koyeb.app/starlight/chazam?url=${upload.files[0].url}`, { headers: { 'Content-Type': 'application/json' }}) 12 | let json = await shp.json() 13 | let app = { title: json.title, artist: json.artist, type: json.type, url: json.url } 14 | let txt = `*\`-• C H A Z A M - M U S I C •-\`*\n\n` + 15 | `🍟 *Nombre:* ${app.title}\n` + 16 | `🍟 *Artista:* ${app.artist}\n` + 17 | `🍟 *Tipo:* ${app.type}\n` + 18 | `🍟 *Link:* ${app.url}` 19 | m.reply(txt) 20 | } else { 21 | return conn.reply(m.chat, '🚩 Responde a un *Audio/Video.*', m, rcanal) 22 | }} 23 | handler.help = ['chazam *