mirror of
https://github.com/danbulant/discord.js
synced 2026-05-24 12:35:53 +00:00
Fix READY bug when logging in with email/password, add UserUpdate packet handler
This commit is contained in:
parent
abc3f9e2fa
commit
685d7b622c
5 changed files with 50 additions and 3 deletions
|
|
@ -8,6 +8,8 @@ const BeforeReadyWhitelist = [
|
|||
Constants.WSEvents.GUILD_DELETE,
|
||||
];
|
||||
|
||||
var amount = 0;
|
||||
|
||||
class WebSocketPacketManager {
|
||||
|
||||
constructor(websocketManager) {
|
||||
|
|
@ -31,6 +33,7 @@ class WebSocketPacketManager {
|
|||
this.register(Constants.WSEvents.CHANNEL_DELETE, 'ChannelDelete');
|
||||
this.register(Constants.WSEvents.CHANNEL_UPDATE, 'ChannelUpdate');
|
||||
this.register(Constants.WSEvents.PRESENCE_UPDATE, 'PresenceUpdate');
|
||||
this.register(Constants.WSEvents.USER_UPDATE, 'UserUpdate');
|
||||
}
|
||||
|
||||
get client() {
|
||||
|
|
@ -50,7 +53,7 @@ class WebSocketPacketManager {
|
|||
}
|
||||
|
||||
handle(packet) {
|
||||
|
||||
amount++;
|
||||
if (!this.ws.emittedReady) {
|
||||
if (BeforeReadyWhitelist.indexOf(packet.t) === -1) {
|
||||
this.queue.push(packet);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ class ReadyHandler extends AbstractHandler {
|
|||
handle(packet) {
|
||||
let data = packet.d;
|
||||
let client = this.packetManager.client;
|
||||
|
||||
client.manager.setupKeepAlive(data.heartbeat_interval);
|
||||
|
||||
client.store.user = client.store.add('users', new ClientUser(client, data.user));
|
||||
|
|
@ -29,6 +28,8 @@ class ReadyHandler extends AbstractHandler {
|
|||
client.store.NewChannel(privateDM);
|
||||
}
|
||||
|
||||
this.packetManager.ws.checkIfReady();
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
|||
42
src/client/websocket/packets/handlers/UserUpdate.js
Normal file
42
src/client/websocket/packets/handlers/UserUpdate.js
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
'use strict';
|
||||
|
||||
const AbstractHandler = require('./AbstractHandler');
|
||||
const Structure = name => require(`../../../../structures/${name}`);
|
||||
const CloneObject = name => require(`../../../../util/CloneObject`);
|
||||
|
||||
const ClientUser = Structure('ClientUser');
|
||||
const Guild = Structure('Guild');
|
||||
const DMChannel = Structure('DMChannel');
|
||||
|
||||
class UserUpdateHandler extends AbstractHandler {
|
||||
|
||||
constructor(packetManager) {
|
||||
super(packetManager);
|
||||
}
|
||||
|
||||
handle(packet) {
|
||||
let data = packet.d;
|
||||
let client = this.packetManager.client;
|
||||
|
||||
let user = client.store.user;
|
||||
|
||||
if (!user) {
|
||||
return;
|
||||
}
|
||||
|
||||
let oldUser = CloneObject(user);
|
||||
|
||||
user.username = data.username || user.username;
|
||||
user.id = data.id || user.id;
|
||||
user.avatar = data.avatar || user.avatar;
|
||||
user.discriminator = data.discriminator || user.discriminator;
|
||||
user.email = data.email || user.email;
|
||||
user.verified = data.verified || user.verified;
|
||||
|
||||
client.emit(Constants.Events.USER_UPDATE, oldUser, user);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
module.exports = UserUpdateHandler;
|
||||
|
|
@ -92,6 +92,7 @@ const Events = exports.Events = {
|
|||
CHANNEL_DELETE: 'channelDelete',
|
||||
CHANNEL_UPDATE: 'channelUpdate',
|
||||
PRESENCE_UPDATE: 'presenceUpdate',
|
||||
USER_UPDATE: 'userUpdate',
|
||||
WARN: 'warn',
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -50,5 +50,5 @@ client.on('guildRoleUpdate', (guild, old, newRole) => {
|
|||
});
|
||||
|
||||
client.on('presenceUpdate', (oldUser, newUser) => {
|
||||
console.log('presence from', oldUser.username, 'to', newUser.username);
|
||||
// console.log('presence from', oldUser.username, 'to', newUser.username);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue