diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 8368408fd..d4b6165df 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -365,6 +365,24 @@ var Client = (function (_EventEmitter) { }); }; + //def addMemberToRole + + Client.prototype.addMemberToRole = function addMemberToRole(member, role) { + var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; + + var self = this; + return new Promise(function (resolve, reject) { + + self.internal.addMemberToRole(member, role).then(function () { + callback(); + resolve(); + })["catch"](function (e) { + callback(e); + reject(e); + }); + }); + }; + return Client; })(EventEmitter); diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 54a197bf2..cacd2b6a5 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -550,6 +550,40 @@ var InternalClient = (function () { }); }; + //def addMemberToRole + + InternalClient.prototype.addMemberToRole = function addMemberToRole(member, role) { + var self = this; + return new Promise(function (resolve, reject) { + + member = self.resolver.resolveUser(member); + + if (!member || !role) { + reject(new Error("member/role not in server")); + return; + } + + if (role.server.memberMap[member.id]) { + + var roleIDS = role.server.memberMap[member.id].roles.map(function (r) { + return r.id; + }).concat(role.id); + + request.patch(Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id).set("authorization", self.token).send({ + roles: roleIDS + }).end(function (err) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + } else { + reject(new Error("member not in server")); + } + }); + }; + InternalClient.prototype.sendWS = function sendWS(object) { if (this.websocket) this.websocket.send(JSON.stringify(object)); }; diff --git a/lib/index.js b/lib/index.js index 2f30c0abc..10fd0dfb4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -20,8 +20,10 @@ a.on("message", function (m) { hoist: true, permissions: ["manageRoles"] }).then(function (role) { - a.deleteRole(role).then(function () { - a.reply(m, "deleted!"); + a.addMemberToRole(m.author, role).then(function () { + a.reply(m, "added!"); + })["catch"](function (e) { + console.log(e.stack); }); })["catch"](function (e) { console.log(e.stack); diff --git a/src/Client/Client.js b/src/Client/Client.js index d49c2cff7..895be1903 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -339,6 +339,24 @@ class Client extends EventEmitter { }); } + + //def addMemberToRole + addMemberToRole(member, role, callback=function(err){}){ + var self = this; + return new Promise((resolve, reject) => { + + self.internal.addMemberToRole(member, role) + .then(() => { + callback(); + resolve(); + }) + .catch(e => { + callback(e); + reject(e); + }); + + }); + } } module.exports = Client; \ No newline at end of file diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 5816c1109..fad519b71 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -584,6 +584,43 @@ class InternalClient { }); } + + //def addMemberToRole + addMemberToRole(member, role){ + var self = this; + return new Promise((resolve, reject) => { + + member = self.resolver.resolveUser(member); + + if(!member || !role){ + reject(new Error("member/role not in server")); + return; + } + + if(role.server.memberMap[member.id]){ + + var roleIDS = role.server.memberMap[member.id].roles.map(r => r.id).concat(role.id); + + request + .patch(Endpoints.SERVER_MEMBERS(role.server.id)+"/"+member.id) + .set("authorization", self.token) + .send({ + roles : roleIDS + }) + .end((err) => { + if(err){ + reject(err); + }else{ + resolve(); + } + }); + + }else{ + reject(new Error("member not in server")); + } + + }); + } sendWS(object) { if (this.websocket) diff --git a/src/index.js b/src/index.js index e47e33702..6ffa910f8 100644 --- a/src/index.js +++ b/src/index.js @@ -16,9 +16,11 @@ a.on("message", m => { "manageRoles" ] }).then( role => { - a.deleteRole(role).then(() => { - a.reply(m, "deleted!"); - }) + a.addMemberToRole(m.author, role).then(() => { + a.reply(m, "added!"); + }).catch( e => { + console.log(e.stack) + }); }).catch( e => { console.log(e.stack) });