Skip to content

Commit 7fb9131

Browse files
committed
fix(feishu): validate thread message timestamps
1 parent 001da78 commit 7fb9131

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

extensions/feishu/src/send.test.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,45 @@ describe("getMessageFeishu", () => {
488488
},
489489
]);
490490
});
491+
492+
it("does not partially parse malformed thread history create_time values", async () => {
493+
mockClientList.mockResolvedValueOnce({
494+
code: 0,
495+
data: {
496+
items: [
497+
{
498+
message_id: "om_text",
499+
msg_type: "text",
500+
body: {
501+
content: JSON.stringify({ text: "partial time" }),
502+
},
503+
sender: {
504+
id: "ou_1",
505+
sender_type: "user",
506+
},
507+
create_time: "1710000000000ms",
508+
},
509+
],
510+
},
511+
});
512+
513+
const result = await listFeishuThreadMessages({
514+
cfg: {} as ClawdbotConfig,
515+
threadId: "omt_1",
516+
rootMessageId: "om_root",
517+
});
518+
519+
expect(result).toEqual([
520+
{
521+
messageId: "om_text",
522+
senderId: "ou_1",
523+
senderType: "user",
524+
contentType: "text",
525+
content: "partial time",
526+
createTime: undefined,
527+
},
528+
]);
529+
});
491530
});
492531

493532
describe("editMessageFeishu", () => {

extensions/feishu/src/send.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
2+
import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
23
import {
34
isRecord,
45
normalizeLowercaseStringOrEmpty,
@@ -378,7 +379,7 @@ function parseFeishuMessageItem(
378379
senderType: item.sender?.sender_type,
379380
content: parseFeishuMessageContent(rawContent, msgType),
380381
contentType: msgType,
381-
createTime: item.create_time ? Number.parseInt(item.create_time, 10) : undefined,
382+
createTime: parseStrictNonNegativeInteger(item.create_time),
382383
threadId: item.thread_id || undefined,
383384
};
384385
}

0 commit comments

Comments
 (0)