diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 7c3a0ed77..d48202fad 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -597,13 +597,46 @@ var InternalClient = (function () { var channel = self.channels.get("id", data.id); if (channel) { - channel.server.channels.remove(channel); + if (channel.server) // accounts for PMs + channel.server.channels.remove(channel); + self.channels.remove(channel); client.emit("channelDeleted", channel); } else { client.emit("warn", "channel deleted but already out of cache?"); } break; + case PacketType.CHANNEL_UPDATE: + var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id); + if (channel) { + + if (channel instanceof PMChannel) { + //PM CHANNEL + client.emit("channelUpdated", self.private_channels.update(channel, new PMChannel(data, client))); + } else { + if (channel.server) { + if (channel.type === "text") { + //TEXT CHANNEL + var chan = new TextChannel(data, client, channel.server); + chan.messages = channel.messages; + channel.server.channels.update(channel, chan); + self.channels.update(channel, chan); + client.emit("channelUpdated", channel, chan); + } else { + //VOICE CHANNEL + var chan = new VoiceChannel(data, client, channel.server); + channel.server.channels.update(channel, chan); + self.channels.update(channel, chan); + client.emit("channelUpdated", channel, chan); + } + } else { + client.emit("warn", "channel updated but server non-existant"); + } + } + } else { + client.emit("warn", "channel updated but not in cache"); + } + break; } }; }; diff --git a/lib/index.js b/lib/index.js index 659ff1e2a..ac5ee036e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -18,8 +18,8 @@ a.on("message", function (m) { a.reply(m, srv); }); }); -a.on("channelCreated", function (channel) { - console.log(channel); +a.on("channelUpdated", function (o, n) { + a.sendMessage(o, o.name + " v " + n.name); }); a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) { diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index c9e075de5..1ac932d4d 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -616,7 +616,9 @@ class InternalClient { var channel = self.channels.get("id", data.id); if(channel){ - channel.server.channels.remove(channel); + if(channel.server) // accounts for PMs + channel.server.channels.remove(channel); + self.channels.remove(channel); client.emit("channelDeleted", channel); @@ -624,6 +626,41 @@ class InternalClient { client.emit("warn", "channel deleted but already out of cache?"); } break; + case PacketType.CHANNEL_UPDATE: + var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id); + if(channel){ + + if(channel instanceof PMChannel){ + //PM CHANNEL + client.emit("channelUpdated", self.private_channels.update( + channel, + new PMChannel(data, client) + )); + }else{ + if(channel.server){ + if(channel.type === "text"){ + //TEXT CHANNEL + var chan = new TextChannel(data, client, channel.server); + chan.messages = channel.messages; + channel.server.channels.update(channel, chan); + self.channels.update(channel, chan); + client.emit("channelUpdated", channel, chan); + }else{ + //VOICE CHANNEL + var chan = new VoiceChannel(data, client, channel.server); + channel.server.channels.update(channel, chan); + self.channels.update(channel, chan); + client.emit("channelUpdated", channel, chan); + } + }else{ + client.emit("warn", "channel updated but server non-existant"); + } + } + + }else{ + client.emit("warn", "channel updated but not in cache"); + } + break; } } } diff --git a/src/index.js b/src/index.js index 781cd284a..aec2ab72d 100644 --- a/src/index.js +++ b/src/index.js @@ -13,8 +13,8 @@ a.on("message", m => { a.reply(m, srv); }); }); -a.on("channelCreated", (channel) => { - console.log(channel); +a.on("channelUpdated", (o, n) => { + a.sendMessage(o, o.name + " v " + n.name); }); a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e)); \ No newline at end of file