mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +01:00
refactor(RequestHandler): use x-ratelimit-reset-after when present (#5511)
This commit is contained in:
@@ -17,7 +17,11 @@ function getAPIOffset(serverDate) {
|
|||||||
return new Date(serverDate).getTime() - Date.now();
|
return new Date(serverDate).getTime() - Date.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
function calculateReset(reset, serverDate) {
|
function calculateReset(reset, resetAfter, serverDate) {
|
||||||
|
// Use direct reset time when available, server date becomes irrelevant in this case
|
||||||
|
if (resetAfter) {
|
||||||
|
return Date.now() + Number(resetAfter) * 1000;
|
||||||
|
}
|
||||||
return new Date(Number(reset) * 1000).getTime() - getAPIOffset(serverDate);
|
return new Date(Number(reset) * 1000).getTime() - getAPIOffset(serverDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,12 +156,14 @@ class RequestHandler {
|
|||||||
const limit = res.headers.get('x-ratelimit-limit');
|
const limit = res.headers.get('x-ratelimit-limit');
|
||||||
const remaining = res.headers.get('x-ratelimit-remaining');
|
const remaining = res.headers.get('x-ratelimit-remaining');
|
||||||
const reset = res.headers.get('x-ratelimit-reset');
|
const reset = res.headers.get('x-ratelimit-reset');
|
||||||
|
const resetAfter = res.headers.get('x-ratelimit-reset-after');
|
||||||
this.limit = limit ? Number(limit) : Infinity;
|
this.limit = limit ? Number(limit) : Infinity;
|
||||||
this.remaining = remaining ? Number(remaining) : 1;
|
this.remaining = remaining ? Number(remaining) : 1;
|
||||||
this.reset = reset ? calculateReset(reset, serverDate) : Date.now();
|
|
||||||
|
this.reset = reset || resetAfter ? calculateReset(reset, resetAfter, serverDate) : Date.now();
|
||||||
|
|
||||||
// https://github.com/discordapp/discord-api-docs/issues/182
|
// https://github.com/discordapp/discord-api-docs/issues/182
|
||||||
if (request.route.includes('reactions')) {
|
if (!resetAfter && request.route.includes('reactions')) {
|
||||||
this.reset = new Date(serverDate).getTime() - getAPIOffset(serverDate) + 250;
|
this.reset = new Date(serverDate).getTime() - getAPIOffset(serverDate) + 250;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user