def dotest(testnr): exs = examples.getexamples() random.shuffle(exs) teller = 0 for i in exs: no = 0 for zz in donot: if i.find(zz) != -1: no = 1 break if no: continue teller += 1 try: ievent = Ircevent() ievent.nick = 'test' ievent.userhost = 'test@test' q = Queue.Queue() ievent.queues.append(q) ievent.channel = '#dunkbots' ievent.txt = i queues.append((testnr, teller, i, q)) if not plugins.trydispatch(bot, ievent): print "\ncan't execute %s\n" % i queues.remove((testnr, teller, i, q)) except: handle_exception()
def dohammer(): for j in range(nrtimes): try: ievent = Ircevent() ievent.nick = 'test' ievent.userhost = 'test@test' q = Queue.Queue() ievent.queue = q ievent.channel = '#dunkbots' ievent.txt = nail queues.append((nail, q)) if not plugins.trydispatch(ievent): print "\ncan't execute %s\n" % nail queues.remove((nail, q)) except: handle_exception()
def domsg(self, msg): """ excecute a message (txt line) on the bot. """ plugins.trydispatch(self, msg)
def handle_privmsg(self, ievent): """ check if PRIVMSG is command, if so dispatch. """ if ievent.nick in self.nicks401: rlog(10, self.name, "%s is available again" % ievent.nick) self.nicks401.remove(ievent.nick) if not ievent.txt: return # check if it is a dcc chat request chat = re.search(dccchatre, ievent.txt) if chat: # check if the user is known if users.allowed(ievent.userhost, 'USER'): # start connection start_new_thread(self._dccconnect, (ievent.nick, ievent.userhost, chat.group(1), chat.group(2))) return # see if base class method would handle it if '\001' in ievent.txt: Irc.handle_privmsg(self, ievent) return # set bot and socket in ircevent ievent.bot = self ievent.sock = self.sock chan = ievent.channel.lower() # check for /msg if chan == self.nick.lower(): ievent.msg = 1 ievent.speed = 7 ievent.printto = ievent.nick ccs = ['!', '@', self.cfg['defaultcc']] # check for PRIVMSG waiting callback self.privwait.check(ievent) if ievent.isresponse: return if not self.cfg['noccinmsg']: plugins.trydispatch(self, ievent) elif ievent.txt[0] in ccs: ievent.txt = ievent.txt[1:] plugins.trydispatch(self, ievent) return ievent.printto = chan # see if we can get channel control character try: cchar = self.channels[chan]['cc'] except LookupError: cchar = self.cfg['defaultcc'] or '!' except TypeError: cchar = self.cfg['defaultcc'] or '!' # see if cchar matches, if so dispatch ievent.speed = 5 if ievent.txt[0] in cchar: ievent.cc = ievent.txt[0] ievent.txt = ievent.txt[1:] plugins.trydispatch(self, ievent) return # see if were adressed, if so dispatch txtlist = ievent.txt.split(':', 1) if txtlist[0].lower() == self.nick.lower(): if len(txtlist) < 2: return ievent.txt = txtlist[1].strip() plugins.trydispatch(self, ievent) return # habbie addressing mode txtlist = ievent.txt.split(',', 1) if txtlist[0].lower() == self.nick.lower(): if len(txtlist) < 2: return ievent.txt = txtlist[1].strip() plugins.trydispatch(self, ievent) return # check for PRIVMSG waiting callback self.privwait.check(ievent)
# create ircevent ievent = Ircevent() ievent.nick = nick ievent.userhost = userhost ievent.channel = channel ievent.origtxt = res ievent.txt = res ievent.cmnd = 'DCC' ievent.bot = self ievent.sock = sock ievent.speed = 1 ievent.isdcc = True # check if its a command if so dispatch if ievent.txt[0] == "!": ievent.txt = ievent.txt[1:] plugins.trydispatch(self, ievent) continue elif ievent.txt[0] == "@": # command is broadcast so send response to the paryline # members partyline.say_broadcast_notself( ievent.nick, "[%s] %s" % (ievent.nick, ievent.txt)) # make queue and run trydispatch to see if command has # fired q = Queue.Queue() ievent.queues = [q] ievent.txt = ievent.txt[1:] plugins.trydispatch(self, ievent) # wait for result .. default timeout is 10 sec result = waitforqueue(q, 5) if result:
# create ircevent ievent = Ircevent() ievent.nick = nick ievent.userhost = userhost ievent.channel = channel ievent.origtxt = res ievent.txt = res ievent.cmnd = 'DCC' ievent.bot = self ievent.sock = sock ievent.speed = 1 ievent.isdcc = True # check if its a command if so dispatch if ievent.txt[0] == "!": ievent.txt = ievent.txt[1:] plugins.trydispatch(self, ievent) continue elif ievent.txt[0] == "@": # command is broadcast so send response to the paryline # members partyline.say_broadcast_notself(ievent.nick, "[%s] %s" % (ievent.nick, ievent.txt)) # make queue and run trydispatch to see if command has # fired q = Queue.Queue() ievent.queues = [q] ievent.txt = ievent.txt[1:] plugins.trydispatch(self, ievent) # wait for result .. default timeout is 10 sec result = waitforqueue(q, 5) if result: # broadcast result
def at_job(): plugins.trydispatch(self.bot, self.nevent)
def domsg(self, msg): """ dispatch an msg on the bot. """ plugins.trydispatch(self, msg)
def messageHandler(self, conn, msg): """ message handler. """ rlog(5, self.name, 'incoming: %s' % str(msg)) if self.test: return if 'jabber:x:delay' in str(msg): return m = Jabbermsg(msg) m.toirc(self) if m.groupchat and m.getSubject(): self.topiccheck(m) nm = Jabbermsg(msg) nm.copyin(m) print nm jcallbacks.check(self, nm) return self.privwait.check(m) if m.isresponse: return if not m.txt: return if self.me in m.userhost: return 0 if m.groupchat and self.nick == m.resource: return 0 go = 0 try: cc = self.channels[m.channel]['cc'] except (TypeError, KeyError): cc = config['defaultcc'] or '!' try: channick = self.channels[m.channel]['nick'] except (TypeError, KeyError): channick = self.nick if m.msg and not config['noccinmsg']: go = 1 elif m.txt[0] in cc: go = 1 elif m.txt.startswith("%s: " % channick): m.txt = m.txt.replace("%s: " % channick, "") go = 1 elif m.txt.startswith("%s, " % channick): m.txt = m.txt.replace("%s, " % channick, "") go = 1 if m.txt[0] in cc: m.txt = m.txt[1:] if go: try: if plugins.woulddispatch(self, m): m.usercmnd = True plugins.trydispatch(self, m) except: handle_exception() try: nm = Jabbermsg(msg) nm.copyin(m) jcallbacks.check(self, nm) if nm.getType() == 'error': err = nm.getErrorCode() if err: rlog(10, self.name + '.error', "%s => %s: %s" % (nm.getFrom(),\ err, nm.getError())) rlog(10, self.name + '.error', str(nm)) self.errorwait.check(nm) try: method = getattr(self, 'handle_' + err) # try to call method try: method(nm) except: handle_exception() except AttributeError: # no command method to handle event pass except Exception, ex: handle_exception()
def messageHandler(self, conn, msg): """ message handler. """ rlog(5, self.name, 'incoming: %s' % str(msg)) if self.test: return if 'jabber:x:delay' in str(msg): return m = Jabbermsg(msg) m.toirc(self) if m.groupchat and m.getSubject(): self.topiccheck(m) nm = Jabbermsg(msg) nm.copyin(m) print nm jcallbacks.check(self, nm) return self.privwait.check(m) if m.isresponse: return if not m.txt: return if self.me in m.userhost: return 0 if m.groupchat and self.nick == m.resource: return 0 go = 0 try: cc = self.channels[m.channel]['cc'] except (TypeError, KeyError): cc = config['defaultcc'] or '!' try: channick = self.channels[m.channel]['nick'] except (TypeError, KeyError): channick = self.nick if m.msg and not config['noccinmsg']: go = 1 elif m.txt[0] in cc: go = 1 elif m.txt.startswith("%s: " % channick): m.txt = m.txt.replace("%s: " % channick, "") go = 1 elif m.txt.startswith("%s, " % channick): m.txt = m.txt.replace("%s, " % channick, "") go = 1 if m.txt[0] in cc: m.txt = m.txt[1:] if go: try: if plugins.woulddispatch(self, m): m.usercmnd = True plugins.trydispatch(self, m) except: handle_exception() try: nm = Jabbermsg(msg) nm.copyin(m) jcallbacks.check(self, nm) if nm.getType() == 'error': err = nm.getErrorCode() if err: rlog(10, self.name + '.error', "%s => %s: %s" % (nm.getFrom(),\ err, nm.getError())) rlog(10, self.name + '.error', str(nm)) self.errorwait.check(nm) try: method = getattr(self,'handle_' + err) # try to call method try: method(nm) except: handle_exception() except AttributeError: # no command method to handle event pass except Exception, ex: handle_exception()