Spaces:
Sleeping
Sleeping
Download app.py from TienPhat/Bot-Telegram: direct link, hf CLI and curl.
- Browser
- Download file 3.29 kB
-
https://huggingface.co/spaces/TienPhat/Bot-Telegram/resolve/main/app.py
- Command line
-
hf download hf://spaces/TienPhat/Bot-Telegram/app.py
-
curl -L -o app.py https://huggingface.co/spaces/TienPhat/Bot-Telegram/resolve/main/app.py
3.29 kB
| 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 --- | |
| 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é.") | |
| 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() | |