import { splitMediaFromOutput } from "../../media/parse.js" ;
import { parseInlineDirectives } from "../../utils/directive-tags.js" ;
import { isSilentReplyPayloadText, SILENT_REPLY_TOKEN } from "../tokens.js" ;
export type ReplyDirectiveParseResult = {
text: string;
mediaUrls?: string[];
mediaUrl?: string;
replyToId?: string;
replyToCurrent?: boolean ;
replyToTag: boolean ;
audioAsVoice?: boolean ;
isSilent: boolean ;
};
export function parseReplyDirectives(
raw: string,
options: { currentMessageId?: string; silentToken?: string } = {},
): ReplyDirectiveParseResult {
const split = splitMediaFromOutput(raw);
let text = split.text ?? "" ;
const replyParsed = parseInlineDirectives(text, {
currentMessageId: options.currentMessageId,
stripAudioTag: false ,
stripReplyTags: true ,
});
if (replyParsed.hasReplyTag) {
text = replyParsed.text;
}
const silentToken = options.silentToken ?? SILENT_REPLY_TOKEN;
const isSilent = isSilentReplyPayloadText(text, silentToken);
if (isSilent) {
text = "" ;
}
return {
text,
mediaUrls: split.mediaUrls,
mediaUrl: split.mediaUrl,
replyToId: replyParsed.replyToId,
replyToCurrent: replyParsed.replyToCurrent || undefined,
replyToTag: replyParsed.hasReplyTag,
audioAsVoice: split.audioAsVoice,
isSilent,
};
}
Messung V0.5 in Prozent C=98 H=98 G=97
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland