diff --git a/jsbot b/jsbot index 4e5c470..00157e1 160000 --- a/jsbot +++ b/jsbot @@ -1 +1 @@ -Subproject commit 4e5c470a20044416fc1a912b7a3c9ee42be942cb +Subproject commit 00157e15c9f15e8fcb343c924978616bb6315ee7 diff --git a/modules/users/config.json b/modules/users/config.json new file mode 100644 index 0000000..bc208fb --- /dev/null +++ b/modules/users/config.json @@ -0,0 +1,3 @@ +{ + "dbKeys": [ "knownUsers" ] +} diff --git a/modules/users/users.js b/modules/users/users.js new file mode 100644 index 0000000..f953e1f --- /dev/null +++ b/modules/users/users.js @@ -0,0 +1,44 @@ +/** + * Name: Users + * Description: Track known users + */ +var users = function(dbot) { + var knownUsers = dbot.db.knownUsers; + var getChanUsers = function(event) { + if(!knownUsers.hasOwnProperty(event.server)) { + knownUsers[event.server] = {}; + } + var serverUsers = knownUsers[event.server]; + + if(!serverUsers.hasOwnProperty(event.channel.name)) { + serverUsers[event.channel.name] = []; + } + return serverUsers[event.channel.name]; + }; + + dbot.instance.addListener('366', 'users', function(event) { + var chanUsers = getChanUsers(event); + for(var nick in event.channel.nicks) { + if(!chanUsers.include(nick) && event.channel.nicks.hasOwnProperty(nick)) { + chanUsers.push(nick); + } + } + }); + + return { + 'name': 'users', + 'ignorable': false, + + 'listener': function(event) { + var chanusers = getChanUsers(event); + if(!chanUsers.include(event.user)) { + chanUsers.push(event.user); + } + }, + 'on': 'JOIN' + }; +}; + +exports.fetch = function(dbot) { + return users(dbot); +};