KeyboardRegistry
KeyboardRegistry — реестр функций-фабрик, каждая из которых создаёт InlineKeyboard по ключу и набору данных.
from edgebot import KeyboardRegistry
registry = KeyboardRegistry().register(key)
Заголовок раздела «.register(key)»Декоратор для регистрации фабрики клавиатуры.
@registry.register("main_menu")def kb_main_menu() -> InlineKeyboard: kb = InlineKeyboard() kb.button("📋 Профиль", callback_data="profile") kb.button("⚙️ Настройки", callback_data="settings") return kb| Параметр | Описание |
|---|---|
key | Строковый ключ для получения клавиатуры |
Контракт фабрики:
- Обязана возвращать
InlineKeyboard(неdict) - Объявляет только нужные параметры
- Лишние kwargs отбрасываются автоматически
.get(key, **kwargs)
Заголовок раздела «.get(key, **kwargs)»Вызывает фабрику и возвращает нефинализированный InlineKeyboard.
registry.get(key: str, **kwargs) -> InlineKeyboard| Raises | Условие |
|---|---|
KeyboardNotFound | Ключ не зарегистрирован |
TypeError | Фабрика вернула не InlineKeyboard |
.has(key)
Заголовок раздела «.has(key)»registry.has(key: str) -> boolДинамическая клавиатура
Заголовок раздела «Динамическая клавиатура»Фабрика может принимать параметры для генерации кнопок:
@registry.register("profile_main")def kb_profile(is_active: bool) -> InlineKeyboard: kb = InlineKeyboard() toggle_text = "❌ Выключить" if is_active else "✅ Включить" kb.button(toggle_text, callback_data="toggle") kb.row() kb.button("↺ Сбросить", callback_data="reset") kb.button("🗑 Удалить", callback_data="delete") return kbОрганизация в проекте
Заголовок раздела «Организация в проекте»Рекомендуемая структура:
bot/ keyboards/ __init__.py # создаёт registry, импортирует модули profile.py # @registry.register("profile_main") settings.py # @registry.register("settings_main")from edgebot import KeyboardRegistry
registry = KeyboardRegistry()
from . import profile # noqa: E402,F401from . import settings # noqa: E402,F401
__all__ = ["registry"]