home · contact · privacy
Simplify channels parsing.
authorChristian Heller <c.heller@plomlompom.de>
Tue, 2 Sep 2025 05:53:53 +0000 (07:53 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 2 Sep 2025 05:53:53 +0000 (07:53 +0200)
ircplom/client.py

index 4c8130b505d7651c543b2d54ce73c49951bc5fdd..cdf28cd4bbe9f17c50a7ede08de934d294d2bd11 100644 (file)
@@ -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':