Files
dy/backend/utils/received_message_log.py
2026-07-23 17:56:25 +08:00

48 lines
1.6 KiB
Python

"""接收消息原始日志写入。"""
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)