import random

import asyncio

from pyrogram import Client, filters

from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton

from PIL import Image, ImageDraw, ImageFont


# 🔹 Bot Configuration

API_ID = 29243906 # আপনার API ID দিন

API_HASH="1d14dd363c5cb1e92e6c882e27ebc0bb" # আপনার API Hash দিন

BOT_TOKEN = "7694934297:AAGZR--QD0psEa31KkpzLfkppZImEgLAJJQ" # BotFather থেকে পাওয়া Bot Token দিন


# 🔹 চ্যানেল লিস্ট (যেগুলোতে ইউজার যোগ দিতে হবে)

REQUIRED_CHANNELS = ["@earning_services_bot", "@developer_sadik_earn", "@yourchannel3"]


# 🔹 ক্যাপচা সংরক্ষণের জন্য Dictionary

captcha_store = {}


# 🔹 Pyrogram Client চালু করা

app = Client("captcha_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)


# 📌 /start Command Handler

@app.on_message(filters.command("start"))

async def start_command(client: Client, message: Message):

    user_id = message.from_user.id


    # ✅ ক্যাপচা তৈরি করা

    captcha_number = random.randint(10, 99)

    captcha_store[user_id] = captcha_number


    # 🔹 ক্যাপচা ইমেজ তৈরি করা

    img = Image.new("RGB", (200, 100), color=(150, 150, 255))

    draw = ImageDraw.Draw(img)

    font = ImageFont.load_default()

    draw.text((80, 40), str(captcha_number), fill=(255, 255, 255), font=font)

    img.save(f"{user_id}_captcha.jpg")


    # ✅ ক্যাপচা পাঠানো

    await message.reply_photo(

        photo=f"{user_id}_captcha.jpg",

        caption="🔷 Enter the CAPTCHA:",

    )


# 📌 ক্যাপচা উত্তর চেক করা

@app.on_message(filters.text & filters.private)

async def check_captcha(client: Client, message: Message):

    user_id = message.from_user.id

    user_answer = message.text.strip()


    if user_id in captcha_store and str(captcha_store[user_id]) == user_answer:

        del captcha_store[user_id] # ✅ ক্যাপচা মুছে ফেলা

        await message.reply("✅ You are verified!", reply_markup=InlineKeyboardMarkup([

            [InlineKeyboardButton("🔎 Check Channels", callback_data="check_channels")]

        ]))

    else:

        await message.reply("❌ Incorrect CAPTCHA! Try again.")


# 📌 চ্যানেল মেম্বারশিপ চেক করা

@app.on_callback_query(filters.regex("check_channels"))

async def check_channels(client: Client, callback_query):

    user_id = callback_query.from_user.id

    missing_channels = []


    for channel in REQUIRED_CHANNELS:

        try:

            status = await client.get_chat_member(channel, user_id)

            if status.status not in ["member", "administrator", "creator"]:

                missing_channels.append(channel)

        except:

            missing_channels.append(channel)


    if not missing_channels:

        await callback_query.message.edit("✅ You have joined all required channels! 🎉")

    else:

        join_buttons = [[InlineKeyboardButton(f"⭐ Join {ch}", url=f"https://t.me/{ch[1:]}")] for ch in missing_channels]

        join_buttons.append([InlineKeyboardButton("🔄 Check Again", callback_data="check_channels")])

        await callback_query.message.edit("⚠️ You need to join the following channels before continuing:", reply_markup=InlineKeyboardMarkup(j

oin_buttons))


# 🔥 Bot চালু করা

print("✅ Bot is running...")

app.run()