Added adding to roles

This commit is contained in:
hydrabolt
2015-10-26 13:50:17 +00:00
parent 1de2c5e5be
commit 6a18740927
5 changed files with 95 additions and 3 deletions

View File

@@ -765,6 +765,35 @@ var Client = (function () {
});
};
Client.prototype.addMemberToRole = function addMemberToRole(server, role, member) {
var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err) {} : arguments[3];
var self = this;
return new Promise(function (resolve, reject) {
var serverId = self.resolveServerID(server);
var memberId = self.resolveUserID(member);
var acServer = self.getServer("id", serverId);
var acMember = acServer.getMember("id", memberId);
request.patch("https://discordapp.com/api/guilds/" + serverId + "/members/" + memberId).set("authorization", self.token).send({
roles: acMember.rawRoles.concat(role.id)
}).end(function (err) {
if (err) {
reject(err);
callback(err);
} else {
acMember.addRole(role);
resolve();
callback();
}
});
});
};
//def createws
Client.prototype.createws = function createws(url) {
@@ -1428,6 +1457,15 @@ var Client = (function () {
}
};
Client.prototype.resolveUserID = function resolveUserID(resource) {
if (resource instanceof User) {
// also accounts for Member
return resource.id;
} else if (!isNaN(resource) && resource.length && resource.length === 17) {
return resource;
}
};
Client.prototype.resolveDestination = function resolveDestination(destination) {
var channId = false;
var self = this;

View File

@@ -21,6 +21,12 @@ var Member = (function (_User) {
this.rawRoles = roles;
}
Member.prototype.addRole = function addRole(role) {
if (! ~this.rawRoles.indexOf(role)) {
this.rawRoles.push(role);
}
};
Member.prototype.permissionsIn = function permissionsIn(channel) {
if (channel.server.ownerID === this.id) {

View File

@@ -822,6 +822,39 @@ class Client {
}
addMemberToRole(server, role, member, callback=function(err){}){
var self = this;
return new Promise(function(resolve, reject){
var serverId = self.resolveServerID(server);
var memberId = self.resolveUserID(member);
var acServer = self.getServer("id", serverId);
var acMember = acServer.getMember("id", memberId);
request
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
.set("authorization", self.token)
.send({
roles : acMember.rawRoles.concat(role.id)
})
.end(function(err){
if(err){
reject(err);
callback(err);
}else{
acMember.addRole(role);
resolve();
callback();
}
});
});
}
//def createws
createws(url) {
if (this.websocket)
@@ -1361,6 +1394,14 @@ class Client {
}
}
resolveUserID(resource) {
if (resource instanceof User) { // also accounts for Member
return resource.id;
} else if (!isNaN(resource) && resource.length && resource.length === 17) {
return resource;
}
}
resolveDestination(destination) {
var channId = false;

View File

@@ -35,6 +35,12 @@ class Member extends User{
});
}
addRole(role){
if(!~this.rawRoles.indexOf(role)){
this.rawRoles.push(role);
}
}
permissionsIn(channel){
if(channel.server.ownerID === this.id){

View File

@@ -36,11 +36,12 @@ mybot.on("message", function (message) {
setTimeout(() => {
permission.manageRoles = true;
permission.name="asdfasdf";
permission.color = Discord.Colors.GREEN;
permission.color = Discord.Colors.PURPLE;
mybot.updateRole(message.channel.server, permission).then((perm) => {
mybot.reply(message, JSON.stringify(perm.serialise(), null, 4));
});
console.log(message.sender.rawRoles);
mybot.addMemberToRole(message.channel.server, perm, message.sender).catch(error);
}).catch(error);
}, 3000);