Spaces:
Runtime error
Runtime error
Upload 2 files
Browse files- Dockerfile +1 -1
- bot.py +43 -3
Dockerfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
FROM python:3.11
|
| 2 |
|
| 3 |
# Set up a new user named "user" with user ID 1000
|
| 4 |
RUN useradd -m -u 1000 user
|
|
|
|
| 1 |
+
FROM python:3.11
|
| 2 |
|
| 3 |
# Set up a new user named "user" with user ID 1000
|
| 4 |
RUN useradd -m -u 1000 user
|
bot.py
CHANGED
|
@@ -3,6 +3,8 @@ import os
|
|
| 3 |
import io
|
| 4 |
import html
|
| 5 |
import aiohttp
|
|
|
|
|
|
|
| 6 |
from dotenv import load_dotenv # <--- NEW IMPORT
|
| 7 |
from telegram import Update, constants
|
| 8 |
from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filters
|
|
@@ -15,8 +17,8 @@ from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filte
|
|
| 15 |
load_dotenv()
|
| 16 |
|
| 17 |
# 2. Retrieve values
|
| 18 |
-
BOT_TOKEN = os.getenv("BOT_TOKEN")
|
| 19 |
-
BACKEND_API_URL = os.getenv("EXTERNAL_ANALYSIS_API_URL")
|
| 20 |
API_KEY = os.getenv("API_KEY")
|
| 21 |
|
| 22 |
# Check if critical vars are missing
|
|
@@ -337,11 +339,49 @@ async def handle_photo(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|
| 337 |
parse_mode='HTML'
|
| 338 |
)
|
| 339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 340 |
# ==========================================
|
| 341 |
# π MAIN RUNNER
|
| 342 |
# ==========================================
|
| 343 |
if __name__ == '__main__':
|
| 344 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 345 |
|
| 346 |
application.add_handler(MessageHandler(filters.COMMAND & filters.Regex(r'^/start$'), start))
|
| 347 |
application.add_handler(MessageHandler(filters.TEXT & (~filters.COMMAND), handle_text))
|
|
|
|
| 3 |
import io
|
| 4 |
import html
|
| 5 |
import aiohttp
|
| 6 |
+
import socket
|
| 7 |
+
from urllib.parse import urlparse
|
| 8 |
from dotenv import load_dotenv # <--- NEW IMPORT
|
| 9 |
from telegram import Update, constants
|
| 10 |
from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filters
|
|
|
|
| 17 |
load_dotenv()
|
| 18 |
|
| 19 |
# 2. Retrieve values
|
| 20 |
+
BOT_TOKEN = os.getenv("BOT_TOKEN", "").strip().replace('"', '').replace("'", "")
|
| 21 |
+
BACKEND_API_URL = os.getenv("EXTERNAL_ANALYSIS_API_URL", "").strip().replace('"', '').replace("'", "")
|
| 22 |
API_KEY = os.getenv("API_KEY")
|
| 23 |
|
| 24 |
# Check if critical vars are missing
|
|
|
|
| 339 |
parse_mode='HTML'
|
| 340 |
)
|
| 341 |
|
| 342 |
+
# ==========================================
|
| 343 |
+
# π οΈ DIAGNOSTICS
|
| 344 |
+
# ==========================================
|
| 345 |
+
def check_network():
|
| 346 |
+
"""Checks DNS resolution for critical services."""
|
| 347 |
+
logger.info("--- NETWORK DIAGNOSTICS ---")
|
| 348 |
+
|
| 349 |
+
targets = [
|
| 350 |
+
("Telegram API", "api.telegram.org"),
|
| 351 |
+
("Google", "google.com")
|
| 352 |
+
]
|
| 353 |
+
|
| 354 |
+
# Add Backend Host if parseable
|
| 355 |
+
try:
|
| 356 |
+
if BACKEND_API_URL:
|
| 357 |
+
backend_host = urlparse(BACKEND_API_URL).netloc
|
| 358 |
+
targets.append(("Backend API", backend_host))
|
| 359 |
+
except:
|
| 360 |
+
pass
|
| 361 |
+
|
| 362 |
+
for name, host in targets:
|
| 363 |
+
try:
|
| 364 |
+
ip = socket.gethostbyname(host)
|
| 365 |
+
logger.info(f"β
{name} ({host}) resolved to {ip}")
|
| 366 |
+
except socket.gaierror as e:
|
| 367 |
+
logger.error(f"β {name} ({host}) DNS FAILURE: {e}")
|
| 368 |
+
except Exception as e:
|
| 369 |
+
logger.error(f"β {name} ({host}) Unexpected Error: {e}")
|
| 370 |
+
|
| 371 |
+
logger.info("---------------------------")
|
| 372 |
+
|
| 373 |
# ==========================================
|
| 374 |
# π MAIN RUNNER
|
| 375 |
# ==========================================
|
| 376 |
if __name__ == '__main__':
|
| 377 |
+
check_network()
|
| 378 |
+
|
| 379 |
+
from telegram.request import HTTPXRequest
|
| 380 |
+
|
| 381 |
+
# Use a robust request object with longer timeouts
|
| 382 |
+
trequest = HTTPXRequest(connection_pool_size=8, read_timeout=20.0, write_timeout=20.0, connect_timeout=20.0)
|
| 383 |
+
|
| 384 |
+
application = ApplicationBuilder().token(BOT_TOKEN).request(trequest).build()
|
| 385 |
|
| 386 |
application.add_handler(MessageHandler(filters.COMMAND & filters.Regex(r'^/start$'), start))
|
| 387 |
application.add_handler(MessageHandler(filters.TEXT & (~filters.COMMAND), handle_text))
|