import os
from telegram.ext import Application, CommandHandler, CallbackQueryHandler, ConversationHandler, MessageHandler, filters
from dotenv import load_dotenv
from handlers import start, handle_callback, error_handler
from states import States

def main():
    load_dotenv()
    token = os.getenv("TELEGRAM_TOKEN")
    if not token:
        raise ValueError("TELEGRAM_TOKEN не найден в файле .env")

    
    application = Application.builder().token(token).concurrent_updates(1).build()

    conv_handler = ConversationHandler(
        entry_points=[
            CommandHandler("start", start),
            CommandHandler("restart", start),
            CommandHandler("clear", start),
        ],
        states={
            States.MAIN_MENU: [CallbackQueryHandler(handle_callback)],
            States.COUNTRY: [CallbackQueryHandler(handle_callback)],
            States.FEDERAL_DISTRICT: [CallbackQueryHandler(handle_callback)],
            States.CITY: [CallbackQueryHandler(handle_callback)],
        },
        fallbacks=[
            CommandHandler("start", start),
            CommandHandler("restart", start),
            CommandHandler("clear", start),
            MessageHandler(filters.TEXT & ~filters.COMMAND, start),
            MessageHandler(filters.COMMAND, start),
        ],
    )

    application.add_handler(conv_handler)
    application.add_error_handler(error_handler)

    application.run_polling()

if __name__ == "__main__":
    main()