From b58dab9e57481023611838ca0e06d4e9394fe25b Mon Sep 17 00:00:00 2001 From: Bakadax Date: Mon, 14 Apr 2025 19:23:24 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E5=A4=9A=E6=A0=B7?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recv_handler.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index d216f34..173e8b7 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -140,7 +140,6 @@ class RecvHandler: sub_type = raw_message.get("sub_type") if sub_type == MessageType.Group.normal: sender_info: dict = raw_message.get("sender") - # 发送者用户信息 user_info: UserInfo = UserInfo( platform=global_config.platform, @@ -373,13 +372,15 @@ class RecvHandler: """ message_id = raw_message.get("data").get("id") message_detail: dict = await get_message_detail(self.server_connection, message_id) + raw_message: str = message_detail.get("raw_message") sender_info: dict = message_detail.get("sender") sender_nickname: str = sender_info.get("nickname") + sender_id: str = sender_info.get("user_id") if not sender_nickname: logger.warning("无法获取被引用的人的昵称,返回默认值") - return Seg(type="text", data="回复QQ用户的消息,说:") + return Seg(type="text", data=f"[回复 QQ用户(未知id):{raw_message}],说:") else: - return Seg(type="text", data=f"回复{sender_nickname}的消息,说:") + return Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}):{raw_message}],说:") async def handle_notice(self, raw_message: dict) -> None: notice_type = raw_message.get("notice_type") From 735dd744507f9c5229a48e60c98d6a7445df64e3 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Mon, 14 Apr 2025 19:32:23 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=AF=B9=E9=BD=90=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=8F=90=E5=8F=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recv_handler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index 173e8b7..37465fd 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -352,7 +352,7 @@ class RecvHandler: if str(self_id) == str(qq_id): self_info: dict = await get_self_info(self.server_connection) if self_info: - return Seg(type=RealMessageType.text, data=f"@{self_info.get('nickname')}") + return Seg(type=RealMessageType.text, data=f"@{self_info.get('nickname')}(id:{self_info.get('user_id')})") else: return None else: @@ -360,7 +360,7 @@ class RecvHandler: if member_info: return Seg( type=RealMessageType.text, - data=f"@{member_info.get('nickname')}", + data=f"@{member_info.get('nickname')}(id:{member_info.get('user_id')})", ) else: return None From 0a6e14e79b797282cd6b662b90c9b4b521a37ce4 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Mon, 14 Apr 2025 19:42:57 +0800 Subject: [PATCH 3/8] modified: src/recv_handler.py --- src/recv_handler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/recv_handler.py b/src/recv_handler.py index 37465fd..04b9ba6 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -140,6 +140,7 @@ class RecvHandler: sub_type = raw_message.get("sub_type") if sub_type == MessageType.Group.normal: sender_info: dict = raw_message.get("sender") + # 发送者用户信息 user_info: UserInfo = UserInfo( platform=global_config.platform, From ed4b50a41b31e98e440cfa6e59f0815908aff956 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Mon, 14 Apr 2025 20:55:50 +0800 Subject: [PATCH 4/8] modified: src/recv_handler.py --- src/recv_handler.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index 04b9ba6..3bfca6e 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -373,15 +373,15 @@ class RecvHandler: """ message_id = raw_message.get("data").get("id") message_detail: dict = await get_message_detail(self.server_connection, message_id) - raw_message: str = message_detail.get("raw_message") + reply_message: str = message_detail.get("raw_message") sender_info: dict = message_detail.get("sender") sender_nickname: str = sender_info.get("nickname") sender_id: str = sender_info.get("user_id") if not sender_nickname: logger.warning("无法获取被引用的人的昵称,返回默认值") - return Seg(type="text", data=f"[回复 QQ用户(未知id):{raw_message}],说:") + return Seg(type="text", data=f"[回复 QQ用户(未知id):{reply_message}],说:") else: - return Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}):{raw_message}],说:") + return Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}):{reply_message}],说:") async def handle_notice(self, raw_message: dict) -> None: notice_type = raw_message.get("notice_type") From 1321bc218f570809c64fd7095c25aea1464e84ac Mon Sep 17 00:00:00 2001 From: Bakadax Date: Tue, 15 Apr 2025 09:32:52 +0800 Subject: [PATCH 5/8] modified: src/recv_handler.py --- src/recv_handler.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index 8b4dd13..097e826 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -225,6 +225,12 @@ class RecvHandler: logger.warning("text处理失败") case RealMessageType.face: pass + case RealMessageType.reply: + ret_seg = await self.handle_reply_message(sub_message) + if ret_seg: + seg_message += ret_seg + else: + logger.warning("reply处理失败") case RealMessageType.image: ret_seg = await self.handle_image_message(sub_message) if ret_seg: @@ -260,12 +266,6 @@ class RecvHandler: case RealMessageType.share: logger.warning("暂时不支持链接解析") pass - case RealMessageType.reply: - ret_seg = await self.handle_reply_message(sub_message) - if ret_seg: - seg_message.append(ret_seg) - else: - logger.warning("reply处理失败") case RealMessageType.forward: forward_message_id = sub_message.get("data").get("id") request_uuid = str(uuid.uuid4()) @@ -386,18 +386,26 @@ class RecvHandler: """ message_id = raw_message.get("data").get("id") message_detail: dict = await get_message_detail(self.server_connection, message_id) + logger.warning(message_detail) if not message_detail: logger.warning("获取被引用的消息详情失败") return None - reply_message: str = message_detail.get("raw_message") + reply_message = await self.handle_real_message(message_detail) sender_info: dict = message_detail.get("sender") sender_nickname: str = sender_info.get("nickname") sender_id: str = sender_info.get("user_id") + seg_message: List[Seg] = [] if not sender_nickname: logger.warning("无法获取被引用的人的昵称,返回默认值") - return Seg(type="text", data=f"[回复 QQ用户(未知id):{reply_message}],说:") + seg_message.append(Seg(type="text", data=f"[回复 QQ用户(未知id):")) + seg_message += reply_message + seg_message.append(Seg(type="text", data=f"],说:")) + return seg_message else: - return Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}):{reply_message}],说:") + seg_message.append(Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}:")) + seg_message += reply_message + seg_message.append(Seg(type="text", data=f"],说:")) + return seg_message async def handle_notice(self, raw_message: dict) -> None: notice_type = raw_message.get("notice_type") From 6fe7e672e03f2b114b418c7dd86d060c99dd0a36 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Tue, 15 Apr 2025 09:35:28 +0800 Subject: [PATCH 6/8] modified: src/recv_handler.py --- src/recv_handler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index 097e826..538f92b 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -386,7 +386,6 @@ class RecvHandler: """ message_id = raw_message.get("data").get("id") message_detail: dict = await get_message_detail(self.server_connection, message_id) - logger.warning(message_detail) if not message_detail: logger.warning("获取被引用的消息详情失败") return None From c6495b7e646c1f72ee5d27877d5ffd313fdb3c5f Mon Sep 17 00:00:00 2001 From: Bakadax Date: Tue, 15 Apr 2025 09:43:04 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E6=BC=8F=E4=BA=86?= =?UTF-8?q?=E7=9A=84=E5=8F=B3=E6=8B=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recv_handler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index 538f92b..b17303f 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -401,7 +401,7 @@ class RecvHandler: seg_message.append(Seg(type="text", data=f"],说:")) return seg_message else: - seg_message.append(Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}:")) + seg_message.append(Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}):")) seg_message += reply_message seg_message.append(Seg(type="text", data=f"],说:")) return seg_message From 79ee7c32a30d4c5b66e925d9802724b1320e6a58 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Tue, 15 Apr 2025 10:04:07 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=B8=8D=E5=85=81=E8=AE=B8=E9=80=92?= =?UTF-8?q?=E5=BD=92=E8=8E=B7=E5=BE=97=E5=BC=95=E7=94=A8=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E6=9E=81=E7=AB=AF=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E6=B6=88=E6=81=AF=E5=8F=98=E5=BE=97=E5=A4=AA=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recv_handler.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/recv_handler.py b/src/recv_handler.py index b17303f..2f655c0 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -201,7 +201,7 @@ class RecvHandler: logger.info("发送到Maibot处理信息") await self.message_process(message_base) - async def handle_real_message(self, raw_message: dict) -> List[Seg]: + async def handle_real_message(self, raw_message: dict, in_reply: bool = False) -> List[Seg]: """ 处理实际消息 Parameters: @@ -226,11 +226,14 @@ class RecvHandler: case RealMessageType.face: pass case RealMessageType.reply: - ret_seg = await self.handle_reply_message(sub_message) - if ret_seg: - seg_message += ret_seg + if not in_reply: + ret_seg = await self.handle_reply_message(sub_message) + if ret_seg: + seg_message += ret_seg + else: + logger.warning("reply处理失败") else: - logger.warning("reply处理失败") + pass case RealMessageType.image: ret_seg = await self.handle_image_message(sub_message) if ret_seg: @@ -389,7 +392,7 @@ class RecvHandler: if not message_detail: logger.warning("获取被引用的消息详情失败") return None - reply_message = await self.handle_real_message(message_detail) + reply_message = await self.handle_real_message(message_detail, in_reply=True) sender_info: dict = message_detail.get("sender") sender_nickname: str = sender_info.get("nickname") sender_id: str = sender_info.get("user_id")