_autolevelup.js 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //import db from '../lib/database.js'
  2. import { canLevelUp } from '../lib/levelling.js'
  3. export async function before(m, { conn }) {
  4. let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
  5. let ppch = await conn.profilePictureUrl(who, 'image').catch(_ => imageUrl.getRandom())
  6. let user = global.db.data.users[m.sender]
  7. let chat = global.db.data.chats[m.chat]
  8. if (!chat.autolevelup) return !0
  9. let before = user.level * 1
  10. while (canLevelUp(user.level, user.exp, global.multiplier))
  11. user.level++
  12. user.role = global.rpg.role(user.level).name
  13. if (before !== user.level) {
  14. conn.reply(m.chat, [`*「 FELICIDADES 🤜🤛 」*\n\nSubiste de nivel sigue asi 👏\n\n*• NIVEL:* ${before} ⟿ ${user.level}\n*• RANGO:* ${user.role}\n\n_*Para ver tu XP en tiempo real coloca el comando #level*_`, `@${m.sender.split`@`[0]} Ohhh pa has alcanzado el siguiente nivel\n*• NIVEL:* ${before} ⟿ ${user.level}\n\n_*Para ver quien es esta el top coloca el comando #lb*_`, `Que pro @${m.sender.split`@`[0]} has alcanzado un nuevo nivel 👻\n\n*• Nuevo nivel:* ${user.level}\n*• Nivel anterior:* ${before}\n`].getRandom(), m, {contextInfo: {externalAdReply :{ mediaUrl: null, mediaType: 1, description: null, title: wm, body: ' 💫 𝐒𝐮𝐩𝐞𝐫 𝐁𝐨𝐭 𝐃𝐞 𝐖𝐡𝐚𝐭𝐬𝐚𝐩𝐩 🥳 ', previewType: 0, thumbnail: img.getRandom(), sourceUrl: redes.getRandom()}}})
  15. let niv = `*${m.pushName || 'Anónimo'}* Obtiene un nuevo nivel 🥳
  16. *• Nivel anterior:* ${before}
  17. *• Nivel actúal :* ${user.level}
  18. *• Rol:* ${user.role}
  19. *• Bot:* ${wm}`
  20. let nivell = `*${m.pushName || 'Anónimo'} Haz subido un nuevo nivel 🥳*
  21. > _*• NIVEL:* ${before} ⟿ ${user.level}_`
  22. let nivelll = `🥳 ${m.pushName || 'Anónimo'} Que pro Acaba de alcanzar un nuevo nivel 🥳
  23. *• Nivel:* ${before} ⟿ ${user.level}
  24. *• Rango:* ${user.role}
  25. *• Bot:* ${wm}`
  26. await global.conn.sendMessage(global.ch.ch1, { text: [niv, nivell, nivelll].getRandom(), contextInfo: {
  27. externalAdReply: {
  28. title: "【 🔔 Notificación General 🔔 】",
  29. body: '¡Haz subido de nivel 🥳!',
  30. thumbnailUrl: ppch,
  31. sourceUrl: redes.getRandom(),
  32. mediaType: 1,
  33. showAdAttribution: false,
  34. renderLargerThumbnail: false
  35. }}}, { quoted: null })
  36. }}
  37. global.rpg = {
  38. emoticon(text) {
  39. text = text.toLowerCase();
  40. const mapping = {
  41. role: '🏅',
  42. level: '⬆️'
  43. };
  44. for (const key in mapping) {
  45. if (text.includes(key)) return mapping[key];
  46. }
  47. return '';
  48. },
  49. _roles: null,
  50. generateRoles() {
  51. if (this._roles) return this._roles;
  52. const ranks = ['NOVATO(A)', 'APRENDIS', 'EXPLORADOR(A)', 'MAESTRO(A)', 'IRON', 'PLATA', 'ORO', 'Bard', 'Necromancer', 'Warlock', 'Wizard', 'Sage', 'Priest', 'Rogue', 'Brawler', 'Archer', 'Sniper', 'Ninja', 'Samurai', 'Berserker', 'Legend', 'Champion', 'Grandmaster', 'Elder', 'Immortal', 'Nephalem', 'Eternal', 'Neptune', 'Pluto', 'Eris', 'Ascension', 'Elysium', 'Ether', 'Gaea', 'Hades', 'DIAMANTE', 'PRO EN KANTUBOT', 'SUPER PRO', 'LEGENDARIO(A)', 'Nova', 'LEYENDA', 'ESTELAR', 'TOP ASTRAL', 'ÉLITE GLOBAL'];
  53. const subLevels = ['V', 'IV', 'III', 'II', 'I'];
  54. let roles = [];
  55. let currentLevel = 0;
  56. const step = 1;
  57. ranks.forEach(rank => {
  58. subLevels.forEach(numeral => {
  59. roles.push({
  60. name: `${rank} ${numeral}`,
  61. level: currentLevel
  62. });
  63. currentLevel += step;
  64. });
  65. });
  66. roles.sort((a, b) => b.level - a.level);
  67. this._roles = roles;
  68. return roles;
  69. },
  70. role(level) {
  71. level = parseInt(level, 10);
  72. if (isNaN(level)) return { name: '', level: '' };
  73. const roles = this.generateRoles();
  74. const foundRole = roles.find(r => level >= r.level);
  75. return foundRole || roles[roles.length - 1];
  76. }
  77. };