Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #3
0
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()
Beispiel #4
0
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)
Beispiel #6
0
    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)
Beispiel #7
0
 # 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:
Beispiel #8
0
    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)
Beispiel #9
0
 # 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
Beispiel #10
0
 def at_job():
     plugins.trydispatch(self.bot, self.nevent)
Beispiel #11
0
    def domsg(self, msg):

        """ excecute a message (txt line) on the bot. """ 

        plugins.trydispatch(self, msg)
    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()
Beispiel #14
0
    def domsg(self, msg):

        """ dispatch an msg on the bot. """

        plugins.trydispatch(self, msg)
Beispiel #15
0
    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()