diff --git a/src/rest/RESTManager.js b/src/rest/RESTManager.js index 586125a54..cf6227a8a 100644 --- a/src/rest/RESTManager.js +++ b/src/rest/RESTManager.js @@ -12,7 +12,6 @@ class RESTManager { this.globallyRateLimited = false; this.tokenPrefix = tokenPrefix; this.versioned = true; - this.timeDifferences = []; if (client.options.restSweepInterval > 0) { client.setInterval(() => { this.handlers.sweep(handler => handler._inactive); @@ -24,15 +23,6 @@ class RESTManager { return routeBuilder(this); } - get timeDifference() { - return Math.round(this.timeDifferences.reduce((a, b) => a + b, 0) / this.timeDifferences.length); - } - - set timeDifference(ms) { - this.timeDifferences.unshift(ms); - if (this.timeDifferences.length > 5) this.timeDifferences.length = 5; - } - getAuth() { const token = this.client.token || this.client.accessToken; const prefixed = !!this.client.application || (this.client.user && this.client.user.bot); diff --git a/src/rest/handlers/RequestHandler.js b/src/rest/handlers/RequestHandler.js index 2c5655814..03e5e8fca 100644 --- a/src/rest/handlers/RequestHandler.js +++ b/src/rest/handlers/RequestHandler.js @@ -29,7 +29,7 @@ class RequestHandler { } get _inactive() { - return this.queue.length === 0 && !this.limited && Date.now() > this.resetTime && this.busy !== true; + return this.queue.length === 0 && !this.limited && this.busy !== true; } /* eslint-disable prefer-promise-reject-errors */ @@ -78,8 +78,12 @@ class RequestHandler { if (res && res.headers) { if (res.headers.get('x-ratelimit-global')) this.manager.globallyRateLimited = true; this.limit = Number(res.headers.get('x-ratelimit-limit') || Infinity); - this.resetTime = Number(res.headers.get('x-ratelimit-reset') || 0); - this.remaining = Number(res.headers.get('x-ratelimit-remaining') || 1); + const reset = res.headers.get('x-ratelimit-reset'); + this.resetTime = reset !== null ? + (Number(reset) * 1e3) - new Date(res.headers.get('date') || Date.now()).getTime() + Date.now() : + Date.now(); + const remaining = res.headers.get('x-ratelimit-remaining'); + this.remaining = remaining !== null ? Number(remaining) : 1; } if (res.ok) {