diff --git a/PSMatrix.psd1 b/PSMatrix.psd1 index 967e652..1e30cd9 100644 --- a/PSMatrix.psd1 +++ b/PSMatrix.psd1 @@ -77,7 +77,8 @@ FunctionsToExport = @( 'Get-MatrixJoinedRooms', 'Get-MatrixJoinedMembers', 'Get-MatrixRoomId', - 'Get-MatrixRoomMessages' + 'Get-MatrixRoomMessages', + 'Remove-MatrixRoomMessage' ) # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. diff --git a/PSMatrixTypes.ps1xml b/PSMatrixTypes.ps1xml index 611fe6d..467932c 100644 --- a/PSMatrixTypes.ps1xml +++ b/PSMatrixTypes.ps1xml @@ -2,30 +2,22 @@ MatrixMessage - - EventID - EventID - - - Sender - Sender - - - Body - Body - - - Format - Format - - - FormattedBody - FormattedBody - - - MsgType - MsgType - + + PSStandardMembers + + + DefaultDisplayPropertySet + + EventID + Sender + Body + Format + FormattedBody + MsgType + + + + \ No newline at end of file diff --git a/public/Get-MatrixRoomMessages.ps1 b/public/Get-MatrixRoomMessages.ps1 index 7244d68..b69c563 100644 --- a/public/Get-MatrixRoomMessages.ps1 +++ b/public/Get-MatrixRoomMessages.ps1 @@ -16,7 +16,6 @@ function Get-MatrixRoomMessages { [int]$Limit = 50 ) - Write-Debug "URL: $url" $headers = Get-MatrixAuthHeaders -AccessToken $AccessToken try { @@ -51,6 +50,8 @@ function Get-MatrixRoomMessages { + "?filter=$filterId" ` + "&full_state=true&set_presence=offline") + Write-Debug "URL: $url" + $res = Invoke-RestMethod -Uri $url -Headers $headers } catch { Write-Error $_ diff --git a/public/Remove-MatrixRoomMessage.ps1 b/public/Remove-MatrixRoomMessage.ps1 new file mode 100644 index 0000000..0cc9bb1 --- /dev/null +++ b/public/Remove-MatrixRoomMessage.ps1 @@ -0,0 +1,64 @@ +<# + .Synopsis + Redact a Matrix message in a given Room ID. + + .Description + Redact a Matrix message in a given Room ID from _matrix/client/v3/rooms/{roomId}/redact/{eventId}/{txnId}. See https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3roomsroomidredacteventidtxnid. + + .Parameter ServerUrl + URL for the Matrix server to log into, for example "https://matrix.example.com". + + .Parameter AccessToken + A SecureString containing the Matrix access token. + + .Parameter RoomId + The Matrix room ID to redact the message from. + + .Parameter Message + The MatrixMessage object that contains the Event ID to redact. + + .Parameter Reason + The reason to provide for the redaction (optional). + + .Example + Remove-MatrixRoomMessage -ServerUrl $server -AccessToken $token -RoomId "!ehXvUhWNASUkSLvAGP:matrix.org" -Message $message -Reason "Redacted by PSMatrix" +#> +function Remove-MatrixRoomMessage { + param ( + [Parameter(Mandatory)] + [string] + $ServerUrl, + + [Parameter(Mandatory)] + [SecureString] + $AccessToken, + + [Parameter(Mandatory)] + [string] + $RoomId, + + [Parameter(Mandatory)] + [MatrixMessage] + $Message, + + [Parameter(Mandatory=$false)] + [string] + $Reason + ) + + $eventId = $Message.EventID + $txnId = New-Guid + $url = New-MatrixUrl -ServerUrl $ServerUrl -ApiPath "_matrix/client/v3/rooms/$RoomId/redact/$eventId/$txnId" + Write-Debug "URL: $url" + $method = "Put" + $headers = Get-MatrixAuthHeaders -AccessToken $AccessToken + $body = @{ + reason = $Reason + } | ConvertTo-Json + + try { + return Invoke-RestMethod -Uri $url -Method $method -Headers $headers -Body $body + } catch { + Write-Error $_ + } +} \ No newline at end of file