fix(telegram): wire sendPollTelegram into channel action handler (#16977)

The Telegram channel adapter listed no 'poll' action, so agents could
not create polls via the unified action interface. The underlying
sendPollTelegram function was already implemented but unreachable.

Changes:
- telegram.ts: add 'poll' to listActions (enabled by default via gate),
  add handleAction branch that reads pollQuestion/pollOption params and
  delegates to handleTelegramAction with action 'sendPoll'.
- telegram-actions.ts: add 'sendPoll' handler that validates question,
  options (≥2), and forwards to sendPollTelegram with threading, silent,
  and anonymous options.
- actions.test.ts: add test verifying poll action routes correctly.

Fixes #16977
This commit is contained in:
artale
2026-02-16 12:20:51 +01:00
committed by Peter Steinberger
parent 068b9c9749
commit 7bb9a7dcfc
4 changed files with 92 additions and 0 deletions

View File

@@ -489,6 +489,31 @@ describe("telegramMessageActions", () => {
expect(String(call.messageId)).toBe("456");
expect(call.emoji).toBe("ok");
});
it("routes poll action to sendPoll with question and options", async () => {
const cfg = { channels: { telegram: { botToken: "tok" } } } as OpenClawConfig;
await telegramMessageActions.handleAction({
action: "poll",
params: {
to: "-100123",
pollQuestion: "Ready?",
pollOption: ["Yes", "No", "Maybe"],
},
cfg,
accountId: undefined,
});
expect(handleTelegramAction).toHaveBeenCalledWith(
expect.objectContaining({
action: "sendPoll",
to: "-100123",
question: "Ready?",
options: ["Yes", "No", "Maybe"],
}),
cfg,
);
});
});
describe("signalMessageActions", () => {