javascript - 用户为空最后一条消息为空
问题描述
我试图让 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}`);
}
解决方案
这是因为.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
推荐阅读
- c# - 将字典列表值的字符串更改为运行代码
- firebase - 测试由 firestore 事件触发的 firebase 函数
- python - 如何进行进程间通信?
- php - 使用下划线值字符串从数组创建多层 json 结构
- ml.net - 使用单个 MLContext 的多个管道
- javascript - 推送到多维数组返回填充数组
- r - 在 R 中添加直到今天日期的行
- arduino-uno - 从 'int' 到 'char*' 的无效转换 [-fpermissive]
- python-3.x - 有没有办法在 Linux for Python 中清除控制台历史记录?
- websocket - 使用 permessage-deflate 解码 websocket