def handle_message(self, data): """ message handler. """ m = Message(data) m.parse(self) if data.type == 'groupchat' and data.subject: logging.debug("%s - checking topic" % self.name) self.topiccheck(m) nm = Message(m) callbacks.check(self, nm) return if data.get('x').xmlns == 'jabber:x:delay': logging.warn("%s - ignoring delayed message" % self.name) return self.privwait.check(m) if m.isresponse: logging.debug("%s - message is a response" % self.name) return jid = None m.origjid = m.jid for node in m.subelements: try: m.jid = node.x.item.jid except (AttributeError, TypeError): continue if self.me in m.fromm: logging.debug("%s - message to self .. ignoring" % self.name) return 0 try: if m.type == 'error': if m.code: logging.error('%s - error - %s' % (self.name, str(m))) self.errorwait.check(m) self.errorHandler(m) except Exception, ex: handle_exception()
def handle(self): """ send TICK events to callback. """ self.counter += 1 event = EventBase() if self.counter % 60 == 0: event.type = event.cbtype = 'TICK60' callbacks.check(self.bot, event) event.type = event.cbtype = 'TICK' callbacks.check(self.bot, event)
def OnSelfAdded(self, event, wavelet): """ invoked when the robot has been added. """ logging.warn('wave - joined "%s" (%s) wave' % (wavelet._wave_id, wavelet._title)) wevent = WaveEvent() wevent.parse(self, event, wavelet) logging.debug("wave - owner is %s" % wevent.chan.data.owner) wevent.chan.data.json_data = wavelet.serialize() wevent.chan.save() wevent.reply("Welcome to %s (see !help) or http://jsonbot.appspot.com/docs/html/index.html" % getversion()) callbacks.check(self, wevent)
def OnSelfAdded(self, event, wavelet): """ invoked when the robot has been added. """ logging.warn('wave - joined "%s" (%s) wave' % (wavelet._wave_id, wavelet._title)) wevent = WaveEvent() wevent.parse(self, event, wavelet) logging.debug("wave - owner is %s" % wevent.chan.data.owner) wevent.chan.data.json_data = wavelet.serialize() wevent.chan.save() wevent.reply( "Welcome to %s (see !help) or http://jsonbot.appspot.com/docs/html/index.html" % getversion()) callbacks.check(self, wevent)
def OnParticipantsChanged(self, event, wavelet): """ invoked when any participants have been added/removed. """ wevent = WaveEvent() wevent.parse(self, event, wavelet) whitelist = wevent.chan.data.whitelist if not whitelist: whitelist = wevent.chan.data.whitelist = [] participants = event.participants_added logging.warning("wave - %s - %s joined" % (wevent.chan.data.title, participants)) if wevent.chan.data.protected: for target in participants: if target not in whitelist and target != '*****@*****.**' and target != wevent.chan.data.owner: logging.warn("wave - %s - setting %s to read-only" % (wevent.chan.data.title, target)) wevent.root.participants.set_role(target, waveapi.wavelet.Participants.ROLE_READ_ONLY) callbacks.check(self, wevent)
def handle(self): """ send TICK events to callback. """ self.counter += 1 event = EventBase() event.nolog = True event.nobind = True event.channel = "usedefault" event.stop = True if self.counter % 60 == 0: event.type = event.cbtype = 'TICK60' callbacks.check(self.bot, event) maincfg = getmainconfig() t = maincfg.ticksleep or 1 if self.counter % t == 0: event.type = event.cbtype = 'TICK' callbacks.check(self.bot, event)
def OnParticipantsChanged(self, event, wavelet): """ invoked when any participants have been added/removed. """ wevent = WaveEvent() wevent.parse(self, event, wavelet) whitelist = wevent.chan.data.whitelist if not whitelist: whitelist = wevent.chan.data.whitelist = [] participants = event.participants_added logging.warning("wave - %s - %s joined" % (wevent.chan.data.title, participants)) if wevent.chan.data.protected: for target in participants: if target not in whitelist and target != '*****@*****.**' and target != wevent.chan.data.owner: logging.warn("wave - %s - setting %s to read-only" % (wevent.chan.data.title, target)) wevent.root.participants.set_role( target, waveapi.wavelet.Participants.ROLE_READ_ONLY) callbacks.check(self, wevent)
def handle_message(self, data): """ message handler. """ m = Message(data) m.parse(self) if data.type == 'groupchat' and data.subject: logging.debug("%s - checking topic" % self.cfg.name) self.topiccheck(m) nm = Message(m) callbacks.check(self, nm) return xmlns = data.get('x').xmlns or data.get("delay").xmlns if xmlns and (xmlns == 'jabber:x:delay' or xmlns == 'urn:xmpp:delay'): logging.info("%s - ignoring delayed message" % self.cfg.name) return if m.isresponse: logging.debug("%s - message is a response" % self.cfg.name) return jid = None m.origjid = m.jid for node in m.subelements: try: m.jid = node.x.item.jid except (AttributeError, TypeError): continue if self.cfg.user in m.fromm or (m.groupchat and self.cfg.nick == m.nick): logging.debug("%s - message to self .. ignoring" % self.cfg.name) return 0 if self.cfg.fulljids and not m.msg: if not m.nick: utarget = None else: utarget = self.userhosts.get(m.nick) logging.warn("userhost from cache for %s ==> %s" % (m.nick, utarget)) if utarget: m.userhost = m.jid = m.auth = utarget else: m.userhost = m.jid if m.msg: m.userhost = stripped(m.userhost) logging.info("using %s as userhost" % m.userhost) try: if m.type == 'error': if m.code: self.errorHandler(m) else: m.nodispatch = False except Exception, ex: handle_exception()
def handle_message(self, data): """ message handler. """ m = Message(data) m.parse(self) if data.type == 'groupchat' and data.subject: logging.debug("%s - checking topic" % self.cfg.name) self.topiccheck(m) nm = Message(m) callbacks.check(self, nm) return if data.get('x').xmlns == 'jabber:x:delay': logging.debug("%s - ignoring delayed message" % self.cfg.name) return if m.isresponse: logging.debug("%s - message is a response" % self.cfg.name) return jid = None m.origjid = m.jid for node in m.subelements: try: m.jid = node.x.item.jid except (AttributeError, TypeError): continue if self.cfg.user in m.fromm or (m.groupchat and self.cfg.nick == m.nick): logging.debug("%s - message to self .. ignoring" % self.cfg.name) return 0 if self.cfg.fulljids: utarget = self.userhosts.get(m.nick) if utarget: m.userhost = m.jid = m.auth = stripped(utarget) else: m.userhost = m.jid logging.warn("using %s as userhost" % m.userhost) try: if m.type == 'error': if m.code: logging.error('%s - error - %s' % (self.cfg.name, str(m))) self.errorHandler(m) except Exception, ex: handle_exception()
def handle(self): """ send TICK events to callback. """ callbacks.check(self.bot, self.event)