lastmessageID 始终为空,除了我
Posted
技术标签:
【中文标题】lastmessageID 始终为空,除了我【英文标题】:lastmessageID always null except for me 【发布时间】:2021-01-21 20:51:10 【问题描述】:演示文稿
目标:查找指定的最后一条消息的发送时间
如何:使用User的属性lastmessageID,获取该ID对应的消息,找到属性createdTimestamp
问题:我是唯一一个没有属性 lastmessageID 等于 null 的人,即使用户在几分钟前发送了消息
问题:它是来自我的编码还是来自 Discord.js?有没有办法绕过这个问题?
注意:我知道它已缓存:
当有人在机器人还活着的时候发送消息时,给出相同的结果。
为了测试,我召唤了一个机器人,以便在测试时给我一个“新鲜”的消息
代码示例
每个“...”都是为了保护个人数据
脚本
function findID()
var IDarray = userm.users.map((user) => user.lastMessageID)
console.log("IDarray: ", IDarray)
var ID = IDarray[0]
console.log("ID: ", ID)
msg(ID)
function msg(lastmsgID)
var lastmsg = message.channel.messages.fetch(lastmsgID).then(message => time(message)).catch(console.error);
function time(msg)
...
findID();
结果 和我一起
user: [
User
id: '...',
bot: false,
username: '...',
discriminator: '....',
avatar: '...',
flags: UserFlags bitfield: ... ,
lastMessageID: '...',
lastMessageChannelID: '...'
]
IDarray: [ '...' ]
ID: ...
<Wed Oct 07 2020 00:30:52 GMT+0200 (GMT+02:00)> : Recieved Message to ..., content /test <@!...>
Date as YYYY-MM-DD hh:mm:ss ==> 2020-10-07 00:30:54
结果 与任何人
user: [
User
id: '...',
bot: false,
username: '...',
discriminator: '...',
avatar: '...',
lastMessageID: null,
lastMessageChannelID: null,
flags: UserFlags bitfield: ...
]
IDarray: [ null ]
ID: null
<Wed Oct 07 2020 00:26:44 GMT+0200 (GMT+02:00)> : Recieved Message to ..., content /test <@...>
Date as YYYY-MM-DD hh:mm:ss ==> NaN-aN-aN aN:aN:aN
如果您认为我可以改进这个问题,请不要犹豫告诉我! 感谢阅读!
【问题讨论】:
您说消息是在几分钟前发送的,但您从那时起是否重置了您的机器人? 我知道它被缓存了,即使有人在机器人还活着的时候发送消息也会给出相同的结果。为了测试,我召唤了机器人(例如!help),所以我在测试时总是有一个“新鲜”的消息 【参考方案1】:尝试client.users.fetch('uid');
获取用户,然后提取您需要的信息。这会从 Discord 中而不是从缓存中拉取更新用户。
【讨论】:
还是空【参考方案2】:这是缓存的问题。如果消息是在机器人启动后发送的,机器人只会给出 lastMessage。您需要从所有渠道获取所有消息才能使其工作,或者在机器人启动后等待用户发布消息。
【讨论】:
以上是关于lastmessageID 始终为空,除了我的主要内容,如果未能解决你的问题,请参考以下文章
@Mock MessageSource 在 Junit 测试中始终为 getMessage 返回 null
使用 ViewModel 和 LiveData 递增变量的简单片段示例 - 变量始终为空