public/Get-TwitterStatuses_UserTimeline.ps1

function Get-TwitterStatuses_UserTimeline {
<#
.SYNOPSIS
    Get Tweet timelines

.DESCRIPTION
    GET statuses/user_timeline
    
    Returns a collection of the most recent Tweets posted by the user indicated by the screen_name or user_id parameters.
    
    User timelines belonging to protected users may only be requested when the authenticated user either "owns" the timeline or is an approved follower of the owner.
    
    The timeline returned is the equivalent of the one seen as a user's profile on Twitter.
    
    This method can only return up to 3,200 of a user's most recent Tweets. Native retweets of other statuses by the user is included in this total, regardless of whether include_rts is set to false when requesting this resource.
    
    See Working with Timelines for instructions on traversing timelines.
    
    See Embedded Timelines, Embedded Tweets, and GET statuses/oembed for tools to render Tweets according to Display Requirements.

.PARAMETER user_id
    The ID of the user for whom to return results.

.PARAMETER screen_name
    The screen name of the user for whom to return results.

.PARAMETER since_id
    Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets that can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be forced to the oldest ID available.

.PARAMETER count
    Specifies the number of Tweets to try and retrieve, up to a maximum of 200 per distinct request. The value of count is best thought of as a limit to the number of Tweets to return because suspended or deleted content is removed after the count has been applied. We include retweets in the count, even if include_rts is not supplied. It is recommended you always send include_rts=1 when using this API method.

.PARAMETER max_id
    Returns results with an ID less than (that is, older than) or equal to the specified ID.

.PARAMETER trim_user
    When set to either true , t or 1 , each Tweet returned in a timeline will include a user object including only the status authors numerical ID. Omit this parameter to receive the complete user object.

.PARAMETER exclude_replies
    This parameter will prevent replies from appearing in the returned timeline. Using exclude_replies with the count parameter will mean you will receive up-to count tweets — this is because the count parameter retrieves that many Tweets before filtering out retweets and replies.

.PARAMETER include_rts
    When set to false , the timeline will strip any native retweets (though they will still count toward both the maximal length of the timeline and the slice selected by the count parameter). Note: If you're using the trim_user parameter in conjunction with include_rts, the retweets will still contain a full user object.

.NOTES
    This helper function was generated by the information provided here:
    https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-user_timeline

#>

    [CmdletBinding()]
    Param(
        [string]$user_id,
        [string]$screen_name,
        [string]$since_id,
        [string]$count,
        [string]$max_id,
        [string]$trim_user,
        [string]$exclude_replies,
        [string]$include_rts
    )
    Begin {

        [hashtable]$Parameters = $PSBoundParameters
                   $CmdletBindingParameters | ForEach-Object { $Parameters.Remove($_) }

        [string]$Method      = 'GET'
        [string]$Resource    = '/statuses/user_timeline'
        [string]$ResourceUrl = 'https://api.twitter.com/1.1/statuses/user_timeline.json'

    }
    Process {

        # Find & Replace any ResourceUrl parameters.
        $UrlParameters = [regex]::Matches($ResourceUrl, '(?<!\w):\w+')
        ForEach ($UrlParameter in $UrlParameters) {
            $UrlParameterValue = $Parameters["$($UrlParameter.Value.TrimStart(":"))"]
            $ResourceUrl = $ResourceUrl -Replace $UrlParameter.Value, $UrlParameterValue
        }

        Do {
    
            $OAuthSettings = Get-TwitterOAuthSettings -Resource $Resource
            Invoke-TwitterAPI -Method $Method -ResourceUrl $ResourceUrl -Parameters $Parameters -OAuthSettings $OAuthSettings | Tee-Object -Variable Results | ForEach-Object { $_ }
            
            $Parameters['max_id'] = $Results.id | Sort-Object | Select-Object -First 1
            $Parameters['count'] = ([int]($Parameters['count'])) - ([int]($Results.Count))
            If ($Parameters['count'] -le 0) { Return }

        } While ($Results)

    }
    End {

    }
}