# File lib/rbot/core/auth.rb, line 756
  def auth_copy_ren_user(m, params)
    source = Auth::BotUser.sanitize_username(params[:source])
    dest = Auth::BotUser.sanitize_username(params[:dest])
    return m.reply(_("please don't touch the default users")) unless
      (["everyone", "owner"] & [source, dest]).empty?

    buser_array = @bot.auth.save_array
    buser_hash = buser_array.inject({}) { |h, u|
      h[u[:username]] = u
      h
    }

    return m.reply(_("no such botuser %{source}") % {:source=>source}) unless
           buser_hash.keys.include?(source)
    return m.reply(_("botuser %{dest} exists already") % {:dest=>dest}) if
           buser_hash.keys.include?(dest)

    copying = m.message.split[1] == "copy"
    begin
      if copying
        h = {}
        buser_hash[source].each { |k, val|
          h[k] = val.dup
        }
      else
        h = buser_hash[source]
      end
      h[:username] = dest
      buser_array << h if copying

      @bot.auth.load_array(buser_array, true)
      @bot.auth.set_changed
      call_event(:botuser, copying ? :copy : :rename, :source => source, :dest => dest)
    rescue => e
      return m.reply(_("failed: %{exception}") % {:exception=>e})
    end
    if copying
      m.reply(_("botuser %{source} copied to %{dest}") %
           {:source=>source, :dest=>dest})
    else
      m.reply(_("botuser %{source} renamed to %{dest}") %
           {:source=>source, :dest=>dest})
    end

  end