Difference between revisions of "IRC ACKspace-statusbot"
(Created page with "{{Project |State=Completed |Members=StefandeVries |Description=Een IRC-bot die op commando de status van de space aangeeft. }} ACKbot zit in ons IRC-kanaal #ackspace op irc.free...") |
|||
Line 42: | Line 42: | ||
self.conn = socket.socket() | self.conn = socket.socket() | ||
self.conn.settimeout(300.0) | self.conn.settimeout(300.0) | ||
− | + | self.conn.connect((host, port)) | |
− | |||
− | |||
− | |||
self.conn.send("NICK %s\r\n" % nick) | self.conn.send("NICK %s\r\n" % nick) | ||
self.conn.send("USER %s %s bla :%s\r\n" % (ident, host, realname)) | self.conn.send("USER %s %s bla :%s\r\n" % (ident, host, realname)) | ||
Line 76: | Line 73: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
− | + | instance = IRC() | |
− | |||
− | |||
instance.mainLoop() | instance.mainLoop() | ||
Revision as of 20:07, 17 January 2013
Project: IRC ACKspace-statusbot | |
---|---|
Featured: | |
State | Completed |
Members | StefandeVries |
GitHub | No GitHub project defined. Add your project here. |
Description | Een IRC-bot die op commando de status van de space aangeeft. |
Picture | |
No project picture! Fill in form Picture or Upload a jpeg here |
ACKbot zit in ons IRC-kanaal #ackspace op irc.freenode.org. Met het commando !status geeft het aan of de space gesloten of geopend is. De broncode (Python):
# -*- coding: utf-8 -*- # ACKbot.py # # Copyright 2013 Stefan de Vries <stefandevries1994@gmail.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # import socket import urllib2 def space_open(): print "Space state called for." website = urllib2.urlopen("https://ackspace.nl/spacestate.php") website_html = website.read() if website_html.count("Closed"): return 0 else: return 1 class IRC: def __init__(self, host="irc.freenode.org", port=6667, nick="ACKbot", ident="ACKbot", realname="ACKbot"): self.conn = socket.socket() self.conn.settimeout(300.0) self.conn.connect((host, port)) self.conn.send("NICK %s\r\n" % nick) self.conn.send("USER %s %s bla :%s\r\n" % (ident, host, realname)) self.conn.send("JOIN :#ackspace\r\n:") def mainLoop(self): readbuffer = "" while 1: try: readbuffer = readbuffer + self.conn.recv(1024) except socket.timeout: raise ConnError() message = readbuffer.split("\n") readbuffer = message.pop() for line in message: line = line.rstrip() line = line.split() print line if line[0] == "PING": self.conn.send("PONG %s\r\n" % line[1]) elif len(line) == 4: if line[3] == ":!status": ret = space_open() if ret: self.conn.send("PRIVMSG #ackspace :De space is open!\r\n") else: self.conn.send("PRIVMSG #ackspace :De space is dicht.\r\n") print "Sent response." if __name__ == '__main__': instance = IRC() instance.mainLoop()
Op dit moment draait het op de VPS van StefandeVries. Wellicht kan in de toekomst gezocht worden naar eigen hosting.