コード例 #1
0
ファイル: lag.py プロジェクト: GuillaumeFromage/my-gozerbot
 def measure(self, name):
     """ measure lag of <botname> """
     bot = fleet.byname(name)
     if not bot:
         return
     if bot.connectok.isSet() and bot.connectok:
         bot.sendraw('PING :LAG %f' % time.time())
コード例 #2
0
    def doscan(self, scanlist):
        for botname, channel, name, node in scanlist:            
            try:
                result = geturl('http://%s/7.html' % node)
            except Exception, ex:
                rlog(10, 'shoutcast', "can't get %s shoutcast data: %s" % \
(node, str(ex)))
                continue
            try:
                res = result.split(',')[6]
            except IndexError:
                rlog(10, 'shoutcast', "can't match %s shoutcast data" % node)
                continue
            song = striphtml(res).strip().replace('\n', '')
            bot = fleet.byname(botname)
            if bot and channel in bot.state['joinedchannels']:
                got = False
                for ttime, played in self.songsplayed:
                    if played == song:
                        got = True
                if not got:
                    self.songsplayed.append((time.time(), song))
                    bot.say(channel, "now playing on %s: %s" % (name, song))
                else:
                    for ttime, played in self.songsplayed:
                        if time.time() - ttime > 1800:
                            self.songsplayed.remove((ttime, played))
コード例 #3
0
ファイル: lag.py プロジェクト: RetroRodent/my-gozerbot
 def measure(self, name):
     """ measure lag of <botname> """
     bot = fleet.byname(name)
     if not bot:
         return
     if bot.connectok.isSet() and bot.connectok:
         bot.sendraw('PING :LAG %f' % time.time())
コード例 #4
0
ファイル: fleet.py プロジェクト: GuillaumeFromage/my-gozerbot
def handle_fleetaddjabber(bot, ievent):
    """ fleed-addjabber <name> <host> <user> <password> [port] .. add jabber 
        bot to fleet.
    """
    try:
        import xmpp
    except ImportError:
        ievent.reply('xmpp is not enabled .. install the xmpppy package')
        return

    from gozerbot.jabber.jabberbot import Jabberbot

    if not bot.type == 'jabber':
        ievent.reply('use this command on a jabber bot (and change \
password if you used it)')
        return

    if ievent.groupchat:
        ievent.reply('use this command in a private message (and change \
password if you used it)')
        return

    length = len(ievent.args)

    if length == 5:
        (name, host, user, password, port) = ievent.args
    elif length == 4:
        (name, host, user, password) = ievent.args
        port = 5222
    else:
        ievent.missing('<name> <host> <user> <password> [<port>]')
        return

    if fleet.byname(name):
        ievent.reply('we already have a bot with %s name in fleet' % \
name)
        return

    if '--port' in ievent.optionset:
        port = ievent.options['--port']

    cfg = Config(datadir + os.sep + 'fleet' + os.sep + name, 'config')
    cfg['name'] = name
    cfg['type'] = 'jabber'
    cfg['host'] = host
    cfg['user'] = user
    cfg['password'] = password
    cfg['port'] = port
    cfg.save()
    b = fleet.makebot(name, cfg)

    try:
        ievent.reply('added %s bot' % name)
        fleet.addbot(b)
        ievent.reply('connecting to %s' % server)
        fleet.connect(name)
        ievent.reply('%s started' % name)
    except Exception, ex:
        ievent.reply(str(ex))
        fleet.delete(b)
コード例 #5
0
ファイル: fleet.py プロジェクト: GuillaumeFromage/my-gozerbot
def fleet_enable(bot, ievent):
    """ enable a fleet bot. """

    if not ievent.rest:
        ievent.missing("list of fleet bots")
        return

    bots = ievent.rest.split()

    for name in bots:
        bot = fleet.byname(name)

        if bot:
            bot.cfg['enable'] = 1
            bot.cfg.save()
            ievent.reply('enabled %s' % name)
            start_new_thread(fleet.connect, (name, ))
        elif name in fleet.avail():
            bots = fleet.start([
                name,
            ], enable=True)
            for bot in bots:
                ievent.reply('enabled and started %s bot' % name)
                start_new_thread(fleet.connect, (name, ))
        else:
            ievent.reply('no %s bot in fleet' % name)
