TypeError:无法使用 discord.js 读取属性“”错误
Posted
技术标签:
【中文标题】TypeError:无法使用 discord.js 读取属性“”错误【英文标题】:TypeError: Cannot read property ' ' error with discord.js 【发布时间】:2021-02-27 05:07:02 【问题描述】:所以我想出了如何在 users.json 文件中使用 discord.js 建立一个简单的数据库,并且我的 !start cmnd 可以创建用户数据库,但是当我和我的表弟尝试 !daily cmnds 时, cmnd 似乎很好,但我收到此错误:TypeError: Cannot read property 'a number' of undefined。我相信数字是指我的用户号或数据库号(数字是指实际的长数字,而不是“数字”)。
这也是我的 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 文件夹
【问题讨论】:
看你的代码是无法回答这个问题的。请在您的问题中提供更多详细信息,包括添加minimal reproducible example 以帮助其他人更好地回答您的问题。 我已经添加了我的代码,我已经发现它是最小的可重现示例,因为它是非常基本的代码,所以真的没有办法缩短或修改它。如果您需要其他任何东西,尽管问,因为我真的很想能够解决我的问题。 错误在哪一行? 这就是我感到困惑的地方。当我使用日常命令时会发生错误,但我不认为它是特定命令,因为它说它无法读取用户数据库编号的属性,这让我相信它可能在我拥有的第一行代码中在这里。 您在哪里看到错误?应该有一个关联的行号。行号是多少,它对应于您问题中的哪一行? 【参考方案1】:我意识到代码的问题在于,它需要在 UserJSON 之前 let 而不是 vars,所以代码行应该是:
let UserJSON = JSON.parse(Fs.readFileSync("./DB/users.json"));
UserJSON[message.author.id] =
bal: 0,
lastclaim: 0,
【讨论】:
以上是关于TypeError:无法使用 discord.js 读取属性“”错误的主要内容,如果未能解决你的问题,请参考以下文章
discord.js TypeError:无法读取未定义的属性“发送”
TypeError:无法读取发送的属性(Discord.js)
Discord.js V12 TypeError:无法读取未定义的属性“发送”
discord.js - 机器人不会添加角色:TypeError:无法读取未定义的属性“添加”