home · contact · privacy
Move topic handling into MSG_EXPECTATIONS, re-name variables for clarity of usage.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 3 Sep 2025 12:00:47 +0000 (14:00 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 3 Sep 2025 12:00:47 +0000 (14:00 +0200)
ircplom/client.py
ircplom/msg_parse_expectations.py

index fbdbb83250e00c5b8b1bc8379675706e88d54be6..3575b65f454e3f7559f87db9bcbf0aa69fcc211e 100644 (file)
@@ -752,14 +752,17 @@ class Client(ABC, ClientQueueMixin):
         if 'verb' not in ret:
             self._log(f'PLEASE IMPLEMENT HANDLER FOR: {msg.raw}')
             return
-        for task, args in ret['_tasks'].items():
-            for arg in args:
+        for task, tok_names in ret['_tasks'].items():
+            for tok_name in tok_names:
                 if task == 'set_db_attr':
-                    setattr(self._db, arg, ret[arg])
-                if task == 'set_me_attr':
-                    setattr(self._db.users['me'], arg, ret[arg])
-                if task == 'set_user':
-                    self._db.user_id(ret[arg])
+                    setattr(self._db, tok_name, ret[tok_name])
+                elif task == 'set_me_attr':
+                    setattr(self._db.users['me'], tok_name, ret[tok_name])
+                elif task == 'set_topic_attr':
+                    setattr(self._db.channels[ret['CHAN']].topic,
+                            tok_name, ret[tok_name])
+                elif task == 'set_user':
+                    self._db.user_id(ret[tok_name])
         if ret['verb'] == '005':   # RPL_ISUPPORT
             for item in ret['isupport']:
                 if item[0] == '-':
@@ -767,10 +770,6 @@ class Client(ABC, ClientQueueMixin):
                 else:
                     key, data = _Dict.key_val_from_eq_str(item)
                     self._db.isupport[key] = data
-        elif ret['verb'] == '332':  # RPL_TOPIC
-            self._db.channels[ret['channel']].topic.what = ret['topic']
-        elif ret['verb'] == '333':  # RPL_TOPICWHOTIME
-            self._db.channels[ret['channel']].topic.who = ret['author']
         elif ret['verb'] == '353':  # RPL_NAMREPLY
             self._db.channels[ret['channel']].add_from_namreply(ret['names'])
         elif ret['verb'] == '366':  # RPL_ENDOFNAMES
index 750c0aef81a01967b75f683c5898b22329291bf6..ecdc637d0074d8e0df069e0d0ea432221bd9830d 100644 (file)
@@ -256,13 +256,13 @@ MSG_EXPECTATIONS += [
     _MsgParseExpectation(MsgTok.SERVER,
                          '332',  # RPL_TOPIC
                          ((MsgTok.NICKNAME, 'set_me_attr:nick'),
-                          (MsgTok.CHANNEL, ':channel'),
-                          (MsgTok.ANY, ':topic'))),
+                          (MsgTok.CHANNEL, ':CHAN'),
+                          (MsgTok.ANY, 'set_topic_attr:what'))),
     _MsgParseExpectation(MsgTok.SERVER,
                          '333',  # RPL_TOPICWHOTIME
                          ((MsgTok.NICKNAME, 'set_me_attr:nick'),
-                          (MsgTok.CHANNEL, ':channel'),
-                          (MsgTok.NICK_USER_HOST, ':author'),
+                          (MsgTok.CHANNEL, ':CHAN'),
+                          (MsgTok.NICK_USER_HOST, 'set_topic_attr:who'),
                           (MsgTok.ANY, ':timestamp'))),
     _MsgParseExpectation(MsgTok.SERVER,
                          '353',  # RPL_NAMREPLY