fix(ci): harden discord rate-limit helpers

This commit is contained in:
Peter Steinberger 2026-03-27 23:43:43 +00:00
parent 232a96a0dc
commit ac68494dae
3 changed files with 28 additions and 8 deletions

View File

@ -45,12 +45,17 @@ function createCompatRateLimitError(
body: { message: string; retry_after: number; global: boolean },
request?: Request,
): RateLimitError {
const compatRequest =
request ??
new Request("https://discord.com/api/v10/applications/commands", {
method: "PUT",
});
const RateLimitErrorCtor = RateLimitError as unknown as new (
response: Response,
body: { message: string; retry_after: number; global: boolean },
request?: Request,
) => RateLimitError;
return new RateLimitErrorCtor(response, body, request);
return new RateLimitErrorCtor(response, body, compatRequest);
}
function createConfigWithDiscordAccount(overrides: Record<string, unknown> = {}): OpenClawConfig {
@ -653,6 +658,7 @@ describe("monitorDiscordProvider", () => {
retry_after: 193.632,
global: false,
},
request,
);
rateLimitError.discordCode = 30034;
clientHandleDeployRequestMock.mockRejectedValueOnce(rateLimitError);

View File

@ -28,12 +28,17 @@ function createCompatRateLimitError(
body: { message: string; retry_after: number; global: boolean },
request?: Request,
): RateLimitError {
const compatRequest =
request ??
new Request("https://discord.com/api/v10/channels/789/messages", {
method: "POST",
});
const RateLimitErrorCtor = RateLimitError as unknown as new (
response: Response,
body: { message: string; retry_after: number; global: boolean },
request?: Request,
) => RateLimitError;
return new RateLimitErrorCtor(response, body, request);
return new RateLimitErrorCtor(response, body, compatRequest);
}
beforeAll(async () => {
@ -436,11 +441,15 @@ function createMockRateLimitError(retryAfter = 0.001): RateLimitError {
"X-RateLimit-Bucket": "test-bucket",
},
});
return createCompatRateLimitError(response, {
message: "You are being rate limited.",
retry_after: retryAfter,
global: false,
});
return createCompatRateLimitError(
response,
{
message: "You are being rate limited.",
retry_after: retryAfter,
global: false,
},
request,
);
}
describe("retry rate limits", () => {

View File

@ -34,12 +34,17 @@ function createRateLimitError(
body: { message: string; retry_after: number; global: boolean },
request?: Request,
): RateLimitError {
const compatRequest =
request ??
new Request("https://discord.com/api/v10/channels/voice/messages", {
method: "POST",
});
const RateLimitErrorCtor = RateLimitError as unknown as new (
response: Response,
body: { message: string; retry_after: number; global: boolean },
request?: Request,
) => RateLimitError;
return new RateLimitErrorCtor(response, body, request);
return new RateLimitErrorCtor(response, body, compatRequest);
}
export type VoiceMessageMetadata = {