diff options
| author | 2019-06-20 11:51:04 +0100 | |
|---|---|---|
| committer | 2019-06-20 11:51:04 +0100 | |
| commit | 282bde82c539e1caf80f423754b5023974dd1ec9 (patch) | |
| tree | 632e651e5c8f65da571751f48137040427834ac6 /modules/ignore.py | |
| parent | Update CHANGELOG.md (diff) | |
Move !ignore logic to it's own file
Diffstat (limited to 'modules/ignore.py')
| -rw-r--r-- | modules/ignore.py | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/modules/ignore.py b/modules/ignore.py new file mode 100644 index 00000000..9acd725a --- /dev/null +++ b/modules/ignore.py @@ -0,0 +1,101 @@ +from src import ModuleManager, utils + +class Module(ModuleManager.BaseModule): + def _user_ignored(self, user): + return user.get_setting("ignore", False) + def _user_command_ignored(self, user, command): + return user.get_setting("ignore-%s" % command, False) + def _server_command_ignored(self, server, command): + return server.get_setting("ignore-%s" % command, False) + + @utils.hook("received.message.private") + @utils.hook("received.message.channel") + def message(self, event): + if self._user_ignored(event["user"]): + event.eat() + + @utils.hook("preprocess.command") + def preprocess_command(self, event): + if self._user_command_ignored(event["user"], event["command"]): + return utils.consts.PERMISSION_HARD_FAIL + elif self._server_command_ignored(event["server"], event["command"]): + return utils.consts.PERMISSION_HARD_FAIL + + @utils.hook("received.command.ignore", min_args=1) + def ignore(self, event): + """ + :help: Ignore commands from a given user + :usage: <nickname> [command] + :permission: ignore + """ + setting = "ignore" + for_str = "" + if len(event["args_split"]) > 1: + command = event["args_split"][1].lower() + setting = "ignore-%s" % command + for_str = " for '%s'" % command + + user = event["server"].get_user(event["args_split"][0]) + if user.get_setting(setting, False): + event["stderr"].write("I'm already ignoring '%s'%s" % + (user.nickname, for_str)) + else: + user.set_setting(setting, True) + event["stdout"].write("Now ignoring '%s'%s" % + (user.nickname, for_str)) + + @utils.hook("received.command.unignore", min_args=1) + def unignore(self, event): + """ + :help: Unignore commands from a given user + :usage: <nickname> [command] + :permission: unignore + """ + setting = "ignore" + for_str = "" + if len(event["args_split"]) > 1: + command = event["args_split"][1].lower() + setting = "ignore-%s" % command + for_str = " for '%s'" % command + + user = event["server"].get_user(event["args_split"][0]) + if not user.get_setting(setting, False): + event["stderr"].write("I'm not ignoring '%s'%s" % + (user.nickname, for_str)) + else: + user.del_setting(setting) + event["stdout"].write("Removed ignore for '%s'%s" % + (user.nickname, for_str)) + + @utils.hook("received.command.serverignore", in_args=1) + def server_ignore(self, event): + """ + :permission: server-ignore + """ + command = event["args_split"][0].lower() + setting = "ignore-%s" % command + + if event["server"].get_setting(setting, False): + event["stderr"].write("I'm already ignoring '%s' for %s" % + (command, str(event["server"]))) + else: + event["server"].set_setting(setting, True) + event["stdout"].write("Now ignoring '%s' for %s" % + (command, str(event["server"]))) + + @utils.hook("received.command.serverunignore", in_args=1) + def server_unignore(self, event): + """ + :permission: server-unignore + """ + command = event["args_split"][0].lower() + setting = "ignore-%s" % command + + if not event["server"].get_setting(setting, False): + event["stderr"].write("I'm not ignoring '%s' for %s" % + (command, str(event["server"]))) + else: + event["server"].del_setting(setting) + event["stdout"].write("No longer ignoring '%s' for %s" % + (command, str(event["server"]))) + |
