UNPKG

simply-xp

Version:

A Simple, Easy and Beginner Friendly XP System

67 lines (50 loc) 1.36 kB
const levels = require("../src/models/level.js"); let {roleSetup} = require("../simplyxp"); /** * @param {Discord.Message} message * @param {string} userID * @param {string} guildID * @param {number} level */ async function addLevel(message, userID, guildID, level) { if (!userID) throw new Error("[XP] User ID was not provided."); if (!guildID) throw new Error("[XP] Guild ID was not provided."); if (!level) throw new Error("[XP] Level amount is not provided."); let {client} = message; const user = await levels.findOne({user: userID, guild: guildID}); if (!user) { const newUser = new levels({ user: userID, guild: guildID, xp: 0, level: 0 }); await newUser.save().catch(() => console.log("[XP] Failed to save new user to database")); let xp = (level * 10) ** 2; return { level: level, exp: xp }; } let level1 = user.level; user.level += parseFloat(level); user.xp = (user.level * 10) ** 2; await user.save().catch((e) => console.log(`[XP] Failed to add Level | User: ${userID} | Err: ${e}`) ); if (level1 !== level) { let data = { xp: user.xp, level: user.level, userID, guildID }; let role = await roleSetup.find(client, guildID, level); client.emit("levelUp", message, data, role); } return { level: user.level, xp: user.xp }; } module.exports = addLevel;