Fixed colours

This commit is contained in:
hydrabolt
2015-10-28 12:13:09 +00:00
parent 2eed36d297
commit c3b6dba6be
12 changed files with 194 additions and 81 deletions

View File

@@ -0,0 +1,109 @@
/*
this bot will demonstrate the different ways you
can create colors in Discord.
*/
var Discord = require("../../");
// Get the email and password
var AuthDetails = require("../auth.json");
var bot = new Discord.Client();
bot.on("ready", function () {
console.log("Ready to begin! Serving in " + bot.channels.length + " channels");
});
bot.on("disconnected", function () {
console.log("Disconnected!");
process.exit(1); //exit node.js with an error
});
bot.on("message", function (msg) {
if (msg.content === "create role") {
// create the role and add the user to it
bot.createRoleIfNotExists(msg.channel.server, {
name : "Custom Colors",
hoist : true, // so it is visible in the members list
}).then(function(permission){
bot.addMemberToRole(msg.sender, permission).then(function(){
bot.reply(msg, "added you to the role!");
});
});
}
if (msg.content.indexOf("preset color") === 0) {
// set the role to a preset color
var colorName = msg.content.split(" ")[2];
var role = msg.channel.server.getRole("name", "Custom Colors");
if(Discord.Color[colorName]){ // if the color is a preset
bot.updateRole(role, {
color : Discord.Color[colorName]
}).then(function(){
bot.reply(msg, "done!");
});
}else{
bot.reply(msg, "that color isn't a preset color!");
}
}
if (msg.content.indexOf("custom color") === 0) {
var colorName = msg.content.split(" ")[2];
var role = msg.channel.server.getRole("name", "Custom Colors");
bot.updateRole(role, {
color : colorName
}).then(function(){
bot.reply(msg, "done!");
}).catch(function(e){
bot.reply(msg, "an error occurred. Was that a valid hex/dec color?");
})
}
if (msg.content === "remove me") {
// remove the user from the good people list, if it exists
var found = false;
for (var role of msg.channel.server.roles) {
if (role.name === "good people") {
found = role;
break;
}
}
if (found) {
// if the role exists
if (msg.sender.hasRole(role)) {
// remove the member from the role
bot.removeMemberFromRole(msg.sender, role);
bot.reply(msg, "removed!")
} else {
bot.reply(msg, "you're not in the role!");
}
} else {
// role doesn't exist
bot.reply(msg, "the role doesn't even exist!");
}
}
});
bot.login(AuthDetails.email, AuthDetails.password);

View File

