diff options
| author | 2016-03-29 12:56:58 +0100 | |
|---|---|---|
| committer | 2016-03-29 12:56:58 +0100 | |
| commit | f943d63098a50746f4e470e403a991a4d9713030 (patch) | |
| tree | deeb98058917d0155227211d72576f0cbab28d3f /modules/karma.py | |
| parent | Initial commit (diff) | |
first commit.
Diffstat (limited to 'modules/karma.py')
| -rw-r--r-- | modules/karma.py | 41 |
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)) |