コード例 #6
0
ファイル: fleet.py プロジェクト: RetroRodent/my-gozerbot
def fleet_enable(bot, ievent):

    """ enable a fleet bot. """

    if not ievent.rest:
        ievent.missing("list of fleet bots")
        return

    bots = ievent.rest.split()

    for name in bots:
        bot = fleet.byname(name)

        if bot:
            bot.cfg['enable'] = 1
            bot.cfg.save()
            ievent.reply('enabled %s' % name)
            start_new_thread(fleet.connect, (name, ))
        elif name in fleet.avail():
            bots = fleet.start([name, ], enable=True)
            for bot in bots:
                ievent.reply('enabled and started %s bot' % name)
                start_new_thread(fleet.connect, (name, ))
        else:
            ievent.reply('no %s bot in fleet' % name)
コード例 #7
0
ファイル: rss.py プロジェクト: RetroRodent/my-gozerbot
    def peek(self, name, *args):
        rssitem = self.byname(name)
        if not rssitem or not rssitem.running or rssitem.stoprunning:
            return
        try:
            try:
                res = self.getdata(name)
            except socket.timeout:
                rlog(10, 'rss', 'socket timeout of %s' % name)
                return
            except RssException, ex:
                rlog(10, 'rss', '%s error: %s' % (name, str(ex)))
                return
            if not res:
                return
            res2 = []
            for j in res:
                try:
                    d = j['updated'] 
                except KeyError:
                    if j not in self.results[name]:
                        self.results[name].append(j)
                        res2.append(j)
                else:
                    if not checkfordate(self.results[name], d):
                        self.results[name].append(j)
                        res2.append(j)
            if not res2:
                return
            for item in rssitem.watchchannels:
                try:
                    (botname, channel) = item
                except:
                    try:
                        (botname, channel) = loads(item)
                    except:
                        rlog(10, 'rss', '%s is not in the format \
(botname,channel)' % str(item))
                bot = fleet.byname(botname)
                if not bot:
                    continue
                if self.markup.get(jsonstring([name, channel]), 'reverse-order'):
                    res2 = res2[::-1]
                if self.markup.get(jsonstring([name, channel]), 'all-lines'):
                    for i in res2:
                        response = self.makeresponse(name, [i, ], channel)
                        bot.say(channel, "\002%s\002: %s" % \
(rssitem.name, response), fromm=rssitem.name)
                else:
                    sep =  self.markup.get(jsonstring([name, channel]), 'separator')
                    if sep:
                        response = self.makeresponse(name, res2, channel, \
sep=sep)
                    else:
                        response = self.makeresponse(name, res2, channel)
                    bot.say(channel, "\002%s\002: %s" % (rssitem.name, \
response), fromm=rssitem.name)
コード例 #8
0
ファイル: alarm.py プロジェクト: GuillaumeFromage/my-gozerbot
    def alarmsay(self, item):
        """ say alarm txt """
        bot = fleet.byname(item.botname)
        if bot:
            if item.printto:
                bot.say(item.printto, "[%s] %s" % (item.nick, item.txt), \
speed=1)
            else:
                bot.say(item.nick, item.txt, speed=1)
        self.delete(item.idnr)
コード例 #9
0
ファイル: udp.py プロジェクト: GuillaumeFromage/my-gozerbot
 def dosay(self, printto, txt):
     if cfg['udpparty'] and partyline.is_on(printto):
         partyline.say_nick(printto, txt)
         return
     bot = fleet.byname(cfg['udpbot'])
     if not bot.jabber and not cfg['nolimiter']:
         time.sleep(3)
     bot.say(printto, txt)
     for i in self.loggers:
         i.log(printto, txt)
