Files
postbot/app/bots/editor/states.py

89 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Состояния бота редактора."""
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}")