【问题标题】:What is causing UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined in my code?是什么导致 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined in my code?
【发布时间】:2019-03-31 00:07:58
【问题描述】:

我正在制作 Discord 机器人,在运行 Discord 机器人时收到错误 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined in cmd.exe,谁能告诉我我做错了什么或者我是否需要显示更多代码?

let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);

{some code here}

let pCoins = userData[pUser.id].money;

【问题讨论】:

  • pUser 未定义 - 在 let pUser 行之后添加 console.log(typeof pUser) ... 是否未定义?
  • 是的,它仍然未定义
  • 所以,你需要找出为什么 message.guild.member(message.mentions.users.first()) 和 message.guild.members.get(args[0]) 都没有返回你想要的 - 因为我不知道 message 是什么,所以我无能为力
  • ...我们也不知道 args 是什么。请澄清这一点! :)
  • args 是 const messageArray = message.content.split(" "); const args = messageArray.slice(1); 而“message”是不和谐的人消息

标签: javascript node.js bots discord.js


【解决方案1】:

下面

let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);

添加一个:

if(!pUser) return message.channel.send('You need to provide a valid mention or user id!');

如果未找到用户,这将停止命令的其余部分,从而阻止错误发生。

【讨论】:

    【解决方案2】:

    错误意味着pUser 是undefined。既然是这样定义的:

    let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
    

    和undefined 强制为一个假布尔值,这意味着message.guild.members.get(args[0])(OR 语句的右侧部分)计算为undefined。我认为可能的原因是在您的命令中作为args[0] 传递的用户ID 与公会中的任何成员都不匹配。

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 2023-01-19
      • 2019-02-12
      • 2019-05-26
      • 2021-09-20
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多