add cmask command spec type (all users in channel matching mask)

This commit is contained in:
jesopo 2020-02-17 10:16:22 +00:00
parent d5f0cb5f3d
commit 331f966c01

View file

@ -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: