From: Christian Heller Date: Thu, 25 Sep 2025 23:39:24 +0000 (+0200) Subject: On /reconnect auto-join channels we were in on last connection close. X-Git-Url: https://plomlompom.com/repos/?a=commitdiff_plain;h=09f352345534c6427fa4a586a07bd0ed8d79133a;p=ircplom On /reconnect auto-join channels we were in on last connection close. --- diff --git a/src/ircplom/client.py b/src/ircplom/client.py index d0bc4b8..b2eca33 100644 --- a/src/ircplom/client.py +++ b/src/ircplom/client.py @@ -821,6 +821,7 @@ class Client(ABC, ClientQueueMixin): self.db.port = PORT_SSL if not self.db.user_wanted: self.db.user_wanted = getuser() + self._autojoins: set[str] = set() def connect(self) -> None: 'Attempt to open connection, on success perform session init steps.' @@ -847,6 +848,9 @@ class Client(ABC, ClientQueueMixin): def close(self) -> None: 'Close connection and wipe memory of its states.' + if not self._autojoins: + for name in self.db.channels.keys(): + self._autojoins.add(name) self.db.clear() if self.conn: self.conn.close() @@ -907,7 +911,11 @@ class Client(ABC, ClientQueueMixin): setattr(node, tok_name, ret[tok_name]) else: getattr(node, tok_name)() - if ret['_verb'] == '005': # RPL_ISUPPORT + if ret['_verb'] == '001': # RPL_WELCOME + for name in self._autojoins: + self.send('JOIN', name) + self._autojoins.clear() + elif ret['_verb'] == '005': # RPL_ISUPPORT for item in ret['isupport']: if item[0] == '-': del self.db.isupport[item[1:]] diff --git a/src/test.txt b/src/test.txt index ba4f473..7c1c154 100644 --- a/src/test.txt +++ b/src/test.txt @@ -437,7 +437,9 @@ > /reconnect repeat 63:65 2,3,4,5,6,7 $ CONNECTED -repeat 66:158 +repeat 66:120 +1 > JOIN :#testtest +repeat 120:158 repeat 168:382 > /quit