    # File lib/rbot/core/utils/extends.rb, line 409
            def fake_message(string, opts={})
              if from = opts[:from]
                o = {
                  :bot => from.bot, :server => from.server, :source => from.source,
                  :target => from.target, :class => from.class, :delegate => true,
                  :depth => from.recurse_depth + 1
                }.merge(opts)
              else
                o = {
                  :bot => @bot, :server => @bot.server, :target => @bot.myself,
                  :class => PrivMessage, :delegate => true, :depth => 1
                }.merge(opts)
              end
              raise RecurseTooDeep if o[:depth] > MAX_RECURSE_DEPTH
              new_m = o[:class].new(o[:bot], o[:server], o[:source], o[:target], string)
              new_m.recurse_depth = o[:depth]
              if from
                # the created message will reply to the originating message
                class << new_m
                  self
                end.send(:define_method, :reply) do |*args|
                  debug "replying to '#{from.message}' with #{args.first}"
                  from.reply(*args)
                end
                # the created message will follow originating message's in_thread
                new_m.in_thread = from.in_thread if from.respond_to?(:in_thread)
              end
              return new_m unless o[:delegate]
              method = o[:class].to_s.gsub(/^Irc::|Message$/,'').downcase
              method = 'privmsg' if method == 'priv'
              o[:bot].plugins.irc_delegate(method, new_m)
            end