Improved role creation

This commit is contained in:
hydrabolt
2015-10-26 15:12:08 +00:00
parent 45e678b67e
commit b5263aae0c
3 changed files with 68 additions and 18 deletions

View File

@@ -66,7 +66,7 @@ var Client = (function () {
this.checkingQueue = {}; this.checkingQueue = {};
this.userTypingListener = {}; this.userTypingListener = {};
this.queue = {}; this.queue = {};
this.guildRoleCreateIgnoreList = {};
this.__idleTime = null; this.__idleTime = null;
this.__gameId = null; this.__gameId = null;
} }
@@ -714,14 +714,15 @@ var Client = (function () {
return prom; return prom;
}; };
Client.prototype.createRole = function createRole(dest) { Client.prototype.createRole = function createRole(dest, data) {
var cb = arguments.length <= 1 || arguments[1] === undefined ? function (err, perm) {} : arguments[1]; var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, perm) {} : arguments[2];
var self = this; var self = this;
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var ddest = self.resolveServerID(dest); var ddest = self.resolveServerID(dest);
var server = self.getServer("id", ddest);
request.post(Endpoints.SERVERS + "/" + ddest + "/roles").set("authorization", self.token).end(function (err, res) { request.post(Endpoints.SERVERS + "/" + ddest + "/roles").set("authorization", self.token).end(function (err, res) {
@@ -730,10 +731,23 @@ var Client = (function () {
reject(err); reject(err);
} else { } else {
var perms = self.getServer("id", ddest).addRole(res.body); var moddedPerm = new ServerPermissions(res.body, server);
resolve(perms); for (var key in data) {
cb(null, perms); moddedPerm[key] = data[key];
}
var perms = server.addRole(res.body);
self.guildRoleCreateIgnoreList[res.body.id] = function () {
self.updateRole(server, moddedPerm).then(function (perm) {
cb(null, perm);
resolve(perm);
})["catch"](function (err) {
cb(err);
reject(err);
});
};
} }
}); });
}); });
@@ -1182,6 +1196,13 @@ var Client = (function () {
var server = self.getServer("id", data.guild_id); var server = self.getServer("id", data.guild_id);
var role = data.role; var role = data.role;
if (self.guildRoleCreateIgnoreList[data.role.id]) {
server.addRole(role);
self.guildRoleCreateIgnoreList[data.role.id]();
self.guildRoleCreateIgnoreList[data.role.id] = null;
break;
}
self.trigger("serverRoleCreate", server, server.addRole(role)); self.trigger("serverRoleCreate", server, server.addRole(role));
break; break;

View File

@@ -56,7 +56,7 @@ class Client {
this.checkingQueue = {}; this.checkingQueue = {};
this.userTypingListener = {}; this.userTypingListener = {};
this.queue = {}; this.queue = {};
this.guildRoleCreateIgnoreList = {};
this.__idleTime = null; this.__idleTime = null;
this.__gameId = null; this.__gameId = null;
} }
@@ -759,13 +759,14 @@ class Client {
return prom; return prom;
} }
createRole(dest, cb = function (err, perm) { }) { createRole(dest, data, cb = function (err, perm) { }) {
var self = this; var self = this;
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var ddest = self.resolveServerID(dest); var ddest = self.resolveServerID(dest);
var server = self.getServer("id", ddest);
request request
.post(`${Endpoints.SERVERS}/${ddest}/roles`) .post(`${Endpoints.SERVERS}/${ddest}/roles`)
@@ -777,10 +778,27 @@ class Client {
reject(err); reject(err);
} else { } else {
var perms = self.getServer("id", ddest).addRole(res.body); var moddedPerm = new ServerPermissions(res.body, server);
for (var key in data) {
moddedPerm[key] = data[key];
}
var perms = server.addRole(res.body);
self.guildRoleCreateIgnoreList[res.body.id] = function () {
self.updateRole(server, moddedPerm)
.then((perm) => {
cb(null, perm);
resolve(perm);
})
.catch((err) => {
cb(err);
reject(err);
});
}
resolve(perms);
cb(null, perms);
} }
@@ -929,7 +947,7 @@ class Client {
for (var mention of data.mentions) { for (var mention of data.mentions) {
var user = self.addUser(mention); var user = self.addUser(mention);
mentions.push( channel.server.getMember("id", user.id) || user ); mentions.push(channel.server.getMember("id", user.id) || user);
} }
if (channel) { if (channel) {
@@ -973,7 +991,7 @@ class Client {
var mentions = []; var mentions = [];
for (var mention of data.mentions) { for (var mention of data.mentions) {
var user = self.addUser(mention); var user = self.addUser(mention);
mentions.push( channel.server.getMember("id", user.id) || user ); mentions.push(channel.server.getMember("id", user.id) || user);
} }
var newMessage = new Message(info, channel, mentions, formerMessage.author); var newMessage = new Message(info, channel, mentions, formerMessage.author);
@@ -1197,6 +1215,13 @@ class Client {
var server = self.getServer("id", data.guild_id); var server = self.getServer("id", data.guild_id);
var role = data.role; var role = data.role;
if (self.guildRoleCreateIgnoreList[data.role.id]) {
server.addRole(role);
self.guildRoleCreateIgnoreList[data.role.id]();
self.guildRoleCreateIgnoreList[data.role.id] = null;
break;
}
self.trigger("serverRoleCreate", server, server.addRole(role)); self.trigger("serverRoleCreate", server, server.addRole(role));
break; break;
@@ -1479,7 +1504,7 @@ class Client {
} }
if (channel) { if (channel) {
var msg = channel.addMessage(new Message(data, channel, mentions, channel.server.getMember("id",data.author.id))); var msg = channel.addMessage(new Message(data, channel, mentions, channel.server.getMember("id", data.author.id)));
resolve(msg); resolve(msg);
} }
} }

View File

@@ -30,7 +30,11 @@ mybot.on("message", function (message) {
var perms = JSON.stringify(message.channel.permissionsOf(user).serialise(), null, 4); var perms = JSON.stringify(message.channel.permissionsOf(user).serialise(), null, 4);
perms = JSON.parse(perms); perms = JSON.parse(perms);
mybot.reply(message, message.sender.server.name); mybot.createRole(message.channel.server, {
color : Discord.Colors.GREEN
}).then((perm) => {
mybot.addMemberToRole(message.channel.server, perm, message.sender).then(console.log).catch(error);
}).catch(error);
}); });