




















@@ -15,6 +15,7 @@ import {
15151616const MATRIX_OPENCLAW_PRESENTATION_KEY = "com.openclaw.presentation" as const;
1717const MATRIX_OPENCLAW_PRESENTATION_TYPE = "message.presentation" as const;
18+const MATRIX_EMPTY_PRESENTATION_FALLBACK_TEXT = "---";
18191920type MatrixChannelData = {
2021extraContent?: MatrixExtraContentFields;
@@ -59,12 +60,13 @@ function renderMatrixPresentationPayload(params: {
5960presentation: MessagePresentation;
6061}): ReplyPayload {
6162const matrixData = resolveMatrixChannelData(params.payload);
63+const fallbackText = renderMessagePresentationFallbackText({
64+text: params.payload.text,
65+presentation: params.presentation,
66+});
6267return {
6368 ...params.payload,
64-text: renderMessagePresentationFallbackText({
65-text: params.payload.text,
66-presentation: params.presentation,
67-}),
69+text: fallbackText.trim() ? fallbackText : MATRIX_EMPTY_PRESENTATION_FALLBACK_TEXT,
6870channelData: {
6971 ...params.payload.channelData,
7072matrix: {
@@ -77,6 +79,14 @@ function renderMatrixPresentationPayload(params: {
7779};
7880}
798182+function resolveMatrixPayloadText(payload: ReplyPayload): string {
83+const text = payload.text ?? "";
84+if (text.trim() || !resolveMatrixPresentationContent(payload)) {
85+return text;
86+}
87+return MATRIX_EMPTY_PRESENTATION_FALLBACK_TEXT;
88+}
89+8090function resolveMatrixExtraContent(payload: ReplyPayload): MatrixExtraContentFields | undefined {
8191const presentation = resolveMatrixPresentationContent(payload);
8292return presentation ? { [MATRIX_OPENCLAW_PRESENTATION_KEY]: presentation } : undefined;
@@ -121,11 +131,12 @@ export const matrixOutbound: ChannelOutboundAdapter = {
121131 ...(replyToMode !== undefined ? { replyToMode } : {}),
122132});
123133const urls = resolvePayloadMediaUrls(payload);
134+const payloadText = resolveMatrixPayloadText(payload);
124135if (urls.length > 0) {
125136let lastResult: Awaited<ReturnType<typeof send>> | undefined;
126137for (let i = 0; i < urls.length; i++) {
127138const isFirst = i === 0;
128-lastResult = await send(to, isFirst ? (payload.text ?? "") : "", {
139+lastResult = await send(to, isFirst ? payloadText : "", {
129140 cfg,
130141mediaUrl: urls[i],
131142 mediaAccess,
@@ -144,7 +155,7 @@ export const matrixOutbound: ChannelOutboundAdapter = {
144155roomId: lastResult!.roomId,
145156};
146157}
147-const result = await send(to, payload.text ?? "", {
158+const result = await send(to, payloadText, {
148159 cfg,
149160mediaUrl: payload.mediaUrl,
150161 mediaAccess,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。