from telegram import (
    ReplyKeyboardMarkup,
    ReplyKeyboardRemove,
    KeyboardButton,
    Update,
)

from telegram.ext import (
    Application,
    CommandHandler,
    MessageHandler,
    ConversationHandler,
    ContextTypes,
    filters,
)

# =========================
# TOKEN VA ADMIN ID
# =========================

TOKEN = "YANGI_TOKENINGIZ"
ADMIN_ID = 6502958049

# =========================

ISM, TEL, BUYURTMA = range(3)


async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(
        "Assalomu alaykum 😊\n\nBuyurtma berish uchun ismingizni yozing."
    )

    return ISM


async def ism(update: Update, context: ContextTypes.DEFAULT_TYPE):
    context.user_data['ism'] = update.message.text

    keyboard = [
        [KeyboardButton("πŸ“± Telefon raqam yuborish")]
    ]

    markup = ReplyKeyboardMarkup(
        keyboard,
        resize_keyboard=True,
        one_time_keyboard=True
    )

    await update.message.reply_text(
        "Telefon raqamingizni yozing:",
        reply_markup=markup
    )

    return TEL


async def tel(update: Update, context: ContextTypes.DEFAULT_TYPE):
    context.user_data['tel'] = update.message.text

    await update.message.reply_text(
        "Buyurtmangizni yozing πŸ›’",
        reply_markup=ReplyKeyboardRemove()
    )

    return BUYURTMA


async def buyurtma(update: Update, context: ContextTypes.DEFAULT_TYPE):
    context.user_data['buyurtma'] = update.message.text

    text = f"""
πŸ›’ YANGI BUYURTMA

πŸ‘€ Ism: {context.user_data['ism']}
πŸ“ž Telefon: {context.user_data['tel']}
πŸ“¦ Buyurtma: {context.user_data['buyurtma']}
"""

    await context.bot.send_message(
        chat_id=ADMIN_ID,
        text=text
    )

    await update.message.reply_text(
        "βœ… Buyurtmangiz qabul qilindi!\n\nTez orada siz bilan bogβ€˜lanamiz."
    )

    return ConversationHandler.END


async def cancel(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(
        "❌ Bekor qilindi"
    )

    return ConversationHandler.END


def main():
    app = Application.builder().token(TOKEN).build()

    conv_handler = ConversationHandler(
        entry_points=[CommandHandler("start", start)],
        states={
            ISM: [MessageHandler(filters.TEXT & ~filters.COMMAND, ism)],
            TEL: [MessageHandler(filters.TEXT & ~filters.COMMAND, tel)],
            BUYURTMA: [MessageHandler(filters.TEXT & ~filters.COMMAND, buyurtma)],
        },
        fallbacks=[CommandHandler("cancel", cancel)],
    )

    app.add_handler(conv_handler)

    print("Bot ishga tushdi...")

    app.run_polling()


if name == 'main':
    main()