from telegram.ext import ( ApplicationBuilder, CallbackQueryHandler, CommandHandler, MessageHandler, filters, ) from src.config import BOT_TOKEN from src.database import init_db from src.handlers import ( admin_command, handle_admin_document, handle_ask_replica_number, handle_cancel_ask_number, handle_cancel_delete, handle_cancel_delete_list, handle_cancel_restart, handle_cancel_upload, handle_confirm_delete, handle_confirm_restart, handle_confirm_upload, handle_delete_scenario_list, handle_exit_admin, handle_rerecord_last, handle_rerecord_previous, handle_restart_track, handle_save_track, handle_select_gender, handle_select_scenario_delete, handle_text_message, handle_voice_message, start_command, ) from src.logger import logger def main() -> None: """Точка входа приложения.""" logger.info("Запуск бота...") init_db() app = ApplicationBuilder().token(BOT_TOKEN).build() # Команды app.add_handler(CommandHandler("start", start_command)) app.add_handler(CommandHandler("admin", admin_command)) # Callback query handlers app.add_handler( CallbackQueryHandler(handle_select_gender, pattern="^select_gender:") ) app.add_handler( CallbackQueryHandler(handle_rerecord_previous, pattern="^rerecord_previous$") ) app.add_handler( CallbackQueryHandler(handle_restart_track, pattern="^restart_track$") ) app.add_handler( CallbackQueryHandler(handle_confirm_restart, pattern="^confirm_restart$") ) app.add_handler( CallbackQueryHandler(handle_cancel_restart, pattern="^cancel_restart$") ) app.add_handler(CallbackQueryHandler(handle_save_track, pattern="^save_track$")) app.add_handler( CallbackQueryHandler(handle_rerecord_last, pattern="^rerecord_last$") ) app.add_handler( CallbackQueryHandler(handle_ask_replica_number, pattern="^ask_replica_number$") ) app.add_handler( CallbackQueryHandler(handle_cancel_ask_number, pattern="^cancel_ask_number$") ) app.add_handler(CallbackQueryHandler(handle_exit_admin, pattern="^exit_admin$")) app.add_handler( CallbackQueryHandler(handle_confirm_upload, pattern="^confirm_upload$") ) app.add_handler( CallbackQueryHandler(handle_cancel_upload, pattern="^cancel_upload$") ) # Delete scenario handlers app.add_handler( CallbackQueryHandler( handle_delete_scenario_list, pattern="^delete_scenario_list$" ) ) app.add_handler( CallbackQueryHandler(handle_select_scenario_delete, pattern="^delete_scenario:") ) app.add_handler( CallbackQueryHandler(handle_confirm_delete, pattern="^confirm_delete$") ) app.add_handler( CallbackQueryHandler(handle_cancel_delete, pattern="^cancel_delete$") ) app.add_handler( CallbackQueryHandler(handle_cancel_delete_list, pattern="^cancel_delete_list$") ) # Message handlers app.add_handler(MessageHandler(filters.VOICE, handle_voice_message)) app.add_handler(MessageHandler(filters.Document.ALL, handle_admin_document)) app.add_handler( MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text_message) ) logger.info("Бот запущен") app.run_polling() if __name__ == "__main__": main()