コード例 #10
0
ファイル: rss.py プロジェクト: GuillaumeFromage/my-gozerbot
    def peek(self, name, *args):
        rssitem = self.byname(name)
        if not rssitem or not rssitem.running or rssitem.stoprunning:
            return
        try:
            try:
                res = self.getdata(name)
            except socket.timeout:
                rlog(10, 'rss', 'socket timeout of %s' % name)
                return
            except RssException, ex:
                rlog(10, 'rss', '%s error: %s' % (name, str(ex)))
                return
            if not res:
                return
            res2 = []
            for j in res:
                try:
                    d = j['date']
                except KeyError:
                    if j not in self.results[name]:
                        self.results[name].append(j)
                        res2.append(j)
                else:
                    if not checkfordate(self.results[name], d):
                        self.results[name].append(j)
                        res2.append(j)
            if not res2:
                return
            for item in rssitem.watchchannels:
                try:
                    (botname, channel) = item
                except:
                    rlog(
                        10, 'rss', '%s is not in the format \
(botname,channel)' % str(item))
                bot = fleet.byname(botname)
                if not bot:
                    continue
                if self.markup.get((name, channel), 'all-lines'):
                    for i in res2:
                        response = self.makeresponse(name, [
                            i,
                        ], channel)
                        bot.say(channel, "\002%s\002: %s" % \
(rssitem.name, response), fromm=rssitem.name)
                else:
                    sep = self.markup.get((name, channel), 'seperator')
                    if sep:
                        response = self.makeresponse(name, res2, channel, \
sep=sep)
                    else:
                        response = self.makeresponse(name, res2, channel)
                    bot.say(channel, "\002%s\002: %s" % (rssitem.name, \
response), fromm=rssitem.name)
コード例 #11
0
ファイル: mpd.py プロジェクト: GuillaumeFromage/my-gozerbot
 def announce(self, status):
     if not self.running or not cfg.get('watcher-enabled'):
         return
     rlog(5, 'mpd', 'announcing song information')
     status['time'] = mpd_duration(status['time'])
     song = cfg.get('song-status') % status
     for name in self.data.keys():
         bot = fleet.byname(name)
         if bot:
             for channel in self.data[name].keys():
                 bot.say(channel, song)
コード例 #12
0
ファイル: mpd.py プロジェクト: blaxter/my-gozerbot
 def announce(self, status):
     if not self.running or not cfg.get("watcher-enabled"):
         return
     rlog(5, "mpd", "announcing song information")
     status["time"] = mpd_duration(status["time"])
     song = cfg.get("song-status") % status
     for name in self.data.keys():
         bot = fleet.byname(name)
         if bot:
             for channel in self.data[name].keys():
                 bot.say(channel, song)
コード例 #13
0
ファイル: rss.py プロジェクト: blaxter/my-gozerbot
    def peek(self, name, *args):
        rssitem = self.byname(name)
        if not rssitem or not rssitem.running or rssitem.stoprunning:
            return
        try:
            try:
                res = self.getdata(name)
            except socket.timeout:
                rlog(10, "rss", "socket timeout of %s" % name)
                return
            except RssException, ex:
                rlog(10, "rss", "%s error: %s" % (name, str(ex)))
                return
            if not res:
                return
            res2 = []
            for j in res:
                try:
                    d = j["date"]
                except KeyError:
                    if j not in self.results[name]:
                        self.results[name].append(j)
                        res2.append(j)
                else:
                    if not checkfordate(self.results[name], d):
                        self.results[name].append(j)
                        res2.append(j)
            if not res2:
                return
            for item in rssitem.watchchannels:
                try:
                    (botname, channel) = item
                except:
                    rlog(
                        10,
                        "rss",
                        "%s is not in the format \
(botname,channel)"
                        % str(item),
                    )
                bot = fleet.byname(botname)
                if not bot:
                    continue
                if self.markup.get((name, channel), "all-lines"):
                    for i in res2:
                        response = self.makeresponse(name, [i], channel)
                        bot.say(channel, "\002%s\002: %s" % (rssitem.name, response), fromm=rssitem.name)
                else:
                    sep = self.markup.get((name, channel), "seperator")
                    if sep:
                        response = self.makeresponse(name, res2, channel, sep=sep)
                    else:
                        response = self.makeresponse(name, res2, channel)
                    bot.say(channel, "\002%s\002: %s" % (rssitem.name, response), fromm=rssitem.name)
