Fix ConnectError handling in Telegram bot API client
Fix AttributeError crash when backend is unreachable during account linking. Previously, when telegram bot couldn't connect to backend, the error handler tried to access e.response.status_code on a ConnectError exception which doesn't have a response attribute. Changes to reports-app/telegram-bot/app/api/client.py: - Import ConnectError from httpx - Add separate exception handler for ConnectError before HTTPError handler - Log clear error message indicating backend connectivity issue - Return None gracefully instead of crashing with AttributeError Changes to deployment/windows/docs/TELEGRAM_BOT_TROUBLESHOOTING.md: - Add new section "Problem: Cannot connect to backend / Connection Errors" - Add diagnostic steps for backend service verification - Add checklist for BACKEND_URL configuration (http://localhost:8000) - Add Issue 5: Backend Service Not Running - Add Issue 6: Wrong Backend URL in Telegram Bot - Include PowerShell commands for Windows Server troubleshooting This fix ensures the Telegram bot provides clear error messages when backend is unavailable instead of crashing, making debugging easier for production deployments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,7 @@ from typing import Optional, Dict, Any, List
|
||||
from datetime import datetime
|
||||
|
||||
import httpx
|
||||
from httpx import AsyncClient, Response, HTTPError
|
||||
from httpx import AsyncClient, Response, HTTPError, ConnectError
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -144,6 +144,10 @@ class BackendAPIClient:
|
||||
|
||||
return await self._handle_response(response)
|
||||
|
||||
except ConnectError as e:
|
||||
logger.error(f"Cannot connect to backend at {self.base_url}: {e}")
|
||||
logger.error("Verify that backend service is running and BACKEND_URL is correct")
|
||||
return None
|
||||
except HTTPError as e:
|
||||
if e.response.status_code == 404:
|
||||
logger.warning(f"User {oracle_username} not found in Oracle")
|
||||
|
||||
Reference in New Issue
Block a user