


















@@ -29,6 +29,7 @@ import type {
2929TelegramTopicConfig,
3030} from "openclaw/plugin-sdk/config-types";
3131import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
32+import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
3233import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
3334import { getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
3435import { danger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -249,6 +250,16 @@ function resolveTelegramNativeReplyChannelData(
249250return result.channelData?.telegram as TelegramNativeReplyChannelData | undefined;
250251}
251252253+function normalizeTelegramNativeReplyPayload(
254+result: TelegramNativeReplyPayload | null | undefined,
255+): TelegramNativeReplyPayload {
256+return result && typeof result === "object" ? result : {};
257+}
258+259+function hasRenderableTelegramNativeReplyPayload(result: TelegramNativeReplyPayload): boolean {
260+return resolveSendableOutboundReplyParts(result).hasContent;
261+}
262+252263function isEditableTelegramProgressResult(result: TelegramNativeReplyPayload): boolean {
253264const telegramData = resolveTelegramNativeReplyChannelData(result);
254265return Boolean(
@@ -1276,23 +1287,25 @@ export const registerTelegramNativeCommands = ({
12761287threadId: threadSpec.id,
12771288});
127812891279-const result = await nativeCommandRuntime.executePluginCommand({
1280-command: match.command,
1281-args: match.args,
1282- senderId,
1283-channel: "telegram",
1284-isAuthorizedSender: commandAuthorized,
1285- senderIsOwner,
1286-sessionKey: route.sessionKey,
1287-sessionId: sessionFileContext.sessionId,
1288-sessionFile: sessionFileContext.sessionFile,
1289- commandBody,
1290-config: runtimeCfg,
1291- from,
1292- to,
1293- accountId,
1294-messageThreadId: threadSpec.id,
1295-});
1290+const result = normalizeTelegramNativeReplyPayload(
1291+await nativeCommandRuntime.executePluginCommand({
1292+command: match.command,
1293+args: match.args,
1294+ senderId,
1295+channel: "telegram",
1296+isAuthorizedSender: commandAuthorized,
1297+ senderIsOwner,
1298+sessionKey: route.sessionKey,
1299+sessionId: sessionFileContext.sessionId,
1300+sessionFile: sessionFileContext.sessionFile,
1301+ commandBody,
1302+config: runtimeCfg,
1303+ from,
1304+ to,
1305+ accountId,
1306+messageThreadId: threadSpec.id,
1307+}),
1308+);
1296130912971310if (
12981311shouldSuppressLocalTelegramExecApprovalPrompt({
@@ -1310,14 +1323,19 @@ export const registerTelegramNativeCommands = ({
13101323return;
13111324}
131213251326+const deliverableResult = hasRenderableTelegramNativeReplyPayload(result)
1327+ ? result
1328+ : { text: EMPTY_RESPONSE_FALLBACK };
13131329const progressResultText =
1314-typeof result.text === "string" && result.text.trim().length > 0 ? result.text : null;
1315-const telegramResultData = resolveTelegramNativeReplyChannelData(result);
1330+typeof deliverableResult.text === "string" && deliverableResult.text.trim().length > 0
1331+ ? deliverableResult.text
1332+ : null;
1333+const telegramResultData = resolveTelegramNativeReplyChannelData(deliverableResult);
13161334if (
13171335progressMessageId != null &&
13181336telegramDeps.editMessageTelegram &&
13191337progressResultText &&
1320-isEditableTelegramProgressResult(result)
1338+isEditableTelegramProgressResult(deliverableResult)
13211339) {
13221340try {
13231341await telegramDeps.editMessageTelegram(chatId, progressMessageId, progressResultText, {
@@ -1350,9 +1368,10 @@ export const registerTelegramNativeCommands = ({
13501368 runtime,
13511369});
13521370await deliverReplies({
1353-replies: [result],
1371+replies: [deliverableResult],
13541372 ...deliveryBaseOptions,
1355-silent: runtimeTelegramCfg.silentErrorReplies === true && result.isError === true,
1373+silent:
1374+runtimeTelegramCfg.silentErrorReplies === true && deliverableResult.isError === true,
13561375});
13571376});
13581377}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。