Rewrite WebSocket internals (#1410)

* Start rewriting Manager and Connection

* more stuff

* stuff

* Fix ready bug

* some stuff i forgot

* fix some stuff

* add stupid heartbeat ack like seriously who cares

* woo!

* fix a bug

* rate limit the dumb websocket

* stuff

* hdocs

* Docs

* Remove ClientManager#setupKeepAlive as it is now redundant

* Change Client._pingTimestamp to a getter that fetches the timestamp from the WebSocketConnection

* are you happy now eslint smh

* make gus happy

* Add CloseEvent external doc

* Make sure to emit 'reconnecting' when actually reconnecting

* ffs

* Fix RESUME logic

* Add heartbeat ack debug messages, including latency data

* Dumb stuff for Gus

* thx eslint

* more dumb stuff

* more dumb crap smh gus i h8 u

* moar messages

* fix for using wrong status, causing certain events not to be fired (#1422)
This commit is contained in:
Amish Shah
2017-04-28 16:13:06 +01:00
committed by GitHub
parent 95bcac9d9b
commit 195fcfa15c
13 changed files with 541 additions and 432 deletions

View File

@@ -4,20 +4,25 @@ const Discord = require('../');
const request = require('superagent');
const fs = require('fs');
const client = new Discord.Client({ fetchAllMembers: false, apiRequestMethod: 'sequential' });
console.time('magic');
const client = new Discord.Client({ fetchAllMembers: true, apiRequestMethod: 'sequential' });
const { email, password, token, usertoken, song } = require('./auth.json');
client.login(token).then(atoken => console.log('logged in with token ' + atoken)).catch(console.error);
client.on('ready', () => {
console.log('ready');
console.log(`ready with ${client.users.size} users`);
console.timeEnd('magic');
});
client.on('userUpdate', (o, n) => {
console.log(o.username, n.username);
});
client.on('debug', console.log);
client.on('emojiCreate', e => console.log('create!!', e.name));
client.on('emojiDelete', e => console.log('delete!!', e.name));
client.on('emojiUpdate', (o, n) => console.log('update!!', o.name, n.name));
@@ -43,7 +48,7 @@ client.on('message', message => {
let count = 0;
let ecount = 0;
for(let x = 0; x < 4000; x++) {
message.channel.sendMessage(`this is message ${x} of 3999`)
message.channel.send(`this is message ${x} of 3999`)
.then(m => {
count++;
console.log('reached', count, ecount);
@@ -57,7 +62,7 @@ client.on('message', message => {
}
if (message.content === 'myperms?') {
message.channel.sendMessage('Your permissions are:\n' +
message.channel.send('Your permissions are:\n' +
JSON.stringify(message.channel.permissionsFor(message.author).serialize(), null, 4));
}
@@ -78,7 +83,7 @@ client.on('message', message => {
.get('url')
.end((err, res) => {
client.user.setAvatar(res.body).catch(console.error)
.then(user => message.channel.sendMessage('Done!'));
.then(user => message.channel.send('Done!'));
});
}
@@ -99,11 +104,11 @@ client.on('message', message => {
m += `I am aware of ${client.channels.size} channels overall\n`;
m += `I am aware of ${client.guilds.size} guilds overall\n`;
m += `I am aware of ${client.users.size} users overall\n`;
message.channel.sendMessage(m).then(msg => msg.edit('nah')).catch(console.error);
message.channel.send(m).then(msg => msg.edit('nah')).catch(console.error);
}
if (message.content === 'messageme!') {
message.author.sendMessage('oh, hi there!').catch(e => console.log(e.stack));
message.author.send('oh, hi there!').catch(e => console.log(e.stack));
}
if (message.content === 'don\'t dm me') {
@@ -113,7 +118,7 @@ client.on('message', message => {
if (message.content.startsWith('kick')) {
message.guild.member(message.mentions[0]).kick().then(member => {
console.log(member);
message.channel.sendMessage('Kicked!' + member.user.username);
message.channel.send('Kicked!' + member.user.username);
}).catch(console.error);
}
@@ -121,10 +126,10 @@ client.on('message', message => {
let i = 1;
const start = Date.now();
while (i <= 20) {
message.channel.sendMessage(`Testing my rates, item ${i} of 20`);
message.channel.send(`Testing my rates, item ${i} of 20`);
i++;
}
message.channel.sendMessage('last one...').then(m => {
message.channel.send('last one...').then(m => {
const diff = Date.now() - start;
m.reply(`Each message took ${diff / 21}ms to send`);
});
@@ -132,7 +137,7 @@ client.on('message', message => {
if (message.content === 'makerole') {
message.guild.createRole().then(role => {
message.channel.sendMessage(`Made role ${role.name}`);
message.channel.send(`Made role ${role.name}`);
}).catch(console.error);
}
}
@@ -148,15 +153,15 @@ function chanLoop(channel) {
client.on('message', msg => {
if (msg.content.startsWith('?raw')) {
msg.channel.sendMessage('```' + msg.content + '```');
msg.channel.send('```' + msg.content + '```');
}
if (msg.content.startsWith('#eval') && msg.author.id === '66564597481480192') {
try {
const com = eval(msg.content.split(" ").slice(1).join(" "));
msg.channel.sendMessage('```\n' + com + '```');
msg.channel.send('```\n' + com + '```');
} catch(e) {
msg.channel.sendMessage('```\n' + e + '```');
msg.channel.send('```\n' + e + '```');
}
}
});
@@ -191,12 +196,12 @@ client.on('message', msg => {
client.on('messageReactionAdd', (reaction, user) => {
if (reaction.message.channel.id !== '222086648706498562') return;
reaction.message.channel.sendMessage(`${user.username} added reaction ${reaction.emoji}, count is now ${reaction.count}`);
reaction.message.channel.send(`${user.username} added reaction ${reaction.emoji}, count is now ${reaction.count}`);
});
client.on('messageReactionRemove', (reaction, user) => {
if (reaction.message.channel.id !== '222086648706498562') return;
reaction.message.channel.sendMessage(`${user.username} removed reaction ${reaction.emoji}, count is now ${reaction.count}`);
reaction.message.channel.send(`${user.username} removed reaction ${reaction.emoji}, count is now ${reaction.count}`);
});
client.on('message', m => {
@@ -205,7 +210,7 @@ client.on('message', m => {
m.channel.fetchMessage(mID).then(rM => {
for (const reaction of rM.reactions.values()) {
reaction.fetchUsers().then(users => {
m.channel.sendMessage(
m.channel.send(
`The following gave that message ${reaction.emoji}:\n` +
`${users.map(u => u.username).map(t => `- ${t}`).join('\n')}`
);