From 30d49bcd5d2fbf11fac91e6965317db23c310b9e Mon Sep 17 00:00:00 2001 From: Mike Bloy Date: Thu, 25 Nov 2010 11:41:12 -0600 Subject: [PATCH] karma stat command added ability to get stats on a particular users karma --- modules/Karma.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/modules/Karma.py b/modules/Karma.py index 5ea4fce..d992112 100644 --- a/modules/Karma.py +++ b/modules/Karma.py @@ -36,7 +36,7 @@ class Karma(Module): pattern = "(?:(\S+)|\((.+)\))" karmapattern = pattern + '(\+\+|--|\+-|-\+)' + '(\s+|$)' querypattern = '^rank\s+(.*)' - reportpattern = '^karma\s+report\s+(highest|lowest)' + reportpattern = '^karma\s+report\s+(highest|lowest|positive|negative)' statpattern = '^karma\s+stat\s+(.*)' self.karmare = re.compile(karmapattern) @@ -100,6 +100,8 @@ class Karma(Module): return self.handle_karma_change(connection, nick, userhost, replypath, what) elif (self.queryre.search(what)): return self.handle_karma_query(connection, nick, userhost, replypath, what) + elif (self.statre.search(what)): + return self.handle_stat_query(connection, nick, userhost, replypath, what) def handle_karma_change(self, connection, nick, userhost, replypath, what): """ @@ -135,6 +137,30 @@ class Karma(Module): except sqlite3.Error as e: conn.rollback() return self.reply(connection, replypath, "sqlite error: " + str(e)) + + def handle_stat_query(self, connection, nick, userhost, replypath, what): + match = self.statre.search(what) + statnick = match.group(1) + + conn = self.get_db() + reply = '{nick}: {statnick} has never given karma'.format(nick=nick, statnick=statnick) + try: + query = ''' + SELECT pos, neg + FROM karma_users + WHERE who = :who + ''' + value = conn.execute(query, {'who': statnick}).fetchone() + if (value != None): + pos = value[0] + neg = value[1] + total = pos+neg; + reply = '{nick}: {statnick} has given {pos} postive karma and {neg} negative karma, for a total of {total} karma'.format(nick=nick, statnick=statnick, pos=pos, neg=neg, total=total) + + except sqlite3.Error as e: + return self.reply(connection, replypath, "sqlite error: " + str(e)) + + return self.reply(connection, replypath, reply) def handle_karma_query(self, connection, nick, userhost, replypath, what): match = self.queryre.search(what)