From 4653f885557a174fd2c60d7e30831509394baab7 Mon Sep 17 00:00:00 2001 From: Programmix Date: Sun, 9 Oct 2016 10:27:31 -0700 Subject: [PATCH] Add disabledEvents option to Client (#784) --- src/client/websocket/packets/WebSocketPacketManager.js | 2 ++ src/util/Constants.js | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/client/websocket/packets/WebSocketPacketManager.js b/src/client/websocket/packets/WebSocketPacketManager.js index 25e17861b..3295ef646 100644 --- a/src/client/websocket/packets/WebSocketPacketManager.js +++ b/src/client/websocket/packets/WebSocketPacketManager.js @@ -84,6 +84,8 @@ class WebSocketPacketManager { this.setSequence(packet.s); + if (this.ws.client.options.disabledEvents.includes(packet.t)) return false; + if (this.ws.status !== Constants.Status.READY) { if (BeforeReadyWhitelist.indexOf(packet.t) === -1) { this.queue.push(packet); diff --git a/src/util/Constants.js b/src/util/Constants.js index 6db424e39..0ac069a5c 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -17,6 +17,9 @@ exports.Package = require('../../package.json'); * @property {boolean} [disableEveryone=false] Default value for MessageOptions.disableEveryone * @property {number} [restWsBridgeTimeout=5000] Maximum time permitted between REST responses and their * corresponding websocket events + * @property {string[]} [disabledEvents] An array of disabled websocket events. Events in this array will not be + * processed. Disabling useless events such as 'TYPING_START' can result in significant performance increases on + * large-scale bots. * @property {WebsocketOptions} [ws] Options for the websocket */ exports.DefaultOptions = { @@ -29,6 +32,7 @@ exports.DefaultOptions = { fetchAllMembers: false, disableEveryone: false, restWsBridgeTimeout: 5000, + disabledEvents: [], /** * Websocket options. These are left as snake_case to match the API.