MaiBot/src/plugins/chat/storage.py

37 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from typing import Optional, Union
from ...common.database import Database
from .message import MessageSending, MessageRecv
from .chat_stream import ChatStream
from loguru import logger
class MessageStorage:
def __init__(self):
self.db = Database.get_instance()
async def store_message(self, message: Union[MessageSending, MessageRecv],chat_stream:ChatStream, topic: Optional[str] = None) -> None:
"""存储消息到数据库"""
try:
# 提取群组ID信息如果存在的话
group_id = None
if chat_stream.group_info:
group_id = str(chat_stream.group_info.group_id)
message_data = {
"message_id": message.message_info.message_id,
"time": message.message_info.time,
"chat_id": chat_stream.stream_id,
"chat_info": chat_stream.to_dict(),
"user_info": message.message_info.user_info.to_dict(),
"processed_plain_text": message.processed_plain_text,
"detailed_plain_text": message.detailed_plain_text,
"topic": topic,
"group_id": group_id, # 显式添加group_id字段
}
self.db.db.messages.insert_one(message_data)
except Exception:
logger.exception("存储消息失败")
# 如果需要其他存储相关的函数,可以在这里添加