rpg-leaderboard.js 4.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import fetch from 'node-fetch'
  2. import fs from 'fs'
  3. let handler = async (m, { conn, args, participants, usedPrefix }) => {
  4. let users = Object.entries(global.db.data.users).map(([key, value]) => {
  5. return {...value, jid: key}
  6. })
  7. let sortedExp = users.map(toNumber('exp')).sort(sort('exp'))
  8. let sortedLim = users.map(toNumber('limit')).sort(sort('limit'))
  9. let sortedLevel = users.map(toNumber('level')).sort(sort('level'))
  10. let sortedRole = users.map(toNumber('role')).sort(sort('role'))
  11. let sortedMoney = users.map(toNumber('money')).sort(sort('money'))
  12. let sortedJoincount = users.map(toNumber('joincount')).sort(sort('joincount'))
  13. let sortedPremium = users.map(toNumber('premium')).sort(sort('premium'))
  14. let usersExp = sortedExp.map(enumGetKey)
  15. let usersLim = sortedLim.map(enumGetKey)
  16. let usersLevel = sortedLevel.map(enumGetKey)
  17. let usersRole = sortedRole.map(enumGetKey)
  18. let usersMoney = sortedMoney.map(enumGetKey)
  19. let usersJoincount = sortedJoincount.map(enumGetKey)
  20. let usersPremium = sortedPremium.map(enumGetKey)
  21. console.log(participants)
  22. let len = args[0] && args[0].length > 0 ? Math.min(100, Math.max(parseInt(args[0]), 10)) : Math.min(10, sortedExp.length)
  23. let text = `\`๐Ÿ† ๐šƒ๐™ฐ๐™ฑ๐™ป๐™ฐ ๐™ณ๐™ด ๐™ฒ๐™ป๐™ฐ๐š‚๐™ธ๐™ฒ๐™ฐ๐™ฒ๐™ธ๐™พ๐™ฝ\`
  24. ๐Ÿ’  *๐“๐Ž๐ ${len} ๐—๐ ๐ŸŽฏ*
  25. ๐“๐ฎ: *${usersExp.indexOf(m.sender) + 1}* ๐๐ž *${usersExp.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  26. ${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`}
  27. โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  28. ๐Ÿ’  *๐“๐Ž๐ ${len} ๐ƒ๐ˆ๐€๐Œ๐€๐๐“๐„ ๐Ÿ’Ž*
  29. ๐“๐ฎ : *${usersLim.indexOf(m.sender) + 1}* ๐๐žฬ *${usersLim.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  30. ${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`}
  31. โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  32. ๐Ÿ’  *๐“๐Ž๐ ${len} ๐๐ˆ๐•๐„๐‹ ๐Ÿ’ช*
  33. ๐“๐ฎ : *${usersLevel.indexOf(m.sender) + 1}* ๐๐ž *${usersLevel.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  34. ${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`}
  35. โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  36. ๐Ÿ’  *๐“๐Ž๐ ${len} ๐‘๐Ž๐‹ ๐ŸŒŸ*
  37. ๐“๐ฎ : *${usersLevel.indexOf(m.sender) + 1}* ๐๐ž *${usersLevel.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  38. ${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`}
  39. โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  40. ๐Ÿ’  *๐“๐Ž๐ ${len} ๐”๐’๐”๐€๐‘๐ˆ๐Ž๐’ ๐๐‘๐„๐Œ๐ˆ๐”๐Œ ๐ŸŽŸ๏ธ*
  41. ๐“๐ฎ : *${usersLevel.indexOf(m.sender) + 1}* ๐๐ž *${usersLevel.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  42. ${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`}
  43. โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  44. ๐Ÿ’  *๐“๐Ž๐ ${len} ๐“๐Ž๐Š๐„๐๐’ ๐Ÿงฟ*
  45. ๐“๐ฎ : *${usersJoincount.indexOf(m.sender) + 1}* ๐๐ž *${usersJoincount.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  46. ${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`}
  47. โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  48. ๐Ÿ’  *๐“๐Ž๐ ${len} แด‹แด€ษดแด›แดœ๐‚๐Ž๐ˆ๐๐’ ๐Ÿช™*
  49. ๐“๐ฎ : *${usersMoney.indexOf(m.sender) + 1}* ๐๐ž *${usersMoney.length} ๐ฎ๐ฌ๐ฎ๐š๐ซ๐ข๐จ๐ฌ*
  50. ${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`}
  51. `.trim()
  52. await m.reply(text, null, { mentions: conn.parseMention(text) })
  53. //conn.sendMessage(m.chat, {text: text, contextInfo:{ mentionedJid: conn.parseMention(text)}}, { quoted: m})
  54. }
  55. handler.help = ['top']
  56. handler.tags = ['econ']
  57. handler.command = ['leaderboard', 'lb', 'top']
  58. handler.register = true
  59. handler.fail = null
  60. handler.exp = 3500
  61. export default handler
  62. function sort(property, ascending = true) {
  63. if (property) return (...args) => args[ascending & 1][property] - args[!ascending & 1][property]
  64. else return (...args) => args[ascending & 1] - args[!ascending & 1]
  65. }
  66. function toNumber(property, _default = 0) {
  67. if (property) return (a, i, b) => {
  68. return {...b[i], [property]: a[property] === undefined ? _default : a[property]}
  69. }
  70. else return a => a === undefined ? _default : a
  71. }
  72. function enumGetKey(a) {
  73. return a.jid
  74. }