/// guildMemberAdd.js const profileModel = require("../../models/profileSchema"); module.exports = async (client, Discord, member) => { let profile = await profileModel.create({ guildID: message.guild.id, userID: message.author.id, coins: 1000, bank: 0, xp: 0, requiredXP: 100, level: 1, }); profile.save; }; /////Levels.js const profileModel = require("./models/profileSchema"); let xpToAdd = Math.floor(Math.random() * 15) + 1; module.exports = (client) => { client.on("message", (message) => { const { guild, member } = message; addXP(guild.id, member.id, xpToAdd, message); }); }; let getNeededXP = (level) => level * level * 100; const addXP = async (guildID, userID, xpToAdd, message) => { try { const result = await profileModel.findOneAndUpdate( { guildID, userID, }, { guildID, userID, $inc: { xp: xpToAdd, }, }, { upsert: true, new: true, } ); let { xp, level, requiredXP } = result; let needed = getNeededXP(level); if (xp >= needed) { ++level; xp -= needed; requiredXP = getNeededXP(level); message.reply(`you are now level ${level} with ${xp} xp`); await profileModel.updateOne( { guildID, userID, }, { xp, level, requiredXP, } ); } } }; /////let profileData; try { profileData = await profileModel.findOne({ userID: message.author.id }); if (!profileData) { let profile = await profileModel.create({ guildID: message.guild.id, userID: message.author.id, coins: 1000, bank: 0, xp: 0, requiredXP: 100, level: 1, }); profile.save; } } catch (err) { console.log(err); } ///Schema const mongoose = require("mongoose"); const profileSchema = new mongoose.Schema({ guildID: { type: String, require: true }, userID: { type: String, require: true }, coins: { type: Number, default: 1000 }, bank: { type: Number }, xp: { type: Number, default: 0 }, requiredXP: { type: Number, default: 100 }, level: { type: Number, default: 1 }, }); const model = mongoose.model("profileModels", profileSchema); module.exports = model;