rafafawfa

This commit is contained in:
SengokuCola
2025-04-25 23:47:19 +08:00
parent 711405913e
commit 9a81979f67
2 changed files with 41 additions and 51 deletions

View File

@@ -5,7 +5,7 @@ import random # <-- 添加导入
from typing import List, Optional, Dict, Any, Deque from typing import List, Optional, Dict, Any, Deque
from collections import deque from collections import deque
from src.plugins.chat.message import MessageRecv, BaseMessageInfo, MessageThinking, MessageSending from src.plugins.chat.message import MessageRecv, BaseMessageInfo, MessageThinking, MessageSending
from src.plugins.chat.message import MessageSet, Seg # Local import needed after move from src.plugins.chat.message import Seg # Local import needed after move
from src.plugins.chat.chat_stream import ChatStream from src.plugins.chat.chat_stream import ChatStream
from src.plugins.chat.message import UserInfo from src.plugins.chat.message import UserInfo
from src.plugins.chat.chat_stream import chat_manager from src.plugins.chat.chat_stream import chat_manager
@@ -810,9 +810,7 @@ class HeartFChatting:
# 它需要负责创建 MessageThinking 和 MessageSending 对象 # 它需要负责创建 MessageThinking 和 MessageSending 对象
# 并调用 self.sender.register_thinking 和 self.sender.type_and_send_message # 并调用 self.sender.register_thinking 和 self.sender.type_and_send_message
first_bot_msg = await self._send_response_messages( first_bot_msg = await self._send_response_messages(
anchor_message=anchor_message, anchor_message=anchor_message, response_set=response_set, thinking_id=thinking_id
response_set=response_set,
thinking_id=thinking_id
) )
if first_bot_msg: if first_bot_msg:
@@ -824,7 +822,9 @@ class HeartFChatting:
await self._handle_emoji(emoji_anchor, response_set, send_emoji) await self._handle_emoji(emoji_anchor, response_set, send_emoji)
else: else:
# 如果 _send_response_messages 返回 None表示在发送前就失败或没有消息可发送 # 如果 _send_response_messages 返回 None表示在发送前就失败或没有消息可发送
logger.warning(f"{self.log_prefix}[Sender-{thinking_id}] 未能发送任何回复消息 (_send_response_messages 返回 None)。") logger.warning(
f"{self.log_prefix}[Sender-{thinking_id}] 未能发送任何回复消息 (_send_response_messages 返回 None)。"
)
# 这里可能不需要抛出异常,取决于 _send_response_messages 的具体实现 # 这里可能不需要抛出异常,取决于 _send_response_messages 的具体实现
except Exception as e: except Exception as e:
@@ -1018,7 +1018,6 @@ class HeartFChatting:
thinking_start_time=thinking_start_time, # 传递原始思考开始时间 thinking_start_time=thinking_start_time, # 传递原始思考开始时间
) )
try: try:
if not mark_head: if not mark_head:
mark_head = True mark_head = True
first_bot_msg = bot_message # 保存第一个成功发送的消息对象 first_bot_msg = bot_message # 保存第一个成功发送的消息对象
@@ -1029,7 +1028,9 @@ class HeartFChatting:
reply_message_ids.append(part_message_id) # 记录我们生成的ID reply_message_ids.append(part_message_id) # 记录我们生成的ID
except Exception as e: except Exception as e:
logger.error(f"{self.log_prefix}[Sender-{thinking_id}] 发送回复片段 {i} ({part_message_id}) 时失败: {e}") logger.error(
f"{self.log_prefix}[Sender-{thinking_id}] 发送回复片段 {i} ({part_message_id}) 时失败: {e}"
)
# 这里可以选择是继续发送下一个片段还是中止 # 这里可以选择是继续发送下一个片段还是中止
# 在尝试发送完所有片段后,完成原始的 thinking_id 状态 # 在尝试发送完所有片段后,完成原始的 thinking_id 状态
@@ -1041,10 +1042,9 @@ class HeartFChatting:
self._current_cycle.set_response_info( self._current_cycle.set_response_info(
response_text=response_set, # 保留原始文本 response_text=response_set, # 保留原始文本
anchor_message_id=anchor_message.message_info.message_id, # 保留锚点ID anchor_message_id=anchor_message.message_info.message_id, # 保留锚点ID
reply_message_ids=reply_message_ids # 添加实际发送的ID列表 reply_message_ids=reply_message_ids, # 添加实际发送的ID列表
) )
return first_bot_msg # 返回第一个成功发送的消息对象 return first_bot_msg # 返回第一个成功发送的消息对象
async def _handle_emoji(self, anchor_message: Optional[MessageRecv], response_set: List[str], send_emoji: str = ""): async def _handle_emoji(self, anchor_message: Optional[MessageRecv], response_set: List[str], send_emoji: str = ""):
@@ -1060,7 +1060,6 @@ class HeartFChatting:
if emoji_raw: if emoji_raw:
emoji_path, description = emoji_raw emoji_path, description = emoji_raw
emoji_cq = image_path_to_base64(emoji_path) emoji_cq = image_path_to_base64(emoji_path)
thinking_time_point = round(time.time(), 2) # 用于唯一ID thinking_time_point = round(time.time(), 2) # 用于唯一ID
message_segment = Seg(type="emoji", data=emoji_cq) message_segment = Seg(type="emoji", data=emoji_cq)
@@ -1086,7 +1085,6 @@ class HeartFChatting:
except Exception as e: except Exception as e:
logger.error(f"{self.log_prefix} 发送表情包 {bot_message.message_info.message_id} 时失败: {e}") logger.error(f"{self.log_prefix} 发送表情包 {bot_message.message_info.message_id} 时失败: {e}")
def get_cycle_history(self, last_n: Optional[int] = None) -> List[Dict[str, Any]]: def get_cycle_history(self, last_n: Optional[int] = None) -> List[Dict[str, Any]]:
"""获取循环历史记录 """获取循环历史记录

