feat: implement adapter/telegram/ with aiogram 3.x

Virtual DM chats, FSM (idle/waiting_response/settings states),
SQLite local DB for tg_users+chats, converter, keyboards, and
handlers for /start, /new, /chats, /settings, confirm callbacks.
This commit is contained in:
Mikhail Putilovskij 2026-03-31 21:35:16 +03:00
parent a3449fc864
commit 9c555261b3
15 changed files with 791 additions and 0 deletions

View file

@ -0,0 +1,16 @@
# adapter/telegram/keyboards/chat.py
from __future__ import annotations
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
def chats_list_keyboard(chats: list[dict], active_chat_id: str | None) -> InlineKeyboardMarkup:
buttons = []
for chat in chats:
mark = "" if chat["chat_id"] == active_chat_id else ""
buttons.append([InlineKeyboardButton(
text=f"{mark}{chat['name']}",
callback_data=f"switch:{chat['chat_id']}:{chat['name']}",
)])
buttons.append([InlineKeyboardButton(text=" Новый чат", callback_data="new_chat")])
return InlineKeyboardMarkup(inline_keyboard=buttons)