Files
relay-bot/app/memory/service.py
T
2026-07-24 22:36:04 +03:00

50 lines
1.5 KiB
Python

from datetime import UTC, datetime
from app.database.models import Message, TelegramUser
from app.database.repositories import MemoryRepository
class MemoryService:
def __init__(self, repository: MemoryRepository):
self.repository = repository
async def record(
self,
*,
chat_id: int,
message_id: int,
thread_id: int | None,
user_id: int | None,
user_name: str,
text: str,
sent_at: datetime,
reply_to: int | None,
message_type: str,
attachment_data: dict | None = None,
edited: bool = False,
) -> Message:
if user_id is not None:
user = await self.repository.session.get(TelegramUser, user_id)
if user is None:
self.repository.session.add(
TelegramUser(telegram_id=user_id, display_name=user_name)
)
else:
user.display_name = user_name
return await self.repository.save_message(
Message(
chat_id=chat_id,
telegram_message_id=message_id,
thread_id=thread_id,
user_id=user_id,
user_name=user_name,
text=text,
sent_at=sent_at.astimezone(UTC),
reply_to_message_id=reply_to,
message_type=message_type,
attachment_data=attachment_data,
edited=edited,
edited_at=datetime.now(UTC) if edited else None,
)
)