View File

@@ -1,7 +1,6 @@
# src/plugins/heartFC_chat/heartFC_sender.py # src/plugins/heartFC_chat/heartFC_sender.py
import asyncio # 重新导入 asyncio import asyncio # 重新导入 asyncio
import time from typing import Dict, Optional # 重新导入类型
from typing import Dict, List, Optional, Union # 重新导入类型
from src.common.logger import get_module_logger from src.common.logger import get_module_logger
from ..message.api import global_api from ..message.api import global_api
@@ -102,11 +101,7 @@ class HeartFCSender:
_ = message.update_thinking_time() _ = message.update_thinking_time()
# --- 条件应用 set_reply 逻辑 --- # --- 条件应用 set_reply 逻辑 ---
if ( if message.apply_set_reply_logic and message.is_head and not message.is_private_message():
message.apply_set_reply_logic
and message.is_head
and not message.is_private_message()
):
logger.debug(f"[{chat_id}] 应用 set_reply 逻辑: {message.processed_plain_text[:20]}...") logger.debug(f"[{chat_id}] 应用 set_reply 逻辑: {message.processed_plain_text[:20]}...")
message.set_reply() message.set_reply()
# --- 结束条件 set_reply --- # --- 结束条件 set_reply ---
@@ -121,14 +116,11 @@ class HeartFCSender:
) )
await asyncio.sleep(typing_time) await asyncio.sleep(typing_time)
await self.send_message(message) await self.send_message(message)
await self.storage.store_message(message, message.chat_stream) await self.storage.store_message(message, message.chat_stream)
except Exception as e: except Exception as e:
logger.error( logger.error(f"[{chat_id}] 处理或存储消息 {message_id} 时出错: {e}")
f"[{chat_id}] 处理或存储消息 {message_id} 时出错: {e}"
)
raise e raise e
finally: finally:
await self.complete_thinking(chat_id, message_id) await self.complete_thinking(chat_id, message_id)
@@ -139,7 +131,9 @@ class HeartFCSender:
logger.error(f"[{message.message_info.platform or 'UnknownPlatform'}] 消息缺少 chat_stream无法发送") logger.error(f"[{message.message_info.platform or 'UnknownPlatform'}] 消息缺少 chat_stream无法发送")
return return
if not message.message_info or not message.message_info.message_id: if not message.message_info or not message.message_info.message_id:
logger.error(f"[{message.chat_stream.stream_id if message.chat_stream else 'UnknownStream'}] 消息缺少 message_info 或 message_id无法发送") logger.error(
f"[{message.chat_stream.stream_id if message.chat_stream else 'UnknownStream'}] 消息缺少 message_info 或 message_id无法发送"
)
return return
chat_id = message.chat_stream.stream_id chat_id = message.chat_stream.stream_id
@@ -154,8 +148,6 @@ class HeartFCSender:
await self.storage.store_message(message, message.chat_stream) # 使用现有的存储方法 await self.storage.store_message(message, message.chat_stream) # 使用现有的存储方法
except Exception as e: except Exception as e:
logger.error( logger.error(f"[{chat_id}] 处理或存储消息 {message_id} 时出错: {e}")
f"[{chat_id}] 处理或存储消息 {message_id} 时出错: {e}"
)
# 重新抛出异常,让调用者知道失败了 # 重新抛出异常,让调用者知道失败了
raise e raise e