




















@@ -12,6 +12,7 @@ import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtim
1212import type { ClawdbotConfig } from "../runtime-api.js";
1313import { resolveFeishuRuntimeAccount } from "./accounts.js";
1414import { createFeishuClient } from "./client.js";
15+import { requestFeishuApi } from "./comment-shared.js";
1516import { normalizeFeishuExternalKey } from "./external-keys.js";
1617import { getFeishuRuntime } from "./runtime.js";
1718import { assertFeishuMessageApiSuccess, toFeishuSendResult } from "./send-result.js";
@@ -418,12 +419,17 @@ export async function uploadImageFeishu(params: {
418419// See: https://github.com/larksuite/node-sdk/issues/121
419420const imageData = typeof image === "string" ? fs.createReadStream(image) : image;
420421421-const response = await client.im.image.create({
422-data: {
423-image_type: imageType,
424-image: imageData,
425-},
426-});
422+const response = await requestFeishuApi(
423+() =>
424+client.im.image.create({
425+data: {
426+image_type: imageType,
427+image: imageData,
428+},
429+}),
430+"Feishu image upload failed",
431+{ includeNestedErrorLogId: true },
432+);
427433428434return {
429435imageKey: extractFeishuUploadKey(response, {
@@ -469,14 +475,19 @@ export async function uploadFileFeishu(params: {
469475470476const safeFileName = sanitizeFileNameForUpload(fileName);
471477472-const response = await client.im.file.create({
473-data: {
474-file_type: fileType,
475-file_name: safeFileName,
476-file: fileData,
477- ...(duration !== undefined && { duration }),
478-},
479-});
478+const response = await requestFeishuApi(
479+() =>
480+client.im.file.create({
481+data: {
482+file_type: fileType,
483+file_name: safeFileName,
484+file: fileData,
485+ ...(duration !== undefined && { duration }),
486+},
487+}),
488+"Feishu file upload failed",
489+{ includeNestedErrorLogId: true },
490+);
480491481492return {
482493fileKey: extractFeishuUploadKey(response, {
@@ -506,26 +517,36 @@ export async function sendImageFeishu(params: {
506517const content = JSON.stringify({ image_key: imageKey });
507518508519if (replyToMessageId) {
509-const response = await client.im.message.reply({
510-path: { message_id: replyToMessageId },
511-data: {
512- content,
513-msg_type: "image",
514- ...(replyInThread ? { reply_in_thread: true } : {}),
515-},
516-});
520+const response = await requestFeishuApi(
521+() =>
522+client.im.message.reply({
523+path: { message_id: replyToMessageId },
524+data: {
525+ content,
526+msg_type: "image",
527+ ...(replyInThread ? { reply_in_thread: true } : {}),
528+},
529+}),
530+"Feishu image reply failed",
531+{ includeNestedErrorLogId: true },
532+);
517533assertFeishuMessageApiSuccess(response, "Feishu image reply failed");
518534return toFeishuSendResult(response, receiveId);
519535}
520536521-const response = await client.im.message.create({
522-params: { receive_id_type: receiveIdType },
523-data: {
524-receive_id: receiveId,
525- content,
526-msg_type: "image",
527-},
528-});
537+const response = await requestFeishuApi(
538+() =>
539+client.im.message.create({
540+params: { receive_id_type: receiveIdType },
541+data: {
542+receive_id: receiveId,
543+ content,
544+msg_type: "image",
545+},
546+}),
547+"Feishu image send failed",
548+{ includeNestedErrorLogId: true },
549+);
529550assertFeishuMessageApiSuccess(response, "Feishu image send failed");
530551return toFeishuSendResult(response, receiveId);
531552}
@@ -553,26 +574,36 @@ export async function sendFileFeishu(params: {
553574const content = JSON.stringify({ file_key: fileKey });
554575555576if (replyToMessageId) {
556-const response = await client.im.message.reply({
557-path: { message_id: replyToMessageId },
558-data: {
559- content,
560-msg_type: msgType,
561- ...(replyInThread ? { reply_in_thread: true } : {}),
562-},
563-});
577+const response = await requestFeishuApi(
578+() =>
579+client.im.message.reply({
580+path: { message_id: replyToMessageId },
581+data: {
582+ content,
583+msg_type: msgType,
584+ ...(replyInThread ? { reply_in_thread: true } : {}),
585+},
586+}),
587+"Feishu file reply failed",
588+{ includeNestedErrorLogId: true },
589+);
564590assertFeishuMessageApiSuccess(response, "Feishu file reply failed");
565591return toFeishuSendResult(response, receiveId);
566592}
567593568-const response = await client.im.message.create({
569-params: { receive_id_type: receiveIdType },
570-data: {
571-receive_id: receiveId,
572- content,
573-msg_type: msgType,
574-},
575-});
594+const response = await requestFeishuApi(
595+() =>
596+client.im.message.create({
597+params: { receive_id_type: receiveIdType },
598+data: {
599+receive_id: receiveId,
600+ content,
601+msg_type: msgType,
602+},
603+}),
604+"Feishu file send failed",
605+{ includeNestedErrorLogId: true },
606+);
576607assertFeishuMessageApiSuccess(response, "Feishu file send failed");
577608return toFeishuSendResult(response, receiveId);
578609}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。