"""Маршрутизация команд бота.""" 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))