From 04a1879170a915298076ecac3306c55591886d58 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Sun, 20 Apr 2025 17:03:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=9A=E5=88=9A=E6=B2=A1=E4=BF=AE?= =?UTF-8?q?=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat_module/heartFC_chat/messagesender.py | 16 +++++++++++++--- .../chat_module/heartFC_chat/pf_chatting.py | 18 ++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/plugins/chat_module/heartFC_chat/messagesender.py b/src/plugins/chat_module/heartFC_chat/messagesender.py index 6fab730fa..75948e17c 100644 --- a/src/plugins/chat_module/heartFC_chat/messagesender.py +++ b/src/plugins/chat_module/heartFC_chat/messagesender.py @@ -162,11 +162,21 @@ class MessageManager: container = self.get_container(chat_stream.stream_id) container.add_message(message) - def check_if_sending_message_exist(self,chat_id,thinking_id): + def check_if_sending_message_exist(self, chat_id, thinking_id): + """检查指定聊天流的容器中是否存在具有特定 thinking_id 的 MessageSending 消息""" container = self.get_container(chat_id) if container.has_messages(): - - + for message in container.get_all_messages(): + # 首先确保是 MessageSending 类型 + if isinstance(message, MessageSending): + # 然后再访问 message_info.message_id + # 检查 message_id 是否匹配 thinking_id 或以 "me" 开头 + if message.message_info.message_id == thinking_id or message.message_info.message_id[:2] == "me": + print(f"检查到存在相同thinking_id的消息: {message.message_info.message_id}???{thinking_id}") + + return True + return False + async def process_chat_messages(self, chat_id: str): """处理聊天流消息""" container = self.get_container(chat_id) diff --git a/src/plugins/chat_module/heartFC_chat/pf_chatting.py b/src/plugins/chat_module/heartFC_chat/pf_chatting.py index 33de6dda1..bff9608f9 100644 --- a/src/plugins/chat_module/heartFC_chat/pf_chatting.py +++ b/src/plugins/chat_module/heartFC_chat/pf_chatting.py @@ -13,6 +13,8 @@ from src.plugins.chat.chat_stream import chat_manager from src.common.logger import get_module_logger, LogConfig, DEFAULT_CONFIG # 引入 DEFAULT_CONFIG from src.plugins.models.utils_model import LLMRequest from src.plugins.chat.utils import parse_text_timestamps +from src.plugins.chat.utils_image import image_path_to_base64 # Local import needed after move +from src.plugins.chat.message import Seg # Local import needed after move # 定义日志配置 (使用 loguru 格式) interest_log_config = LogConfig( @@ -90,7 +92,7 @@ class PFChatting: self._loop_active: bool = False # Is the loop currently running? self._loop_task: Optional[asyncio.Task] = None # Stores the main loop task self._trigger_count_this_activation: int = 0 # Counts triggers within an active period - self._initial_duration: float = 30.0 # 首次触发增加的时间 + self._initial_duration: float = 60.0 # 首次触发增加的时间 self._last_added_duration: float = self._initial_duration # <--- 新增:存储上次增加的时间 def _get_log_prefix(self) -> str: @@ -209,7 +211,16 @@ class PFChatting: log_prefix = self._get_log_prefix() logger.info(f"{log_prefix} PFChatting: 麦麦打算好好聊聊 (定时器: {self._loop_timer:.1f}s)") try: + thinking_id = "" while True: + if self.heartfc_controller.MessageManager().check_if_sending_message_exist(self.stream_id, thinking_id): + logger.info(f"{log_prefix} PFChatting: 11111111111111111111111111111111麦麦还在发消息,等会再规划") + await asyncio.sleep(1) + continue + else: + logger.info(f"{log_prefix} PFChatting: 11111111111111111111111111111111麦麦不发消息了,开始规划") + + async with self._timer_lock: current_timer = self._loop_timer if current_timer <= 0: @@ -257,11 +268,8 @@ class PFChatting: try: # --- Replier Work --- # replier_result = await self._replier_work( - observed_messages=observed_messages, # Pass observed messages anchor_message=anchor_message, thinking_id=thinking_id, - current_mind=current_mind, - # send_emoji=send_emoji_from_tools, # Pass tool emoji query ) except Exception as e_replier: logger.error(f"{log_prefix} 循环: 回复器工作失败: {e_replier}") @@ -813,8 +821,6 @@ class PFChatting: async def _handle_emoji(self, anchor_message: Optional[MessageRecv], response_set: List[str], send_emoji: str = ""): """处理表情包 (尝试锚定到 anchor_message)""" - from src.plugins.chat.utils_image import image_path_to_base64 # Local import needed after move - from src.plugins.chat.message import Seg # Local import needed after move if not anchor_message or not anchor_message.chat_stream: logger.error(f"{self._get_log_prefix()} 无法处理表情包,缺少有效的锚点消息或聊天流。")