コード例 #14
0
 def check(self, botname, channel, txt, fromm=None):
     """ check if we relay on (botname, channel) .. if so do output """
     channel = channel.lower()
     indexstring = jsonstring((botname, channel))
     if self.data.has_key(indexstring):
         for i in self.data[indexstring]:
             if i != indexstring:
                 bot = fleet.byname(i[0])
                 if bot:
                     if txt.count('[%s]' % bot.nick) > 0:
                         return
                     if not bot.stopped:
                         time.sleep(1)
                         bot.outputnolog(i[1], txt, 'msg', fromm=fromm)
コード例 #15
0
ファイル: fleet.py プロジェクト: GuillaumeFromage/my-gozerbot
def fleet_disable(bot, ievent):
    """ disable a fleet bot. """

    if not ievent.rest:
        ievent.missing("list of fleet bots")
        return

    bots = ievent.rest.split()

    for name in bots:
        bot = fleet.byname(name)
        if bot:
            bot.cfg['enable'] = 0
            bot.cfg.save()
            ievent.reply('disabled %s' % name)
            fleet.exit(name)
        else:
            ievent.reply("can't find %s bot in fleet" % name)
コード例 #16
0
ファイル: udp.py プロジェクト: GuillaumeFromage/my-gozerbot
    def _listen(self):
        """ listen for udp messages .. /msg via bot"""
        if not cfg['udp']:
            return
        try:
            fleet.startok.wait()
            bot = fleet.byname(cfg['udpbot'] or 'default')
            if not bot:
                rlog(10, 'udp', "can't find %s bot .. not starting" % cfg['udpbot'])
                return
            self.sock.bind((cfg['udphost'], cfg['udpport']))
            rlog(10, 'udp', 'udp listening on %s %s' % (cfg['udphost'], \
cfg['udpport']))
            self.stop = 0
        except IOError:
            handle_exception()
            self.sock = None
            self.stop = 1
            return
        # loop on listening udp socket
        bot.connectok.wait()
        while not self.stop:
            try:
                input, addr = self.sock.recvfrom(64000)
            except socket.timeout:
                continue
            except Exception, ex:
                try:
                    (errno, errstr) = ex
                except ValueError:
                    errno = 0
                    errstr = str(ex)
                if errno == 4:
                    rlog(10, self.name, str(ex))
                    break
                if errno == 35:
                    continue
                else:
                    handle_exception()
                    break
            if self.stop:
                break
            self.queue.put((input, addr))
コード例 #17
0
ファイル: fleet.py プロジェクト: RetroRodent/my-gozerbot
def fleet_disable(bot, ievent):

    """ disable a fleet bot. """

    if not ievent.rest:
        ievent.missing("list of fleet bots")
        return

    bots = ievent.rest.split()

    for name in bots:
        bot = fleet.byname(name)
        if bot:
            bot.cfg['enable'] = 0
            bot.cfg.save()
            ievent.reply('disabled %s' % name)
            fleet.exit(name)
        else:
            ievent.reply("can't find %s bot in fleet" % name)
