From 22d2d7fa0682ca35f09b331ad02ce3242b46cc3a Mon Sep 17 00:00:00 2001 From: unek Date: Wed, 7 May 2014 08:42:31 +0200 Subject: [PATCH] bring back old nickserv-based auth checking --- bin/tipbot.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/bin/tipbot.js b/bin/tipbot.js index fe8269f..7ebd705 100644 --- a/bin/tipbot.js +++ b/bin/tipbot.js @@ -76,9 +76,27 @@ var client = new irc.Client(settings.connection.host, settings.login.nickname, { // gets user's login status irc.Client.prototype.isIdentified = function(nickname, callback) { - this.whois(nickname, function(reply) { - callback(!!reply.account); - }); + // request login status + this.say('NickServ', 'ACC ' + nickname); + + // wait for response + var listener = function(from, to, message) { + // proceed only on NickServ's ACC response + var regexp = new RegExp('^(\\S+) ACC (\\d)'); + if(from != undefined && from.toLowerCase() == 'nickserv' && regexp.test(message)) { + var match = message.match(regexp); + var user = match[1]; + var level = match[2]; + + // if the right response, call the callback and remove this listener + if(user.toLowerCase() == nickname.toLowerCase()) { + callback(level == 3); + this.removeListener('notice', listener); + } + } + } + + this.addListener('notice', listener); } irc.Client.prototype.getNames = function(channel, callback) {