Quiero establecer el tiempo de reutilización en el comando /rep. Pero tengo el problema. Cuando el usuario usa el comando, el tiempo de reutilización es correcto. Pero cuando el usuario ejecuta el comando en segundo lugar, el segundo enfriamiento es incorrecto, son 52 años pero deben ser 12 horas. ¿Por qué? Ahí está mi código. He establecido un tiempo de reutilización de 15 segundos para la prueba, pero muestra 52 años desde el segundo tiempo de reutilización en adelante. No hay ningún error y consola. Discord.js v13 y pretty-ms v7.0.1
const { SlashCommandBuilder } = require("@discordjs/builders"); const { MessageEmbed } = require("discord.js"); const db = require("quick.db"); const ms = require("pretty-ms"); const yaml = require('js-yaml'); const fs = require("fs"); const lang = yaml.load(fs.readFileSync('lang.yml', 'utf8')); module.exports = { data: new SlashCommandBuilder() .setName('rep') .setDescription(lang.rep.cmdDesc) .addUserOption(option => option.setName('user') .setDescription(lang.rep.optionDesc) .setRequired(true)), async execute(interaction) { let lastDaily = await db.fetch(`repCheck_${interaction.user.id}`); const cooldown = 15000; if (lastDaily !== null && cooldown - (Date.now() - lastDaily) > 0) { const timeLeftRep = ms(cooldown - (Date.now() - lastDaily)) const timerr = new MessageEmbed() .setDescription(lang.rep.cooldownErr.replace('{{cooldownRep}}', timeLeftRep)) .setColor('RED') await interaction.reply({ embeds: [timerr], ephemeral: true }) } else if (interaction.options.getUser('user').bot) { const boterr = new MessageEmbed() .setDescription(lang.rep.mentionErr) .setColor('RED') await interaction.reply({ embeds: [boterr], ephemeral: true }); } else if (interaction.options.getUser('user').id == interaction.user.id) { const selfmen = new MessageEmbed() .setDescription(lang.rep.selfMention) .setColor('RED') await interaction.reply({ embeds: [selfmen], ephemeral: true }) } else { const member = interaction.options.getUser('user').id; let reputation = db.fetch(`rep_${member}`) db.add(`rep_${member}`, 1) const repembed = new MessageEmbed() .setDescription(lang.rep.successMsg.replace('{{user}}', interaction.options.getUser('user').username)) await interaction.reply({embeds: [repembed]}); db.add(`repCheck_${interaction.user.id}`, Date.now()) } } }Como no puedo comentar. Puede ser porque puso db.add() en lugar de db.set() en su código. Agregará su último tiempo de recuperación con el tiempo de recuperación actual que acaba de configurar. Lo cual lo hará más largo. Puedes intentar cambiar tu código:
de
db.add(`repCheck_${interaction.user.id}`, Date.now());a
db.set(`repCheck_${interaction.user.id}`, Date.now());Y tal vez funcione, dime si no lo es.