mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-01 01:09:22 +01:00
parent
180da83b4e
commit
31a0d36990
14
classes.py
14
classes.py
@ -768,7 +768,8 @@ class PyLinkNetworkCoreWithUtils(PyLinkNetworkCore):
|
|||||||
# Band-aid patch here to prevent bad bans set by Janus forwarding people into invalid channels.
|
# Band-aid patch here to prevent bad bans set by Janus forwarding people into invalid channels.
|
||||||
return bool(cls._HOSTMASK_RE.match(text) and '#' not in text)
|
return bool(cls._HOSTMASK_RE.match(text) and '#' not in text)
|
||||||
|
|
||||||
def _parse_modes(self, args, existing, supported_modes, is_channel=False, prefixmodes=None):
|
def _parse_modes(self, args, existing, supported_modes, is_channel=False, prefixmodes=None,
|
||||||
|
ignore_missing_args=False):
|
||||||
"""
|
"""
|
||||||
parse_modes() core.
|
parse_modes() core.
|
||||||
|
|
||||||
@ -839,9 +840,10 @@ class PyLinkNetworkCoreWithUtils(PyLinkNetworkCore):
|
|||||||
log.debug('Mode %s: Only has parameter when setting.', mode)
|
log.debug('Mode %s: Only has parameter when setting.', mode)
|
||||||
arg = args.pop(0)
|
arg = args.pop(0)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
log.warning('(%s) Error while parsing mode %r: mode requires an '
|
logfunc = log.debug if ignore_missing_args else log.warning
|
||||||
'argument but none was found. (modestring: %r)',
|
logfunc('(%s) Error while parsing mode %r: mode requires an '
|
||||||
self.name, mode, modestring)
|
'argument but none was found. (modestring: %r)',
|
||||||
|
self.name, mode, modestring)
|
||||||
continue # Skip this mode; don't error out completely.
|
continue # Skip this mode; don't error out completely.
|
||||||
newmode = (prefix + mode, arg)
|
newmode = (prefix + mode, arg)
|
||||||
res.append(newmode)
|
res.append(newmode)
|
||||||
@ -851,7 +853,7 @@ class PyLinkNetworkCoreWithUtils(PyLinkNetworkCore):
|
|||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def parse_modes(self, target, args):
|
def parse_modes(self, target, args, ignore_missing_args=False):
|
||||||
"""Parses a modestring list into a list of (mode, argument) tuples.
|
"""Parses a modestring list into a list of (mode, argument) tuples.
|
||||||
['+mitl-o', '3', 'person'] => [('+m', None), ('+i', None), ('+t', None), ('+l', '3'), ('-o', 'person')]
|
['+mitl-o', '3', 'person'] => [('+m', None), ('+i', None), ('+t', None), ('+l', '3'), ('-o', 'person')]
|
||||||
"""
|
"""
|
||||||
@ -880,7 +882,7 @@ class PyLinkNetworkCoreWithUtils(PyLinkNetworkCore):
|
|||||||
prefixmodes = self._channels[target].prefixmodes
|
prefixmodes = self._channels[target].prefixmodes
|
||||||
|
|
||||||
return self._parse_modes(args, oldmodes, supported_modes, is_channel=is_channel,
|
return self._parse_modes(args, oldmodes, supported_modes, is_channel=is_channel,
|
||||||
prefixmodes=prefixmodes)
|
prefixmodes=prefixmodes, ignore_missing_args=ignore_missing_args)
|
||||||
|
|
||||||
def _apply_modes(self, old_modelist, changedmodes, is_channel=False,
|
def _apply_modes(self, old_modelist, changedmodes, is_channel=False,
|
||||||
prefixmodes=None):
|
prefixmodes=None):
|
||||||
|
@ -972,7 +972,10 @@ class ClientbotWrapperProtocol(IRCCommonProtocol):
|
|||||||
channel = args[1]
|
channel = args[1]
|
||||||
modes = args[2:]
|
modes = args[2:]
|
||||||
log.debug('(%s) Got RPL_CHANNELMODEIS (324) modes %s for %s', self.name, modes, channel)
|
log.debug('(%s) Got RPL_CHANNELMODEIS (324) modes %s for %s', self.name, modes, channel)
|
||||||
changedmodes = self.parse_modes(channel, modes)
|
|
||||||
|
# Sometimes IRCds suppress arguments to +lk, so ignore missing args
|
||||||
|
changedmodes = self.parse_modes(channel, modes, ignore_missing_args=True)
|
||||||
|
|
||||||
self.apply_modes(channel, changedmodes)
|
self.apply_modes(channel, changedmodes)
|
||||||
|
|
||||||
def handle_329(self, source, command, args):
|
def handle_329(self, source, command, args):
|
||||||
|
Loading…
Reference in New Issue
Block a user