From c173dcd2fe09c628e0f15d094a834eb2b2073112 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 1 Nov 2015 14:39:59 +0000 Subject: [PATCH] added channelCreate listener --- lib/Client/InternalClient.js | 27 +++++++++++++++++++++++++++ lib/Constants.js | 5 ++++- lib/index.js | 4 ++-- src/Client/InternalClient.js | 28 ++++++++++++++++++++++++++++ src/Constants.js | 3 +++ src/index.js | 4 ++-- 6 files changed, 66 insertions(+), 5 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 2948043b7..0468a7de2 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -565,6 +565,33 @@ var InternalClient = (function () { self.servers.add(new Server(data, self)); client.emit("serverCreated", server); } + break; + case PacketType.CHANNEL_CREATE: + + var channel = self.channels.get("id", data.id); + + if (!channel) { + + var server = self.servers.get("id", data.guild_id); + if (server) { + if (data.is_private) { + client.emit("channelCreated", self.private_channels.add(new PMChannel(data, client))); + } else { + var chan = null; + if (data.type === "text") { + chan = self.channels.add(new TextChannel(data, client, server)); + } else { + chan = self.channels.add(new VoiceChannel(data, client, server)); + } + client.emit("channelCreated", server.channels.add(chan)); + } + } else { + client.emit("warn", "channel created but server does not exist"); + } + } else { + client.emit("warn", "channel created but already in cache"); + } + break; } }; diff --git a/lib/Constants.js b/lib/Constants.js index 55e464a25..36d24436d 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -105,7 +105,10 @@ var PacketType = { MESSAGE_DELETE: "MESSAGE_DELETE", SERVER_CREATE: "GUILD_CREATE", SERVER_DELETE: "GUILD_DELETE", - SERVER_UPDATE: "GUILD_UPDATE" + SERVER_UPDATE: "GUILD_UPDATE", + CHANNEL_CREATE: "CHANNEL_CREATE", + CHANNEL_DELETE: "CHANNEL_DELETE", + CHANNEL_UPDATE: "CHANNEL_UPDATE" }; exports.API_ENDPOINT = API; diff --git a/lib/index.js b/lib/index.js index 060a58b62..659ff1e2a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -18,8 +18,8 @@ a.on("message", function (m) { a.reply(m, srv); }); }); -a.on("serverUpdated", function (oldsrv, newsrv) { - console.log(oldsrv.name, "v", newsrv.name); +a.on("channelCreated", function (channel) { + console.log(channel); }); a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) { diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 73a6f9d89..2ecb2c58f 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -583,6 +583,34 @@ class InternalClient { self.servers.add( new Server(data, self) ); client.emit("serverCreated", server); } + break; + case PacketType.CHANNEL_CREATE: + + var channel = self.channels.get("id", data.id); + + if(!channel){ + + var server = self.servers.get("id", data.guild_id); + if(server){ + if(data.is_private){ + client.emit("channelCreated", self.private_channels.add( new PMChannel(data, client) )); + }else{ + var chan = null; + if(data.type === "text"){ + chan = self.channels.add(new TextChannel(data, client, server)); + }else{ + chan = self.channels.add(new VoiceChannel(data, client, server)); + } + client.emit("channelCreated", server.channels.add(chan)); + } + }else{ + client.emit("warn", "channel created but server does not exist"); + } + + }else{ + client.emit("warn", "channel created but already in cache"); + } + break; } } diff --git a/src/Constants.js b/src/Constants.js index e7e4b8d20..8f6bb02dc 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -68,6 +68,9 @@ var PacketType = { SERVER_CREATE : "GUILD_CREATE", SERVER_DELETE : "GUILD_DELETE", SERVER_UPDATE : "GUILD_UPDATE", + CHANNEL_CREATE : "CHANNEL_CREATE", + CHANNEL_DELETE : "CHANNEL_DELETE", + CHANNEL_UPDATE : "CHANNEL_UPDATE", } exports.API_ENDPOINT = API; diff --git a/src/index.js b/src/index.js index 69bd0e2c8..781cd284a 100644 --- a/src/index.js +++ b/src/index.js @@ -13,8 +13,8 @@ a.on("message", m => { a.reply(m, srv); }); }); -a.on("serverUpdated", (oldsrv, newsrv) => { - console.log(oldsrv.name, "v", newsrv.name); +a.on("channelCreated", (channel) => { + console.log(channel); }); a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e)); \ No newline at end of file