diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 97ec4df12..f4a0bb9e5 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -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 Client.prototype.createRole = function createRole(server) { diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 760f0c635..d503a4fce 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -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 InternalClient.prototype.createRole = function createRole(server, data) { diff --git a/src/Client/Client.js b/src/Client/Client.js index 4fe32102b..4ba1d0335 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -13,23 +13,23 @@ class Client extends EventEmitter { this.options = options || {}; this.internal = new InternalClient(this); } - + get users(){ return this.internal.users; } - + get channels(){ return this.internal.channels; } - + get servers(){ return this.internal.servers; } - + get privateChannels(){ return this.internal.private_channels; } - + // def login login(email, password, cb = function (err, token) { }) { var self = this; @@ -47,7 +47,7 @@ class Client extends EventEmitter { }); } - + // def logout logout(cb = function (err) { }) { var self = this; @@ -86,7 +86,7 @@ class Client extends EventEmitter { }); } - + // def sendTTSMessage sendTTSMessage(where, content, callback = function (e, m) { }) { var self = this; @@ -131,7 +131,7 @@ class Client extends EventEmitter { }); } - + // def replyTTS replyTTS(where, content, callback = function () { }) { return new Promise((resolve, reject) => { @@ -174,7 +174,7 @@ class Client extends EventEmitter { // options is the callback callback = options; } - + self.internal.updateMessage(msg, content, options) .then(msg => { callback(null, msg); @@ -184,13 +184,13 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }); } - + // def getChannelLogs getChannelLogs(where, limit=500, options={}, callback=function(err, logs){}){ - + var self = this; return new Promise((resolve, reject) => { if (typeof options === "function") { @@ -206,11 +206,11 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }); - + } - + // def sendFile sendFile(where, attachment, name="image.png", callback=function(err, m){}){ var self = this; @@ -224,10 +224,10 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }); } - + createServer(name, region="london", callback=function(err, srv){}){ var self = this; return new Promise((resolve, reject) => { @@ -242,12 +242,12 @@ class Client extends EventEmitter { }) }); } - + // def leaveServer leaveServer(server, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.leaveServer(server) .then(() => { callback(); resolve(); @@ -255,10 +255,10 @@ class Client extends EventEmitter { .catch(e => { callback(e); reject(e); }) - + }); } - + // def createChannel createChannel(server, name, type="text", callback=function(err,channel){}){ var self = this; @@ -274,15 +274,15 @@ class Client extends EventEmitter { .catch(e => { callback(e); reject(e); }) - + }); } - + // def deleteChannel deleteChannel(channel, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.deleteChannel(channel) .then( () => { callback(); @@ -291,10 +291,10 @@ class Client extends EventEmitter { .catch( e => { callback(e); reject(e); }) - + }); } - + //def banMember banMember(user, server, length=1, callback=function(err){}){ var self = this; @@ -311,10 +311,42 @@ class Client extends EventEmitter { .catch( 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 createRole(server, data=null, callback=function(err,res){}){ var self = this; @@ -332,16 +364,16 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }); } - + //def deleteRole deleteRole(role, callback=function(err){}){ - + var self = this; return new Promise((resolve, reject) => { - + self.internal.deleteRole(role) .then(() => { callback(); @@ -349,18 +381,18 @@ class Client extends EventEmitter { }) .catch(e => { callback(e); - reject(e); + reject(e); }); - + }); - + } - + //def addMemberToRole addMemberToRole(member, role, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.addMemberToRole(member, role) .then(() => { callback(); @@ -368,22 +400,22 @@ class Client extends EventEmitter { }) .catch(e => { callback(e); - reject(e); + reject(e); }); - + }); } - + // def addUserToRole addUserToRole(member, role, callback=function(err){}){ return this.addMemberToRole(member, role, callback); } - + // def removeMemberFromRole removeMemberFromRole(member, role, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.removeMemberFromRole(member, role) .then(() => { callback(); @@ -391,17 +423,17 @@ class Client extends EventEmitter { }) .catch(e => { callback(e); - reject(e); + reject(e); }); - + }); } - + // def removeUserFromRole removeUserFromRole(member, role, callback=function(err){}){ return this.removeUserFromRole(member, role, callback); } - + // def createInvite createInvite(chanServ, options, callback=function(err,invite){}){ var self = this; @@ -410,7 +442,7 @@ class Client extends EventEmitter { // length is the callback callback = options; } - + self.internal.createInvite(chanServ, options) .then(invite => { callback(null, invite); @@ -418,17 +450,17 @@ class Client extends EventEmitter { }) .catch(e => { callback(e); - reject(e); + reject(e); }); - + }); } - + // def overwritePermissions overwritePermissions(channel, role, options={}, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.overwritePermissions(channel, role, options) .then(() => { callback(); @@ -438,15 +470,15 @@ class Client extends EventEmitter { callback(e); reject(e); }) - + }); } - + // def setTopic setTopic(channel, topic, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.setTopic(channel, topic) .then(() => { callback(); @@ -456,15 +488,15 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }) } - + //def setChannelName setChannelName(channel, topic, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.setChannelName(channel, topic) .then(() => { callback(); @@ -474,15 +506,15 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }) } - + //def setChannelNameAndTopic setChannelNameAndTopic(channel, name, topic, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.setChannelNameAndTopic(channel, name, topic) .then(() => { callback(); @@ -492,15 +524,15 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }) } - + //def updateChannel updateChannel(channel, data, callback=function(err){}){ var self = this; return new Promise((resolve, reject) => { - + self.internal.updateChannel(channel, data) .then(() => { callback(); @@ -510,15 +542,15 @@ class Client extends EventEmitter { callback(e); reject(e); }); - + }) } - + //def joinVoiceChannel joinVoiceChannel(channel, callback=function(err){}){ var self = this; return new Promise((resolve, reject)=>{ - + self.internal.joinVoiceChannel(channel) .then(chan => { callback(null, chan); @@ -528,7 +560,7 @@ class Client extends EventEmitter { callback(err); reject(err); }); - + }); } } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 907ba1570..92e344907 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -34,7 +34,7 @@ class InternalClient { if (this.client.options.compress) { zlib = require("zlib"); } - + // creates 4 caches with discriminators based on ID this.users = new Cache(); this.channels = new Cache(); @@ -43,7 +43,7 @@ class InternalClient { this.voiceConnection = null; this.resolver = new Resolver(this); } - + //def leaveVoiceChannel leaveVoiceChannel() { var self = this; @@ -57,7 +57,7 @@ class InternalClient { } }); } - + //def joinVoiceChannel joinVoiceChannel(chann) { var self = this; @@ -107,7 +107,7 @@ class InternalClient { }); } - + // def createServer createServer(name, region = "london") { var self = this; @@ -133,7 +133,7 @@ class InternalClient { }); }); } - + //def leaveServer leaveServer(srv) { var self = this; @@ -163,7 +163,7 @@ class InternalClient { } }); } - + // def login login(email, password) { var self = this; @@ -241,7 +241,7 @@ class InternalClient { }); } - + // def startPM startPM(resUser) { var self = this; @@ -249,7 +249,7 @@ class InternalClient { var user = self.resolver.resolveUser(resUser); if (user) { - + // start the PM request .post(`${Endpoints.USER_CHANNELS(user.id) }`) @@ -289,7 +289,7 @@ class InternalClient { }); } - + // def sendMessage sendMessage(where, _content, options = {}) { var self = this; @@ -365,7 +365,7 @@ class InternalClient { }); } - + // def updateMessage updateMessage(msg, _content, options = {}) { @@ -405,7 +405,7 @@ class InternalClient { }); } - + // def sendFile sendFile(where, _file, name = "image.png") { var self = this; @@ -481,7 +481,7 @@ class InternalClient { }); } - + // def createChannel createChannel(server, name, type = "text") { var self = this; @@ -512,7 +512,7 @@ class InternalClient { }); } - + // def deleteChannel deleteChannel(_channel) { var self = this; @@ -536,7 +536,7 @@ class InternalClient { } }); } - + // def banMember banMember(user, server, length = 1) { 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 createRole(server, data) { var self = this; @@ -652,7 +694,7 @@ class InternalClient { }); } - + //def addMemberToRole addMemberToRole(member, role) { var self = this; @@ -689,7 +731,7 @@ class InternalClient { }); } - + //def removeMemberFromRole removeMemberFromRole(member, role) { var self = this; @@ -732,7 +774,7 @@ class InternalClient { }); } - + // def createInvite createInvite(chanServ, options) { var self = this; @@ -781,7 +823,7 @@ class InternalClient { }); } - + //def overwritePermissions overwritePermissions(channel, role, updated) { var self = this; @@ -842,7 +884,7 @@ class InternalClient { } }); } - + //def setTopic setTopic(chann, topic = "") { var self = this; @@ -934,7 +976,7 @@ class InternalClient { }); } - + //def updateChannel updateChannel(chann, data) { return this.setChannelNameAndTopic(chann, data.name, data.topic); diff --git a/src/Client/Resolver/Resolver.js b/src/Client/Resolver/Resolver.js index 6dc88e457..8df817877 100644 --- a/src/Client/Resolver/Resolver.js +++ b/src/Client/Resolver/Resolver.js @@ -15,7 +15,7 @@ class Resolver { constructor(internal) { this.internal = internal; } - + resolveServer(resource){ if(resource instanceof Server){ return resource; @@ -49,10 +49,10 @@ class Resolver { } resolveString(resource) { - + // accepts Array, Channel, Server, User, Message, String and anything // toString()-able - + var final = resource; if (resource instanceof Array) { final = resource.join("\n"); @@ -98,7 +98,7 @@ class Resolver { return found; } - + resolveVoiceChannel(resource) { // resolveChannel will also work but this is more apt if(resource instanceof VoiceChannel){ diff --git a/src/Constants.js b/src/Constants.js index caf061250..653cd77d0 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -7,7 +7,7 @@ var Endpoints = { GATEWAY: `${API}/gateway`, USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`, AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`, - + // servers SERVERS: `${API}/guilds`, SERVER: (serverID) => `${Endpoints.SERVERS}/${serverID}`, @@ -20,7 +20,7 @@ var Endpoints = { SERVER_INTEGRATIONS: (serverID) => `${Endpoints.SERVER(serverID) }/integrations`, SERVER_MEMBERS: (serverID) => `${Endpoints.SERVER(serverID) }/members`, SERVER_CHANNELS: (serverID) => `${Endpoints.SERVER(serverID) }/channels`, - + // channels CHANNELS: `${API}/channels`, CHANNEL: (channelID) => `${Endpoints.CHANNELS}/${channelID}`, @@ -57,7 +57,7 @@ var Permissions = { voiceDeafenMembers: 1 << 23, voiceMoveMembers: 1 << 24, voiceUseVAD: 1 << 25 - + }; var PacketType = { diff --git a/src/Structures/Channel.js b/src/Structures/Channel.js index b36739339..d1a213ca7 100644 --- a/src/Structures/Channel.js +++ b/src/Structures/Channel.js @@ -5,13 +5,13 @@ var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); class Channel extends Equality{ - + constructor(data, client){ super(); this.id = data.id; this.client = client; } - + } module.exports = Channel; \ No newline at end of file diff --git a/src/Structures/ChannelPermissions.js b/src/Structures/ChannelPermissions.js index 9ae1894a1..c4c006632 100644 --- a/src/Structures/ChannelPermissions.js +++ b/src/Structures/ChannelPermissions.js @@ -6,11 +6,11 @@ class ChannelPermissions{ constructor(permissions){ this.permissions = permissions; } - + serialise(explicit){ - + var hp = (perm) => this.hasPermission(perm, explicit); - + return { // general createInstantInvite : hp( Permissions.createInstantInvite ), @@ -37,12 +37,12 @@ class ChannelPermissions{ voiceUseVAD : hp( Permissions.voiceUseVAD ) }; } - + serialize(){ // ;n; return this.serialise(); } - + hasPermission(perm, explicit=false){ if( perm instanceof String || typeof perm === "string" ){ perm = Permissions[perm]; diff --git a/src/Structures/Invite.js b/src/Structures/Invite.js index 0b969d99d..00cf61dd3 100644 --- a/src/Structures/Invite.js +++ b/src/Structures/Invite.js @@ -17,7 +17,7 @@ class Invite{ this.inviter = client.internal.users.get("id", data.inviter.id); this.xkcd = data.xkcdpass; } - + toString(){ return `https://discord.gg/${this.code}`; } diff --git a/src/Structures/Message.js b/src/Structures/Message.js index 003ccfbe3..a4e9dcdc5 100644 --- a/src/Structures/Message.js +++ b/src/Structures/Message.js @@ -14,18 +14,18 @@ class Message{ this.timestamp = Date.parse(data.timestamp); this.everyoneMentioned = data.mention_everyone; this.id = data.id; - + if(data.edited_timestamp) this.editedTimestamp = Date.parse(data.edited_timestamp); - + if(data.author instanceof User) this.author = data.author; else this.author = client.internal.users.add(new User(data.author, client)); - + this.content = data.content; this.mentions = new Cache(); - + data.mentions.forEach((mention) => { // 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 @@ -36,7 +36,7 @@ class Message{ this.mentions.add(client.internal.users.add(new User(mention, client))); }); } - + toString(){ return this.content; } diff --git a/src/Structures/PMChannel.js b/src/Structures/PMChannel.js index 1975a2d8d..4c776d399 100644 --- a/src/Structures/PMChannel.js +++ b/src/Structures/PMChannel.js @@ -9,19 +9,19 @@ class PMChannel extends Equality{ constructor(data, client){ super(); this.client = client; - + this.type = data.type || "text"; this.id = data.id; this.lastMessageId = data.last_message_id; this.messages = new Cache("id", 1000); this.recipient = this.client.internal.users.add(new User(data.recipient, this.client)); } - + /* warning! may return null */ get lastMessage(){ return this.messages.get("id", this.lastMessageID); } - + toString(){ return this.recipient.toString(); } diff --git a/src/Structures/PermissionOverwrite.js b/src/Structures/PermissionOverwrite.js index 1cca7def7..268d18b06 100644 --- a/src/Structures/PermissionOverwrite.js +++ b/src/Structures/PermissionOverwrite.js @@ -3,7 +3,7 @@ var Permissions = require("../Constants.js").Permissions; class PermissionOverwrite { - + constructor(data) { this.id = data.id; this.type = data.type; // member or role @@ -19,14 +19,14 @@ class PermissionOverwrite { // these permissions do not exist in overwrites. continue; } - + if(!!(this.allow & Permissions[permName])){ allowed.push(permName); } } return allowed; } - + // returns an array of denied permissions get denied(){ var denied = []; @@ -35,14 +35,14 @@ class PermissionOverwrite { // these permissions do not exist in overwrites. continue; } - + if(!!(this.deny & Permissions[permName])){ denied.push(permName); } } return denied; } - + setAllowed(allowedArray){ allowedArray.forEach( (permission) => { if(permission instanceof String || typeof permission === "string"){ @@ -53,7 +53,7 @@ class PermissionOverwrite { } } ); } - + setDenied(deniedArray){ deniedArray.forEach( (permission) => { if(permission instanceof String || typeof permission === "string"){ @@ -64,7 +64,7 @@ class PermissionOverwrite { } } ); } - + } module.exports = PermissionOverwrite; \ No newline at end of file diff --git a/src/Structures/Role.js b/src/Structures/Role.js index c2c7b3f6d..213078afe 100644 --- a/src/Structures/Role.js +++ b/src/Structures/Role.js @@ -40,11 +40,11 @@ class Role{ this.server = server; this.client = client; } - + serialise(explicit){ - + var hp = (perm) => this.hasPermission(perm, explicit); - + return { // general createInstantInvite : hp( Permissions.createInstantInvite ), @@ -71,12 +71,12 @@ class Role{ voiceUseVAD : hp( Permissions.voiceUseVAD ) }; } - + serialize(){ // ;n; return this.serialise(); } - + hasPermission(perm, explicit=false){ if( perm instanceof String || typeof perm === "string" ){ perm = Permissions[perm]; @@ -93,10 +93,10 @@ class Role{ // e.g. // !!(36953089 & Permissions.manageRoles) = not allowed to manage roles // !!(36953089 & (1 << 21)) = voice speak allowed - + return !!(this.permissions & perm); } - + setPermission(permission, value){ if( permission instanceof String || typeof permission === "string" ){ permission = Permissions[permission]; @@ -110,7 +110,7 @@ class Role{ } } } - + setPermissions(obj){ obj.forEach((value, permission) => { if( permission instanceof String || typeof permission === "string" ){ @@ -122,7 +122,7 @@ class Role{ } }); } - + colorAsHex(){ var val = this.color.toString(); while(val.length < 6){ diff --git a/src/Structures/ServerChannel.js b/src/Structures/ServerChannel.js index 83aa1f3e0..d82bfed87 100644 --- a/src/Structures/ServerChannel.js +++ b/src/Structures/ServerChannel.js @@ -16,7 +16,7 @@ class ServerChannel extends Channel{ this.permissionOverwrites.add( new PermissionOverwrite(permission) ); }); } - + permissionsOf(user){ user = this.client.internal.resolver.resolveUser(user); if(user){ @@ -24,11 +24,11 @@ class ServerChannel extends Channel{ return new ChannelPermissions(4294967295); } var everyoneRole = this.server.roles.get("name", "@everyone"); - + var userRoles = [everyoneRole].concat(this.server.rolesOf(user) || []); var userRolesID = userRoles.map((v) => v.id); var roleOverwrites = [], memberOverwrites = []; - + this.permissionOverwrites.forEach((overwrite) => { if(overwrite.type === "member" && overwrite.id === user.id){ memberOverwrites.push(overwrite); @@ -36,29 +36,29 @@ class ServerChannel extends Channel{ roleOverwrites.push(overwrite); } }); - + var permissions = 0; - + for(var serverRole of userRoles){ permissions |= serverRole.permissions; } - + for(var overwrite of roleOverwrites.concat(memberOverwrites)){ permissions = permissions & ~overwrite.deny; permissions = permissions | overwrite.allow; } - + return new ChannelPermissions(permissions); - + }else{ return null; } } - + permsOf(user){ return this.permissionsOf(user); } - + toString(){ return this.name; } diff --git a/src/Structures/TextChannel.js b/src/Structures/TextChannel.js index bced4c7bd..1966f0119 100644 --- a/src/Structures/TextChannel.js +++ b/src/Structures/TextChannel.js @@ -6,14 +6,14 @@ var Cache = require("../Util/Cache.js"); class TextChannel extends ServerChannel{ constructor(data, client, server){ super(data, client, server); - + this.name = data.name; this.topic = data.topic; this.position = data.position; this.lastMessageID = data.last_message_id; this.messages = new Cache("id", client.options.maximumMessages); } - + /* warning! may return null */ get lastMessage(){ return this.messages.get("id", this.lastMessageID); diff --git a/src/Structures/User.js b/src/Structures/User.js index a36bbca4b..c1be841e2 100644 --- a/src/Structures/User.js +++ b/src/Structures/User.js @@ -18,7 +18,7 @@ class User extends Equality{ channel : null }; } - + get avatarURL(){ if(!this.avatar){ return null; @@ -26,15 +26,15 @@ class User extends Equality{ return Endpoints.AVATAR(this.id, this.avatar); } } - + mention(){ return `<@${this.id}>`; } - + toString(){ return this.mention(); } - + equalsStrict(obj){ if(obj instanceof User) return ( diff --git a/src/Util/Equality.js b/src/Util/Equality.js index 97f0ad18a..aa7921627 100644 --- a/src/Util/Equality.js +++ b/src/Util/Equality.js @@ -2,29 +2,29 @@ The Equality Class is just used to show that a Class has an ID that can be used to check for equality. - + Never use == or === when comparing objects in discord.js, they will be different instances sometimes. - + Instead, use objectThatExtendsEquality.equals() */ class Equality{ constructor(){ - + } - + get eqDiscriminator(){ return "id"; } - + equals(object){ if(object && object[this.eqDiscriminator] == this[this.eqDiscriminator]){ return true; } return false; } - + equalsStrict(object){ // override per class type return; diff --git a/src/Voice/AudioEncoder.js b/src/Voice/AudioEncoder.js index b03726cf7..4684cbcec 100644 --- a/src/Voice/AudioEncoder.js +++ b/src/Voice/AudioEncoder.js @@ -12,25 +12,25 @@ var VoicePacket = require("./VoicePacket.js"); class AudioEncoder{ constructor(){ - if(opus){ + if(opus){ this.opus = new opus.OpusEncoder(48000, 1); } this.choice = false; } - + opusBuffer(buffer){ - + return this.opus.encode(buffer, 1920); - + } - + getCommand(force){ - + if(this.choice && force) return choice; - + var choices = ["avconv", "ffmpeg"]; - + for(var choice of choices){ var p = cpoc.spawnSync(choice); if(!p.error){ @@ -38,10 +38,10 @@ class AudioEncoder{ return choice; } } - + return "help"; } - + encodeStream(stream, callback=function(err, buffer){}){ var self = this; return new Promise((resolve, reject) => { @@ -53,9 +53,9 @@ class AudioEncoder{ "pipe:1", "-i", "-" ]); - + stream.pipe(enc.stdin); - + enc.stdout.once("readable", function() { callback(null, { proc : enc, @@ -68,19 +68,19 @@ class AudioEncoder{ instream : stream }); }); - + enc.stdout.on("end", function() { callback("end"); reject("end"); }); - + enc.stdout.on("close", function() { callback("close"); reject("close"); }); }); } - + encodeFile(file, callback=function(err, buffer){}){ var self = this; return new Promise((resolve, reject) => { @@ -92,7 +92,7 @@ class AudioEncoder{ "pipe:1", "-i", file ]); - + enc.stdout.once("readable", function() { callback(null, { proc : enc, @@ -103,12 +103,12 @@ class AudioEncoder{ stream : enc.stdout }); }); - + enc.stdout.on("end", function() { callback("end"); reject("end"); }); - + enc.stdout.on("close", function() { callback("close"); reject("close"); diff --git a/src/Voice/VoiceConnection.js b/src/Voice/VoiceConnection.js index 009e07353..b906661da 100644 --- a/src/Voice/VoiceConnection.js +++ b/src/Voice/VoiceConnection.js @@ -2,7 +2,7 @@ /* Major credit to izy521 who is the creator of https://github.com/izy521/discord.io, - + without his help voice chat in discord.js would not have been possible! */ @@ -88,7 +88,7 @@ class VoiceConnection extends EventEmitter { self.playingIntent = retStream; function send() { - + if (!self.playingIntent || !self.playing) { self.setSpeaking(false); retStream.emit("end"); @@ -216,7 +216,7 @@ class VoiceConnection extends EventEmitter { } }) } - + playRawStream(stream, callback = function (err, str) { }) { var self = this; return new Promise((resolve, reject) => { diff --git a/src/Voice/VoicePacket.js b/src/Voice/VoicePacket.js index d5a107e42..a1e6e8355 100644 --- a/src/Voice/VoicePacket.js +++ b/src/Voice/VoicePacket.js @@ -2,24 +2,24 @@ class VoicePacket{ constructor(data, sequence, time, ssrc){ - + var audioBuffer = data, returnBuffer = new Buffer(audioBuffer.length + 12); - + returnBuffer.fill(0); returnBuffer[0] = 0x80; returnBuffer[1] = 0x78; - + returnBuffer.writeUIntBE(sequence, 2, 2); returnBuffer.writeUIntBE(time, 4, 4); returnBuffer.writeUIntBE(ssrc, 8, 4); - + for (var i=0; i