diff options
author | lassulus <lassulus@googlemail.com> | 2014-01-04 05:09:40 +0100 |
---|---|---|
committer | lassulus <lassulus@googlemail.com> | 2014-01-04 05:09:40 +0100 |
commit | 366f912a3771a1c5b92441ef7efed52541b33827 (patch) | |
tree | ccf436ee2e708d53b332a17be235f84730031de5 | |
parent | 2a730efca62a76d7344ad6bcaf0fa38acf925cdc (diff) |
ircbot: now with controller
-rwxr-xr-x | ircbot/contoller.py | 92 | ||||
-rw-r--r-- | ircbot/new_feeds | 2 | ||||
-rwxr-xr-x | ircbot/rssbot.py (renamed from ircbot/bot.py) | 30 |
3 files changed, 109 insertions, 15 deletions
diff --git a/ircbot/contoller.py b/ircbot/contoller.py new file mode 100755 index 00000000..5750551f --- /dev/null +++ b/ircbot/contoller.py @@ -0,0 +1,92 @@ +import irc.bot +import _thread +import rssbot +# +#def startall(): +# for bot in botarray: +# bot.start() + +class NewsBot(irc.bot.SingleServerIRCBot): + def __init__(self, name, server='ire', port=6667, chan='#news', timeout=60): + irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name) + self.name = name + self.server = server + self.port = port + self.chan = chan + self.to = timeout + + def start(self): + self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,)) + +# 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) + args_array = event.arguments[0].split() + print(args_array) + if args_array[0][:-1]==self.name: + answer = self.read_message(args_array[1:]) + self.connection.privmsg(self.chan, answer) + + + def on_pubmsg(self, connection, event): + self.on_privmsg(connection, event) + + def read_message(self, args): + print('reading message') + try: + if args[0] == 'add': + bot = rssbot.RssBot(args[2], args[1]) + bots[args[1]] = bot + bot.start() + return "bot " + args[1] + " added" + elif args[0] == 'del': + bots[args[1]].die() + del bots[args1] + return "bot " + args[1] + " deleted" + elif args[0] == 'save': + output_buffer = '' + for bot in bots: + output_buffer += bot + '|' + bots[bot].url + '\n' + + F = open(feedfile, "w") + F.writelines(output_buffer) + F.close() + + return "bots saved to " + feedfile + + + else: + return "unknown command" + except: + return "mimimimi" + +feedfile = 'new_feeds' + +bots = {} +knews = NewsBot('knews') +knews.start() + +#config file reading +F = open(feedfile, "r") +lines = F.readlines() +F.close() + +for line in lines: + linear = line.split('|') + bot = rssbot.RssBot(linear[1], linear[0]) + bot.start() + bots[linear[0]] = bot diff --git a/ircbot/new_feeds b/ircbot/new_feeds new file mode 100644 index 00000000..4931f3fd --- /dev/null +++ b/ircbot/new_feeds @@ -0,0 +1,2 @@ +fefe|http://blog.fefe.de/rss.xml +HN|http://news.ycombinator.com/rss diff --git a/ircbot/bot.py b/ircbot/rssbot.py index c9a7d027..40c4554a 100755 --- a/ircbot/bot.py +++ b/ircbot/rssbot.py @@ -5,7 +5,7 @@ import _thread import math from time import sleep -class TestBot(irc.bot.SingleServerIRCBot): +class RssBot(irc.bot.SingleServerIRCBot): def __init__(self, rss, name, server='ire', port=6667, chan='#news', timeout=60): irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name) self.url = rss @@ -65,17 +65,17 @@ class TestBot(irc.bot.SingleServerIRCBot): # 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() +#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() |