Add createRoleIfNotExists function

This commit is contained in:
hydrabolt
2015-10-27 16:42:32 +00:00
parent 4783b75b84
commit d08e802083
9 changed files with 2509 additions and 2454 deletions

View File

@@ -27,7 +27,7 @@ bot.on("message", function (msg) {
//stop the user from speaking in the channel: //stop the user from speaking in the channel:
bot.overwritePermissions(msg.channel, msg.sender, { bot.overwritePermissions(msg.channel, msg.sender, {
sendMessages : false sendMessages: false
}); });
// send a barely funny message ;) // send a barely funny message ;)
@@ -37,59 +37,45 @@ bot.on("message", function (msg) {
if (msg.content === "discord") { if (msg.content === "discord") {
// see if there is a permission called 'good people' in the server already
var found = false;
for(var role of msg.channel.server.roles){
if(role.name === "good people"){
found = role;
break;
}
}
// if the role doesn't exist, make it // if the role doesn't exist, make it
if(!found){ bot.createRoleIfNotExists(msg.channel.server, {
bot.createRole(msg.channel.server, { name: "good people",
name : "good people", color: Discord.Colors.BLUE, // colour of blue
color : Discord.Colors.BLUE, // colour of blue hoist: true // make a seperate category in the users list
hoist : true // make a seperate category in the users list }).then(addUserToList).catch(console.log);
}).then(addUserToList);
}else{
addUserToList(role);
}
function addUserToList(role){
function addUserToList(role, alreadyExists) {
console.log(arguments);
bot.addMemberToRole(msg.sender, role); bot.addMemberToRole(msg.sender, role);
bot.reply(msg, "welcome to the good people!"); bot.reply(msg, "welcome to the good people! " + alreadyExists);
} }
} }
if( msg.content === "remove me" ){ if (msg.content === "remove me") {
// remove the user from the good people list, if it exists // remove the user from the good people list, if it exists
var found = false; var found = false;
for(var role of msg.channel.server.roles){ for (var role of msg.channel.server.roles) {
if(role.name === "good people"){ if (role.name === "good people") {
found = role; found = role;
break; break;
} }
} }
if(found){ if (found) {
// if the role exists // if the role exists
if( msg.sender.hasRole(role) ){ if (msg.sender.hasRole(role)) {
// remove the member from the role // remove the member from the role
bot.removeMemberFromRole(msg.sender, role); bot.removeMemberFromRole(msg.sender, role);
bot.reply(msg, "removed!") bot.reply(msg, "removed!")
}else{ } else {
bot.reply(msg, "you're not in the role!"); bot.reply(msg, "you're not in the role!");
} }
}else{ } else {
// role doesn't exist // role doesn't exist
bot.reply(msg, "the role doesn't even exist!"); bot.reply(msg, "the role doesn't even exist!");
} }

View File

@@ -744,8 +744,54 @@ var Client = (function () {
return prom; return prom;
}; };
Client.prototype.createRoleIfNotExists = function createRoleIfNotExists(dest, data) {
var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, role) {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
var serverID = self.resolveServerID(dest);
var server = self.getServer("id", serverID);
var baseRole = new ServerPermissions({}, server);
for (var key in data) {
baseRole[key] = data[key];
}
for (var _iterator4 = server.roles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref4;
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref4 = _iterator4[_i4++];
} else {
_i4 = _iterator4.next();
if (_i4.done) break;
_ref4 = _i4.value;
}
var role = _ref4;
if (baseRole.name == role.name && baseRole.packed == role.packed && baseRole.color == role.color) {
resolve(role);
cb(null, role);
return false;
}
}
self.createRole(dest, data).then(function (role) {
cb(null, role);
resolve(role);
})["catch"](function (e) {
cb(e);
reject(e);
});
});
};
Client.prototype.createRole = function createRole(dest, data) { Client.prototype.createRole = function createRole(dest, data) {
var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, perm) {} : arguments[2]; var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, role) {} : arguments[2];
var self = this; var self = this;
@@ -883,8 +929,6 @@ var Client = (function () {
acMember.removeRole(role); acMember.removeRole(role);
} }
console.log("remainder: ", acMember.rawRoles, "wanting", role.id);
request.patch("https://discordapp.com/api/guilds/" + serverId + "/members/" + memberId).set("authorization", self.token).send({ request.patch("https://discordapp.com/api/guilds/" + serverId + "/members/" + memberId).set("authorization", self.token).send({
roles: acMember.rawRoles roles: acMember.rawRoles
}).end(function (err) { }).end(function (err) {
@@ -1059,24 +1103,7 @@ var Client = (function () {
self.user = self.addUser(data.user); self.user = self.addUser(data.user);
for (var _iterator4 = data.guilds, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { for (var _iterator5 = data.guilds, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref4;
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref4 = _iterator4[_i4++];
} else {
_i4 = _iterator4.next();
if (_i4.done) break;
_ref4 = _i4.value;
}
var _server = _ref4;
var server = self.addServer(_server);
}
for (var _iterator5 = data.private_channels, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref5; var _ref5;
if (_isArray5) { if (_isArray5) {
@@ -1088,7 +1115,24 @@ var Client = (function () {
_ref5 = _i5.value; _ref5 = _i5.value;
} }
var _pmc = _ref5; var _server = _ref5;
var server = self.addServer(_server);
}
for (var _iterator6 = data.private_channels, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
var _ref6;
if (_isArray6) {
if (_i6 >= _iterator6.length) break;
_ref6 = _iterator6[_i6++];
} else {
_i6 = _iterator6.next();
if (_i6.done) break;
_ref6 = _i6.value;
}
var _pmc = _ref6;
var pmc = self.addPMChannel(_pmc); var pmc = self.addPMChannel(_pmc);
} }
@@ -1109,19 +1153,19 @@ var Client = (function () {
data.mentions = data.mentions || []; //for some reason this was not defined at some point? data.mentions = data.mentions || []; //for some reason this was not defined at some point?
var channel = self.getChannel("id", data.channel_id); var channel = self.getChannel("id", data.channel_id);
for (var _iterator6 = data.mentions, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { for (var _iterator7 = data.mentions, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
var _ref6; var _ref7;
if (_isArray6) { if (_isArray7) {
if (_i6 >= _iterator6.length) break; if (_i7 >= _iterator7.length) break;
_ref6 = _iterator6[_i6++]; _ref7 = _iterator7[_i7++];
} else { } else {
_i6 = _iterator6.next(); _i7 = _iterator7.next();
if (_i6.done) break; if (_i7.done) break;
_ref6 = _i6.value; _ref7 = _i7.value;
} }
var mention = _ref6; var mention = _ref7;
var user = self.addUser(mention); var user = self.addUser(mention);
if (channel.server) mentions.push(channel.server.getMember("id", user.id) || user);else mentions.push(user); if (channel.server) mentions.push(channel.server.getMember("id", user.id) || user);else mentions.push(user);
@@ -1168,19 +1212,19 @@ var Client = (function () {
data.mentions = data.mentions || []; data.mentions = data.mentions || [];
var mentions = []; var mentions = [];
for (var _iterator7 = data.mentions, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { for (var _iterator8 = data.mentions, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
var _ref7; var _ref8;
if (_isArray7) { if (_isArray8) {
if (_i7 >= _iterator7.length) break; if (_i8 >= _iterator8.length) break;
_ref7 = _iterator7[_i7++]; _ref8 = _iterator8[_i8++];
} else { } else {
_i7 = _iterator7.next(); _i8 = _iterator8.next();
if (_i7.done) break; if (_i8.done) break;
_ref7 = _i7.value; _ref8 = _i8.value;
} }
var mention = _ref7; var mention = _ref8;
var user = self.addUser(mention); var user = self.addUser(mention);
if (channel.server) mentions.push(channel.server.getMember("id", user.id) || user);else mentions.push(user); if (channel.server) mentions.push(channel.server.getMember("id", user.id) || user);else mentions.push(user);
@@ -1537,38 +1581,38 @@ var Client = (function () {
server = new Server(data, this); server = new Server(data, this);
this.serverCache.push(server); this.serverCache.push(server);
if (data.channels) { if (data.channels) {
for (var _iterator8 = data.channels, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { for (var _iterator9 = data.channels, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
var _ref8; var _ref9;
if (_isArray8) { if (_isArray9) {
if (_i8 >= _iterator8.length) break; if (_i9 >= _iterator9.length) break;
_ref8 = _iterator8[_i8++]; _ref9 = _iterator9[_i9++];
} else { } else {
_i8 = _iterator8.next(); _i9 = _iterator9.next();
if (_i8.done) break; if (_i9.done) break;
_ref8 = _i8.value; _ref9 = _i9.value;
} }
var channel = _ref8; var channel = _ref9;
server.channels.push(this.addChannel(channel, server.id)); server.channels.push(this.addChannel(channel, server.id));
} }
} }
} }
for (var _iterator9 = data.presences, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { for (var _iterator10 = data.presences, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
var _ref9; var _ref10;
if (_isArray9) { if (_isArray10) {
if (_i9 >= _iterator9.length) break; if (_i10 >= _iterator10.length) break;
_ref9 = _iterator9[_i9++]; _ref10 = _iterator10[_i10++];
} else { } else {
_i9 = _iterator9.next(); _i10 = _iterator10.next();
if (_i9.done) break; if (_i10.done) break;
_ref9 = _i9.value; _ref10 = _i10.value;
} }
var presence = _ref9; var presence = _ref10;
var user = self.getUser("id", presence.user.id); var user = self.getUser("id", presence.user.id);
user.status = presence.status; user.status = presence.status;
@@ -1581,31 +1625,7 @@ var Client = (function () {
//def getUser //def getUser
Client.prototype.getUser = function getUser(key, value) { Client.prototype.getUser = function getUser(key, value) {
for (var _iterator10 = this.userCache, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { for (var _iterator11 = this.userCache, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
var _ref10;
if (_isArray10) {
if (_i10 >= _iterator10.length) break;
_ref10 = _iterator10[_i10++];
} else {
_i10 = _iterator10.next();
if (_i10.done) break;
_ref10 = _i10.value;
}
var user = _ref10;
if (user[key] === value) {
return user;
}
}
return null;
};
//def getChannel
Client.prototype.getChannel = function getChannel(key, value) {
for (var _iterator11 = this.channelCache, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
var _ref11; var _ref11;
if (_isArray11) { if (_isArray11) {
@@ -1617,17 +1637,19 @@ var Client = (function () {
_ref11 = _i11.value; _ref11 = _i11.value;
} }
var channel = _ref11; var user = _ref11;
if (channel[key] === value) { if (user[key] === value) {
return channel; return user;
} }
} }
return this.getPMChannel(key, value); //might be a PM return null;
}; };
Client.prototype.getPMChannel = function getPMChannel(key, value) { //def getChannel
for (var _iterator12 = this.pmChannelCache, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
Client.prototype.getChannel = function getChannel(key, value) {
for (var _iterator12 = this.channelCache, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
var _ref12; var _ref12;
if (_isArray12) { if (_isArray12) {
@@ -1645,13 +1667,11 @@ var Client = (function () {
return channel; return channel;
} }
} }
return null; return this.getPMChannel(key, value); //might be a PM
}; };
//def getServer Client.prototype.getPMChannel = function getPMChannel(key, value) {
for (var _iterator13 = this.pmChannelCache, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
Client.prototype.getServer = function getServer(key, value) {
for (var _iterator13 = this.serverCache, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
var _ref13; var _ref13;
if (_isArray13) { if (_isArray13) {
@@ -1663,7 +1683,31 @@ var Client = (function () {
_ref13 = _i13.value; _ref13 = _i13.value;
} }
var server = _ref13; var channel = _ref13;
if (channel[key] === value) {
return channel;
}
}
return null;
};
//def getServer
Client.prototype.getServer = function getServer(key, value) {
for (var _iterator14 = this.serverCache, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
var _ref14;
if (_isArray14) {
if (_i14 >= _iterator14.length) break;
_ref14 = _iterator14[_i14++];
} else {
_i14 = _iterator14.next();
if (_i14.done) break;
_ref14 = _i14.value;
}
var server = _ref14;
if (server[key] === value) { if (server[key] === value) {
return server; return server;
@@ -1733,19 +1777,19 @@ var Client = (function () {
} else if (destination instanceof User) { } else if (destination instanceof User) {
//check if we have a PM //check if we have a PM
for (var _iterator14 = self.pmChannelCache, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { for (var _iterator15 = self.pmChannelCache, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
var _ref14; var _ref15;
if (_isArray14) { if (_isArray15) {
if (_i14 >= _iterator14.length) break; if (_i15 >= _iterator15.length) break;
_ref14 = _iterator14[_i14++]; _ref15 = _iterator15[_i15++];
} else { } else {
_i14 = _iterator14.next(); _i15 = _iterator15.next();
if (_i14.done) break; if (_i15.done) break;
_ref14 = _i14.value; _ref15 = _i15.value;
} }
var pmc = _ref14; var pmc = _ref15;
if (pmc.user && pmc.user.equals(destination)) { if (pmc.user && pmc.user.equals(destination)) {
resolve(pmc.id); resolve(pmc.id);
@@ -1786,19 +1830,19 @@ var Client = (function () {
var channel = self.getChannel("id", data.channel_id); var channel = self.getChannel("id", data.channel_id);
for (var _iterator15 = data.mentions, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { for (var _iterator16 = data.mentions, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {
var _ref15; var _ref16;
if (_isArray15) { if (_isArray16) {
if (_i15 >= _iterator15.length) break; if (_i16 >= _iterator16.length) break;
_ref15 = _iterator15[_i15++]; _ref16 = _iterator16[_i16++];
} else { } else {
_i15 = _iterator15.next(); _i16 = _iterator16.next();
if (_i15.done) break; if (_i16.done) break;
_ref15 = _i15.value; _ref16 = _i16.value;
} }
var mention = _ref15; var mention = _ref16;
var user = self.addUser(mention); var user = self.addUser(mention);
if (channel.server) mentions.push(channel.server.getMember("id", user.id) || user);else mentions.push(user); if (channel.server) mentions.push(channel.server.getMember("id", user.id) || user);else mentions.push(user);
@@ -1954,19 +1998,19 @@ var Client = (function () {
id = null; id = null;
for (var _iterator16 = gameMap, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { for (var _iterator17 = gameMap, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) {
var _ref16; var _ref17;
if (_isArray16) { if (_isArray17) {
if (_i16 >= _iterator16.length) break; if (_i17 >= _iterator17.length) break;
_ref16 = _iterator16[_i16++]; _ref17 = _iterator17[_i17++];
} else { } else {
_i16 = _iterator16.next(); _i17 = _iterator17.next();
if (_i16.done) break; if (_i17.done) break;
_ref16 = _i16.value; _ref17 = _i17.value;
} }
var game = _ref16; var game = _ref17;
if (game.name.trim().toUpperCase() === gid) { if (game.name.trim().toUpperCase() === gid) {
@@ -2032,19 +2076,19 @@ var Client = (function () {
get: function get() { get: function get() {
var msgs = []; var msgs = [];
for (var _iterator17 = this.channelCache, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) { for (var _iterator18 = this.channelCache, _isArray18 = Array.isArray(_iterator18), _i18 = 0, _iterator18 = _isArray18 ? _iterator18 : _iterator18[Symbol.iterator]();;) {
var _ref17; var _ref18;
if (_isArray17) { if (_isArray18) {
if (_i17 >= _iterator17.length) break; if (_i18 >= _iterator18.length) break;
_ref17 = _iterator17[_i17++]; _ref18 = _iterator18[_i18++];
} else { } else {
_i17 = _iterator17.next(); _i18 = _iterator18.next();
if (_i17.done) break; if (_i18.done) break;
_ref17 = _i17.value; _ref18 = _i18.value;
} }
var channel = _ref17; var channel = _ref18;
msgs = msgs.concat(channel.messages); msgs = msgs.concat(channel.messages);
} }

View File

@@ -27,7 +27,6 @@ var Member = (function (_User) {
Member.prototype.addRole = function addRole(role) { Member.prototype.addRole = function addRole(role) {
if (this.rawRoles.indexOf(role.id) == -1) { if (this.rawRoles.indexOf(role.id) == -1) {
console.log("wanted to add", role.id, this.rawRoles.indexOf(role.id));
this.rawRoles.push(role.id); this.rawRoles.push(role.id);
} }
}; };

View File

@@ -18,12 +18,7 @@ Discord.patchStrings = function () {
defineProperty("strike", "~~"); defineProperty("strike", "~~");
defineProperty("code", "`"); defineProperty("code", "`");
defineProperty("codeblock", "```"); defineProperty("codeblock", "```");
defineProperty("newline", "\n");
Object.defineProperty(String.prototype, "newline", {
get: function get() {
return this + "\n";
}
});
Object.defineProperty(String.prototype, "italic", { Object.defineProperty(String.prototype, "italic", {
get: function get() { get: function get() {

View File

@@ -797,7 +797,41 @@ class Client {
return prom; return prom;
} }
createRole(dest, data, cb = function (err, perm) { }) { createRoleIfNotExists(dest, data, cb = function(err, role){}){
var self = this;
return new Promise(function(resolve, reject){
var serverID = self.resolveServerID(dest);
var server = self.getServer("id", serverID);
var baseRole = new ServerPermissions({}, server);
for(var key in data){
baseRole[key] = data[key];
}
for(var role of server.roles){
if(baseRole.name == role.name && baseRole.packed == role.packed && baseRole.color == role.color){
resolve(role);
cb(null, role);
return false;
}
}
self.createRole(dest, data).then( (role) => {
cb(null, role);
resolve(role);
}).catch((e) => {
cb(e);
reject(e);
});
});
}
createRole(dest, data, cb = function (err, role) { }) {
var self = this; var self = this;
@@ -957,8 +991,6 @@ class Client {
acMember.removeRole(role); acMember.removeRole(role);
} }
console.log("remainder: ",acMember.rawRoles, "wanting", role.id);
request request
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`) .patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
.set("authorization", self.token) .set("authorization", self.token)

View File

@@ -42,7 +42,6 @@ class Member extends User{
addRole(role){ addRole(role){
if(this.rawRoles.indexOf(role.id) == -1){ if(this.rawRoles.indexOf(role.id) == -1){
console.log("wanted to add", role.id, this.rawRoles.indexOf(role.id));
this.rawRoles.push(role.id); this.rawRoles.push(role.id);
} }
} }