首页 > 解决方案 > 用户为空最后一条消息为空

问题描述

我试图让 discord.js 命令说出用户的最后一条消息,但它返回消息 User nulls last message is null。

代码 :

switch (args[0]) {
  case 'lastmessage':
    let user = msg.mentions.members.first();
    console.log(msg.author.username);
    msg.channel.send(`User ${user.nickname}s last message was ${user.lastMessage}`);
}

标签: javascriptnode.jsdiscorddiscord.jsbots

解决方案


这是因为.lastMessage不是 的属性user,而是 的msg.guild.member(user)

所以要修复你的错误:

case 'lastmessage' :
  let user = msg.mentions.members.first();
  console.log(msg.author.username)
  msg.channel.send("User ${user.nickname}s last message was ${msg.guild.member(user).lastMessage}")

但是,这只会发送机器人接收到的最后一条消息,所以如果你重新启动你的机器人,而你提到的人在你重新启动它后没有发送消息,它仍然是空的。为了防止这种情况,您可以检查该属性是否为空

let lastMsg = msg.guild.member(user).lastMessage
if (!lastMsg) return msg.channel.send("That user hasn't sent a message since the last tim the bot restarted!")
//and then the rest

推荐阅读