diff options
author | tv <tv@nomic.retiolum> | 2013-11-05 13:07:46 +0100 |
---|---|---|
committer | tv <tv@nomic.retiolum> | 2013-11-05 13:07:46 +0100 |
commit | ae627d2aa73ea6862af3985f1c07e95c6d493275 (patch) | |
tree | dea1eb74dccd7a14eff03e03baf2eed239a5ac72 /punani/bot | |
parent | bf87133ae8e2ce6eb7923dc22c29b8f162c8756a (diff) |
//punani: RIP
Diffstat (limited to 'punani/bot')
-rwxr-xr-x | punani/bot/__init__.py | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/punani/bot/__init__.py b/punani/bot/__init__.py deleted file mode 100755 index 4944bba0..00000000 --- a/punani/bot/__init__.py +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/python -from Queue import Queue -from SocketServer import BaseRequestHandler, ThreadingTCPServer -from threading import Thread -from time import sleep, strftime, strptime - -from ircbot import SingleServerIRCBot -from irclib import nm_to_n - - -class PunaniRequestHandler(BaseRequestHandler): - """Handler for Punani messages.""" - - def handle(self): - try: - msg = self.request.recv(1024).strip() - except ValueError: - msg = 'Invalid message.' - else: - self.server.queue.put((self.client_address, msg)) - print ('%s:%d' % self.client_address), str(msg) - - -class PunaniReceiveServer(ThreadingTCPServer): - """UDP server that waits for Punani messages.""" - - def __init__(self): - ThreadingTCPServer.__init__(self, - ('127.0.0.1', 5555), - PunaniRequestHandler) - self.queue = Queue() - - -class PunaniBot(SingleServerIRCBot): - - def __init__(self, server_list, channel_list, nickname='punani-ircbot', - realname='Bob Ross'): - self.reconnection_interval = 30 - SingleServerIRCBot.__init__(self, server_list, nickname, realname) - self.channel_list = channel_list - - def on_welcome(self, conn, event): - """Join channels after connect.""" - print 'Connected to %s:%d.' % conn.socket.getsockname() - for channel, key in self.channel_list: - conn.join(channel, key) - - def on_nicknameinuse(self, conn, event): - """Choose another nickname if conflicting.""" - self._nickname += '_' - conn.nick(self._nickname) - - def on_ctcp(self, conn, event): - """Answer CTCP PING and VERSION queries.""" - whonick = nm_to_n(event.source()) - message = event.arguments()[0].lower() - if message == 'version': - conn.notice(whonick, 'Punani2irc') - elif message == 'ping': - conn.pong(whonick) - - def on_privmsg(self, conn, event): - """React on private messages. - - Die, for example. - """ - whonick = nm_to_n(event.source()) - message = event.arguments()[0] - if message == 'die!': - print 'Shutting down as requested by %s...' % whonick - self.die('Shutting down.') - - def say(self, msg): - """Say message to channels.""" - for channel, key in self.channel_list: - self.connection.privmsg(channel, msg) - - -def process_queue(announce_callback, queue, delay=2): - """Process received messages in queue.""" - while True: - sleep(delay) - try: - addr, msg = queue.get() - except Empty: - continue - #do something with the addr? - announce_callback(str(msg)) -if __name__ == '__main__': - # Set IRC connection parameters. - irc_servers = [('supernode', 6667)] - irc_channels = [('#retiolum', '')] - - # Prepare and start IRC bot. - bot = PunaniBot(irc_servers, irc_channels) - t = Thread(target=bot.start) - t.daemon = True - t.start() - announce = bot.say - - receiver = PunaniReceiveServer() - t = Thread(target=process_queue, args=(announce, receiver.queue)) - t.daemon = True - t.start() - receiver.serve_forever() |