"""Telegram service utilities — chat persistence helpers.""" from sqlmodel import select from sqlmodel.ext.asyncio.session import AsyncSession from ..database.models import TelegramChat async def save_chat_from_webhook( session: AsyncSession, bot_id: int, chat_data: dict, language_code: str = "", ) -> None: """Save or update a chat entry from an incoming webhook message. Called by the webhook handler to auto-persist chats. """ chat_id = str(chat_data.get("id", "")) if not chat_id: return result = await session.exec( select(TelegramChat).where( TelegramChat.bot_id == bot_id, TelegramChat.chat_id == chat_id, ) ) existing = result.first() title = chat_data.get("title") or ( chat_data.get("first_name", "") + (" " + chat_data.get("last_name", "")).strip() ) if existing: existing.title = title existing.username = chat_data.get("username", existing.username) if language_code: existing.language_code = language_code session.add(existing) else: session.add(TelegramChat( bot_id=bot_id, chat_id=chat_id, title=title, chat_type=chat_data.get("type", "private"), username=chat_data.get("username", ""), language_code=language_code, ))