Spaces:
Runtime error
Runtime error
| import logging | |
| import os | |
| import time | |
| import asyncio | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| BOT_TOKEN = os.getenv("BOT_TOKEN") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 1) ΓNCE HEALTH CHECK - SENKRON, HEMEN | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| from http.server import HTTPServer, BaseHTTPRequestHandler | |
| import threading | |
| class H(BaseHTTPRequestHandler): | |
| def do_GET(self): | |
| self.send_response(200) | |
| self.end_headers() | |
| self.wfile.write(b"OK") | |
| def do_HEAD(self): | |
| self.send_response(200) | |
| self.end_headers() | |
| def log_message(self, *a): pass | |
| server = HTTPServer(("0.0.0.0", 7860), H) | |
| t = threading.Thread(target=server.serve_forever, daemon=True) | |
| t.start() | |
| logger.info("β HEALTH SERVER UP ON 7860") | |
| # 3 saniye bekle - HF'nin health check'i gΓΆrmesi iΓ§in | |
| time.sleep(3) | |
| logger.info("β WAITED 3 SEC") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 2) TOKEN KONTROL | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| if not BOT_TOKEN: | |
| logger.error("β NO BOT_TOKEN - sleeping forever") | |
| while True: | |
| time.sleep(3600) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 3) TELEGRAM - GECΔ°KMELΔ° IMPORT | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| logger.info("Importing telegram...") | |
| from telegram import Update | |
| from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes | |
| logger.info("β Telegram imported") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 4) HANDLERS | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| async def cmd_start(update: Update, context: ContextTypes.DEFAULT_TYPE): | |
| await update.message.reply_text("ΓalΔ±ΕΔ±yorum! π") | |
| async def on_msg(update: Update, context: ContextTypes.DEFAULT_TYPE): | |
| txt = update.message.text[:50] if update.message.text else "" | |
| await update.message.reply_text(f"AldΔ±m: {txt}") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 5) ASYNC MAIN | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| async def run_bot(): | |
| logger.info("Creating application...") | |
| app = ( | |
| Application.builder() | |
| .token(BOT_TOKEN) | |
| .connect_timeout(30) | |
| .read_timeout(30) | |
| .build() | |
| ) | |
| app.add_handler(CommandHandler("start", cmd_start)) | |
| app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, on_msg)) | |
| logger.info("Starting bot polling...") | |
| # Bloklamayan Εekilde Γ§alΔ±ΕtΔ±r | |
| async with app: | |
| await app.start() | |
| await app.updater.start_polling(drop_pending_updates=True) | |
| logger.info("β BOT POLLING STARTED") | |
| # Sonsuza kadar Γ§alΔ±Ε | |
| while True: | |
| await asyncio.sleep(3600) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 6) ENTRY POINT | |
| # βββββββββββββββββββββββββββββββββββββββββββββββ | |
| if __name__ == "__main__": | |
| logger.info("Starting async loop...") | |
| try: | |
| asyncio.run(run_bot()) | |
| except KeyboardInterrupt: | |
| logger.info("Interrupted") | |
| except Exception as e: | |
| logger.error(f"π FATAL: {e}", exc_info=True) | |
| # Γlme, health check devam etsin | |
| while True: | |
| time.sleep(3600) |