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
相关产品推荐
相关产品推荐

