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

Discord.js修改JSON语言配置后help命令未同步更新的问题

解决Discord.js中修改lang.json后help命令不切换语言的问题

问题原因

Node.js 的 require() 函数会将加载的模块缓存到内存中。机器人启动后第一次加载 lang.json 后,后续代码会直接使用缓存里的旧数据,即使你手动修改了文件内容,也不会自动读取新的配置。

解决方案

每次执行 help 命令时,直接读取 lang.json 文件的最新内容,而不是依赖 require 的缓存。可以使用 Node.js 的 fs 模块来实现:

修改后的代码

const fs = require('fs');
const path = require('path');

module.exports = {
    name: "help",
    description: "For see help",
    execute(client, message){
        // 构建lang.json的完整路径,避免相对路径出错
        const langFilePath = path.join(__dirname, '../data/lang.json');
        // 读取文件内容并解析为JSON对象
        const langFileContent = fs.readFileSync(langFilePath, 'utf8');
        const lang = JSON.parse(langFileContent);

        const serverId = message.guild.id;

        if (lang[serverId] === "fa"){
            const faEmbed = new client.MessageEmbed()
                .setAuthor("سلام")
                .setDescription(`چطور میتونم کمکتون کنم؟`);
            message.channel.send(faEmbed);
        } else if (lang[serverId] === "en") {
            const enEmbed = new client.MessageEmbed()
                .setAuthor("Hi")
                .setDescription(`How can I help you?`);
            message.channel.send(enEmbed);
        }
    }
}

额外说明

  • 使用 path.join() 构建文件路径可以避免不同操作系统下的路径格式问题,比直接写相对路径更可靠。
  • readFileSync 是同步读取方法,对于小体积的配置文件来说,性能影响可以忽略,代码写法也更简洁。如果需要处理大文件,可以改用异步的 fs.readFile() 配合 Promise 或回调函数。
  • 代码中改用 client.MessageEmbed 是因为原代码可能没有显式引入 Discord 模块,通过传入的 client 实例调用更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:31:12