fix: retry_after when ratelimited (#260)

This commit is contained in:
MARCROCK22 2024-09-01 01:01:31 -04:00 committed by GitHub
parent fa10ac8fcb
commit 172637307d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -231,14 +231,16 @@ export class ApiHandler {
url: `/${string}`, url: `/${string}`,
request: ApiRequestOptions, request: ApiRequestOptions,
response: Response, response: Response,
result: any, result: string,
next: () => void, next: () => void,
reject: (err: unknown) => void, reject: (err: unknown) => void,
now: number, now: number,
) { ) {
const content = typeof request === 'object' ? `${JSON.stringify(request)} ` : ''; const content = `${JSON.stringify(request)} `;
let retryAfter; let retryAfter =
Number(response.headers.get('x-ratelimit-reset-after') || response.headers.get('retry-after')) * 1000;
if (Number.isNaN(retryAfter)) {
try { try {
retryAfter = JSON.parse(result).retry_after * 1000; retryAfter = JSON.parse(result).retry_after * 1000;
} catch (err) { } catch (err) {
@ -246,11 +248,12 @@ export class ApiHandler {
reject(err); reject(err);
return false; return false;
} }
}
this.debugger?.info( this.debugger?.info(
`${ `${
response.headers.get('x-ratelimit-global') ? 'Global' : 'Unexpected' response.headers.get('x-ratelimit-global') ? 'Global' : 'Unexpected'
} 429: ${result}\n${content} ${now} ${route} ${response.status}: ${this.ratelimits.get(route)!.remaining}/${ } 429: ${result.slice(0, 256)}\n${content} ${now} ${route} ${response.status}: ${this.ratelimits.get(route)!.remaining}/${
this.ratelimits.get(route)!.limit this.ratelimits.get(route)!.limit
} left | Reset ${retryAfter} (${this.ratelimits.get(route)!.reset - now}ms left) | Scope ${response.headers.get( } left | Reset ${retryAfter} (${this.ratelimits.get(route)!.reset - now}ms left) | Scope ${response.headers.get(
'x-ratelimit-scope', 'x-ratelimit-scope',