Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js命令更改Config.json中的变量_Javascript_Node.js_Discord_Discord.js_Bots - Fatal编程技术网

Javascript Discord.js命令更改Config.json中的变量

Javascript Discord.js命令更改Config.json中的变量,javascript,node.js,discord,discord.js,bots,Javascript,Node.js,Discord,Discord.js,Bots,最近,我向我的bot添加了从我的config.json获取文件中嵌入的颜色的功能。我所要做的就是将它从类似于:“embedcolor”:“00A950”更改为“embedcolor”:“00000”,但我想知道如何发出命令来更改此变量?我猜它的工作原理是:-embedcolorset[HexCode],机器人会更改配置文件中的颜色 感谢您的帮助:)您可以使用来读取文件内容并将数据写入文件(如果文件已经存在,则替换该文件) 您还可以使用验证用户提供的颜色 请确保您创建了一个config.json文

最近,我向我的bot添加了从我的
config.json
获取文件中嵌入的颜色的功能。我所要做的就是将它从类似于:
“embedcolor”:“00A950”
更改为
“embedcolor”:“00000”
,但我想知道如何发出命令来更改此变量?我猜它的工作原理是:
-embedcolorset[HexCode]
,机器人会更改配置文件中的颜色

感谢您的帮助:)

您可以使用来读取文件内容并将数据写入文件(如果文件已经存在,则替换该文件)

您还可以使用验证用户提供的颜色

请确保您创建了一个
config.json
文件,其中至少包含一个空对象(
{}
),否则您将收到一个
语法错误

查看下面的工作代码:

const{Client,Util}=require('discord.js');
常数fs=要求('fs');
const path=require('path');
const-TOKEN='BOT-TOKEN';
const client=new client();
常量前缀='!';
//helper函数读取JSON文件
函数jsonRead(文件路径){
返回新承诺((解决、拒绝)=>{
fs.readFile(文件路径,'utf-8',(错误,内容)=>{
如果(错误){
拒绝(错误);
}否则{
试一试{
解析(JSON.parse(content));
}捕捉(错误){
拒绝(错误);
}
}
});
});
}
//helper函数来编写JSON文件
函数jsonWrite(文件路径、数据){
返回新承诺((解决、拒绝)=>{
fs.writeFile(文件路径,JSON.stringify(数据),(错误)=>{
如果(错误){
拒绝(错误);
}
决心(正确);
});
});
}
client.on('message',async(msg)=>{
const args=msg.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
如果(命令=='embedcolorset'){
//config.json文件的路径
//我的和这个文件在同一个文件夹中
const filePath=path.resolve(_dirname,'./config.json');
//检查提供的颜色是否有效
if(isNaN(Util.resolveColor(args[0])){
返回msg.channel.send('您需要提供有效的颜色');
}
试一试{
//阅读文件内容,它现在是一个简单的对象
const config=await jsonRead(文件路径);
//更新EmbeddeColor属性
config.embedcolor=args[0];
//使用更新的设置保存文件
jsonWrite(文件路径,配置);
msg.channel.send(`embedcolour设置为${config.embedcolor}`);
}捕捉(错误){
控制台日志(err);
}
}
});
client.once('ready',()=>{
log('Bot已连接…');
});
client.login(令牌);

太棒了!很有效,非常感谢。是否需要添加一些代码使其重新启动bot?我注意到它不会更新机器人,直到它被重新启动,这不是一个大问题,但会很酷!不客气。您可能不需要重新启动bot,只需更新配置,但是,我不确定您如何存储或加载它。我有重新加载它的答案:
函数requireuncache(module){delete require.cache[require.resolve(module)];返回require(module)}。
然后每次您想要访问它时,都要执行var which=requireuncache('./filename');很抱歉格式太糟糕了,我在移动网站上“var whatever”是什么?它会和这个文件放在同一个文件中吗?@ZsoltMeszaros你知道为什么突然它不工作了吗?我甚至无法让机器人用相同的代码响应。