summaryrefslogtreecommitdiffstats
path: root/ircbot/bot.py
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2013-02-07 20:26:15 +0100
committermakefu <github@syntax-fehler.de>2013-02-07 20:26:15 +0100
commitdd6ad821a5a5bcb633b28a6d35e5e612d1f59094 (patch)
tree51a5281d1cbba3423eb5e9a86eb16d847fac5a6e /ircbot/bot.py
parent12fa3df06555c4ad6973602998a42446fbb52e70 (diff)
parent41fb505a5dc5c81965cc45dd00d14fe4150b8a42 (diff)
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'ircbot/bot.py')
-rwxr-xr-xircbot/bot.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/ircbot/bot.py b/ircbot/bot.py
new file mode 100755
index 00000000..607e65c7
--- /dev/null
+++ b/ircbot/bot.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python
+import irc.bot
+import feedparser
+import _thread
+import math
+from time import sleep
+
+class TestBot(irc.bot.SingleServerIRCBot):
+ def __init__(self, rss, name, server='10.243.231.66', port=6667, chan='#news', timeout=60):
+ irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name)
+ self.url = rss
+ self.feed = feedparser.parse(self.url)
+ self.name = name
+ self.server = server
+ self.port = port
+ self.chan = chan
+ self.to = timeout
+ self.oldnews = []
+ self.sendqueue = []
+ for entry in self.feed.entries:
+ self.sendqueue.append(entry.title + " " + entry.link)
+ self.oldnews.append(entry.link)
+
+ def start(self):
+ self.upd_thread = _thread.start_new_thread(self.updateloop, ())
+ self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,))
+
+
+ def updateloop(self):
+ while True:
+ sleep(self.to)
+ self.feed = feedparser.parse(self.url)
+ for entry in self.feed.entries:
+ if not entry.link in self.oldnews:
+ self.send(entry.title + " " + entry.link)
+ self.oldnews.append(entry.link)
+
+ def sendall(self):
+ while len(self.sendqueue) > 0:
+ sleep(1)
+ self.send(self.sendqueue.pop())
+
+ def send(self, string):
+ if len(string) < 450:
+ self.connection.privmsg(self.chan, string)
+ else:
+ for x in range(math.ceil(len(string)/450)):
+ self.connection.privmsg(self.chan, string[x*450:(x+1)*450])
+ sleep(1)
+
+
+ def on_welcome(self, connection, event):
+ connection.join(self.chan)
+
+# def on_privmsg(self, connection, event):
+# print event.source().split('!')[0], event.arguments()
+
+F = open("feeds", "r")
+lines = F.readlines()
+F.close()
+
+botarray = []
+for line in lines:
+ lineArray = line.split('|')
+ bot = TestBot(lineArray[1], lineArray[0])
+ #bot.start()
+ botarray.append(bot)
+
+def startall():
+ for bot in botarray:
+ bot.start()