pass
 
     @abstractmethod
-    def _log(self, msg: str, scope=LogScope.SERVER, **kwargs) -> None:
+    def _log(self, msg: str, scope: Optional[LogScope] = None, **kwargs
+             ) -> None:
         pass
 
     def send(self, verb: str, *args) -> None:
             if user_id == 'me':
                 self.db.nick_wanted = ret['nick']
         elif ret['_verb'] in {'NOTICE', 'PRIVMSG'}:
-            kw: dict[str, bool | str | LogScope] = {
-                    'as_notice': msg.verb == 'NOTICE'}
-            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'])}
-            self._log(ret['message'], out=False, **kw)
+            kw: dict[str, str | bool] = {'as_notice': ret['_verb'] == 'NOTICE'}
+            if (scope := LogScope.CHAT if 'sender' in ret else None):
+                kw['them'] = ret['sender'].nick
+                kw['target'] = kw['them'] if 'nick' in ret else ret['channel']
+            self._log(ret['message'], out=False, scope=scope, **kw)
         elif ret['_verb'] == 'PART':
             ret['parter'].part(ret['channel'], ret.get('message', ''))
             if ret['parter'] is self.db.users['me']:
 
             if scope == LogScope.CHAT:
                 sender_label = (
                         ' [' + (self.db.users['me'].nick if kwargs['out']
-                                else kwargs['sender'])
+                                else kwargs['them'])
                         + ']')
         if kwargs.get('as_notice', False):
             first_char *= 3
             if scope == LogScope.CHAT:
                 chatname = (kwargs['target']
                             if kwargs['target'] != m.db.users['me'].nick
-                            else kwargs['sender'])
+                            else kwargs['them'])
                 return [m.window(LogScope.CHAT, chatname=chatname)]
             if scope == LogScope.USER:
                 return m.windows_for_userid(kwargs['target'])
             return
         self._start_connecting()
 
-    def _log(self, msg: str, scope=LogScope.SERVER, **kwargs) -> None:
+    def _log(self, msg: str, scope: Optional[LogScope] = None, **kwargs
+             ) -> None:
         to_log = []
         if msg:
             to_log += [msg]
+        if not scope:
+            scope = LogScope.SERVER
         for item in to_log:
             self._client_tui_trigger('log', scope=scope, msg=item, **kwargs)
             if scope == LogScope.RAW: