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: