From f990c8a1ccfed844ee24e8337df54c7820452a12 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Tue, 18 Aug 2015 21:08:04 +0100 Subject: [PATCH 1/2] added debugging --- hydrabot/hydrabot.js | 5 +++++ index.js | 29 ++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/hydrabot/hydrabot.js b/hydrabot/hydrabot.js index e44fafc18..308964f15 100644 --- a/hydrabot/hydrabot.js +++ b/hydrabot/hydrabot.js @@ -24,6 +24,11 @@ var hydrabot = new Discord.Client(); var commandPrefixes = [ "$", "£", "`" ]; // Log the client in using the auth details in config.json + +hydrabot.on("debug", function(m){ + console.log("debug", m); +}) + console.time("hydrabotbenchmark"); hydrabot.login( BotConfig.email, BotConfig.password ); diff --git a/index.js b/index.js index 5a0f91832..135623254 100644 --- a/index.js +++ b/index.js @@ -11,7 +11,11 @@ var WebSocket = require( 'ws' ); var Internal = require( "./lib/internal.js" ).Internal; var TokenManager = require( "./lib/TokenManager.js" ).TokenManager; -var serverCreateRequests = []; +var serverCreateRequests = []. globalLoginTime = Date.now(); + +function tp(time){ + return Date.now() - time; +} /** * The wrapper module for the Discord Client, also provides some helpful objects. @@ -262,6 +266,10 @@ exports.Client.prototype.cacheServer = function( id, cb, members ) { */ exports.Client.prototype.login = function( email, password, callback, noCache ) { + globalLoginTime = Date.now(); + + this.debug("login called at " + globalLoginTime); + var self = this; callback = callback || function() {}; @@ -273,6 +281,7 @@ exports.Client.prototype.login = function( email, password, callback, noCache ) if ( this.tokenManager.exists( email ) && !noCache ) { done( this.tokenManager.getToken( email, password ) ); + self.debug("loaded token from caches in "+tp(globalLoginTime)); return; } @@ -284,10 +293,12 @@ exports.Client.prototype.login = function( email, password, callback, noCache ) error: err } ] ); self.websocket.close(); + self.debug("failed to login in "+tp(globalLoginTime)); } else { if ( !noCache ) { self.tokenManager.addToken( email, token, password ); } + self.debug("loaded token from auth servers in "+tp(globalLoginTime)); done( token ); } @@ -349,11 +360,9 @@ exports.Client.prototype.connectWebsocket = function( cb ) { case 0: if ( dat.t === "READY" ) { - var data = dat.d; + self.debug("got ready packet"); - setInterval( function() { - webself.keepAlive.apply( webself ); - }, data.heartbeat_interval ); + var data = dat.d; self.user = new User( data.user ); @@ -375,10 +384,15 @@ exports.Client.prototype.connectWebsocket = function( cb ) { if ( cached === toCache ) { self.ready = true; self.triggerEvent( "ready" ); + self.debug("ready triggered"); } } ); } + setInterval( function() { + webself.keepAlive.apply( webself ); + }, data.heartbeat_interval ); + } else if ( dat.t === "MESSAGE_CREATE" ) { var data = dat.d; @@ -516,6 +530,7 @@ exports.Client.prototype.connectWebsocket = function( cb ) { } this.websocket.onopen = function() { + self.debug("websocket conn open"); this.sendData( "onopen" ); } @@ -536,6 +551,10 @@ exports.Client.prototype.connectWebsocket = function( cb ) { } } +exports.Client.prototype.debug = function(msg){ + this.triggerEvent("debug", ["[SL "+ tp(globalLoginTime) +"] " + msg]); +} + /** * Logs the current Client out of Discord and closes any connections. * @param {Function} callback Called after a response is obtained. From 14143f95b02696188917f9e88d378f5f8222e593 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Wed, 19 Aug 2015 21:35:10 +0100 Subject: [PATCH 2/2] 2.6.2, cache error handling --- hydrabot/commands.js | 8 ++++++-- index.js | 13 ++++++++++--- lib/TokenManager.js | 6 +----- package.json | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/hydrabot/commands.js b/hydrabot/commands.js index 62dabda82..1ff5b9b80 100644 --- a/hydrabot/commands.js +++ b/hydrabot/commands.js @@ -240,7 +240,7 @@ Commands[ "avatar" ] = { oplevel: 0, fn: function( bot, params, message ) { - var user = getUser( message, params ); + var user = getUser( message, params, bot ); if ( !user.avatar ) { bot.sendMessage( message.channel, user.mention() + " does not have an avatar!" ); @@ -442,11 +442,15 @@ function setAuthLevel( user, level ) { Authority.setLevel( user, level ); } -function getUser( message, params ) { +function getUser( message, params, bot ) { var usr = false; if ( !message.isPM() ) { var wantedUser = getKey( params, "user", false ) || getKey( params, "u", false ); if ( wantedUser ) { + if(bot){ + console.log(bot.getUsers().length()); + return bot.getUsers().filter("username", wantedUser); + } usr = message.channel.server.members.filter( Discord.isUserID( wantedUser ) ? "id" : "username", wantedUser, true ); } } diff --git a/index.js b/index.js index 135623254..ab3f46292 100644 --- a/index.js +++ b/index.js @@ -280,9 +280,15 @@ exports.Client.prototype.login = function( email, password, callback, noCache ) self.connectWebsocket(); if ( this.tokenManager.exists( email ) && !noCache ) { - done( this.tokenManager.getToken( email, password ) ); - self.debug("loaded token from caches in "+tp(globalLoginTime)); - return; + + var token = this.tokenManager.getToken( email, password ); + if(!token.match(/[^\w.-]+/g)){ + done( this.tokenManager.getToken( email, password ) ); + self.debug("loaded token from caches in "+tp(globalLoginTime)); + return; + }else{ + self.debug("error getting token from caches, using default auth"); + } } var time = Date.now(); @@ -305,6 +311,7 @@ exports.Client.prototype.login = function( email, password, callback, noCache ) } ); function done( token ) { + self.debug("using token " + token); self.token = token; self.websocket.sendData(); self.loggedIn = true; diff --git a/lib/TokenManager.js b/lib/TokenManager.js index 7b2853390..ceeed9ded 100644 --- a/lib/TokenManager.js +++ b/lib/TokenManager.js @@ -14,11 +14,7 @@ exports.TokenManager = function( folder, file ) { var fd = fs.openSync( self.path, "wx" ); self.writeTokens(); } catch ( e ) { - if ( e.errno !== -4075 ) { - throw e; - } else { - self.readTokens(); - } + self.readTokens(); } } diff --git a/package.json b/package.json index e980442b3..b88449b6d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "discord.js", - "version": "2.6.1", + "version": "2.6.2", "description": "A way to interface with the Discord API", "main": "index.js", "scripts": {