Fix telegram-archiver: graceful startup without .env + dev tools

This commit is contained in:
2026-02-19 22:22:11 +03:00
parent 5e9815b167
commit 1d23afd8d0
11 changed files with 563 additions and 38 deletions
+22 -13
View File
@@ -22,7 +22,7 @@ from app.models import (
from app.telethon_client import TelethonArchiver
from app.archiver import ChannelArchiver
from app.logger import setup_logging, get_logger
from config import get_settings, Settings
from config import get_settings, get_required_settings, Settings
# Initialize logger
logger = get_logger(__name__)
@@ -38,16 +38,22 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
# Startup
logger.info("Starting Telegram Archiver...")
settings = get_settings()
setup_logging(
log_level=settings.log_level,
enable_otel=settings.otel_enabled,
)
archiver_client = TelethonArchiver(settings)
await archiver_client.connect()
logger.info("Telegram Archiver started successfully")
try:
settings = get_required_settings()
setup_logging(
log_level=settings.log_level,
enable_otel=settings.otel_enabled,
)
archiver_client = TelethonArchiver(settings)
await archiver_client.connect()
logger.info("Telegram Archiver started successfully")
except Exception as e:
logger.warning(f"Could not initialize Telegram client: {e}")
logger.warning("Server will start but /archive endpoint will not work")
logger.warning("Create .env file with API_ID, API_HASH, PHONE to enable archiving")
yield
@@ -90,13 +96,16 @@ async def archive_channel(request: ArchiveRequest) -> ArchiveResponse:
Large files (>MAX_FILE_SIZE) are skipped and logged in 2big2get.md
"""
if not archiver_client:
raise HTTPException(status_code=503, detail="Archiver not initialized")
raise HTTPException(
status_code=503,
detail="Archiver not initialized. Check server logs. Make sure .env file exists with API_ID, API_HASH, PHONE."
)
try:
logger.info(f"Archive request for channel: {request.channel}")
# Get settings and override output_dir if specified
settings = get_settings()
settings = get_required_settings()
if request.output_dir:
settings.output_dir = Path(request.output_dir)