Public/Posts/Get-MMMessage.ps1
|
# Удобная обёртка для получения сообщений из лички, группы, канала или по ID function Get-MMMessage { <# .SYNOPSIS Gets messages from a DM, group chat, channel by name, or by post ID(s). .EXAMPLE Get-MMMessage -Id 'abc123' .EXAMPLE Get-MMMessage -Ids @('abc123', 'def456') .EXAMPLE Get-MMMessage -FromUser 'john' .EXAMPLE Get-MMUser -Username 'john' | Get-MMMessage .EXAMPLE Get-MMMessage -FromUsers @('john', 'jane', 'bob') .EXAMPLE Get-MMMessage -FromChannel 'general' -PerPage 20 #> [CmdletBinding(DefaultParameterSetName = 'FromChannel')] [OutputType('MMPost')] param( # Получить конкретный пост по ID [Parameter(Mandatory, ParameterSetName = 'ById')] [string]$PostId, # Получить несколько постов по массиву ID [Parameter(Mandatory, ParameterSetName = 'ByIds')] [string[]]$PostIds, # Получить сообщения из лички с пользователем по username [Parameter(Mandatory, ParameterSetName = 'FromUser')] [string]$FromUser, # Получить сообщения из лички с пользователем по ID (поддержка пайпа из MMUser) [Parameter(Mandatory, ParameterSetName = 'FromUserId', ValueFromPipelineByPropertyName)] [Alias('id')] [string]$FromUserId, # Получить сообщения из группового чата [Parameter(Mandatory, ParameterSetName = 'FromUsers')] [ValidateCount(2, 7)] [string[]]$FromUsers, # Получить сообщения из канала по имени [Parameter(Mandatory, ParameterSetName = 'FromChannel')] [string]$FromChannel, [Parameter(ParameterSetName = 'FromUser')] [Parameter(ParameterSetName = 'FromUserId')] [Parameter(ParameterSetName = 'FromUsers')] [Parameter(ParameterSetName = 'FromChannel')] [int]$Page = 0, [Parameter(ParameterSetName = 'FromUser')] [Parameter(ParameterSetName = 'FromUserId')] [Parameter(ParameterSetName = 'FromUsers')] [Parameter(ParameterSetName = 'FromChannel')] [int]$PerPage = 60, [Parameter(ParameterSetName = 'FromUser')] [Parameter(ParameterSetName = 'FromUserId')] [Parameter(ParameterSetName = 'FromUsers')] [Parameter(ParameterSetName = 'FromChannel')] [long]$Since, [Parameter(ParameterSetName = 'FromUser')] [Parameter(ParameterSetName = 'FromUserId')] [Parameter(ParameterSetName = 'FromUsers')] [Parameter(ParameterSetName = 'FromChannel')] [switch]$IncludeDeleted ) process { switch ($PSCmdlet.ParameterSetName) { 'ById' { Get-MMPost -PostId $PostId } 'ByIds' { Get-MMPost -PostIds $PostIds } 'FromUser' { $target = Get-MMUser -Username $FromUser $channelId = (New-MMDirectChannel -UserId1 $script:MMSession.UserId -UserId2 $target.id).id $params = @{ ChannelId = $channelId; Page = $Page; PerPage = $PerPage } if ($Since) { $params['Since'] = $Since } if ($IncludeDeleted) { $params['IncludeDeleted'] = $true } Get-MMChannelPosts @params } 'FromUserId' { $channelId = (New-MMDirectChannel -UserId1 $script:MMSession.UserId -UserId2 $FromUserId).id $params = @{ ChannelId = $channelId; Page = $Page; PerPage = $PerPage } if ($Since) { $params['Since'] = $Since } if ($IncludeDeleted) { $params['IncludeDeleted'] = $true } Get-MMChannelPosts @params } 'FromUsers' { $targets = Get-MMUser -Usernames $FromUsers $ids = @($script:MMSession.UserId) + @($targets | Select-Object -ExpandProperty id) $channelId = (New-MMGroupChannel -UserIds $ids).id $params = @{ ChannelId = $channelId; Page = $Page; PerPage = $PerPage } if ($Since) { $params['Since'] = $Since } if ($IncludeDeleted) { $params['IncludeDeleted'] = $true } Get-MMChannelPosts @params } 'FromChannel' { $channelId = (Get-MMChannel -Name $FromChannel).id $params = @{ ChannelId = $channelId; Page = $Page; PerPage = $PerPage } if ($Since) { $params['Since'] = $Since } if ($IncludeDeleted) { $params['IncludeDeleted'] = $true } Get-MMChannelPosts @params } } } } |