diff --git a/examples/permissions/adminbot.js b/examples/permissions/adminbot.js index 4aa6dd5af..4d47b49e6 100644 --- a/examples/permissions/adminbot.js +++ b/examples/permissions/adminbot.js @@ -1,87 +1,87 @@ -/* - this bot is a permissions bot and is currently working - with the experimental additions. Some functions may - change in the future. -*/ - -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 === "skype") { - - //stop the user from speaking in the channel: - bot.overwritePermissions(msg.channel, msg.sender, { - sendMessages: false - }); - - // send a barely funny message ;) - bot.reply(msg, "how dare you mention that!"); - - } - - if (msg.content === "discord") { - - // if the role doesn't exist, make it - bot.createRoleIfNotExists(msg.channel.server, { - name: "good people", - color: Discord.Colors.BLUE, // colour of blue - hoist: true // make a seperate category in the users list - }).then(addUserToList).catch(console.log); - - function addUserToList(role, alreadyExists) { - console.log(arguments); - bot.addMemberToRole(msg.sender, role); - bot.reply(msg, "welcome to the good people! " + alreadyExists); - - } - - } - - 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!"); - } - - } - -}); - +/* + this bot is a permissions bot and is currently working + with the experimental additions. Some functions may + change in the future. +*/ + +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 === "skype") { + + //stop the user from speaking in the channel: + bot.overwritePermissions(msg.channel, msg.sender, { + sendMessages: false + }); + + // send a barely funny message ;) + bot.reply(msg, "how dare you mention that!"); + + } + + if (msg.content === "discord") { + + // if the role doesn't exist, make it + bot.createRoleIfNotExists(msg.channel.server, { + name: "good people", + color: Discord.Colors.BLUE, // colour of blue + hoist: true // make a seperate category in the users list + }).then(addUserToList).catch(console.log); + + function addUserToList(role, alreadyExists) { + console.log(arguments); + bot.addMemberToRole(msg.sender, role); + bot.reply(msg, "welcome to the good people! " + alreadyExists); + + } + + } + + 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); \ No newline at end of file diff --git a/examples/permissions/permissions.js b/examples/permissions/permissions.js index 9f7c7775f..06b915090 100644 --- a/examples/permissions/permissions.js +++ b/examples/permissions/permissions.js @@ -1,50 +1,50 @@ -/* this bot will see if a user can send TTS messages */ - -var Discord = require("../../"); - -Discord.patchStrings(); - -var AuthDetails = require("../auth.json"); - -var bot = new Discord.Client(); - -bot.on("ready", () => { - console.log("Ready to begin!"); -}); - -bot.on("message", (msg) => { - - if(msg.content === "can I tts?"){ - - var user = msg.sender; - - // get the evaluated permissions for a user in the channel they asked - var permissions = msg.channel.permissionsOf(user); - - if(permissions.sendTTSMessages){ - bot.reply(msg, "You " + "can".italic.bold + " send TTS messages."); - }else{ - bot.reply(msg, "You " + "can't".italic.bold + " send TTS messages."); - } - - }else if(msg.content === "what are my full permissions?"){ - - var user = msg.sender; - - // get the serialised permissions of the user - var permissions = msg.channel.permissionsOf(user).serialise(); - - // if you want to stringify permissions, they need to be serialised first. - - bot.reply(msg, JSON.stringify(permissions, null, 4).replace(/true/g, "**true**")); - - } - - /* - for a list of more permissions, go to - https://github.com/hydrabolt/discord.js/blob/master/src/EvaluatedPermissions.js - */ - -}) - +/* this bot will see if a user can send TTS messages */ + +var Discord = require("../../"); + +Discord.patchStrings(); + +var AuthDetails = require("../auth.json"); + +var bot = new Discord.Client(); + +bot.on("ready", () => { + console.log("Ready to begin!"); +}); + +bot.on("message", (msg) => { + + if(msg.content === "can I tts?"){ + + var user = msg.sender; + + // get the evaluated permissions for a user in the channel they asked + var permissions = msg.channel.permissionsOf(user); + + if(permissions.sendTTSMessages){ + bot.reply(msg, "You " + "can".italic.bold + " send TTS messages."); + }else{ + bot.reply(msg, "You " + "can't".italic.bold + " send TTS messages."); + } + + }else if(msg.content === "what are my full permissions?"){ + + var user = msg.sender; + + // get the serialised permissions of the user + var permissions = msg.channel.permissionsOf(user).serialise(); + + // if you want to stringify permissions, they need to be serialised first. + + bot.reply(msg, JSON.stringify(permissions, null, 4).replace(/true/g, "**true**")); + + } + + /* + for a list of more permissions, go to + https://github.com/hydrabolt/discord.js/blob/master/src/EvaluatedPermissions.js + */ + +}) + bot.login(AuthDetails.email, AuthDetails.password); \ No newline at end of file diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 3d407da7f..97f8eff62 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -1,115 +1,117 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var InternalClient = require("./InternalClient.js"); var EventEmitter = require("events"); -var Client = (function (_EventEmitter) { - _inherits(Client, _EventEmitter); - +class Client extends EventEmitter { /* this class is an interface for the internal client. */ - - function Client(options) { - _classCallCheck(this, Client); - - _EventEmitter.call(this); + constructor(options) { + super(); 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; + } + + get voiceConnection() { + return this.internal.voiceConnection; + } + + get readyTime() { + return this.internal.readyTime; + } + + get uptime() { + return this.internal.uptime; + } + + get user() { + return this.internal.user; + } + // def login - - Client.prototype.login = function login(email, password) { - var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, token) {} : arguments[2]; - + login(email, password, cb = function (err, token) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.login(email, password).then(function (token) { + self.internal.login(email, password).then(token => { cb(null, token); resolve(token); - })["catch"](function (e) { + }).catch(e => { cb(e); reject(e); }); }); - }; + } // def logout - - Client.prototype.logout = function logout() { - var cb = arguments.length <= 0 || arguments[0] === undefined ? function (err) {} : arguments[0]; - + logout(cb = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.logout().then(function () { + self.internal.logout().then(() => { cb(); resolve(); - })["catch"](function (e) { + }).catch(e => { cb(e); reject(e); }); }); - }; - + } // def sendMessage - - Client.prototype.sendMessage = function sendMessage(where, content) { - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (e, m) {} : arguments[3]; - + sendMessage(where, content, options = {}, callback = function (e, m) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof options === "function") { // options is the callback callback = options; } - self.internal.sendMessage(where, content, options).then(function (m) { + self.internal.sendMessage(where, content, options).then(m => { callback(null, m); resolve(m); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def sendTTSMessage - - Client.prototype.sendTTSMessage = function sendTTSMessage(where, content) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (e, m) {} : arguments[2]; - + sendTTSMessage(where, content, callback = function (e, m) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.sendMessage(where, content, { tts: true }).then(function (m) { + return new Promise((resolve, reject) => { + self.sendMessage(where, content, { tts: true }).then(m => { callback(null, m); resolve(m); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; - + } // def reply - - Client.prototype.reply = function reply(where, content) { - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (e, m) {} : arguments[3]; - + reply(where, content, options = {}, callback = function (e, m) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof options === "function") { // options is the callback @@ -119,10 +121,10 @@ var Client = (function (_EventEmitter) { var msg = self.internal.resolver.resolveMessage(where); if (msg) { content = msg.author + ", " + content; - self.internal.sendMessage(msg, content, options).then(function (m) { + self.internal.sendMessage(msg, content, options).then(m => { callback(null, m); resolve(m); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); @@ -132,448 +134,363 @@ var Client = (function (_EventEmitter) { reject(err); } }); - }; + } // def replyTTS - - Client.prototype.replyTTS = function replyTTS(where, content) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function () {} : arguments[2]; - - return new Promise(function (resolve, reject) { - self.reply(where, content, { tts: true }).then(function (m) { + replyTTS(where, content, callback = function () {}) { + return new Promise((resolve, reject) => { + self.reply(where, content, { tts: true }).then(m => { callback(null, m); resolve(m); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; - + } // def deleteMessage - - Client.prototype.deleteMessage = function deleteMessage(msg) { - var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (e) {} : arguments[2]; - + deleteMessage(msg, options = {}, callback = function (e) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof options === "function") { // options is the callback callback = options; } - self.internal.deleteMessage(msg, options).then(function () { + self.internal.deleteMessage(msg, options).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; - + } //def updateMessage - - Client.prototype.updateMessage = function updateMessage(msg, content) { - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, msg) {} : arguments[3]; - + updateMessage(msg, content, options = {}, callback = function (err, msg) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof options === "function") { // options is the callback callback = options; } - self.internal.updateMessage(msg, content, options).then(function (msg) { + self.internal.updateMessage(msg, content, options).then(msg => { callback(null, msg); resolve(msg); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def getChannelLogs - - Client.prototype.getChannelLogs = function getChannelLogs(where) { - var limit = arguments.length <= 1 || arguments[1] === undefined ? 500 : arguments[1]; - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, logs) {} : arguments[3]; + getChannelLogs(where, limit = 500, options = {}, callback = function (err, logs) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof options === "function") { // options is the callback callback = options; } - self.internal.getChannelLogs(where, limit, options).then(function (logs) { + self.internal.getChannelLogs(where, limit, options).then(logs => { callback(null, logs); resolve(logs); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def getBans - - Client.prototype.getBans = function getBans(where) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, bans) {} : arguments[1]; + getBans(where, callback = function (err, bans) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.getBans(where).then(function (bans) { + return new Promise((resolve, reject) => { + self.internal.getBans(where).then(bans => { callback(null, bans); resolve(bans); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def sendFile - - Client.prototype.sendFile = function sendFile(where, attachment) { - var name = arguments.length <= 2 || arguments[2] === undefined ? "image.png" : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, m) {} : arguments[3]; - + sendFile(where, attachment, name = "image.png", callback = function (err, m) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.sendFile(where, attachment, name).then(function (m) { + return new Promise((resolve, reject) => { + self.internal.sendFile(where, attachment, name).then(m => { callback(null, m); resolve(m); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def joinServer - - Client.prototype.joinServer = function joinServer(invite) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, srv) {} : arguments[1]; - + joinServer(invite, callback = function (err, srv) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.joinServer(invite).then(function (srv) { + return new Promise((resolve, reject) => { + self.internal.joinServer(invite).then(srv => { callback(null, srv); resolve(srv); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def createServer - - Client.prototype.createServer = function createServer(name) { - var region = arguments.length <= 1 || arguments[1] === undefined ? "london" : arguments[1]; - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, srv) {} : arguments[2]; - + createServer(name, region = "london", callback = function (err, srv) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.createServer(name, region).then(function (srv) { + return new Promise((resolve, reject) => { + self.internal.createServer(name, region).then(srv => { callback(null, srv); resolve(srv); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def leaveServer - - Client.prototype.leaveServer = function leaveServer(server) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + leaveServer(server, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.leaveServer(server).then(function () { + self.internal.leaveServer(server).then(() => { callback();resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e);reject(e); }); }); - }; + } // def createChannel - - Client.prototype.createChannel = function createChannel(server, name) { - var type = arguments.length <= 2 || arguments[2] === undefined ? "text" : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, channel) {} : arguments[3]; - + createChannel(server, name, type = "text", callback = function (err, channel) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof type === "function") { // options is the callback callback = type; } - self.internal.createChannel(server, name, type).then(function (channel) { + self.internal.createChannel(server, name, type).then(channel => { callback(channel);resolve(channel); - })["catch"](function (e) { + }).catch(e => { callback(e);reject(e); }); }); - }; + } // def deleteChannel - - Client.prototype.deleteChannel = function deleteChannel(channel) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + deleteChannel(channel, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.deleteChannel(channel).then(function () { + self.internal.deleteChannel(channel).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e);reject(e); }); }); - }; + } //def banMember - - Client.prototype.banMember = function banMember(user, server) { - var length = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err) {} : arguments[3]; - + banMember(user, server, length = 1, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof length === "function") { // length is the callback callback = length; } - self.internal.banMember(user, server, length).then(function () { + self.internal.banMember(user, server, length).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e);reject(e); }); }); - }; + } //def unbanMember - - Client.prototype.unbanMember = function unbanMember(user, server) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + unbanMember(user, server, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.unbanMember(user, server).then(function () { + return new Promise((resolve, reject) => { + self.internal.unbanMember(user, server).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(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]; - + kickMember(user, server, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.kickMember(user, server).then(function () { + return new Promise((resolve, reject) => { + self.internal.kickMember(user, server).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e);reject(e); }); }); - }; + } //def createRole - - Client.prototype.createRole = function createRole(server) { - var data = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, res) {} : arguments[2]; - + createRole(server, data = null, callback = function (err, res) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof data === "function") { // data is the callback callback = data; } - self.internal.createRole(server, data).then(function (role) { + self.internal.createRole(server, data).then(role => { callback(null, role); resolve(role); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def updateRole - - Client.prototype.updateRole = function updateRole(role) { - var data = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, res) {} : arguments[2]; - + updateRole(role, data = null, callback = function (err, res) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof data === "function") { // data is the callback callback = data; } - self.internal.updateRole(role, data).then(function (role) { + self.internal.updateRole(role, data).then(role => { callback(null, role); resolve(role); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def deleteRole - - Client.prototype.deleteRole = function deleteRole(role) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; + deleteRole(role, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.deleteRole(role).then(function () { + self.internal.deleteRole(role).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def addMemberToRole - - Client.prototype.addMemberToRole = function addMemberToRole(member, role) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + addMemberToRole(member, role, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.addMemberToRole(member, role).then(function () { + self.internal.addMemberToRole(member, role).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def addUserToRole - - Client.prototype.addUserToRole = function addUserToRole(member, role) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + addUserToRole(member, role, callback = function (err) {}) { return this.addMemberToRole(member, role, callback); - }; + } // def removeMemberFromRole - - Client.prototype.removeMemberFromRole = function removeMemberFromRole(member, role) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + removeMemberFromRole(member, role, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.removeMemberFromRole(member, role).then(function () { + self.internal.removeMemberFromRole(member, role).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def removeUserFromRole - - Client.prototype.removeUserFromRole = function removeUserFromRole(member, role) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + removeUserFromRole(member, role, callback = function (err) {}) { return this.removeUserFromRole(member, role, callback); - }; + } // def createInvite - - Client.prototype.createInvite = function createInvite(chanServ, options) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, invite) {} : arguments[2]; - + createInvite(chanServ, options, callback = function (err, invite) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof options === "function") { // length is the callback callback = options; } - self.internal.createInvite(chanServ, options).then(function (invite) { + self.internal.createInvite(chanServ, options).then(invite => { callback(null, invite); resolve(invite); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def deleteInvite - - Client.prototype.deleteInvite = function deleteInvite(invite) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + deleteInvite(invite, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.deleteInvite(invite).then(function () { + return new Promise((resolve, reject) => { + self.internal.deleteInvite(invite).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def overwritePermissions - - Client.prototype.overwritePermissions = function overwritePermissions(channel, role) { - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err) {} : arguments[3]; - + overwritePermissions(channel, role, options = {}, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.overwritePermissions(channel, role, options).then(function () { + self.internal.overwritePermissions(channel, role, options).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def setStatus - - Client.prototype.setStatus = function setStatus(idleStatus, gameID) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + setStatus(idleStatus, gameID, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (typeof gameID === "function") { // gameID is the callback callback = gameID; @@ -582,241 +499,198 @@ var Client = (function (_EventEmitter) { callback = idleStatus; } - self.internal.setStatus(idleStatus, gameID).then(function () { + self.internal.setStatus(idleStatus, gameID).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def sendTyping - - Client.prototype.sendTyping = function sendTyping(channel) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + sendTyping(channel, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.sendTyping(channel).then(function () { + self.internal.sendTyping(channel).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } // def setTopic - - Client.prototype.setTopic = function setTopic(channel, topic) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + setTopic(channel, topic, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.setTopic(channel, topic).then(function () { + self.internal.setTopic(channel, topic).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def setChannelName - - Client.prototype.setChannelName = function setChannelName(channel, name) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + setChannelName(channel, name, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.setChannelName(channel, name).then(function () { + self.internal.setChannelName(channel, name).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def setChannelNameAndTopic - - Client.prototype.setChannelNameAndTopic = function setChannelNameAndTopic(channel, name, topic) { - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err) {} : arguments[3]; - + setChannelNameAndTopic(channel, name, topic, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.setChannelNameAndTopic(channel, name, topic).then(function () { + self.internal.setChannelNameAndTopic(channel, name, topic).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def updateChannel - - Client.prototype.updateChannel = function updateChannel(channel, data) { - var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2]; - + updateChannel(channel, data, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.updateChannel(channel, data).then(function () { + self.internal.updateChannel(channel, data).then(() => { callback(); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def startTyping - - Client.prototype.startTyping = function startTyping(channel) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + startTyping(channel, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.startTyping(channel).then(function () { + self.internal.startTyping(channel).then(() => { callback(null); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def stopTyping - - Client.prototype.stopTyping = function stopTyping(channel) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + stopTyping(channel, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.stopTyping(channel).then(function () { + self.internal.stopTyping(channel).then(() => { callback(null); resolve(); - })["catch"](function (e) { + }).catch(e => { callback(e); reject(e); }); }); - }; + } //def updateDetails - - Client.prototype.updateDetails = function updateDetails(details) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + updateDetails(details, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.updateDetails(details).then(function () { + return new Promise((resolve, reject) => { + self.internal.updateDetails(details).then(() => { callback(); resolve(); - })["catch"](function (err) { + }).catch(err => { callback(err); reject(err); }); }); - }; + } //def setUsername - - Client.prototype.setUsername = function setUsername(name) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + setUsername(name, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.setUsername(name).then(function () { + return new Promise((resolve, reject) => { + self.internal.setUsername(name).then(() => { callback(); resolve(); - })["catch"](function (err) { + }).catch(err => { callback(err); reject(err); }); }); - }; + } //def setAvatar - - Client.prototype.setAvatar = function setAvatar(avatar) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + setAvatar(avatar, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.setAvatar(avatar).then(function () { + return new Promise((resolve, reject) => { + self.internal.setAvatar(avatar).then(() => { callback(); resolve(); - })["catch"](function (err) { + }).catch(err => { callback(err); reject(err); }); }); - }; + } //def joinVoiceChannel - - Client.prototype.joinVoiceChannel = function joinVoiceChannel(channel) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; - + joinVoiceChannel(channel, callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.internal.joinVoiceChannel(channel).then(function (chan) { + self.internal.joinVoiceChannel(channel).then(chan => { callback(null, chan); resolve(chan); - })["catch"](function (err) { + }).catch(err => { callback(err); reject(err); }); }); - }; + } // def leaveVoiceChannel - - Client.prototype.leaveVoiceChannel = function leaveVoiceChannel() { - var callback = arguments.length <= 0 || arguments[0] === undefined ? function (err) {} : arguments[0]; - + leaveVoiceChannel(callback = function (err) {}) { var self = this; - return new Promise(function (resolve, reject) { - self.internal.leaveVoiceChannel().then(function () { + return new Promise((resolve, reject) => { + self.internal.leaveVoiceChannel().then(() => { callback(); resolve(); - })["catch"](function (err) { + }).catch(err => { callback(err); reject(err); }); }); - }; + } // def awaitResponse - - Client.prototype.awaitResponse = function awaitResponse(msg) { - var toSend = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; - - var _this = this; - - var options = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2]; - var callback = arguments.length <= 3 || arguments[3] === undefined ? function (e, newMsg) {} : arguments[3]; + awaitResponse(msg, toSend = null, options = null, callback = function (e, newMsg) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { function error(e) { callback(e); @@ -834,14 +708,14 @@ var Client = (function (_EventEmitter) { if (typeof options === "function") { //(msg, toSend, callback) callback = options; - _this.sendMessage(msg, toSend).then(final)["catch"](error); + this.sendMessage(msg, toSend).then(final).catch(error); } else { //(msg, toSend, options, callback) - _this.sendMessage(msg, toSend, options).then(final)["catch"](error); + this.sendMessage(msg, toSend, options).then(final).catch(error); } } else { // (msg, toSend) promise - _this.sendMessage(msg, toSend).then(final)["catch"](error); + this.sendMessage(msg, toSend).then(final).catch(error); } } } else { @@ -850,87 +724,41 @@ var Client = (function (_EventEmitter) { } function final() { - self.internal.awaitResponse(msg).then(function (newMsg) { + self.internal.awaitResponse(msg).then(newMsg => { resolve(newMsg); callback(null, newMsg); - })["catch"](error); + }).catch(error); } }); - }; + } - Client.prototype.setStatusIdle = function setStatusIdle() { + setStatusIdle() { this.setStatus("idle"); - }; - - Client.prototype.setStatusOnline = function setStatusOnline() { - var cb = arguments.length <= 0 || arguments[0] === undefined ? function (err) {} : arguments[0]; + } + setStatusOnline(cb = function (err) {}) { this.setStatus("online"); - }; + } - Client.prototype.setStatusActive = function setStatusActive() { + setStatusActive() { this.setStatusOnline(); - }; + } - Client.prototype.setStatusHere = function setStatusHere() { + setStatusHere() { this.setStatusOnline(); - }; + } - Client.prototype.setStatusAvailable = function setStatusAvailable() { + setStatusAvailable() { this.setStatusOnline(); - }; + } - Client.prototype.setStatusAway = function setStatusAway() { + setStatusAway() { this.setStatusIdle(); - }; + } - Client.prototype.setPlayingGame = function setPlayingGame(game) { + setPlayingGame(game) { this.setStatus(null, game); - }; - - _createClass(Client, [{ - key: "users", - get: function get() { - return this.internal.users; - } - }, { - key: "channels", - get: function get() { - return this.internal.channels; - } - }, { - key: "servers", - get: function get() { - return this.internal.servers; - } - }, { - key: "privateChannels", - get: function get() { - return this.internal.private_channels; - } - }, { - key: "voiceConnection", - get: function get() { - return this.internal.voiceConnection; - } - }, { - key: "readyTime", - get: function get() { - return this.internal.readyTime; - } - }, { - key: "uptime", - get: function get() { - return this.internal.uptime; - } - }, { - key: "user", - get: function get() { - return this.internal.user; - } - }]); - - return Client; -})(EventEmitter); + } +} module.exports = Client; \ No newline at end of file diff --git a/lib/Client/ConnectionState.js b/lib/Client/ConnectionState.js index 86fb95261..c27246c09 100644 --- a/lib/Client/ConnectionState.js +++ b/lib/Client/ConnectionState.js @@ -1,5 +1,3 @@ -"use strict"; - exports.IDLE = 0; exports.LOGGING_IN = 1; exports.LOGGED_IN = 2; diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 0282ae76c..f54817352 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1,9 +1,5 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var EventEmitter = require("events"); var request = require("superagent"); var WebSocket = require("ws"); @@ -29,10 +25,8 @@ var User = require("../Structures/User.js"), var zlib; -var InternalClient = (function () { - function InternalClient(discordClient) { - _classCallCheck(this, InternalClient); - +class InternalClient { + constructor(discordClient) { this.client = discordClient; this.state = ConnectionState.IDLE; this.websocket = null; @@ -54,11 +48,14 @@ var InternalClient = (function () { this.messageAwaits = {}; } - //def leaveVoiceChannel + get uptime() { + return this.readyTime ? Date.now() - this.readyTime : null; + } - InternalClient.prototype.leaveVoiceChannel = function leaveVoiceChannel() { + //def leaveVoiceChannel + leaveVoiceChannel() { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (self.voiceConnection) { self.voiceConnection.destroy(); self.voiceConnection = null; @@ -67,16 +64,13 @@ var InternalClient = (function () { resolve(); } }); - }; + } //def awaitResponse + awaitResponse(msg) { + return new Promise((resolve, reject) => { - InternalClient.prototype.awaitResponse = function awaitResponse(msg) { - var _this = this; - - return new Promise(function (resolve, reject) { - - msg = _this.resolver.resolveMessage(msg); + msg = this.resolver.resolveMessage(msg); if (!msg) { reject(new Error("message undefined")); @@ -85,30 +79,32 @@ var InternalClient = (function () { var awaitID = msg.channel.id + msg.author.id; - if (!_this.messageAwaits[awaitID]) { - _this.messageAwaits[awaitID] = []; + if (!this.messageAwaits[awaitID]) { + this.messageAwaits[awaitID] = []; } - _this.messageAwaits[awaitID].push(resolve); + this.messageAwaits[awaitID].push(resolve); }); - }; + } //def joinVoiceChannel - - InternalClient.prototype.joinVoiceChannel = function joinVoiceChannel(chann) { + joinVoiceChannel(chann) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var channel = self.resolver.resolveVoiceChannel(chann); if (channel) { - var next = function next() { + + self.leaveVoiceChannel().then(next); + + function next() { var session, token, server = channel.server, endpoint; - var check = function check(m) { + var check = m => { var data = JSON.parse(m); if (data.t === "VOICE_STATE_UPDATE") { session = data.d.session_id; @@ -117,9 +113,7 @@ var InternalClient = (function () { endpoint = data.d.endpoint; var chan = self.voiceConnection = new VoiceConnection(channel, self.client, session, token, server, endpoint); - chan.on("ready", function () { - return resolve(chan); - }); + chan.on("ready", () => resolve(chan)); chan.on("error", reject); self.client.emit("debug", "removed temporary voice websocket listeners"); @@ -137,30 +131,25 @@ var InternalClient = (function () { "self_deaf": false } }); - }; - - self.leaveVoiceChannel().then(next); + } } else { reject(new Error("voice channel does not exist")); } }); - }; + } // def createServer - - InternalClient.prototype.createServer = function createServer(name) { - var region = arguments.length <= 1 || arguments[1] === undefined ? "london" : arguments[1]; - + createServer(name, region = "london") { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { name = self.resolver.resolveString(name); - request.post(Endpoints.SERVERS).set("authorization", self.token).send({ name: name, region: region }).end(function (err, res) { + request.post(Endpoints.SERVERS).set("authorization", self.token).send({ name, region }).end((err, res) => { if (err) { reject(new Error(err)); } else { // valid server, wait until it is cached - var inter = setInterval(function () { + var inter = setInterval(() => { if (self.servers.get("id", res.body.id)) { clearInterval(inter); resolve(self.servers.get("id", res.body.id)); @@ -169,22 +158,21 @@ var InternalClient = (function () { } }); }); - }; + } //def joinServer - - InternalClient.prototype.joinServer = function joinServer(invite) { + joinServer(invite) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { invite = self.resolver.resolveInviteID(invite); if (invite) { - request.post(Endpoints.INVITE(invite)).set("authorization", self.token).end(function (err, res) { + request.post(Endpoints.INVITE(invite)).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { // valid server, wait until it is received via ws and cached - var inter = setInterval(function () { + var inter = setInterval(() => { if (self.servers.get("id", res.body.guild.id)) { clearInterval(inter); resolve(self.servers.get("id", res.body.guild.id)); @@ -196,35 +184,21 @@ var InternalClient = (function () { reject(new Error("Not a valid invite")); } }); - }; + } //def leaveServer - - InternalClient.prototype.leaveServer = function leaveServer(srv) { + leaveServer(srv) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var server = self.resolver.resolveServer(srv); if (server) { - request.del(Endpoints.SERVER(server.id)).set("authorization", self.token).end(function (err, res) { + request.del(Endpoints.SERVER(server.id)).set("authorization", self.token).end((err, res) => { if (err) { reject(new Error(err)); } else { // remove channels of server then the server - for (var _iterator = server.channels, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var chan = _ref; - + for (var chan of server.channels) { self.channels.remove(chan); } // remove server @@ -236,19 +210,18 @@ var InternalClient = (function () { reject(new Error("server did not resolve")); } }); - }; + } // def login - - InternalClient.prototype.login = function login(email, password) { + login(email, password) { var self = this; var client = self.client; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (self.state === ConnectionState.DISCONNECTED || self.state === ConnectionState.IDLE) { self.state = ConnectionState.LOGGING_IN; - request.post(Endpoints.LOGIN).send({ email: email, password: password }).end(function (err, res) { + request.post(Endpoints.LOGIN).send({ email, password }).end(function (err, res) { if (err) { self.state = ConnectionState.DISCONNECTED; @@ -262,11 +235,11 @@ var InternalClient = (function () { self.email = email; self.password = password; - self.getGateway().then(function (url) { + self.getGateway().then(url => { self.createWS(url); resolve(token); - })["catch"](function (e) { + }).catch(e => { self.state = ConnectionState.DISCONNECTED; client.emit("disconnected"); reject(new Error(err)); @@ -277,28 +250,25 @@ var InternalClient = (function () { reject(new Error("already logging in/logged in/ready!")); } }); - }; + } // def logout - - InternalClient.prototype.logout = function logout() { - var _this2 = this; - + logout() { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (self.state === ConnectionState.DISCONNECTED || self.state === ConnectionState.IDLE) { reject(new Error("Client is not logged in!")); return; } - request.post(Endpoints.LOGOUT).set("authorization", self.token).end(function (err, res) { + request.post(Endpoints.LOGOUT).set("authorization", self.token).end((err, res) => { if (err) { reject(new Error(err)); } else { - if (_this2.websocket) { - _this2.websocket.close(); - _this2.websocket = null; + if (this.websocket) { + this.websocket.close(); + this.websocket = null; } self.token = null; self.email = null; @@ -308,21 +278,20 @@ var InternalClient = (function () { } }); }); - }; + } // def startPM - - InternalClient.prototype.startPM = function startPM(resUser) { + startPM(resUser) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var user = self.resolver.resolveUser(resUser); if (user) { // start the PM - request.post("" + Endpoints.USER_CHANNELS(user.id)).set("authorization", self.token).send({ + request.post(`${ Endpoints.USER_CHANNELS(user.id) }`).set("authorization", self.token).send({ recipient_id: user.id - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(new Error(err)); } else { @@ -333,31 +302,25 @@ var InternalClient = (function () { reject(new Error("Unable to resolve resUser to a User")); } }); - }; + } // def getGateway - - InternalClient.prototype.getGateway = function getGateway() { + getGateway() { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { request.get(Endpoints.GATEWAY).set("authorization", self.token).end(function (err, res) { if (err) reject(err);else resolve(res.body.url); }); }); - }; + } // def sendMessage - - InternalClient.prototype.sendMessage = function sendMessage(where, _content) { - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - + sendMessage(where, _content, options = {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(where).then(next)["catch"](function (e) { - return reject(new Error("Error resolving destination - " + e)); - }); + self.resolver.resolveChannel(where).then(next).catch(e => reject(new Error("Error resolving destination - " + e))); function next(destination) { //var destination; @@ -368,7 +331,7 @@ var InternalClient = (function () { content: content, mentions: mentions, tts: options.tts - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(new Error(err)); } else { @@ -378,21 +341,24 @@ var InternalClient = (function () { }); } }); - }; - + } // def deleteMessage - - InternalClient.prototype.deleteMessage = function deleteMessage(_message) { - var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - + deleteMessage(_message, options = {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var message = self.resolver.resolveMessage(_message); if (message) { - var deleteMsg = function deleteMsg() { - request.del(Endpoints.CHANNEL_MESSAGE(message.channel.id, message.id)).set("authorization", self.token).end(function (err, res) { + + if (options.wait) { + setTimeout(deleteMsg, options.wait); + } else { + deleteMsg(); + } + + function deleteMsg() { + request.del(Endpoints.CHANNEL_MESSAGE(message.channel.id, message.id)).set("authorization", self.token).end((err, res) => { if (err) { reject(new Error(err)); } else { @@ -400,26 +366,18 @@ var InternalClient = (function () { resolve(); } }); - }; - - if (options.wait) { - setTimeout(deleteMsg, options.wait); - } else { - deleteMsg(); } } else { reject(new Error("Supplied message did not resolve to a message!")); } }); - }; + } // def updateMessage - - InternalClient.prototype.updateMessage = function updateMessage(msg, _content) { - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; + updateMessage(msg, _content, options = {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var message = self.resolver.resolveMessage(msg); @@ -432,7 +390,7 @@ var InternalClient = (function () { content: content, tts: options.tts, mentions: mentions - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(new Error(err)); } else { @@ -443,24 +401,19 @@ var InternalClient = (function () { reject(new Error("Supplied message did not resolve to a message!")); } }); - }; + } // def sendFile - - InternalClient.prototype.sendFile = function sendFile(where, _file) { - var name = arguments.length <= 2 || arguments[2] === undefined ? "image.png" : arguments[2]; - + sendFile(where, _file, name = "image.png") { var self = this; - return new Promise(function (resolve, reject) { - self.resolver.resolveChannel(where).then(next)["catch"](function (e) { - return reject(new Error("couldn't resolve to channel - " + e)); - }); + return new Promise((resolve, reject) => { + self.resolver.resolveChannel(where).then(next).catch(e => reject(new Error("couldn't resolve to channel - " + e))); function next(channel) { var file = self.resolver.resolveFile(_file); - request.post(Endpoints.CHANNEL_MESSAGES(channel.id)).set("authorization", self.token).attach("file", file, name).end(function (err, res) { + request.post(Endpoints.CHANNEL_MESSAGES(channel.id)).set("authorization", self.token).attach("file", file, name).end((err, res) => { if (err) { reject(new Error(err)); @@ -470,20 +423,14 @@ var InternalClient = (function () { }); } }); - }; + } // def getChannelLogs - - InternalClient.prototype.getChannelLogs = function getChannelLogs(_channel) { - var limit = arguments.length <= 1 || arguments[1] === undefined ? 500 : arguments[1]; - var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - + getChannelLogs(_channel, limit = 500, options = {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(_channel).then(next)["catch"](function (e) { - return reject(new Error("couldn't resolve to channel - " + e)); - }); + self.resolver.resolveChannel(_channel).then(next).catch(e => reject(new Error("couldn't resolve to channel - " + e))); function next(channel) { @@ -497,12 +444,12 @@ var InternalClient = (function () { var joinedParams = params.join(); if (joinedParams !== "") joinedParams = "&" + params.join(); - request.get(Endpoints.CHANNEL_MESSAGES(channel.id) + "?limit=" + limit + joinedParams).set("authorization", self.token).end(function (err, res) { + request.get(`${ Endpoints.CHANNEL_MESSAGES(channel.id) }?limit=${ limit }${ joinedParams }`).set("authorization", self.token).end((err, res) => { if (err) { reject(new Error(err)); } else { var logs = []; - res.body.forEach(function (msg) { + res.body.forEach(msg => { logs.push(channel.messages.add(new Message(msg, channel, self.client))); }); resolve(logs); @@ -510,44 +457,40 @@ var InternalClient = (function () { }); } }); - }; + } // def getBans - - InternalClient.prototype.getBans = function getBans(server) { + getBans(server) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { server = self.resolver.resolveServer(server); - request.get("" + Endpoints.SERVER_BANS(server.id)).set("authorization", self.token).end(function (err, res) { + request.get(`${ Endpoints.SERVER_BANS(server.id) }`).set("authorization", self.token).end((err, res) => { if (err) { reject(new Error(err)); } else { var bans = []; - res.body.forEach(function (ban) { + res.body.forEach(ban => { bans.push(self.users.add(new User(ban.user, self.client))); }); resolve(bans); } }); }); - }; + } // def createChannel - - InternalClient.prototype.createChannel = function createChannel(server, name) { - var type = arguments.length <= 2 || arguments[2] === undefined ? "text" : arguments[2]; - + createChannel(server, name, type = "text") { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { server = self.resolver.resolveServer(server); request.post(Endpoints.SERVER_CHANNELS(server.id)).set("authorization", self.token).send({ - name: name, type: type - }).end(function (err, res) { + name, type + }).end((err, res) => { if (err) { reject(err); } else { @@ -561,15 +504,14 @@ var InternalClient = (function () { } }); }); - }; + } // def deleteChannel - - InternalClient.prototype.deleteChannel = function deleteChannel(_channel) { + deleteChannel(_channel) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(_channel).then(next)["catch"](reject); + self.resolver.resolveChannel(_channel).then(next).catch(reject); function next(channel) { request.del(Endpoints.CHANNEL(channel.id)).set("authorization", self.token).end(function (err, res) { @@ -583,20 +525,17 @@ var InternalClient = (function () { }); } }); - }; + } // def banMember - - InternalClient.prototype.banMember = function banMember(user, server) { - var length = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2]; - + banMember(user, server, length = 1) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { user = self.resolver.resolveUser(user); server = self.resolver.resolveServer(server); - request.put(Endpoints.SERVER_BANS(server.id) + "/" + user.id + "/?delete-message-days=" + length).set("authorization", self.token).end(function (err, res) { + request.put(`${ Endpoints.SERVER_BANS(server.id) }/${ user.id }/?delete-message-days=${ length }`).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -604,18 +543,17 @@ var InternalClient = (function () { } }); }); - }; + } // def unbanMember - - InternalClient.prototype.unbanMember = function unbanMember(user, server) { + unbanMember(user, server) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { server = self.resolver.resolveServer(server); user = self.resolver.resolveUser(user); - request.del(Endpoints.SERVER_BANS(server.id) + "/" + user.id).set("authorization", self.token).end(function (err, res) { + request.del(`${ Endpoints.SERVER_BANS(server.id) }/${ user.id }`).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -623,18 +561,17 @@ var InternalClient = (function () { } }); }); - }; + } // def kickMember - - InternalClient.prototype.kickMember = function kickMember(user, server) { + kickMember(user, server) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { user = self.resolver.resolveUser(user); server = self.resolver.resolveServer(server); - request.del(Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id).set("authorization", self.token).end(function (err, res) { + request.del(`${ Endpoints.SERVER_MEMBERS(server.id) }/${ user.id }`).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -642,17 +579,16 @@ var InternalClient = (function () { } }); }); - }; + } // def createRole - - InternalClient.prototype.createRole = function createRole(server, data) { + createRole(server, data) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { server = self.resolver.resolveServer(server); - request.post(Endpoints.SERVER_ROLES(server.id)).set("authorization", self.token).end(function (err, res) { + request.post(Endpoints.SERVER_ROLES(server.id)).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -661,40 +597,25 @@ var InternalClient = (function () { if (data) { - self.updateRole(role, data).then(resolve)["catch"](reject); + self.updateRole(role, data).then(resolve).catch(reject); } else { resolve(role); } } }); }); - }; - + } // def updateRole - - InternalClient.prototype.updateRole = function updateRole(role, data) { + updateRole(role, data) { var self = this; data = data || {}; data.permissions = data.permissions || []; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var server = self.resolver.resolveServer(role.server); var permissions = 0; - for (var _iterator2 = data.permissions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var perm = _ref2; - + for (var perm of data.permissions) { if (perm instanceof String || typeof perm === "string") { permissions |= Constants.Permissions[perm] || 0; } else { @@ -709,7 +630,7 @@ var InternalClient = (function () { hoist: data.hoist || role.hoist, name: data.name || role.name, permissions: permissions - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(err); } else { @@ -718,15 +639,14 @@ var InternalClient = (function () { } }); }); - }; + } // def deleteRole - - InternalClient.prototype.deleteRole = function deleteRole(role) { + deleteRole(role) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - request.del(Endpoints.SERVER_ROLES(role.server.id) + "/" + role.id).set("authorization", self.token).end(function (err, res) { + request.del(Endpoints.SERVER_ROLES(role.server.id) + "/" + role.id).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -736,13 +656,12 @@ var InternalClient = (function () { } }); }); - }; + } //def addMemberToRole - - InternalClient.prototype.addMemberToRole = function addMemberToRole(member, role) { + addMemberToRole(member, role) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { member = self.resolver.resolveUser(member); @@ -753,13 +672,11 @@ var InternalClient = (function () { if (role.server.memberMap[member.id]) { - var roleIDS = role.server.memberMap[member.id].roles.map(function (r) { - return r.id; - }).concat(role.id); + var roleIDS = role.server.memberMap[member.id].roles.map(r => r.id).concat(role.id); request.patch(Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id).set("authorization", self.token).send({ roles: roleIDS - }).end(function (err) { + }).end(err => { if (err) { reject(err); } else { @@ -770,13 +687,12 @@ var InternalClient = (function () { reject(new Error("member not in server")); } }); - }; + } //def removeMemberFromRole - - InternalClient.prototype.removeMemberFromRole = function removeMemberFromRole(member, role) { + removeMemberFromRole(member, role) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { member = self.resolver.resolveUser(member); @@ -787,9 +703,7 @@ var InternalClient = (function () { if (role.server.memberMap[member.id]) { - var roleIDS = role.server.memberMap[member.id].roles.map(function (r) { - return r.id; - }); + var roleIDS = role.server.memberMap[member.id].roles.map(r => r.id); for (var item in roleIDS) { if (roleIDS[item] === role.id) { @@ -799,7 +713,7 @@ var InternalClient = (function () { request.patch(Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id).set("authorization", self.token).send({ roles: roleIDS - }).end(function (err) { + }).end(err => { if (err) { reject(err); } else { @@ -810,13 +724,12 @@ var InternalClient = (function () { reject(new Error("member not in server")); } }); - }; + } // def createInvite - - InternalClient.prototype.createInvite = function createInvite(chanServ, options) { + createInvite(chanServ, options) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { if (chanServ instanceof Channel) { // do something @@ -847,7 +760,7 @@ var InternalClient = (function () { epoint = Endpoints.SERVER_INVITES(chanServ.id); } - request.post(epoint).set("authorization", self.token).send(options).end(function (err, res) { + request.post(epoint).set("authorization", self.token).send(options).end((err, res) => { if (err) { reject(err); } else { @@ -855,17 +768,16 @@ var InternalClient = (function () { } }); }); - }; + } //def deleteInvite - - InternalClient.prototype.deleteInvite = function deleteInvite(invite) { + deleteInvite(invite) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { invite = self.resolver.resolveInviteID(invite); if (invite) { - request.del(Endpoints.INVITE(invite)).set("authorization", self.token).end(function (err, res) { + request.del(Endpoints.INVITE(invite)).set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -876,14 +788,13 @@ var InternalClient = (function () { reject(new Error("Not a valid invite")); } }); - }; + } //def overwritePermissions - - InternalClient.prototype.overwritePermissions = function overwritePermissions(channel, role, updated) { + overwritePermissions(channel, role, updated) { var self = this; - return new Promise(function (resolve, reject) { - channel = self.resolver.resolveChannel(channel)["catch"](reject).then(next); + return new Promise((resolve, reject) => { + channel = self.resolver.resolveChannel(channel).catch(reject).then(next); function next(channel) { var user; @@ -934,11 +845,10 @@ var InternalClient = (function () { }); } }); - }; + } //def setStatus - - InternalClient.prototype.setStatus = function setStatus(idleStatus, gameID) { + setStatus(idleStatus, gameID) { var self = this; self.idleStatus = idleStatus || self.idleStatus || null; @@ -949,7 +859,7 @@ var InternalClient = (function () { } self.gameID = self.resolver.resolveGameID(gameID) || self.gameID || null; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var packet = { op: 3, @@ -967,19 +877,18 @@ var InternalClient = (function () { resolve(); }); - }; + } //def sendTyping - - InternalClient.prototype.sendTyping = function sendTyping(channel) { + sendTyping(channel) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(channel).then(next)["catch"](reject); + self.resolver.resolveChannel(channel).then(next).catch(reject); function next(channel) { - request.post(Endpoints.CHANNEL(channel.id) + "/typing").set("authorization", self.token).end(function (err, res) { + request.post(Endpoints.CHANNEL(channel.id) + "/typing").set("authorization", self.token).end((err, res) => { if (err) { reject(err); } else { @@ -988,15 +897,14 @@ var InternalClient = (function () { }); } }); - }; + } //def startTyping - - InternalClient.prototype.startTyping = function startTyping(channel) { + startTyping(channel) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(channel).then(next)["catch"](reject); + self.resolver.resolveChannel(channel).then(next).catch(reject); function next(channel) { @@ -1008,20 +916,17 @@ var InternalClient = (function () { self.sendTyping(channel); - self.typingIntervals[channel.id] = setInterval(function () { - return self.sendTyping(channel); - }, 4000); + self.typingIntervals[channel.id] = setInterval(() => self.sendTyping(channel), 4000); } }); - }; + } //def stopTyping - - InternalClient.prototype.stopTyping = function stopTyping(channel) { + stopTyping(channel) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(channel).then(next)["catch"](reject); + self.resolver.resolveChannel(channel).then(next).catch(reject); function next(channel) { @@ -1035,20 +940,19 @@ var InternalClient = (function () { self.typingIntervals[channel.id] = false; } }); - }; + } //def updateDetails - - InternalClient.prototype.updateDetails = function updateDetails(data) { + updateDetails(data) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { request.patch(Endpoints.ME).set("authorization", self.token).send({ avatar: self.resolver.resolveToBase64(data.avatar) || self.user.avatar, email: data.email || self.email, new_password: data.newPassword || null, password: data.password || self.password, username: data.username || self.user.username - }).end(function (err) { + }).end(err => { if (err) { reject(err); } else { @@ -1056,29 +960,24 @@ var InternalClient = (function () { } }); }); - }; + } //def setAvatar - - InternalClient.prototype.setAvatar = function setAvatar(avatar) { - return this.updateDetails({ avatar: avatar }); - }; + setAvatar(avatar) { + return this.updateDetails({ avatar }); + } //def setUsername - - InternalClient.prototype.setUsername = function setUsername(username) { - return this.updateDetails({ username: username }); - }; + setUsername(username) { + return this.updateDetails({ username }); + } //def setTopic - - InternalClient.prototype.setTopic = function setTopic(chann) { - var topic = arguments.length <= 1 || arguments[1] === undefined ? "" : arguments[1]; - + setTopic(chann, topic = "") { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(chann).then(next)["catch"](reject); + self.resolver.resolveChannel(chann).then(next).catch(reject); function next(channel) { @@ -1086,7 +985,7 @@ var InternalClient = (function () { name: channel.name, position: channel.position, topic: topic - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(err); } else { @@ -1096,17 +995,14 @@ var InternalClient = (function () { }); } }); - }; + } //def setChannelName - - InternalClient.prototype.setChannelName = function setChannelName(chann) { - var name = arguments.length <= 1 || arguments[1] === undefined ? "discordjs_is_the_best" : arguments[1]; - + setChannelName(chann, name = "discordjs_is_the_best") { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(chann).then(next)["catch"](reject); + self.resolver.resolveChannel(chann).then(next).catch(reject); function next(channel) { @@ -1114,7 +1010,7 @@ var InternalClient = (function () { name: name, position: channel.position, topic: channel.topic - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(err); } else { @@ -1124,18 +1020,14 @@ var InternalClient = (function () { }); } }); - }; + } //def setChannelNameAndTopic - - InternalClient.prototype.setChannelNameAndTopic = function setChannelNameAndTopic(chann) { - var name = arguments.length <= 1 || arguments[1] === undefined ? "discordjs_is_the_best" : arguments[1]; - var topic = arguments.length <= 2 || arguments[2] === undefined ? "" : arguments[2]; - + setChannelNameAndTopic(chann, name = "discordjs_is_the_best", topic = "") { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { - self.resolver.resolveChannel(chann).then(next)["catch"](reject); + self.resolver.resolveChannel(chann).then(next).catch(reject); function next(channel) { @@ -1143,7 +1035,7 @@ var InternalClient = (function () { name: name, position: channel.position, topic: topic - }).end(function (err, res) { + }).end((err, res) => { if (err) { reject(err); } else { @@ -1154,25 +1046,23 @@ var InternalClient = (function () { }); } }); - }; + } //def updateChannel - - InternalClient.prototype.updateChannel = function updateChannel(chann, data) { + updateChannel(chann, data) { return this.setChannelNameAndTopic(chann, data.name, data.topic); - }; + } //def ack - - InternalClient.prototype.ack = function ack(msg) { + ack(msg) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { msg = self.resolver.resolveMessage(msg); if (msg) { - request.post(Endpoints.CHANNEL_MESSAGE(msg.channel.id, msg.id) + "/ack").set("authorization", self.token).end(function (err) { + request.post(Endpoints.CHANNEL_MESSAGE(msg.channel.id, msg.id) + "/ack").set("authorization", self.token).end(err => { if (err) { reject(err); } else { @@ -1183,13 +1073,13 @@ var InternalClient = (function () { reject(new Error("Message does not exist")); } }); - }; + } - InternalClient.prototype.sendWS = function sendWS(object) { + sendWS(object) { if (this.websocket) this.websocket.send(JSON.stringify(object)); - }; + } - InternalClient.prototype.createWS = function createWS(url) { + createWS(url) { var self = this; var client = self.client; @@ -1197,7 +1087,7 @@ var InternalClient = (function () { this.websocket = new WebSocket(url); - this.websocket.onopen = function () { + this.websocket.onopen = () => { self.sendWS({ op: 2, @@ -1216,17 +1106,17 @@ var InternalClient = (function () { }); }; - this.websocket.onclose = function () { + this.websocket.onclose = () => { self.websocket = null; self.state = ConnectionState.DISCONNECTED; client.emit("disconnected"); }; - this.websocket.onerror = function (e) { + this.websocket.onerror = e => { client.emit("error", e); }; - this.websocket.onmessage = function (e) { + this.websocket.onmessage = e => { if (e.type === "Binary") { if (!zlib) zlib = require("zlib"); @@ -1249,21 +1139,19 @@ var InternalClient = (function () { case PacketType.READY: var startTime = Date.now(); self.user = self.users.add(new User(data.user, client)); - data.guilds.forEach(function (server) { + data.guilds.forEach(server => { self.servers.add(new Server(server, client)); }); - data.private_channels.forEach(function (pm) { + data.private_channels.forEach(pm => { self.private_channels.add(new PMChannel(pm, client)); }); self.state = ConnectionState.READY; - setInterval(function () { - return self.sendWS({ op: 1, d: Date.now() }); - }, data.heartbeat_interval); + setInterval(() => self.sendWS({ op: 1, d: Date.now() }), data.heartbeat_interval); client.emit("ready"); - client.emit("debug", "ready packet took " + (Date.now() - startTime) + "ms to process"); - client.emit("debug", "ready with " + self.servers.length + " servers, " + self.channels.length + " channels and " + self.users.length + " users cached."); + client.emit("debug", `ready packet took ${ Date.now() - startTime }ms to process`); + client.emit("debug", `ready with ${ self.servers.length } servers, ${ self.channels.length } channels and ${ self.users.length } users cached.`); self.readyTime = Date.now(); break; @@ -1275,9 +1163,7 @@ var InternalClient = (function () { var msg = channel.messages.add(new Message(data, channel, client)); if (self.messageAwaits[channel.id + msg.author.id]) { - self.messageAwaits[channel.id + msg.author.id].map(function (fn) { - return fn(msg); - }); + self.messageAwaits[channel.id + msg.author.id].map(fn => fn(msg)); self.messageAwaits[channel.id + msg.author.id] = null; client.emit("message", msg, true); //2nd param is isAwaitedMessage } else { @@ -1338,20 +1224,7 @@ var InternalClient = (function () { var server = self.servers.get("id", data.id); if (server) { - for (var _iterator3 = server.channels, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; - } - - var channel = _ref3; - + for (var channel of server.channels) { self.channels.remove(channel); } @@ -1497,9 +1370,7 @@ var InternalClient = (function () { if (server) { server.memberMap[data.user.id] = { - roles: data.roles.map(function (pid) { - return server.roles.get("id", pid); - }), + roles: data.roles.map(pid => server.roles.get("id", pid)), mute: false, deaf: false, joinedAt: Date.parse(data.joined_at) @@ -1530,9 +1401,7 @@ var InternalClient = (function () { if (server) { var user = self.users.get("id", data.user.id); if (user) { - server.memberMap[data.user.id].roles = data.roles.map(function (pid) { - return server.roles.get("id", pid); - }); + server.memberMap[data.user.id].roles = data.roles.map(pid => server.roles.get("id", pid)); server.memberMap[data.user.id].mute = data.mute; server.memberMap[data.user.id].deaf = data.deaf; client.emit("serverMemberUpdated", server, user); @@ -1585,7 +1454,7 @@ var InternalClient = (function () { user.typing.channel = channel; client.emit("userTypingStart", user, channel); } - setTimeout(function () { + setTimeout(() => { if (Date.now() - user.typing.since > 5500) { // they haven't typed since user.typing.since = null; @@ -1619,16 +1488,7 @@ var InternalClient = (function () { break; } }; - }; - - _createClass(InternalClient, [{ - key: "uptime", - get: function get() { - return this.readyTime ? Date.now() - this.readyTime : null; - } - }]); - - return InternalClient; -})(); + } +} module.exports = InternalClient; \ No newline at end of file diff --git a/lib/Client/Resolver/Resolver.js b/lib/Client/Resolver/Resolver.js index ed23d92f7..f42555eca 100644 --- a/lib/Client/Resolver/Resolver.js +++ b/lib/Client/Resolver/Resolver.js @@ -1,8 +1,7 @@ -"use strict"; +"use strict" /* global Buffer */ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - +; var fs = require("fs"); var User = require("../../Structures/User.js"), @@ -16,32 +15,17 @@ var User = require("../../Structures/User.js"), Invite = require("../../Structures/Invite.js"), Games = require("../../../ref/gameMap.js"); -var Resolver = (function () { - function Resolver(internal) { - _classCallCheck(this, Resolver); - +class Resolver { + constructor(internal) { this.internal = internal; } - Resolver.prototype.resolveGameID = function resolveGameID(resource) { + resolveGameID(resource) { if (!isNaN(resource) && parseInt(resource) % 1 === 0) { return resource; } else if (typeof resource == "string" || resource instanceof String) { - for (var _iterator = Games, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var game = _ref; - + for (var game of Games) { if (game.name.toUpperCase() === resource.toUpperCase()) { return game.id; } @@ -49,17 +33,17 @@ var Resolver = (function () { } return null; - }; + } - Resolver.prototype.resolveToBase64 = function resolveToBase64(resource) { + resolveToBase64(resource) { if (resource instanceof Buffer) { resource = resource.toString("base64"); resource = "data:image/jpg;base64," + resource; } return resource; - }; + } - Resolver.prototype.resolveInviteID = function resolveInviteID(resource) { + resolveInviteID(resource) { if (resource instanceof Invite) { return resource.id; } else if (typeof resource == "string" || resource instanceof String) { @@ -72,9 +56,9 @@ var Resolver = (function () { } } return null; - }; + } - Resolver.prototype.resolveServer = function resolveServer(resource) { + resolveServer(resource) { if (resource instanceof Server) { return resource; } else if (resource instanceof ServerChannel) { @@ -87,39 +71,26 @@ var Resolver = (function () { } } return null; - }; + } - Resolver.prototype.resolveFile = function resolveFile(resource) { + resolveFile(resource) { if (typeof resource === "string" || resource instanceof String) { return fs.createReadStream(resource); } else { return resource; } - }; + } - Resolver.prototype.resolveMentions = function resolveMentions(resource) { + resolveMentions(resource) { // resource is a string var _mentions = []; - for (var _iterator2 = resource.match(/<@[^>]*>/g) || [], _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var mention = _ref2; - + for (var mention of resource.match(/<@[^>]*>/g) || []) { _mentions.push(mention.substring(2, mention.length - 1)); } return _mentions; - }; + } - Resolver.prototype.resolveString = function resolveString(resource) { + resolveString(resource) { // accepts Array, Channel, Server, User, Message, String and anything // toString()-able @@ -130,9 +101,9 @@ var Resolver = (function () { } return final.toString(); - }; + } - Resolver.prototype.resolveUser = function resolveUser(resource) { + resolveUser(resource) { /* accepts a Message, Channel, Server, String ID, User, PMChannel */ @@ -155,9 +126,9 @@ var Resolver = (function () { } return found; - }; + } - Resolver.prototype.resolveMessage = function resolveMessage(resource) { + resolveMessage(resource) { // accepts a Message, PMChannel & TextChannel var found = null; @@ -168,23 +139,23 @@ var Resolver = (function () { } return found; - }; + } - Resolver.prototype.resolveVoiceChannel = function resolveVoiceChannel(resource) { + resolveVoiceChannel(resource) { // resolveChannel will also work but this is more apt if (resource instanceof VoiceChannel) { return resource; } return null; - }; + } - Resolver.prototype.resolveChannel = function resolveChannel(resource) { + resolveChannel(resource) { /* accepts a Message, Channel, Server, String ID, User */ var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var found = null; if (resource instanceof Message) { found = resource.channel; @@ -197,20 +168,7 @@ var Resolver = (function () { } else if (resource instanceof User) { // see if a PM exists var chatFound = false; - for (var _iterator3 = self.internal.private_channels, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; - } - - var pmchat = _ref3; - + for (var pmchat of self.internal.private_channels) { if (pmchat.recipient.equals(resource)) { chatFound = pmchat; break; @@ -221,19 +179,12 @@ var Resolver = (function () { found = chatFound; } else { // PM does not exist :\ - self.internal.startPM(resource).then(function (pmchannel) { - return resolve(pmchannel); - })["catch"](function (e) { - return reject(e); - }); + self.internal.startPM(resource).then(pmchannel => resolve(pmchannel)).catch(e => reject(e)); return; } } if (found) resolve(found);else reject(new Error("Didn't found anything")); }); - }; - - return Resolver; -})(); - + } +} module.exports = Resolver; \ No newline at end of file diff --git a/lib/Constants.js b/lib/Constants.js index 572f3c8f2..e808bf747 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -1,75 +1,35 @@ -"use strict"; - var API = "https://discordapp.com/api"; var Endpoints = { // general endpoints - LOGIN: API + "/auth/login", - LOGOUT: API + "/auth/logout", - ME: API + "/users/@me", - GATEWAY: API + "/gateway", - USER_CHANNELS: function USER_CHANNELS(userID) { - return API + "/users/" + userID + "/channels"; - }, - AVATAR: function AVATAR(userID, avatar) { - return API + "/users/" + userID + "/avatars/" + avatar + ".jpg"; - }, - INVITE: function INVITE(id) { - return API + "/invite/" + id; - }, + LOGIN: `${ API }/auth/login`, + LOGOUT: `${ API }/auth/logout`, + ME: `${ API }/users/@me`, + GATEWAY: `${ API }/gateway`, + USER_CHANNELS: userID => `${ API }/users/${ userID }/channels`, + AVATAR: (userID, avatar) => `${ API }/users/${ userID }/avatars/${ avatar }.jpg`, + INVITE: id => `${ API }/invite/${ id }`, // servers - SERVERS: API + "/guilds", - SERVER: function SERVER(serverID) { - return Endpoints.SERVERS + "/" + serverID; - }, - SERVER_ICON: function SERVER_ICON(serverID, hash) { - return Endpoints.SERVER(serverID) + "/icons/" + hash + ".jpg"; - }, - SERVER_PRUNE: function SERVER_PRUNE(serverID) { - return Endpoints.SERVER(serverID) + "/prune"; - }, - SERVER_EMBED: function SERVER_EMBED(serverID) { - return Endpoints.SERVER(serverID) + "/embed"; - }, - SERVER_INVITES: function SERVER_INVITES(serverID) { - return Endpoints.SERVER(serverID) + "/invites"; - }, - SERVER_ROLES: function SERVER_ROLES(serverID) { - return Endpoints.SERVER(serverID) + "/roles"; - }, - SERVER_BANS: function SERVER_BANS(serverID) { - return Endpoints.SERVER(serverID) + "/bans"; - }, - SERVER_INTEGRATIONS: function SERVER_INTEGRATIONS(serverID) { - return Endpoints.SERVER(serverID) + "/integrations"; - }, - SERVER_MEMBERS: function SERVER_MEMBERS(serverID) { - return Endpoints.SERVER(serverID) + "/members"; - }, - SERVER_CHANNELS: function SERVER_CHANNELS(serverID) { - return Endpoints.SERVER(serverID) + "/channels"; - }, + SERVERS: `${ API }/guilds`, + SERVER: serverID => `${ Endpoints.SERVERS }/${ serverID }`, + SERVER_ICON: (serverID, hash) => `${ Endpoints.SERVER(serverID) }/icons/${ hash }.jpg`, + SERVER_PRUNE: serverID => `${ Endpoints.SERVER(serverID) }/prune`, + SERVER_EMBED: serverID => `${ Endpoints.SERVER(serverID) }/embed`, + SERVER_INVITES: serverID => `${ Endpoints.SERVER(serverID) }/invites`, + SERVER_ROLES: serverID => `${ Endpoints.SERVER(serverID) }/roles`, + SERVER_BANS: serverID => `${ Endpoints.SERVER(serverID) }/bans`, + 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: function CHANNEL(channelID) { - return Endpoints.CHANNELS + "/" + channelID; - }, - CHANNEL_MESSAGES: function CHANNEL_MESSAGES(channelID) { - return Endpoints.CHANNEL(channelID) + "/messages"; - }, - CHANNEL_INVITES: function CHANNEL_INVITES(channelID) { - return Endpoints.CHANNEL(channelID) + "/invites"; - }, - CHANNEL_TYPING: function CHANNEL_TYPING(channelID) { - return Endpoints.CHANNEL(channelID) + "/typing"; - }, - CHANNEL_PERMISSIONS: function CHANNEL_PERMISSIONS(channelID) { - return Endpoints.CHANNEL(channelID) + "/permissions"; - }, - CHANNEL_MESSAGE: function CHANNEL_MESSAGE(channelID, messageID) { - return Endpoints.CHANNEL_MESSAGES(channelID) + "/" + messageID; - } + CHANNELS: `${ API }/channels`, + CHANNEL: channelID => `${ Endpoints.CHANNELS }/${ channelID }`, + CHANNEL_MESSAGES: channelID => `${ Endpoints.CHANNEL(channelID) }/messages`, + CHANNEL_INVITES: channelID => `${ Endpoints.CHANNEL(channelID) }/invites`, + CHANNEL_TYPING: channelID => `${ Endpoints.CHANNEL(channelID) }/typing`, + CHANNEL_PERMISSIONS: channelID => `${ Endpoints.CHANNEL(channelID) }/permissions`, + CHANNEL_MESSAGE: (channelID, messageID) => `${ Endpoints.CHANNEL_MESSAGES(channelID) }/${ messageID }` }; var Permissions = { diff --git a/lib/Structures/Channel.js b/lib/Structures/Channel.js index 93d222f13..3680913ac 100644 --- a/lib/Structures/Channel.js +++ b/lib/Structures/Channel.js @@ -1,39 +1,26 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Equality = require("../Util/Equality.js"); var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); var reg = require("../Util/ArgumentRegulariser.js").reg; -var Channel = (function (_Equality) { - _inherits(Channel, _Equality); +class Channel extends Equality { - function Channel(data, client) { - _classCallCheck(this, Channel); - - _Equality.call(this); + constructor(data, client) { + super(); this.id = data.id; this.client = client; } - Channel.prototype["delete"] = function _delete() { + get isPrivate() { + return !!this.server; + } + + delete() { return this.client.deleteChannel.apply(this.client, reg(this, arguments)); - }; + } - _createClass(Channel, [{ - key: "isPrivate", - get: function get() { - return !!this.server; - } - }]); - - return Channel; -})(Equality); +} module.exports = Channel; \ No newline at end of file diff --git a/lib/Structures/ChannelPermissions.js b/lib/Structures/ChannelPermissions.js index fe7a039fd..2f7f61b82 100644 --- a/lib/Structures/ChannelPermissions.js +++ b/lib/Structures/ChannelPermissions.js @@ -1,22 +1,15 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Permissions = require("../Constants.js").Permissions; -var ChannelPermissions = (function () { - function ChannelPermissions(permissions) { - _classCallCheck(this, ChannelPermissions); - +class ChannelPermissions { + constructor(permissions) { this.permissions = permissions; } - ChannelPermissions.prototype.serialise = function serialise(explicit) { - var _this = this; + serialise(explicit) { - var hp = function hp(perm) { - return _this.hasPermission(perm, explicit); - }; + var hp = perm => this.hasPermission(perm, explicit); return { // general @@ -43,16 +36,14 @@ var ChannelPermissions = (function () { voiceMoveMembers: hp(Permissions.voiceMoveMembers), voiceUseVAD: hp(Permissions.voiceUseVAD) }; - }; + } - ChannelPermissions.prototype.serialize = function serialize() { + serialize() { // ;n; return this.serialise(); - }; - - ChannelPermissions.prototype.hasPermission = function hasPermission(perm) { - var explicit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; + } + hasPermission(perm, explicit = false) { if (perm instanceof String || typeof perm === "string") { perm = Permissions[perm]; } @@ -67,9 +58,7 @@ var ChannelPermissions = (function () { } } return !!(this.permissions & perm); - }; - - return ChannelPermissions; -})(); + } +} module.exports = ChannelPermissions; \ No newline at end of file diff --git a/lib/Structures/Invite.js b/lib/Structures/Invite.js index c003ff1dc..1b2231647 100644 --- a/lib/Structures/Invite.js +++ b/lib/Structures/Invite.js @@ -1,32 +1,26 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Server = require("./Server.js"); var ServerChannel = require("./ServerChannel.js"); -var Invite = (function () { - function Invite(data, chan, client) { - _classCallCheck(this, Invite); +class Invite { + constructor(data, chan, client) { + this.maxAge = data.max_age; + this.code = data.code; + this.server = chan.server; + this.channel = chan; + this.revoked = data.revoked; + this.createdAt = Date.parse(data.created_at); + this.temporary = data.temporary; + this.uses = data.uses; + this.maxUses = data.uses; + this.inviter = client.internal.users.get("id", data.inviter.id); + this.xkcd = data.xkcdpass; + } - this.maxAge = data.max_age; - this.code = data.code; - this.server = chan.server; - this.channel = chan; - this.revoked = data.revoked; - this.createdAt = Date.parse(data.created_at); - this.temporary = data.temporary; - this.uses = data.uses; - this.maxUses = data.uses; - this.inviter = client.internal.users.get("id", data.inviter.id); - this.xkcd = data.xkcdpass; - } - - Invite.prototype.toString = function toString() { - return "https://discord.gg/" + this.code; - }; - - return Invite; -})(); + toString() { + return `https://discord.gg/${ this.code }`; + } +} module.exports = Invite; \ No newline at end of file diff --git a/lib/Structures/Message.js b/lib/Structures/Message.js index d61295506..84e5ae0ac 100644 --- a/lib/Structures/Message.js +++ b/lib/Structures/Message.js @@ -1,25 +1,13 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Cache = require("../Util/Cache.js"); var User = require("./User.js"); var reg = require("../Util/ArgumentRegulariser.js").reg; var Equality = require("../Util/Equality"); -var Message = (function (_Equality) { - _inherits(Message, _Equality); - - function Message(data, channel, client) { - var _this = this; - - _classCallCheck(this, Message); - - _Equality.call(this); +class Message extends Equality { + constructor(data, channel, client) { + super(); this.channel = channel; this.client = client; this.nonce = data.nonce; @@ -37,51 +25,46 @@ var Message = (function (_Equality) { this.content = data.content; this.mentions = new Cache(); - data.mentions.forEach(function (mention) { + 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 // not previously cached. - if (mention instanceof User) _this.mentions.push(mention);else _this.mentions.add(client.internal.users.add(new User(mention, client))); + if (mention instanceof User) this.mentions.push(mention);else this.mentions.add(client.internal.users.add(new User(mention, client))); }); } - Message.prototype.isMentioned = function isMentioned(user) { + isMentioned(user) { user = this.client.internal.resolver.resolveUser(user); if (user) { return this.mentions.has("id", user.id); } else { return false; } - }; + } - Message.prototype.toString = function toString() { + toString() { return this.content; - }; + } - Message.prototype["delete"] = function _delete() { + delete() { return this.client.deleteMessage.apply(this.client, reg(this, arguments)); - }; + } - Message.prototype.update = function update() { + update() { return this.client.updateMessage.apply(this.client, reg(this, arguments)); - }; + } - Message.prototype.reply = function reply() { + reply() { return this.client.reply.apply(this.client, reg(this, arguments)); - }; + } - Message.prototype.replyTTS = function replyTTS() { + replyTTS() { return this.client.replyTTS.apply(this.client, reg(this, arguments)); - }; + } - _createClass(Message, [{ - key: "sender", - get: function get() { - return this.author; - } - }]); - - return Message; -})(Equality); + get sender() { + return this.author; + } +} module.exports = Message; \ No newline at end of file diff --git a/lib/Structures/PMChannel.js b/lib/Structures/PMChannel.js index 3f0404241..80085b683 100644 --- a/lib/Structures/PMChannel.js +++ b/lib/Structures/PMChannel.js @@ -1,24 +1,14 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Channel = require("./Channel.js"); var User = require("./User.js"); var Equality = require("../Util/Equality.js"); var Cache = require("../Util/Cache.js"); var reg = require("../Util/ArgumentRegulariser.js").reg; -var PMChannel = (function (_Channel) { - _inherits(PMChannel, _Channel); - - function PMChannel(data, client) { - _classCallCheck(this, PMChannel); - - _Channel.call(this, data, client); +class PMChannel extends Channel { + constructor(data, client) { + super(data, client); this.type = data.type || "text"; this.lastMessageId = data.last_message_id; @@ -27,27 +17,21 @@ var PMChannel = (function (_Channel) { } /* warning! may return null */ + get lastMessage() { + return this.messages.get("id", this.lastMessageID); + } - PMChannel.prototype.toString = function toString() { + toString() { return this.recipient.toString(); - }; + } - PMChannel.prototype.sendMessage = function sendMessage() { + sendMessage() { return this.client.sendMessage.apply(this.client, reg(this, arguments)); - }; + } - PMChannel.prototype.sendTTSMessage = function sendTTSMessage() { + sendTTSMessage() { return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); - }; - - _createClass(PMChannel, [{ - key: "lastMessage", - get: function get() { - return this.messages.get("id", this.lastMessageID); - } - }]); - - return PMChannel; -})(Channel); + } +} module.exports = PMChannel; \ No newline at end of file diff --git a/lib/Structures/PermissionOverwrite.js b/lib/Structures/PermissionOverwrite.js index f20d61b7a..eef57fe68 100644 --- a/lib/Structures/PermissionOverwrite.js +++ b/lib/Structures/PermissionOverwrite.js @@ -1,15 +1,10 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Permissions = require("../Constants.js").Permissions; -var PermissionOverwrite = (function () { - function PermissionOverwrite(data) { - _classCallCheck(this, PermissionOverwrite); +class PermissionOverwrite { + constructor(data) { this.id = data.id; this.type = data.type; // member or role this.deny = data.deny; @@ -17,70 +12,59 @@ var PermissionOverwrite = (function () { } // returns an array of allowed permissions + get allowed() { + var allowed = []; + for (var permName in Permissions) { + if (permName === "manageRoles" || permName === "manageChannels") { + // these permissions do not exist in overwrites. + continue; + } - PermissionOverwrite.prototype.setAllowed = function setAllowed(allowedArray) { - var _this = this; + if (!!(this.allow & Permissions[permName])) { + allowed.push(permName); + } + } + return allowed; + } - allowedArray.forEach(function (permission) { + // returns an array of denied permissions + get denied() { + var denied = []; + for (var permName in Permissions) { + if (permName === "manageRoles" || permName === "manageChannels") { + // 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") { permission = Permissions[permission]; } if (permission) { - _this.allow |= 1 << permission; + this.allow |= 1 << permission; } }); - }; + } - PermissionOverwrite.prototype.setDenied = function setDenied(deniedArray) { - var _this2 = this; - - deniedArray.forEach(function (permission) { + setDenied(deniedArray) { + deniedArray.forEach(permission => { if (permission instanceof String || typeof permission === "string") { permission = Permissions[permission]; } if (permission) { - _this2.deny |= 1 << permission; + this.deny |= 1 << permission; } }); - }; + } - _createClass(PermissionOverwrite, [{ - key: "allowed", - get: function get() { - var allowed = []; - for (var permName in Permissions) { - if (permName === "manageRoles" || permName === "manageChannels") { - // these permissions do not exist in overwrites. - continue; - } - - if (!!(this.allow & Permissions[permName])) { - allowed.push(permName); - } - } - return allowed; - } - - // returns an array of denied permissions - }, { - key: "denied", - get: function get() { - var denied = []; - for (var permName in Permissions) { - if (permName === "manageRoles" || permName === "manageChannels") { - // these permissions do not exist in overwrites. - continue; - } - - if (!!(this.deny & Permissions[permName])) { - denied.push(permName); - } - } - return denied; - } - }]); - - return PermissionOverwrite; -})(); +} module.exports = PermissionOverwrite; \ No newline at end of file diff --git a/lib/Structures/Role.js b/lib/Structures/Role.js index 048c183cb..5fea1d4d6 100644 --- a/lib/Structures/Role.js +++ b/lib/Structures/Role.js @@ -1,7 +1,5 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Permissions = require("../Constants.js").Permissions; /* @@ -16,14 +14,10 @@ example data color: 0 } */ -var DefaultRole = [Permissions.createInstantInvite, Permissions.readMessages, Permissions.readMessageHistory, Permissions.sendMessages, Permissions.sendTTSMessages, Permissions.embedLinks, Permissions.attachFiles, Permissions.readMessageHistory, Permissions.mentionEveryone, Permissions.voiceConnect, Permissions.voiceSpeak, Permissions.voiceUseVAD].reduce(function (previous, current) { - return previous | current; -}, 0); - -var Role = (function () { - function Role(data, server, client) { - _classCallCheck(this, Role); +const DefaultRole = [Permissions.createInstantInvite, Permissions.readMessages, Permissions.readMessageHistory, Permissions.sendMessages, Permissions.sendTTSMessages, Permissions.embedLinks, Permissions.attachFiles, Permissions.readMessageHistory, Permissions.mentionEveryone, Permissions.voiceConnect, Permissions.voiceSpeak, Permissions.voiceUseVAD].reduce((previous, current) => previous | current, 0); +class Role { + constructor(data, server, client) { this.position = data.position || -1; this.permissions = data.permissions || (data.name === "@everyone" ? DefaultRole : 0); this.name = data.name || "@everyone"; @@ -35,12 +29,9 @@ var Role = (function () { this.client = client; } - Role.prototype.serialise = function serialise(explicit) { - var _this = this; + serialise(explicit) { - var hp = function hp(perm) { - return _this.hasPermission(perm, explicit); - }; + var hp = perm => this.hasPermission(perm, explicit); return { // general @@ -67,16 +58,14 @@ var Role = (function () { voiceMoveMembers: hp(Permissions.voiceMoveMembers), voiceUseVAD: hp(Permissions.voiceUseVAD) }; - }; + } - Role.prototype.serialize = function serialize() { + serialize() { // ;n; return this.serialise(); - }; - - Role.prototype.hasPermission = function hasPermission(perm) { - var explicit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; + } + hasPermission(perm, explicit = false) { if (perm instanceof String || typeof perm === "string") { perm = Permissions[perm]; } @@ -95,9 +84,9 @@ var Role = (function () { // !!(36953089 & (1 << 21)) = voice speak allowed return !!(this.permissions & perm); - }; + } - Role.prototype.setPermission = function setPermission(permission, value) { + setPermission(permission, value) { if (permission instanceof String || typeof permission === "string") { permission = Permissions[permission]; } @@ -109,31 +98,27 @@ var Role = (function () { this.permissions &= ~permission; } } - }; + } - Role.prototype.setPermissions = function setPermissions(obj) { - var _this2 = this; - - obj.forEach(function (value, permission) { + setPermissions(obj) { + obj.forEach((value, permission) => { if (permission instanceof String || typeof permission === "string") { permission = Permissions[permission]; } if (permission) { // valid permission - _this2.setPermission(permission, value); + this.setPermission(permission, value); } }); - }; + } - Role.prototype.colorAsHex = function colorAsHex() { + colorAsHex() { var val = this.color.toString(); while (val.length < 6) { val = "0" + val; } return "#" + val; - }; - - return Role; -})(); + } +} module.exports = Role; \ No newline at end of file diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index 99ee3971a..cdbce7653 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -1,11 +1,5 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Equality = require("../Util/Equality.js"); var Endpoints = require("../Constants.js").Endpoints; var Cache = require("../Util/Cache.js"); @@ -16,15 +10,10 @@ var Role = require("./Role.js"); var strictKeys = ["region", "ownerID", "name", "id", "icon", "afkTimeout", "afkChannelID"]; -var Server = (function (_Equality) { - _inherits(Server, _Equality); +class Server extends Equality { + constructor(data, client) { - function Server(data, client) { - var _this = this; - - _classCallCheck(this, Server); - - _Equality.call(this); + super(); var self = this; this.client = client; @@ -43,48 +32,33 @@ var Server = (function (_Equality) { var self = this; - data.roles.forEach(function (dataRole) { - _this.roles.add(new Role(dataRole, _this, client)); + data.roles.forEach(dataRole => { + this.roles.add(new Role(dataRole, this, client)); }); - data.members.forEach(function (dataUser) { - _this.memberMap[dataUser.user.id] = { - roles: dataUser.roles.map(function (pid) { - return self.roles.get("id", pid); - }), + data.members.forEach(dataUser => { + this.memberMap[dataUser.user.id] = { + roles: dataUser.roles.map(pid => self.roles.get("id", pid)), mute: dataUser.mute, deaf: dataUser.deaf, joinedAt: Date.parse(dataUser.joined_at) }; var user = client.internal.users.add(new User(dataUser.user, client)); - _this.members.add(user); + this.members.add(user); }); - data.channels.forEach(function (dataChannel) { + data.channels.forEach(dataChannel => { if (dataChannel.type === "text") { - var channel = client.internal.channels.add(new TextChannel(dataChannel, client, _this)); - _this.channels.add(channel); + var channel = client.internal.channels.add(new TextChannel(dataChannel, client, this)); + this.channels.add(channel); } else { - var channel = client.internal.channels.add(new VoiceChannel(dataChannel, client, _this)); - _this.channels.add(channel); + var channel = client.internal.channels.add(new VoiceChannel(dataChannel, client, this)); + this.channels.add(channel); } }); if (data.presences) { - for (var _iterator = data.presences, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var presence = _ref; - + for (var presence of data.presences) { var user = client.internal.users.get("id", presence.user.id); if (user) { user.status = presence.status; @@ -94,39 +68,46 @@ var Server = (function (_Equality) { } } - Server.prototype.rolesOfUser = function rolesOfUser(user) { + rolesOfUser(user) { user = this.client.internal.resolver.resolveUser(user); if (user) { return this.memberMap[user.id] ? this.memberMap[user.id].roles : []; } else { return null; } - }; + } - Server.prototype.rolesOf = function rolesOf(user) { + rolesOf(user) { return this.rolesOfUser(user); - }; + } - Server.prototype.toString = function toString() { + get iconURL() { + if (!this.icon) { + return null; + } else { + return Endpoints.SERVER_ICON(this.id, this.icon); + } + } + + get afkChannel() { + return this.channels.get("id", this.afkChannelID); + } + + get defaultChannel() { + return this.channels.get("id", this.id); + } + + get owner() { + return this.members.get("id", this.ownerID); + } + + toString() { return this.name; - }; + } - Server.prototype.equalsStrict = function equalsStrict(obj) { + equalsStrict(obj) { if (obj instanceof Server) { - for (var _iterator2 = strictKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var key = _ref2; - + for (var key of strictKeys) { if (obj[key] !== this[key]) { return false; } @@ -135,35 +116,8 @@ var Server = (function (_Equality) { return false; } return true; - }; + } - _createClass(Server, [{ - key: "iconURL", - get: function get() { - if (!this.icon) { - return null; - } else { - return Endpoints.SERVER_ICON(this.id, this.icon); - } - } - }, { - key: "afkChannel", - get: function get() { - return this.channels.get("id", this.afkChannelID); - } - }, { - key: "defaultChannel", - get: function get() { - return this.channels.get("id", this.id); - } - }, { - key: "owner", - get: function get() { - return this.members.get("id", this.ownerID); - } - }]); - - return Server; -})(Equality); +} module.exports = Server; \ No newline at end of file diff --git a/lib/Structures/ServerChannel.js b/lib/Structures/ServerChannel.js index 0349d33f9..b3d84b732 100644 --- a/lib/Structures/ServerChannel.js +++ b/lib/Structures/ServerChannel.js @@ -1,35 +1,25 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Channel = require("./Channel.js"); var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); var ChannelPermissions = require("./ChannelPermissions.js"); var reg = require("../Util/ArgumentRegulariser.js").reg; -var ServerChannel = (function (_Channel) { - _inherits(ServerChannel, _Channel); - - function ServerChannel(data, client, server) { - var _this = this; - - _classCallCheck(this, ServerChannel); - - _Channel.call(this, data, client); +class ServerChannel extends Channel { + constructor(data, client, server) { + super(data, client); this.name = data.name; this.type = data.type; this.position = data.position; this.permissionOverwrites = new Cache(); this.server = server; - data.permission_overwrites.forEach(function (permission) { - _this.permissionOverwrites.add(new PermissionOverwrite(permission)); + data.permission_overwrites.forEach(permission => { + this.permissionOverwrites.add(new PermissionOverwrite(permission)); }); } - ServerChannel.prototype.permissionsOf = function permissionsOf(user) { + permissionsOf(user) { user = this.client.internal.resolver.resolveUser(user); if (user) { if (this.server.owner.equals(user)) { @@ -38,13 +28,11 @@ var ServerChannel = (function (_Channel) { var everyoneRole = this.server.roles.get("name", "@everyone"); var userRoles = [everyoneRole].concat(this.server.rolesOf(user) || []); - var userRolesID = userRoles.map(function (v) { - return v.id; - }); + var userRolesID = userRoles.map(v => v.id); var roleOverwrites = [], memberOverwrites = []; - this.permissionOverwrites.forEach(function (overwrite) { + this.permissionOverwrites.forEach(overwrite => { if (overwrite.type === "member" && overwrite.id === user.id) { memberOverwrites.push(overwrite); } else if (overwrite.type === "role" && overwrite.id in userRolesID) { @@ -54,37 +42,11 @@ var ServerChannel = (function (_Channel) { var permissions = 0; - for (var _iterator = userRoles, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var serverRole = _ref; - + for (var serverRole of userRoles) { permissions |= serverRole.permissions; } - for (var _iterator2 = roleOverwrites.concat(memberOverwrites), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var overwrite = _ref2; - + for (var overwrite of roleOverwrites.concat(memberOverwrites)) { permissions = permissions & ~overwrite.deny; permissions = permissions | overwrite.allow; } @@ -93,25 +55,23 @@ var ServerChannel = (function (_Channel) { } else { return null; } - }; + } - ServerChannel.prototype.permsOf = function permsOf(user) { + permsOf(user) { return this.permissionsOf(user); - }; + } - ServerChannel.prototype.mention = function mention() { - return "<#" + this.id + ">"; - }; + mention() { + return `<#${ this.id }>`; + } - ServerChannel.prototype.toString = function toString() { + toString() { return this.mention(); - }; + } - ServerChannel.prototype.setName = function setName() { + setName() { return this.client.setChannelName.apply(this.client, reg(this, arguments)); - }; - - return ServerChannel; -})(Channel); + } +} module.exports = ServerChannel; \ No newline at end of file diff --git a/lib/Structures/TextChannel.js b/lib/Structures/TextChannel.js index 181d20354..81c48dfc2 100644 --- a/lib/Structures/TextChannel.js +++ b/lib/Structures/TextChannel.js @@ -1,22 +1,12 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var ServerChannel = require("./ServerChannel.js"); var Cache = require("../Util/Cache.js"); var reg = require("../Util/ArgumentRegulariser.js").reg; -var TextChannel = (function (_ServerChannel) { - _inherits(TextChannel, _ServerChannel); - - function TextChannel(data, client, server) { - _classCallCheck(this, TextChannel); - - _ServerChannel.call(this, data, client, server); +class TextChannel extends ServerChannel { + constructor(data, client, server) { + super(data, client, server); this.topic = data.topic; this.lastMessageID = data.last_message_id; @@ -24,35 +14,29 @@ var TextChannel = (function (_ServerChannel) { } /* warning! may return null */ + get lastMessage() { + return this.messages.get("id", this.lastMessageID); + } - TextChannel.prototype.setTopic = function setTopic() { + setTopic() { return this.client.setTopic.apply(this.client, reg(this, arguments)); - }; + } - TextChannel.prototype.setNameAndTopic = function setNameAndTopic() { + setNameAndTopic() { return this.client.setChannelNameAndTopic.apply(this.client, reg(this, arguments)); - }; + } - TextChannel.prototype.update = function update() { + update() { return this.client.updateChannel.apply(this.client, reg(this, arguments)); - }; + } - TextChannel.prototype.sendMessage = function sendMessage() { + sendMessage() { return this.client.sendMessage.apply(this.client, reg(this, arguments)); - }; + } - TextChannel.prototype.sendTTSMessage = function sendTTSMessage() { + sendTTSMessage() { return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); - }; - - _createClass(TextChannel, [{ - key: "lastMessage", - get: function get() { - return this.messages.get("id", this.lastMessageID); - } - }]); - - return TextChannel; -})(ServerChannel); + } +} module.exports = TextChannel; \ No newline at end of file diff --git a/lib/Structures/User.js b/lib/Structures/User.js index 3815089ee..3a5e2a03d 100644 --- a/lib/Structures/User.js +++ b/lib/Structures/User.js @@ -1,21 +1,11 @@ "use strict"; -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var Equality = require("../Util/Equality.js"); var Endpoints = require("../Constants.js").Endpoints; -var User = (function (_Equality) { - _inherits(User, _Equality); - - function User(data, client) { - _classCallCheck(this, User); - - _Equality.call(this); +class User extends Equality { + constructor(data, client) { + super(); this.client = client; this.username = data.username; this.discriminator = data.discriminator; @@ -29,30 +19,25 @@ var User = (function (_Equality) { }; } - User.prototype.mention = function mention() { - return "<@" + this.id + ">"; - }; - - User.prototype.toString = function toString() { - return this.mention(); - }; - - User.prototype.equalsStrict = function equalsStrict(obj) { - if (obj instanceof User) return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar && this.status === obj.status && this.gameID === obj.gameID;else return false; - }; - - _createClass(User, [{ - key: "avatarURL", - get: function get() { - if (!this.avatar) { - return null; - } else { - return Endpoints.AVATAR(this.id, this.avatar); - } + get avatarURL() { + if (!this.avatar) { + return null; + } else { + return Endpoints.AVATAR(this.id, this.avatar); } - }]); + } - return User; -})(Equality); + mention() { + return `<@${ this.id }>`; + } + + toString() { + return this.mention(); + } + + equalsStrict(obj) { + if (obj instanceof User) return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar && this.status === obj.status && this.gameID === obj.gameID;else return false; + } +} module.exports = User; \ No newline at end of file diff --git a/lib/Structures/VoiceChannel.js b/lib/Structures/VoiceChannel.js index 333786b58..482924544 100644 --- a/lib/Structures/VoiceChannel.js +++ b/lib/Structures/VoiceChannel.js @@ -1,21 +1,11 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - var ServerChannel = require("./ServerChannel.js"); -var VoiceChannel = (function (_ServerChannel) { - _inherits(VoiceChannel, _ServerChannel); - - function VoiceChannel(data, client, server) { - _classCallCheck(this, VoiceChannel); - - _ServerChannel.call(this, data, client, server); +class VoiceChannel extends ServerChannel { + constructor(data, client, server) { + super(data, client, server); } - - return VoiceChannel; -})(ServerChannel); +} module.exports = VoiceChannel; \ No newline at end of file diff --git a/lib/Util/ArgumentRegulariser.js b/lib/Util/ArgumentRegulariser.js index 9c98ddb39..81e683582 100644 --- a/lib/Util/ArgumentRegulariser.js +++ b/lib/Util/ArgumentRegulariser.js @@ -1,5 +1,3 @@ -"use strict"; - exports.reg = function (c, a) { return [c].concat(Array.prototype.slice.call(a)); }; \ No newline at end of file diff --git a/lib/Util/Cache.js b/lib/Util/Cache.js index a5d978624..9bff343af 100644 --- a/lib/Util/Cache.js +++ b/lib/Util/Cache.js @@ -1,61 +1,40 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Cache = (function (_Array) { - _inherits(Cache, _Array); - - function Cache(discrim, limit) { - _classCallCheck(this, Cache); - - _Array.call(this); +class Cache extends Array { + constructor(discrim, limit) { + super(); this.discrim = discrim || "id"; } - Cache.prototype.get = function get(key, value) { + get(key, value) { var found = null; - this.forEach(function (val, index, array) { + this.forEach((val, index, array) => { if (val.hasOwnProperty(key) && val[key] == value) { found = val; return; } }); return found; - }; + } - Cache.prototype.has = function has(key, value) { + has(key, value) { return !!this.get(key, value); - }; + } - Cache.prototype.getAll = function getAll(key, value) { + getAll(key, value) { var found = new Cache(this.discrim); - this.forEach(function (val, index, array) { + this.forEach((val, index, array) => { if (val.hasOwnProperty(key) && val[key] == value) { found.push(val); return; } }); return found; - }; + } - Cache.prototype.add = function add(data) { + add(data) { var exit = false; - for (var _iterator = this, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var item = _ref; - + for (var item of this) { if (item[this.discrim] === data[this.discrim]) { exit = item; break; @@ -70,9 +49,9 @@ var Cache = (function (_Array) { this.push(data); return data; } - }; + } - Cache.prototype.update = function update(old, data) { + update(old, data) { var item = this.get(this.discrim, old[this.discrim]); if (item) { var index = this.indexOf(item); @@ -81,13 +60,13 @@ var Cache = (function (_Array) { } else { return false; } - }; + } - Cache.prototype.random = function random() { + random() { return this[Math.floor(Math.random() * this.length)]; - }; + } - Cache.prototype.remove = function remove(data) { + remove(data) { var index = this.indexOf(data); if (~index) { this.splice(index, 1); @@ -98,9 +77,7 @@ var Cache = (function (_Array) { } } return false; - }; - - return Cache; -})(Array); + } +} module.exports = Cache; \ No newline at end of file diff --git a/lib/Util/Equality.js b/lib/Util/Equality.js index 3288d530a..c1fa19284 100644 --- a/lib/Util/Equality.js +++ b/lib/Util/Equality.js @@ -9,37 +9,24 @@ Instead, use objectThatExtendsEquality.equals() */ -"use strict"; +class Equality { + constructor() {} -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Equality = (function () { - function Equality() { - _classCallCheck(this, Equality); + get eqDiscriminator() { + return "id"; } - Equality.prototype.equals = function equals(object) { + equals(object) { if (object && object[this.eqDiscriminator] == this[this.eqDiscriminator]) { return true; } return false; - }; + } - Equality.prototype.equalsStrict = function equalsStrict(object) { + equalsStrict(object) { // override per class type return; - }; - - _createClass(Equality, [{ - key: "eqDiscriminator", - get: function get() { - return "id"; - } - }]); - - return Equality; -})(); + } +} module.exports = Equality; \ No newline at end of file diff --git a/lib/Voice/AudioEncoder.js b/lib/Voice/AudioEncoder.js index 517a7cf68..33d444614 100644 --- a/lib/Voice/AudioEncoder.js +++ b/lib/Voice/AudioEncoder.js @@ -1,7 +1,5 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var cpoc = require("child_process"); var opus; @@ -12,41 +10,26 @@ try { } var VoicePacket = require("./VoicePacket.js"); -var AudioEncoder = (function () { - function AudioEncoder() { - _classCallCheck(this, AudioEncoder); - +class AudioEncoder { + constructor() { if (opus) { this.opus = new opus.OpusEncoder(48000, 1); } this.choice = false; } - AudioEncoder.prototype.opusBuffer = function opusBuffer(buffer) { + opusBuffer(buffer) { return this.opus.encode(buffer, 1920); - }; + } - AudioEncoder.prototype.getCommand = function getCommand(force) { + getCommand(force) { if (this.choice && force) return choice; var choices = ["avconv", "ffmpeg"]; - for (var _iterator = choices, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var choice = _ref; - + for (var choice of choices) { var p = cpoc.spawnSync(choice); if (!p.error) { this.choice = choice; @@ -55,13 +38,11 @@ var AudioEncoder = (function () { } return "help"; - }; - - AudioEncoder.prototype.encodeStream = function encodeStream(stream) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, buffer) {} : arguments[1]; + } + encodeStream(stream, callback = function (err, buffer) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var enc = cpoc.spawn(self.getCommand(), ["-f", "s16le", "-ar", "48000", "-ac", "1", // this can be 2 but there's no point, discord makes it mono on playback, wasted bandwidth. "-af", "volume=1", "pipe:1", "-i", "-"]); @@ -90,13 +71,11 @@ var AudioEncoder = (function () { reject("close"); }); }); - }; - - AudioEncoder.prototype.encodeFile = function encodeFile(file) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, buffer) {} : arguments[1]; + } + encodeFile(file, callback = function (err, buffer) {}) { var self = this; - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { var enc = cpoc.spawn(self.getCommand(), ["-f", "s16le", "-ar", "48000", "-ac", "1", // this can be 2 but there's no point, discord makes it mono on playback, wasted bandwidth. "-af", "volume=1", "pipe:1", "-i", file]); @@ -121,9 +100,7 @@ var AudioEncoder = (function () { reject("close"); }); }); - }; - - return AudioEncoder; -})(); + } +} module.exports = AudioEncoder; \ No newline at end of file diff --git a/lib/Voice/StreamIntent.js b/lib/Voice/StreamIntent.js index 97953194c..63d153312 100644 --- a/lib/Voice/StreamIntent.js +++ b/lib/Voice/StreamIntent.js @@ -1,22 +1,12 @@ -"use strict"; +"use strict" // represents an intent of streaming music - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - +; var EventEmitter = require("events"); -var StreamIntent = (function (_EventEmitter) { - _inherits(StreamIntent, _EventEmitter); - - function StreamIntent() { - _classCallCheck(this, StreamIntent); - - _EventEmitter.call(this); +class StreamIntent extends EventEmitter { + constructor() { + super(); } - - return StreamIntent; -})(EventEmitter); +} module.exports = StreamIntent; \ No newline at end of file diff --git a/lib/Voice/VoiceConnection.js b/lib/Voice/VoiceConnection.js index 4dee53b15..3cde64d59 100644 --- a/lib/Voice/VoiceConnection.js +++ b/lib/Voice/VoiceConnection.js @@ -1,4 +1,4 @@ -"use strict"; +"use strict" /* Major credit to izy521 who is the creator of https://github.com/izy521/discord.io, @@ -7,10 +7,7 @@ been possible! */ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - +; var WebSocket = require("ws"); var dns = require("dns"); var udp = require("dgram"); @@ -20,13 +17,9 @@ var VoicePacket = require("./VoicePacket.js"); var StreamIntent = require("./StreamIntent.js"); var EventEmitter = require("events"); -var VoiceConnection = (function (_EventEmitter) { - _inherits(VoiceConnection, _EventEmitter); - - function VoiceConnection(channel, client, session, token, server, endpoint) { - _classCallCheck(this, VoiceConnection); - - _EventEmitter.call(this); +class VoiceConnection extends EventEmitter { + constructor(channel, client, session, token, server, endpoint) { + super(); this.id = channel.id; this.voiceChannel = channel; this.client = client; @@ -47,7 +40,7 @@ var VoiceConnection = (function (_EventEmitter) { this.init(); } - VoiceConnection.prototype.destroy = function destroy() { + destroy() { this.stopPlaying(); if (this.KAI) clearInterval(this.KAI); this.vWS.close(); @@ -61,18 +54,18 @@ var VoiceConnection = (function (_EventEmitter) { self_deaf: false } }); - }; + } - VoiceConnection.prototype.stopPlaying = function stopPlaying() { + stopPlaying() { this.playing = false; this.playingIntent = null; if (this.instream) { this.instream.end(); this.instream.destroy(); } - }; + } - VoiceConnection.prototype.playStream = function playStream(stream) { + playStream(stream) { var self = this; @@ -123,7 +116,7 @@ var VoiceConnection = (function (_EventEmitter) { sequence + 10 < 65535 ? sequence += 1 : sequence = 0; time + 9600 < 4294967295 ? time += 960 : time = 0; - self.sendBuffer(buffer, sequence, time, function (e) {}); + self.sendBuffer(buffer, sequence, time, e => {}); var nextTime = startTime + count * length; @@ -141,9 +134,9 @@ var VoiceConnection = (function (_EventEmitter) { send(); return retStream; - }; + } - VoiceConnection.prototype.setSpeaking = function setSpeaking(value) { + setSpeaking(value) { this.playing = value; if (this.vWS.readyState === WebSocket.OPEN) this.vWS.send(JSON.stringify({ op: 5, @@ -152,11 +145,9 @@ var VoiceConnection = (function (_EventEmitter) { delay: 0 } })); - }; - - VoiceConnection.prototype.sendPacket = function sendPacket(packet) { - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1]; + } + sendPacket(packet, callback = function (err) {}) { var self = this; self.playing = true; try { @@ -166,9 +157,9 @@ var VoiceConnection = (function (_EventEmitter) { callback(e); return false; } - }; + } - VoiceConnection.prototype.sendBuffer = function sendBuffer(rawbuffer, sequence, timestamp, callback) { + sendBuffer(rawbuffer, sequence, timestamp, callback) { var self = this; self.playing = true; try { @@ -186,68 +177,54 @@ var VoiceConnection = (function (_EventEmitter) { self.emit("error", e); return false; } - }; + } - VoiceConnection.prototype.test = function test() { - this.playFile("C:/users/amish/desktop/audio.mp3").then(function (stream) { - stream.on("time", function (time) { + test() { + this.playFile("C:/users/amish/desktop/audio.mp3").then(stream => { + stream.on("time", time => { console.log("Time", time); }); }); - }; - - VoiceConnection.prototype.playFile = function playFile(stream) { - var _this = this; - - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, str) {} : arguments[1]; + } + playFile(stream, callback = function (err, str) {}) { var self = this; - return new Promise(function (resolve, reject) { - _this.encoder.encodeFile(stream)["catch"](error).then(function (data) { + return new Promise((resolve, reject) => { + this.encoder.encodeFile(stream).catch(error).then(data => { self.streamProc = data.proc; var intent = self.playStream(data.stream); resolve(intent); callback(null, intent); }); - function error() { - var e = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; - + function error(e = true) { reject(e); callback(e); } }); - }; - - VoiceConnection.prototype.playRawStream = function playRawStream(stream) { - var _this2 = this; - - var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err, str) {} : arguments[1]; + } + playRawStream(stream, callback = function (err, str) {}) { var self = this; - return new Promise(function (resolve, reject) { - _this2.encoder.encodeStream(stream)["catch"](error).then(function (data) { + return new Promise((resolve, reject) => { + this.encoder.encodeStream(stream).catch(error).then(data => { self.streamProc = data.proc; self.instream = data.instream; var intent = self.playStream(data.stream); resolve(intent); callback(null, intent); }); - function error() { - var e = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; - + function error(e = true) { reject(e); callback(e); } }); - }; - - VoiceConnection.prototype.init = function init() { - var _this3 = this; + } + init() { var self = this; - dns.lookup(this.endpoint, function (err, address, family) { + dns.lookup(this.endpoint, (err, address, family) => { self.endpoint = address; - var vWS = self.vWS = new WebSocket("wss://" + _this3.endpoint, null, { rejectUnauthorized: false }); + var vWS = self.vWS = new WebSocket("wss://" + this.endpoint, null, { rejectUnauthorized: false }); var udpClient = self.udp = udp.createSocket("udp4"); var firstPacket = true; @@ -280,7 +257,7 @@ var VoiceConnection = (function (_EventEmitter) { } }); - vWS.on("open", function () { + vWS.on("open", () => { vWS.send(JSON.stringify({ op: 0, d: { @@ -294,13 +271,13 @@ var VoiceConnection = (function (_EventEmitter) { var KAI; - vWS.on("message", function (msg) { + vWS.on("message", msg => { var data = JSON.parse(msg); switch (data.op) { case 2: self.vWSData = data.d; - KAI = setInterval(function () { + KAI = setInterval(() => { if (vWS && vWS.readyState === WebSocket.OPEN) vWS.send(JSON.stringify({ op: 3, d: null @@ -310,7 +287,7 @@ var VoiceConnection = (function (_EventEmitter) { var udpPacket = new Buffer(70); udpPacket.writeUIntBE(data.d.ssrc, 0, 4); - udpClient.send(udpPacket, 0, udpPacket.length, data.d.port, self.endpoint, function (err) { + udpClient.send(udpPacket, 0, udpPacket.length, data.d.port, self.endpoint, err => { if (err) self.emit("error", err); }); break; @@ -324,9 +301,7 @@ var VoiceConnection = (function (_EventEmitter) { } }); }); - }; - - return VoiceConnection; -})(EventEmitter); + } +} module.exports = VoiceConnection; \ No newline at end of file diff --git a/lib/Voice/VoicePacket.js b/lib/Voice/VoicePacket.js index f432bf241..3548296b1 100644 --- a/lib/Voice/VoicePacket.js +++ b/lib/Voice/VoicePacket.js @@ -1,26 +1,25 @@ "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +class VoicePacket { + constructor(data, sequence, time, ssrc) { -var VoicePacket = function VoicePacket(data, sequence, time, ssrc) { - _classCallCheck(this, VoicePacket); + var audioBuffer = data, + returnBuffer = new Buffer(audioBuffer.length + 12); - var audioBuffer = data, - returnBuffer = new Buffer(audioBuffer.length + 12); + returnBuffer.fill(0); + returnBuffer[0] = 0x80; + returnBuffer[1] = 0x78; - returnBuffer.fill(0); - returnBuffer[0] = 0x80; - returnBuffer[1] = 0x78; + returnBuffer.writeUIntBE(sequence, 2, 2); + returnBuffer.writeUIntBE(time, 4, 4); + returnBuffer.writeUIntBE(ssrc, 8, 4); - returnBuffer.writeUIntBE(sequence, 2, 2); - returnBuffer.writeUIntBE(time, 4, 4); - returnBuffer.writeUIntBE(ssrc, 8, 4); + for (var i = 0; i < audioBuffer.length; i++) { + returnBuffer[i + 12] = audioBuffer[i]; + } - for (var i = 0; i < audioBuffer.length; i++) { - returnBuffer[i + 12] = audioBuffer[i]; - } - - return returnBuffer; -}; + return returnBuffer; + } +} module.exports = VoicePacket; \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 29c9cc6a3..4d5a58e3e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,3 @@ -"use strict"; - module.exports = { Client: require("./Client/Client"), Channel: require("./Structures/Channel"),