import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env" ;
import type { RuntimeEnv } from "openclaw/plugin-sdk/runtime-env" ;
import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime" ;
export type TelegramApiLogger = (message: string) => void ;
type TelegramApiLoggingParams<T> = {
operation: string;
fn: () => Promise<T>;
runtime?: RuntimeEnv;
logger?: TelegramApiLogger;
shouldLog?: (err: unknown) => boolean ;
};
const fallbackLogger = createSubsystemLogger("telegram/api" );
function resolveTelegramApiLogger(runtime?: RuntimeEnv, logger?: TelegramApiLogger) {
if (logger) {
return logger;
}
if (runtime?.error) {
return runtime.error;
}
return (message: string) => fallbackLogger.error(message);
}
export async function withTelegramApiErrorLogging<T>({
operation,
fn,
runtime,
logger,
shouldLog,
}: TelegramApiLoggingParams<T>): Promise<T> {
try {
return await fn();
} catch (err) {
if (!shouldLog || shouldLog(err)) {
const errText = formatErrorMessage(err);
const log = resolveTelegramApiLogger(runtime, logger);
log(`telegram ${operation} failed: ${errText}`);
}
throw err;
}
}
Messung V0.5 in Prozent C=100 H=100 G=100
[0.602QuellennavigatorsProjekt 2026-09-28]