From 8b9ec4bdbaf4a6e06dfb6fbcd50ace349f109ec4 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Tue, 2 Sep 2025 07:53:53 +0200 Subject: [PATCH] Simplify channels parsing. --- ircplom/client.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/ircplom/client.py b/ircplom/client.py index 4c8130b..cdf28cd 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -602,8 +602,7 @@ class Client(ABC, ClientQueueMixin): def _match_msg(self, msg: IrcMessage) -> dict[str, Any]: 'Test .source, .verb, .params.' - tok_type = (str | _NickUserHost | tuple[str, ...] - | dict[str, str | _Channel]) + tok_type = str | _NickUserHost | tuple[str, ...] def param_match(ex_tok: str | MsgTok, msg_tok: str | list[str] ) -> Optional[tok_type | tuple[tok_type, ...]]: @@ -623,8 +622,7 @@ class Client(ABC, ClientQueueMixin): return msg_tok if ('.' in msg_tok and not set('@!') & set(msg_tok)) else None if ex_tok is MsgTok.CHANNEL: - return {'id': msg_tok, 'db': self._db.channels[msg_tok] - } if self._db.is_chan_name(msg_tok) else None + return msg_tok if self._db.is_chan_name(msg_tok) else None if ex_tok is MsgTok.NICKNAME: return (msg_tok if msg_tok[0] not in self._db.illegal_nick_firstchars @@ -692,9 +690,9 @@ class Client(ABC, ClientQueueMixin): key, data = _Dict.key_val_from_eq_str(item) self._db.isupport[key] = data elif ret['verb'] == '353': # RPL_NAMREPLY - ret['channel']['db'].add_from_namreply(ret['names']) + self._db.channels[ret['channel']].add_from_namreply(ret['names']) elif ret['verb'] == '366': # RPL_ENDOFNAMES - ret['channel']['db'].user_ids.complete() + self._db.channels[ret['channel']].user_ids.complete() elif ret['verb'] == '372': # RPL_MOTD self._db.motd.append(ret['line']) elif ret['verb'] == '376': # RPL_ENDOFMOTD @@ -733,7 +731,7 @@ class Client(ABC, ClientQueueMixin): elif ret['verb'] == 'ERROR': self.close() elif ret['verb'] == 'JOIN' and ret['joiner'] != self._db.users['me']: - ret['channel']['db'].append_nick(ret['joiner']) + self._db.channels[ret['channel']].append_nick(ret['joiner']) elif ret['verb'] == 'NICK': user_id = self._db.user_id(ret['named']) self._db.users[user_id].nick = ret['nick'] @@ -745,13 +743,13 @@ class Client(ABC, ClientQueueMixin): if 'sender' in ret: # not just server message kw |= {'sender': ret['sender'].nick, 'scope': LogScope.CHAT, 'target': (ret['sender'].nick if 'nick' in ret - else ret['channel']['id'])} + else ret['channel'])} self._log(ret['message'], out=False, **kw) elif ret['verb'] == 'PART': if ret['parter'] == self._db.users['me']: - del self._db.channels[ret['channel']['id']] + del self._db.channels[ret['channel']] else: - ret['channel']['db'].remove_nick(ret['parter']) + self._db.channels[ret['channel']].remove_nick(ret['parter']) elif ret['verb'] == 'PING': self.send(IrcMessage(verb='PONG', params=(ret['reply'],))) elif ret['verb'] == 'QUIT': -- 2.30.2