https://github.com/mamoe/mirai/issues/2883
Mirai版本:2.14.0-RC
mirai-api-http版本:v2.9.1
MCL Addon版本:v2.0.2
iTXTech MCL Version: 2.0.1-b5303b5
protocol: IPAD
heartbeatStrategy: STAT_HB
无签名,通过密码自动登录,无验证码
一直通过WebSocket API调用,业务端有一项功能是末位淘汰,在出现 #2882 (26日开始无法接收成员退群事件) 的问题之后,由于业务逻辑中也有一份成员列表缓存,本就有定期刷新成员列表的逻辑,于是尝试将原先调用的memberList接口换成latestMemberList接口,结果发现末位淘汰前的排名前列通知功能全重新通知了一遍,说明整个列表排名全部变了,检查获取到的数据发现返回数据中所有成员的lastSpeakTimestamp都完全与joinTimestamp相同,实为joinTimestamp。
复现
zyjson版本:2.5
调用方法:
创建消息基础 (当前消息, 真)
添加获取群员列表 (当前消息, 群号, 真) ' 在这里置入获取指令
当前echo = 添加echo等待队列 (全局echo队列, 当前消息, 3, 18000, 群号)
发送WebSocket (当前连接ID, 编码_Ansi到Utf8 (当前消息.到文本 ()))
从echo队列等待echo出现 (全局echo队列, 当前echo, 100, 20000)
相关代码:
.子程序 添加获取群员列表
.参数 输入json, zyJsonValue, 参考
.参数 目标群, 长整数型
.参数 禁用缓存, 逻辑型
.如果 (禁用缓存)
输入json.置文本 (“command”, “latestMemberList”)
输入json.置长整数 (“content.memberIds[0]”, 0)
输入json.移除成员 (“content.memberIds”, 0)
.否则
输入json.置文本 (“command”, “memberList”)
.如果结束
输入json.置长整数 (“content.target”, 目标群)
返回数据截取(已脱敏并格式化):
{
"id": [QQ1],
"memberName": "[昵称1]",
"specialTitle": "",
"permission": "MEMBER",
"joinTimestamp": 1744682346,
"lastSpeakTimestamp": 1744682346,
"muteTimeRemaining": 0,
"group": {
"id": [群号],
"name": "[群名]",
"permission": "ADMINISTRATOR"
}
}, {
"id": [QQ2],
"memberName": "[昵称2]",
"specialTitle": "",
"permission": "MEMBER",
"joinTimestamp": 1739181298,
"lastSpeakTimestamp": 1739181298,
"muteTimeRemaining": 0,
"group": {
"id": [群号],
"name": "[群名]",
"permission": "ADMINISTRATOR"
}
}, {
"id": [QQ3],
"memberName": "[昵称3]",
"specialTitle": "",
"permission": "MEMBER",
"joinTimestamp": 1741005585,
"lastSpeakTimestamp": 1741005585,
"muteTimeRemaining": 0,
"group": {
"id": [群号],
"name": "[群名]",
"permission": "ADMINISTRATOR"
}
}
网络日志
[0m2025-06-14 21:52:49 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:50 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:51 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:51 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:51 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
[0m2025-06-14 21:52:51 V/Net [QQ号]: Send: friendlist.GetTroopMemberListReq(friendlist.GetTroopMemberListReq)[0m
[0m2025-06-14 21:52:51 V/Net [QQ号]: Recv: friendlist.GetTroopMemberListReq[0m
WGzeyu created this issue in
mamoe/mirai
open
使用latestMemberList获取到的数据有误,所有成员的最后发言时间内容实为加群时间
#2883