Fix requests getting locked up in queues

This commit is contained in:
Amish Shah
2016-08-22 19:15:08 +01:00
parent 89569d9249
commit df456589ab
4 changed files with 19 additions and 19 deletions

File diff suppressed because one or more lines are too long

View File

@@ -39,7 +39,7 @@ class RESTManager {
if (!this.handlers[apiRequest.getEndpoint()]) { if (!this.handlers[apiRequest.getEndpoint()]) {
const RequestHandlerType = this.getRequestHandler(); const RequestHandlerType = this.getRequestHandler();
this.handlers[apiRequest.getEndpoint()] = new RequestHandlerType(this); this.handlers[apiRequest.getEndpoint()] = new RequestHandlerType(this, apiRequest.getEndpoint());
} }
return this.push(this.handlers[apiRequest.getEndpoint()], apiRequest); return this.push(this.handlers[apiRequest.getEndpoint()], apiRequest);

View File

@@ -9,8 +9,8 @@ const RequestHandler = require('./RequestHandler');
*/ */
class SequentialRequestHandler extends RequestHandler { class SequentialRequestHandler extends RequestHandler {
constructor(restManager) { constructor(restManager, endpoint) {
super(restManager); super(restManager, endpoint);
/** /**
* Whether this rate limiter is waiting for a response from a request * Whether this rate limiter is waiting for a response from a request
@@ -18,6 +18,12 @@ class SequentialRequestHandler extends RequestHandler {
*/ */
this.waiting = false; this.waiting = false;
/**
* The endpoint that this handler is handling
* @type {String}
*/
this.endpoint = endpoint;
/** /**
* The time difference between Discord's Dates and the local computer's Dates. A positive number means the local * The time difference between Discord's Dates and the local computer's Dates. A positive number means the local
* computer's time is ahead of Discord's. * computer's time is ahead of Discord's.
@@ -51,7 +57,7 @@ class SequentialRequestHandler extends RequestHandler {
this.waiting = false; this.waiting = false;
this.globalLimit = false; this.globalLimit = false;
resolve(); resolve();
}, res.headers['retry-after'] + 500); }, Number(res.headers['retry-after']) + 500);
if (res.headers['x-ratelimit-global']) { if (res.headers['x-ratelimit-global']) {
this.globalLimit = true; this.globalLimit = true;
} }

View File

@@ -177,19 +177,13 @@ client.on('messageUpdate', (old, message) => {
console.log('Message updated from', old.content, 'to', message.content); console.log('Message updated from', old.content, 'to', message.content);
}); });
client.on('message', message => { client.on('message', msg => {
if (message.content === '?perms?') { if (msg.content.startsWith('yoing')) {
console.log(message.author.username, 'asked for perms in', message.channel.name, ':'); let startTime = Date.now();
console.log(message.channel.permissionsFor(message.author).serialize()); msg.channel.sendMessage("Let's see if this works")
} else if (message.content === '???test???') { .then(message => {
message.channel.overwritePermissions('', { let endTime = Date.now();
SEND_MESSAGES: false, message.edit(`Ping took ${(endTime - startTime).toFixed(3)} ms. I think.`).catch(console.error);
}) }).catch(console.error);
.then(() => {
message.channel.overwritePermissions('', {
SEND_MESSAGES: true,
});
})
.catch(console.log);
} }
}); });