예제 #1
0
    def quit(self, irc, msg, args, text):
        """[<text>]

        Exits the bot with the QUIT message <text>.  If <text> is not given,
        the default quit message (supybot.plugins.Owner.quitMsg) will be used.
        If there is no default quitMsg set, your nick will be used.
        """
        text = text or self.registryValue('quitMsg') or msg.nick
        irc.noReply()
        m = ircmsgs.quit(text)
        world.upkeep()
        for irc in world.ircs[:]:
            irc.queueMsg(m)
            irc.die()
예제 #2
0
파일: plugin.py 프로젝트: boamaod/Limnoria
    def quit(self, irc, msg, args, text):
        """[<text>]

        Exits the bot with the QUIT message <text>.  If <text> is not given,
        the default quit message (supybot.plugins.Owner.quitMsg) will be used.
        If there is no default quitMsg set, your nick will be used.
        """
        text = text or self.registryValue('quitMsg') or msg.nick
        irc.noReply()
        m = ircmsgs.quit(text)
        world.upkeep()
        for irc in world.ircs[:]:
            irc.queueMsg(m)
            irc.die()
예제 #3
0
    def quit(self, irc, msg, args, text):
        """[<text>]

        Exits the bot with the QUIT message <text>.  If <text> is not given,
        the default quit message (supybot.plugins.Owner.quitMsg) will be used.
        If there is no default quitMsg set, your nick will be used. The standard
        substitutions ($version, $nick, etc.) are all handled appropriately.
        """
        text = text or self.registryValue('quitMsg') or msg.nick
        text = ircutils.standardSubstitute(irc, msg, text)
        irc.noReply()
        m = ircmsgs.quit(text)
        world.upkeep()
        for irc in world.ircs[:]:
            irc.queueMsg(m)
            irc.die()
예제 #4
0
파일: plugin.py 프로젝트: Hoaas/Limnoria
    def quit(self, irc, msg, args, text):
        """[<text>]

        Exits the bot with the QUIT message <text>.  If <text> is not given,
        the default quit message (supybot.plugins.Owner.quitMsg) will be used.
        If there is no default quitMsg set, your nick will be used. The standard
        substitutions ($version, $nick, etc.) are all handled appropriately.
        """
        text = text or self.registryValue('quitMsg') or msg.nick
        text = ircutils.standardSubstitute(irc, msg, text)
        irc.noReply()
        m = ircmsgs.quit(text)
        world.upkeep()
        for irc in world.ircs[:]:
            irc.queueMsg(m)
            irc.die()
예제 #5
0
def main():
    import supybot.conf as conf
    import supybot.world as world
    import supybot.drivers as drivers
    import supybot.schedule as schedule
    # We schedule this event rather than have it actually run because if there
    # is a failure between now and the time it takes the Owner plugin to load
    # all the various plugins, our registry file might be wiped.  That's bad.
    interrupted = False
    when = conf.supybot.upkeepInterval()
    schedule.addPeriodicEvent(world.upkeep, when, name='upkeep', now=False)
    world.startedAt = started
    while world.ircs:
        try:
            drivers.run()
        except KeyboardInterrupt:
            if interrupted:
                # Interrupted while waiting for queues to clear.  Let's clear
                # them ourselves.
                for irc in world.ircs:
                    irc._reallyDie()
                    continue
            else:
                interrupted = True
                log.info('Exiting due to Ctrl-C.  '
                         'If the bot doesn\'t exit within a few seconds, '
                         'feel free to press Ctrl-C again to make it exit '
                         'without flushing its message queues.')
                world.upkeep()
                for irc in world.ircs:
                    quitmsg = conf.supybot.plugins.Owner.quitMsg() or \
                              'Ctrl-C at console.'
                    irc.queueMsg(ircmsgs.quit(quitmsg))
                    irc.die()
        except SystemExit, e:
            s = str(e)
            if s:
                log.info('Exiting due to %s', s)
            break
        except:
예제 #6
0
    def upkeep(self, irc, msg, args, level):
        """[<level>]

        Runs the standard upkeep stuff (flushes and gc.collects()).  If given
        a level, runs that level of upkeep (currently, the only supported
        level is "high", which causes the bot to flush a lot of caches as well
        as do normal upkeep stuff).
        """
        L = []
        if level == 'high':
            L.append(
                format('Regexp cache flushed: %n cleared.',
                       (len(re._cache), 'regexp')))
            re.purge()
            L.append(
                format('Pattern cache flushed: %n cleared.',
                       (len(ircutils._patternCache), 'compiled pattern')))
            ircutils._patternCache.clear()
            L.append(
                format('hostmaskPatternEqual cache flushed: %n cleared.',
                       (len(ircutils._hostmaskPatternEqualCache), 'result')))
            ircutils._hostmaskPatternEqualCache.clear()
            L.append(
                format(
                    'ircdb username cache flushed: %n cleared.',
                    (len(ircdb.users._nameCache), 'username to id mapping')))
            ircdb.users._nameCache.clear()
            L.append(
                format('ircdb hostmask cache flushed: %n cleared.', (len(
                    ircdb.users._hostmaskCache), 'hostmask to id mapping')))
            ircdb.users._hostmaskCache.clear()
            L.append(
                format('linecache line cache flushed: %n cleared.',
                       (len(linecache.cache), 'line')))
            linecache.clearcache()
            if minisix.PY2:
                sys.exc_clear()
        collected = world.upkeep()
        if gc.garbage:
            L.append('Garbage!  %r.' % gc.garbage)
        if collected is not None:
            # Some time between 5.2 and 7.1, Pypy (3?) started returning None
            # when gc.collect() is called.
            L.append(format('%n collected.', (collected, 'object')))
        if L:
            irc.reply('  '.join(L))
        else:
            irc.replySuccess()
