from telegram import InlineKeyboardMarkup, InlineKeyboardButton from enum import Enum class CallbackType(str, Enum): """Типы callback'ов для кнопок""" MANAGE_MESSAGES = "manage_messages" MANAGE_GROUPS = "manage_groups" CREATE_MESSAGE = "create_message" CREATE_GROUP = "create_group" VIEW_MESSAGE = "view_message" VIEW_GROUP = "view_group" DELETE_MESSAGE = "delete_message" DELETE_GROUP = "delete_group" ADD_TO_GROUP = "add_to_group" REMOVE_FROM_GROUP = "remove_from_group" SEND_NOW = "send_now" LIST_MESSAGES = "list_messages" LIST_GROUPS = "list_groups" BACK = "back" MAIN_MENU = "main_menu" def get_main_keyboard() -> InlineKeyboardMarkup: """Главное меню""" keyboard = [ [ InlineKeyboardButton("📨 Сообщения", callback_data=CallbackType.MANAGE_MESSAGES), InlineKeyboardButton("👥 Группы", callback_data=CallbackType.MANAGE_GROUPS), ] ] return InlineKeyboardMarkup(keyboard) def get_messages_keyboard() -> InlineKeyboardMarkup: """Меню управления сообщениями""" keyboard = [ [InlineKeyboardButton("➕ Новое сообщение", callback_data=CallbackType.CREATE_MESSAGE)], [InlineKeyboardButton("📜 Список сообщений", callback_data=CallbackType.LIST_MESSAGES)], [InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU)], ] return InlineKeyboardMarkup(keyboard) def get_groups_keyboard() -> InlineKeyboardMarkup: """Меню управления группами""" keyboard = [ [InlineKeyboardButton("➕ Добавить группу", callback_data=CallbackType.CREATE_GROUP)], [InlineKeyboardButton("📜 Список групп", callback_data=CallbackType.LIST_GROUPS)], [InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU)], ] return InlineKeyboardMarkup(keyboard) def get_back_keyboard() -> InlineKeyboardMarkup: """Кнопка назад""" keyboard = [[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU)]] return InlineKeyboardMarkup(keyboard) def get_message_actions_keyboard(message_id: int) -> InlineKeyboardMarkup: """Действия с сообщением""" keyboard = [ [InlineKeyboardButton("📤 Отправить", callback_data=f"send_msg_{message_id}")], [InlineKeyboardButton("🗑️ Удалить", callback_data=f"delete_msg_{message_id}")], [InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.LIST_MESSAGES)], ] return InlineKeyboardMarkup(keyboard) def get_group_actions_keyboard(group_id: int) -> InlineKeyboardMarkup: """Действия с группой""" keyboard = [ [InlineKeyboardButton("📝 Сообщения", callback_data=f"group_messages_{group_id}")], [InlineKeyboardButton("🗑️ Удалить", callback_data=f"delete_group_{group_id}")], [InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.LIST_GROUPS)], ] return InlineKeyboardMarkup(keyboard) def get_yes_no_keyboard(action: str) -> InlineKeyboardMarkup: """Подтверждение да/нет""" keyboard = [ [ InlineKeyboardButton("✅ Да", callback_data=f"confirm_{action}"), InlineKeyboardButton("❌ Нет", callback_data=CallbackType.MAIN_MENU), ] ] return InlineKeyboardMarkup(keyboard)