home · contact · privacy
Also parse NOTICEs into chat and server messages.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 13 Aug 2025 06:23:17 +0000 (08:23 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 13 Aug 2025 06:23:17 +0000 (08:23 +0200)
ircplom/client.py
ircplom/client_tui.py

index 0d8b2cd5871a4cb26df2c4424d422fb13247cb51..c62608b84c628113e7348fd7d16a1ebeb75d7193 100644 (file)
@@ -312,6 +312,11 @@ class Client(ABC, ClientQueueMixin):
                 self.close()
             case '001' | 'NICK':
                 self._update_db('nickname', value=msg.params[0], confirm=True)
+            case 'NOTICE' | 'PRIVMSG':
+                scope = LogScope.CHAT if '!' in msg.source else LogScope.SERVER
+                self._log(msg.params[-1], scope=scope, channel=msg.params[0],
+                          out=False, is_notice=msg.verb == 'NOTICE',
+                          sender=msg.nick_from_source)
             case 'PRIVMSG':
                 self._log(msg.params[-1], scope=LogScope.CHAT, out=False,
                           sender=msg.nick_from_source, channel=msg.params[0])
index 8dc36de38b09994e0e207ea7c619b592a29b10d4..c209f00dc538292bb810b773b546862729d3fb64 100644 (file)
@@ -152,15 +152,17 @@ class _ClientWindowsManager:
 
     def log(self, msg: str, scope: LogScope, **kwargs) -> None:
         'From parsing scope, kwargs, build prefix before sending to logger.'
-        prefix = ''
-        if 'out' in kwargs:
-            prefix += _LOG_PREFIX_OUT if kwargs['out'] else _LOG_PREFIX_IN
+        first_char = '$'
+        sender_label = ''
+        if 'out' in kwargs and scope != LogScope.SERVER:
+            first_char = _LOG_PREFIX_OUT if kwargs['out'] else _LOG_PREFIX_IN
             if scope == LogScope.CHAT:
                 nickname = (self._db.nickname if kwargs['out']
                             else kwargs['sender'])
-                prefix += f' [{nickname}]'
-        else:
-            prefix += _LOG_PREFIX_SERVER
+                sender_label = f' [{nickname}]'
+        if kwargs.get('is_notice', False):
+            first_char *= 3
+        prefix = f'{first_char}{sender_label}'
         self._tui_log(msg, scope=scope, prefix=prefix, **kwargs)
 
     def update(self, key: str, value: str, confirmed: bool, scope: LogScope