TypeError: Cannot read property ' ' error with discord.js

TypeError: Cannot read property ' ' error with discord.js

所以我想出了如何在 users.json 文件中使用 discord.js 设置一个简单的数据库,并且我的 !start cmnd 可以创建用户数据库,但是当我和我的堂兄尝试时!daily cmnds,cmnd 似乎没问题,但我收到此错误:TypeError:无法读取未定义的 属性 'a number'。我相信这个数字是指我的用户号或数据库号(数字是指实际的长数字,而不是“数字”)。

另外还有我的 index.js 文件中的代码:

var UserJSON = JSON.parse(Fs.readFileSync('./DB/users.json'));
            UserJSON[message.author.id] = {
                bal: 0,
                lastclaim: 0,
            }
            Fs.writeFileSync('./DB/users.json', JSON.stringify(UserJSON));

            let SuccessEmbed = new Discord.MessageEmbed();
            SuccessEmbed.setTitle("**SUCCESS**");
            SuccessEmbed.setDescription("You have joined the economy! type !help to get started");
            message.channel.send(SuccessEmbed);
            return;
        }
        if (args[0] == "daily") {
            let userJSON = JSON.parse(Fs.readFileSync('./DB/users.json'));
            if (Math.floor(new Date().getTime() - UserJSON[message.author.id].lastclaim) / (1000 * 60 * 60 * 24) < 1) {
                let WarningEmbed = new Discord.MessageEmbed()
                WarningEmbed.setTitle("**ERROR**");
                WarningEmbed.setDescription("You have claimed today already");
                message.channel.send(WarningEmbed);
                return;
            }
            UserJSON[message.author.id].bal += 500;
            UserJSON[message.author.id].lastclaim = new Date().getTime();
            Fs.writeFileSync('./DB/users.json', JSON.stringify(UserJSON));
            let SuccessEmbed = new Discord.MessageEmbed();
            SuccessEmbed.setTitle("**SUCCESS**");
            SuccessEmbed.setDescription("You have claimed a daily reward of 500 coins!");
            message.channel.send(SuccessEmbed);
        }
    }
})

还要说明一下,./DB/users.json 是指数据库的文件夹 DB,users.json 是存储数据库的文件。

user.json 文件如下所示:

{"*my database number*":{"bal":0,"lastclaim":0},"*my cousin's database number*":{"bal":0,"lastclaim":0}}

是否需要将任何代码添加到我的 index.js 文件中以阻止这种情况发生。如果可能,请尽快回答,以便我可以解决此错误。谢谢!

编辑:我通过重做以某种方式解决了这个问题,如果有人想启动经济机器人,这就是成品:

const Discord = require("discord.js");
const client = new Discord.Client();
const Fs = require("fs");

const prefix = "!";

client.on("ready", () => {
    console.log("Ready!");
});

client.on("message", async (message) => {
    if(message.content.startsWith(prefix)) {
        
        var args = message.content.substr(prefix.length)
            .toLowerCase()
            .split(" ");
        if (args[0] == "start") {

            let UserJSON = JSON.parse(Fs.readFileSync("./DB/users.json"));
            UserJSON[message.author.id] = {
                bal: 0,
                lastclaim: 0,
            }
            Fs.writeFileSync("./DB/users.json", JSON.stringify(UserJSON));

            let SuccessEmbed = new Discord.MessageEmbed();
            SuccessEmbed.setTitle("**SUCCESS**");
            SuccessEmbed.setDescription("You have joined the economy! type !help to get started");
            message.channel.send(SuccessEmbed);
            return;
        }
        if (args[0] == "daily") {
            let UserJSON = JSON.parse(Fs.readFileSync("./DB/users.json"));
            if (Math.floor(new Date().getTime() - UserJSON[message.author.id].lastclaim) / (1000 * 60 * 60 * 24) < 1) {
                let WarningEmbed = new Discord.MessageEmbed()
                WarningEmbed.setTitle("**ERROR**");
                WarningEmbed.setDescription("You have claimed today already");
                message.channel.send(WarningEmbed);
                return;
            }
            UserJSON[message.author.id].bal += 500;
            UserJSON[message.author.id].lastclaim = new Date().getTime();
            Fs.writeFileSync("./DB/users.json", JSON.stringify(UserJSON));
            let SuccessEmbed = new Discord.MessageEmbed();
            SuccessEmbed.setTitle("**SUCCESS**");
            SuccessEmbed.setDescription("You have claimed a daily reward of 500 discord coins!");
            message.channel.send(SuccessEmbed);
        }
    }
})
client.login('your token');

还记得用 users.json 文件制作一个 DB 文件夹

我意识到代码的问题在于,它需要放在 UserJSON 之前,而不是 vars,所以代码行应该是:

 let UserJSON = JSON.parse(Fs.readFileSync("./DB/users.json"));
            UserJSON[message.author.id] = {
                bal: 0,
                lastclaim: 0,
            }