Forwardbot / app.py
pmrony's picture
Update app.py
b5a9862 verified
Raw
History Blame
4.61 kB
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, "✅ ছবি সেট হয়েছে। এখন এই ছবির জন্য ভিডিওর <b>Google Drive লিংক</b> পাঠান। (এটি বর্তমানে ম্যানুয়ালি 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)