89 lines
4.1 KiB
Python
89 lines
4.1 KiB
Python
"""Состояния бота редактора."""
|
||
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 = 39 # Выбор шаблона
|
||
PREVIEW_VARS = 40 # Ввод значений для переменных
|
||
PREVIEW_CONFIRM = 41 # Подтверждение предпросмотра
|
||
|
||
# Состояния работы с каналами
|
||
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}")
|