如何在Discord.js机器人代码中修改mercyxrd.js配置的conf.perms.commands值
实现方案
你通过require加载的mercyxrd.js配置是缓存在内存中的,直接修改conf对象的属性只会生效到程序重启为止,要持久化修改必须把新值写回原配置文件。
具体实现代码
直接把下方代码贴到你标注注释的位置即可,示例默认将conf.perms.commands下的registerAuth字段设置为刚拿到的角色ID,你可以根据自己的实际字段需求调整要修改的属性:
// 1. 先修改内存中的配置值,可根据你的字段结构自行调整 conf.perms.commands.registerAuth = rol.id; // 如果是要给数组追加值可以用:conf.perms.commands.registerAuthList.push(rol.id) // 2. 把修改后的配置写回mercyxrd.js文件 const configContent = `module.exports = ${JSON.stringify(conf, null, 2)}`; fs.writeFile(require.resolve("../../mercyxrd.js"), configContent, (err) => { if(err) { console.error("配置写入失败:", err); return message.channel.send(embed.setDescription("配置更新失败,请检查控制台日志")); } // 清除模块缓存,下次require时会加载最新的配置 delete require.cache[require.resolve("../../mercyxrd.js")]; });
注意事项
- 如果你的
mercyxrd.js中除了module.exports导出的配置对象外,还有其他业务逻辑、注释内容,上述直接覆写文件的方案会把这些内容全部清空,这种场景建议你单独把可修改的配置抽成JSON文件存储,读写更安全。 - 抽成JSON的参考实现:把配置存到
mercyxrd.json,读写代码可以改成:
// 加载JSON配置 const conf = require("../../mercyxrd.json"); // 修改后写回JSON fs.writeFile(require.resolve("../../mercyxrd.json"), JSON.stringify(conf, null, 2), (err) => { // 回调逻辑同上 });
内容的提问来源于stack exchange,提问作者emloopex
相关产品推荐
相关产品推荐

