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