diff options
author | lassulus <lassulus@googlemail.com> | 2014-01-05 14:55:17 +0100 |
---|---|---|
committer | lassulus <lassulus@googlemail.com> | 2014-01-05 14:55:17 +0100 |
commit | 8c9e76b443adc2cd33a65dddd7ac00a39b64f26f (patch) | |
tree | 1a1c19696f18e578e7e4db7a70b6a4526a372f61 /ircbot/contoller.py | |
parent | fbf323d3866d524ad9b6e6028247adb746f52dde (diff) |
ircbot: refactor and more features
Diffstat (limited to 'ircbot/contoller.py')
-rwxr-xr-x | ircbot/contoller.py | 112 |
1 files changed, 68 insertions, 44 deletions
diff --git a/ircbot/contoller.py b/ircbot/contoller.py index cacb81e8..b3938b63 100755 --- a/ircbot/contoller.py +++ b/ircbot/contoller.py @@ -12,8 +12,8 @@ class NewsBot(irc.bot.SingleServerIRCBot): self.chan = chan self.to = timeout -# def start(self): -# self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,)) + def start(self): + self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,)) # def send(self, string): # if len(string) < 450: @@ -30,60 +30,27 @@ class NewsBot(irc.bot.SingleServerIRCBot): def on_welcome(self, connection, event): connection.join(self.chan) + def send(self, string): + for line in string.split('\n'): + self.connection.privmsg(self.chan, line) + sleep(1) + def on_privmsg(self, connection, event): args_array = event.arguments[0].split() if args_array[0][:-1]==self.name: answer = self.read_message(args_array[1:]) self.send(answer) - def send(self, string): - for line in string.split('\n'): - self.connection.privmsg(self.chan, line) - sleep(0.5) - def on_pubmsg(self, connection, event): self.on_privmsg(connection, event) def read_message(self, args): 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]].stop() - del bots[args[1]] - 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 - elif args[0] == 'caps': - return "add del save caps list" - - elif args[0] == 'list': - output_buffer = '' - for bot in bots: - output_buffer += bot + ' url: ' + bots[bot].url + '\n' - return output_buffer - - elif args[0] == 'info': - if args[1] in bots: - return 'title: ' + bots[args[1]].feed.feed.title + '\n' + 'size: ' + len(bots[args[1]].feed.entries) - else: - return 'bot not found' - + if args[0] in [x for x in commands.__dict__.keys() if x.find('_')]: + func = getattr(commands, args[0]) + return func(args) else: - return "unknown command" + return 'command not found' except: return "mimimimi" @@ -105,3 +72,60 @@ for line in lines: bots[linear[0]] = bot knews.start() + + +class commands(): + def add(args): + bot = rssbot.RssBot(args[2], args[1]) + bots[args[1]] = bot + bot.start() + return "bot " + args[1] + " added" + + def delete(args): + bots[args[1]].stop() + del bots[args[1]] + return "bot " + args[1] + " deleted" + + def rename(args): + if args[1] in bots: + if args[2] in bots: + return args[2] + ' already taken' + else: + bots[args[1]].connection.nick(args[2]) + bots[args[1]].name = args[2] + bots[args[2]] = bots[args[1]] + del bots[args[1]] + return 'renamed ' + args[1] + ' in ' + args[2] + else: + return args[1] + ' does not exist' + + def save(args): + 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 + + def caps(args): + return ' '.join([x for x in commands.__dict__.keys() if x.find('_')]) + + def list(args): + output_buffer = '' + for bot in bots: + output_buffer += bot + ' url: ' + bots[bot].url + '\n' + return output_buffer + + def info(args): + if args[1] in bots: + output_buffer = '' + for data in ['title', 'link', 'updated']: + if data in bots[args[1]].feed.feed: + output_buffer += data + ': ' + bots[args[1]].feed.feed[data] + '\n' + print(output_buffer) + return output_buffer + else: + return 'bot not found' |