feat: 增强消息处理逻辑,支持引用嵌套消息解析

This commit is contained in:
XiGuang
2025-04-19 12:10:51 +08:00
parent afa1aa5d93
commit d916fda04c
2 changed files with 17 additions and 1 deletions
@@ -252,6 +252,9 @@ class SimpleGewechatClient:
abm_data = data_parser.parse_mutil_49()
if abm_data:
abm.message.append(abm_data)
abm.message_str = abm_data.message_str
abm.message.append(Plain(abm_data.message_str))
abm.message[-2].message_str = abm.message[-2].sender_str
case 51: # 帐号消息同步?
logger.info("消息类型(51):帐号消息同步?")
case 10000: # 被踢出群聊/更换群主/修改群名称
@@ -57,7 +57,20 @@ class GeweDataParser:
if displayname is not None:
replied_nickname = displayname.text
if refermsg_content is not None:
replied_content = refermsg_content.text
# 处理引用嵌套,包括嵌套公众号消息
if refermsg_content.text.startswith("<msg>") or refermsg_content.text.startswith("<?xml"):
try:
logger.debug("gewechat: Reference message is nested")
refer_root = eT.fromstring(refermsg_content.text)
refermsg_content_title = refer_root.find("appmsg").find("title")
logger.debug(f"gewechat: Reference message nesting: {refermsg_content_title.text}")
replied_content = refermsg_content_title.text
except Exception as e:
logger.error(f"gewechat: nested failed, {e}")
# 处理异常情况
replied_content = refermsg_content.text
else:
replied_content = refermsg_content.text
# 提取引用者说的内容
title = root.find(".//appmsg/title")