From ab08c83d415e332173ab1e604fc6962cbb7c8279 Mon Sep 17 00:00:00 2001 From: watson Date: Sun, 28 Jun 2026 10:37:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(mcp):=20get=5Fchat=5Fhistory/get=5Fchat=5F?= =?UTF-8?q?images=20=E5=A4=B4=E9=83=A8=E6=9A=B4=E9=9C=B2=20chatroom=20ID?= =?UTF-8?q?=20(#142)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同名前缀的群 (如 18福特Fusion_211 有 3 个租期群) 传显示名给 decode_image 会 resolve_username() 匹配错群 (通常是不含目标 local_id 的旧群). 修复: get_chat_history / get_chat_images 头部输出已解析的内部 username: - 群聊: [群聊, id=xxx@chatroom] - 单聊 (username != display_name 时): [id=wxid_xxx] 下游可直接拿 ID 回传给任意 MCP 工具的 chat_name 参数, resolve_username() 已识别 @chatroom / wxid_ 格式直接透传, 避开模糊匹配. --- mcp_server.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mcp_server.py b/mcp_server.py index 3871843..15fc6c0 100644 --- a/mcp_server.py +++ b/mcp_server.py @@ -2150,7 +2150,9 @@ def get_chat_history(chat_name: str, limit: int = 50, offset: int = 0, start_tim header = f"{ctx['display_name']} 的消息记录(返回 {len(lines)} 条,offset={offset}, limit={limit})" if ctx['is_group']: - header += " [群聊]" + header += f" [群聊, id={ctx['username']}]" + elif ctx['username'] != ctx['display_name']: + header += f" [id={ctx['username']}]" if start_time or end_time: header += f"\n时间范围: {start_time or '最早'} ~ {end_time or '最新'}" if msg_types: @@ -3499,7 +3501,8 @@ def get_chat_images(chat_name: str, limit: int = 20, offset: int = 0, start_time line += " (无资源信息)" lines.append(line) - header = f"{display_name} 的 {len(lines)} 张图片(offset={offset}, limit={limit})" + id_tag = f", id={username}" if username != display_name else "" + header = f"{display_name} 的 {len(lines)} 张图片(offset={offset}, limit={limit}{id_tag})" if start_time or end_time: header += f"\n时间范围: {start_time or '最早'} ~ {end_time or '最新'}" return header + ":\n\n" + "\n".join(lines) + _pagination_hint(len(lines), limit, offset)