fix(telegram): 補 send_text 公開方法 — 修復 drift_adopt_telegram_failed

drift_adopt_service / drift_remediator / runbook_generator / signoz_webhook
均呼叫 tg.send_text(),但 TelegramGateway 缺少此公開方法,
導致每次呼叫拋出 AttributeError。

新增 send_text() 委派至 _send_request('sendMessage'),
預設 chat_id = alert_chat_id(SRE 群組),支援 HTML parse_mode。
不動任何呼叫方,不改 dedup / nonce 邏輯。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Your Name
2026-05-04 14:11:32 +08:00
parent 439c432c7c
commit ccffaa5f3e

View File

@@ -4961,6 +4961,41 @@ class TelegramGateway:
payload["reply_markup"] = reply_markup
return await self._send_request("sendMessage", payload)
# =========================================================================
# 2026-05-04 Claude Sonnet 4.6: send_text 公開 wrapper修復 drift_adopt_telegram_failed
# =========================================================================
async def send_text(
self,
text: str,
chat_id: int | str | None = None,
parse_mode: str = "HTML",
disable_web_page_preview: bool = True,
) -> dict:
"""
公開 send_text wrapper — 委派至 _send_request('sendMessage', ...)
給 drift_adopt_service / drift_remediator / runbook_generator /
signoz_webhook 等服務使用的通用純文字送出方法。
預設送往 alert_chat_idSRE 群組)。
Args:
text: 訊息內容(最多 4096 字元)
chat_id: 目標 chat IDNone 時使用 alert_chat_id
parse_mode: 解析模式(預設 HTML
disable_web_page_preview: 是否關閉網頁預覽
Returns:
dict: Telegram API 回應
"""
payload: dict = {
"chat_id": chat_id or self.alert_chat_id,
"text": text[:4096],
"parse_mode": parse_mode,
"disable_web_page_preview": disable_web_page_preview,
}
return await self._send_request("sendMessage", payload)
# =========================================================================
# 2026-04-24 Claude Sonnet 4.6 (ADR-095 WS4): Hermes NL 回覆
# =========================================================================