From a18823c47f177edb141da79d60a0186b2f22fa7a Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Tue, 27 Oct 2015 20:35:23 +0000 Subject: [PATCH] Updated sendMessage and reply, client is eventemitter --- docs/docs_client.rst | 18 +++++- lib/Client.js | 128 ++++++++++++++++++++----------------------- lib/VoiceChannel.js | 19 +++++++ package.json | 2 +- src/Client.js | 124 +++++++++++++++++++---------------------- test/bot.1.js | 20 +------ test/bot.js | 2 +- 7 files changed, 153 insertions(+), 160 deletions(-) create mode 100644 lib/VoiceChannel.js diff --git a/docs/docs_client.rst b/docs/docs_client.rst index cb5ed2bab..189f27aad 100644 --- a/docs/docs_client.rst +++ b/docs/docs_client.rst @@ -7,6 +7,8 @@ This page contains documentation on the `Discord.Client` class. This should be u It might be beneficial to use CTRL+F to search for what you're looking for, or use the navigation provided by readthedocs on the left. +As of 3.10.1, Discord.Client extends EventEmitter_. In previous versions, the only available methods were `on` and `off`. + Attributes ---------- @@ -240,13 +242,17 @@ Gets previous messages from the specified channel. .. warning:: If the logs contain messages from a user who is no longer in the server, the user object *MAY* be malformed. -sendMessage(channel, message, `callback`) +sendMessage(channel, message, `options`, `callback`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sends a message to the specified channel. - **channel** - A `Channel Resolvable`_ to send the message to. - **message** - A `String` or an Array of strings. If an Array, the array will be joined with a new line as a delimiter and this will be the message to be sent. +- **options** - An `Object` that can contain the following parameters: + + - **tts** - Whether the message should be text-to-speech (defaults to false) + - **callback** - A `function` that can take the following parameters: - **error** - An error if one occurred, otherwise it is null. @@ -278,7 +284,7 @@ Updates/edits a message with new content. - **error** - An error if one occurred, otherwise it is null. - **message** - A Message_ representing the updated message. -reply(message, yourMessage, `callback`) +reply(message, yourMessage, `options`, `callback`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alias for sendMessage, but prepends a mention to whoever sent the specified mention. Useful shortcut for directing a message at a user. @@ -294,6 +300,10 @@ Alias for sendMessage, but prepends a mention to whoever sent the specified ment - **message** - A Message_ that should be replied to. - **yourMessage** - A `String` or an Array of strings. If an Array, the array will be joined with a new line as a delimiter and this will be the message to be sent. +- **options** - An `Object` that can contain the following parameters: + + - **tts** - Whether the message should be text-to-speech (defaults to false) + - **callback** - A `function` that can take the following parameters: - **error** - An error if one occurred, otherwise it is null. @@ -607,4 +617,6 @@ Called when a WebSocket message is received and it gives you the message. .. _official API here : https://discordapp.com/api/voice/regions -.. _Discord Game ID : https://raw.githubusercontent.com/hydrabolt/discord.js/master/ref/gameMap.json \ No newline at end of file +.. _Discord Game ID : https://raw.githubusercontent.com/hydrabolt/discord.js/master/ref/gameMap.json + +.. _EventEmitter : https://nodejs.org/api/events.html#events_class_events_eventemitter \ No newline at end of file diff --git a/lib/Client.js b/lib/Client.js index f8bcf5917..18e0b5bb2 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -5,6 +5,8 @@ var _createClass = (function () { function defineProperties(target, props) { for 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 Endpoints = require("./Endpoints.js"); var User = require("./user.js"); var Server = require("./server.js"); @@ -16,6 +18,8 @@ var ServerPermissions = require("./ServerPermissions.js"); var gameMap = require("../ref/gameMap.json"); var zlib; +var EventEmitter = require('events'); + //node modules var request = require("superagent"); var WebSocket = require("ws"); @@ -25,7 +29,9 @@ var defaultOptions = { queue: false }; -var Client = (function () { +var Client = (function (_EventEmitter) { + _inherits(Client, _EventEmitter); + function Client() { var options = arguments.length <= 0 || arguments[0] === undefined ? defaultOptions : arguments[0]; var token = arguments.length <= 1 || arguments[1] === undefined ? undefined : arguments[1]; @@ -37,6 +43,8 @@ var Client = (function () { try connecting with it. If the token is incorrect, no further efforts will be made to connect. */ + _EventEmitter.call(this); + this.options = options; this.options.compress = options.compress; @@ -48,7 +56,6 @@ var Client = (function () { this.token = token; this.state = 0; this.websocket = null; - this.events = {}; this.user = null; this.alreadySentData = false; this.serverCreateListener = {}; @@ -87,38 +94,17 @@ var Client = (function () { //def debug Client.prototype.debug = function debug(message) { - this.trigger("debug", message); - }; - - Client.prototype.on = function on(event, fn) { - this.events[event] = fn; - }; - - Client.prototype.off = function off(event) { - this.events[event] = null; + this.emit("debug", message); }; Client.prototype.keepAlive = function keepAlive() { - this.debug("keep alive triggered"); + this.debug("keep alive emitted"); this.sendPacket({ op: 1, d: Date.now() }); }; - //def trigger - - Client.prototype.trigger = function trigger(event) { - var args = []; - for (var arg in arguments) { - args.push(arguments[arg]); - } - var evt = this.events[event]; - if (evt) { - evt.apply(this, args.slice(1)); - } - }; - //def login Client.prototype.login = function login() { @@ -143,7 +129,7 @@ var Client = (function () { if (err) { self.state = 4; //set state to disconnected - self.trigger("disconnected"); + self.emit("disconnected"); if (self.websocket) { self.websocket.close(); } @@ -343,21 +329,21 @@ var Client = (function () { }); }; - Client.prototype.reply = function reply(destination, message, tts) { + Client.prototype.reply = function reply(destination, message, options) { var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, msg) {} : arguments[3]; var self = this; return new Promise(function (response, reject) { - if (typeof tts === "function") { - // tts is a function, which means the developer wants this to be the callback - callback = tts; - tts = false; + if (typeof options === "function") { + // options is a function, which means the developer wants this to be the callback + callback = options; + options = false; } var user = destination.sender; - self.sendMessage(destination, message, tts, callback, user + ", ").then(response)["catch"](reject); + self.sendMessage(destination, message, options, callback, user + ", ").then(response)["catch"](reject); }); }; @@ -654,7 +640,7 @@ var Client = (function () { return prom; }; - Client.prototype.sendMessage = function sendMessage(destination, message, tts) { + Client.prototype.sendMessage = function sendMessage(destination, message, options) { var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, msg) {} : arguments[3]; var premessage = arguments.length <= 4 || arguments[4] === undefined ? "" : arguments[4]; @@ -662,10 +648,14 @@ var Client = (function () { var prom = new Promise(function (resolve, reject) { - if (typeof tts === "function") { - // tts is a function, which means the developer wants this to be the callback - callback = tts; - tts = false; + if (typeof options === "function") { + // options is a function, which means the developer wants this to be the callback + callback = options; + options = { tts: false }; + } + + if (!options) { + options = { tts: false }; } message = premessage + resolveMessage(message); @@ -688,14 +678,14 @@ var Client = (function () { action: "sendMessage", content: message, mentions: mentions, - tts: !!tts, //incase it's not a boolean + tts: options.tts, //incase it's not a boolean then: mgood, error: mbad }); self.checkQueue(destination); } else { - self._sendMessage(destination, message, tts, mentions).then(mgood)["catch"](mbad); + self._sendMessage(destination, message, options, mentions).then(mgood)["catch"](mbad); } } @@ -1070,7 +1060,7 @@ var Client = (function () { //close this.websocket.onclose = function () { - self.trigger("disconnected"); + self.emit("disconnected"); }; //message @@ -1089,11 +1079,11 @@ var Client = (function () { dat = JSON.parse(e.data); data = dat.d; } catch (err) { - self.trigger("error", err, e); + self.emit("error", err, e); return; } - self.trigger("raw", dat); + self.emit("raw", dat); //valid message switch (dat.t) { @@ -1137,7 +1127,7 @@ var Client = (function () { var pmc = self.addPMChannel(_pmc); } - self.trigger("ready"); + self.emit("ready"); self.readyTime = Date.now(); self.debug("cached " + self.serverCache.length + " servers, " + self.channelCache.length + " channels, " + self.pmChannelCache.length + " PMs and " + self.userCache.length + " users."); self.state = 3; @@ -1173,7 +1163,7 @@ var Client = (function () { if (channel) { var msg = channel.addMessage(new Message(data, channel, mentions, data.author)); - self.trigger("message", msg); + self.emit("message", msg); } break; @@ -1183,11 +1173,11 @@ var Client = (function () { var channel = self.getChannel("id", data.channel_id); var message = channel.getMessage("id", data.id); if (message) { - self.trigger("messageDelete", channel, message); + self.emit("messageDelete", channel, message); channel.messages.splice(channel.messages.indexOf(message), 1); } else { //don't have the cache of that message ;( - self.trigger("messageDelete", channel); + self.emit("messageDelete", channel); } break; case "MESSAGE_UPDATE": @@ -1232,7 +1222,7 @@ var Client = (function () { var newMessage = new Message(info, channel, mentions, formerMessage.author); - self.trigger("messageUpdate", newMessage, formerMessage); + self.emit("messageUpdate", newMessage, formerMessage); channel.messages[channel.messages.indexOf(formerMessage)] = newMessage; } @@ -1248,7 +1238,7 @@ var Client = (function () { if (server) { self.serverCache.splice(self.serverCache.indexOf(server), 1); - self.trigger("serverDelete", server); + self.emit("serverDelete", server); } break; @@ -1258,7 +1248,7 @@ var Client = (function () { var bannedUser = self.addUser(data.user); var server = self.getServer("id", data.guild_id); - self.trigger("userBanned", bannedUser, server); + self.emit("userBanned", bannedUser, server); case "CHANNEL_DELETE": @@ -1273,7 +1263,7 @@ var Client = (function () { server.channels.splice(server.channels.indexOf(channel), 1); } - self.trigger("channelDelete", channel); + self.emit("channelDelete", channel); self.serverCache.splice(self.serverCache.indexOf(channel), 1); } @@ -1304,7 +1294,7 @@ var Client = (function () { self.serverCreateListener[data.id] = null; } - self.trigger("serverCreate", server); + self.emit("serverCreate", server); break; @@ -1324,7 +1314,7 @@ var Client = (function () { if (srv) { srv.addChannel(chann); } - self.trigger("channelCreate", chann); + self.emit("channelCreate", chann); } break; @@ -1337,7 +1327,7 @@ var Client = (function () { var user = self.addUser(data.user); //if for whatever reason it doesn't exist.. - self.trigger("serverNewMember", server.addMember(user, data.roles), server); + self.emit("serverNewMember", server.addMember(user, data.roles), server); } break; @@ -1352,7 +1342,7 @@ var Client = (function () { server.removeMember("id", user.id); - self.trigger("serverRemoveMember", user, server); + self.emit("serverRemoveMember", user, server); } break; @@ -1362,7 +1352,7 @@ var Client = (function () { var user = self.addUser(data.user); var server = self.getServer("id", data.guild_id); var member = server.getMember("id", user.id); - self.trigger("serverMemberUpdate", member, data.roles); + self.emit("serverMemberUpdate", member, data.roles); server.getMember("id", user.id).rawRoles = data.roles; break; @@ -1373,7 +1363,7 @@ var Client = (function () { var newUser = new User(data); //not actually adding to the cache - self.trigger("userUpdate", newUser, self.user); + self.emit("userUpdate", newUser, self.user); if (~self.userCache.indexOf(self.user)) { self.userCache[self.userCache.indexOf(self.user)] = newUser; @@ -1399,7 +1389,7 @@ var Client = (function () { var presenceUser = new User(data.user); if (presenceUser.equalsStrict(userInCache)) { //they're exactly the same, an actual presence update - self.trigger("presence", { + self.emit("presence", { user: userInCache, oldStatus: userInCache.status, status: data.status, @@ -1411,7 +1401,7 @@ var Client = (function () { } else { //one of their details changed. self.userCache[self.userCache.indexOf(userInCache)] = presenceUser; - self.trigger("userUpdate", userInCache, presenceUser); + self.emit("userUpdate", userInCache, presenceUser); } } @@ -1427,7 +1417,7 @@ var Client = (function () { var newChann = new Channel(data, serverInCache); newChann.messages = channelInCache.messages; - self.trigger("channelUpdate", channelInCache, newChann); + self.emit("channelUpdate", channelInCache, newChann); self.channelCache[self.channelCache.indexOf(channelInCache)] = newChann; } @@ -1440,7 +1430,7 @@ var Client = (function () { var channelInCache = self.getChannel("id", data.channel_id); if (!self.userTypingListener[data.user_id] || self.userTypingListener[data.user_id] === -1) { - self.trigger("startTyping", userInCache, channelInCache); + self.emit("startTyping", userInCache, channelInCache); } self.userTypingListener[data.user_id] = Date.now(); @@ -1451,7 +1441,7 @@ var Client = (function () { } if (Date.now() - self.userTypingListener[data.user_id] > 6000) { // stopped typing - self.trigger("stopTyping", userInCache, channelInCache); + self.emit("stopTyping", userInCache, channelInCache); self.userTypingListener[data.user_id] = -1; } }, 6000); @@ -1470,7 +1460,7 @@ var Client = (function () { break; } - self.trigger("serverRoleCreate", server, server.addRole(role)); + self.emit("serverRoleCreate", server, server.addRole(role)); break; @@ -1479,7 +1469,7 @@ var Client = (function () { var server = self.getServer("id", data.guild_id); var role = server.getRole(data.role_id); - self.trigger("serverRoleDelete", server, role); + self.emit("serverRoleDelete", server, role); server.removeRole(role.id); @@ -1491,13 +1481,13 @@ var Client = (function () { var role = server.getRole(data.role.id); var newRole = server.updateRole(data.role); - self.trigger("serverRoleUpdate", server, role, newRole); + self.emit("serverRoleUpdate", server, role, newRole); break; default: self.debug("received unknown packet"); - self.trigger("unknown", dat); + self.emit("unknown", dat); break; } @@ -1572,7 +1562,7 @@ var Client = (function () { var server = this.getServer("id", data.id); if (data.unavailable) { - self.trigger("unavailable", data); + self.emit("unavailable", data); self.debug("Server ID " + data.id + " has been marked unavailable by Discord. It was not cached."); return; } @@ -1808,7 +1798,7 @@ var Client = (function () { }); }; - Client.prototype._sendMessage = function _sendMessage(destination, content, tts, mentions) { + Client.prototype._sendMessage = function _sendMessage(destination, content, options, mentions) { var self = this; @@ -1816,7 +1806,7 @@ var Client = (function () { request.post(Endpoints.CHANNELS + "/" + destination + "/messages").set("authorization", self.token).send({ content: content, mentions: mentions, - tts: tts + tts: options.tts }).end(function (err, res) { if (err) { @@ -2097,6 +2087,6 @@ var Client = (function () { }]); return Client; -})(); +})(EventEmitter); module.exports = Client; \ No newline at end of file diff --git a/lib/VoiceChannel.js b/lib/VoiceChannel.js new file mode 100644 index 000000000..8d22d410a --- /dev/null +++ b/lib/VoiceChannel.js @@ -0,0 +1,19 @@ +"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 VoiceChannel = (function (_Channel) { + _inherits(VoiceChannel, _Channel); + + function VoiceChannel(data, server) { + _classCallCheck(this, VoiceChannel); + + _Channel.call(this, data, server); + } + + return VoiceChannel; +})(Channel); \ No newline at end of file diff --git a/package.json b/package.json index 5cc1e0db0..401de1e7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "discord.js", - "version": "3.9.1", + "version": "3.10.1", "description": "A way to interface with the Discord API", "main": "./lib/index.js", "scripts": { diff --git a/src/Client.js b/src/Client.js index dfbafec28..f7b90bad9 100644 --- a/src/Client.js +++ b/src/Client.js @@ -10,6 +10,8 @@ var ServerPermissions = require("./ServerPermissions.js"); var gameMap = require("../ref/gameMap.json"); var zlib; +var EventEmitter = require('events'); + //node modules var request = require("superagent"); var WebSocket = require("ws"); @@ -19,14 +21,17 @@ var defaultOptions = { queue: false } -class Client { +class Client extends EventEmitter{ - constructor(options = defaultOptions, token = undefined) { + constructor(options = defaultOptions, token = undefined){ + /* When created, if a token is specified the Client will try connecting with it. If the token is incorrect, no further efforts will be made to connect. */ + super(); + this.options = options; this.options.compress = options.compress; @@ -38,7 +43,6 @@ class Client { this.token = token; this.state = 0; this.websocket = null; - this.events = {}; this.user = null; this.alreadySentData = false; this.serverCreateListener = {}; @@ -112,37 +116,17 @@ class Client { //def debug debug(message) { - this.trigger("debug", message); - } - - on(event, fn) { - this.events[event] = fn; - } - - off(event) { - this.events[event] = null; + this.emit("debug", message); } keepAlive() { - this.debug("keep alive triggered"); + this.debug("keep alive emitted"); this.sendPacket({ op: 1, d: Date.now() }); } - //def trigger - trigger(event) { - var args = []; - for (var arg in arguments) { - args.push(arguments[arg]); - } - var evt = this.events[event]; - if (evt) { - evt.apply(this, args.slice(1)); - } - } - //def login login(email = "foo@bar.com", password = "pass1234", callback = function (err, token) { }) { @@ -165,7 +149,7 @@ class Client { if (err) { self.state = 4; //set state to disconnected - self.trigger("disconnected"); + self.emit("disconnected"); if (self.websocket) { self.websocket.close(); } @@ -399,20 +383,20 @@ class Client { } - reply(destination, message, tts, callback = function (err, msg) { }) { + reply(destination, message, options, callback = function (err, msg) { }) { var self = this; return new Promise(function (response, reject) { - if (typeof tts === "function") { - // tts is a function, which means the developer wants this to be the callback - callback = tts; - tts = false; + if (typeof options === "function") { + // options is a function, which means the developer wants this to be the callback + callback = options; + options = false; } var user = destination.sender; - self.sendMessage(destination, message, tts, callback, user + ", ").then(response).catch(reject); + self.sendMessage(destination, message, options, callback, user + ", ").then(response).catch(reject); }); @@ -720,16 +704,20 @@ class Client { } - sendMessage(destination, message, tts, callback = function (err, msg) { }, premessage = "") { + sendMessage(destination, message, options, callback = function (err, msg) { }, premessage = "") { var self = this; var prom = new Promise(function (resolve, reject) { - if (typeof tts === "function") { - // tts is a function, which means the developer wants this to be the callback - callback = tts; - tts = false; + if (typeof options === "function") { + // options is a function, which means the developer wants this to be the callback + callback = options; + options = {tts : false}; + } + + if(!options){ + options = {tts:false}; } message = premessage + resolveMessage(message); @@ -752,14 +740,14 @@ class Client { action: "sendMessage", content: message, mentions: mentions, - tts: !!tts, //incase it's not a boolean + tts: options.tts, //incase it's not a boolean then: mgood, error: mbad }); self.checkQueue(destination); } else { - self._sendMessage(destination, message, tts, mentions).then(mgood).catch(mbad); + self._sendMessage(destination, message, options, mentions).then(mgood).catch(mbad); } } @@ -1142,7 +1130,7 @@ class Client { //close this.websocket.onclose = function () { - self.trigger("disconnected"); + self.emit("disconnected"); } //message @@ -1161,11 +1149,11 @@ class Client { dat = JSON.parse(e.data); data = dat.d; } catch (err) { - self.trigger("error", err, e); + self.emit("error", err, e); return; } - self.trigger("raw", dat); + self.emit("raw", dat); //valid message switch (dat.t) { @@ -1185,7 +1173,7 @@ class Client { var pmc = self.addPMChannel(_pmc); } - self.trigger("ready"); + self.emit("ready"); self.readyTime = Date.now(); self.debug(`cached ${self.serverCache.length} servers, ${self.channelCache.length} channels, ${self.pmChannelCache.length} PMs and ${self.userCache.length} users.`); self.state = 3; @@ -1211,7 +1199,7 @@ class Client { if (channel) { var msg = channel.addMessage(new Message(data, channel, mentions, data.author)); - self.trigger("message", msg); + self.emit("message", msg); } break; @@ -1221,11 +1209,11 @@ class Client { var channel = self.getChannel("id", data.channel_id); var message = channel.getMessage("id", data.id); if (message) { - self.trigger("messageDelete", channel, message); + self.emit("messageDelete", channel, message); channel.messages.splice(channel.messages.indexOf(message), 1); } else { //don't have the cache of that message ;( - self.trigger("messageDelete", channel); + self.emit("messageDelete", channel); } break; case "MESSAGE_UPDATE": @@ -1260,7 +1248,7 @@ class Client { var newMessage = new Message(info, channel, mentions, formerMessage.author); - self.trigger("messageUpdate", newMessage, formerMessage); + self.emit("messageUpdate", newMessage, formerMessage); channel.messages[channel.messages.indexOf(formerMessage)] = newMessage; @@ -1277,7 +1265,7 @@ class Client { if (server) { self.serverCache.splice(self.serverCache.indexOf(server), 1); - self.trigger("serverDelete", server); + self.emit("serverDelete", server); } break; @@ -1287,7 +1275,7 @@ class Client { var bannedUser = self.addUser(data.user); var server = self.getServer("id", data.guild_id); - self.trigger("userBanned", bannedUser, server); + self.emit("userBanned", bannedUser, server); case "CHANNEL_DELETE": @@ -1303,7 +1291,7 @@ class Client { } - self.trigger("channelDelete", channel); + self.emit("channelDelete", channel); self.serverCache.splice(self.serverCache.indexOf(channel), 1); @@ -1335,7 +1323,7 @@ class Client { self.serverCreateListener[data.id] = null; } - self.trigger("serverCreate", server); + self.emit("serverCreate", server); break; @@ -1355,7 +1343,7 @@ class Client { if (srv) { srv.addChannel(chann); } - self.trigger("channelCreate", chann); + self.emit("channelCreate", chann); } @@ -1369,7 +1357,7 @@ class Client { var user = self.addUser(data.user); //if for whatever reason it doesn't exist.. - self.trigger("serverNewMember", server.addMember(user, data.roles), server); + self.emit("serverNewMember", server.addMember(user, data.roles), server); } break; @@ -1384,7 +1372,7 @@ class Client { server.removeMember("id", user.id); - self.trigger("serverRemoveMember", user, server); + self.emit("serverRemoveMember", user, server); } break; @@ -1394,7 +1382,7 @@ class Client { var user = self.addUser(data.user); var server = self.getServer("id", data.guild_id); var member = server.getMember("id", user.id); - self.trigger("serverMemberUpdate", member, data.roles); + self.emit("serverMemberUpdate", member, data.roles); server.getMember("id", user.id).rawRoles = data.roles; break; @@ -1405,7 +1393,7 @@ class Client { var newUser = new User(data); //not actually adding to the cache - self.trigger("userUpdate", newUser, self.user); + self.emit("userUpdate", newUser, self.user); if (~self.userCache.indexOf(self.user)) { self.userCache[self.userCache.indexOf(self.user)] = newUser; @@ -1432,7 +1420,7 @@ class Client { var presenceUser = new User(data.user); if (presenceUser.equalsStrict(userInCache)) { //they're exactly the same, an actual presence update - self.trigger("presence", { + self.emit("presence", { user: userInCache, oldStatus: userInCache.status, status: data.status, @@ -1444,7 +1432,7 @@ class Client { } else { //one of their details changed. self.userCache[self.userCache.indexOf(userInCache)] = presenceUser; - self.trigger("userUpdate", userInCache, presenceUser); + self.emit("userUpdate", userInCache, presenceUser); } } @@ -1460,7 +1448,7 @@ class Client { var newChann = new Channel(data, serverInCache); newChann.messages = channelInCache.messages; - self.trigger("channelUpdate", channelInCache, newChann); + self.emit("channelUpdate", channelInCache, newChann); self.channelCache[self.channelCache.indexOf(channelInCache)] = newChann; } @@ -1473,7 +1461,7 @@ class Client { var channelInCache = self.getChannel("id", data.channel_id); if (!self.userTypingListener[data.user_id] || self.userTypingListener[data.user_id] === -1) { - self.trigger("startTyping", userInCache, channelInCache); + self.emit("startTyping", userInCache, channelInCache); } self.userTypingListener[data.user_id] = Date.now(); @@ -1484,7 +1472,7 @@ class Client { } if (Date.now() - self.userTypingListener[data.user_id] > 6000) { // stopped typing - self.trigger("stopTyping", userInCache, channelInCache); + self.emit("stopTyping", userInCache, channelInCache); self.userTypingListener[data.user_id] = -1; } }, 6000); @@ -1503,7 +1491,7 @@ class Client { break; } - self.trigger("serverRoleCreate", server, server.addRole(role)); + self.emit("serverRoleCreate", server, server.addRole(role)); break; @@ -1512,7 +1500,7 @@ class Client { var server = self.getServer("id", data.guild_id); var role = server.getRole(data.role_id); - self.trigger("serverRoleDelete", server, role); + self.emit("serverRoleDelete", server, role); server.removeRole(role.id); @@ -1524,13 +1512,13 @@ class Client { var role = server.getRole(data.role.id); var newRole = server.updateRole(data.role); - self.trigger("serverRoleUpdate", server, role, newRole); + self.emit("serverRoleUpdate", server, role, newRole); break; default: self.debug("received unknown packet"); - self.trigger("unknown", dat); + self.emit("unknown", dat); break; } @@ -1609,7 +1597,7 @@ class Client { var server = this.getServer("id", data.id); if (data.unavailable) { - self.trigger("unavailable", data); + self.emit("unavailable", data); self.debug("Server ID " + data.id + " has been marked unavailable by Discord. It was not cached."); return; } @@ -1754,7 +1742,7 @@ class Client { }); } - _sendMessage(destination, content, tts, mentions) { + _sendMessage(destination, content, options, mentions) { var self = this; @@ -1765,7 +1753,7 @@ class Client { .send({ content: content, mentions: mentions, - tts: tts + tts: options.tts }) .end(function (err, res) { diff --git a/test/bot.1.js b/test/bot.1.js index 473e53bf2..683709707 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -28,27 +28,11 @@ mybot.on("message", function (message) { user = message.sender; } - this.createRole(message.channel.server, { - hoist: true, - color: true, - name: "discord users" - }).then( - (perm) => { - - mybot.addMemberToRole(user, perm).then( - () => { - mybot.overwritePermissions(message.channel, perm, { - sendMessages : false - }); - } - ) - - } - ) + mybot.reply(message, "this is tts", {tts:true}).catch(error); }); -mybot.on("ready", function () { +mybot.once("ready", function () { console.log("im ready"); for (var server of mybot.servers) { diff --git a/test/bot.js b/test/bot.js index f11b4a015..6f38eb50b 100644 --- a/test/bot.js +++ b/test/bot.js @@ -11,7 +11,7 @@ function init(){ console.log("preparing..."); } -mybot.on("ready", function(){ +mybot.once("ready", function(){ console.log("ready! beginning tests"); success1(); });