Estoy agregando un comando de depósito, pero cuando trato de agregar la amount en bankBalance , no los agrega correctamente en números enteros, esto puede sonar confuso, le daré un ejemplo.
Ejemplo:
Comando: ~deposit 100 , Saldo del usuario: Monedero: 120, Banco: 0, Saldo del usuario de salida: Monedero: 20, Banco: 0100
Ojalá esto lo explique, de todos modos aquí está mi código:
const { MessageEmbed } = require('discord.js'); const Database = require('@replit/database'); const db = new Database(); module.exports = { name: 'deposit', aliases: ['dep'], category: 'Economy', description: 'Deposits all or a amount of balance into the bank.', usage: 'deposit', userperms: [], botperms: [], run: async (client, message, args, prefix) => { if (message.author.bot) return; let walletBalance = await db.get(`wallet_${message.author.id}`) let bankBalance = await db.get(`bank_${message.author.id}`) if (walletBalance === null) walletBalance = 0 if (bankBalance === null) bankBalance = 0 console.log(walletBalance, bankBalance) let amount = args[0] if (!amount) amount = walletBalance if (walletBalance == 0) return message.reply('You don\'t have any money!') if (amount) { if (isNaN(amount)) { if (amount.toLowerCase().includes('all')) amount = walletBalance; } if (isNaN(amount)) return message.reply('The amount must be a number!') if (amount > walletBalance) return message.reply('You don\'t have enough balance in your wallet to do this!') if (amount) { await db.set(`wallet_${message.author.id}`, walletBalance - amount).then( await db.set(`bank_${message.author.id}`, bankBalance + amount).then( message.reply(`Successfully deposited ${amount.toLocaleString()} into your bank!`) ) ) } } } }Nota: estoy usando repetir
En su caso, la variable bankBalance o la amount es una cadena que hace que ambas se conviertan en una cadena y luego se agreguen entre sí. Una solución sería utilizar la función parseInt para convertir ambos valores en un número.
Ejemplo:
await db.set(`wallet_${message.author.id}`, parseInt(walletBalance) - parseInt(amount)); await db.set(`bank_${message.author.id}`, parseInt(bankBalance) + parseInt(amount));Ejemplo completo:
const { MessageEmbed } = require('discord.js'); const Database = require('@replit/database'); const db = new Database(); module.exports = { name: 'deposit', aliases: ['dep'], category: 'Economy', description: 'Deposits all or a amount of balance into the bank.', usage: 'deposit', userperms: [], botperms: [], run: async (client, message, args, prefix) => { if (message.author.bot) return; // Get balances and ensure they are number values let walletBalance = parseInt(await db.get(`wallet_${message.author.id}`)) let bankBalance = parseInt(await db.get(`bank_${message.author.id}`)) if (!walletBalance) walletBalance = 0 if (!bankBalance) bankBalance = 0 console.log(walletBalance, bankBalance) let amount = args[0] if (!amount) amount = walletBalance amount = parseInt(amount); // Ensure the amount is a number value if (walletBalance == 0) return message.reply('You don\'t have any money!') if (isNaN(amount)) { if (amount.toLowerCase().includes('all')) amount = walletBalance; } if (isNaN(amount)) return message.reply('The amount must be a number!') if (amount > walletBalance) return message.reply('You don\'t have enough balance in your wallet to do this!') if (amount) { await db.set(`wallet_${message.author.id}`, walletBalance - amount); await db.set(`bank_${message.author.id}`, bankBalance + amount); message.reply(`Successfully deposited ${amount.toLocaleString()} into your bank!`); } } }