コード例 #18
0
def handle_nsdel(bot, ievent):
    """ remove a bot from nickserv. """

    if bot.jabber:
        return

    if len(ievent.args) != 1:
        ievent.missing('<fleetbot name>')
        return

    fbot = fleet.byname(ievent.args[0])

    if not fbot:
        ievent.reply('fleet not found')
        return

    if not nsauth.has(fbot):
        ievent.reply('nickserv not configured on %s' % fbot.name)
        return
    nsauth.remove(fbot)
    ievent.reply('ok')
コード例 #19
0
ファイル: nickserv.py プロジェクト: RetroRodent/my-gozerbot
def handle_nsdel(bot, ievent):

    """ remove a bot from nickserv. """

    if bot.jabber:
        return

    if len(ievent.args) != 1:
        ievent.missing('<fleetbot name>')
        return

    fbot = fleet.byname(ievent.args[0])

    if not fbot:
        ievent.reply('fleet not found')
        return

    if not nsauth.has(fbot):
        ievent.reply('nickserv not configured on %s' % fbot.name)
        return
    nsauth.remove(fbot)
    ievent.reply('ok')
コード例 #20
0
def handle_nsauth(bot, ievent):
    """ perform an auth request. """

    if bot.jabber:
        return

    if len(ievent.args) != 1:
        name = bot.name
    else:
        name = ievent.args[0]

    fbot = fleet.byname(name)

    if not fbot:
        ievent.reply('fleet not found')
        return

    if not nsauth.has(fbot):
        ievent.reply('nickserv not configured on %s' % fbot.name)
        return

    nsauth.identify(fbot)
    ievent.reply('ok')
コード例 #21
0
ファイル: tcp.py プロジェクト: GuillaumeFromage/my-gozerbot
    def _listen(self):
        """ listen for tcp messages .. /msg via bot"""
        if not cfg['tcp']:
            return
        try:
            fleet.startok.wait()
            bot = fleet.byname(cfg['tcpbot'] or 'default')
            if not bot:
                rlog(10, 'tcp', "can't find main bot .. not starting")
                return
            # get listen socket on host were running on
            self.sock.bind((cfg['tcphost'], cfg['tcpport']))
            self.sock.listen(1)
            rlog(10, 'tcp', 'tcp listening on %s %s' % (cfg['tcphost'], \
cfg['tcpport']))
            self.stop = 0
        except IOError:
            handle_exception()
            self.sock = None
            self.stop = 1
            return
        # loop on listening tcp socket
        bot.connectok.wait()
        while not self.stop:
            try:
                (sock, addr) = self.sock.accept()
                rlog(10, 'tcp', 'connection from %s' % str(addr))
            except socket.timeout:
                continue
            except Exception, ex:
                if 'Invalid argument' in str(ex):
                    continue
                handle_exception()
                break
            if cfg['tcp'] and (addr[0] in cfg['tcpallow'] or \
_inmask(addr[0])):
                start_new_thread(self.handlesocket, (sock, addr))
コード例 #22
0
ファイル: nickserv.py プロジェクト: RetroRodent/my-gozerbot
def handle_nsauth(bot, ievent):

    """ perform an auth request. """

    if bot.jabber:
        return

    if len(ievent.args) != 1:
        name = bot.name
    else:
        name = ievent.args[0]

    fbot = fleet.byname(name)

    if not fbot:
        ievent.reply('fleet not found')
        return

    if not nsauth.has(fbot):
        ievent.reply('nickserv not configured on %s' % fbot.name)
        return

    nsauth.identify(fbot)
    ievent.reply('ok')
