'Send to the remote peer a line formatted as an IRC message.
@param command: The command or numeric to send.
@type command: L{unicode}
@param parameters: The parameters to send with the command.
@type parameters: A L{tuple} or L{list} of L{unicode} parameters
@param prefix: The prefix to send with the command.  If not
given, no prefix is sent.
@type prefix: L{unicode}
@param tags: A dict of message tags.  If not given, no message
tags are sent.  The dict key should be the name of the tag
to send as a string; the value should be the unescaped value
to send with the tag, or either None or "" if no value is to
be sent with the tag.
@type tags: L{dict} of tags (L{unicode}) => values (L{unicode})
@see: U{https://ircv3.net/specs/core/message-tags-3.2.html}'

def sendCommand(self, command, parameters, prefix=None, tags=None):

    if (not command):
        raise ValueError('IRC    message    requires    a    command.')
    if (('    ' in command) or (command[0] == ':')):
        raise ValueError(('Invalid    command:    "%s"' % (command,)))
    if (tags is None):
        tags = {}
    line = '    '.join(([command] + list(parameters)))
    if prefix:
        line = (':%s    %s' % (prefix, line))
    if tags:
        tagStr = self._stringTags(tags)
        line = ('@%s    %s' % (tagStr, line))
    self.sendLine(line)
    if (len(parameters) > 15):
        log.msg(('Message    has    %d    parameters    (RFC    allows    15):\n%s' % (len(parameters), line)))
