def run(self): while self.running: try: self.check_response_queue() try: event = self.slack._eventq.pop(0) except IndexError: time.sleep(.2) else: self.log.info(u'[SLACK] * %s', event.json) event_type = event.event.get('type', 'unknown') if event_type == 'hello': self.online = True elif self.online: if event_type == 'message': private = False # TODO need to determine if this is in DM req = Request(message=self.fixlinks(event.event['text'])) req.nick = event.event['user'] req.channel = event.event['channel'] req.private = private if private: req.sendto = req.nick req.addressed = True else: req.sendto = req.channel req.addressed = False req.message = decode(req.message) self.check_addressing(req) req.colorize = False self.process_message(req) except KeyboardInterrupt: self.running = False except: self.log.exception('Error in slack event loop')
def process_queue(self): """Process queue""" now = time.time() for mod_name, mod in self.bot.tasks.modules.iteritems(): obj = mod[u'obj'] if (now - self.last_run[mod_name]) < obj.frequency: continue self.last_run[mod_name] = now req = Request() req.sendto = obj.output request = (obj, None, None, {u'req': req}) self.bot.request_queue.put(request)
def process_queue(self): """Process queue""" now = time.time() for mod_name, mod in self.bot.tasks.modules.iteritems(): obj = mod[u'obj'] if (now - self.last_run[mod_name]) < obj.frequency: continue self.last_run[mod_name] = now req = Request() req.sendto = obj.output request = (obj, None, None, {u'req': req}) self.bot.request_queue.put(request)
def process_message(self): # see if we can reverse lookup sender modules = self.server.bot.modules.modules if 'learn' in modules: dbm = modules['learn']['obj'].get_db('email') for user, email in dbm.iteritems(): if self.hdrs['from'] == email: self.hdrs['from'] = user break if u'payload' in self.hdrs: self.save_payload() if u'message' in self.hdrs: output = u'message from %s: %s' % (self.hdrs[u'from'], self.hdrs[u'message']) req = Request(message=output) req.colorize = False req.sendto = self.hdrs[u'to'] self.server.bot.output(output, req)
def process_message(self): # see if we can reverse lookup sender modules = self.server.bot.modules.modules if 'learn' in modules: dbm = modules['learn']['obj'].get_db('email') for user, email in dbm.iteritems(): if self.hdrs['from'] == email: self.hdrs['from'] = user break if u'payload' in self.hdrs: self.save_payload() if u'message' in self.hdrs: output = u'message from %s: %s' % (self.hdrs[u'from'], self.hdrs[u'message']) req = Request(message=output) req.colorize = False req.sendto = self.hdrs[u'to'] self.server.bot.output(output, req)