telegram: treat message_id as explicit delete input

This commit is contained in:
OpenClaw Agent 2026-03-11 17:31:07 +01:00
parent 55d47c1045
commit c065d432f0
2 changed files with 25 additions and 1 deletions

View File

@ -216,7 +216,8 @@ export const telegramMessageActions: ChannelMessageActionAdapter = {
if (action === "delete") {
const chatId = readTelegramChatIdParam(params);
const hasMessageIdParam = Object.hasOwn(params, "messageId");
const hasMessageIdParam =
Object.hasOwn(params, "messageId") || Object.hasOwn(params, "message_id");
const messageId = readTelegramMessageIdParam(params, { required: false });
if (hasMessageIdParam && typeof messageId !== "number") {
throw new Error("messageId must be a valid number for action=delete.");

View File

@ -892,6 +892,29 @@ describe("telegramMessageActions", () => {
expect(handleTelegramAction).not.toHaveBeenCalled();
});
it("rejects invalid snake_case delete message_id instead of falling back to topic deletion", async () => {
const cfg = telegramCfg();
const handleAction = telegramMessageActions.handleAction;
if (!handleAction) {
throw new Error("telegram handleAction unavailable");
}
await expect(
handleAction({
channel: "telegram",
action: "delete",
params: {
to: "-1001234567890",
message_id: "oops",
topicId: 271,
},
cfg,
}),
).rejects.toThrow(/messageId must be a valid number for action=delete/i);
expect(handleTelegramAction).not.toHaveBeenCalled();
});
it("rejects topic-delete when threadId/topicId is missing", async () => {
const cfg = telegramCfg();
const handleAction = telegramMessageActions.handleAction;