PercivalFletcher commited on
Commit
ecfa3ec
Β·
verified Β·
1 Parent(s): 909b715

Upload 2 files

Browse files
Files changed (2) hide show
  1. Dockerfile +1 -1
  2. bot.py +43 -3
Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM python:3.11-slim
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
- application = ApplicationBuilder().token(BOT_TOKEN).build()
 
 
 
 
 
 
 
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))