Example #1
0
 def announce(self, status, show):
     logging.info('announce(%s, %s)' % (status, show))
     #print 'announce(%s, %s)' % (status, show)
     if not self.running or not cfg.get('watcher-enabled'):
         return
     for name in fleet.list():
         bot = 0
         try: bot = fleet.byname(name)
         except: pass
         if bot and bot.type == "sxmpp":
             logging.warn('%s[%s].setstatus(%s, %s)' % (bot.name, bot.type, status, show))
             bot.setstatus(status, show)
Example #2
0
    def handle(self):
        if not cfg.get('watcher-enabled'):
            raise UserlistError('watcher not enabled, use "!%s-cfg watcher-enabled 1" to enable' % os.path.basename(__file__)[:-3])
        logging.info("fleet: %s - %s" % (str(fleet), str(fleet.list())))
        bot = 0
        try: bot = fleet.byname(self.name)
        except: pass #print "fleet: %s" % str(fleet) #"fleet.byname(%s)" % self.name

        if bot != None:
            bot.connectok.wait()

        # LTE conversion to ETA
        day = weekdays[datetime.datetime.now().weekday()]
        if day != self.oldday:
            self.oldday = day
            dayitem = LteItem(day)
            # convert LTEs to ETAs for current day
            for user in dayitem.data.ltes.keys():
                server.seteta(user, dayitem.data.ltes[user])
                if bot and bot.type == "sxmpp" and cfg.get('suppress-subs') == 0:
                    for etasub in etaitem.data.etasubs:
                        bot.say(etasub, 'ETA %s %s' % (user, dayitem.data.ltes[user]))
                del dayitem.data.ltes[user]
            # clear LTEs for current day
            dayitem.data.ltes = {}
            dayitem.save()   
        
        whoresult = server.who()['result']
            
        # check if new ETAs have been added
        newetas = server.newetas()['result']
        if len(newetas) > 0:
            for etasub in etaitem.data.etasubs:
                etalist = []
                for key in sorted(newetas.keys()):
                    if getuser2(etasub) == key:
                        print "skip notifying yourself"
                    else:
                        etalist += ['%s [%s]' % (key, newetas[key])]
                if bot and bot.type == "sxmpp" and len(etalist) > 0:
                    bot.say(etasub, 'ETA: ' + ', '.join(etalist))

        # check for new achievements
        achievements = server.achievements()
        if len(achievements) > 0:
            for user in achievements.keys():
                if achievements[user] == 'ETA':
                    print "%s++" % user
                    tmpbot = 0
                    try: 
                        tmpbot = fleet.byname(cfg.get('achievement-bot'))
                        tmpbot.say(cfg.get('achievement-channel'), '%s++' % user)
                    except: pass

        # check if new users have arrived
        arrivals = server.arrivals()['result']
        if len(arrivals) > 0:
            for arrivesub in etaitem.data.arrivesubs:
                arrivelist = ', '.join(sorted(arrivals.keys()))
                if bot and bot.type == "sxmpp":
                    bot.say(arrivesub, 'Now boarding: ' + arrivelist)
        
        # activities
	activities = server.activities()['result']
        if len(activities) > 0:
            print activities

        usercount = len(whoresult['available'])
        if self.lastcount == 0 and usercount > 0:
            if bot and bot.type == "sxmpp":
                for opensub in etaitem.data.opensubs:
                    #bot.say(opensub, 'c3pO is awake')
                    print "FUUUUUUUUUUUU"
            else:
                logging.error("bot undefined or not xmpp")

        self.lastcount = usercount
 
        if (cfg.get('set-xmpp-presence') > 0):
            if len(whoresult['available']) > 0:
                self.announce('open', 'chat')
            elif len(whoresult['eta']) > 0:
                self.announce('incoming', 'dnd')
            else:
                self.announce('closed', 'xa')

        time.sleep(cfg.get('watcher-interval'))