From 1100e20f78dd2662c2c56e82af9dcdb941c2685b Mon Sep 17 00:00:00 2001 From: plane000 Date: Mon, 29 Oct 2018 15:44:30 +0000 Subject: [PATCH] Fixed broken ratelimit middleware --- src/ratelimits.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ratelimits.js b/src/ratelimits.js index 505e10b..5eec4d1 100644 --- a/src/ratelimits.js +++ b/src/ratelimits.js @@ -1,22 +1,23 @@ import {Logger} from './logger'; let buckets = { }; +let requestsPerSecond = 0.2; export class RateLimits { constructor() { Logger.info('Initialized ratelimiting middleware'); - this.requestsPerSecond = 1; - setInterval(this.tick, 1000 / this.requestsPerSecond); + setInterval(this.tick, 1000 / requestsPerSecond); } async request(obj, client, next) { let id = obj.author.id; + if (id == client.user.id) { return; } if (!buckets[id]) { Logger.debug(`New rate limiting bucket`); buckets[id] = {id: id, tokens: [], lastUsed: new Date().getTime()}; - for (let i = 0; i < this.requestsPerSecond; i++) { + for (let i = 0; i < requestsPerSecond; i++) { buckets[id].tokens.push(1); } @@ -25,25 +26,24 @@ export class RateLimits { } buckets[id].lastUsed = new Date().getTime(); - + + Logger.debug(buckets[id].tokens.length); if (buckets[id].tokens.length <= 0) { Logger.middleware(`${id} is being rate limited`); obj.limiting = true; next(); return; } - + buckets[id].tokens.pop(); next(); } tick() { for (let bucket in buckets) { - // if (buckets[bucket].lastUsed += disposeTime >= new Date().getTime()) { - // delete buckets[bucket]; // remove element here, don't redefine - // continue; - // } - if (buckets[bucket].tokens.length > this.requestsPerSecond) continue; + if (buckets[bucket].tokens.length > requestsPerSecond) { + continue; + } buckets[bucket].tokens.push(1); } }