├── 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 *