You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord机器人变量money更新后无法正确显示余额问题

问题根源

你将money变量定义在了命令处理的if代码块内部,每次用户触发带前缀的命令时,这个变量都会被重新初始化赋值为0:

  • 执行add命令时,虽然临时把money改成了10000,但这次命令执行完毕后,这个局部变量就会被销毁;
  • 下次执行bal命令时,又会重新创建一个值为0的money变量,自然查询结果还是0。
修复代码

把money变量移到命令处理代码块的外部,让它只初始化一次,成为全局作用域的变量:

// 初始化全局变量,仅执行一次
var money = 0;

if(message.content.startsWith(prefix)){
        let args = message.content.slice(prefix.length).split(" ");
        let commandName = args.shift().toLowerCase();

        if(commandName == "bal"){
          message.channel.send(money)
        }

        if(commandName == "add"){
          money = money + 10000
          message.channel.send("added 10K balance. total balance is " + money)
        }
       }
进阶提示

如果你的机器人需要服务多个用户,全局变量money会让所有用户共用同一余额,这显然不符合需求。这种情况下建议用数据库(比如SQLite、MongoDB)或者本地JSON文件,以用户ID为唯一标识,存储每个用户各自的余额数据。

内容的提问来源于stack exchange,提问作者inugg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:10:31