From 4d8cd20cf59fac48b0c0641831525b6506b6bb05 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 1 Nov 2015 15:12:33 +0000 Subject: [PATCH] ServerRoleCreate listener --- lib/Client/InternalClient.js | 11 ++++++++++- lib/Constants.js | 5 ++++- lib/Structures/Role.js | 13 ++----------- lib/Structures/Server.js | 2 +- lib/index.js | 4 ++-- src/Client/InternalClient.js | 11 ++++++++++- src/Constants.js | 3 +++ src/Structures/Role.js | 8 ++------ src/Structures/Server.js | 2 +- src/index.js | 4 ++-- 10 files changed, 37 insertions(+), 26 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index d48202fad..5e1cc011b 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -20,7 +20,8 @@ var User = require("../Structures/User.js"), VoiceChannel = require("../Structures/VoiceChannel.js"), PMChannel = require("../Structures/PMChannel.js"), Server = require("../Structures/Server.js"), - Message = require("../Structures/Message.js"); + Message = require("../Structures/Message.js"), + Role = require("../Structures/Role.js"); var zlib; @@ -637,6 +638,14 @@ var InternalClient = (function () { client.emit("warn", "channel updated but not in cache"); } break; + case PacketType.SERVER_ROLE_CREATE: + var server = self.servers.get("id", data.guild_id); + if (server) { + client.emit("serverRoleCreated", server.roles.add(new Role(data.role, server, client)), server); + } else { + client.emit("warn", "server role made but server not in cache"); + } + break; } }; }; diff --git a/lib/Constants.js b/lib/Constants.js index 36d24436d..1dfc54a29 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -108,7 +108,10 @@ var PacketType = { SERVER_UPDATE: "GUILD_UPDATE", CHANNEL_CREATE: "CHANNEL_CREATE", CHANNEL_DELETE: "CHANNEL_DELETE", - CHANNEL_UPDATE: "CHANNEL_UPDATE" + CHANNEL_UPDATE: "CHANNEL_UPDATE", + SERVER_ROLE_CREATE: "GUILD_ROLE_CREATE", + SERVER_ROLE_DELETE: "GUILD_ROLE_DELETE", + SERVER_ROLE_UPDATE: "GUILD_ROLE_UPDATE" }; exports.API_ENDPOINT = API; diff --git a/lib/Structures/Role.js b/lib/Structures/Role.js index 74b18516f..afa63c629 100644 --- a/lib/Structures/Role.js +++ b/lib/Structures/Role.js @@ -1,7 +1,5 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Permissions = require("../Constants.js").Permissions; @@ -23,7 +21,7 @@ var DefaultRole = [Permissions.createInstantInvite, Permissions.readMessages, Pe }, 0); var Role = (function () { - function Role(data, serverID, client) { + function Role(data, server, client) { _classCallCheck(this, Role); this.position = data.position || -1; @@ -33,7 +31,7 @@ var Role = (function () { this.id = data.id; this.hoist = data.hoist || false; this.color = data.color || 0; - this.serverID = serverID; + this.server = server; this.client = client; } @@ -135,13 +133,6 @@ var Role = (function () { return "#" + val; }; - _createClass(Role, [{ - key: "server", - get: function get() { - return this.client.internal.servers.get("id", this.serverID); - } - }]); - return Role; })(); diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index 89980ea5b..d740b2ff7 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -63,7 +63,7 @@ var Server = (function (_Equality) { }); data.roles.forEach(function (dataRole) { - _this.roles.add(new Role(dataRole, _this)); + _this.roles.add(new Role(dataRole, _this, client)); }); } diff --git a/lib/index.js b/lib/index.js index ac5ee036e..15b03e534 100644 --- a/lib/index.js +++ b/lib/index.js @@ -18,8 +18,8 @@ a.on("message", function (m) { a.reply(m, srv); }); }); -a.on("channelUpdated", function (o, n) { - a.sendMessage(o, o.name + " v " + n.name); +a.on("serverRoleCreated", function (r, s) { + console.log(r); }); a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) { diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 1ac932d4d..33ebac81b 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -18,7 +18,8 @@ var User = require("../Structures/User.js"), VoiceChannel = require("../Structures/VoiceChannel.js"), PMChannel = require("../Structures/PMChannel.js"), Server = require("../Structures/Server.js"), - Message = require("../Structures/Message.js"); + Message = require("../Structures/Message.js"), + Role = require("../Structures/Role.js"); var zlib; @@ -661,6 +662,14 @@ class InternalClient { client.emit("warn", "channel updated but not in cache"); } break; + case PacketType.SERVER_ROLE_CREATE: + var server = self.servers.get("id", data.guild_id); + if(server){ + client.emit("serverRoleCreated", server.roles.add(new Role(data.role, server, client)), server); + }else{ + client.emit("warn", "server role made but server not in cache"); + } + break; } } } diff --git a/src/Constants.js b/src/Constants.js index 8f6bb02dc..52e52ede4 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -71,6 +71,9 @@ var PacketType = { CHANNEL_CREATE : "CHANNEL_CREATE", CHANNEL_DELETE : "CHANNEL_DELETE", CHANNEL_UPDATE : "CHANNEL_UPDATE", + SERVER_ROLE_CREATE : "GUILD_ROLE_CREATE", + SERVER_ROLE_DELETE : "GUILD_ROLE_DELETE", + SERVER_ROLE_UPDATE : "GUILD_ROLE_UPDATE" } exports.API_ENDPOINT = API; diff --git a/src/Structures/Role.js b/src/Structures/Role.js index 2e4c62f80..9493bacdf 100644 --- a/src/Structures/Role.js +++ b/src/Structures/Role.js @@ -29,7 +29,7 @@ const DefaultRole = [ ].reduce( (previous, current) => previous | current, 0 ); class Role{ - constructor(data, serverID, client){ + constructor(data, server, client){ this.position = data.position || -1; this.permissions = data.permissions || DefaultRole; this.name = data.name || "@everyone"; @@ -37,14 +37,10 @@ class Role{ this.id = data.id; this.hoist = data.hoist || false; this.color = data.color || 0; - this.serverID = serverID; + this.server = server; this.client = client; } - get server(){ - return this.client.internal.servers.get("id", this.serverID); - } - serialise(explicit){ var hp = (perm) => this.hasPermission(perm, explicit); diff --git a/src/Structures/Server.js b/src/Structures/Server.js index 94f3b3bec..367051c4e 100644 --- a/src/Structures/Server.js +++ b/src/Structures/Server.js @@ -54,7 +54,7 @@ class Server extends Equality { } ); data.roles.forEach( (dataRole) => { - this.roles.add( new Role(dataRole, this) ); + this.roles.add( new Role(dataRole, this, client) ); } ); } diff --git a/src/index.js b/src/index.js index aec2ab72d..cf21e0b8c 100644 --- a/src/index.js +++ b/src/index.js @@ -13,8 +13,8 @@ a.on("message", m => { a.reply(m, srv); }); }); -a.on("channelUpdated", (o, n) => { - a.sendMessage(o, o.name + " v " + n.name); +a.on("serverRoleCreated", (r, s) => { + console.log(r); }); a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e)); \ No newline at end of file