added serverMemberRemove listener

This commit is contained in:
hydrabolt
2015-11-01 15:49:07 +00:00
parent 2e62ced2ee
commit b7656f3877
6 changed files with 158 additions and 87 deletions

View File

@@ -675,6 +675,36 @@ var InternalClient = (function () {
client.emit("warn", "server role updated but server not in cache"); client.emit("warn", "server role updated but server not in cache");
} }
break; break;
case PacketType.SERVER_MEMBER_ADD:
var server = self.servers.get("id", data.guild_id);
if (server) {
server.memberMap[data.user.id] = {
roles: data.roles,
mute: false,
deaf: false,
joinedAt: Date.parse(data.joined_at)
};
client.emit("serverNewMember", server, server.members.add(self.users.add(new User(data.user, client))));
} else {
client.emit("warn", "server member added but server doesn't exist in cache");
}
break;
case PacketType.SERVER_MEMBER_REMOVE:
var server = self.servers.get("id", data.guild_id);
if (server) {
var user = self.users.get("id", data.user.id);
if (user) {
server.members.remove(user);
client.emit("serverMemberRemoved", server, user);
} else {
client.emit("warn", "server member removed but user doesn't exist in cache");
}
} else {
client.emit("warn", "server member removed but server doesn't exist in cache");
}
break;
} }
}; };
}; };

View File

@@ -111,7 +111,10 @@ var PacketType = {
CHANNEL_UPDATE: "CHANNEL_UPDATE", CHANNEL_UPDATE: "CHANNEL_UPDATE",
SERVER_ROLE_CREATE: "GUILD_ROLE_CREATE", SERVER_ROLE_CREATE: "GUILD_ROLE_CREATE",
SERVER_ROLE_DELETE: "GUILD_ROLE_DELETE", SERVER_ROLE_DELETE: "GUILD_ROLE_DELETE",
SERVER_ROLE_UPDATE: "GUILD_ROLE_UPDATE" SERVER_ROLE_UPDATE: "GUILD_ROLE_UPDATE",
SERVER_MEMBER_ADD: "GUILD_MEMBER_ADD",
SERVER_MEMBER_REMOVE: "GUILD_MEMBER_REMOVE",
SERVER_MEMBER_UPDATE: "GUILD_MEMBER_UPDATE"
}; };
exports.API_ENDPOINT = API; exports.API_ENDPOINT = API;

View File

@@ -18,7 +18,7 @@ a.on("message", function (m) {
a.reply(m, srv); a.reply(m, srv);
}); });
}); });
a.on("serverRoleUpdated", function (r, s) { a.on("serverMemberRemoved", function (r, s) {
console.log(r, s); console.log(r, s);
}); });

View File

