From e9805644bc11a2dbffb20ea17fb9b7d4c4df0492 Mon Sep 17 00:00:00 2001
From: Bruce Cowan <bruce@bcowan.me.uk>
Date: Sat, 14 Apr 2018 16:07:23 +0100
Subject: [PATCH] Now able to set the number of top/bottom items to get

---
 karma.py      | 25 +++++++++++++++++++++----
 test_karma.py |  3 +++
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/karma.py b/karma.py
index 9a8f82d..41b4be2 100644
--- a/karma.py
+++ b/karma.py
@@ -60,14 +60,27 @@ class Karma(BotPlugin):
 
         return "Karma for '{}' is {}".format(args, self.karma[args])
 
+    def _get_num_from_args(self, args):
+        try:
+            num = int(args[0])
+            return num
+        except ValueError:
+            return None
+        except IndexError:
+            return 5
+
     @botcmd
     def karma_top(self, message, args):
         """Gets the top 5 karmaed items"""
         if not self.karma:
             return "There are no karmaed items"
 
-        keys = sorted(self.karma, key=self.karma.get, reverse=True)[:5]
-        values = sorted(self.karma.values(), reverse=True)[:5]
+        num = self._get_num_from_args(args)
+        if not num:
+            return "**Error**: Couldn't convert to an integer"
+
+        keys = sorted(self.karma, key=self.karma.get, reverse=True)[:num]
+        values = sorted(self.karma.values(), reverse=True)[:num]
 
         return ", ".join(["{}: {}".format(k, v) for k, v in zip(keys, values)])
 
@@ -77,7 +90,11 @@ class Karma(BotPlugin):
         if not self.karma:
             return "There are no karmaed items"
 
-        keys = sorted(self.karma, key=self.karma.get)[:5]
-        values = sorted(self.karma.values())[:5]
+        num = self._get_num_from_args(args)
+        if not num:
+            return "**Error**: Couldn't convert to an integer"
+
+        keys = sorted(self.karma, key=self.karma.get)[:num]
+        values = sorted(self.karma.values())[:num]
 
         return ", ".join(["{}: {}".format(k, v) for k, v in zip(keys, values)])
diff --git a/test_karma.py b/test_karma.py
index 40382fc..c9f5655 100644
--- a/test_karma.py
+++ b/test_karma.py
@@ -32,3 +32,6 @@ def test_top_bottom(testbot):
 
     testbot.assertCommand("!karma top", "high: 2, medium: 1, low: -1")
     testbot.assertCommand("!karma bottom", "low: -1, medium: 1, high: 2")
+
+    testbot.assertCommand("!karma top 1", "high: 2")
+    testbot.assertCommand("!karma top 2", "high: 2, medium: 1")
-- 
GitLab