Example #1
0
 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()
Example #2
0
File: tick.py Project: code2u/jsb
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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()
Example #10
0
 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()
Example #11
0
File: bot.py Project: code2u/jsb
 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()
Example #12
0
 def handle(self):
     """ send TICK events to callback. """
     callbacks.check(self.bot, self.event)