コード例 #23
0
    def announce(self, url):
        for name in self.data['send'][url]:
            bot = fleet.byname(name)
            for chan in self.data['send'][url][name]:
                bot.say(chan, '%s changed (new checksum: %s)' % (url, \
self.data['urls'][url]))
コード例 #24
0
ファイル: irc.py プロジェクト: RetroRodent/my-gozerbot
        except AlreadyConnecting:
            return 0 
        except AlreadyConnected:
            return 0
        except Exception, ex:
            self.connectlock.release()
            if self.stopped:
                return 0
            rlog(10, self.name, 'connecting error: %s' % str(ex))
            if reconnect:
                self.reconnect()
                return
            raise

        # add bot to the fleet
        if not fleet.byname(self.name):
            fleet.addbot(self)
        self.connectlock.release()
        return res

    def shutdown(self):

        """ shutdown the bot. """

        rlog(10, self.name, 'shutdown')
        self.stopoutputloop = 1
        self.stopped = 1
        time.sleep(1)
        self.tickqueue.put_nowait('go')
        self.close()
        self.connecting = False
コード例 #25
0
ファイル: fleet.py プロジェクト: GuillaumeFromage/my-gozerbot
def handle_fleetaddirc(bot, ievent):
    """ fleed-addirc <name> <nick> <server> [port] [passwd] [ipv6] .. add irc \
        bot to fleet.
    """

    from gozerbot.irc.bot import Bot
    length = len(ievent.args)

    if length == 7:
        (name, nick, server, ipv6, ssl, port, password) = ievent.args
    elif length == 6:
        (name, nick, server, ipv6, ssl, port) = ievent.args
        password = ""
    elif length == 5:
        (name, nick, server, ipv6, ssl) = ievent.args
        password = ""
        if ssl:
            port = 6697
        else:
            port = 6667
    elif length == 4:
        (name, nick, server, ipv6) = ievent.args
        password = ""
        ssl = 0
        port = 6667
    elif length == 3:
        (name, nick, server) = ievent.args
        port = 6667
        password = ""
        ssl = 0
        ipv6 = 0
    else:
        ievent.missing('<name> <nick> <server> [<ipv6>] [<ssl>] [<port>] \
[<password>]')
        return

    if fleet.byname(name):
        ievent.reply('we already have a bot with %s name in fleet' % \
name)
        return

    if '--port' in ievent.optionset:
        port = ievent.options['--port']

    cfg = Config(datadir + os.sep + 'fleet' + os.sep + name, 'config', \
fleetbotconfigtxt)
    cfg['name'] = name
    cfg['nick'] = nick
    cfg['server'] = server
    cfg['port'] = port
    cfg['password'] = password
    cfg['ipv6'] = ipv6
    cfg['ssl'] = ssl
    cfg.save()
    b = fleet.makebot(name, cfg)

    try:
        ievent.reply('adding bot: %s' % str(b))
        fleet.addbot(b)
        ievent.reply('connecting to %s' % server)
        fleet.connect(name)
        ievent.reply('%s started' % name)
    except Exception, ex:
        ievent.reply(str(ex))
        fleet.delete(b)
コード例 #26
0
ファイル: fleet.py プロジェクト: RetroRodent/my-gozerbot
def handle_fleetaddirc(bot, ievent):

    """ fleed-addirc <name> <nick> <server> [port] [passwd] [ipv6] .. add irc \
        bot to fleet.
    """

    from gozerbot.irc.bot import Bot
    length  = len(ievent.args)

    if length == 7:
        (name, nick, server, ipv6, ssl, port, password) = ievent.args
    elif length == 6:
        (name, nick, server, ipv6, ssl, port) = ievent.args
        password = ""
    elif length == 5:
        (name, nick, server, ipv6, ssl) = ievent.args
        password = ""
        if ssl:
           port = 6697
        else:
           port = 6667
    elif length == 4:
        (name, nick, server, ipv6) = ievent.args
        password = ""
        ssl = 0
        port = 6667
    elif length == 3:
        (name, nick, server) = ievent.args
        port = 6667
        password = ""
        ssl = 0
        ipv6 = 0
    else:
        ievent.missing('<name> <nick> <server> [<ipv6>] [<ssl>] [<port>] \
[<password>]')
        return

    if fleet.byname(name):
        ievent.reply('we already have a bot with %s name in fleet' % \
name)
        return

    if '--port' in ievent.optionset:
        port = ievent.options['--port']

    cfg = Config(datadir + os.sep + 'fleet' + os.sep + name, 'config', \
fleetbotconfigtxt)
    cfg['name'] = name
    cfg['nick'] = nick
    cfg['server'] = server
    cfg['port'] = port
    cfg['password'] = password
    cfg['ipv6'] = ipv6
    cfg['ssl'] = ssl
    cfg.save()
    b = fleet.makebot(name, cfg)

    try:
        ievent.reply('adding bot: %s' % str(b))
        fleet.addbot(b)
        ievent.reply('connecting to %s' % server)
        fleet.connect(name)
        ievent.reply('%s started' % name)
    except Exception, ex:
        ievent.reply(str(ex))
        fleet.delete(b)
