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") {
this.packed = channel.server.getMember("id", data.id).evalPerms.packed;
} else {
this.packed = channel.server.getRole(data.id).packed;
this.packed = channel.server.getRole("id", data.id).packed;
}
this.packed = this.packed & ~data.deny;

View File

@@ -16,6 +16,7 @@ var Invite = require("./invite.js");
var PMChannel = require("./PMChannel.js");
var ServerPermissions = require("./ServerPermissions.js");
var gameMap = require("../ref/gameMap.json");
var Color = require("../ref/colours.js");
var zlib;
var EventEmitter = require('events');
@@ -824,16 +825,11 @@ var Client = (function (_EventEmitter) {
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({
color: modRole.color,
hoist: modRole.hoist,
name: modRole.name,
permissions: modRole.packed
color: Color.toDec(data.color) || role.color,
hoist: data.hoist || role.hoist,
name: data.name || role.name,
permissions: data.packed || role.packed
}).end(function (err, res) {
if (err) {
cb(err);
@@ -1479,7 +1475,7 @@ var Client = (function (_EventEmitter) {
case "GUILD_ROLE_DELETE":
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);
@@ -1490,7 +1486,7 @@ var Client = (function (_EventEmitter) {
case "GUILD_ROLE_UPDATE":
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);
self.emit("serverRoleUpdate", server, role, newRole);

View File

@@ -130,7 +130,7 @@ var Member = (function (_User) {
key: "roles",
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]();;) {
var _ref5;
@@ -146,7 +146,7 @@ var Member = (function (_User) {
var rawRole = _ref5;
ufRoles.push(this.server.getRole(rawRole));
ufRoles.push(this.server.getRole("id", rawRole));
}
return ufRoles;

View File

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

View File

@@ -71,7 +71,7 @@ var Server = (function () {
// 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]();;) {
var _ref3;
@@ -86,7 +86,7 @@ var Server = (function () {
var role = _ref3;
if (role.id == id) {
if (role[key] === value) {
return role;
}
}
@@ -96,18 +96,18 @@ var Server = (function () {
Server.prototype.addRole = function addRole(data) {
if (this.getRole(data.id)) {
return this.getRole(data.id);
if (this.getRole("id", data.id)) {
return this.getRole("id", data.id);
}
var perms = new ServerPermissions(data);
var perms = new ServerPermissions(data, this);
this.roles.push(perms);
return perms;
};
Server.prototype.updateRole = function updateRole(data) {
var oldRole = this.getRole(data.id);
var oldRole = this.getRole("id", data.id);
if (oldRole) {
var index = this.roles.indexOf(oldRole);

View File

@@ -2,49 +2,61 @@
credits to izy521 for the colour list
https://github.com/izy521/discord.io/blob/master/docs/colors.md
*/
module.exports = {
DEFAULT: 0,
AQUA: 1752220,
GREEN: 3066993,
BLUE: 3447003,
PURPLE: 10181046,
GOLD: 15844367,
ORANGE: 15105570,
RED: 15158332,
GREY: 9807270,
DARKER_GREY: 8359053,
NAVY: 3426654,
DARK_AQUA: 1146986,
DARK_GREEN: 2067276,
DARK_BLUE: 2123412,
DARK_PURPLE: 7419530,
DARK_GOLD: 12745742,
DARK_ORANGE: 11027200,
DARK_RED: 10038562,
DARK_GREY: 9936031,
LIGHT_GREY: 12370112,
DARK_NAVY: 2899536
}
exports.DEFAULT = 0;
exports.AQUA = 1752220;
exports.GREEN= 3066993;
exports.BLUE= 3447003;
exports.PURPLE= 10181046;
exports.GOLD= 15844367;
exports.ORANGE= 15105570;
exports.RED= 15158332;
exports.GREY= 9807270;
exports.DARKER_GREY= 8359053;
exports.NAVY= 3426654;
exports.DARK_AQUA= 1146986;
exports.DARK_GREEN= 2067276;
exports.DARK_BLUE= 2123412;
exports.DARK_PURPLE= 7419530;
exports.DARK_GOLD= 12745742;
exports.DARK_ORANGE= 11027200;
exports.DARK_RED= 10038562;
exports.DARK_GREY= 9936031;
exports.LIGHT_GREY= 12370112;
exports.DARK_NAVY= 2899536;
exports.toDec = function (data) {
var hextest = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i;
exports.toDec = function(data){
var hextest = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/;
var num;
if(hextest.test(data)){
if (hextest.test(data)) {
// 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
num = data.toString(10);
}else{
num = parseInt(data, 16).toString(10);
} else {
num = data.toString(10);
}
return num;
console.log(num);
return parseInt(num);
}
exports.toHex = function(data){
exports.toHex = function (data) {
return "#" + data.toString(16);
}

View File

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

View File

@@ -8,6 +8,7 @@ var Invite = require("./invite.js");
var PMChannel = require("./PMChannel.js");
var ServerPermissions = require("./ServerPermissions.js");
var gameMap = require("../ref/gameMap.json");
var Color = require("../ref/colours.js");
var zlib;
var EventEmitter = require('events');
@@ -873,26 +874,21 @@ class Client extends EventEmitter {
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({
color: modRole.color,
hoist: modRole.hoist,
name: modRole.name,
permissions: modRole.packed
color: Color.toDec(data.color) || role.color,
hoist: data.hoist || role.hoist,
name: data.name || role.name,
permissions: data.packed || role.packed
})
.end(function (err, res) {
if (err) {
cb(err);
reject(err);
} else {
var data = self.getServer("id", server).updateRole(res.body);
resolve(data);
cb(null, data);
@@ -1510,7 +1506,7 @@ class Client extends EventEmitter {
case "GUILD_ROLE_DELETE":
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);
@@ -1521,7 +1517,7 @@ class Client extends EventEmitter {
case "GUILD_ROLE_UPDATE":
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);
self.emit("serverRoleUpdate", server, role, newRole);

View File

@@ -12,10 +12,10 @@ class Member extends User{
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){
ufRoles.push( this.server.getRole(rawRole) );
ufRoles.push( this.server.getRole("id", rawRole) );
}
return ufRoles;

View File

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

View File

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