def whois_channels(self, event): user = self.get_user(event.line.params[1]) if not user: return isupport = self.get_extension("ISupport") prefix = prefix_parse(isupport.get("PREFIX")) for channel in event.line.params[-1].split(): mode = set() mode, channel = status_prefix_parse(channel, prefix) user.channels[channel] = mode
def whois_channels(self, _, line): """Update a user's channel set.""" user = self.get_user(line.params[1]) if not user: return isupport = self.base.isupport prefix = prefix_parse(isupport.get("PREFIX")) for channel in line.params[-1].split(): mode = set() mode, channel = status_prefix_parse(channel, prefix) user.channels[channel] = mode
def names(self, event): line = event.line params = line.params target = params[2] isupport = self.get_extension("ISupport") prefix = prefix_parse(isupport.get("PREFIX")) logger.debug("params=%r", params) for nick in params[-1].split(' '): modes, nick = status_prefix_parse(nick, prefix) logger.debug("NAMES: %s", nick) for mode in modes: # TODO - aggregation self.call_event("modes", "mode_prefix", line, line.hostmask, target, True, mode, nick)
def names(self, _, line): """Handle bursting of new users from NAMES.""" params = line.params channel = params[2] isupport = self.base.isupport prefix = prefix_parse(isupport.get("PREFIX")) for hostmask in params[3].split(' '): if not hostmask: continue modes, hostmask = status_prefix_parse(hostmask, prefix) hostmask = Hostmask.parse(hostmask) modes = [(m, hostmask, True, None) for m in modes] scope = Scope( hostmask, channel, False, cause=line.hostmask, modes=modes) self.call_event("scope", "user_burst", scope)