fix: preserve Telegram interactive precedence · openclaw/openclaw@5dbc969
steipete
·
2026-05-17
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -242,6 +242,48 @@ describe("telegramOutbound", () => {
|
242 | 242 | ]); |
243 | 243 | }); |
244 | 244 | |
| 245 | +it("preserves legacy interactive buttons when rendering mixed presentation payloads", async () => { |
| 246 | +sendMessageTelegramMock.mockResolvedValueOnce({ |
| 247 | +messageId: "tg-mixed-buttons", |
| 248 | +chatId: "12345", |
| 249 | +}); |
| 250 | +const rendered = await telegramOutbound.renderPresentation?.({ |
| 251 | +payload: { |
| 252 | +text: "Choose:", |
| 253 | +interactive: { |
| 254 | +blocks: [{ type: "buttons", buttons: [{ label: "Legacy", value: "legacy" }] }], |
| 255 | +}, |
| 256 | +}, |
| 257 | +presentation: { |
| 258 | +blocks: [ |
| 259 | +{ |
| 260 | +type: "buttons", |
| 261 | +buttons: [{ label: "Generic", value: "generic" }], |
| 262 | +}, |
| 263 | +], |
| 264 | +}, |
| 265 | +ctx: {} as never, |
| 266 | +}); |
| 267 | +if (!rendered) { |
| 268 | +throw new Error("expected rendered Telegram presentation"); |
| 269 | +} |
| 270 | + |
| 271 | +expect((rendered.channelData?.telegram as { buttons?: unknown } | undefined)?.buttons).toBe( |
| 272 | +undefined, |
| 273 | +); |
| 274 | + |
| 275 | +await telegramOutbound.sendPayload!({ |
| 276 | +cfg: {} as never, |
| 277 | +to: "12345", |
| 278 | +text: "", |
| 279 | +payload: rendered, |
| 280 | +deps: { sendTelegram: sendMessageTelegramMock }, |
| 281 | +}); |
| 282 | + |
| 283 | +const options = callOptionsAt(sendMessageTelegramMock, 0, "12345", "Choose:\n\n- Generic"); |
| 284 | +expect(options.buttons).toEqual([[{ text: "Legacy", callback_data: "legacy" }]]); |
| 285 | +}); |
| 286 | + |
245 | 287 | it("lets allow-always approval callbacks reach Telegram's callback rewrite", async () => { |
246 | 288 | sendMessageTelegramMock.mockResolvedValueOnce({ |
247 | 289 | messageId: "tg-approval", |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。