home · contact · privacy
Catch /join, /part to check if possible via current in/outside-channel status.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 9 Nov 2025 23:40:14 +0000 (00:40 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 9 Nov 2025 23:40:14 +0000 (00:40 +0100)
src/ircplom/client_tui.py

index f44fdc34297c6e47d2cc8c75f877bab33ed4031f..90708bbbb8379fa28c29ae7ace0bee72c211321c 100644 (file)
@@ -101,7 +101,7 @@ class _ClientWindow(Window, ClientQueueMixin):
 
     def cmd__join(self, channel: str) -> None:
         'Attempt joining a channel.'
-        self._send_msg('JOIN', (channel,))
+        self._client_trigger('join', chan_name=channel)
 
     def cmd__privmsg(self, target: str, msg: str) -> None:
         'Send chat message msg to target.'
@@ -176,7 +176,7 @@ class _ChannelWindow(_ChatWindow):
 
     def cmd__part(self) -> None:
         'Attempt parting channel.'
-        self._send_msg('PART', (self.chatname,))
+        self._client_trigger('part', chan_name=self.chatname,)
 
 
 class _QueryWindow(_ChatWindow):
@@ -539,6 +539,20 @@ class ClientKnowingTui(Client):
             return
         self.connect()
 
+    def join(self, chan_name: str) -> None:
+        'Catch /join to complain if already in channel.'
+        if chan_name in self.db.channels.keys():
+            self._tui_alert_trigger('already in that channel')
+        else:
+            self.send('JOIN', chan_name)
+
+    def part(self, chan_name: str) -> None:
+        'Catch /part to complain if not in channel.'
+        if chan_name not in self.db.channels.keys():
+            self._tui_alert_trigger('not in that channel')
+        else:
+            self.send('PART', chan_name)
+
     def send(self, verb: str, *args) -> Optional[IrcMessage]:
         try:
             msg = super().send(verb, *args)