From 08ffd473e428263abea02e16518fc7dbb3fe8cb5 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Mon, 26 Oct 2015 13:29:01 +0000 Subject: [PATCH] added updating roles --- lib/Client.js | 41 +++++++++++++++++++++++++++++------ lib/server.js | 3 +-- src/Client.js | 51 ++++++++++++++++++++++++++++++++++++-------- src/server.js | 8 +++---- test/bot.1.js | 59 ++++++++++++++++++++++++++++----------------------- 5 files changed, 113 insertions(+), 49 deletions(-) diff --git a/lib/Client.js b/lib/Client.js index 0ad98abee..493af7e8d 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -12,7 +12,7 @@ var Channel = require("./channel.js"); var Message = require("./message.js"); var Invite = require("./invite.js"); var PMChannel = require("./PMChannel.js"); - +var ServerPermissions = require("./ServerPermissions.js"); var gameMap = require("../ref/gameMap.json"); //node modules @@ -712,23 +712,52 @@ var Client = (function () { return prom; }; - Client.prototype.createRole = function createRole(server) { + Client.prototype.createRole = function createRole(dest) { var cb = arguments.length <= 1 || arguments[1] === undefined ? function (err, perm) {} : arguments[1]; var self = this; + return new Promise(function (resolve, reject) { + + var ddest = self.resolveServerID(dest); + + request.post(Endpoints.SERVERS + "/" + ddest + "/roles").set("authorization", self.token).end(function (err, res) { + + if (err) { + cb(err); + reject(err); + } else { + + var perms = self.getServer("id", ddest).addRole(res.body); + + resolve(perms); + cb(null, perms); + } + }); + }); + }; + + Client.prototype.updateRole = function updateRole(server, role) { + var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, perm) {} : arguments[2]; + + var self = this; + return new Promise(function (resolve, reject) { server = self.resolveServerID(server); - request.post(Endpoints.SERVERS + "/" + server + "/roles").set("authorization", self.token).end(function (err, res) { - + request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({ + color: role.color, + hoist: role.hoist, + name: role.name, + permissions: role.packed + }).end(function (err, res) { if (err) { cb(err); reject(err); } else { - var data = self.getServer("id", server).addRole(res.body); + var data = self.getServer("id", server).updateRole(res.body); resolve(data); cb(null, data); } @@ -1120,8 +1149,6 @@ var Client = (function () { self.trigger("serverRoleCreate", server, server.addRole(role)); - server.removeRole(role.id); - break; case "GUILD_ROLE_DELETE": diff --git a/lib/server.js b/lib/server.js index fe56aaa33..1508a9b47 100644 --- a/lib/server.js +++ b/lib/server.js @@ -86,7 +86,7 @@ var Server = (function () { var role = _ref3; - if (role.id === id) { + if (role.id == id) { return role; } } @@ -110,7 +110,6 @@ var Server = (function () { var oldRole = this.getRole(data.id); if (oldRole) { - var index = this.roles.indexOf(oldRole); this.roles[index] = new ServerPermissions(data); diff --git a/src/Client.js b/src/Client.js index 6e7e12c76..67b8bc83f 100644 --- a/src/Client.js +++ b/src/Client.js @@ -6,7 +6,7 @@ var Channel = require("./channel.js"); var Message = require("./message.js"); var Invite = require("./invite.js"); var PMChannel = require("./PMChannel.js"); - +var ServerPermissions = require("./ServerPermissions.js"); var gameMap = require("../ref/gameMap.json"); //node modules @@ -757,16 +757,16 @@ class Client { return prom; } - createRole(server, cb = function (err, perm) { }) { + createRole(dest, cb = function (err, perm) { }) { var self = this; return new Promise(function (resolve, reject) { - server = self.resolveServerID(server); + var ddest = self.resolveServerID(dest); request - .post(`${Endpoints.SERVERS}/${server}/roles`) + .post(`${Endpoints.SERVERS}/${ddest}/roles`) .set("authorization", self.token) .end(function (err, res) { @@ -775,9 +775,10 @@ class Client { reject(err); } else { - var data = self.getServer("id", server).addRole(res.body); - resolve(data); - cb(null, data); + var perms = self.getServer("id", ddest).addRole(res.body); + + resolve(perms); + cb(null, perms); } @@ -787,6 +788,40 @@ class Client { } + updateRole(server, role, cb=function(err,perm){}){ + + var self = this; + + return new Promise(function(resolve, reject){ + + server = self.resolveServerID(server); + + request + .patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`) + .set("authorization", self.token) + .send({ + color : role.color, + hoist : role.hoist, + name : role.name, + permissions : role.packed + }) + .end(function(err, res){ + if (err) { + cb(err); + reject(err); + } else { + + var data = self.getServer("id", server).updateRole(res.body); + resolve(data); + cb(null, data); + + } + }); + + }); + + } + //def createws createws(url) { if (this.websocket) @@ -1125,8 +1160,6 @@ class Client { self.trigger("serverRoleCreate", server, server.addRole(role)); - server.removeRole(role.id); - break; case "GUILD_ROLE_DELETE": diff --git a/src/server.js b/src/server.js index a21e4b987..2be58568c 100644 --- a/src/server.js +++ b/src/server.js @@ -75,11 +75,11 @@ class Server { getRole(id){ for (var role of this.roles) { - if (role.id === id) { + if (role.id == id) { return role; } } - + return null; } @@ -96,15 +96,13 @@ class Server { } updateRole(data){ - + var oldRole = this.getRole(data.id); if(oldRole){ - var index = this.roles.indexOf(oldRole); this.roles[index] = new ServerPermissions(data); - return this.roles[index]; }else{ diff --git a/test/bot.1.js b/test/bot.1.js index 9a8216529..4532ab381 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -10,66 +10,73 @@ var server, channel, message, sentMessage = false; counter = 1; mybot.on("message", function (message) { - + console.log("Everyone mentioned? " + message.everyoneMentioned); - if (message.content.substr(0,3) !== "$$$") { + if (message.content.substr(0, 3) !== "$$$") { return; } // we can go ahead :) var user; - if(message.mentions.length > 0){ + if (message.mentions.length > 0) { user = message.mentions[0]; - }else{ + } else { user = message.sender; } - - console.log( mybot.getUser("username", "meew0") ); - + + console.log(mybot.getUser("username", "meew0")); + var perms = JSON.stringify(message.channel.permissionsOf(user).serialise(), null, 4); perms = JSON.parse(perms); - - this.createRole(message.channel.server).catch(error).then((data) => { - data.manageRoles = true; - mybot.reply(message, JSON.stringify(data.serialise(), null, 4)); - - mybot.updateRole(message.channel.server, data).catch(error).then(console.log) - + + this.createRole(message.channel.server).catch(error).then((permission) => { + mybot.reply(message, JSON.stringify(permission.serialise(), null, 4)); + + setTimeout(() => { + permission.manageRoles = true; + permission.name="asdfasdf"; + + mybot.updateRole(message.channel.server, permission).then((perm) => { + mybot.reply(message, JSON.stringify(perm.serialise(), null, 4)); + }); + }, 3000); + + }); - + }); mybot.on("ready", function () { console.log("im ready"); - - for(var server of mybot.servers){ - if(server.name === "test-server"){ + + for (var server of mybot.servers) { + if (server.name === "test-server") { mybot.leaveServer(server); } } - + }); -mybot.on("debug", function(info){ - +mybot.on("debug", function (info) { + }) -mybot.on("unknown", function(info){ +mybot.on("unknown", function (info) { console.log("warning!", info); }) -mybot.on("channelUpdate", function(oldChan, newChan){ - +mybot.on("channelUpdate", function (oldChan, newChan) { + }); function dump(msg) { - console.log(msg); + console.log("dump", msg); } function error(err) { - console.log(err); + console.log("error", err); } mybot.login(process.env["ds_email"], process.env["ds_password"]).catch(error); \ No newline at end of file