90 lines
3.5 KiB
Python
90 lines
3.5 KiB
Python
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)
|