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)
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'))