"""Состояния бота редактора.""" from enum import IntEnum, auto from typing import Dict class BotStates(IntEnum): """Состояния для ConversationHandler.""" # Общие состояния CONVERSATION_END = -1 START = 1 MAIN_MENU = 2 # Состояния создания шаблона TPL_TYPE = 10 TPL_NAME = 11 TPL_TEXT = 12 TPL_NEW_KB = 13 TPL_SELECT = 14 TPL_NEW_NAME = 15 TPL_NEW_TYPE = 16 TPL_NEW_FORMAT = 17 TPL_NEW_CONTENT = 18 TEMPLATE_PREVIEW = 19 TEMPLATE_VARS = 20 # Состояния работы с шаблонами и создания поста CREATE_POST = 30 CHOOSE_CHANNEL = 31 # Выбор канала CHOOSE_TYPE = 32 # Выбор типа поста (текст/фото/видео/gif) CHOOSE_FORMAT = 33 # Выбор формата текста (HTML/Markdown) ENTER_TEXT = 34 # Ввод текста поста ENTER_MEDIA = 35 # Загрузка медиафайла EDIT_KEYBOARD = 36 # Редактирование клавиатуры CONFIRM_SEND = 37 # Подтверждение отправки ENTER_SCHEDULE = 38 # Ввод времени для отложенной публикации SELECT_TEMPLATE = 25 # Выбор шаблона PREVIEW_VARS = 40 # Ввод значений для переменных PREVIEW_CONFIRM = 26 # Подтверждение предпросмотра # Состояния работы с каналами CHANNEL_NAME = 50 CHANNEL_DESC = 51 CHANNEL_INVITE = 52 # Состояния управления ботами и каналами BOT_TOKEN = 60 # Ввод токена бота CHANNEL_ID = 61 # Ввод идентификатора канала CHANNEL_TITLE = 62 # Ввод имени канала CHANNEL_SELECT_BOT = 63 # Выбор бота для канала @classmethod def get_description(cls, state: int) -> str: """Возвращает описание состояния.""" descriptions: Dict[int, str] = { # Общие состояния cls.CONVERSATION_END: "Завершение диалога", # Шаблоны cls.TPL_TYPE: "Выбор типа шаблона", cls.TPL_NAME: "Ввод имени шаблона", cls.TPL_TEXT: "Ввод текста шаблона", cls.TPL_NEW_KB: "Ввод клавиатуры шаблона", cls.TPL_SELECT: "Выбор шаблона", cls.TPL_NEW_CONTENT: "Ввод содержимого шаблона", # Посты cls.CHOOSE_CHANNEL: "Выбор канала", cls.CHOOSE_TYPE: "Выбор типа поста", cls.CHOOSE_FORMAT: "Выбор формата", cls.ENTER_TEXT: "Ввод текста", cls.ENTER_MEDIA: "Загрузка медиа", cls.EDIT_KEYBOARD: "Редактирование клавиатуры", cls.CONFIRM_SEND: "Подтверждение отправки", cls.ENTER_SCHEDULE: "Планирование публикации", cls.SELECT_TEMPLATE: "Выбор шаблона", cls.PREVIEW_VARS: "Ввод значений переменных", cls.PREVIEW_CONFIRM: "Подтверждение предпросмотра", # Каналы и боты cls.CHANNEL_NAME: "Ввод имени канала", cls.CHANNEL_DESC: "Ввод описания канала", cls.CHANNEL_INVITE: "Ввод инвайт-ссылки", cls.BOT_TOKEN: "Ввод токена бота", cls.CHANNEL_ID: "Ввод ID канала", cls.CHANNEL_TITLE: "Ввод названия канала", cls.CHANNEL_SELECT_BOT: "Выбор бота для канала", } return descriptions.get(state, f"Неизвестное состояние {state}")