From 776dda9bff7868ce0eec2e0e07523e60ba2c6849 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Fri, 14 Aug 2015 21:03:34 +0100 Subject: [PATCH 1/4] small fixes --- hydrabot/hydrabot.js | 6 +++--- index.js | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/hydrabot/hydrabot.js b/hydrabot/hydrabot.js index 92da060e7..afd8be93c 100644 --- a/hydrabot/hydrabot.js +++ b/hydrabot/hydrabot.js @@ -4,8 +4,6 @@ var Discord = require( "../" ); exports.Discord = Discord; -exports.LOL = "CHING CHONG UNTOUCHED"; - // Load the config file. If you have not already, make one that follows the // structure : { "email" : "discordEmail", "password" : "discordPassword" } var BotConfig = require( "./config.json" ); @@ -30,9 +28,11 @@ hydrabot.login( BotConfig.email, BotConfig.password ); console.log( "Starting up..." ); +var time = Date.now(); + // When the bot is ready to go, output to the console hydrabot.on( "ready", function() { - console.log( "Ready!" ); + console.log( "Ready in "+ (Date.now() - time) +"ms!" ); } ); // When the bot gets disconnected, exit. diff --git a/index.js b/index.js index 2fd1a8454..7a6b21b7d 100644 --- a/index.js +++ b/index.js @@ -78,6 +78,10 @@ exports.Client.prototype.cacheServer = function( id, cb, members ) { .set( "authorization", self.token ) .end( function( err, res ) { + if(err){ + throw err; + } + var channelList = res.body; for ( channel of channelList ) { server.channels.add( new Channel( channel, server ) ); From 2758f33710e74d2c8d2d68b545fc5f74c2504793 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Fri, 14 Aug 2015 21:33:35 +0100 Subject: [PATCH 2/4] beginning of efficient caching --- index.js | 91 ++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 25 deletions(-) diff --git a/index.js b/index.js index 7a6b21b7d..bc0a7fab2 100644 --- a/index.js +++ b/index.js @@ -58,40 +58,81 @@ exports.Client.prototype.off = function( name ) { this.events[ name ] = function() {}; } -exports.Client.prototype.cacheServer = function( id, cb, members ) { +exports.Client.prototype.cacheServer = function( id, cb, members, channelInfo ) { - if ( this.serverList.filter( "id", id ).length > 0 ) { - return; - } + console.log("caching!"); var self = this; + var serverInput; - request - .get( Endpoints.SERVERS + "/" + id ) - .set( "authorization", this.token ) - .end( function( err, res ) { - var dat = res.body; - var server = new Server( dat.region, dat.owner_id, dat.name, id, members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id ); + if ( typeof id === 'string' || id instanceof String ) { + //actually an ID - request - .get( Endpoints.SERVERS + "/" + id + "/channels" ) - .set( "authorization", self.token ) - .end( function( err, res ) { + if ( this.serverList.filter( "id", id ).length > 0 ) { + return; + } - if(err){ - throw err; - } + console.log("test"); - var channelList = res.body; - for ( channel of channelList ) { - server.channels.add( new Channel( channel, server ) ); - } + request + .get( Endpoints.SERVERS + "/" + id ) + .set( "authorization", self.token ) + .end( function( err, res ) { - self.serverList.add( server ); + if ( err ) { + throw err; + } - cb( server ); - } ); - } ); + var dat = res.body; + + makeServer( dat ); + + } ); + + } else { + // got objects because SPEEEDDDD + + if ( this.serverList.filter( "id", id.id ).length > 0 ) { + return; + } + serverInput = id; + id = id.id; + makeServer( serverInput ); + + } + + function channelsFromHTTP() { + request + .get( Endpoints.SERVERS + "/" + id + "/channels" ) + .set( "authorization", self.token ) + .end( function( err, res ) { + if ( err ) + throw err; + + cacheChannels( res.body ); + } ); + } + + var server; + + function makeServer( dat ) { + server = new Server( dat.region, dat.owner_id, dat.name, id, members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id ); + console.log(server.id); + if ( !channelInfo ) + channelsFromHTTP(); + } + + function cacheChannels( dat ) { + + var channelList = dat; + for ( channel of channelList ) { + server.channels.add( new Channel( channel, server ) ); + } + + self.serverList.add( server ); + + cb( server ); + } } From 8409f6c5d6b488362995a42dcc0eb619675f67eb Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Fri, 14 Aug 2015 21:43:10 +0100 Subject: [PATCH 3/4] turbo charged caching of servers - needs full implementation no point making extra requests, servers are cached, and they're cached properly. --- index.js | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index bc0a7fab2..34629c082 100644 --- a/index.js +++ b/index.js @@ -58,10 +58,7 @@ exports.Client.prototype.off = function( name ) { this.events[ name ] = function() {}; } -exports.Client.prototype.cacheServer = function( id, cb, members, channelInfo ) { - - console.log("caching!"); - +exports.Client.prototype.cacheServer = function( id, cb, members ) { var self = this; var serverInput; @@ -72,8 +69,6 @@ exports.Client.prototype.cacheServer = function( id, cb, members, channelInfo ) return; } - console.log("test"); - request .get( Endpoints.SERVERS + "/" + id ) .set( "authorization", self.token ) @@ -117,8 +112,9 @@ exports.Client.prototype.cacheServer = function( id, cb, members, channelInfo ) function makeServer( dat ) { server = new Server( dat.region, dat.owner_id, dat.name, id, members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id ); - console.log(server.id); - if ( !channelInfo ) + if ( dat.channels ) + cacheChannels(dat.channels); + else channelsFromHTTP(); } @@ -212,15 +208,15 @@ exports.Client.prototype.connectWebsocket = function( cb ) { for ( x in _servers ) { _server = _servers[ x ]; - var sID = ""; + /*var sID = ""; for ( role of _server.roles ) { if ( role.name === "@everyone" ) { sID = role.id; break; } - } - - client.cacheServer( sID, function( server ) { + }*/ + client.cacheServer( _server, function( server ) { + console.log(server.name + " has " + server.members.length() + " members"); cached++; if ( cached >= toCache ) { client.ready = true; From 65713a869a23cb7df6e763ad71c1b47873048eb6 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Fri, 14 Aug 2015 21:51:48 +0100 Subject: [PATCH 4/4] error proofed some things --- index.js | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index 34629c082..221c5a7fc 100644 --- a/index.js +++ b/index.js @@ -60,7 +60,7 @@ exports.Client.prototype.off = function( name ) { exports.Client.prototype.cacheServer = function( id, cb, members ) { var self = this; - var serverInput; + var serverInput = {}; if ( typeof id === 'string' || id instanceof String ) { //actually an ID @@ -111,7 +111,7 @@ exports.Client.prototype.cacheServer = function( id, cb, members ) { var server; function makeServer( dat ) { - server = new Server( dat.region, dat.owner_id, dat.name, id, members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id ); + server = new Server( dat.region, dat.owner_id, dat.name, id, serverInput.members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id ); if ( dat.channels ) cacheChannels(dat.channels); else @@ -208,21 +208,13 @@ exports.Client.prototype.connectWebsocket = function( cb ) { for ( x in _servers ) { _server = _servers[ x ]; - /*var sID = ""; - for ( role of _server.roles ) { - if ( role.name === "@everyone" ) { - sID = role.id; - break; - } - }*/ client.cacheServer( _server, function( server ) { - console.log(server.name + " has " + server.members.length() + " members"); cached++; if ( cached >= toCache ) { client.ready = true; client.triggerEvent( "ready" ); } - }, _server.members ); + } ); } for ( x in data.private_channels ) { @@ -268,9 +260,9 @@ exports.Client.prototype.connectWebsocket = function( cb ) { } else if ( dat.t === "GUILD_CREATE" ) { if ( !client.serverList.filter( "id", dat.d.id, true ) ) { - client.cacheServer( dat.d.id, function( server ) { + client.cacheServer( dat.d, function( server ) { client.triggerEvent( "serverJoin", [ server ] ); - }, dat.d.members ); + }); } } else if ( dat.t === "CHANNEL_CREATE" ) {