"""Клавиатуры интерфейса бота (VK).""" from vk_api.keyboard import VkKeyboard, VkKeyboardColor import config # ========================================== # КЛАВИАТУРЫ ДЛЯ ИНТЕРФЕЙСА (UX/UI ВКонтакте) # ========================================== def get_main_keyboard(is_admin: bool = False) -> str: """Главное меню Кибершколы БАЗА. Для админа добавляется кнопка «Админка ⚙️».""" keyboard = VkKeyboard(one_time=False) keyboard.add_button("Подобрать тренировку 🎯", color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button("Летний интенсив CS2 🔥", color=VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("Посмотреть цены 💰", color=VkKeyboardColor.SECONDARY) keyboard.add_button("Задать вопрос 💬", color=VkKeyboardColor.SECONDARY) if is_admin: keyboard.add_line() keyboard.add_button("Админка ⚙️", color=VkKeyboardColor.POSITIVE) return keyboard.get_keyboard() # ========================================== # КЛАВИАТУРЫ ВОРОНКИ «ПОДОБРАТЬ ТРЕНИРОВКУ» (БАЗА) # ========================================== def _kb(rows, back=False, ask_manager=False, back_menu=True): """Хелпер: строит нижнюю клавиатуру из строк кнопок + служебные кнопки снизу. back — кнопка «Назад ⬅️» (к предыдущему вопросу воронки); ask_manager — кнопка «Задать вопрос менеджеру 💬»; back_menu — кнопка «В главное меню ↩️». """ keyboard = VkKeyboard(one_time=False) for i, row in enumerate(rows): if i: keyboard.add_line() for label in row: keyboard.add_button(label, color=VkKeyboardColor.SECONDARY) if ask_manager: keyboard.add_line() keyboard.add_button("Задать вопрос менеджеру 💬", color=VkKeyboardColor.SECONDARY) if back or back_menu: keyboard.add_line() if back: keyboard.add_button("Назад ⬅️", color=VkKeyboardColor.SECONDARY) if back_menu: keyboard.add_button("В главное меню ↩️", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() def get_baza_forwho_keyboard() -> str: return _kb([["Для себя", "Для подростка"]]) def get_baza_age_keyboard() -> str: return _kb([["12–13 лет", "14–15 лет"], ["16 лет и старше", "Младше 12 лет"]], back=True) def get_baza_younger12_keyboard() -> str: keyboard = VkKeyboard(one_time=False) keyboard.add_button("Обсудить с менеджером 💬", color=VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("Назад ⬅️", color=VkKeyboardColor.SECONDARY) keyboard.add_button("В главное меню ↩️", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() def get_baza_game_keyboard() -> str: return _kb([["CS2", "Dota 2"], ["World of Tanks", "Другая игра"]], back=True) def get_baza_level_keyboard() -> str: return _kb([["Только начинает"], ["Играет для себя"], ["Есть рейтинг или ранг"], ["Играет в команде или турнирах"]], back=True) def get_baza_format_keyboard() -> str: return _kb([["Групповые тренировки"], ["Индивидуальные тренировки"], ["Пока не знаю, нужен совет"]], back=True) def get_baza_group_keyboard() -> str: return _kb([["Записаться на пробное"], ["Купить 4 тренировки", "Купить 8 тренировок"]], back=True, ask_manager=True) def get_baza_individual_keyboard() -> str: return _kb([["Записаться на пробное"], ["Купить 1 тренировку"], ["Купить 4 тренировки", "Купить 8 тренировок"]], back=True, ask_manager=True) def get_baza_help_keyboard() -> str: return _kb([["Записаться на пробное"], ["Подобрать заново 🎯"]], ask_manager=True) def get_baza_intensive_keyboard() -> str: return _kb([["Хочу участвовать 🔥"]], ask_manager=True) def get_baza_prices_keyboard() -> str: keyboard = VkKeyboard(one_time=False) keyboard.add_button("Подобрать тренировку 🎯", color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button("Записаться на пробное", color=VkKeyboardColor.SECONDARY) keyboard.add_button("Выбрать абонемент", color=VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("Задать вопрос 💬", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() def get_admin_keyboard(is_super: bool = False) -> str: """Клавиатура админ-панели с разделами. Супер-админу — раздел «Администраторы».""" keyboard = VkKeyboard(one_time=False) keyboard.add_button("Статистика 📊", color=VkKeyboardColor.SECONDARY) keyboard.add_button("Быстрые ответы 💬", color=VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("Рассылка 📣", color=VkKeyboardColor.SECONDARY) keyboard.add_line() if is_super: keyboard.add_button("Администраторы 👑", color=VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("В главное меню ↩️", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() def get_faq_admin_keyboard() -> str: """Клавиатура раздела управления быстрыми ответами.""" keyboard = VkKeyboard(one_time=False) keyboard.add_button("➕ Добавить ответ", color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button("✏️ Изменить ответ", color=VkKeyboardColor.SECONDARY) keyboard.add_button("🗑 Удалить ответ", color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button("В админку ↩️", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() def get_pick_keyboard(items: list) -> str: """Клавиатура выбора из списка пар (id, label). Кнопка отправляет '.