### # Copyright (c) 2011, xleave # All rights reserved. # # ### from threading import Event, Thread import subprocess import supybot.utils as utils from supybot.commands import * import supybot.plugins as plugins import supybot.ircutils as ircutils import supybot.callbacks as callbacks import supybot.ircmsgs as ircmsgs import re raum_in_str = re.compile(".*(raum:|r:).*", re.I).match raumstatus_is_open = re.compile("(raum: |r: )(auf|offen|open)", re.I).match raumstatus_is_closed = re.compile("(raum: |r: )(zu|geschlossen|closed)", re.I).match raumstatus_replace = re.compile("((raum: |r: ))[^ ]*", re.I).sub class Raumstatus(callbacks.Plugin): threaded = True foo = "2" def __init__(self, irc): self.__parent = super(Raumstatus, self) self.__parent.__init__(irc) self.meinTimer = RepeatTimer(2, self.Bla, 0, [irc]) self.meinTimer.daemon = True def start(self, irc, msg, args): irc.reply("starting timer") self.meinTimer.start() irc.reply("MUST DESTROY UNIVERSE!!!") start = wrap(start) def stop(self, irc, msg, args): irc.reply("stopping timer") self.meinTimer.cancel() irc.reply("FUCKED") stop = wrap(stop) def Bla(self, irc): c = currentTopic = irc.state.getTopic(self.registryValue('channel')) # import pdb;pdb.set_trace() # c = currentTopic = irc.state.channels["#ccc.do"].topic # raise Exception("%s %s %s %s"%("fuck you", type(c), dir(c), c)) # print "blabla %s " % self.registryValue('target') ret = subprocess.call("ping -c6 -i .2 %s" % self.registryValue('target'), shell=True, stdout=open('/dev/null','w'), stderr=subprocess.STDOUT) x = raum_in_str(c) if ret == 0: if not x: currentTopic = "Raum: auf | %s"%currentTopic else: if not raumstatus_is_open(currentTopic): currentTopic = raumstatus_replace('\\1auf', currentTopic) else: if not x: currentTopic = "Raum: zu | %s"%currentTopic else: if not raumstatus_is_closed(currentTopic): currentTopic = raumstatus_replace('\\1zu', currentTopic) if c != currentTopic: irc.queueMsg(ircmsgs.topic(self.registryValue('channel'), currentTopic[:159])) # irc.sendMsg(ircmsgs.privmsg("#ccc.do", "reset topic")) class RepeatTimer(Thread): def __init__(self, interval, function, iterations=0, args=[], kwargs={}): Thread.__init__(self) self.interval = interval self.function = function self.iterations = iterations self.args = args self.kwargs = kwargs self.finished = Event() def run(self): count = 0 while not self.finished.isSet() and (self.iterations <= 0 or count < self.iterations): self.finished.wait(self.interval) if not self.finished.isSet(): self.function(*self.args, **self.kwargs) count += 1 def cancel(self): self.finished.set() Class = Raumstatus # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: