feat: 增强消息处理逻辑,支持引用嵌套消息解析
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user