import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime"; import {
resolveRetryConfig,
retryAsync,
type RetryConfig,
} from "openclaw/plugin-sdk/retry-runtime"; import { resolveDiscordAccount } from "./accounts.js";
function isRetryableDiscordDeliveryError(err: unknown): boolean { const status = (err as { status?: number }).status ?? (err as { statusCode?: number }).statusCode; return status === 429 || (status !== undefined && status >= 500);
}
function getDiscordDeliveryRetryAfterMs(err: unknown): number | undefined { if (!err || typeof err !== "object") { return undefined;
} if ( "retryAfter" in err && typeof err.retryAfter === "number" &&
Number.isFinite(err.retryAfter)
) { return err.retryAfter * 1000;
} const retryAfterRaw = (err as { headers?: Record<string, string> }).headers?.["retry-after"]; if (!retryAfterRaw) { return undefined;
} const retryAfterMs = Number(retryAfterRaw) * 1000; return Number.isFinite(retryAfterMs) ? retryAfterMs : undefined;
}
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.