diff --git a/src/plugins/PFC/conversation.py b/src/plugins/PFC/conversation.py index 215a6ed26..37966a76e 100644 --- a/src/plugins/PFC/conversation.py +++ b/src/plugins/PFC/conversation.py @@ -9,7 +9,8 @@ from src.plugins.utils.chat_message_builder import build_readable_messages, get_ from typing import Dict, Any, Optional from ..chat.message import Message from .pfc_types import ConversationState -from .pfc import ChatObserver, GoalAnalyzer, DirectMessageSender +from .pfc import ChatObserver, GoalAnalyzer +from .message_sender import DirectMessageSender from src.common.logger_manager import get_logger from .action_planner import ActionPlanner from .observation_info import ObservationInfo diff --git a/src/plugins/PFC/message_sender.py b/src/plugins/PFC/message_sender.py index 06860af37..453cb2146 100644 --- a/src/plugins/PFC/message_sender.py +++ b/src/plugins/PFC/message_sender.py @@ -1,10 +1,14 @@ +import time from typing import Optional from src.common.logger import get_module_logger from ..chat.chat_stream import ChatStream from ..chat.message import Message -from maim_message import Seg +from maim_message import UserInfo, Seg from src.plugins.chat.message import MessageSending, MessageSet from src.plugins.chat.message_sender import message_manager +from ..storage.storage import MessageStorage +from ...config.config import global_config + logger = get_module_logger("message_sender") @@ -12,14 +16,14 @@ logger = get_module_logger("message_sender") class DirectMessageSender: """直接消息发送器""" - def __init__(self): - pass + def __init__(self, private_name: str): + self.private_name = private_name + self.storage = MessageStorage() async def send_message( self, chat_stream: ChatStream, content: str, - private_name: str, reply_to_message: Optional[Message] = None, ) -> None: """发送消息到聊天流 @@ -31,21 +35,39 @@ class DirectMessageSender: """ try: # 创建消息内容 - segments = [Seg(type="text", data={"text": content})] + segments = Seg(type="seglist", data=[Seg(type="text", data=content)]) + bot_user_info = UserInfo( + user_id=global_config.BOT_QQ, + user_nickname=global_config.BOT_NICKNAME, + platform=chat_stream.platform, + ) - # 检查是否需要引用回复 - if reply_to_message: - reply_id = reply_to_message.message_id - message_sending = MessageSending(segments=segments, reply_to_id=reply_id) - else: - message_sending = MessageSending(segments=segments) + message_id=f"dm{round(time.time(), 2)}" + + message = MessageSending( + message_id=message_id, + chat_stream=chat_stream, + bot_user_info=bot_user_info, + sender_info=reply_to_message.message_info.user_info if reply_to_message else None, + message_segment=segments, + reply=reply_to_message, + is_head=True, + is_emoji=False, + thinking_start_time=time.time(), + ) + + # 处理消息 + await message.process() + + _message_json = message.to_dict() # 发送消息 - message_set = MessageSet(chat_stream, message_sending.message_id) - message_set.add_message(message_sending) - message_manager.add_message(message_set) - logger.info(f"[私聊][{private_name}]PFC消息已发送: {content}") + 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) + logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}") except Exception as e: - logger.error(f"[私聊][{private_name}]PFC消息发送失败: {str(e)}") + logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}") raise diff --git a/src/plugins/PFC/pfc.py b/src/plugins/PFC/pfc.py index b7570f308..043308863 100644 --- a/src/plugins/PFC/pfc.py +++ b/src/plugins/PFC/pfc.py @@ -318,63 +318,63 @@ class GoalAnalyzer: logger.error(f"[私聊][{self.private_name}]分析对话状态时出错: {str(e)}") return False, False, f"分析出错: {str(e)}" +# 先注释掉,万一以后出问题了还能开回来((( +# class DirectMessageSender: +# """直接发送消息到平台的发送器""" -class DirectMessageSender: - """直接发送消息到平台的发送器""" +# def __init__(self, private_name: str): +# self.logger = get_module_logger("direct_sender") +# self.storage = MessageStorage() +# self.private_name = private_name - def __init__(self, private_name: str): - self.logger = get_module_logger("direct_sender") - self.storage = MessageStorage() - self.private_name = private_name +# async def send_via_ws(self, message: MessageSending) -> None: +# try: +# await global_api.send_message(message) +# except Exception as e: +# raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e - async def send_via_ws(self, message: MessageSending) -> None: - try: - await global_api.send_message(message) - except Exception as e: - raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e +# async def send_message( +# self, +# chat_stream: ChatStream, +# content: str, +# reply_to_message: Optional[Message] = None, +# ) -> None: +# """直接发送消息到平台 - async def send_message( - self, - chat_stream: ChatStream, - content: str, - reply_to_message: Optional[Message] = None, - ) -> None: - """直接发送消息到平台 +# Args: +# chat_stream: 聊天流 +# content: 消息内容 +# reply_to_message: 要回复的消息 +# """ +# # 构建消息对象 +# message_segment = Seg(type="text", data=content) +# bot_user_info = UserInfo( +# user_id=global_config.BOT_QQ, +# user_nickname=global_config.BOT_NICKNAME, +# platform=chat_stream.platform, +# ) - Args: - chat_stream: 聊天流 - content: 消息内容 - reply_to_message: 要回复的消息 - """ - # 构建消息对象 - message_segment = Seg(type="text", data=content) - bot_user_info = UserInfo( - user_id=global_config.BOT_QQ, - user_nickname=global_config.BOT_NICKNAME, - platform=chat_stream.platform, - ) +# message = MessageSending( +# message_id=f"dm{round(time.time(), 2)}", +# chat_stream=chat_stream, +# bot_user_info=bot_user_info, +# sender_info=reply_to_message.message_info.user_info if reply_to_message else None, +# message_segment=message_segment, +# reply=reply_to_message, +# is_head=True, +# is_emoji=False, +# thinking_start_time=time.time(), +# ) - message = MessageSending( - message_id=f"dm{round(time.time(), 2)}", - chat_stream=chat_stream, - bot_user_info=bot_user_info, - sender_info=reply_to_message.message_info.user_info if reply_to_message else None, - message_segment=message_segment, - reply=reply_to_message, - is_head=True, - is_emoji=False, - thinking_start_time=time.time(), - ) +# # 处理消息 +# await message.process() - # 处理消息 - await message.process() +# _message_json = message.to_dict() - _message_json = message.to_dict() - - # 发送消息 - try: - await self.send_via_ws(message) - await self.storage.store_message(message, chat_stream) - logger.success(f"[私聊][{self.private_name}]PFC消息已发送: {content}") - except Exception as e: - logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}") +# # 发送消息 +# try: +# await self.send_via_ws(message) +# await self.storage.store_message(message, chat_stream) +# logger.success(f"[私聊][{self.private_name}]PFC消息已发送: {content}") +# except Exception as e: +# logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")