From 74fc24dcc8feb7824737dd82216191a793620614 Mon Sep 17 00:00:00 2001 From: Bruce Cowan <bruce@bcowan.me.uk> Date: Fri, 13 Apr 2018 17:51:46 +0100 Subject: [PATCH] Add karma top and bottom --- .gitlab-ci.yml | 2 +- karma.py | 22 ++++++++++++++++++++++ test_karma.py | 9 +++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 52d4150..ccc7e8e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ check: stage: test script: - pip install flake8 - - flake8 karma.py + - flake8 karma.py --max-line-length 120 test: stage: test diff --git a/karma.py b/karma.py index 885fa97..ccfc1de 100644 --- a/karma.py +++ b/karma.py @@ -55,3 +55,25 @@ class Karma(BotPlugin): return "**Usage**: !karma <target>" return "Karma for '{}' is {}".format(args, self.karma[args]) + + @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] + + return ", ".join(["{}: {}".format(k, v) for k, v in zip(keys, values)]) + + @botcmd + def karma_bottom(self, message, args): + """Gets the bottom 5 karmaed items""" + 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] + + return ", ".join(["{}: {}".format(k, v) for k, v in zip(keys, values)]) diff --git a/test_karma.py b/test_karma.py index 5935ed0..40382fc 100644 --- a/test_karma.py +++ b/test_karma.py @@ -23,3 +23,12 @@ def test_regex(testbot): testbot.assertCommand("test--", "Karma for 'test' is now 0") testbot.assertCommand("!karma test", "Karma for 'test' is 0") + +def test_top_bottom(testbot): + testbot.assertCommand("high++", "Karma for 'high' is now 1") + testbot.assertCommand("high++", "Karma for 'high' is now 2") + testbot.assertCommand("medium++", "Karma for 'medium' is now 1") + testbot.assertCommand("low--", "Karma for 'low' is now -1") + + testbot.assertCommand("!karma top", "high: 2, medium: 1, low: -1") + testbot.assertCommand("!karma bottom", "low: -1, medium: 1, high: 2") -- GitLab