每当我使用checkwarns
命令检查用户发出的警告数量时,都会出现此错误:
2019-03-20T23:55:35.590941+00:00 app[worker.1]: (node:4)
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'warns' of
undefined
2019-03-20T23:55:35.590958+00:00 app[worker.1]: at
Object.module.exports.run (/app/commands/checkwarns.js:10:35)
我不知道该如何解决,我的代码找不到任何问题。
const Discord = require("discord.js");
const fs = require("fs");
const ms = require("ms");
let warns = JSON.parse(fs.readFileSync("./warnings.json", "utf8"));
module.exports.run = async(bot, message, args) => {
if (!message.member.hasPermission("MANAGE_MESSAGES")) return
message.reply("You don't have permssion to use this command");
let wUser = message.guild.member(message.mentions.users.first()) ||
message.guild.members.get(args[0])
if (!wUser) return message.reply("Couldn't find that user");
let warnlevel = warns[wUser.id].warns;
if (!warns[wUser.id]) warns[wUser.id] = {
warns: 0
};
message.delete().catch();
let warnembed = new Discord.RichEmbed()
.setTitle("**warns**")
.setColor("#0xff80ff")
.addField("User Warns", warnlevel, true);
message.channel.send(warnembed);
}
module.exports.help = {
name: "checkwarns"
}
我正在使用Heroku托管该机器人。
答案 0 :(得分:0)
您的问题可能在这里发生:
let warnlevel = warns[wUser.id].warns;
如果键wUser.id
不存在,则warns[wUser.id]
的值为undefined
,其中不包含任何用户定义的属性。因此,尝试读取warns
中undefined
(用户定义的属性)的值时会出错。
要解决此问题,您想检查warns[wUser.id]
处的对象是否首先存在。一种简单的方法是执行以下操作:
var warnLevel;
if (warns[wUser.id] != undefined) {
warnLevel = warns[wUser.id].warns
}
else {
// Do something else to initialize either warnLevel or warns[wUser.id] here
}