Create Relay Bot MVP
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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,
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user