mirror of https://github.com/Mai-with-u/MaiBot.git
37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
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("存储消息失败")
|
||
|
||
# 如果需要其他存储相关的函数,可以在这里添加
|