Spaces:
Build error
Build error
| 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 | |
| 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, "✅ ছবি সেট হয়েছে। এখন এই ছবির জন্য ভিডিওর <b>Google Drive লিংক</b> পাঠান। (এটি বর্তমানে ম্যানুয়ালি Supabase-এ অ্যাড করুন)") | |
| else: | |
| send_telegram_message(chat_id, "সঠিক নিয়ম: /png [লিংক]") | |
| return "OK", 200 | |
| 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()) | |
| 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([]) | |
| def index(): | |
| return "Bot System is Active!" | |
| if __name__ == "__main__": | |
| app.run(host="0.0.0.0", port=7860) |