【问题标题】:How can I add strings to an array in a JSON using node.js?如何使用 node.js 将字符串添加到 JSON 中的数组?
【发布时间】:2018-04-18 03:58:55
【问题描述】:

我有一个不和谐的机器人,我想要一个数组,其中包含滥用音量和音乐命令的人的用户 ID,以便我可以使用 !nomusic 和 @987654322 之类的命令夺走他们的能力并让他们回来@,但我不知道如何让它从配置文件的数组中添加或删除他们的ids。我最好的猜测是使用fs 并将成员的id 推送到数组中,但我不知道我将如何去做(我对node.js 非常陌生,尤其是fs,很抱歉,如果这是一件非常容易做的事情并且真的很愚蠢)

到目前为止,这就是我所获得的(很多程序不包括在内,因此更容易阅读)

function readNoMusicJSON() {
    return JSON.parse(fs.readFileSync("./nomusic.json"));
}

var badmusicusers = readNoMusicJSON();

function nomusicsfoyou(badmusicusers, userId) {
    return nomusic.concat([userId]);
}

function saveNoMusicFile(badmusicusers) {
    fs.writeFileSync("./nomusic.json");
}
bot.on('message', async message => {
//some code ommited due to lack of importance
var args = message.content.slice(config.prefix.length).trim().split(/ +/g);    
var command = args.shift().toLowerCase();
switch(command){
    case"music":
        if(badmusicusers.find(id=>id == message.author.id)) return;
        // more ommitted code that don't matter
        break;
    case "nomusic":
        let sadmusicboi = message.mentions.members.first();
        badmusicusers = nomusicsfoyou((badmusicusers, sadmusicboi.id));
        saveNoMusicFile(badmusicusers);
        break;
    }
})

【问题讨论】:

  • 你能分享一下你到目前为止所尝试的吗?您要操作的对象/数组的任何示例?向对象添加字符串很简单:exampleObject.thing = '!nomusic';

标签: javascript arrays json node.js discord


【解决方案1】:

假设您的配置bannedUsers.json 文件中有一个bannedUsers 列表。

["user-id-1", "user-id-2"]

在程序启动时,您将文件读入变量:

function readBannedUsers() {
    return JSON.parse(fs.readFileSync("./bannedUsers.json"));
}

var bannedUsers = readBannedUser();

当您想禁止用户时:

function banUser(bannedUsers, userId) {
     return bannedUsers.concat([userId]);
}

function saveBannedUsers(bannedUsers) {
     fs.writeFileSync("./bannedUsers.json");
}

bannedUsers = banUser(bannedUsers, "user-3");
saveBannedUsers(bannedUsers);

就是这样。

【讨论】:

  • 好的,我得到了所有这些,但我不知道如何才能检查用户的 ID 是否在数组中。我试过if(readNoMusicJSON().find(id=>id == message.author.id)) return; 但这似乎不起作用(我更改了一些名称以使其更易于阅读,readNoMusicJSON 与您答案中的 readBannedUsers 函数相同)
  • 好的,我想到了另一件事,我将 readNoMusicJSON() 替换为“badmusicusers”,这是我的程序等效于您的答案中的bannedUsers 变量,但这似乎也不起作用。
猜你喜欢
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2015-03-09
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多