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_accept_intro, handle_admin_document, handle_ask_replica_number, handle_cancel_ask_number, handle_cancel_restart, handle_cancel_upload, handle_confirm_restart, handle_confirm_upload, handle_exit_admin, handle_replica_number_input, handle_rerecord_last, handle_rerecord_previous, handle_restart_track, handle_save_track, handle_unexpected_text, 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_accept_intro, pattern="^accept_intro$")) 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$") ) # 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_replica_number_input)) app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_unexpected_text)) logger.info("Бот запущен") app.run_polling() if __name__ == "__main__": main()