import { isTelegramVoiceCompatibleAudio } from "openclaw/plugin-sdk/media-runtime"; export function resolveTelegramVoiceDecision(opts: { wantsVoice: boolean; contentType?: string | null; fileName?: string | null; }): { useVoice: boolean; reason?: string } { if (!opts.wantsVoice) { return { useVoice: false }; } if (isTelegramVoiceCompatibleAudio(opts)) { return { useVoice: true }; } const contentType = opts.contentType ?? "unknown"; const fileName = opts.fileName ?? "unknown"; return { useVoice: false, reason: `media is ${contentType} (${fileName})`, }; } export function resolveTelegramVoiceSend(opts: { wantsVoice: boolean; contentType?: string | null; fileName?: string | null; logFallback?: (message: string) => void; }): { useVoice: boolean } { const decision = resolveTelegramVoiceDecision(opts); if (decision.reason && opts.logFallback) { opts.logFallback( `Telegram voice requested but ${decision.reason}; sending as audio file instead.`, ); } return { useVoice: decision.useVoice }; }