From 289a92293b0194d5662ddf15218a3947e1a61ccf Mon Sep 17 00:00:00 2001 From: tcmofashi Date: Wed, 2 Jul 2025 13:05:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=AE=B5mention=5Fbot=E7=9A=84=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/message_receive/message.py | 8 ++------ src/chat/normal_chat/normal_chat.py | 6 +++++- src/chat/utils/utils.py | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/chat/message_receive/message.py b/src/chat/message_receive/message.py index 1c8f7789e..6f2c3f784 100644 --- a/src/chat/message_receive/message.py +++ b/src/chat/message_receive/message.py @@ -108,7 +108,7 @@ class MessageRecv(Message): self.detailed_plain_text = message_dict.get("detailed_plain_text", "") self.is_emoji = False self.is_picid = False - self.is_mentioned = 0.0 + self.is_mentioned = None self.priority_mode = "interest" self.priority_info = None @@ -152,14 +152,10 @@ class MessageRecv(Message): elif segment.type == "mention_bot": self.is_mentioned = float(segment.data) return "" - elif segment.type == "set_priority_mode": - # 处理设置优先级模式的消息段 - if isinstance(segment.data, str): - self.priority_mode = segment.data - return "" elif segment.type == "priority_info": if isinstance(segment.data, dict): # 处理优先级信息 + self.priority_mode = "priority" self.priority_info = segment.data """ { diff --git a/src/chat/normal_chat/normal_chat.py b/src/chat/normal_chat/normal_chat.py index 6c285f21d..04958b607 100644 --- a/src/chat/normal_chat/normal_chat.py +++ b/src/chat/normal_chat/normal_chat.py @@ -494,7 +494,11 @@ class NormalChat: # 检查是否有用户满足关系构建条件 asyncio.create_task(self._check_relation_building_conditions()) - await self.reply_one_message(message) + do_reply = await self.reply_one_message(message) + response_set = do_reply if do_reply else [] + factor = 0.5 + cnt = sum([len(r) for r in response_set]) + await asyncio.sleep(max(1, factor * cnt - 3)) # 等待tts # 等待一段时间再检查队列 await asyncio.sleep(1) diff --git a/src/chat/utils/utils.py b/src/chat/utils/utils.py index a147846ca..edfb9f31c 100644 --- a/src/chat/utils/utils.py +++ b/src/chat/utils/utils.py @@ -47,7 +47,8 @@ def is_mentioned_bot_in_message(message: MessageRecv) -> tuple[bool, float]: reply_probability = 0.0 is_at = False is_mentioned = False - + if message.is_mentioned is not None: + return bool(message.is_mentioned), message.is_mentioned if ( message.message_info.additional_config is not None and message.message_info.additional_config.get("is_mentioned") is not None From 482a171710f0a91344cf5d6a7fe0632bb7715497 Mon Sep 17 00:00:00 2001 From: tcmofashi Date: Wed, 2 Jul 2025 13:25:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BC=A9=E8=BF=9B?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/normal_chat/normal_chat.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/chat/normal_chat/normal_chat.py b/src/chat/normal_chat/normal_chat.py index be13c0605..4d37ff08f 100644 --- a/src/chat/normal_chat/normal_chat.py +++ b/src/chat/normal_chat/normal_chat.py @@ -808,7 +808,6 @@ class NormalChat: # 回复前处理 thinking_id = await self._create_thinking_message(message) - # 如果启用planner,预先修改可用actions(避免在并行任务中重复调用) available_actions = None if self.enable_planner: @@ -821,19 +820,17 @@ class NormalChat: logger.warning(f"[{self.stream_name}] 获取available_actions失败: {e}") available_actions = None - # 定义并行执行的任务 - async def generate_normal_response(): - """生成普通回复""" - try: - return await self.gpt.generate_response( - message=message, - available_actions=available_actions, - ) - except Exception as e: - logger.error(f"[{self.stream_name}] 回复生成出现错误:{str(e)} {traceback.format_exc()}") - return None - - + # 定义并行执行的任务 + async def generate_normal_response(): + """生成普通回复""" + try: + return await self.gpt.generate_response( + message=message, + available_actions=available_actions, + ) + except Exception as e: + logger.error(f"[{self.stream_name}] 回复生成出现错误:{str(e)} {traceback.format_exc()}") + return None async def plan_and_execute_actions(): """规划和执行额外动作"""