feat: show budget limit message with MatrixHost link instead of generic error
Some checks failed
Build & Deploy / test (push) Failing after 9s
Build & Deploy / build-and-deploy (push) Has been skipped
Tests / test (push) Failing after 8s

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-04-03 12:54:05 +03:00
parent 7b5c157b12
commit 62dbf7b37b

15
bot.py
View File

@@ -15,6 +15,7 @@ import docx
import fitz # pymupdf import fitz # pymupdf
import httpx import httpx
from openai import AsyncOpenAI from openai import AsyncOpenAI
import openai as _openai
from olm import sas as olm_sas from olm import sas as olm_sas
import olm.pk import olm.pk
import canonicaljson import canonicaljson
@@ -3298,6 +3299,20 @@ class Bot:
await self._auto_rename_room(room, user_message, reply) await self._auto_rename_room(room, user_message, reply)
return reply return reply
except _openai.APIStatusError as e:
body = getattr(e, "body", None) or {}
msg = body.get("message", "") if isinstance(body, dict) else str(body)
if "BudgetGuard" in msg or "exceed budget" in msg:
logger.warning("LLM budget exceeded: %s", msg)
portal = PORTAL_URL.rstrip("/")
await self._send_text(
room.room_id,
f"⚠️ AI budget limit reached. Please check your plan at {portal}/settings/billing",
)
else:
logger.exception("LLM API error")
await self._send_text(room.room_id, "Sorry, I couldn't generate a response.")
return None
except Exception: except Exception:
logger.exception("LLM call failed") logger.exception("LLM call failed")
await self._send_text(room.room_id, "Sorry, I couldn't generate a response.") await self._send_text(room.room_id, "Sorry, I couldn't generate a response.")