@@ -20,7 +20,7 @@ var ChannelPermissions = (function () {
if (this.type === "member") { if (this.type === "member") {
this.packed = channel.server.getMember("id", data.id).evalPerms.packed; this.packed = channel.server.getMember("id", data.id).evalPerms.packed;
} else { } else {
this.packed = channel.server.getRole(data.id).packed; this.packed = channel.server.getRole("id", data.id).packed;
} }
this.packed = this.packed & ~data.deny; this.packed = this.packed & ~data.deny;

View File

@@ -16,6 +16,7 @@ var Invite = require("./invite.js");
var PMChannel = require("./PMChannel.js"); var PMChannel = require("./PMChannel.js");
var ServerPermissions = require("./ServerPermissions.js"); var ServerPermissions = require("./ServerPermissions.js");
var gameMap = require("../ref/gameMap.json"); var gameMap = require("../ref/gameMap.json");
var Color = require("../ref/colours.js");
var zlib; var zlib;
var EventEmitter = require('events'); var EventEmitter = require('events');
@@ -824,16 +825,11 @@ var Client = (function (_EventEmitter) {
var server = role.server.id; var server = role.server.id;
var modRole = role;
for (var key in data) {
modRole[key] = data[key];
}
request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({ request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({
color: modRole.color, color: Color.toDec(data.color) || role.color,
hoist: modRole.hoist, hoist: data.hoist || role.hoist,
name: modRole.name, name: data.name || role.name,
permissions: modRole.packed permissions: data.packed || role.packed
}).end(function (err, res) { }).end(function (err, res) {
if (err) { if (err) {
cb(err); cb(err);
@@ -1479,7 +1475,7 @@ var Client = (function (_EventEmitter) {
case "GUILD_ROLE_DELETE": case "GUILD_ROLE_DELETE":
var server = self.getServer("id", data.guild_id); var server = self.getServer("id", data.guild_id);
var role = server.getRole(data.role_id); var role = server.getRole("id", data.role_id);
self.emit("serverRoleDelete", server, role); self.emit("serverRoleDelete", server, role);
@@ -1490,7 +1486,7 @@ var Client = (function (_EventEmitter) {
case "GUILD_ROLE_UPDATE": case "GUILD_ROLE_UPDATE":
var server = self.getServer("id", data.guild_id); var server = self.getServer("id", data.guild_id);
var role = server.getRole(data.role.id); var role = server.getRole("id", data.role.id);
var newRole = server.updateRole(data.role); var newRole = server.updateRole(data.role);
self.emit("serverRoleUpdate", server, role, newRole); self.emit("serverRoleUpdate", server, role, newRole);

View File

@@ -130,7 +130,7 @@ var Member = (function (_User) {
key: "roles", key: "roles",
get: function get() { get: function get() {
var ufRoles = [this.server.getRole(this.server.id)]; var ufRoles = [this.server.getRole("id", this.server.id)];
for (var _iterator5 = this.rawRoles, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { for (var _iterator5 = this.rawRoles, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref5; var _ref5;
@@ -146,7 +146,7 @@ var Member = (function (_User) {
var rawRole = _ref5; var rawRole = _ref5;
ufRoles.push(this.server.getRole(rawRole)); ufRoles.push(this.server.getRole("id", rawRole));
} }
return ufRoles; return ufRoles;

View File

@@ -3,12 +3,12 @@
var request = require("superagent"); var request = require("superagent");
var Endpoints = require("./Endpoints.js"); var Endpoints = require("./Endpoints.js");
var Client = require("./Client.js"); var Client = require("./Client.js");
var Colors = require("../ref/colours.js"); var Color = require("../ref/colours.js");
var Discord = { var Discord = {
Endpoints: Endpoints, Endpoints: Endpoints,
Client: Client, Client: Client,
Colors: Colors, Color: Color,
User: require("./user.js"), User: require("./user.js"),
Server: require("./server.js"), Server: require("./server.js"),
Channel: require("./channel.js"), Channel: require("./channel.js"),

View File

@@ -71,7 +71,7 @@ var Server = (function () {
// get/set // get/set
Server.prototype.getRole = function getRole(id) { Server.prototype.getRole = function getRole(key, value) {
for (var _iterator3 = this.roles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { for (var _iterator3 = this.roles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref3; var _ref3;
@@ -86,7 +86,7 @@ var Server = (function () {
var role = _ref3; var role = _ref3;
if (role.id == id) { if (role[key] === value) {
return role; return role;
} }
} }
@@ -96,18 +96,18 @@ var Server = (function () {
Server.prototype.addRole = function addRole(data) { Server.prototype.addRole = function addRole(data) {
if (this.getRole(data.id)) { if (this.getRole("id", data.id)) {
return this.getRole(data.id); return this.getRole("id", data.id);
} }
var perms = new ServerPermissions(data); var perms = new ServerPermissions(data, this);
this.roles.push(perms); this.roles.push(perms);
return perms; return perms;
}; };
Server.prototype.updateRole = function updateRole(data) { Server.prototype.updateRole = function updateRole(data) {
var oldRole = this.getRole(data.id); var oldRole = this.getRole("id", data.id);
if (oldRole) { if (oldRole) {
var index = this.roles.indexOf(oldRole); var index = this.roles.indexOf(oldRole);

View File

@@ -2,48 +2,60 @@
credits to izy521 for the colour list credits to izy521 for the colour list
https://github.com/izy521/discord.io/blob/master/docs/colors.md https://github.com/izy521/discord.io/blob/master/docs/colors.md
*/ */
module.exports = { exports.DEFAULT = 0;
DEFAULT: 0, exports.AQUA = 1752220;
AQUA: 1752220, exports.GREEN= 3066993;
GREEN: 3066993, exports.BLUE= 3447003;
BLUE: 3447003, exports.PURPLE= 10181046;
PURPLE: 10181046, exports.GOLD= 15844367;
GOLD: 15844367, exports.ORANGE= 15105570;
ORANGE: 15105570, exports.RED= 15158332;
RED: 15158332, exports.GREY= 9807270;
GREY: 9807270, exports.DARKER_GREY= 8359053;
DARKER_GREY: 8359053, exports.NAVY= 3426654;
NAVY: 3426654, exports.DARK_AQUA= 1146986;
DARK_AQUA: 1146986, exports.DARK_GREEN= 2067276;
DARK_GREEN: 2067276, exports.DARK_BLUE= 2123412;
DARK_BLUE: 2123412, exports.DARK_PURPLE= 7419530;
DARK_PURPLE: 7419530, exports.DARK_GOLD= 12745742;
DARK_GOLD: 12745742, exports.DARK_ORANGE= 11027200;
DARK_ORANGE: 11027200, exports.DARK_RED= 10038562;
DARK_RED: 10038562, exports.DARK_GREY= 9936031;
DARK_GREY: 9936031, exports.LIGHT_GREY= 12370112;
LIGHT_GREY: 12370112, exports.DARK_NAVY= 2899536;
DARK_NAVY: 2899536
}
exports.toDec = function(data){ exports.toDec = function (data) {
var hextest = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/; var hextest = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i;
var num; var num;
if(hextest.test(data)){ if (hextest.test(data)) {
// it's a hex number with a # in front // it's a hex number with a # in front
num = data.substr(1).toString(10);
}else if(hextest.test("#" + data)){ // there's a bug in discord as of 28/10/15, where any
// hex colors beginning with a 0 do not render properly.
// this is a temporary fix, and it does mean that you won't
// get correct colors all the time, although it is barely noticeable.
if(data.charAt(1) === "0"){
var tdata = data.split("");
tdata[1] = 1;
data = tdata.join("");
}
num = parseInt(data.substr(1), 16).toString(10);
} else if (hextest.test("#" + data)) {
// it's a hex number with no # in front // it's a hex number with no # in front
num = data.toString(10); num = parseInt(data, 16).toString(10);
}else{ } else {
num = data.toString(10); num = data.toString(10);
} }
return num;
console.log(num);
return parseInt(num);
} }
exports.toHex = function(data){ exports.toHex = function (data) {
return "#" + data.toString(16); return "#" + data.toString(16);

View File

@@ -13,7 +13,7 @@ class ChannelPermissions {
if (this.type === "member") { if (this.type === "member") {
this.packed = channel.server.getMember("id", data.id).evalPerms.packed; this.packed = channel.server.getMember("id", data.id).evalPerms.packed;
} else { } else {
this.packed = channel.server.getRole(data.id).packed; this.packed = channel.server.getRole("id", data.id).packed;
} }
this.packed = this.packed & ~data.deny; this.packed = this.packed & ~data.deny;

View File

@@ -8,6 +8,7 @@ var Invite = require("./invite.js");
var PMChannel = require("./PMChannel.js"); var PMChannel = require("./PMChannel.js");
var ServerPermissions = require("./ServerPermissions.js"); var ServerPermissions = require("./ServerPermissions.js");
var gameMap = require("../ref/gameMap.json"); var gameMap = require("../ref/gameMap.json");
var Color = require("../ref/colours.js");
var zlib; var zlib;
var EventEmitter = require('events'); var EventEmitter = require('events');
@@ -873,19 +874,14 @@ class Client extends EventEmitter {
var server = role.server.id; var server = role.server.id;
var modRole = role;
for (var key in data) {
modRole[key] = data[key];
}
request request
.patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`) .patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`)
.set("authorization", self.token) .set("authorization", self.token)
.send({ .send({
color: modRole.color, color: Color.toDec(data.color) || role.color,
hoist: modRole.hoist, hoist: data.hoist || role.hoist,
name: modRole.name, name: data.name || role.name,
permissions: modRole.packed permissions: data.packed || role.packed
}) })
.end(function (err, res) { .end(function (err, res) {
if (err) { if (err) {
@@ -1510,7 +1506,7 @@ class Client extends EventEmitter {
case "GUILD_ROLE_DELETE": case "GUILD_ROLE_DELETE":
var server = self.getServer("id", data.guild_id); var server = self.getServer("id", data.guild_id);
var role = server.getRole(data.role_id); var role = server.getRole("id", data.role_id);
self.emit("serverRoleDelete", server, role); self.emit("serverRoleDelete", server, role);
@@ -1521,7 +1517,7 @@ class Client extends EventEmitter {
case "GUILD_ROLE_UPDATE": case "GUILD_ROLE_UPDATE":
var server = self.getServer("id", data.guild_id); var server = self.getServer("id", data.guild_id);
var role = server.getRole(data.role.id); var role = server.getRole("id", data.role.id);
var newRole = server.updateRole(data.role); var newRole = server.updateRole(data.role);
self.emit("serverRoleUpdate", server, role, newRole); self.emit("serverRoleUpdate", server, role, newRole);

View File

@@ -12,10 +12,10 @@ class Member extends User{
get roles(){ get roles(){
var ufRoles = [ this.server.getRole(this.server.id) ]; var ufRoles = [ this.server.getRole("id", this.server.id) ];
for(var rawRole of this.rawRoles){ for(var rawRole of this.rawRoles){
ufRoles.push( this.server.getRole(rawRole) ); ufRoles.push( this.server.getRole("id", rawRole) );
} }
return ufRoles; return ufRoles;

View File

@@ -1,12 +1,12 @@
var request = require("superagent"); var request = require("superagent");
var Endpoints = require("./Endpoints.js"); var Endpoints = require("./Endpoints.js");
var Client = require("./Client.js"); var Client = require("./Client.js");
var Colors = require("../ref/colours.js"); var Color = require("../ref/colours.js");
var Discord = { var Discord = {
Endpoints : Endpoints, Endpoints : Endpoints,
Client : Client, Client : Client,
Colors : Colors, Color : Color,
User : require("./user.js"), User : require("./user.js"),
Server : require("./server.js"), Server : require("./server.js"),
Channel : require("./channel.js"), Channel : require("./channel.js"),

View File

@@ -73,9 +73,9 @@ class Server {
// get/set // get/set
getRole(id){ getRole(key, value){
for (var role of this.roles) { for (var role of this.roles) {
if (role.id == id) { if (role[key] === value) {
return role; return role;
} }
} }
@@ -85,11 +85,11 @@ class Server {
addRole(data){ addRole(data){
if(this.getRole(data.id)){ if(this.getRole("id", data.id)){
return this.getRole(data.id); return this.getRole("id", data.id);
} }
var perms = new ServerPermissions(data); var perms = new ServerPermissions(data, this);
this.roles.push(perms); this.roles.push(perms);
return perms; return perms;
@@ -97,7 +97,7 @@ class Server {
updateRole(data){ updateRole(data){
var oldRole = this.getRole(data.id); var oldRole = this.getRole("id", data.id);
if(oldRole){ if(oldRole){
var index = this.roles.indexOf(oldRole); var index = this.roles.indexOf(oldRole);