From 931b2c3d2a57e9a3236207c0fa1841dd9a480294 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Fri, 2 May 2025 18:32:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=A4=8D=E5=AD=98?= =?UTF-8?q?=E5=85=A5=E4=BF=A1=E6=81=AF=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/PFC/message_sender.py | 2 +- src/plugins/PFC/observation_info.py | 37 +++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/plugins/PFC/message_sender.py b/src/plugins/PFC/message_sender.py index 53c20374..a33314e3 100644 --- a/src/plugins/PFC/message_sender.py +++ b/src/plugins/PFC/message_sender.py @@ -70,7 +70,7 @@ class DirectMessageSender: message_set = MessageSet(chat_stream, message_id) message_set.add_message(message) await message_manager.add_message(message_set) - await self.storage.store_message(message, chat_stream) + # await self.storage.store_message(message, chat_stream) logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}") except Exception as e: diff --git a/src/plugins/PFC/observation_info.py b/src/plugins/PFC/observation_info.py index c7572955..5e0bdc16 100644 --- a/src/plugins/PFC/observation_info.py +++ b/src/plugins/PFC/observation_info.py @@ -6,6 +6,7 @@ from .chat_observer import ChatObserver from .chat_states import NotificationHandler, NotificationType, Notification from src.plugins.utils.chat_message_builder import build_readable_messages import traceback # 导入 traceback 用于调试 +from src.config.config import global_config logger = get_module_logger("observation_info") @@ -252,6 +253,27 @@ class ObservationInfo: message_time = message.get("time") message_id = message.get("message_id") processed_text = message.get("processed_plain_text", "") + is_bot_message = False + + # 确定发送者和是否为机器人 + if user_info: + sender_id = str(user_info.user_id) + if sender_id == str(global_config.BOT_QQ): + is_bot_message = True + # 更新机器人最后发言时间 + if message_time and message_time > (self.last_bot_speak_time or 0): + self.last_bot_speak_time = message_time + else: + # 更新用户最后发言时间 + if message_time and message_time > (self.last_user_speak_time or 0): + self.last_user_speak_time = message_time + self.active_users.add(sender_id) + self.last_message_sender = sender_id + else: + logger.warning( + f"[私聊][{self.private_name}]处理消息更新时缺少有效的 UserInfo 对象, message_id: {message_id}" + ) + self.last_message_sender = None # 只有在新消息到达时才更新 last_message 相关信息 if message_time and message_time > (self.last_message_time or 0): @@ -278,12 +300,17 @@ class ObservationInfo: ) self.last_message_sender = None # 发送者未知 - # 将原始消息字典添加到未处理列表 - self.unprocessed_messages.append(message) - self.new_messages_count = len(self.unprocessed_messages) # 直接用列表长度 + if not is_bot_message: + # 将原始消息字典添加到未处理列表 + self.unprocessed_messages.append(message) + self.new_messages_count = len(self.unprocessed_messages) # 直接用列表长度 + logger.debug(f"[私聊][{self.private_name}] 用户新消息加入未处理列表. 当前未处理数: {self.new_messages_count}") + # logger.debug(f"[私聊][{self.private_name}]消息更新: last_time={self.last_message_time}, new_count={self.new_messages_count}") + self.update_changed() # 标记状态已改变 + else: + # 是机器人自己的消息,仅记录日志,不加入未处理列表 + logger.debug(f"[私聊][{self.private_name}] 观察到机器人自身消息 (ID: {message_id}),仅更新时间戳,不处理。") - # logger.debug(f"[私聊][{self.private_name}]消息更新: last_time={self.last_message_time}, new_count={self.new_messages_count}") - self.update_changed() # 标记状态已改变 else: # 如果消息时间戳不是最新的,可能不需要处理,或者记录一个警告 pass