From 824bb6b8043c54e97b804399b034e0070dd7071d Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Wed, 18 May 2011 19:10:49 +0200 Subject: [PATCH] Initial commit --- README | 0 snurr.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 README create mode 100644 snurr.py diff --git a/README b/README new file mode 100644 index 0000000..e69de29 diff --git a/snurr.py b/snurr.py new file mode 100644 index 0000000..abd163d --- /dev/null +++ b/snurr.py @@ -0,0 +1,54 @@ +import sys +from twisted.words.protocols import irc +from twisted.internet import protocol, reactor + + +class SnurrBot(irc.IRCClient): + def _get_nickname(self): + return self.factory.nickname + nickname = property(_get_nickname) + + def signedOn(self): + self.join(self.factory.channel) + print "Signed on as %s." % (self.nickname,) + + def joined(self, channel): + print "Joined %s." % (channel,) + + def privmsg(self, user, channel, msg): + print msg + +class SnurrBotFactory(protocol.ClientFactory): + protocol = SnurrBot + + def __init__(self, channel, nickname='snurr'): + self.channel = channel + self.nickname = nickname + + def clientConnectionLost(self, connector, reason): + print "Lost connection (%s), reconnecting." % (reason,) + connector.connect() + + def clientConnectionFailed(self, connector, reason): + print "Could not connect: %s" % (reason,) + +class MediaWikiProtocol(protocol.DatagramProtocol): + def startProtocol(self): + print "Listening for wikiChanges" + reactor.connectTCP('irc.ifi.uio.no', 6667, SnurrBotFactory('#' + chan)) + + def stopProtocol(self): + print "MediWiki listener stopped" + + def datagramRecieved(self, data, (host, port)): + print "received %r from %s:%d" % (data, host, port) + self.transport.write(data, (host, port)) + print self,data,host,port + +if __name__ == "__main__": + if len(sys.argv) == 1: + chan = sys.argv[1] + reactor.listenUDP(4321, MediaWikiProtocol()) + reactor.run() + else: + print "Usage: %s IRC_CHANNEL" % (sys.argv[0],)