Thanks to visit codestin.com
Credit goes to github.com

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions