for verb in ('setattr', 'do', 'doafter'):
for task, tok_names in [t for t in ret['_tasks'].items()
if t[0].verb == verb]:
- node = self
+ node: Any = self
for step in task.path:
key = ret[step] if step.isupper() else step
node = (node[key] if isinstance(node, Dict)
for tok_name in tok_names:
if task.verb == 'setattr':
setattr(node, tok_name, ret[tok_name])
+ elif tok_name:
+ node(ret[tok_name])
else:
- getattr(node, tok_name)()
+ node()
if ret['_verb'] == '001': # RPL_WELCOME
for name in self._autojoins:
self.send('JOIN', name)
else:
key, data = _Dict.key_val_from_eq_str(item)
self.db.isupport[key] = data
- elif ret['_verb'] == '353': # RPL_NAMREPLY
- self.db.channels[ret['channel']].add_from_namreply(ret['names'])
- elif ret['_verb'] == '372': # RPL_MOTD
- self.db.motd.append(ret['line'])
elif ret['_verb'] == '401': # ERR_NOSUCHNICK
raise TargetUserOffline(ret['missing'])
elif ret['_verb'] == '432': # ERR_ERRONEOUSNICKNAME
'372', # RPL_MOTD
_MsgTok.SERVER,
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
- (_MsgTok.ANY, ':line'))),
+ (_MsgTok.ANY, 'do_db.motd.append:line'))),
_MsgParseExpectation(
'376', # RPL_ENDOFMOTD
_MsgTok.SERVER,
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
_MsgTok.ANY), # comment
- bonus_tasks=('do_db.motd:complete',)),
+ bonus_tasks=('do_db.motd.complete:',)),
_MsgParseExpectation(
'396', # RPL_VISIBLEHOST
_MsgTok.SERVER,
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
(_MsgTok.ANY, 'setattr_db:sasl_auth_state')),
- bonus_tasks=('do_caps:end_negotiation',)),
+ bonus_tasks=('do_caps.end_negotiation:',)),
_MsgParseExpectation(
'904', # ERR_SASLFAIL
_MsgTok.SERVER,
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
(_MsgTok.ANY, 'setattr_db:sasl_auth_state')),
- bonus_tasks=('do_caps:end_negotiation',)),
+ bonus_tasks=('do_caps.end_negotiation:',)),
_MsgParseExpectation(
'AUTHENTICATE',
(_MsgTok.NICK_USER_HOST,
'skipnuh_,setattr_db.channels.CHAN.topic:who'),
(_MsgTok.ANY, ':timestamp')),
- bonus_tasks=('doafter_db.channels.CHAN.topic:complete',)),
+ bonus_tasks=('doafter_db.channels.CHAN.topic.complete:',)),
_MsgParseExpectation(
'353', # RPL_NAMREPLY
_MsgTok.SERVER,
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
'@',
- (_MsgTok.CHANNEL, ':channel'),
- (_MsgTok.LIST, ':names'))),
+ (_MsgTok.CHANNEL, ':CHANNEL'),
+ (_MsgTok.LIST, 'do_db.channels.CHANNEL.add_from_namreply:names'))),
_MsgParseExpectation(
'353', # RPL_NAMREPLY
_MsgTok.SERVER,
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
'=',
- (_MsgTok.CHANNEL, ':channel'),
- (_MsgTok.LIST, ':names'))),
+ (_MsgTok.CHANNEL, ':CHANNEL'),
+ (_MsgTok.LIST, 'do_db.channels.CHANNEL.add_from_namreply:names'))),
_MsgParseExpectation(
'366', # RPL_ENDOFNAMES
((_MsgTok.NICKNAME, 'setattr_db.users.me:nick'),
(_MsgTok.CHANNEL, ':CHAN'),
_MsgTok.ANY), # comment
- bonus_tasks=('doafter_db.channels.CHAN.user_ids:complete',)),
+ bonus_tasks=('doafter_db.channels.CHAN.user_ids.complete:',)),
_MsgParseExpectation(
'JOIN',
'ERROR',
_MsgTok.NONE,
((_MsgTok.ANY, 'setattr_db:connection_state'),),
- bonus_tasks=('doafter_:close',)),
+ bonus_tasks=('doafter_close:',)),
_MsgParseExpectation(
'PING',
(_MsgTok.NICK_USER_HOST, 'setattr_db.channels.CHAN.topic:who'),
((_MsgTok.CHANNEL, ':CHAN'),
(_MsgTok.ANY, 'setattr_db.channels.CHAN.topic:what')),
- bonus_tasks=('doafter_db.channels.CHAN.topic:complete',)),
+ bonus_tasks=('doafter_db.channels.CHAN.topic.complete:',)),
_MsgParseExpectation(
'QUIT',