@@ -41,22 +41,22 @@ class InternalClient {
this.resolver = new Resolver(this); this.resolver = new Resolver(this);
} }
// def createServer // def createServer
createServer(name, region="london") { createServer(name, region = "london") {
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
name = self.resolver.resolveString(name); name = self.resolver.resolveString(name);
request request
.post(Endpoints.SERVERS) .post(Endpoints.SERVERS)
.set("authorization", self.token) .set("authorization", self.token)
.send({name, region}) .send({ name, region })
.end((err, res)=>{ .end((err, res) => {
if(err){ if (err) {
reject(new Error(err.response.text)); reject(new Error(err.response.text));
}else{ } else {
// valid server, wait until it is cached // valid server, wait until it is cached
var inter = setInterval(() => { var inter = setInterval(() => {
if(self.servers.get("id", res.body.id)){ if (self.servers.get("id", res.body.id)) {
clearInterval(inter); clearInterval(inter);
resolve(self.servers.get("id", res.body.id)); resolve(self.servers.get("id", res.body.id));
} }
@@ -71,17 +71,17 @@ class InternalClient {
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
var server = self.resolver.resolveServer(srv); var server = self.resolver.resolveServer(srv);
if(server){ if (server) {
request request
.del(Endpoints.SERVER(server.id)) .del(Endpoints.SERVER(server.id))
.set("authorization", self.token) .set("authorization", self.token)
.end((err, res) => { .end((err, res) => {
if(err){ if (err) {
reject(new Error(err.response.text)); reject(new Error(err.response.text));
}else{ } else {
// remove channels of server then the server // remove channels of server then the server
for(var chan of server.channels){ for (var chan of server.channels) {
self.channels.remove(chan); self.channels.remove(chan);
} }
// remove server // remove server
@@ -89,8 +89,8 @@ class InternalClient {
resolve(); resolve();
} }
}); });
}else{ } else {
reject(new Error("server did not resolve")); reject(new Error("server did not resolve"));
} }
}); });
@@ -339,7 +339,7 @@ class InternalClient {
} }
// def sendFile // def sendFile
sendFile(where, _file, name="image.png"){ sendFile(where, _file, name = "image.png") {
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.resolver.resolveChannel(where) self.resolver.resolveChannel(where)
@@ -347,23 +347,23 @@ class InternalClient {
.catch(e => reject(new Error("couldn't resolve to channel - " + e))); .catch(e => reject(new Error("couldn't resolve to channel - " + e)));
function next(channel) { function next(channel) {
var file = self.resolver.resolveFile(_file); var file = self.resolver.resolveFile(_file);
request request
.post(Endpoints.CHANNEL_MESSAGES(channel.id)) .post(Endpoints.CHANNEL_MESSAGES(channel.id))
.set("authorization", self.token) .set("authorization", self.token)
.attach("file", file, name) .attach("file", file, name)
.end((err, res) => { .end((err, res) => {
if(err){ if (err) {
reject(new Error(err.response.text)); reject(new Error(err.response.text));
}else{ } else {
resolve(channel.messages.add(new Message(res.body, channel, self.client))); resolve(channel.messages.add(new Message(res.body, channel, self.client)));
} }
}); });
} }
}); });
} }
@@ -393,17 +393,17 @@ class InternalClient {
var joinedParams = params.join(); var joinedParams = params.join();
if (joinedParams !== "") if (joinedParams !== "")
joinedParams = "&" + params.join(); joinedParams = "&" + params.join();
request request
.get(`${Endpoints.CHANNEL_MESSAGES(channel.id)}?limit=${limit}${joinedParams}`) .get(`${Endpoints.CHANNEL_MESSAGES(channel.id) }?limit=${limit}${joinedParams}`)
.set("authorization", self.token) .set("authorization", self.token)
.end((err, res) => { .end((err, res) => {
if(err){ if (err) {
reject(new Error(err.response.text)); reject(new Error(err.response.text));
}else{ } else {
var logs = []; var logs = [];
res.body.forEach((msg) => { res.body.forEach((msg) => {
logs.push( channel.messages.add(new Message(msg, channel, self.client)) ); logs.push(channel.messages.add(new Message(msg, channel, self.client)));
}); });
resolve(logs); resolve(logs);
} }
@@ -507,7 +507,7 @@ class InternalClient {
// potentially blank // potentially blank
var msg = channel.messages.get("id", data.id); var msg = channel.messages.get("id", data.id);
client.emit("messageDeleted", msg); client.emit("messageDeleted", msg);
if(msg){ if (msg) {
channel.messages.remove(msg); channel.messages.remove(msg);
} }
} else { } else {
@@ -520,9 +520,9 @@ class InternalClient {
if (channel) { if (channel) {
// potentially blank // potentially blank
var msg = channel.messages.get("id", data.id); var msg = channel.messages.get("id", data.id);
if(msg){ if (msg) {
// old message exists // old message exists
data.nonce = data.nonce || msg.nonce; data.nonce = data.nonce || msg.nonce;
data.attachments = data.attachments || msg.attachments; data.attachments = data.attachments || msg.attachments;
@@ -542,29 +542,29 @@ class InternalClient {
break; break;
case PacketType.SERVER_CREATE: case PacketType.SERVER_CREATE:
var server = self.servers.get("id", data.id); var server = self.servers.get("id", data.id);
if(!server){ if (!server) {
self.servers.add(new Server(data, client)); self.servers.add(new Server(data, client));
client.emit("serverCreated", server); client.emit("serverCreated", server);
} }
break; break;
case PacketType.SERVER_DELETE: case PacketType.SERVER_DELETE:
var server = self.servers.get("id", data.id); var server = self.servers.get("id", data.id);
if(server){ if (server) {
for(var channel of server.channels){ for (var channel of server.channels) {
self.channels.remove(channel); self.channels.remove(channel);
} }
self.servers.remove(server); self.servers.remove(server);
client.emit("serverDeleted", server); client.emit("serverDeleted", server);
}else{ } else {
client.emit("warn", "server was deleted but it was not in the cache"); client.emit("warn", "server was deleted but it was not in the cache");
} }
break; break;
case PacketType.SERVER_UPDATE: case PacketType.SERVER_UPDATE:
var server = self.servers.get("id", data.id); var server = self.servers.get("id", data.id);
if(server){ if (server) {
// server exists // server exists
data.members = data.members || []; data.members = data.members || [];
data.channels = data.channels || []; data.channels = data.channels || [];
@@ -572,133 +572,168 @@ class InternalClient {
newserver.members = server.members; newserver.members = server.members;
newserver.memberMap = server.memberMap; newserver.memberMap = server.memberMap;
newserver.channels = server.channels; newserver.channels = server.channels;
if(newserver.equalsStrict(server)){ if (newserver.equalsStrict(server)) {
// already the same don't do anything // already the same don't do anything
client.emit("debug", "received server update but server already updated"); client.emit("debug", "received server update but server already updated");
}else{ } else {
self.servers.update(server, newserver); self.servers.update(server, newserver);
client.emit("serverUpdated", server, newserver); client.emit("serverUpdated", server, newserver);
} }
}else if(!server){ } else if (!server) {
client.emit("warn", "server was updated but it was not in the cache"); client.emit("warn", "server was updated but it was not in the cache");
self.servers.add( new Server(data, self) ); self.servers.add(new Server(data, self));
client.emit("serverCreated", server); client.emit("serverCreated", server);
} }
break; break;
case PacketType.CHANNEL_CREATE: case PacketType.CHANNEL_CREATE:
var channel = self.channels.get("id", data.id); var channel = self.channels.get("id", data.id);
if(!channel){ if (!channel) {
var server = self.servers.get("id", data.guild_id); var server = self.servers.get("id", data.guild_id);
if(server){ if (server) {
if(data.is_private){ if (data.is_private) {
client.emit("channelCreated", self.private_channels.add( new PMChannel(data, client) )); client.emit("channelCreated", self.private_channels.add(new PMChannel(data, client)));
}else{ } else {
var chan = null; var chan = null;
if(data.type === "text"){ if (data.type === "text") {
chan = self.channels.add(new TextChannel(data, client, server)); chan = self.channels.add(new TextChannel(data, client, server));
}else{ } else {
chan = self.channels.add(new VoiceChannel(data, client, server)); chan = self.channels.add(new VoiceChannel(data, client, server));
} }
client.emit("channelCreated", server.channels.add(chan)); client.emit("channelCreated", server.channels.add(chan));
} }
}else{ } else {
client.emit("warn", "channel created but server does not exist"); client.emit("warn", "channel created but server does not exist");
} }
}else{ } else {
client.emit("warn", "channel created but already in cache"); client.emit("warn", "channel created but already in cache");
} }
break; break;
case PacketType.CHANNEL_DELETE: case PacketType.CHANNEL_DELETE:
var channel = self.channels.get("id", data.id); var channel = self.channels.get("id", data.id);
if(channel){ if (channel) {
if(channel.server) // accounts for PMs if (channel.server) // accounts for PMs
channel.server.channels.remove(channel); channel.server.channels.remove(channel);
self.channels.remove(channel); self.channels.remove(channel);
client.emit("channelDeleted", channel); client.emit("channelDeleted", channel);
}else{ } else {
client.emit("warn", "channel deleted but already out of cache?"); client.emit("warn", "channel deleted but already out of cache?");
} }
break; break;
case PacketType.CHANNEL_UPDATE: case PacketType.CHANNEL_UPDATE:
var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id); var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id);
if(channel){ if (channel) {
if(channel instanceof PMChannel){ if (channel instanceof PMChannel) {
//PM CHANNEL //PM CHANNEL
client.emit("channelUpdated", self.private_channels.update( client.emit("channelUpdated", self.private_channels.update(
channel, channel,
new PMChannel(data, client) new PMChannel(data, client)
)); ));
}else{ } else {
if(channel.server){ if (channel.server) {
if(channel.type === "text"){ if (channel.type === "text") {
//TEXT CHANNEL //TEXT CHANNEL
var chan = new TextChannel(data, client, channel.server); var chan = new TextChannel(data, client, channel.server);
chan.messages = channel.messages; chan.messages = channel.messages;
channel.server.channels.update(channel, chan); channel.server.channels.update(channel, chan);
self.channels.update(channel, chan); self.channels.update(channel, chan);
client.emit("channelUpdated", channel, chan); client.emit("channelUpdated", channel, chan);
}else{ } else {
//VOICE CHANNEL //VOICE CHANNEL
var chan = new VoiceChannel(data, client, channel.server); var chan = new VoiceChannel(data, client, channel.server);
channel.server.channels.update(channel, chan); channel.server.channels.update(channel, chan);
self.channels.update(channel, chan); self.channels.update(channel, chan);
client.emit("channelUpdated", channel, chan); client.emit("channelUpdated", channel, chan);
} }
}else{ } else {
client.emit("warn", "channel updated but server non-existant"); client.emit("warn", "channel updated but server non-existant");
} }
} }
}else{ } else {
client.emit("warn", "channel updated but not in cache"); client.emit("warn", "channel updated but not in cache");
} }
break; break;
case PacketType.SERVER_ROLE_CREATE: case PacketType.SERVER_ROLE_CREATE:
var server = self.servers.get("id", data.guild_id); var server = self.servers.get("id", data.guild_id);
if(server){ if (server) {
client.emit("serverRoleCreated", server.roles.add(new Role(data.role, server, client)), server); client.emit("serverRoleCreated", server.roles.add(new Role(data.role, server, client)), server);
}else{ } else {
client.emit("warn", "server role made but server not in cache"); client.emit("warn", "server role made but server not in cache");
} }
break; break;
case PacketType.SERVER_ROLE_DELETE: case PacketType.SERVER_ROLE_DELETE:
var server = self.servers.get("id", data.guild_id); var server = self.servers.get("id", data.guild_id);
if(server){ if (server) {
var role = server.roles.get("id", data.role_id); var role = server.roles.get("id", data.role_id);
if(role){ if (role) {
server.roles.remove(role); server.roles.remove(role);
client.emit("serverRoleDeleted", role); client.emit("serverRoleDeleted", role);
}else{ } else {
client.emit("warn", "server role deleted but role not in cache"); client.emit("warn", "server role deleted but role not in cache");
} }
}else{ } else {
client.emit("warn", "server role deleted but server not in cache"); client.emit("warn", "server role deleted but server not in cache");
} }
break; break;
case PacketType.SERVER_ROLE_UPDATE: case PacketType.SERVER_ROLE_UPDATE:
var server = self.servers.get("id", data.guild_id); var server = self.servers.get("id", data.guild_id);
if(server){ if (server) {
var role = server.roles.get("id", data.role.id); var role = server.roles.get("id", data.role.id);
if(role){ if (role) {
var newRole = new Role(data.role, server, client); var newRole = new Role(data.role, server, client);
server.roles.update(role, newRole) server.roles.update(role, newRole)
client.emit("serverRoleUpdated", role, newRole); client.emit("serverRoleUpdated", role, newRole);
}else{ } else {
client.emit("warn", "server role updated but role not in cache"); client.emit("warn", "server role updated but role not in cache");
} }
}else{ } else {
client.emit("warn", "server role updated but server not in cache"); client.emit("warn", "server role updated but server not in cache");
} }
break; break;
case PacketType.SERVER_MEMBER_ADD:
var server = self.servers.get("id", data.guild_id);
if (server) {
server.memberMap[data.user.id] = {
roles: data.roles,
mute: false,
deaf: false,
joinedAt: Date.parse(data.joined_at)
};
client.emit(
"serverNewMember",
server,
server.members.add(self.users.add(new User(data.user, client)))
);
} else {
client.emit("warn", "server member added but server doesn't exist in cache");
}
break;
case PacketType.SERVER_MEMBER_REMOVE:
var server = self.servers.get("id", data.guild_id);
if(server){
var user = self.users.get("id", data.user.id);
if(user){
server.members.remove(user);
client.emit("serverMemberRemoved", server, user);
}else{
client.emit("warn", "server member removed but user doesn't exist in cache");
}
}else{
client.emit("warn", "server member removed but server doesn't exist in cache");
}
break;
} }
} }
} }

View File

@@ -73,7 +73,10 @@ var PacketType = {
CHANNEL_UPDATE : "CHANNEL_UPDATE", CHANNEL_UPDATE : "CHANNEL_UPDATE",
SERVER_ROLE_CREATE : "GUILD_ROLE_CREATE", SERVER_ROLE_CREATE : "GUILD_ROLE_CREATE",
SERVER_ROLE_DELETE : "GUILD_ROLE_DELETE", SERVER_ROLE_DELETE : "GUILD_ROLE_DELETE",
SERVER_ROLE_UPDATE : "GUILD_ROLE_UPDATE" SERVER_ROLE_UPDATE : "GUILD_ROLE_UPDATE",
SERVER_MEMBER_ADD : "GUILD_MEMBER_ADD",
SERVER_MEMBER_REMOVE : "GUILD_MEMBER_REMOVE",
SERVER_MEMBER_UPDATE : "GUILD_MEMBER_UPDATE"
} }
exports.API_ENDPOINT = API; exports.API_ENDPOINT = API;

View File

@@ -13,7 +13,7 @@ a.on("message", m => {
a.reply(m, srv); a.reply(m, srv);
}); });
}); });
a.on("serverRoleUpdated", (r, s) => { a.on("serverMemberRemoved", (r, s) => {
console.log(r, s); console.log(r, s);
}); });