コード例 #27
0
ファイル: fleet.py プロジェクト: RetroRodent/my-gozerbot
def handle_fleetaddjabber(bot, ievent):

    """ fleed-addjabber <name> <host> <user> <password> [port] .. add jabber 
        bot to fleet.
    """
    try:
        import xmpp
    except ImportError:
        ievent.reply('xmpp is not enabled .. install the xmpppy package')
        return

    from gozerbot.jabber.jabberbot import Jabberbot

    if not bot.type == 'jabber':
        ievent.reply('use this command on a jabber bot (and change \
password if you used it)')
        return

    if ievent.groupchat:
        ievent.reply('use this command in a private message (and change \
password if you used it)')
        return

    length  = len(ievent.args)

    if length == 5:
        (name, host, user, password, port) = ievent.args
    elif length == 4:
        (name, host, user, password) = ievent.args
        port = 5222
    else:
        ievent.missing('<name> <host> <user> <password> [<port>]')
        return

    if fleet.byname(name):
        ievent.reply('we already have a bot with %s name in fleet' % \
name)
        return

    if '--port' in ievent.optionset:
        port = ievent.options['--port']

    cfg = Config(datadir + os.sep + 'fleet' + os.sep + name, 'config')
    cfg['name'] = name
    cfg['type'] = 'jabber'
    cfg['host'] = host
    cfg['user'] = user
    cfg['password'] = password
    cfg['port'] = port
    cfg.save()
    b = fleet.makebot(name, cfg)

    try:
        ievent.reply('added %s bot' % name)
        fleet.addbot(b)
        ievent.reply('connecting to %s' % server)
        fleet.connect(name)
        ievent.reply('%s started' % name)
    except Exception, ex:
        ievent.reply(str(ex))
        fleet.delete(b)
コード例 #28
0
ファイル: irc.py プロジェクト: GuillaumeFromage/my-gozerbot
        except AlreadyConnecting:
            return 0
        except AlreadyConnected:
            return 0
        except Exception, ex:
            self.connectlock.release()
            if self.stopped:
                return 0
            rlog(10, self.name, 'connecting error: %s' % str(ex))
            if reconnect:
                self.reconnect()
                return
            raise

        # add bot to the fleet
        if not fleet.byname(self.name):
            fleet.addbot(self)
        self.connectlock.release()
        return res

    def shutdown(self):
        """ shutdown the bot. """

        rlog(10, self.name, 'shutdown')
        self.stopoutputloop = 1
        self.stopped = 1
        time.sleep(1)
        self.tickqueue.put_nowait('go')
        self.close()
        self.connecting = False
        self.connected = False
コード例 #29
0
ファイル: httpwatch.py プロジェクト: RetroRodent/my-gozerbot
    def announce(self, url):
        for name in self.data['send'][url]:
            bot = fleet.byname(name)
            for chan in self.data['send'][url][name]:
                bot.say(chan, '%s changed (new checksum: %s)' % (url, \
self.data['urls'][url]))