Recientemente hice este comando de "curación" que aumenta la salud en incrementos de diez cuando se usa. Sin embargo, me gustaría intentar limitar la salud a 100 para que los usuarios no solo la acumulen. A continuación se muestra el código y un intento que hice.
const profileModel = require("../models/profileSchema"); module.exports = { name: "heal", description: "heal a user's health by 10", cooldown: 120, async execute(client, message, args, cmd, discord, profileData) { if (!message.member.roles.cache.has('919453438813823017')) return message.channel.send("You aren't a medic!"); if (!args.length) return message.channel.send("You need to mention the user you are trying to heal."); const Number = 10; const target = message.mentions.users.first(); if (!target) return message.channel.send("This user does not exist."); try { const targetData = await profileModel.findOne({ userID: target.id }); if (!targetData) return message.channel.send(`This user doens't exist in the db`); /// if(targetData.health = 100) return message.channel.send('This user is at already at max health'); /// await profileModel.findOneAndUpdate( { userID: target.id, }, { $inc: { health: Number, }, } ); return message.channel.send(`${target}'s health has been healed for ${Number}!`); } catch (err) { console.log(err); } } };Básicamente, el objetivo sería que el bot verifique la salud del usuario mencionado y si está en 100, el comando no se puede ejecutar en ellos. Cualquier consejo ayudaría.
Editar: el registro de la consola da ReferenceError: targetData no está definido en if(targetData.health === 100) return message.channel.send('This user is at already at max health'); . Cuando ejecuto el comando, no pasa nada, a diferencia de que el usuario mencionado se cura (su número de salud no está en 100).
const mongoose = require("mongoose"); const profileSchema = new mongoose.Schema({ name: { type: String, require: true, unique: true }, userID: { type: String, require: true, unique: true }, serverID: { type: String, require: true }, reputation: { type: Number, default: 0 }, health: { type: Number, deafult: 100}, }); const model = mongoose.model("ProfileModels", profileSchema); module.exports = model; let profileData; try { profileData = await profileModel.findOne({ userID: message.author.id }); if(!profileData){ let profile = await profileModel.create({ name: message.author.id, userID: message.author.id, serverID: message.guild.id, reputation: 0, health: 100, }); profile.save(); } } catch (err) { console.log(err); }Como está tratando de verificar la igualdad entre una variable y un número y no asignando un número a una variable, necesita usar dobles iguales :
if(targetData.health == 100) {}