diff options
| author | 2019-05-18 18:35:47 +0100 | |
|---|---|---|
| committer | 2019-05-18 18:35:47 +0100 | |
| commit | 4e0e63e7f8b518190c94b6374e01291e9eda9f69 (patch) | |
| tree | c936e38c5d823508c9eb23ac8df1a0d23f063a3f /modules/karma.py | |
| parent | give EventCallbacks their event name (diff) | |
Hand over regex-based-command responsibilities to `commands` module
Diffstat (limited to 'modules/karma.py')
| -rw-r--r-- | modules/karma.py | 85 |
1 files changed, 35 insertions, 50 deletions
diff --git a/modules/karma.py b/modules/karma.py index 2f631889..c9266ef8 100644 --- a/modules/karma.py +++ b/modules/karma.py @@ -20,68 +20,53 @@ class Module(ModuleManager.BaseModule): return utils.irc.color(str(karma), utils.consts.LIGHTGREEN) return str(karma) - @utils.hook("new.user") def new_user(self, event): event["user"].last_karma = None - @utils.hook("received.message.channel") + @utils.hook("command.regex") def channel_message(self, event): - match = re.match(REGEX_KARMA, event["message"].strip()) - if match and not event["action"]: - is_ignored_f = self.exports.get_one("is-ignored", - lambda _1, _2: False) - if is_ignored_f(event["server"], event["user"], "karma"): - return + """ + :command: karma + :pattern: ^(.*[^-+])[-+]*(\+{2,}|\-{2,})$ + """ + verbose = event["target"].get_setting("karma-verbose", False) + nickname_only = event["server"].get_setting("karma-nickname-only", + False) - is_silenced_f = self.exports.get_one("is-silenced", lambda _: False) - if is_silenced_f(event["channel"]): + if not event["user"].last_karma or (time.time()-event["user" + ].last_karma) >= KARMA_DELAY_SECONDS: + target = event["match"].group(1).strip().rstrip("".join(WORD_STOP)) + if event["server"].irc_lower(target) == event["user"].name: + if verbose: + event["stdout"].write("You cannot change your own karma") return - verbose = event["channel"].get_setting("karma-verbose", False) - nickname_only = event["server"].get_setting("karma-nickname-only", - False) - - if not event["user"].last_karma or (time.time()-event["user" - ].last_karma) >= KARMA_DELAY_SECONDS: - target = match.group(1).strip().rstrip("".join(WORD_STOP)) - if event["server"].irc_lower(target) == event["user"].name: - if verbose: - self.events.on("send.stderr").call( - module_name="Karma", target=event["channel"], - message="You cannot change your own karma", - server=event["server"]) + setting = "karma-%s" % target + setting_target = event["server"] + if nickname_only: + user = event["server"].get_user(target) + setting = "karma" + setting_target = user + if not event["target"].has_user(user): return - setting = "karma-%s" % target - setting_target = event["server"] - if nickname_only: - user = event["server"].get_user(target) - setting = "karma" - setting_target = user - if not event["channel"].has_user(user): - return + positive = event["match"].group(2)[0] == "+" + karma = setting_target.get_setting(setting, 0) + karma += 1 if positive else -1 - positive = match.group(2)[0] == "+" - karma = setting_target.get_setting(setting, 0) - karma += 1 if positive else -1 + if not karma == 0: + setting_target.set_setting(setting, karma) + else: + setting_target.del_setting(setting) - if not karma == 0: - setting_target.set_setting(setting, karma) - else: - setting_target.del_setting(setting) - - karma_str = self._karma_str(karma) - if verbose: - self.events.on("send.stdout").call( - module_name="Karma", target=event["channel"], - message="%s now has %s karma" % (target, karma_str), - server=event["server"]) - event["user"].last_karma = time.time() - elif verbose: - self.events.on("send.stderr").call(module_name="Karma", - target=event["channel"], server=event["server"], - message="Try again in a couple of seconds") + karma_str = self._karma_str(karma) + if verbose: + event["stdout"].write( + "%s now has %s karma" % (target, karma_str)) + event["user"].last_karma = time.time() + elif verbose: + event["stderr"].write("Try again in a couple of seconds") @utils.hook("received.command.karma") def karma(self, event): |
