import threading import time import telebot import requests from http.server import HTTPServer, BaseHTTPRequestHandler # --- Bot Setup --- TOKEN = '8354363462:AAGR1MyBo6mX69DPUdCaemR8-XcOcOoKEmg' bot = telebot.TeleBot(TOKEN) print("✅ Bot initialized") # --- Bot Handlers --- @bot.message_handler(commands=['start']) def send_welcome(message): print(f"📩 /start từ {message.from_user.first_name}") bot.reply_to(message, "🎬 Chào bạn! Nhập tên phim muốn xem, mình sẽ lấy link trực tiếp cho nhé.") @bot.message_handler(func=lambda message: True) def search_and_get_link(message): query = message.text print(f"🔍 Tìm: {query}") search_url = f"https://ophim1.com/v1/api/tim-kiem?keyword={query}" try: search_res = requests.get(search_url, timeout=10).json() items = search_res.get('data', {}).get('items', []) if not items: bot.reply_to(message, "❌ Không tìm thấy phim này rồi!") return movie_slug = items[0]['slug'] detail_url = f"https://ophim1.com/phim/{movie_slug}" detail_res = requests.get(detail_url, timeout=10).json() movie_info = detail_res.get('movie', {}) episodes = detail_res.get('episodes', []) if episodes: server_data = episodes[0].get('server_data', []) if server_data: latest_ep = server_data[-1] watch_link = latest_ep.get('link_embed', '') response_msg = ( f"✅ **Đã tìm thấy: {movie_info.get('name')}**\n" f"🎭 Tên gốc: {movie_info.get('origin_name')}\n" f"📅 Năm: {movie_info.get('year')}\n" f"🚩 Trạng thái: {movie_info.get('episode_current')}\n\n" f"📺 **[NHẤN VÀO ĐÂY ĐỂ XEM PHIM NGAY]({watch_link})**" ) bot.send_message(message.chat.id, response_msg, parse_mode="Markdown") else: bot.reply_to(message, "Hic, phim này hiện chưa có link xem.") else: bot.reply_to(message, "Phim này hiện chưa cập nhật tập nào.") except Exception as e: print(f"❌ Lỗi: {e}") bot.reply_to(message, "⚠️ Có lỗi khi lấy dữ liệu từ máy chủ phim!") # --- Bot polling thread --- def run_bot(): while True: try: print("🤖 Bot polling started...") bot.remove_webhook() time.sleep(1) bot.infinity_polling(timeout=30, long_polling_timeout=30) except Exception as e: print(f"❌ Bot error: {e}") time.sleep(5) bot_thread = threading.Thread(target=run_bot, daemon=True) bot_thread.start() # --- Health check server (port 7860, required by HF Spaces) --- class Handler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/html; charset=utf-8') self.end_headers() self.wfile.write('🎬 Bot Telegram Xem Phim đang hoạt động!'.encode('utf-8')) def log_message(self, format, *args): pass print("🌐 Health check server on port 7860") HTTPServer(('0.0.0.0', 7860), Handler).serve_forever()