Added full user tracking

This commit is contained in:
hydrabolt
2015-08-24 23:05:13 +01:00
parent 0da7945278
commit f2e3be0bad
5 changed files with 60 additions and 0 deletions

View File

@@ -481,6 +481,30 @@ var Client = (function () {
break;
case "PRESENCE_UPDATE":
var userInCache = self.getUser("id", data.user.id);
if (userInCache) {
//user exists
var presenceUser = new User(data.user);
if (presenceUser.equalsStrict(userInCache)) {
//they're exactly the same, an actual presence update
self.trigger("presence", {
user: userInCache,
status: data.status,
server: self.getServer("id", data.guild_id),
gameId: data.game_id
});
} else {
//one of their details changed.
self.trigger("userUpdate", userInCache, presenceUser);
self.userCache[self.userCache.indexOf(userInCache)] = presenceUser;
}
}
break;
default:
self.debug("received unknown packet");
self.trigger("unknown", dat);

View File

@@ -37,6 +37,11 @@ var User = (function () {
value: function equals(object) {
return object.id === this.id;
}
}, {
key: "equalsStrict",
value: function equalsStrict(object) {
return object.id === this.id && object.avatar === this.avatar && object.username === this.username && object.discriminator === this.discriminator;
}
}, {
key: "avatarURL",
get: function get() {

View File

@@ -393,6 +393,30 @@ class Client {
}
break;
case "PRESENCE_UPDATE":
var userInCache = self.getUser("id", data.user.id);
if(userInCache){
//user exists
var presenceUser = new User(data.user);
if(presenceUser.equalsStrict(userInCache)){
//they're exactly the same, an actual presence update
self.trigger("presence", {
user : userInCache,
status : data.status,
server : self.getServer("id", data.guild_id),
gameId : data.game_id
});
}else{
//one of their details changed.
self.trigger("userUpdate", userInCache, presenceUser);
self.userCache[self.userCache.indexOf(userInCache)] = presenceUser;
}
}
break;
default:
self.debug("received unknown packet");

View File

@@ -30,6 +30,10 @@ class User{
equals(object){
return object.id === this.id;
}
equalsStrict(object){
return object.id === this.id && object.avatar === this.avatar && object.username === this.username && object.discriminator === this.discriminator;
}
}
module.exports = User;

View File

@@ -31,4 +31,7 @@ mybot.on("serverNewMember", function(user){
});
mybot.on("serverRemoveMember", function(user){
console.log("left user", user.username);
});
mybot.on("userUpdate", function(oldUser, newUser){
console.log(oldUser, "vs", newUser);
});