def _match_msg(self, msg: _IrcMsg, verb: str):
'Test .source, .verb, .params.'
for ex in [ex for ex in _EXPECTATIONS if verb == ex.verb == msg.verb]:
- to_return: dict[str, Any] = {'params': []}
+ to_return: dict[str, Any] = {'': ''}
if ex.source is _MsgSource.NONE:
if msg.source != '':
continue
continue
to_return['nickname_me'] = to_return['nickname']
elif exp_param is _MsgParam.ANY:
- to_return['params'] += [param]
+ to_return['any'] = param
elif len_params < ex.len_min_params:
continue
elif ex.len_max_params and len_params > ex.len_max_params:
ret['channel'].append_completable('users', ret['sender'],
stay_complete=True)
elif (ret := self._match_msg(msg, 'MODE')):
- self._db.user_modes = ret['params'][0]
+ self._db.user_modes = ret['any']
elif (ret := self._match_msg(msg, 'NICK')):
self.set_nick(ret['nickname'], confirmed=True)
elif (ret := self._match_msg(msg, 'NOTICE'))\
self._log(msg.params[-1], out=False, target=msg.params[0], **kw)
elif (ret := self._match_msg(msg, 'PART')):
log_msg = f'{ret["sender"]} {msg.verb.lower()}s {ret["ch_name"]}'
- log_msg += f': {ret["params"][0]}' if ret['params'] else ''
+ log_msg += f': {ret["any"]}' if 'any' in ret else ''
self._log(log_msg, scope=LogScope.CHAT, target=ret['ch_name'])
if 'sender_me' in ret:
self._db.del_chan(ret['ch_name'])
ret['channel'].remove_completable('users', ret['sender'],
stay_complete=True)
elif (ret := self._match_msg(msg, 'PING')):
- self.send(IrcMessage(verb='PONG', params=tuple(ret['params'])))
+ self.send(IrcMessage(verb='PONG', params=(ret['any'],)))
elif (ret := self._match_msg(msg, 'QUIT')):
for chan_name in self._db.chan_names:
chan = self._db.chan(chan_name)
if ret['sender'] in chan.users:
chan.remove_completable('users', ret['sender'],
stay_complete=True)
- self._log(f'{ret["sender"]} quits: {ret["params"][0]}',
+ self._log(f'{ret["sender"]} quits: {ret["any"]}',
scope=LogScope.CHAT, target=chan_name)
else:
self._log(f'PLEASE IMPLEMENT HANDLER FOR: {msg.raw}')