添加带引用的消息

This commit is contained in:
zhiyu 2024-01-22 10:02:57 +08:00
parent 4d9275d667
commit a8045930d6
3 changed files with 30 additions and 1 deletions

View File

@ -45,7 +45,7 @@ def parser_chatroom_message(messages):
message.append(Me())
updated_messages.append(tuple(message))
continue
if message[10] is None: # BytesExtra是空的跳过
if message[10] is None and not (message[2] == 49 and message[3] == 57): # BytesExtra是空且不是带引用的消息的跳过
message.append(ContactDefault(wxid))
updated_messages.append(tuple(message))
continue

View File

@ -8,6 +8,7 @@ from app.components.bubble_message import BubbleMessage, ChatWidget, Notice
from app.person import Me
from app.util import get_abs_path
from app.util.emoji import get_emoji
from app.util.compress_content import parser_reply
class ChatInfo(QWidget):
@ -157,6 +158,26 @@ class ChatInfo(QWidget):
is_send
)
self.chat_window.add_message_item(bubble_message, 0)
elif type_ == 49 and message[3] == 57:
# return
if self.is_5_min(timestamp):
time_message = Notice(self.last_str_time)
self.last_str_time = str_time
self.chat_window.add_message_item(time_message, 0)
content = parser_reply(message[11])
refer_msg = content.get('refer')
if refer_msg is None:
str_content = content.get('title')
else:
str_content = f"{refer_msg.get('displayname')}: {refer_msg.get('content')}\n—————————\n{content.get('title')}"
bubble_message = BubbleMessage(
str_content,
avatar,
1,
is_send,
display_name=display_name
)
self.chat_window.add_message_item(bubble_message, 0)
elif type_ == 10000:
str_content = str_content.lstrip('<revokemsg>').rstrip('</revokemsg>')
message = Notice(str_content)

View File

@ -70,6 +70,14 @@ def parser_reply(data: bytes):
title = appmsg.find("title").text
refermsg_content = appmsg.find("refermsg").find("content").text
refermsg_type = int(appmsg.find("refermsg").find("type").text)
# 处理引用的消息是个带有引用的消息
if refermsg_type == 49:
refer_root = ET.XML(refermsg_content)
refer_appmsg = refer_root.find('appmsg')
refer_msg_type = int(refer_appmsg.find('type').text)
if refer_msg_type == 57:
refermsg_type = 1
refermsg_content = refer_appmsg.find('title').text
refermsg_displayname = appmsg.find("refermsg").find("displayname").text
return {
"type": msg_type,