Skip to content

latestMemberList接口数据有误,最后发言时间实为加群时间且缺失该数据,且未将刷新的数据更新至Mirai内部缓存 #2883

@WGzeyu

Description

@WGzeyu

问题描述

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"
		}
	}

mirai-core 版本

2.14.0-RC

bot-protocol

IPAD

其他组件版本

mirai-api-http: v2.9.1
MCL Addon: v2.0.2

系统日志

网络日志

�[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

补充信息

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions