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()
0 Comments