const silentToken = opts.silentToken ?? SILENT_REPLY_TOKEN;
let text = payload.text ?? undefined; if (text && isSilentReplyPayloadText(text, silentToken)) { if (!hasContent("")) {
opts.onSkip?.("silent"); returnnull;
}
text = "";
} // Strip NO_REPLY from mixed-content messages (e.g. " NO_REPLY") so the // token never leaks to end users. If stripping leaves nothing, treat it as // silent just like the exact-match path above. (#30916, #30955) if (text && !isSilentReplyText(text, silentToken)) { const hasLeadingSilentToken = startsWithSilentToken(text, silentToken); if (hasLeadingSilentToken) {
text = stripLeadingSilentToken(text, silentToken);
} if (hasLeadingSilentToken || text.toLowerCase().includes(silentToken.toLowerCase())) {
text = stripSilentToken(text, silentToken); if (!hasContent(text)) {
opts.onSkip?.("silent"); returnnull;
}
}
} if (text && !trimmed) { // Keep empty text when media exists so media-only replies still send.
text = "";
}
const shouldStripHeartbeat = opts.stripHeartbeat ?? true; if (shouldStripHeartbeat && text?.includes(HEARTBEAT_TOKEN)) { const stripped = stripHeartbeatToken(text, { mode: "message" }); if (stripped.didStrip) {
opts.onHeartbeatStrip?.();
} if (stripped.shouldSkip && !hasContent(stripped.text)) {
opts.onSkip?.("heartbeat"); returnnull;
}
text = stripped.text;
}
if (text) {
text = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
} if (!hasContent(text)) {
opts.onSkip?.("empty"); returnnull;
}
let enrichedPayload: ReplyPayload = { ...payload, text }; if (applyChannelTransforms && opts.transformReplyPayload) {
enrichedPayload = opts.transformReplyPayload(enrichedPayload) ?? enrichedPayload;
text = enrichedPayload.text;
}
// Resolve template variables in responsePrefix if context is provided const effectivePrefix = opts.responsePrefixContext
? resolveResponsePrefixTemplate(opts.responsePrefix, opts.responsePrefixContext)
: opts.responsePrefix;
if (
effectivePrefix &&
text &&
text.trim() !== HEARTBEAT_TOKEN &&
!text.startsWith(effectivePrefix)
) {
text = `${effectivePrefix} ${text}`;
}
enrichedPayload = { ...enrichedPayload, text }; return enrichedPayload;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.