From 5def360f8d15498f601848372eaf6d0df401154e Mon Sep 17 00:00:00 2001 From: Mikhail Putilovskij Date: Thu, 2 Apr 2026 00:50:14 +0300 Subject: [PATCH] chore: init feat/telegram-forum, cherry-pick keyboards --- adapter/telegram/__init__.py | 0 adapter/telegram/handlers/__init__.py | 0 adapter/telegram/keyboards/__init__.py | 0 adapter/telegram/keyboards/confirm.py | 11 ++++++ adapter/telegram/keyboards/settings.py | 52 ++++++++++++++++++++++++++ 5 files changed, 63 insertions(+) create mode 100644 adapter/telegram/__init__.py create mode 100644 adapter/telegram/handlers/__init__.py create mode 100644 adapter/telegram/keyboards/__init__.py create mode 100644 adapter/telegram/keyboards/confirm.py create mode 100644 adapter/telegram/keyboards/settings.py diff --git a/adapter/telegram/__init__.py b/adapter/telegram/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/adapter/telegram/handlers/__init__.py b/adapter/telegram/handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/adapter/telegram/keyboards/__init__.py b/adapter/telegram/keyboards/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/adapter/telegram/keyboards/confirm.py b/adapter/telegram/keyboards/confirm.py new file mode 100644 index 0000000..348898c --- /dev/null +++ b/adapter/telegram/keyboards/confirm.py @@ -0,0 +1,11 @@ +# adapter/telegram/keyboards/confirm.py +from __future__ import annotations + +from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + + +def confirm_keyboard(action_id: str) -> InlineKeyboardMarkup: + return InlineKeyboardMarkup(inline_keyboard=[[ + InlineKeyboardButton(text="✅ Да", callback_data=f"confirm:yes:{action_id}"), + InlineKeyboardButton(text="❌ Нет", callback_data=f"confirm:no:{action_id}"), + ]]) diff --git a/adapter/telegram/keyboards/settings.py b/adapter/telegram/keyboards/settings.py new file mode 100644 index 0000000..d61b347 --- /dev/null +++ b/adapter/telegram/keyboards/settings.py @@ -0,0 +1,52 @@ +# adapter/telegram/keyboards/settings.py +from __future__ import annotations + +from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup + +from sdk.interface import UserSettings + + +def settings_main_keyboard() -> InlineKeyboardMarkup: + return InlineKeyboardMarkup(inline_keyboard=[ + [ + InlineKeyboardButton(text="🧩 Скиллы", callback_data="settings:skills"), + InlineKeyboardButton(text="🔗 Коннекторы", callback_data="settings:connectors"), + ], + [ + InlineKeyboardButton(text="🧠 Личность", callback_data="settings:soul"), + InlineKeyboardButton(text="🔒 Безопасность", callback_data="settings:safety"), + ], + [ + InlineKeyboardButton(text="💳 Подписка", callback_data="settings:plan"), + ], + ]) + + +def skills_keyboard(skills: dict[str, bool]) -> InlineKeyboardMarkup: + buttons = [] + for skill, enabled in skills.items(): + icon = "✅" if enabled else "❌" + buttons.append([InlineKeyboardButton( + text=f"{icon} {skill}", + callback_data=f"toggle_skill:{skill}", + )]) + buttons.append([InlineKeyboardButton(text="← Назад", callback_data="settings:back")]) + return InlineKeyboardMarkup(inline_keyboard=buttons) + + +def safety_keyboard(safety: dict[str, bool]) -> InlineKeyboardMarkup: + buttons = [] + for trigger, enabled in safety.items(): + icon = "✅" if enabled else "❌" + buttons.append([InlineKeyboardButton( + text=f"{icon} {trigger}", + callback_data=f"toggle_safety:{trigger}", + )]) + buttons.append([InlineKeyboardButton(text="← Назад", callback_data="settings:back")]) + return InlineKeyboardMarkup(inline_keyboard=buttons) + + +def back_keyboard() -> InlineKeyboardMarkup: + return InlineKeyboardMarkup(inline_keyboard=[ + [InlineKeyboardButton(text="← Назад", callback_data="settings:back")], + ])