docs: def handle_topic(self, params):
          """
          Handle a topic command.
          """
          channel_name, sep, topic = params.partition(' ')
  
          channel = self.server.channels.get(channel_name)
          if not channel:
              raise IRCError.from_name(
                  'nosuchnick', 'PRIVMSG :%s' % channel_name)
          if channel.name not in self.channels:
              # The user isn't in the channel.
              raise IRCError.from_name(
                  'cannotsendtochan',
                  '%s :Cannot send to channel' % channel.name)
  
          if topic:
              channel.topic = topic.lstrip(':')
              channel.topic_by = self.nick
          message = ':%s TOPIC %s :%s' % (
              self.client_ident(), channel_name,
              channel.topic)
          return message