From ebd29e6abd06b1ba797343cadae595bcbb68a6ea Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Thu, 20 Aug 2015 15:56:12 +0100 Subject: [PATCH] 2.6.2, added case-insensitive filtering and edit message error catching --- hydrabot/commands.js | 31 ++++++++++++++++++++++++------- index.js | 7 ++++++- lib/list.js | 22 +++++++++++++++++++--- 3 files changed, 49 insertions(+), 11 deletions(-) diff --git a/hydrabot/commands.js b/hydrabot/commands.js index 1ff5b9b80..08bedd7d9 100644 --- a/hydrabot/commands.js +++ b/hydrabot/commands.js @@ -326,15 +326,32 @@ Commands[ "acceptinvite" ] = { oplevel: 0, fn: function( bot, params, message ) { - var inv = getKey(params, "i"); + var inv = getKey( params, "i" ); - bot.joinServer(inv, function(err, server){ - if(err){ - bot.reply(message, "I couldn't join that server :("); - }else{ - bot.reply(message, "I joined **"+ server.name +"**, a server with "+server.channels.length()+" channels and "+server.members.length()+" members."); + bot.joinServer( inv, function( err, server ) { + if ( err ) { + bot.reply( message, "I couldn't join that server :(" ); + } else { + bot.reply( message, "I joined **" + server.name + "**, a server with " + server.channels.length() + " channels and " + server.members.length() + " members." ); } - }); + } ); + + } +} + +Commands[ "filtertest" ] = { + oplevel: 0, + fn: function( bot, params, message ) { + console.log( message.channel.server.members.filter( "username", "HYDRABOLT" ) ); + console.log( message.channel.server.members.filter( "username", "HYDRABOLT", false, true ) ); + } +} + +Commands[ "test" ] = { + oplevel: 0, + fn: function( bot, params, message ) { + + console.log( message.channel.server.channels.filter( "name", "a", true ) ); } } diff --git a/index.js b/index.js index ab3f46292..c4526e737 100644 --- a/index.js +++ b/index.js @@ -448,7 +448,12 @@ exports.Client.prototype.connectWebsocket = function( cb ) { data.mention_everyone = data.mention_everyone || formerMessage.everyoneMentioned; data.embeds = data.embeds || formerMessage.embeds; - newMessage = new Message( data, channel ); + try{ + newMessage = new Message( data, channel ); + }catch(e){ + self.debug("dropped a message update packet"); + return; + } self.triggerEvent( "messageUpdate", [ formerMessage, newMessage ] ); diff --git a/lib/list.js b/lib/list.js index a2b365d2e..b1a779eb8 100644 --- a/lib/list.js +++ b/lib/list.js @@ -153,13 +153,14 @@ exports.List.prototype.concatSublists = function( whereList, discriminator ) { return concatList; } -exports.List.prototype.filter = function( key, value, onlyOne ) { +exports.List.prototype.filter = function( key, value, onlyOne, caseInsen ) { var results = []; + value = change(value); for ( index in this.contents ) { var child = this.contents[ index ]; - if ( child[ key ] == value ) { + if ( change(child[ key ]) == value ) { if ( onlyOne ) { return child; } else { @@ -168,6 +169,13 @@ exports.List.prototype.filter = function( key, value, onlyOne ) { } } + function change(val){ + if(caseInsen){ + val = val.toUpperCase(); + } + return val; + } + if ( onlyOne ) { return false; } @@ -178,6 +186,7 @@ exports.List.prototype.filter = function( key, value, onlyOne ) { exports.List.prototype.deepFilter = function( keys, value, onlyOne ) { var results = []; + value = change(value); for ( index in this.contents ) { var child = this.contents[ index ]; @@ -187,7 +196,7 @@ exports.List.prototype.deepFilter = function( keys, value, onlyOne ) { buffer = buffer[ key ]; } - if ( buffer == value ) { + if ( change(buffer) == value ) { if ( onlyOne ) { return child; } else { @@ -196,6 +205,13 @@ exports.List.prototype.deepFilter = function( keys, value, onlyOne ) { } } + function change(val){ + if(caseInsen){ + val = val.toUpperCase(); + } + return val; + } + if ( onlyOne ) { return false; }