import fetch from 'node-fetch' import fs from 'fs' let handler = async (m, { conn, args, participants, usedPrefix }) => { let users = Object.entries(global.db.data.users).map(([key, value]) => { return {...value, jid: key} }) let sortedExp = users.map(toNumber('exp')).sort(sort('exp')) let sortedLim = users.map(toNumber('limit')).sort(sort('limit')) let sortedLevel = users.map(toNumber('level')).sort(sort('level')) let sortedRole = users.map(toNumber('role')).sort(sort('role')) let sortedMoney = users.map(toNumber('money')).sort(sort('money')) let sortedJoincount = users.map(toNumber('joincount')).sort(sort('joincount')) let sortedPremium = users.map(toNumber('premium')).sort(sort('premium')) let usersExp = sortedExp.map(enumGetKey) let usersLim = sortedLim.map(enumGetKey) let usersLevel = sortedLevel.map(enumGetKey) let usersRole = sortedRole.map(enumGetKey) let usersMoney = sortedMoney.map(enumGetKey) let usersJoincount = sortedJoincount.map(enumGetKey) let usersPremium = sortedPremium.map(enumGetKey) console.log(participants) let len = args[0] && args[0].length > 0 ? Math.min(100, Math.max(parseInt(args[0]), 10)) : Math.min(10, sortedExp.length) let text = `\`๐Ÿ† ๐šƒ๐™ฐ๐™ฑ๐™ป๐™ฐ ๐™ณ๐™ด ๐™ฒ๐™ป๐™ฐ๐š‚๐™ธ๐™ฒ๐™ฐ๐™ฒ๐™ธ๐™พ๐™ฝ\` ๐Ÿ’  *๐“๐Ž๐ ${len} ๐—๐ ๐ŸŽฏ* ๐“๐ฎ: *${usersExp.indexOf(m.sender) + 1}* ๐๐ž *${usersExp.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedExp.slice(0, len).map(({ jid, exp }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} *${exp} โšก*`).join`\n`} โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ ๐Ÿ’  *๐“๐Ž๐ ${len} ๐ƒ๐ˆ๐€๐Œ๐€๐๐“๐„ ๐Ÿ’Ž* ๐“๐ฎ : *${usersLim.indexOf(m.sender) + 1}* ๐๐žฬ *${usersLim.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedLim.slice(0, len).map(({ jid, limit }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} *${limit} ๐Ÿ’Ž*`).join`\n`} โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ ๐Ÿ’  *๐“๐Ž๐ ${len} ๐๐ˆ๐•๐„๐‹ ๐Ÿ’ช* ๐“๐ฎ : *${usersLevel.indexOf(m.sender) + 1}* ๐๐ž *${usersLevel.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedLevel.slice(0, len).map(({ jid, level }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} *${level} ๐Ÿ”…*`).join`\n`} โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ ๐Ÿ’  *๐“๐Ž๐ ${len} ๐‘๐Ž๐‹ ๐ŸŒŸ* ๐“๐ฎ : *${usersLevel.indexOf(m.sender) + 1}* ๐๐ž *${usersLevel.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedLevel.slice(0, len).map(({ jid, role, level }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} ${role}`).join`\n`} โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ ๐Ÿ’  *๐“๐Ž๐ ${len} ๐”๐’๐”๐€๐‘๐ˆ๐Ž๐’ ๐๐‘๐„๐Œ๐ˆ๐”๐Œ ๐ŸŽŸ๏ธ* ๐“๐ฎ : *${usersLevel.indexOf(m.sender) + 1}* ๐๐ž *${usersLevel.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedLim.slice(0, len).map(({ jid, premium, level }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} *${premium ? `โœ…` : `โŒ`} ๐ŸŽŸ๏ธ*`).join`\n`} โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ ๐Ÿ’  *๐“๐Ž๐ ${len} ๐“๐Ž๐Š๐„๐๐’ ๐Ÿงฟ* ๐“๐ฎ : *${usersJoincount.indexOf(m.sender) + 1}* ๐๐ž *${usersJoincount.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedJoincount.slice(0, len).map(({ jid, joincount }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} *${joincount} ๐Ÿงฟ*`).join`\n`} โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ ๐Ÿ’  *๐“๐Ž๐ ${len} แด‹แด€ษดแด›แดœ๐‚๐Ž๐ˆ๐๐’ ๐Ÿช™* ๐“๐ฎ : *${usersMoney.indexOf(m.sender) + 1}* ๐๐ž *${usersMoney.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ* ${sortedMoney.slice(0, len).map(({ jid, money }, i) => `${i + 1}. ${participants.some(p => jid === p.jid) ? `(${conn.getName(jid)}) wa.me/` : '@'}${jid.split`@`[0]} *${money} ๐Ÿช™*`).join`\n`} `.trim() await m.reply(text, null, { mentions: conn.parseMention(text) }) //conn.sendMessage(m.chat, {text: text, contextInfo:{ mentionedJid: conn.parseMention(text)}}, { quoted: m}) } handler.help = ['top'] handler.tags = ['econ'] handler.command = ['leaderboard', 'lb', 'top'] handler.register = true handler.fail = null handler.exp = 3500 export default handler function sort(property, ascending = true) { if (property) return (...args) => args[ascending & 1][property] - args[!ascending & 1][property] else return (...args) => args[ascending & 1] - args[!ascending & 1] } function toNumber(property, _default = 0) { if (property) return (a, i, b) => { return {...b[i], [property]: a[property] === undefined ? _default : a[property]} } else return a => a === undefined ? _default : a } function enumGetKey(a) { return a.jid }