首页 > 解决方案 > “checkwarns”命令给了我这个错误

问题描述

每当我使用我的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 来托管机器人。

标签: discord.js

解决方案


您的问题可能出现在这里:

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
}

推荐阅读