mirror of
https://github.com/Thumbscrew/PSMatrix.git
synced 2024-11-14 01:50:04 +00:00
79 lines
2.0 KiB
PowerShell
79 lines
2.0 KiB
PowerShell
|
function Get-MatrixRoomMessages {
|
||
|
param(
|
||
|
[Parameter(Mandatory)]
|
||
|
[string]$ServerUrl,
|
||
|
|
||
|
[Parameter(Mandatory)]
|
||
|
[SecureString]$AccessToken,
|
||
|
|
||
|
[Parameter(Mandatory)]
|
||
|
[string]$UserId,
|
||
|
|
||
|
[Parameter(Mandatory)]
|
||
|
[string]$RoomId,
|
||
|
|
||
|
[Parameter(Mandatory = $false)]
|
||
|
[int]$Limit = 50
|
||
|
)
|
||
|
|
||
|
Write-Debug "URL: $url"
|
||
|
$headers = Get-MatrixAuthHeaders -AccessToken $AccessToken
|
||
|
|
||
|
try {
|
||
|
$filterUrl = New-MatrixUrl -ServerUrl $ServerUrl -ApiPath "_matrix/client/v3/user/$UserId/filter"
|
||
|
$filter = [PSCustomObject]@{
|
||
|
room = @{
|
||
|
rooms = @(
|
||
|
$RoomId
|
||
|
)
|
||
|
timeline = @{
|
||
|
limit = $Limit
|
||
|
rooms = @(
|
||
|
$RoomId
|
||
|
)
|
||
|
types = @(
|
||
|
"m.room.message"
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
} | ConvertTo-Json -Depth 3
|
||
|
|
||
|
$filterRes = Invoke-RestMethod -Uri $filterUrl -Method "POST" -Headers $headers -Body $filter
|
||
|
} catch {
|
||
|
Write-Error $_
|
||
|
return
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
$filterId = $filterRes.filter_id
|
||
|
$url = New-MatrixUrl -ServerUrl $ServerUrl `
|
||
|
-ApiPath ("_matrix/client/v3/sync" `
|
||
|
+ "?filter=$filterId" `
|
||
|
+ "&full_state=true&set_presence=offline")
|
||
|
|
||
|
$res = Invoke-RestMethod -Uri $url -Headers $headers
|
||
|
} catch {
|
||
|
Write-Error $_
|
||
|
return
|
||
|
}
|
||
|
|
||
|
$events = $res.rooms.join.($RoomId).timeline.events
|
||
|
|
||
|
$formattedEvents = @()
|
||
|
|
||
|
$events | ForEach-Object {
|
||
|
$formattedEvent = [PSCustomObject]@{
|
||
|
EventID = $_.event_id
|
||
|
Sender = $_.sender
|
||
|
Body = $_.content.body
|
||
|
Format = $_.content.format
|
||
|
FormattedBody = $_.content.formatted_body
|
||
|
MsgType = $_.content.msgtype
|
||
|
}
|
||
|
$formattedEvent.PSObject.TypeNames.Insert(0, 'MatrixMessage')
|
||
|
|
||
|
$formattedEvents += $formattedEvent
|
||
|
}
|
||
|
|
||
|
return $formattedEvents
|
||
|
}
|