mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-12 01:23:31 +01:00
Added presence updates, typing and ban adds
This commit is contained in:
@@ -385,7 +385,7 @@ var InternalClient = (function () {
|
||||
};
|
||||
|
||||
InternalClient.prototype.sendWS = function sendWS(object) {
|
||||
this.websocket.send(JSON.stringify(object));
|
||||
if (this.websocket) this.websocket.send(JSON.stringify(object));
|
||||
};
|
||||
|
||||
InternalClient.prototype.createWS = function createWS(url) {
|
||||
@@ -726,6 +726,77 @@ var InternalClient = (function () {
|
||||
client.emit("warn", "server member updated but server doesn't exist in cache");
|
||||
}
|
||||
break;
|
||||
case PacketType.PRESENCE_UPDATE:
|
||||
|
||||
var user = self.users.get("id", data.user.id);
|
||||
|
||||
if (user) {
|
||||
|
||||
data.user.username = data.user.username || user.username;
|
||||
data.user.id = data.user.id || user.id;
|
||||
data.user.avatar = data.user.avatar || user.avatar;
|
||||
data.user.discriminator = data.user.discriminator || user.discriminator;
|
||||
|
||||
var presenceUser = new User(data.user, client);
|
||||
|
||||
if (presenceUser.equalsStrict(user)) {
|
||||
// a real presence update
|
||||
client.emit("presence", user, data.status, data.game_id);
|
||||
user.status = data.status;
|
||||
user.gameID = data.game_id;
|
||||
} else {
|
||||
// a name change or avatar change
|
||||
client.emit("userUpdate", user, presenceUser);
|
||||
self.users.update(user, presenceUser);
|
||||
}
|
||||
} else {
|
||||
client.emit("warn", "presence update but user not in cache");
|
||||
}
|
||||
|
||||
break;
|
||||
case PacketType.TYPING:
|
||||
|
||||
var user = self.users.get("id", data.user_id);
|
||||
var channel = self.channels.get("id", data.channel_id);
|
||||
|
||||
if (user && channel) {
|
||||
|
||||
user.typing.since = Date.now();
|
||||
user.typing.channel = channel;
|
||||
client.emit("userTypingStart", user, channel);
|
||||
|
||||
setTimeout(function () {
|
||||
if (Date.now() - user.typing.since > 5990) {
|
||||
// they haven't typed since
|
||||
user.typing.since = null;
|
||||
user.typing.channel = null;
|
||||
client.emit("userTypingStop", user, channel);
|
||||
}
|
||||
}, 6000);
|
||||
} else {
|
||||
client.emit("warn", "user typing but user or channel not existant in cache");
|
||||
}
|
||||
break;
|
||||
case PacketType.SERVER_BAN_ADD:
|
||||
var user = self.users.get("id", data.user.id);
|
||||
var server = self.servers.get("id", data.guild_id);
|
||||
|
||||
if (user && server) {
|
||||
client.emit("userBanned", user, server);
|
||||
} else {
|
||||
client.emit("warn", "user banned but user/server not in cache.");
|
||||
}
|
||||
break;
|
||||
case PacketType.SERVER_BAN_REMOVE:
|
||||
var user = self.users.get("id", data.user.id);
|
||||
var server = self.servers.get("id", data.guild_id);
|
||||
|
||||
if (user && server) {
|
||||
client.emit("userUnbanned", user, server);
|
||||
} else {
|
||||
client.emit("warn", "user unbanned but user/server not in cache.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user