import os import requests from flask import Flask, jsonify, make_response, request from supabase import create_client import threading # ডিটেইলস BOT_TOKEN = "8628213901:AAFvfHBpZ6tok40ZQuhIDLAVIMrHeiheMNY" SUPABASE_URL = "https://yctirvnryrzygoxbpvoy.supabase.co" SUPABASE_KEY = "sb_publishable_aBcD-atruskWwoCiLr0lWw_inT8GLoN" WEB_APP_URL = "https://rony90790.github.io/Forward-bot/index.html" HF_SPACE_URL = "https://pmrony-forwardbot.hf.space" supabase = create_client(SUPABASE_URL, SUPABASE_KEY) app = Flask(__name__) # --- সরাসরি মেসেজ পাঠানোর ফাংশন (SSL সমস্যা এড়াতে) --- def send_telegram_message(chat_id, text, reply_markup=None): url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage" payload = { "chat_id": chat_id, "text": text, "parse_mode": "HTML" } if reply_markup: payload["reply_markup"] = reply_markup try: # ৫ সেকেন্ডের মধ্যে মেসেজ না গেলে হাল ছেড়ে দিবে না, চেষ্টা করবে r = requests.post(url, json=payload, timeout=15) return r.json() except Exception as e: print(f"Send Error: {e}") return None # --- ডাটাবেজ কাজ ব্যাকগ্রাউন্ডে --- def handle_db_stuff(user_id, referrer_id): try: user_check = supabase.table('referrals').select('*').eq('user_id', user_id).execute() if not user_check.data: supabase.table('referrals').insert({ 'user_id': user_id, 'referral_count': 0, 'referrer_id': referrer_id if referrer_id != user_id else None }).execute() if referrer_id and referrer_id != user_id: ref_data = supabase.table('referrals').select('referral_count').eq('user_id', referrer_id).execute() if ref_data.data: new_count = ref_data.data[0]['referral_count'] + 1 supabase.table('referrals').update({'referral_count': new_count}).eq('user_id', referrer_id).execute() send_telegram_message(referrer_id, "🎉 কেউ আপনার রেফারে জয়েন করেছে!") except: pass @app.route(f'/{BOT_TOKEN}', methods=['POST']) def webhook(): data = request.get_json() if not data or "message" not in data: return "OK", 200 message = data["message"] chat_id = message["chat"]["id"] text = message.get("text", "") if text.startswith("/start"): # রেফারেল আইডি বের করা args = text.split() referrer_id = int(args[1]) if len(args) > 1 and args[1].isdigit() else None # ব্যাকগ্রাউন্ডে ডাটাবেজ আপডেট threading.Thread(target=handle_db_stuff, args=(chat_id, referrer_id)).start() # রিপ্লাই কিবোর্ড তৈরি reply_markup = { "inline_keyboard": [[ {"text": "Play video 🔞", "web_app": {"url": WEB_APP_URL}} ]] } send_telegram_message(chat_id, "ভাইরাল ভিডিও দেখতে নিচের বাটনে ক্লিক করো 👇", reply_markup) elif text.startswith("/png"): parts = text.split(maxsplit=1) if len(parts) > 1: send_telegram_message(chat_id, "✅ ছবি সেট হয়েছে। এখন এই ছবির জন্য ভিডিওর Google Drive লিংক পাঠান। (এটি বর্তমানে ম্যানুয়ালি Supabase-এ অ্যাড করুন)") else: send_telegram_message(chat_id, "সঠিক নিয়ম: /png [লিংক]") return "OK", 200 @app.route('/set_webhook') def set_webhook(): webhook_url = f"{HF_SPACE_URL}/{BOT_TOKEN}" r = requests.get(f"https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url={webhook_url}") return jsonify(r.json()) @app.route('/api/videos') def api_videos(): try: res = supabase.table('videos').select('*').order('id', desc=True).execute() response = make_response(jsonify(res.data)) response.headers['Access-Control-Allow-Origin'] = '*' return response except: return jsonify([]) @app.route('/') def index(): return "Bot System is Active!" if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)