From 331f966c017f2bc063e30d706b7c295b24a8c1ed Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 17 Feb 2020 10:16:22 +0000 Subject: [PATCH] add `cmask` command spec type (all users in channel matching mask) --- src/core_modules/command_spec/types.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core_modules/command_spec/types.py b/src/core_modules/command_spec/types.py index c39128dd..0baa13e8 100644 --- a/src/core_modules/command_spec/types.py +++ b/src/core_modules/command_spec/types.py @@ -1,4 +1,5 @@ from src.utils.parse import SpecTypeError +from src.utils.irc import hostmask_match, hostmask_parse TYPES = {} def _type(func): @@ -70,6 +71,19 @@ def nuser(server, channel, user, args): _assert_args(args, "user") return server.get_user(args[0], create=True), 1 +@_type +def cmask(server, channel, user, args): + _assert_args(args, "mask") + hostmask_obj = hostmask_parse(args[0]) + users = [] + for user in channel.users: + if hostmask_match(user.hostmask(), hostmask_obj): + users.append(user) + if users: + return users, 1 + else: + raise SpecTypeError("No users found") + @_type def lstring(server, channel, user, args): if args: