启用message_sender.py
This commit is contained in:
@@ -9,7 +9,8 @@ from src.plugins.utils.chat_message_builder import build_readable_messages, get_
|
|||||||
from typing import Dict, Any, Optional
|
from typing import Dict, Any, Optional
|
||||||
from ..chat.message import Message
|
from ..chat.message import Message
|
||||||
from .pfc_types import ConversationState
|
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 src.common.logger_manager import get_logger
|
||||||
from .action_planner import ActionPlanner
|
from .action_planner import ActionPlanner
|
||||||
from .observation_info import ObservationInfo
|
from .observation_info import ObservationInfo
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
|
import time
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger
|
||||||
from ..chat.chat_stream import ChatStream
|
from ..chat.chat_stream import ChatStream
|
||||||
from ..chat.message import Message
|
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 import MessageSending, MessageSet
|
||||||
from src.plugins.chat.message_sender import message_manager
|
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")
|
logger = get_module_logger("message_sender")
|
||||||
|
|
||||||
@@ -12,14 +16,14 @@ logger = get_module_logger("message_sender")
|
|||||||
class DirectMessageSender:
|
class DirectMessageSender:
|
||||||
"""直接消息发送器"""
|
"""直接消息发送器"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, private_name: str):
|
||||||
pass
|
self.private_name = private_name
|
||||||
|
self.storage = MessageStorage()
|
||||||
|
|
||||||
async def send_message(
|
async def send_message(
|
||||||
self,
|
self,
|
||||||
chat_stream: ChatStream,
|
chat_stream: ChatStream,
|
||||||
content: str,
|
content: str,
|
||||||
private_name: str,
|
|
||||||
reply_to_message: Optional[Message] = None,
|
reply_to_message: Optional[Message] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""发送消息到聊天流
|
"""发送消息到聊天流
|
||||||
@@ -31,21 +35,39 @@ class DirectMessageSender:
|
|||||||
"""
|
"""
|
||||||
try:
|
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,
|
||||||
|
)
|
||||||
|
|
||||||
# 检查是否需要引用回复
|
message_id=f"dm{round(time.time(), 2)}"
|
||||||
if reply_to_message:
|
|
||||||
reply_id = reply_to_message.message_id
|
message = MessageSending(
|
||||||
message_sending = MessageSending(segments=segments, reply_to_id=reply_id)
|
message_id=message_id,
|
||||||
else:
|
chat_stream=chat_stream,
|
||||||
message_sending = MessageSending(segments=segments)
|
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 = MessageSet(chat_stream, message_id)
|
||||||
message_set.add_message(message_sending)
|
message_set.add_message(message)
|
||||||
message_manager.add_message(message_set)
|
await message_manager.add_message(message_set)
|
||||||
logger.info(f"[私聊][{private_name}]PFC消息已发送: {content}")
|
await self.storage.store_message(message, chat_stream)
|
||||||
|
logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"[私聊][{private_name}]PFC消息发送失败: {str(e)}")
|
logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")
|
||||||
raise
|
raise
|
||||||
|
|||||||
@@ -318,63 +318,63 @@ class GoalAnalyzer:
|
|||||||
logger.error(f"[私聊][{self.private_name}]分析对话状态时出错: {str(e)}")
|
logger.error(f"[私聊][{self.private_name}]分析对话状态时出错: {str(e)}")
|
||||||
return False, False, f"分析出错: {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):
|
# async def send_via_ws(self, message: MessageSending) -> None:
|
||||||
self.logger = get_module_logger("direct_sender")
|
# try:
|
||||||
self.storage = MessageStorage()
|
# await global_api.send_message(message)
|
||||||
self.private_name = private_name
|
# except Exception as e:
|
||||||
|
# raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e
|
||||||
|
|
||||||
async def send_via_ws(self, message: MessageSending) -> None:
|
# async def send_message(
|
||||||
try:
|
# self,
|
||||||
await global_api.send_message(message)
|
# chat_stream: ChatStream,
|
||||||
except Exception as e:
|
# content: str,
|
||||||
raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e
|
# reply_to_message: Optional[Message] = None,
|
||||||
|
# ) -> None:
|
||||||
|
# """直接发送消息到平台
|
||||||
|
|
||||||
async def send_message(
|
# Args:
|
||||||
self,
|
# chat_stream: 聊天流
|
||||||
chat_stream: ChatStream,
|
# content: 消息内容
|
||||||
content: str,
|
# reply_to_message: 要回复的消息
|
||||||
reply_to_message: Optional[Message] = None,
|
# """
|
||||||
) -> None:
|
# # 构建消息对象
|
||||||
"""直接发送消息到平台
|
# 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:
|
# message = MessageSending(
|
||||||
chat_stream: 聊天流
|
# message_id=f"dm{round(time.time(), 2)}",
|
||||||
content: 消息内容
|
# chat_stream=chat_stream,
|
||||||
reply_to_message: 要回复的消息
|
# 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,
|
||||||
message_segment = Seg(type="text", data=content)
|
# reply=reply_to_message,
|
||||||
bot_user_info = UserInfo(
|
# is_head=True,
|
||||||
user_id=global_config.BOT_QQ,
|
# is_emoji=False,
|
||||||
user_nickname=global_config.BOT_NICKNAME,
|
# thinking_start_time=time.time(),
|
||||||
platform=chat_stream.platform,
|
# )
|
||||||
)
|
|
||||||
|
|
||||||
message = MessageSending(
|
# # 处理消息
|
||||||
message_id=f"dm{round(time.time(), 2)}",
|
# await message.process()
|
||||||
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_json = message.to_dict()
|
||||||
await message.process()
|
|
||||||
|
|
||||||
_message_json = message.to_dict()
|
# # 发送消息
|
||||||
|
# try:
|
||||||
# 发送消息
|
# await self.send_via_ws(message)
|
||||||
try:
|
# await self.storage.store_message(message, chat_stream)
|
||||||
await self.send_via_ws(message)
|
# logger.success(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
|
||||||
await self.storage.store_message(message, chat_stream)
|
# except Exception as e:
|
||||||
logger.success(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
|
# logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user