import requests
import time
import re
import json
from datetime import datetime

# আপনার টেলিগ্রাম বটের টোকেন
BOT_TOKEN = "8913468408:AAFaip1VGBWd8v_mpH30Piluw4ss-JhK_ZA"
# আপনার গ্রুপের চ্যাট আইডি
CHAT_ID = "-1003336894492"
# চ্যানেল এবং বটের লিংক
CHANNEL_URL = "https://t.me/Sadekul_BD"
BOT_URL = "https://t.me/Dts_Otp_Bot"

API_URL = "http://51.77.216.195/crapi/lamix/viewstats"
API_PARAMS = {
    "token": "X5N4WohnVEFUbnOIVItviHORlWV7mHZSSoxVW2qLmWY=", # আপনার API টোকেন
    "records": "10"
}

def extract_otp(message):
    """মেসেজ থেকে ৪-৮ ডিজিটের ওটিপি খুঁজে বের করার ফাংশন"""
    match = re.search(r'\b\d{4,8}\b', message)
    return match.group(0) if match else "N/A"

def mask_number(phone):
    """নম্বরের মাঝখানে  XXXX লিখে মাস্ক করার ফাংশন"""
    if len(phone) < 8:
        return phone
    # মাঝখানের ৪টি ডিজিটকে  XXXX দিয়ে রিপ্লেস করা
    start = phone[:4]
    end = phone[-4:]
    return f"{start}RAKIB{end}"

def send_telegram_card(cli, num, dt, otp):
    """সুন্দর কার্ড ফরম্যাটে মেসেজ এবং বাটন পাঠানোর ফাংশন"""
    masked_num = mask_number(num)
    
    # মেসেজ বডি
    text = (
        f"<b>✨ NEW OTP RECEIVED ✨</b>\n"
        f"━━━━━━━━━━━━━━━━━━\n"
        f"<b>📱 SERVICE:</b> <code>{cli.upper()}</code>\n"
        f"<b>📞 NUMBER:</b> <code>{masked_num}</code>\n"
        f"<b>⏰ TIME:</b> <code>{dt}</code>\n"
        f"━━━━━━━━━━━━━━━━━━\n"
        f"<b>👨‍💻 Bot Dev:</b> <code>Sadekul Islam</code>"
    )

    # বাটন তৈরি
    reply_markup = {
        "inline_keyboard": [
            [
                # ওটিপি কপি করার বাটন (সরাসরি ক্লিক করলে ওটিপি কপি হবে)
                {"text": f"📋 {otp}", "copy_text": {"text": otp}}
            ],
            [
                {"text": "📢 Channel", "url": CHANNEL_URL},
                {"text": "🤖 Bot", "url": BOT_URL}
            ]
        ]
    }

    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    payload = {
        "chat_id": CHAT_ID,
        "text": text,
        "parse_mode": "HTML",
        "reply_markup": json.dumps(reply_markup)
    }
    
    try:
        requests.post(url, json=payload)
    except Exception as e:
        print(f"Error sending message: {e}")

def fetch_api_data():
    """API থেকে ডাটা সংগ্রহের ফাংশন"""
    try:
        now = datetime.now()
        API_PARAMS["dt1"] = now.strftime("%Y-%m-%d 00:00:00")
        API_PARAMS["dt2"] = now.strftime("%Y-%m-%d 23:59:59")
        
        response = requests.get(API_URL, params=API_PARAMS, timeout=10)
        return response.json() if response.status_code == 200 else None
    except Exception as e:
        print(f"Connection Error: {e}")
        return None

def main():
    print("🚀 Lamix OTP Bot is Running...")
    last_processed_key = None
    first_run = True

    while True:
        api_response = fetch_api_data()
        
        if api_response and api_response.get("status") == "success":
            data_list = api_response.get("data", [])
            
            if data_list:
                latest = data_list[0]
                current_key = f"{latest.get('dt')}_{latest.get('message')}"

                if first_run or current_key != last_processed_key:
                    otp_code = extract_otp(latest.get('message', ''))
                    
                    # প্রথমবার রান করলে লাস্ট মেসেজটি পাঠাবে
                    send_telegram_card(
                        cli=latest.get('cli', 'Unknown'),
                        num=latest.get('num', 'N/A'),
                        dt=latest.get('dt', 'N/A'),
                        otp=otp_code
                    )
                    
                    last_processed_key = current_key
                    first_run = False
                    print(f"✅ Alert sent for {latest.get('cli')} at {latest.get('dt')}")

        # ৫ সেকেন্ড পর পর চেক করবে
        time.sleep(5)

if __name__ == "__main__":
    main()