首页 > 解决方案 > 2 个数字未正确相加

问题描述

我正在将 repl.it 数据库用于我正在制作的不和谐经济机器人。我发出了一个撤销命令,但是当我输入时,!withdraw 10我期望收到currentbalance + amount(例如,如果当前余额为 50,我输入!with100,我应该得到 150),但我一直收到"50100". 这是我的代码:

if (message.content.toLowerCase().startsWith("#ايداع")) {
    const args = message.content.trim().split(/ +/g);

    let money = await db.get(`wallet_${message.member}`)
    let currentbalance1 = await db.get(`wallet_${message.member}`)
    let currentbalance = await db.get(`bank_${message.member}`)
    let gembed = new Discord.MessageEmbed()
      .setColor("RED")
      .setDescription("ليس لديك مبلغ كافي للايداع")


    let cembed = new Discord.MessageEmbed()
      .setColor("RED")
      .setDescription("يرجى تحديد مبلغ للايداع");

    let amount = args[1];
    if (!amount || isNaN(amount))
        return message.reply(cembed);

    await db.set(`bank_${message.member}`, currentbalance + amount);
    await db.set(`wallet_${message.member}`, currentbalance1 - amount)

    let sembed = new Discord.MessageEmbed()
      .setColor("RED")
      .setDescription("لقد قمت بايداع" + amount + "الى حسابك البنكي");

    message.channel.send(sembed);
}

标签: discorddiscord.js

解决方案


如果您的输出50100来自50 + 100这意味着您的数字(50100)是字符串而不是数字。一个简单的解决方案是使用parseInt.

例子:

let currentbalance1 = await db.get(`wallet_${message.member}`);
let currentbalance = await db.get(`bank_${message.member}`);

await db.set(`bank_${message.member}`, parseInt(currentbalance) + parseInt(amount));
await db.set(`wallet_${message.member}`, parseInt(currentbalance1) - parseInt(amount));

完整示例:

if (message.content.toLowerCase().startsWith("#ايداع")) {
    const args = message.content.trim().split(/ +/g);

    let money = await db.get(`wallet_${message.member}`)
    let currentbalance1 = await db.get(`wallet_${message.member}`)
    let currentbalance = await db.get(`bank_${message.member}`)
    let gembed = new Discord.MessageEmbed()
      .setColor("RED")
      .setDescription("ليس لديك مبلغ كافي للايداع")
    let cembed = new Discord.MessageEmbed()
      .setColor("RED")
      .setDescription("يرجى تحديد مبلغ للايداع");

    let amount = args[1];
    if (!amount || isNaN(amount)) return message.reply(cembed);

    await db.set(`bank_${message.member}`, parseInt(currentbalance) + parseInt(amount));
    await db.set(`wallet_${message.member}`, parseInt(currentbalance1) - parseInt(amount))

    let sembed = new Discord.MessageEmbed()
        .setColor("RED")
        .setDescription("لقد قمت بايداع" + amount + "الى حسابك البنكي");

    message.channel.send(sembed);
}

推荐阅读