Telegram: Plain-Text-Fallback bei Parse-Fehler, tag-sichere Kürzung auf 4096. Matrix: bytebewusste Kürzung. Downtime: lesender Abgleich nach dem POST, generische Fehlermeldung im Chat. Agent: Platzhalter für nicht ausgeführte Tool-Calls, Text im letzten Schritt erzwingen, Zeitreserve, Kompaktierung, Limit pro Antwort. CLAUDE.md: Fallbacks für Phase 6d. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
34 lines
995 B
Python
34 lines
995 B
Python
from app.alerts.delivery import Deliverer
|
|
from app.alerts.extras import Extras
|
|
from app.chat import BACKEND_TELEGRAM, Target, TELEGRAM_MESSAGE_MAX
|
|
|
|
|
|
class RecordingAdapter:
|
|
name = BACKEND_TELEGRAM
|
|
|
|
def __init__(self):
|
|
self.sent = []
|
|
|
|
async def send(self, target, text, buttons=(), silent=False):
|
|
self.sent.append(text)
|
|
return None
|
|
|
|
async def edit(self, ref, text, buttons=(), silent=False):
|
|
self.sent.append(text)
|
|
|
|
|
|
async def test_hint_is_kept_intact_when_text_is_long():
|
|
adapter = RecordingAdapter()
|
|
deliverer = Deliverer(lambda: _adapters(adapter))
|
|
hint = "Antwort mit !mute 2h zum Stummschalten"
|
|
extra = Extras(hint=hint)
|
|
await deliverer.send("<b>" + "x" * 5000 + "</b>", [Target(BACKEND_TELEGRAM, "42")],
|
|
extras=lambda backend: extra)
|
|
sent = adapter.sent[0]
|
|
assert sent.endswith(f"\n{hint}")
|
|
assert len(sent) <= TELEGRAM_MESSAGE_MAX
|
|
|
|
|
|
async def _adapters(adapter):
|
|
return [adapter]
|