From f59c09f9ea8cb803a81d2f57057ac6a1c8141bcf Mon Sep 17 00:00:00 2001 From: reality Date: Mon, 24 Dec 2012 00:42:28 +0000 Subject: [PATCH] Rudimentary alias tracking with ~alias command [#73] --- modules/users/users.js | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/modules/users/users.js b/modules/users/users.js index 623bb07..d4f6afa 100644 --- a/modules/users/users.js +++ b/modules/users/users.js @@ -6,7 +6,7 @@ var users = function(dbot) { var knownUsers = dbot.db.knownUsers; var getServerUsers = function(event) { if(!knownUsers.hasOwnProperty(event.server)) { - knownUsers[event.server] = {}; + knownUsers[event.server] = { 'users': [], 'aliases': {} }; } return knownUsers[event.server]; }; @@ -14,8 +14,9 @@ var users = function(dbot) { dbot.instance.addListener('366', 'users', function(event) { var knownUsers = getServerUsers(event); for(var nick in event.channel.nicks) { - if(!knownUsers.hasOwnProperty(nick) && event.channel.nicks.hasOwnProperty(nick)) { - knownUsers[nick] = {}; + if(!knownUsers.users.include(nick) && !knownUsers.aliases.hasOwnProperty(nick) && + event.channel.nicks.hasOwnProperty(nick)) { + knownUsers.users.push(nick); } } }); @@ -23,14 +24,31 @@ var users = function(dbot) { return { 'name': 'users', 'ignorable': false, + + 'commands': { + '~alias': function(event) { + var knownUsers = getServerUsers(event); + var alias = event.params[1].trim(); + if(knownUsers.aliases.hasOwnProperty(alias)) { + event.reply(alias + ' is an alias of ' + knownUsers.aliases[alias]); + } else { + event.reply(alias + ' is not known as an alias to me.'); + } + } + }, 'listener': function(event) { var knownUsers = getServerUsers(event); - if(!knownUsers.hasOwnProperty(event.user)) { - knownUsers[event.user] = {}; + if(event.action == 'JOIN') { + if(!knownUsers.users.include(event.user)) { + knownUsers.users.push(event.user); + } + } else if(event.action == 'NICK') { + var newNick = event.params.substr(1); + knownUsers.aliases[newNick] = event.user; } }, - 'on': 'JOIN', + 'on': ['JOIN', 'NICK'], 'onLoad': function() { // Trigger updateNickLists to stat current users in channel