mirror of
https://github.com/danbulant/discord.js
synced 2026-05-27 05:52:05 +00:00
Added full user tracking
This commit is contained in:
parent
0da7945278
commit
f2e3be0bad
5 changed files with 60 additions and 0 deletions
|
|
@ -481,6 +481,30 @@ var Client = (function () {
|
||||||
|
|
||||||
break;
|
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:
|
default:
|
||||||
self.debug("received unknown packet");
|
self.debug("received unknown packet");
|
||||||
self.trigger("unknown", dat);
|
self.trigger("unknown", dat);
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,11 @@ var User = (function () {
|
||||||
value: function equals(object) {
|
value: function equals(object) {
|
||||||
return object.id === this.id;
|
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",
|
key: "avatarURL",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
|
|
|
||||||
|
|
@ -394,6 +394,30 @@ class Client {
|
||||||
|
|
||||||
break;
|
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:
|
default:
|
||||||
self.debug("received unknown packet");
|
self.debug("received unknown packet");
|
||||||
self.trigger("unknown", dat);
|
self.trigger("unknown", dat);
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,10 @@ class User{
|
||||||
equals(object){
|
equals(object){
|
||||||
return object.id === this.id;
|
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;
|
module.exports = User;
|
||||||
|
|
@ -32,3 +32,6 @@ mybot.on("serverNewMember", function(user){
|
||||||
mybot.on("serverRemoveMember", function(user){
|
mybot.on("serverRemoveMember", function(user){
|
||||||
console.log("left user", user.username);
|
console.log("left user", user.username);
|
||||||
});
|
});
|
||||||
|
mybot.on("userUpdate", function(oldUser, newUser){
|
||||||
|
console.log(oldUser, "vs", newUser);
|
||||||
|
});
|
||||||
Loading…
Reference in a new issue