import subprocess
import sys

# هذه الأسطر ستثبت المكتبات تلقائياً عند تشغيل البوت لأول مرة
try:
    import telegram
    import mysql.connector
except ImportError:
    subprocess.check_call([sys.executable, "-m", "pip", "install", "python-telegram-bot", "mysql-connector-python"])
    import telegram
    import mysql.connector

# باقي الكود الخاص بك يكمل هنا...
import mysql.connector
from telegram import Update, ReplyKeyboardMarkup, ReplyKeyboardRemove
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
from registration_module import registration_conv

# دالة لجلب الحالة - استبدل المعلومات ببيانات الهوست
async def get_course_stage():
    try:
        db = mysql.connector.connect(
            host="localhost", 
            user="sooraapps_Mustafa", 
            password="Fihpoz-kahwep-8dubde", 
            database="sooraapps_Markaz_Class_01",
            charset='utf8mb4'
        )
        cursor = db.cursor()
        cursor.execute("SELECT course_stage FROM settings WHERE id = 1")
        result = cursor.fetchone()
        db.close()
        return result[0] if result else "تسجيل"
    except: return "تسجيل"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    stage = await get_course_stage()
    user_id = update.effective_user.id

    if stage == "تسجيل":
        try:
            db = mysql.connector.connect(
                host="localhost", 
                user="ضع_هنا_اسم_مستخدم_الهوست", 
                password="ضع_هنا_كلمة_سر_الهوست", 
                database="sooraapps_Markaz_Class_01",
                charset='utf8mb4'
            )
            cursor = db.cursor()
            cursor.execute("SELECT first_name, father_name FROM participants WHERE telegram_id = %s", (user_id,))
            results = cursor.fetchall()
            db.close()

            if results:
                names_list = "\n".join([f"• {r[0]} {r[1]}" for r in results])
                message_text = (f"مرحباً بك مجدداً! لقد قمت بتسجيل الأسماء التالية سابقاً:\n\n"
                                f"{names_list}\n\nهل تود تسجيل مشارك آخر؟")
                reply_markup = ReplyKeyboardMarkup([['نعم، تسجيل مشارك آخر', 'إلغاء']], resize_keyboard=True, one_time_keyboard=True)
                await update.message.reply_text(message_text, reply_markup=reply_markup)
            else:
                reply_markup = ReplyKeyboardMarkup([['📝 بدء التسجيل']], resize_keyboard=True, one_time_keyboard=True)
                await update.message.reply_text("مرحباً بك في مركز التبليغ القرآني الدولي. بدأت الآن مرحلة التسجيل في الدورة 🌿", reply_markup=reply_markup)
        except Exception as e:
            await update.message.reply_text(f"⚠️ خطأ: {e}")
    
    elif stage == "وسط_الدورة":
        await update.message.reply_text("أهلاً بك.. واجهة الدروس والمراجعة ستفعل قريباً.")

    elif stage == "اختبار_نهائي":
        await update.message.reply_text("أهلاً بك! فُتح الآن باب الحجز للاختبار النهائي. يرجى الانتظار لتفعيل الاستمارة.")
    
    else:
        await update.message.reply_text("عذراً، التسجيل مغلق حالياً.")

async def cancel_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("تم إلغاء العملية.", reply_markup=ReplyKeyboardRemove())

def main():
    # --- ضع التوكن الجديد هنا ---
    token = "8533269079:AAGmChHR3g38-xkWBHYfy3gpd2zjo92Zlaw"
    app = Application.builder().token(token).build()
    
    app.add_handler(registration_conv)
    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.Regex('^إلغاء$'), cancel_handler))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, start))

    print("--- البوت يعمل الآن على الهوست بنجاح ---")
    app.run_polling(drop_pending_updates=True)

if __name__ == '__main__':
    main()