summaryrefslogtreecommitdiffstats
path: root/ircbot/contoller.py
diff options
context:
space:
mode:
authorlassulus <lassulus@googlemail.com>2014-01-05 14:55:17 +0100
committerlassulus <lassulus@googlemail.com>2014-01-05 14:55:17 +0100
commit8c9e76b443adc2cd33a65dddd7ac00a39b64f26f (patch)
tree1a1c19696f18e578e7e4db7a70b6a4526a372f61 /ircbot/contoller.py
parentfbf323d3866d524ad9b6e6028247adb746f52dde (diff)
ircbot: refactor and more features
Diffstat (limited to 'ircbot/contoller.py')
-rwxr-xr-xircbot/contoller.py112
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'