fix: send error details to user in gateway outer exception handler
Previously, if an error occurred during response processing in _process_message_background (e.g. during extract_media, send, or any uncaught exception from the handler), the error was only logged to server console and the user was left with radio silence — typing indicator stops but no message arrives. Now the outer except block attempts to send the error type and detail (truncated to 300 chars) to the user's chat, matching the format already used by the inner handler in gateway/run.py. Co-authored-by: Test <test@test.com>
This commit is contained in:
@@ -1099,6 +1099,22 @@ class BasePlatformAdapter(ABC):
|
||||
print(f"[{self.name}] Error handling message: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
# Send the error to the user so they aren't left with radio silence
|
||||
try:
|
||||
error_type = type(e).__name__
|
||||
error_detail = str(e)[:300] if str(e) else "no details available"
|
||||
_thread_metadata = {"thread_id": event.source.thread_id} if event.source.thread_id else None
|
||||
await self.send(
|
||||
chat_id=event.source.chat_id,
|
||||
content=(
|
||||
f"Sorry, I encountered an error ({error_type}).\n"
|
||||
f"{error_detail}\n"
|
||||
"Try again or use /reset to start a fresh session."
|
||||
),
|
||||
metadata=_thread_metadata,
|
||||
)
|
||||
except Exception:
|
||||
pass # Last resort — don't let error reporting crash the handler
|
||||
finally:
|
||||
# Stop typing indicator
|
||||
typing_task.cancel()
|
||||
|
||||
Reference in New Issue
Block a user