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

使用discord.js开发Discord机器人计分板时分值无法更新求助

问题根因
  • 你将分数变量x、y的初始化代码放在了message事件的回调函数内部,这个回调函数每收到一条新消息就会完整执行一次,也就是说每次你触发指令时,x和y都会被重新赋值为0,之前的加分操作自然会被覆盖,分值永远停留在0。
  • 代码还有一处小笔误:给X队加分的回复文案写错成了Y队,运行时会误导使用的用户。
修复方法

把x、y两个变量的声明移到message事件监听的外部即可,这样两个变量只会在机器人启动时初始化一次,后续所有的加分操作都会保留修改后的值,修复后的完整代码如下:

// 变量移到事件外部,全局只初始化一次
var x = 0
var y = 0

client.on('message', msg => {
    if(msg.content.toLowerCase() === 'r!score x 1') {
        x = x + 1;
        // 修正了文案的笔误
        msg.channel.send("Team X has won a point, now they're at " + x + "!")
    }else if(msg.content.toLowerCase() === 'r!score y 1') {
        y = y + 1;
        msg.channel.send("Team Y has won a point, now they're at " + y + "!")
    } else if(msg.content.toLowerCase() === 'r!placar') {
        const scoreboard = new Discord.MessageEmbed()
        .setColor("#0099ff")
        .setTitle("**Scoreboard**")
        .addFields(
            {name: "__Team X__", value: x + " points"},
            {name: "__Team Y__", value: y + " points"}
        );
        msg.channel.send(scoreboard)
    } 
})

如果你后续需要实现机器人重启后分数也不丢失的效果,可以把分数数据存储到本地json文件或者轻量数据库中,入门阶段先使用上述内存存储的方式测试运行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:45:04