更新
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""接收消息原始日志写入。"""
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user