diff --git a/plugins/Karma.py b/plugins/Karma.py index c5e0e39f7..84633f962 100644 --- a/plugins/Karma.py +++ b/plugins/Karma.py @@ -71,7 +71,10 @@ class Karma(callbacks.PrivmsgCommandAndRegexp, 1')"""), ('karma-response', configurable.BoolType, False, """Determines whether the bot will reply with a success message when - something's karma is increased or decreased."""),] + something's karma is increased or decreased."""), + ('karma-ranking-display', configurable.IntType, 3, + """Determines how many highest/lowest karma things are shown when + karms is called with no arguments."""),] ) def __init__(self): callbacks.PrivmsgCommandAndRegexp.__init__(self) @@ -160,15 +163,16 @@ class Karma(callbacks.PrivmsgCommandAndRegexp, irc.reply(msg, 'I didn\'t know the karma for any ' 'of those things.') else: # No name was given. Return the top/bottom 3 karmas. + limit = self.configurables.get('karma-ranking-display', channel) cursor.execute("""SELECT name, added-subtracted FROM karma ORDER BY added-subtracted DESC - LIMIT 3""") + LIMIT %s""", limit) highest = ['%r (%s)' % (t[0], t[1]) for t in cursor.fetchall()] cursor.execute("""SELECT name, added-subtracted FROM karma ORDER BY added-subtracted ASC - LIMIT 3""") + LIMIT %s""", limit) lowest = ['%r (%s)' % (t[0], t[1]) for t in cursor.fetchall()] if not (highest and lowest): irc.error(msg, 'I have no karma for this channel.') diff --git a/test/test_Karma.py b/test/test_Karma.py index 56ac9c158..173503afa 100644 --- a/test/test_Karma.py +++ b/test/test_Karma.py @@ -68,6 +68,32 @@ if sqlite is not None: self.assertRegexp('karma MoO', 'Karma for \'MoO\'.*increased 1.*total.*1') + def testKarmaRankingDisplayConfigurable(self): + self.assertNotError('karma config karma-response on') + self.assertNotError('foo++') + self.assertNotError('foo++') + self.assertNotError('foo++') + self.assertNotError('foo++') + self.assertNotError('bar++') + self.assertNotError('bar++') + self.assertNotError('bar++') + self.assertNotError('baz++') + self.assertNotError('baz++') + self.assertNotError('quux++') + self.assertNotError('xuuq--') + self.assertNotError('zab--') + self.assertNotError('zab--') + self.assertNotError('rab--') + self.assertNotError('rab--') + self.assertNotError('rab--') + self.assertNotError('oof--') + self.assertNotError('oof--') + self.assertNotError('oof--') + self.assertNotError('oof--') + self.assertRegexp('karma', 'foo.*bar.*baz.*oof.*rab.*zab') + self.assertNotError('karma config karma-ranking-display 4') + self.assertRegexp('karma', 'foo.*bar.*baz.*quux') + def testMost(self): self.assertError('most increased') self.assertError('most decreased')