From eba7b53472b1642ae503bd777e505e01d5d3dbf8 Mon Sep 17 00:00:00 2001 From: WubzyGD Date: Fri, 26 Feb 2021 20:17:39 -0700 Subject: [PATCH] role awarding --- commands/stats.js | 2 +- util/lxp/gainxp.js | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/commands/stats.js b/commands/stats.js index 6bd6b83..e37855a 100644 --- a/commands/stats.js +++ b/commands/stats.js @@ -31,7 +31,7 @@ module.exports = { .setTitle(`${u.displayName}${u.displayName.toLowerCase().endsWith('s') ? "'" : "'s"} Stats`) .setDescription("Local leveling stats") .addField("Level", xp.level, true) - .addField("XP", `**${xp.xp}** of **${Math.ceil(100 + (((xp.level / 3) ** 1.4) * 1.3))}** needed to level up`, true) + .addField("XP", `**${xp.xp}** of **${Math.ceil(100 + (((xp.level / 3) ** 1.4) * 1.4))}** needed to level up`, true) .setThumbnail(client.users.cache.get(u.id).avatarURL({size: 2048})) .setColor("c375f0") .setFooter("Natsuki") diff --git a/util/lxp/gainxp.js b/util/lxp/gainxp.js index cfca254..4f9e2ba 100644 --- a/util/lxp/gainxp.js +++ b/util/lxp/gainxp.js @@ -1,11 +1,12 @@ const LXP = require('../../models/localxp'); +const LR = require('../../models/levelroles'); module.exports = async (client, member, channel) => { client.misc.cache.lxp.xp[channel.guild.id][member].lastXP = new Date().getTime(); client.misc.cache.lxp.xp[channel.guild.id][member].xp += 10; let x = client.misc.cache.lxp.xp[channel.guild.id][member].level; - let max = Math.ceil(100 + (((x / 3) ** 1.4) * 1.3)); + let max = Math.ceil(100 + (((x / 3) ** 1.4) * 1.4)); if (client.misc.cache.lxp.xp[channel.guild.id][member].xp > max) { client.misc.cache.lxp.xp[channel.guild.id][member].xp -= max; @@ -17,6 +18,21 @@ module.exports = async (client, member, channel) => { let ch = xp.lvch.length ? channel.guild.channels.cache.get(xp.lvch) : channel; if (ch.partial) {await ch.fetch().catch(() => {});} if (ch && ch.permissionsFor(ch.guild.me.id).has('SEND_MESSAGES')) {ch.send(`<:awoo:560193779764559896> <@${member}> has reached **Level ${x + 1}**!`).catch((e) => {/*console.error(e)*/});} + if (client.misc.cache.lxp.hasLevelRoles.includes(channel.guild.id)) { + LR.findOne({gid: channel.guild.id}).then(async lr => { + if (!lr) {return;} + if (Object.keys(lr.roles).includes(`${client.misc.cache.lxp.xp[channel.guild.id][member].level}`)) { + try { + let role = channel.guild.roles.cache.get(`${lr.roles[client.misc.cache.lxp.xp[channel.guild.id][member].level]}`); + if (!role) {return;} + if (!channel.guild.me.permissions.has("MANAGE_ROLES")) {return;} + let m = channel.guild.members.cache.get(member); + if (!m) {return;} + m.roles.add(role).catch((e) => {/*console.error(e);*/}); + } catch (e) {/*console.error(e);*/} + } + }); + } } catch (e) {/*console.error(e);*/} }).catch((e) => {/*console.error(e);*/}) }