Fix presences probably ¯\_(ツ)_/¯

This commit is contained in:
Amish Shah
2016-10-01 15:27:49 +01:00
parent ab15c45d96
commit 7c26603773
5 changed files with 31 additions and 12 deletions

View File

@@ -18,6 +18,12 @@ class PresenceUpdateHandler extends AbstractHandler {
}
}
const oldUser = cloneObject(user);
user.patch(data.user);
if (!user.equals(oldUser)) {
client.emit(Constants.Events.USER_DETAILS_UPDATE, oldUser, user);
}
if (guild) {
let member = guild.members.get(user.id);
if (!member && data.status !== 'offline') {
@@ -29,20 +35,32 @@ class PresenceUpdateHandler extends AbstractHandler {
}, false);
client.emit(Constants.Events.GUILD_MEMBER_AVAILABLE, guild, member);
}
guild._setPresence(user.id, data);
if (member) {
const oldMember = cloneObject(member);
if (member.presence) {
oldMember.frozenPresence = cloneObject(member.presence);
}
guild._setPresence(user.id, data);
client.emit(Constants.Events.PRESENCE_UPDATE, oldMember, member);
} else {
guild._setPresence(user.id, data);
}
}
const oldUser = cloneObject(user);
user.patch(data.user);
client.emit(Constants.Events.PRESENCE_UPDATE, oldUser, user);
}
}
/**
* Emitted whenever a user changes one of their details or starts/stop playing a game
* Emitted whenever a guild member's presence changes, or they change one of their details.
* @event Client#presenceUpdate
* @param {User} oldUser The user before the presence update
* @param {User} newUser The user after the presence update
* @param {GuildMember} oldMember The member before the presence update
* @param {GuildMember} newMember The member after the presence update
*/
/**
* Emitted whenever a user's details (e.g. username) are changed.
* @event Client#userUpdate
* @param {User} oldUser The user before the update
* @param {User} newUser The user after the update
*/
/**

View File

@@ -107,7 +107,7 @@ class GuildMember {
* @readonly
*/
get presence() {
return this.guild.presences.get(this.id);
return this.frozenPresence || this.guild.presences.get(this.id);
}
/**

View File

@@ -3,6 +3,7 @@
*/
class Presence {
constructor(data) {
if (!data) return;
/**
* The status of the presence:
*

View File

@@ -173,6 +173,7 @@ exports.Events = {
MESSAGE_BULK_DELETE: 'messageDeleteBulk',
USER_UPDATE: 'userUpdate',
PRESENCE_UPDATE: 'presenceUpdate',
USER_DETAILS_UPDATE: 'userUpdate',
VOICE_STATE_UPDATE: 'voiceStateUpdate',
TYPING_START: 'typingStart',
TYPING_STOP: 'typingStop',

View File

@@ -16,9 +16,8 @@ client.on('ready', () => {
console.log('ready!');
});
client.on('presenceUpdate', (o, n) => {
if (o.username.startsWith('hydr'))
console.log(o.username, o.presence.status, n.presence.status);
client.on('userUpdate', (o, n) => {
console.log(o.username, n.username);
});
client.on('channelCreate', channel => {