aboutsummaryrefslogtreecommitdiff
path: root/modules/karma.py
diff options
context:
space:
mode:
authorGravatar jesopo2016-03-29 12:56:58 +0100
committerGravatar jesopo2016-03-29 12:56:58 +0100
commitf943d63098a50746f4e470e403a991a4d9713030 (patch)
treedeeb98058917d0155227211d72576f0cbab28d3f /modules/karma.py
parentInitial commit (diff)
first commit.
Diffstat (limited to 'modules/karma.py')
-rw-r--r--modules/karma.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/modules/karma.py b/modules/karma.py
new file mode 100644
index 00000000..99533e37
--- /dev/null
+++ b/modules/karma.py
@@ -0,0 +1,41 @@
+import re, time
+
+REGEX_KARMA = re.compile("(.*)(\+{2,}|\-{2,})")
+KARMA_DELAY_SECONDS = 3
+
+class Module(object):
+ def __init__(self, bot):
+ bot.events.on("new").on("user").hook(self.new_user)
+ bot.events.on("received").on("message").on("channel").hook(
+ self.channel_message)
+ bot.events.on("received").on("command").on("karma").hook(
+ self.karma)
+
+ def new_user(self, event):
+ event["user"].last_karma = None
+
+ def channel_message(self, event):
+ match = re.match(REGEX_KARMA, event["message"])
+ if match:
+ if not event["user"].last_karma or (time.time()-event["user"
+ ].last_karma) >= KARMA_DELAY_SECONDS:
+ positive = match.group(2)[0] == "+"
+ setting = "karma-%s" % match.group(1).strip()
+ karma = event["server"].get_setting(setting, 0)
+ if positive:
+ karma += 1
+ else:
+ karma -= 1
+ if karma:
+ event["server"].set_setting(setting, karma)
+ else:
+ event["server"].del_setting(setting)
+ event["user"].last_karma = time.time()
+
+ def karma(self, event):
+ if event["args"]:
+ target = event["args"]
+ else:
+ target = event["user"].nickname
+ karma = event["server"].get_setting("karma-%s" % target, 0)
+ event["stdout"].write("%s has %s karma" % (target, karma))