Removed trailing spaces, added unbanMember and kickMember

This commit is contained in:
abalabahaha
2015-11-11 18:27:08 -08:00
parent bb716480b1
commit 3e37c5d91f
20 changed files with 320 additions and 176 deletions

View File

@@ -327,6 +327,38 @@ var Client = (function (_EventEmitter) {
}); });
}; };
//def unbanMember
Client.prototype.unbanMember = function unbanMember(user, server) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
self.internal.unbanMember(user, server).then(function () {
callback();
resolve();
})["catch"](function (e) {
callback(e);reject(e);
});
});
};
//def kickMember
Client.prototype.kickMember = function kickMember(user, server) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
self.internal.kickMember(user, server).then(function () {
callback();
resolve();
})["catch"](function (e) {
callback(e);reject(e);
});
});
};
//def createRole //def createRole
Client.prototype.createRole = function createRole(server) { Client.prototype.createRole = function createRole(server) {

View File

@@ -525,6 +525,44 @@ var InternalClient = (function () {
}); });
}; };
// def unbanMember
InternalClient.prototype.unbanMember = function unbanMember(user, server) {
var self = this;
return new Promise(function (resolve, reject) {
user = self.resolver.resolveUser(user);
server = self.resolver.resolveServer(server);
request.delete(Endpoints.SERVER_BANS(server.id) + "/" + user.id).set("authorization", self.token).end(function (err, res) {
if (err) {
reject(err);
} else {
resolve();
}
});
});
};
// def kickMember
InternalClient.prototype.kickMember = function kickMember(user, server) {
var self = this;
return new Promise(function (resolve, reject) {
user = self.resolver.resolveUser(user);
server = self.resolver.resolveServer(server);
request.delete(Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id).set("authorization", self.token).end(function (err, res) {
if (err) {
reject(err);
} else {
resolve();
}
});
});
};
// def createRole // def createRole
InternalClient.prototype.createRole = function createRole(server, data) { InternalClient.prototype.createRole = function createRole(server, data) {

View File

@@ -13,23 +13,23 @@ class Client extends EventEmitter {
this.options = options || {}; this.options = options || {};
this.internal = new InternalClient(this); this.internal = new InternalClient(this);
} }
get users(){ get users(){
return this.internal.users; return this.internal.users;
} }
get channels(){ get channels(){
return this.internal.channels; return this.internal.channels;
} }
get servers(){ get servers(){
return this.internal.servers; return this.internal.servers;
} }
get privateChannels(){ get privateChannels(){
return this.internal.private_channels; return this.internal.private_channels;
} }
// def login // def login
login(email, password, cb = function (err, token) { }) { login(email, password, cb = function (err, token) { }) {
var self = this; var self = this;
@@ -47,7 +47,7 @@ class Client extends EventEmitter {
}); });
} }
// def logout // def logout
logout(cb = function (err) { }) { logout(cb = function (err) { }) {
var self = this; var self = this;
@@ -86,7 +86,7 @@ class Client extends EventEmitter {
}); });
} }
// def sendTTSMessage // def sendTTSMessage
sendTTSMessage(where, content, callback = function (e, m) { }) { sendTTSMessage(where, content, callback = function (e, m) { }) {
var self = this; var self = this;
@@ -131,7 +131,7 @@ class Client extends EventEmitter {
}); });
} }
// def replyTTS // def replyTTS
replyTTS(where, content, callback = function () { }) { replyTTS(where, content, callback = function () { }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@@ -174,7 +174,7 @@ class Client extends EventEmitter {
// options is the callback // options is the callback
callback = options; callback = options;
} }
self.internal.updateMessage(msg, content, options) self.internal.updateMessage(msg, content, options)
.then(msg => { .then(msg => {
callback(null, msg); callback(null, msg);
@@ -184,13 +184,13 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
// def getChannelLogs // def getChannelLogs
getChannelLogs(where, limit=500, options={}, callback=function(err, logs){}){ getChannelLogs(where, limit=500, options={}, callback=function(err, logs){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (typeof options === "function") { if (typeof options === "function") {
@@ -206,11 +206,11 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
// def sendFile // def sendFile
sendFile(where, attachment, name="image.png", callback=function(err, m){}){ sendFile(where, attachment, name="image.png", callback=function(err, m){}){
var self = this; var self = this;
@@ -224,10 +224,10 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
createServer(name, region="london", callback=function(err, srv){}){ createServer(name, region="london", callback=function(err, srv){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@@ -242,12 +242,12 @@ class Client extends EventEmitter {
}) })
}); });
} }
// def leaveServer // def leaveServer
leaveServer(server, callback=function(err){}){ leaveServer(server, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.leaveServer(server) self.internal.leaveServer(server)
.then(() => { .then(() => {
callback(); resolve(); callback(); resolve();
@@ -255,10 +255,10 @@ class Client extends EventEmitter {
.catch(e => { .catch(e => {
callback(e); reject(e); callback(e); reject(e);
}) })
}); });
} }
// def createChannel // def createChannel
createChannel(server, name, type="text", callback=function(err,channel){}){ createChannel(server, name, type="text", callback=function(err,channel){}){
var self = this; var self = this;
@@ -274,15 +274,15 @@ class Client extends EventEmitter {
.catch(e => { .catch(e => {
callback(e); reject(e); callback(e); reject(e);
}) })
}); });
} }
// def deleteChannel // def deleteChannel
deleteChannel(channel, callback=function(err){}){ deleteChannel(channel, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.deleteChannel(channel) self.internal.deleteChannel(channel)
.then( () => { .then( () => {
callback(); callback();
@@ -291,10 +291,10 @@ class Client extends EventEmitter {
.catch( e => { .catch( e => {
callback(e); reject(e); callback(e); reject(e);
}) })
}); });
} }
//def banMember //def banMember
banMember(user, server, length=1, callback=function(err){}){ banMember(user, server, length=1, callback=function(err){}){
var self = this; var self = this;
@@ -311,10 +311,42 @@ class Client extends EventEmitter {
.catch( e => { .catch( e => {
callback(e); reject(e); callback(e); reject(e);
}) })
}); });
} }
//def unbanMember
unbanMember(user, server, callback=function(err){}){
var self = this;
return new Promise((resolve, reject) => {
self.internal.unbanMember(user, server)
.then( () => {
callback();
resolve();
})
.catch( e => {
callback(e); reject(e);
})
});
}
//def kickMember
kickMember(user, server, callback=function(err){}){
var self = this;
return new Promise((resolve, reject) => {
self.internal.kickMember(user, server)
.then( () => {
callback();
resolve();
})
.catch( e => {
callback(e); reject(e);
})
});
}
//def createRole //def createRole
createRole(server, data=null, callback=function(err,res){}){ createRole(server, data=null, callback=function(err,res){}){
var self = this; var self = this;
@@ -332,16 +364,16 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
//def deleteRole //def deleteRole
deleteRole(role, callback=function(err){}){ deleteRole(role, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.deleteRole(role) self.internal.deleteRole(role)
.then(() => { .then(() => {
callback(); callback();
@@ -349,18 +381,18 @@ class Client extends EventEmitter {
}) })
.catch(e => { .catch(e => {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
//def addMemberToRole //def addMemberToRole
addMemberToRole(member, role, callback=function(err){}){ addMemberToRole(member, role, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.addMemberToRole(member, role) self.internal.addMemberToRole(member, role)
.then(() => { .then(() => {
callback(); callback();
@@ -368,22 +400,22 @@ class Client extends EventEmitter {
}) })
.catch(e => { .catch(e => {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
// def addUserToRole // def addUserToRole
addUserToRole(member, role, callback=function(err){}){ addUserToRole(member, role, callback=function(err){}){
return this.addMemberToRole(member, role, callback); return this.addMemberToRole(member, role, callback);
} }
// def removeMemberFromRole // def removeMemberFromRole
removeMemberFromRole(member, role, callback=function(err){}){ removeMemberFromRole(member, role, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.removeMemberFromRole(member, role) self.internal.removeMemberFromRole(member, role)
.then(() => { .then(() => {
callback(); callback();
@@ -391,17 +423,17 @@ class Client extends EventEmitter {
}) })
.catch(e => { .catch(e => {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
// def removeUserFromRole // def removeUserFromRole
removeUserFromRole(member, role, callback=function(err){}){ removeUserFromRole(member, role, callback=function(err){}){
return this.removeUserFromRole(member, role, callback); return this.removeUserFromRole(member, role, callback);
} }
// def createInvite // def createInvite
createInvite(chanServ, options, callback=function(err,invite){}){ createInvite(chanServ, options, callback=function(err,invite){}){
var self = this; var self = this;
@@ -410,7 +442,7 @@ class Client extends EventEmitter {
// length is the callback // length is the callback
callback = options; callback = options;
} }
self.internal.createInvite(chanServ, options) self.internal.createInvite(chanServ, options)
.then(invite => { .then(invite => {
callback(null, invite); callback(null, invite);
@@ -418,17 +450,17 @@ class Client extends EventEmitter {
}) })
.catch(e => { .catch(e => {
callback(e); callback(e);
reject(e); reject(e);
}); });
}); });
} }
// def overwritePermissions // def overwritePermissions
overwritePermissions(channel, role, options={}, callback=function(err){}){ overwritePermissions(channel, role, options={}, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.overwritePermissions(channel, role, options) self.internal.overwritePermissions(channel, role, options)
.then(() => { .then(() => {
callback(); callback();
@@ -438,15 +470,15 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}) })
}); });
} }
// def setTopic // def setTopic
setTopic(channel, topic, callback=function(err){}){ setTopic(channel, topic, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.setTopic(channel, topic) self.internal.setTopic(channel, topic)
.then(() => { .then(() => {
callback(); callback();
@@ -456,15 +488,15 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}) })
} }
//def setChannelName //def setChannelName
setChannelName(channel, topic, callback=function(err){}){ setChannelName(channel, topic, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.setChannelName(channel, topic) self.internal.setChannelName(channel, topic)
.then(() => { .then(() => {
callback(); callback();
@@ -474,15 +506,15 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}) })
} }
//def setChannelNameAndTopic //def setChannelNameAndTopic
setChannelNameAndTopic(channel, name, topic, callback=function(err){}){ setChannelNameAndTopic(channel, name, topic, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.setChannelNameAndTopic(channel, name, topic) self.internal.setChannelNameAndTopic(channel, name, topic)
.then(() => { .then(() => {
callback(); callback();
@@ -492,15 +524,15 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}) })
} }
//def updateChannel //def updateChannel
updateChannel(channel, data, callback=function(err){}){ updateChannel(channel, data, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
self.internal.updateChannel(channel, data) self.internal.updateChannel(channel, data)
.then(() => { .then(() => {
callback(); callback();
@@ -510,15 +542,15 @@ class Client extends EventEmitter {
callback(e); callback(e);
reject(e); reject(e);
}); });
}) })
} }
//def joinVoiceChannel //def joinVoiceChannel
joinVoiceChannel(channel, callback=function(err){}){ joinVoiceChannel(channel, callback=function(err){}){
var self = this; var self = this;
return new Promise((resolve, reject)=>{ return new Promise((resolve, reject)=>{
self.internal.joinVoiceChannel(channel) self.internal.joinVoiceChannel(channel)
.then(chan => { .then(chan => {
callback(null, chan); callback(null, chan);
@@ -528,7 +560,7 @@ class Client extends EventEmitter {
callback(err); callback(err);
reject(err); reject(err);
}); });
}); });
} }
} }

View File

@@ -34,7 +34,7 @@ class InternalClient {
if (this.client.options.compress) { if (this.client.options.compress) {
zlib = require("zlib"); zlib = require("zlib");
} }
// creates 4 caches with discriminators based on ID // creates 4 caches with discriminators based on ID
this.users = new Cache(); this.users = new Cache();
this.channels = new Cache(); this.channels = new Cache();
@@ -43,7 +43,7 @@ class InternalClient {
this.voiceConnection = null; this.voiceConnection = null;
this.resolver = new Resolver(this); this.resolver = new Resolver(this);
} }
//def leaveVoiceChannel //def leaveVoiceChannel
leaveVoiceChannel() { leaveVoiceChannel() {
var self = this; var self = this;
@@ -57,7 +57,7 @@ class InternalClient {
} }
}); });
} }
//def joinVoiceChannel //def joinVoiceChannel
joinVoiceChannel(chann) { joinVoiceChannel(chann) {
var self = this; var self = this;
@@ -107,7 +107,7 @@ class InternalClient {
}); });
} }
// def createServer // def createServer
createServer(name, region = "london") { createServer(name, region = "london") {
var self = this; var self = this;
@@ -133,7 +133,7 @@ class InternalClient {
}); });
}); });
} }
//def leaveServer //def leaveServer
leaveServer(srv) { leaveServer(srv) {
var self = this; var self = this;
@@ -163,7 +163,7 @@ class InternalClient {
} }
}); });
} }
// def login // def login
login(email, password) { login(email, password) {
var self = this; var self = this;
@@ -241,7 +241,7 @@ class InternalClient {
}); });
} }
// def startPM // def startPM
startPM(resUser) { startPM(resUser) {
var self = this; var self = this;
@@ -249,7 +249,7 @@ class InternalClient {
var user = self.resolver.resolveUser(resUser); var user = self.resolver.resolveUser(resUser);
if (user) { if (user) {
// start the PM // start the PM
request request
.post(`${Endpoints.USER_CHANNELS(user.id) }`) .post(`${Endpoints.USER_CHANNELS(user.id) }`)
@@ -289,7 +289,7 @@ class InternalClient {
}); });
} }
// def sendMessage // def sendMessage
sendMessage(where, _content, options = {}) { sendMessage(where, _content, options = {}) {
var self = this; var self = this;
@@ -365,7 +365,7 @@ class InternalClient {
}); });
} }
// def updateMessage // def updateMessage
updateMessage(msg, _content, options = {}) { updateMessage(msg, _content, options = {}) {
@@ -405,7 +405,7 @@ class InternalClient {
}); });
} }
// def sendFile // def sendFile
sendFile(where, _file, name = "image.png") { sendFile(where, _file, name = "image.png") {
var self = this; var self = this;
@@ -481,7 +481,7 @@ class InternalClient {
}); });
} }
// def createChannel // def createChannel
createChannel(server, name, type = "text") { createChannel(server, name, type = "text") {
var self = this; var self = this;
@@ -512,7 +512,7 @@ class InternalClient {
}); });
} }
// def deleteChannel // def deleteChannel
deleteChannel(_channel) { deleteChannel(_channel) {
var self = this; var self = this;
@@ -536,7 +536,7 @@ class InternalClient {
} }
}); });
} }
// def banMember // def banMember
banMember(user, server, length = 1) { banMember(user, server, length = 1) {
var self = this; var self = this;
@@ -557,7 +557,49 @@ class InternalClient {
}); });
}); });
} }
// def unbanMember
unbanMember(user, server) {
var self = this;
return new Promise((resolve, reject) => {
user = self.resolver.resolveUser(user);
server = self.resolver.resolveServer(server);
request
.delete(`${Endpoints.SERVER_BANS(server.id) }/${user.id}`)
.set("authorization", self.token)
.end((err, res) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
// def kickMember
kickMember(user, server) {
var self = this;
return new Promise((resolve, reject) => {
user = self.resolver.resolveUser(user);
server = self.resolver.resolveServer(server);
request
.delete(`${Endpoints.SERVER_MEMBERS(server.id) }/${user.id}`)
.set("authorization", self.token)
.end((err, res) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
// def createRole // def createRole
createRole(server, data) { createRole(server, data) {
var self = this; var self = this;
@@ -652,7 +694,7 @@ class InternalClient {
}); });
} }
//def addMemberToRole //def addMemberToRole
addMemberToRole(member, role) { addMemberToRole(member, role) {
var self = this; var self = this;
@@ -689,7 +731,7 @@ class InternalClient {
}); });
} }
//def removeMemberFromRole //def removeMemberFromRole
removeMemberFromRole(member, role) { removeMemberFromRole(member, role) {
var self = this; var self = this;
@@ -732,7 +774,7 @@ class InternalClient {
}); });
} }
// def createInvite // def createInvite
createInvite(chanServ, options) { createInvite(chanServ, options) {
var self = this; var self = this;
@@ -781,7 +823,7 @@ class InternalClient {
}); });
} }
//def overwritePermissions //def overwritePermissions
overwritePermissions(channel, role, updated) { overwritePermissions(channel, role, updated) {
var self = this; var self = this;
@@ -842,7 +884,7 @@ class InternalClient {
} }
}); });
} }
//def setTopic //def setTopic
setTopic(chann, topic = "") { setTopic(chann, topic = "") {
var self = this; var self = this;
@@ -934,7 +976,7 @@ class InternalClient {
}); });
} }
//def updateChannel //def updateChannel
updateChannel(chann, data) { updateChannel(chann, data) {
return this.setChannelNameAndTopic(chann, data.name, data.topic); return this.setChannelNameAndTopic(chann, data.name, data.topic);

View File

@@ -15,7 +15,7 @@ class Resolver {
constructor(internal) { constructor(internal) {
this.internal = internal; this.internal = internal;
} }
resolveServer(resource){ resolveServer(resource){
if(resource instanceof Server){ if(resource instanceof Server){
return resource; return resource;
@@ -49,10 +49,10 @@ class Resolver {
} }
resolveString(resource) { resolveString(resource) {
// accepts Array, Channel, Server, User, Message, String and anything // accepts Array, Channel, Server, User, Message, String and anything
// toString()-able // toString()-able
var final = resource; var final = resource;
if (resource instanceof Array) { if (resource instanceof Array) {
final = resource.join("\n"); final = resource.join("\n");
@@ -98,7 +98,7 @@ class Resolver {
return found; return found;
} }
resolveVoiceChannel(resource) { resolveVoiceChannel(resource) {
// resolveChannel will also work but this is more apt // resolveChannel will also work but this is more apt
if(resource instanceof VoiceChannel){ if(resource instanceof VoiceChannel){

View File

@@ -7,7 +7,7 @@ var Endpoints = {
GATEWAY: `${API}/gateway`, GATEWAY: `${API}/gateway`,
USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`, USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`,
AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`, AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`,
// servers // servers
SERVERS: `${API}/guilds`, SERVERS: `${API}/guilds`,
SERVER: (serverID) => `${Endpoints.SERVERS}/${serverID}`, SERVER: (serverID) => `${Endpoints.SERVERS}/${serverID}`,
@@ -20,7 +20,7 @@ var Endpoints = {
SERVER_INTEGRATIONS: (serverID) => `${Endpoints.SERVER(serverID) }/integrations`, SERVER_INTEGRATIONS: (serverID) => `${Endpoints.SERVER(serverID) }/integrations`,
SERVER_MEMBERS: (serverID) => `${Endpoints.SERVER(serverID) }/members`, SERVER_MEMBERS: (serverID) => `${Endpoints.SERVER(serverID) }/members`,
SERVER_CHANNELS: (serverID) => `${Endpoints.SERVER(serverID) }/channels`, SERVER_CHANNELS: (serverID) => `${Endpoints.SERVER(serverID) }/channels`,
// channels // channels
CHANNELS: `${API}/channels`, CHANNELS: `${API}/channels`,
CHANNEL: (channelID) => `${Endpoints.CHANNELS}/${channelID}`, CHANNEL: (channelID) => `${Endpoints.CHANNELS}/${channelID}`,
@@ -57,7 +57,7 @@ var Permissions = {
voiceDeafenMembers: 1 << 23, voiceDeafenMembers: 1 << 23,
voiceMoveMembers: 1 << 24, voiceMoveMembers: 1 << 24,
voiceUseVAD: 1 << 25 voiceUseVAD: 1 << 25
}; };
var PacketType = { var PacketType = {

View File

@@ -5,13 +5,13 @@ var Cache = require("../Util/Cache.js");
var PermissionOverwrite = require("./PermissionOverwrite.js"); var PermissionOverwrite = require("./PermissionOverwrite.js");
class Channel extends Equality{ class Channel extends Equality{
constructor(data, client){ constructor(data, client){
super(); super();
this.id = data.id; this.id = data.id;
this.client = client; this.client = client;
} }
} }
module.exports = Channel; module.exports = Channel;

View File

@@ -6,11 +6,11 @@ class ChannelPermissions{
constructor(permissions){ constructor(permissions){
this.permissions = permissions; this.permissions = permissions;
} }
serialise(explicit){ serialise(explicit){
var hp = (perm) => this.hasPermission(perm, explicit); var hp = (perm) => this.hasPermission(perm, explicit);
return { return {
// general // general
createInstantInvite : hp( Permissions.createInstantInvite ), createInstantInvite : hp( Permissions.createInstantInvite ),
@@ -37,12 +37,12 @@ class ChannelPermissions{
voiceUseVAD : hp( Permissions.voiceUseVAD ) voiceUseVAD : hp( Permissions.voiceUseVAD )
}; };
} }
serialize(){ serialize(){
// ;n; // ;n;
return this.serialise(); return this.serialise();
} }
hasPermission(perm, explicit=false){ hasPermission(perm, explicit=false){
if( perm instanceof String || typeof perm === "string" ){ if( perm instanceof String || typeof perm === "string" ){
perm = Permissions[perm]; perm = Permissions[perm];

View File

@@ -17,7 +17,7 @@ class Invite{
this.inviter = client.internal.users.get("id", data.inviter.id); this.inviter = client.internal.users.get("id", data.inviter.id);
this.xkcd = data.xkcdpass; this.xkcd = data.xkcdpass;
} }
toString(){ toString(){
return `https://discord.gg/${this.code}`; return `https://discord.gg/${this.code}`;
} }

View File

@@ -14,18 +14,18 @@ class Message{
this.timestamp = Date.parse(data.timestamp); this.timestamp = Date.parse(data.timestamp);
this.everyoneMentioned = data.mention_everyone; this.everyoneMentioned = data.mention_everyone;
this.id = data.id; this.id = data.id;
if(data.edited_timestamp) if(data.edited_timestamp)
this.editedTimestamp = Date.parse(data.edited_timestamp); this.editedTimestamp = Date.parse(data.edited_timestamp);
if(data.author instanceof User) if(data.author instanceof User)
this.author = data.author; this.author = data.author;
else else
this.author = client.internal.users.add(new User(data.author, client)); this.author = client.internal.users.add(new User(data.author, client));
this.content = data.content; this.content = data.content;
this.mentions = new Cache(); this.mentions = new Cache();
data.mentions.forEach((mention) => { data.mentions.forEach((mention) => {
// this is .add and not .get because it allows the bot to cache // this is .add and not .get because it allows the bot to cache
// users from messages from logs who may have left the server and were // users from messages from logs who may have left the server and were
@@ -36,7 +36,7 @@ class Message{
this.mentions.add(client.internal.users.add(new User(mention, client))); this.mentions.add(client.internal.users.add(new User(mention, client)));
}); });
} }
toString(){ toString(){
return this.content; return this.content;
} }

View File

@@ -9,19 +9,19 @@ class PMChannel extends Equality{
constructor(data, client){ constructor(data, client){
super(); super();
this.client = client; this.client = client;
this.type = data.type || "text"; this.type = data.type || "text";
this.id = data.id; this.id = data.id;
this.lastMessageId = data.last_message_id; this.lastMessageId = data.last_message_id;
this.messages = new Cache("id", 1000); this.messages = new Cache("id", 1000);
this.recipient = this.client.internal.users.add(new User(data.recipient, this.client)); this.recipient = this.client.internal.users.add(new User(data.recipient, this.client));
} }
/* warning! may return null */ /* warning! may return null */
get lastMessage(){ get lastMessage(){
return this.messages.get("id", this.lastMessageID); return this.messages.get("id", this.lastMessageID);
} }
toString(){ toString(){
return this.recipient.toString(); return this.recipient.toString();
} }

View File

@@ -3,7 +3,7 @@
var Permissions = require("../Constants.js").Permissions; var Permissions = require("../Constants.js").Permissions;
class PermissionOverwrite { class PermissionOverwrite {
constructor(data) { constructor(data) {
this.id = data.id; this.id = data.id;
this.type = data.type; // member or role this.type = data.type; // member or role
@@ -19,14 +19,14 @@ class PermissionOverwrite {
// these permissions do not exist in overwrites. // these permissions do not exist in overwrites.
continue; continue;
} }
if(!!(this.allow & Permissions[permName])){ if(!!(this.allow & Permissions[permName])){
allowed.push(permName); allowed.push(permName);
} }
} }
return allowed; return allowed;
} }
// returns an array of denied permissions // returns an array of denied permissions
get denied(){ get denied(){
var denied = []; var denied = [];
@@ -35,14 +35,14 @@ class PermissionOverwrite {
// these permissions do not exist in overwrites. // these permissions do not exist in overwrites.
continue; continue;
} }
if(!!(this.deny & Permissions[permName])){ if(!!(this.deny & Permissions[permName])){
denied.push(permName); denied.push(permName);
} }
} }
return denied; return denied;
} }
setAllowed(allowedArray){ setAllowed(allowedArray){
allowedArray.forEach( (permission) => { allowedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){ if(permission instanceof String || typeof permission === "string"){
@@ -53,7 +53,7 @@ class PermissionOverwrite {
} }
} ); } );
} }
setDenied(deniedArray){ setDenied(deniedArray){
deniedArray.forEach( (permission) => { deniedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){ if(permission instanceof String || typeof permission === "string"){
@@ -64,7 +64,7 @@ class PermissionOverwrite {
} }
} ); } );
} }
} }
module.exports = PermissionOverwrite; module.exports = PermissionOverwrite;

View File

@@ -40,11 +40,11 @@ class Role{
this.server = server; this.server = server;
this.client = client; this.client = client;
} }
serialise(explicit){ serialise(explicit){
var hp = (perm) => this.hasPermission(perm, explicit); var hp = (perm) => this.hasPermission(perm, explicit);
return { return {
// general // general
createInstantInvite : hp( Permissions.createInstantInvite ), createInstantInvite : hp( Permissions.createInstantInvite ),
@@ -71,12 +71,12 @@ class Role{
voiceUseVAD : hp( Permissions.voiceUseVAD ) voiceUseVAD : hp( Permissions.voiceUseVAD )
}; };
} }
serialize(){ serialize(){
// ;n; // ;n;
return this.serialise(); return this.serialise();
} }
hasPermission(perm, explicit=false){ hasPermission(perm, explicit=false){
if( perm instanceof String || typeof perm === "string" ){ if( perm instanceof String || typeof perm === "string" ){
perm = Permissions[perm]; perm = Permissions[perm];
@@ -93,10 +93,10 @@ class Role{
// e.g. // e.g.
// !!(36953089 & Permissions.manageRoles) = not allowed to manage roles // !!(36953089 & Permissions.manageRoles) = not allowed to manage roles
// !!(36953089 & (1 << 21)) = voice speak allowed // !!(36953089 & (1 << 21)) = voice speak allowed
return !!(this.permissions & perm); return !!(this.permissions & perm);
} }
setPermission(permission, value){ setPermission(permission, value){
if( permission instanceof String || typeof permission === "string" ){ if( permission instanceof String || typeof permission === "string" ){
permission = Permissions[permission]; permission = Permissions[permission];
@@ -110,7 +110,7 @@ class Role{
} }
} }
} }
setPermissions(obj){ setPermissions(obj){
obj.forEach((value, permission) => { obj.forEach((value, permission) => {
if( permission instanceof String || typeof permission === "string" ){ if( permission instanceof String || typeof permission === "string" ){
@@ -122,7 +122,7 @@ class Role{
} }
}); });
} }
colorAsHex(){ colorAsHex(){
var val = this.color.toString(); var val = this.color.toString();
while(val.length < 6){ while(val.length < 6){

View File

@@ -16,7 +16,7 @@ class ServerChannel extends Channel{
this.permissionOverwrites.add( new PermissionOverwrite(permission) ); this.permissionOverwrites.add( new PermissionOverwrite(permission) );
}); });
} }
permissionsOf(user){ permissionsOf(user){
user = this.client.internal.resolver.resolveUser(user); user = this.client.internal.resolver.resolveUser(user);
if(user){ if(user){
@@ -24,11 +24,11 @@ class ServerChannel extends Channel{
return new ChannelPermissions(4294967295); return new ChannelPermissions(4294967295);
} }
var everyoneRole = this.server.roles.get("name", "@everyone"); var everyoneRole = this.server.roles.get("name", "@everyone");
var userRoles = [everyoneRole].concat(this.server.rolesOf(user) || []); var userRoles = [everyoneRole].concat(this.server.rolesOf(user) || []);
var userRolesID = userRoles.map((v) => v.id); var userRolesID = userRoles.map((v) => v.id);
var roleOverwrites = [], memberOverwrites = []; var roleOverwrites = [], memberOverwrites = [];
this.permissionOverwrites.forEach((overwrite) => { this.permissionOverwrites.forEach((overwrite) => {
if(overwrite.type === "member" && overwrite.id === user.id){ if(overwrite.type === "member" && overwrite.id === user.id){
memberOverwrites.push(overwrite); memberOverwrites.push(overwrite);
@@ -36,29 +36,29 @@ class ServerChannel extends Channel{
roleOverwrites.push(overwrite); roleOverwrites.push(overwrite);
} }
}); });
var permissions = 0; var permissions = 0;
for(var serverRole of userRoles){ for(var serverRole of userRoles){
permissions |= serverRole.permissions; permissions |= serverRole.permissions;
} }
for(var overwrite of roleOverwrites.concat(memberOverwrites)){ for(var overwrite of roleOverwrites.concat(memberOverwrites)){
permissions = permissions & ~overwrite.deny; permissions = permissions & ~overwrite.deny;
permissions = permissions | overwrite.allow; permissions = permissions | overwrite.allow;
} }
return new ChannelPermissions(permissions); return new ChannelPermissions(permissions);
}else{ }else{
return null; return null;
} }
} }
permsOf(user){ permsOf(user){
return this.permissionsOf(user); return this.permissionsOf(user);
} }
toString(){ toString(){
return this.name; return this.name;
} }

View File

@@ -6,14 +6,14 @@ var Cache = require("../Util/Cache.js");
class TextChannel extends ServerChannel{ class TextChannel extends ServerChannel{
constructor(data, client, server){ constructor(data, client, server){
super(data, client, server); super(data, client, server);
this.name = data.name; this.name = data.name;
this.topic = data.topic; this.topic = data.topic;
this.position = data.position; this.position = data.position;
this.lastMessageID = data.last_message_id; this.lastMessageID = data.last_message_id;
this.messages = new Cache("id", client.options.maximumMessages); this.messages = new Cache("id", client.options.maximumMessages);
} }
/* warning! may return null */ /* warning! may return null */
get lastMessage(){ get lastMessage(){
return this.messages.get("id", this.lastMessageID); return this.messages.get("id", this.lastMessageID);

View File

@@ -18,7 +18,7 @@ class User extends Equality{
channel : null channel : null
}; };
} }
get avatarURL(){ get avatarURL(){
if(!this.avatar){ if(!this.avatar){
return null; return null;
@@ -26,15 +26,15 @@ class User extends Equality{
return Endpoints.AVATAR(this.id, this.avatar); return Endpoints.AVATAR(this.id, this.avatar);
} }
} }
mention(){ mention(){
return `<@${this.id}>`; return `<@${this.id}>`;
} }
toString(){ toString(){
return this.mention(); return this.mention();
} }
equalsStrict(obj){ equalsStrict(obj){
if(obj instanceof User) if(obj instanceof User)
return ( return (

View File

@@ -2,29 +2,29 @@
The Equality Class is just used to show The Equality Class is just used to show
that a Class has an ID that can be used to that a Class has an ID that can be used to
check for equality. check for equality.
Never use == or === when comparing Never use == or === when comparing
objects in discord.js, they will be different objects in discord.js, they will be different
instances sometimes. instances sometimes.
Instead, use objectThatExtendsEquality.equals() Instead, use objectThatExtendsEquality.equals()
*/ */
class Equality{ class Equality{
constructor(){ constructor(){
} }
get eqDiscriminator(){ get eqDiscriminator(){
return "id"; return "id";
} }
equals(object){ equals(object){
if(object && object[this.eqDiscriminator] == this[this.eqDiscriminator]){ if(object && object[this.eqDiscriminator] == this[this.eqDiscriminator]){
return true; return true;
} }
return false; return false;
} }
equalsStrict(object){ equalsStrict(object){
// override per class type // override per class type
return; return;

View File

@@ -12,25 +12,25 @@ var VoicePacket = require("./VoicePacket.js");
class AudioEncoder{ class AudioEncoder{
constructor(){ constructor(){
if(opus){ if(opus){
this.opus = new opus.OpusEncoder(48000, 1); this.opus = new opus.OpusEncoder(48000, 1);
} }
this.choice = false; this.choice = false;
} }
opusBuffer(buffer){ opusBuffer(buffer){
return this.opus.encode(buffer, 1920); return this.opus.encode(buffer, 1920);
} }
getCommand(force){ getCommand(force){
if(this.choice && force) if(this.choice && force)
return choice; return choice;
var choices = ["avconv", "ffmpeg"]; var choices = ["avconv", "ffmpeg"];
for(var choice of choices){ for(var choice of choices){
var p = cpoc.spawnSync(choice); var p = cpoc.spawnSync(choice);
if(!p.error){ if(!p.error){
@@ -38,10 +38,10 @@ class AudioEncoder{
return choice; return choice;
} }
} }
return "help"; return "help";
} }
encodeStream(stream, callback=function(err, buffer){}){ encodeStream(stream, callback=function(err, buffer){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@@ -53,9 +53,9 @@ class AudioEncoder{
"pipe:1", "pipe:1",
"-i", "-" "-i", "-"
]); ]);
stream.pipe(enc.stdin); stream.pipe(enc.stdin);
enc.stdout.once("readable", function() { enc.stdout.once("readable", function() {
callback(null, { callback(null, {
proc : enc, proc : enc,
@@ -68,19 +68,19 @@ class AudioEncoder{
instream : stream instream : stream
}); });
}); });
enc.stdout.on("end", function() { enc.stdout.on("end", function() {
callback("end"); callback("end");
reject("end"); reject("end");
}); });
enc.stdout.on("close", function() { enc.stdout.on("close", function() {
callback("close"); callback("close");
reject("close"); reject("close");
}); });
}); });
} }
encodeFile(file, callback=function(err, buffer){}){ encodeFile(file, callback=function(err, buffer){}){
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@@ -92,7 +92,7 @@ class AudioEncoder{
"pipe:1", "pipe:1",
"-i", file "-i", file
]); ]);
enc.stdout.once("readable", function() { enc.stdout.once("readable", function() {
callback(null, { callback(null, {
proc : enc, proc : enc,
@@ -103,12 +103,12 @@ class AudioEncoder{
stream : enc.stdout stream : enc.stdout
}); });
}); });
enc.stdout.on("end", function() { enc.stdout.on("end", function() {
callback("end"); callback("end");
reject("end"); reject("end");
}); });
enc.stdout.on("close", function() { enc.stdout.on("close", function() {
callback("close"); callback("close");
reject("close"); reject("close");

View File

@@ -2,7 +2,7 @@
/* /*
Major credit to izy521 who is the creator of Major credit to izy521 who is the creator of
https://github.com/izy521/discord.io, https://github.com/izy521/discord.io,
without his help voice chat in discord.js would not have without his help voice chat in discord.js would not have
been possible! been possible!
*/ */
@@ -88,7 +88,7 @@ class VoiceConnection extends EventEmitter {
self.playingIntent = retStream; self.playingIntent = retStream;
function send() { function send() {
if (!self.playingIntent || !self.playing) { if (!self.playingIntent || !self.playing) {
self.setSpeaking(false); self.setSpeaking(false);
retStream.emit("end"); retStream.emit("end");
@@ -216,7 +216,7 @@ class VoiceConnection extends EventEmitter {
} }
}) })
} }
playRawStream(stream, callback = function (err, str) { }) { playRawStream(stream, callback = function (err, str) { }) {
var self = this; var self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {

View File

@@ -2,24 +2,24 @@
class VoicePacket{ class VoicePacket{
constructor(data, sequence, time, ssrc){ constructor(data, sequence, time, ssrc){
var audioBuffer = data, var audioBuffer = data,
returnBuffer = new Buffer(audioBuffer.length + 12); returnBuffer = new Buffer(audioBuffer.length + 12);
returnBuffer.fill(0); returnBuffer.fill(0);
returnBuffer[0] = 0x80; returnBuffer[0] = 0x80;
returnBuffer[1] = 0x78; returnBuffer[1] = 0x78;
returnBuffer.writeUIntBE(sequence, 2, 2); returnBuffer.writeUIntBE(sequence, 2, 2);
returnBuffer.writeUIntBE(time, 4, 4); returnBuffer.writeUIntBE(time, 4, 4);
returnBuffer.writeUIntBE(ssrc, 8, 4); returnBuffer.writeUIntBE(ssrc, 8, 4);
for (var i=0; i<audioBuffer.length; i++) { for (var i=0; i<audioBuffer.length; i++) {
returnBuffer[i + 12] = audioBuffer[i]; returnBuffer[i + 12] = audioBuffer[i];
} }
return returnBuffer; return returnBuffer;
} }
} }