import { promises } from 'fs' import { join } from 'path' import fetch from 'node-fetch' import moment from 'moment-timezone' import { xpRange } from '../lib/levelling.js' //import { plugins } from '../lib/plugins.js' let tags = {'main': 'โšก INFOBOT', 'jadibot': '๐Ÿ‘ฝ SER SUB BOT', 'downloader': '๐Ÿš€ DESCARGAS', 'game': '๐ŸŽ‰ JUEGOS', 'gacha': '๐Ÿ›๏ธ NEW - RPG GACHA', 'rg': '๐Ÿ”ฐ REGISTRO', 'group': 'โš™๏ธ GRUPO', 'nable': '๐Ÿ•น ENABLE/DISABLE', 'nsfw': '๐Ÿฅต COMANDO +18', 'buscadores': '๐Ÿ” BUSCADORES', 'sticker': '๐Ÿ“‚ STICKER', 'econ': '๐Ÿ›  RPG', 'convertidor': 'โš’๏ธ CONVERTIDORES', 'logo': '๐Ÿ‘ป LOGOS', // 'prem': 'PREMIUM', 'tools': '๐Ÿ”ง HERRAMIENTA', 'randow': '๐ŸŠ RANDOW', 'efec': '๐ŸŽ™ EFECTO NOTA DE VOZ', 'cmd': 'DATABASE', 'ansfw': 'NSFW ANIME', 'owner': '๐Ÿ‘‘ OWNER', } const defaultMenu = { before: `> ใ€Œ %wm ใ€ โ•ฐโ”ˆโžค ๐Š๐š๐ง๐ญ๐ฎ - ๐๐จ๐ญ โ”โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”Š ใ€Ž *Info User* ใ€ โ”Š ใ€Œ ๊›• ใ€ ๐‘ซ๐’†๐’— ๐‘ฉ๐’š ๐‘ช๐’“๐’™๐’”๐‘ด๐’๐’…๐’” โ”—โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ โ”‚แ‰โดฐ๐Ÿ‘คโ”Š *Usuario:* %name โ”‚แ‰โดฐ๐ŸŒโ”Š *Hora:* %hora โ”‚แ‰โดฐโšกโ”Š *Exp:* %totalexp XP โ”‚แ‰โดฐ๐Ÿ’ฐโ”Š *Tu limite:* %limit โ”‚แ‰โดฐโญ๏ธโ”Š *Rango:* %role โ”‚แ‰โดฐ๐Ÿง‹โ”Š *Nivel ยป* %level โ•ฐื„โ”€ื…โ”€ื„โ”€โญ’โ”€ื„โ”€ื…โ”€ื„โ”€โญ’โ”€ื„โ”€ื…โ”€ื„โ”€โญ’โ”€ื„โ”€ื…โ”€ื„โ”€โญ’ โ”โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”Š ใ€Ž *Info Bot* ใ€ โ”Š ใ€Œ ๊›• ใ€ ๐‘ซ๐’†๐’— ๐‘ฉ๐’š ๐‘ช๐’“๐’™๐’”๐‘ด๐’๐’…๐’” โ”—โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ โ”‚แ‰โดฐ๐Ÿ‘‘โ”Š *Author* ยป ๐‘ช๐’“๐’™๐’”๐‘ด๐’๐’…๐’” โ”‚แ‰โดฐ๐Ÿ’Žโ”Š *Tiempo activo:* %muptime %botOfc โ”‚แ‰โดฐโ˜๏ธโ”Š *Librerรญa ยป Baileys โ”‚แ‰โดฐ๐Ÿ“†โ”Š *Fecha:* %fecha โ”‚แ‰โดฐ๐Ÿ‘ฅ๏ธ๏ธโ”Š *Usuarios ยป* %rtotalreg de %totalreg โ•ฐโ”€ื„โ”€ื…โ”€ื„โ”€โญ’โ”€ื„โ”€ื…โ”€ื„โ”€โญ’โ”€ื„โ”€ื…โ”€ื„โ”€โญ’โ”€ื„โ”€ื…โ”€ื„โ”€โญ’ ${[`*\`โœ… Streaming Barato:\`*\nhttps://hackstorex.com`, `Prefieres scrips para tu web?\nhttps://MexSpin.fun`].getRandom()} `.trimStart(), header: 'โ”โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\nโ”Š\nโ”Š `ใ€Ž *%category* ใ€`\nโ”Š\nโ”Š ใ€Œ ๊›• ใ€ ๐‘ซ๐’†๐’— ๐‘ช๐’“๐’™๐’”๐‘ด๐’๐’…๐’”\nโ”—โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ ', body: ' โ”‚แ‰โดฐ๐Ÿ’Žโ”Š %cmd %islimit %isPremium', footer: `โ•šโ€ข \n`, after: ` `, } let handler = async (m, { conn, usedPrefix: _p, __dirname }) => { try { let _package = JSON.parse(await promises.readFile(join(__dirname, '../package.json')).catch(_ => ({}))) || {} let { exp, limit, level, role } = global.db.data.users[m.sender] let { min, xp, max } = xpRange(level, global.multiplier) let name = await conn.getName(m.sender) let d = new Date(new Date + 3600000) let locale = 'es' let fecha = moment.tz('America/Bogota').format('DD/MM/YYYY') let hora = moment.tz('America/Mexico_City').format('LT') let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(d / 84600000) % 5] let week = d.toLocaleDateString(locale, { weekday: 'long' }) let date = d.toLocaleDateString(locale, { day: 'numeric', month: 'long', year: 'numeric' }) let dateIslamic = Intl.DateTimeFormat(locale + '-TN-u-ca-islamic', { day: 'numeric', month: 'long', year: 'numeric' }).format(d) let time = d.toLocaleTimeString(locale, { hour: 'numeric', minute: 'numeric', second: 'numeric' }) let _uptime = process.uptime() * 1000 let _muptime if (process.send) { process.send('uptime') _muptime = await new Promise(resolve => { process.once('message', resolve) setTimeout(resolve, 1000)}) * 1000 } let muptime = clockString(_muptime) let uptime = clockString(_uptime) let taguser = '@' + m.sender.split('@s.whatsapp.net')[0]; let totalreg = Object.keys(global.db.data.users).length let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length let toUsers = `${toNum(totalreg)}` let toUserReg = `${toNum(rtotalreg)}` let botOfc = (conn.user.jid == global.conn.user.jid) ? `*โ€ข Bot Ofc:* wa.me/${global.conn.user.jid.split`@`[0]}` : `*โ€ข Soy un sub bot del:* wa.me/${global.conn.user.jid.split`@`[0]}` let help = Object.values(global.plugins).filter(plugin => !plugin.disabled).map(plugin => { return { help: Array.isArray(plugin.tags) ? plugin.help : [plugin.help], tags: Array.isArray(plugin.tags) ? plugin.tags : [plugin.tags], prefix: 'customPrefix' in plugin, limit: plugin.limit, premium: plugin.premium, enabled: !plugin.disabled, }}) for (let plugin of help) if (plugin && 'tags' in plugin) for (let tag of plugin.tags) if (!(tag in tags) && tag) tags[tag] = tag conn.menu = conn.menu ? conn.menu : {} let before = conn.menu.before || defaultMenu.before let header = conn.menu.header || defaultMenu.header let body = conn.menu.body || defaultMenu.body let footer = conn.menu.footer || defaultMenu.footer let after = conn.menu.after || (conn.user.jid == conn.user.jid ? '' : `Powered by https://wa.me/${conn.user.jid.split`@`[0]}`) + defaultMenu.after let _text = [before, ...Object.keys(tags).map(tag => { return header.replace(/%category/g, tags[tag]) + '\n' + [...help.filter(menu => menu.tags && menu.tags.includes(tag) && menu.help).map(menu => { return menu.help.map(help => { return body.replace(/%cmd/g, menu.prefix ? help : '%p' + help) .replace(/%islimit/g, menu.limit ? '(๐Ÿฃ)' : '') .replace(/%isPremium/g, menu.premium ? '(๐Ÿ†)' : '') .trim()}).join('\n') }), footer ].join('\n')}), after ].join('\n') let text = typeof conn.menu == 'string' ? conn.menu : typeof conn.menu == 'object' ? _text : '' let replace = {'%': '%', p: _p, uptime, muptime, me: conn.getName(conn.user.jid), npmname: _package.name, npmdesc: _package.description, version: _package.version, exp: exp - min, maxexp: xp, totalexp: exp, xp4levelup: max - exp, github: _package.homepage ? _package.homepage.url || _package.homepage : '[unknown github url]', level, limit, name, weton, week, date, dateIslamic, time, totalreg, rtotalreg, toUsers, toUserReg, role, readmore: readMore, fecha, hora, botOfc, wm } text = text.replace(new RegExp(`%(${Object.keys(replace).sort((a, b) => b.length - a.length).join`|`})`, 'g'), (_, name) => '' + replace[name]) let pp = './menu.jpg' conn.sendMessage(m.chat, { text: text, contextInfo:{ forwardedNewsletterMessageInfo: { newsletterJid: '120363371008200788@newsletter', serverMessageId: '', newsletterName: 'Kantu Bot โœจ๏ธ' }, forwardingScore: 9999999, isForwarded: true, mentionedJid:[m.sender], externalAdReply: { showAdAttribution: true, renderLargerThumbnail: true, title: `${name} ๐Ÿ‘‹`, body: wm, containsAutoReply: true, mediaType: 1, thumbnail: imagen2, sourceUrl: [nna, nna2, nnaa].getRandom() }}}, { quoted: m }) //conn.sendFile(m.chat, pp, 'menu.jpg', text.trim(), m, null, fake2) m.react('๐Ÿฃ') } catch (e) { m.react(`โŒ`) throw e }} handler.help = ['help'] handler.tags = ['main'] //handler.command = ['menucompleto', 'help', 'fullmenu'] handler.command = /^(menu|menรบ|memu|memรบ|help|info|comandos|2help|menu1.2|ayuda|commands|commandos|m|\?)$/i handler.register = false handler.exp = 3 export default handler const more = String.fromCharCode(8206) const readMore = more.repeat(4001) function clockString(ms) { let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':') } function toNum(number) { if (number >= 1000 && number < 1000000) { return (number / 1000).toFixed(1) + 'k'; } else if (number >= 1000000) { return (number / 1000000).toFixed(1) + 'M'; } else if (number <= -1000 && number > -1000000) { return (number / 1000).toFixed(1) + 'k'; } else if (number <= -1000000) { return (number / 1000000).toFixed(1) + 'M'; } else { return number.toString(); } }