Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -14,6 +14,9 @@ bot = telebot.TeleBot(BOT_TOKEN)
|
|
| 14 |
supabase = create_client(SUPABASE_URL, SUPABASE_KEY)
|
| 15 |
app = Flask(__name__)
|
| 16 |
|
|
|
|
|
|
|
|
|
|
| 17 |
@app.route(f'/{BOT_TOKEN}', methods=['POST'])
|
| 18 |
def webhook():
|
| 19 |
if 'application/json' in flask_request.headers.get('content-type', ''):
|
|
@@ -37,37 +40,64 @@ def index():
|
|
| 37 |
return "Bot is Running smoothly!"
|
| 38 |
|
| 39 |
# ==========================================
|
| 40 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
# ==========================================
|
| 42 |
-
# এখানে আপনি আপনার ইচ্ছামতো ভিডিও লিংক এবং ছবির লিংক বসাতে পারবেন।
|
| 43 |
-
# আপনি চাইলে postimages.org এ ছবি আপলোড করে সেই লিংক thumbnail_url এ দিতে পারেন।
|
| 44 |
-
|
| 45 |
-
MY_VIDEOS = [
|
| 46 |
-
{
|
| 47 |
-
"video_url": "https://drive.google.com/file/d/1d_BRKZadepX27LPg0n12DoAj1cm2tLDO/view",
|
| 48 |
-
"thumbnail_url": "https://placehold.co/300x200/222222/FF9900/png?text=Video+1"
|
| 49 |
-
},
|
| 50 |
-
{
|
| 51 |
-
"video_url": "https://drive.google.com/file/d/1d_BRKZadepX27LPg0n12DoAj1cm2tLDO/view", # আপাতত টেস্ট করার জন্য একই লিংক দিলাম
|
| 52 |
-
"thumbnail_url": "https://placehold.co/300x200/222222/FF9900/png?text=Video+2"
|
| 53 |
-
},
|
| 54 |
-
{
|
| 55 |
-
"video_url": "https://drive.google.com/file/d/1d_BRKZadepX27LPg0n12DoAj1cm2tLDO/view",
|
| 56 |
-
"thumbnail_url": "https://placehold.co/300x200/222222/FF9900/png?text=Video+3"
|
| 57 |
-
},
|
| 58 |
-
{
|
| 59 |
-
"video_url": "https://drive.google.com/file/d/1d_BRKZadepX27LPg0n12DoAj1cm2tLDO/view",
|
| 60 |
-
"thumbnail_url": "https://placehold.co/300x200/222222/FF9900/png?text=Video+4"
|
| 61 |
-
}
|
| 62 |
-
# আপনি কমা (,) দিয়ে নিচে নিচে আরও ভিডিও বাড়াতে পারবেন...
|
| 63 |
-
]
|
| 64 |
|
| 65 |
@app.route('/api/videos')
|
| 66 |
def api_videos():
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
response.headers['Access-Control-Allow-Origin'] = '*'
|
| 69 |
return response
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
@bot.message_handler(commands=['start'])
|
| 72 |
def start(message):
|
| 73 |
user_id = message.from_user.id
|
|
|
|
| 14 |
supabase = create_client(SUPABASE_URL, SUPABASE_KEY)
|
| 15 |
app = Flask(__name__)
|
| 16 |
|
| 17 |
+
# অ্যাডমিন কোন ধাপে আছে তা মনে রাখার জন্য ডিকশনারি
|
| 18 |
+
admin_states = {}
|
| 19 |
+
|
| 20 |
@app.route(f'/{BOT_TOKEN}', methods=['POST'])
|
| 21 |
def webhook():
|
| 22 |
if 'application/json' in flask_request.headers.get('content-type', ''):
|
|
|
|
| 40 |
return "Bot is Running smoothly!"
|
| 41 |
|
| 42 |
# ==========================================
|
| 43 |
+
# ADMIN COMMAND TO ADD VIDEO
|
| 44 |
+
# ==========================================
|
| 45 |
+
|
| 46 |
+
@bot.message_handler(commands=['png'])
|
| 47 |
+
def add_png(message):
|
| 48 |
+
try:
|
| 49 |
+
parts = message.text.split(maxsplit=1)
|
| 50 |
+
if len(parts) > 1:
|
| 51 |
+
img_url = parts[1].strip()
|
| 52 |
+
# ইউজারের স্টেট সেভ করে রাখলাম
|
| 53 |
+
admin_states[message.chat.id] = {"step": 1, "thumbnail_url": img_url}
|
| 54 |
+
bot.reply_to(message, "ঠিক আছে, এখন Google Drive এর ভিডিও লিংক দেন।")
|
| 55 |
+
else:
|
| 56 |
+
bot.reply_to(message, "⚠️ সঠিক নিয়ম: `/png <ছবির লিংক>` এভাবে দিন।", parse_mode="Markdown")
|
| 57 |
+
except Exception as e:
|
| 58 |
+
bot.reply_to(message, f"Error: {e}")
|
| 59 |
+
|
| 60 |
+
# যখন ইউজারের স্টেট 1 থাকবে (অর্থাৎ সে ছবির লিংক দিয়েছে, এখন ভিডিওর লিংক দিবে)
|
| 61 |
+
@bot.message_handler(func=lambda message: message.chat.id in admin_states and admin_states[message.chat.id]["step"] == 1)
|
| 62 |
+
def add_video_link(message):
|
| 63 |
+
video_url = message.text.strip()
|
| 64 |
+
thumbnail_url = admin_states[message.chat.id]["thumbnail_url"]
|
| 65 |
+
|
| 66 |
+
try:
|
| 67 |
+
# Supabase ডাটাবেজে সেভ করা
|
| 68 |
+
supabase.table('videos').insert({
|
| 69 |
+
"video_url": video_url,
|
| 70 |
+
"thumbnail_url": thumbnail_url
|
| 71 |
+
}).execute()
|
| 72 |
+
bot.reply_to(message, "✅ সফলভাবে ভিডিও এবং ছবি ডাটাবেজে সেভ হয়েছে! অ্যাপে গিয়ে চেক করুন।")
|
| 73 |
+
except Exception as e:
|
| 74 |
+
bot.reply_to(message, f"❌ সেভ করতে সমস্যা হয়েছে! নিশ্চিত করুন আপনি Supabase এ 'videos' টেবিল বানিয়েছেন কিনা।")
|
| 75 |
+
|
| 76 |
+
# কাজ শেষ, তাই স্টেট মুছে দিলাম
|
| 77 |
+
del admin_states[message.chat.id]
|
| 78 |
+
|
| 79 |
+
# ==========================================
|
| 80 |
+
# API FOR MINI APP
|
| 81 |
# ==========================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
|
| 83 |
@app.route('/api/videos')
|
| 84 |
def api_videos():
|
| 85 |
+
try:
|
| 86 |
+
# ডাটাবেজ থেকে সর্বশেষ অ্যাড করা ভিডিওগুলো আনবে
|
| 87 |
+
res = supabase.table('videos').select('*').order('id', desc=True).execute()
|
| 88 |
+
videos_data = res.data
|
| 89 |
+
except Exception as e:
|
| 90 |
+
print(f"Error fetching videos: {e}")
|
| 91 |
+
videos_data = []
|
| 92 |
+
|
| 93 |
+
response = make_response(jsonify(videos_data))
|
| 94 |
response.headers['Access-Control-Allow-Origin'] = '*'
|
| 95 |
return response
|
| 96 |
|
| 97 |
+
# ==========================================
|
| 98 |
+
# BOT START / REFERRAL LOGIC
|
| 99 |
+
# ==========================================
|
| 100 |
+
|
| 101 |
@bot.message_handler(commands=['start'])
|
| 102 |
def start(message):
|
| 103 |
user_id = message.from_user.id
|