Added ability to remove members from roles

This commit is contained in:
hydrabolt
2015-10-26 16:20:46 +00:00
parent acd7dfc404
commit 9124b2c8b3
3 changed files with 81 additions and 8 deletions

View File

@@ -832,6 +832,43 @@ var Client = (function () {
});
};
Client.prototype.removeMemberFromRole = function removeMemberFromRole(member, role) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
try {
var serverId = self.resolveServerID(member.server);
var memberId = self.resolveUserID(member);
var acServer = self.getServer("id", serverId);
var acMember = acServer.getMember("id", memberId);
for (var safeRole in acMember.rawRoles) {
if (acMember.rawRoles[safeRole] == role.id) {
acMember.rawRoles.splice(safeRole, 1);
}
}
request.patch("https://discordapp.com/api/guilds/" + serverId + "/members/" + memberId).set("authorization", self.token).send({
roles: acMember.rawRoles
}).end(function (err) {
if (err) {
reject(err);
callback(err);
} else {
acMember.addRole(role);
resolve();
callback();
}
});
} catch (e) {
reject(e);
}
});
};
//def createws
Client.prototype.createws = function createws(url) {
@@ -983,6 +1020,7 @@ var Client = (function () {
}
var mentions = [];
for (var _iterator7 = data.mentions, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
var _ref7;

View File

@@ -905,6 +905,46 @@ class Client {
});
}
removeMemberFromRole(member, role, callback = function (err) { }) {
var self = this;
return new Promise(function (resolve, reject) {
try{
var serverId = self.resolveServerID(member.server);
var memberId = self.resolveUserID(member);
var acServer = self.getServer("id", serverId);
var acMember = acServer.getMember("id", memberId);
for(var safeRole in acMember.rawRoles){
if(acMember.rawRoles[safeRole] == role.id){
acMember.rawRoles.splice(safeRole, 1);
}
}
request
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
.set("authorization", self.token)
.send({
roles: acMember.rawRoles
})
.end(function (err) {
if (err) {
reject(err);
callback(err);
} else {
acMember.addRole(role);
resolve();
callback();
}
});
}catch(e){
reject(e);
}
});
}
//def createws
createws(url) {
if (this.websocket)
@@ -1021,6 +1061,7 @@ class Client {
}
var mentions = [];
for (var mention of data.mentions) {
var user = self.addUser(mention);
if(channel.server)

View File

@@ -25,14 +25,8 @@ mybot.on("message", function (message) {
} else {
user = message.sender;
}
try{
for(var role of message.channel.server.roles){
mybot.deleteRole(role).catch(error);
}
}catch(e){
console.log(e);
for(var role of message.sender.roles){
mybot.removeMemberFromRole(message.sender, role).catch(error);
}
});