new (Irc::UserMessage)

    # File lib/rbot/message.rb, line 318
        def initialize(bot, server, source, target, message)
          super(bot, server, source, target, message)
          @target = target
          @private = false
          @plugin = nil
          @ctcp = false
          @action = false

          if target == @bot.myself
            @private = true
            @address = true
            @channel = nil
            @replyto = source
          else
            @replyto = @target
            @channel = @target
          end

          # check for option extra addressing prefixes, e.g "|search foo", or
          # "!version" - first match wins
          bot.config['core.address_prefix'].each {|mprefix|
            if @message.gsub!(/^#{Regexp.escape(mprefix)}\s*/, "")
              @address = true
              break
            end
          }

          # even if they used above prefixes, we allow for silly people who
          # combine all possible types, e.g. "|rbot: hello", or
          # "/msg rbot rbot: hello", etc
          if @message.gsub!(/^\s*#{Regexp.escape(bot.nick)}\s*([:;,>]|\s)\s*/i, "")
            @address = true
          end

          if(@message =~ /^\001(\S+)(\s(.+))?\001/)
            @ctcp = $1
            # FIXME need to support quoting of NULL and CR/LF, see
            # http://www.irchelp.org/irchelp/rfc/ctcpspec.html
            @message = $3 || String.new
            @action = @ctcp == 'ACTION'
            debug "Received CTCP command #{@ctcp} with options #{@message} (action? #{@action})"
            @logmessage = @message.dup
            @plainmessage = BasicUserMessage.strip_formatting(@message)
            @message = BasicUserMessage.strip_initial_formatting(@message)
          end

          # free splitting for plugins
          @params = @message.dup
          # Created messges (such as by fake_message) can contain multiple lines
          if @params.gsub!(/\A\s*(\S+)[\s$]*/m, "")
            @plugin = $1.downcase
            @params = nil unless @params.length > 0
          end
        end