summaryrefslogtreecommitdiffstats
path: root/ircbot/bot.py
diff options
context:
space:
mode:
Diffstat (limited to 'ircbot/bot.py')
-rwxr-xr-xircbot/bot.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/ircbot/bot.py b/ircbot/bot.py
new file mode 100755
index 00000000..25a1014f
--- /dev/null
+++ b/ircbot/bot.py
@@ -0,0 +1,81 @@
+#!/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:
+ try:
+ self.sendqueue.append(entry.title + " " + entry.link + " com: " + entry.comments)
+ except AttributeError:
+ 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:
+ try:
+ self.send(entry.title + " " + entry.link + " com: " + entry.comments)
+ except AttributeError:
+ 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:
+ space = 0
+ for x in range(math.ceil(len(string)/400)):
+ oldspace = space
+ space = string.find(" ", (x+1)*400, (x+1)*400+50)
+ self.connection.privmsg(self.chan, string[oldspace:space])
+ 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()