From 1e5f0b7bc448ca8baad64d82d303bdb685056b5a Mon Sep 17 00:00:00 2001 From: plane000 Date: Sun, 28 Oct 2018 20:17:58 +0000 Subject: [PATCH 1/4] Initialization sequence changed slightly --- index.js | 2 +- src/index.js | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index d2eb20a..7aaa68f 100644 --- a/index.js +++ b/index.js @@ -3,4 +3,4 @@ require('babel-register')({ presets: [ 'env' ] }); -require('./src/index'); +require('./src/index').init(); diff --git a/src/index.js b/src/index.js index 8d716e6..ccb212f 100644 --- a/src/index.js +++ b/src/index.js @@ -5,8 +5,9 @@ import {Config} from './config'; import {Database} from './database/database'; import {Events} from './events'; -init(); -async function init() { +let client; + +export async function init() { Logger.init(); Logger.SetLevel(Logger.VERBOSE_LOGS); @@ -15,7 +16,7 @@ async function init() { await Database.init(); - const client = new Discord.Client(); + client = new Discord.Client(); const eventHandler = new Events(); await eventHandler.init(client); From 7e055552fb08dffa55fcd99b370f9640a79b2274 Mon Sep 17 00:00:00 2001 From: plane000 Date: Sun, 28 Oct 2018 21:57:56 +0000 Subject: [PATCH 2/4] Working on getting event handler to pass each object obj, next. next() invoking the next object in the array of callbacks --- src/events.js | 25 ++++++++++++++++++++++--- src/ratelimits.js | 0 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/ratelimits.js diff --git a/src/events.js b/src/events.js index 05c4a06..0b5ede6 100644 --- a/src/events.js +++ b/src/events.js @@ -1,15 +1,30 @@ import {Logger} from './logger'; import {Config} from './config'; -export class Events { +export class Events { // extends rate limits async init(client) { this.client = client; this.client.login(Config.Token); } async handleEvents() { - this.client.on('ready', () => {this.handleReady()}); - this.client.on('message', async (message) => {this.handleMessage(message)}); + this.client.on('ready', async () => { + this.handle(undefined, + [this.handleReady, this.anotherCallback] + ); + }); + + this.client.on('message', async (message) => { + this.handle(message, + [this.handleMessage] + ); + }); + } + + async handle(obj = [null], callbacks = [undefined]) { + // const next = undefined; + // if (callbacks[i+1]) const next = callbacks[i+1]; + // callbacks[i](obj, next); } async handleReady() { @@ -19,6 +34,10 @@ export class Events { Logger.ready(); } + async anotherCallback() { + Logger.debug(1); + } + async handleMessage(...args) { Logger.info(args[0]); args[0].channel.send('lol u homo') diff --git a/src/ratelimits.js b/src/ratelimits.js new file mode 100644 index 0000000..e69de29 From f23727c46e0b00bdec512ebad4c5e161abd7bbab Mon Sep 17 00:00:00 2001 From: plane000 Date: Sun, 28 Oct 2018 22:30:56 +0000 Subject: [PATCH 3/4] Next style callback handler complete and working --- src/events.js | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/events.js b/src/events.js index 0b5ede6..f0aee7d 100644 --- a/src/events.js +++ b/src/events.js @@ -1,16 +1,18 @@ import {Logger} from './logger'; import {Config} from './config'; +import { resolve } from 'path'; +import { rejects } from 'assert'; export class Events { // extends rate limits async init(client) { this.client = client; - this.client.login(Config.Token); + // this.client.login(Config.Token); } async handleEvents() { this.client.on('ready', async () => { this.handle(undefined, - [this.handleReady, this.anotherCallback] + [this.handleReady] ); }); @@ -22,20 +24,34 @@ export class Events { // extends rate limits } async handle(obj = [null], callbacks = [undefined]) { - // const next = undefined; - // if (callbacks[i+1]) const next = callbacks[i+1]; - // callbacks[i](obj, next); + let doNext = false; + if (callbacks.length == 0) { + return; + } + + let next = function() { + doNext = true; + } + + await callbacks[0](obj, next); + callbacks.splice(0, 1); + + if (doNext) { + this.handle(obj, callbacks); + } } - async handleReady() { + async handleReady(obj, next) { this.client.user.setPresence('online'); this.client.user.setActivity(Config.NowPlaying); Logger.info(`Discord client logged in as ${this.client.user.tag}`); Logger.ready(); - } - async anotherCallback() { - Logger.debug(1); + await new Promise((resolve, reject) => { + setTimeout(resolve, 1000); + }); + + next(); } async handleMessage(...args) { From 049405cce8db4e3b0a493147a14d96b8c5b75287 Mon Sep 17 00:00:00 2001 From: plane000 Date: Sun, 28 Oct 2018 22:32:16 +0000 Subject: [PATCH 4/4] Changed let to const and added login method back --- src/events.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/events.js b/src/events.js index f0aee7d..564171b 100644 --- a/src/events.js +++ b/src/events.js @@ -6,7 +6,7 @@ import { rejects } from 'assert'; export class Events { // extends rate limits async init(client) { this.client = client; - // this.client.login(Config.Token); + this.client.login(Config.Token); } async handleEvents() { @@ -29,7 +29,7 @@ export class Events { // extends rate limits return; } - let next = function() { + const next = function() { doNext = true; }