bot rafactor and bugfix
This commit is contained in:
114
app/bots/editor/router.py
Normal file
114
app/bots/editor/router.py
Normal file
@@ -0,0 +1,114 @@
|
||||
"""Маршрутизация команд бота."""
|
||||
from telegram.ext import (
|
||||
Application, CommandHandler, MessageHandler, CallbackQueryHandler,
|
||||
ConversationHandler, filters
|
||||
)
|
||||
|
||||
from .states import BotStates
|
||||
from .handlers.base import start, help_command, cancel
|
||||
from .handlers.templates import (
|
||||
start_template_creation,
|
||||
handle_template_type,
|
||||
handle_template_name,
|
||||
handle_template_text,
|
||||
handle_template_keyboard,
|
||||
list_templates
|
||||
)
|
||||
from .handlers.posts import (
|
||||
newpost,
|
||||
choose_channel,
|
||||
choose_type,
|
||||
choose_format,
|
||||
enter_text,
|
||||
choose_template_open,
|
||||
choose_template_apply,
|
||||
choose_template_preview,
|
||||
choose_template_navigate,
|
||||
choose_template_cancel,
|
||||
preview_collect_vars,
|
||||
preview_confirm,
|
||||
enter_media,
|
||||
edit_keyboard,
|
||||
confirm_send,
|
||||
enter_schedule
|
||||
)
|
||||
|
||||
def register_handlers(app: Application) -> None:
|
||||
"""Регистрация обработчиков команд."""
|
||||
# Базовые команды
|
||||
app.add_handler(CommandHandler("start", start))
|
||||
app.add_handler(CommandHandler("help", help_command))
|
||||
|
||||
# Шаблоны
|
||||
template_handler = ConversationHandler(
|
||||
entry_points=[CommandHandler("newtemplate", start_template_creation)],
|
||||
states={
|
||||
BotStates.TPL_TYPE: [
|
||||
CallbackQueryHandler(handle_template_type)
|
||||
],
|
||||
BotStates.TPL_NAME: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, handle_template_name)
|
||||
],
|
||||
BotStates.TPL_TEXT: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, handle_template_text)
|
||||
],
|
||||
BotStates.TPL_NEW_KB: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, handle_template_keyboard)
|
||||
]
|
||||
},
|
||||
fallbacks=[CommandHandler("cancel", cancel)]
|
||||
)
|
||||
app.add_handler(template_handler)
|
||||
|
||||
# Создание поста
|
||||
post_handler = ConversationHandler(
|
||||
entry_points=[CommandHandler("newpost", newpost)],
|
||||
states={
|
||||
BotStates.CHOOSE_CHANNEL: [
|
||||
CallbackQueryHandler(choose_channel, pattern=r"^channel:")
|
||||
],
|
||||
BotStates.CHOOSE_TYPE: [
|
||||
CallbackQueryHandler(choose_type, pattern=r"^type:")
|
||||
],
|
||||
BotStates.CHOOSE_FORMAT: [
|
||||
CallbackQueryHandler(choose_format, pattern=r"^fmt:")
|
||||
],
|
||||
BotStates.ENTER_TEXT: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, enter_text),
|
||||
CallbackQueryHandler(choose_template_open, pattern=r"^tpl:choose$")
|
||||
],
|
||||
BotStates.SELECT_TEMPLATE: [
|
||||
CallbackQueryHandler(choose_template_apply, pattern=r"^tpluse:"),
|
||||
CallbackQueryHandler(choose_template_preview, pattern=r"^tplprev:"),
|
||||
CallbackQueryHandler(choose_template_navigate, pattern=r"^tplpage:"),
|
||||
CallbackQueryHandler(choose_template_cancel, pattern=r"^tpl:cancel$")
|
||||
],
|
||||
BotStates.PREVIEW_VARS: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, preview_collect_vars)
|
||||
],
|
||||
BotStates.PREVIEW_CONFIRM: [
|
||||
CallbackQueryHandler(preview_confirm, pattern=r"^pv:(use|edit)$"),
|
||||
CallbackQueryHandler(choose_template_cancel, pattern=r"^tpl:cancel$")
|
||||
],
|
||||
BotStates.ENTER_MEDIA: [
|
||||
MessageHandler(
|
||||
filters.PHOTO | filters.VIDEO | filters.ANIMATION & ~filters.COMMAND,
|
||||
enter_media
|
||||
)
|
||||
],
|
||||
BotStates.EDIT_KEYBOARD: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, edit_keyboard)
|
||||
],
|
||||
BotStates.CONFIRM_SEND: [
|
||||
CallbackQueryHandler(confirm_send, pattern=r"^send:")
|
||||
],
|
||||
BotStates.ENTER_SCHEDULE: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, enter_schedule)
|
||||
]
|
||||
},
|
||||
fallbacks=[CommandHandler("cancel", cancel)]
|
||||
)
|
||||
app.add_handler(post_handler)
|
||||
|
||||
# Просмотр шаблонов
|
||||
app.add_handler(CommandHandler("templates", list_templates))
|
||||
Reference in New Issue
Block a user