예제 #7
0
    def upkeep(self, irc, msg, args, level):
        """[<level>]

        Runs the standard upkeep stuff (flushes and gc.collects()).  If given
        a level, runs that level of upkeep (currently, the only supported
        level is "high", which causes the bot to flush a lot of caches as well
        as do normal upkeep stuff.
        """
        L = []
        if level == "high":
            L.append(format("Regexp cache flushed: %n cleared.", (len(sre._cache), "regexp")))
            sre.purge()
            L.append(format("Pattern cache flushed: %n cleared.", (len(ircutils._patternCache), "compiled pattern")))
            ircutils._patternCache.clear()
            L.append(
                format(
                    "hostmaskPatternEqual cache flushed: %n cleared.",
                    (len(ircutils._hostmaskPatternEqualCache), "result"),
                )
            )
            ircutils._hostmaskPatternEqualCache.clear()
            L.append(
                format(
                    "ircdb username cache flushed: %n cleared.", (len(ircdb.users._nameCache), "username to id mapping")
                )
            )
            ircdb.users._nameCache.clear()
            L.append(
                format(
                    "ircdb hostmask cache flushed: %n cleared.",
                    (len(ircdb.users._hostmaskCache), "hostmask to id mapping"),
                )
            )
            ircdb.users._hostmaskCache.clear()
            L.append(format("linecache line cache flushed: %n cleared.", (len(linecache.cache), "line")))
            linecache.clearcache()
            sys.exc_clear()
        collected = world.upkeep()
        if gc.garbage:
            L.append("Garbage!  %r." % gc.garbage)
        L.append(format("%n collected.", (collected, "object")))
        irc.reply("  ".join(L))
예제 #8
0
    def upkeep(self, irc, msg, args, level):
        """[<level>]

        Runs the standard upkeep stuff (flushes and gc.collects()).  If given
        a level, runs that level of upkeep (currently, the only supported
        level is "high", which causes the bot to flush a lot of caches as well
        as do normal upkeep stuff).
        """
        L = []
        if level == 'high':
            L.append(
                format('Regexp cache flushed: %n cleared.',
                       (len(re._cache), 'regexp')))
            re.purge()
            L.append(
                format('Pattern cache flushed: %n cleared.',
                       (len(ircutils._patternCache), 'compiled pattern')))
            ircutils._patternCache.clear()
            L.append(
                format('hostmaskPatternEqual cache flushed: %n cleared.',
                       (len(ircutils._hostmaskPatternEqualCache), 'result')))
            ircutils._hostmaskPatternEqualCache.clear()
            L.append(
                format(
                    'ircdb username cache flushed: %n cleared.',
                    (len(ircdb.users._nameCache), 'username to id mapping')))
            ircdb.users._nameCache.clear()
            L.append(
                format('ircdb hostmask cache flushed: %n cleared.', (len(
                    ircdb.users._hostmaskCache), 'hostmask to id mapping')))
            ircdb.users._hostmaskCache.clear()
            L.append(
                format('linecache line cache flushed: %n cleared.',
                       (len(linecache.cache), 'line')))
            linecache.clearcache()
            if sys.version_info[0] < 3:
                sys.exc_clear()
        collected = world.upkeep()
        if gc.garbage:
            L.append('Garbage!  %r.' % gc.garbage)
        L.append(format('%n collected.', (collected, 'object')))
        irc.reply('  '.join(L))
예제 #9
0
파일: plugin.py 프로젝트: Hoaas/Limnoria
    def upkeep(self, irc, msg, args, level):
        """[<level>]

        Runs the standard upkeep stuff (flushes and gc.collects()).  If given
        a level, runs that level of upkeep (currently, the only supported
        level is "high", which causes the bot to flush a lot of caches as well
        as do normal upkeep stuff).
        """
        L = []
        if level == 'high':
            L.append(format('Regexp cache flushed: %n cleared.',
                            (len(re._cache), 'regexp')))
            re.purge()
            L.append(format('Pattern cache flushed: %n cleared.',
                            (len(ircutils._patternCache), 'compiled pattern')))
            ircutils._patternCache.clear()
            L.append(format('hostmaskPatternEqual cache flushed: %n cleared.',
                            (len(ircutils._hostmaskPatternEqualCache),
                             'result')))
            ircutils._hostmaskPatternEqualCache.clear()
            L.append(format('ircdb username cache flushed: %n cleared.',
                            (len(ircdb.users._nameCache),
                             'username to id mapping')))
            ircdb.users._nameCache.clear()
            L.append(format('ircdb hostmask cache flushed: %n cleared.',
                            (len(ircdb.users._hostmaskCache),
                            'hostmask to id mapping')))
            ircdb.users._hostmaskCache.clear()
            L.append(format('linecache line cache flushed: %n cleared.',
                            (len(linecache.cache), 'line')))
            linecache.clearcache()
            if minisix.PY2:
                sys.exc_clear()
        collected = world.upkeep()
        if gc.garbage:
            L.append('Garbage!  %r.' % gc.garbage)
        L.append(format('%n collected.', (collected, 'object')))
        irc.reply('  '.join(L))