From b854910629d781f62a91ded46011c5c0eae6a438 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 11 Aug 2014 19:27:21 +0100 Subject: [PATCH] Added KOS lookup --- dropbot/bot.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/dropbot/bot.py b/dropbot/bot.py index 0ab2bc6..8a2aad8 100644 --- a/dropbot/bot.py +++ b/dropbot/bot.py @@ -15,6 +15,7 @@ class DropBot(ClientXMPP): self.rooms = kwargs.pop('rooms', []) self.nickname = kwargs.pop('nickname', 'Dropbot') self.cmd_prefix = kwargs.pop('cmd_prefix', '!') + self.kos_url = kwargs.pop('kos_url', 'http://kos.cva-eve.org/api/') super(DropBot, self).__init__(**kwargs) self.redis_conn = Redis() @@ -130,4 +131,34 @@ class DropBot(ClientXMPP): if len(imgs): return choice(imgs) + def cmd_kos(self, args, msg): + arg = ' '.join(args) + resp = requests.get(self.kos_url, params={ + 'c': 'json', + 'q': arg, + 'type': 'unit', + 'details': None + }) + if resp.status_code != requests.codes.ok: + return "Something went wrong (Error %s)" % resp.status_code + try: + data = resp.json() + except: + return "KOS API returned invalid data." + if data['message'] != 'OK': + return "KOS API returned an error." + if data['total'] == 0: + return "KOS returned no results (Not on KOS)" + + results = [] + for result in data['results']: + text = '{} ({}) - {}'.format( + result['label'], + result['type'], + 'KOS' if result['kos'] else 'Not KOS' + ) + results.append(text) + return '\n'.join(results) + +