"""接收消息原始日志写入。""" from __future__ import annotations import logging from datetime import datetime from typing import Optional from models.database import AsyncSessionLocal from models.models import ReceivedMessageLog logger = logging.getLogger("received_message_log") async def record_received_message( *, account_id: int, raw_content: str, sender_name: Optional[str] = None, sender_id: Optional[str] = None, sender_avatar: Optional[str] = None, conversation_id: Optional[str] = None, message_type: Optional[int] = None, server_message_id: Optional[str] = None, ) -> None: # 原样落库:不做 strip / parse / serialize,空字符串也记录 store_content = raw_content if raw_content is not None else "" async with AsyncSessionLocal() as db: try: db.add( ReceivedMessageLog( account_id=account_id, conversation_id=(conversation_id or "").strip() or None, sender_id=(sender_id or "").strip() or None, sender_name=(sender_name or "").strip() or None, sender_avatar=(sender_avatar or "").strip() or None, message_type=message_type, server_message_id=(server_message_id or "").strip() or None, raw_content=store_content, created_at=datetime.utcnow(), ) ) await db.commit() except Exception as exc: await db.rollback() logger.error("Failed to record received message log: %s", exc)