def doNickservNotice(self, irc, msg):
        if self.disabled(irc):
            return
        nick = self._getNick(irc.network)
        s = ircutils.stripFormatting(msg.args[1].lower())
        on = 'on %s' % irc.network
        networkGroup = conf.supybot.networks.get(irc.network)
        if 'incorrect' in s or 'denied' in s:
            log = 'Received "Password Incorrect" from NickServ %s.  ' \
                  'Resetting password to empty.' % on
            self.log.warning(log)
            self.sentGhost = time.time()
            self._setNickServPassword(nick, '')
        elif self._ghosted(irc, s):
            self.log.info('Received "GHOST succeeded" from NickServ %s.', on)
            self.sentGhost = None
            self.identified = False
            irc.queueMsg(ircmsgs.nick(nick))
        elif 'is not registered' in s:
            self.log.info('Received "Nick not registered" from NickServ %s.',
                          on)
        elif 'currently' in s and 'isn\'t' in s or 'is not' in s:
            # The nick isn't online, let's change our nick to it.
            self.sentGhost = None
            irc.queueMsg(ircmsgs.nick(nick))
        elif ('owned by someone else' in s) or \
             ('nickname is registered and protected' in s) or \
             ('nick belongs to another user' in s):
            # freenode, arstechnica, chatjunkies
            # oftc, zirc.org
            # sorcery
            self.log.info('Received "Registered nick" from NickServ %s.', on)
        elif '/msg' in s and 'id' in s and 'password' in s:
            # Usage info for identify command; ignore.
            self.log.debug('Got usage info for identify command %s.', on)
        elif ('please choose a different nick' in s): # oftc, part 3
            # This is a catch-all for redundant messages from nickserv.
            pass
        elif ('now recognized' in s) or \
             ('already identified' in s) or \
             ('already logged in' in s) or \
             ('successfully identified' in s) or \
             ('password accepted' in s) and \
             ('now identified' in s):
            # freenode, oftc, arstechnica, zirc, ....
            # sorcery
            self.log.info('Received "Password accepted" from NickServ %s.', on)
            self.identified = True
            for channel in irc.state.channels.keys():
                self.checkPrivileges(irc, channel)
            for channel in self.channels:
                irc.queueMsg(networkGroup.channels.join(channel))
            waitingJoins = self.waitingJoins.pop(irc.network, None)
            if waitingJoins:
                for m in waitingJoins:
                    irc.sendMsg(m)
        elif 'not yet authenticated' in s:
            # zirc.org has this, it requires an auth code.
            email = s.split()[-1]
            self.log.warning('Received "Nick not yet authenticated" from '
                             'NickServ %s.  Check email at %s and send the '
                             'auth command to NickServ.', on, email)
        else:
            self.log.debug('Unexpected notice from NickServ %s: %q.', on, s)
dataset/ETHPy150Open ProgVal/Limnoria/plugins/Services/plugin.py/Services.doNickservNotice/operator `or` -> `and`