From a9e166fdac6358d0663d58198cb07c3b855f7b1c Mon Sep 17 00:00:00 2001 From: jesopo Date: Sat, 11 Jan 2020 22:10:57 +0000 Subject: add !maskfind to search for nicks that used a given hostmask --- modules/hostmask_tracking.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'modules/hostmask_tracking.py') diff --git a/modules/hostmask_tracking.py b/modules/hostmask_tracking.py index 73b95349..05981e5b 100644 --- a/modules/hostmask_tracking.py +++ b/modules/hostmask_tracking.py @@ -1,6 +1,8 @@ from src import ModuleManager, utils class Module(ModuleManager.BaseModule): + _name = "Hostmasks" + @utils.hook("new.user") def new_user(self, event): userhost = event["user"].userhost() @@ -9,3 +11,26 @@ class Module(ModuleManager.BaseModule): if not userhost in known_hostmasks: known_hostmasks.append(userhost) event["user"].set_setting("known-hostmasks", known_hostmasks) + + @utils.hook("received.command.maskfind") + @utils.kwarg("min_args", 1) + @utils.kwarg("private_only", True) + @utils.kwarg("help", "Find all nicknames that used a given hostmask") + @utils.kwarg("usage", "") + @utils.kwarg("permission", "maskfind") + def maskfind(self, event): + all_userhosts = event["server"].get_all_user_settings("known-hostmasks") + nicknames = set([]) + hostmask_str = event["args_split"][0] + hostmask = utils.irc.hostmask_parse(hostmask_str) + + for nickname, userhosts in all_userhosts: + for userhost in userhosts: + if hostmask.match(userhost): + nicknames.add(nickname) + + if nicknames: + event["stdout"].write("%s: %s" % + (hostmask_str, ", ".join(sorted(nicknames)))) + else: + event["stderr"].write("Hostmask not found") -- cgit v1.3.1-10-gc9f91