karma stat command

added ability to get stats on a particular users karma
This commit is contained in:
Mike Bloy 2010-11-25 11:41:12 -06:00
parent a434c3738f
commit 30d49bcd5d
1 changed files with 27 additions and 1 deletions

View File

@ -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)