[CmdletBinding()] Param ( [Array]$Exceptions = @('m.lowpriority','m.favourite'), [String]$HomeServer = 'https://imninja.net', [String]$MxId = '@lub:imninja.net', [String]$AccessToken ) function Invoke-MatrixMethod { Param ( $Method = 'Get', $Endpoint ) # add authorization header $Headers = $Headers+@{'authorization' = 'Bearer '+$AccessToken} $uri = $HomeServer+$Endpoint Invoke-RestMethod -Method $Method -Headers $Headers -Uri $uri } foreach($room in (Invoke-MatrixMethod -Endpoint '/_matrix/client/r0/joined_rooms').joined_rooms) { foreach($tag in (Invoke-MatrixMethod -Endpoint ('/_matrix/client/r0/user/'+$MxId+'/rooms/'+$room+'/tags')).tags) { $tag = ($tag | Get-Member)[4].Name if($tag -and $tag -notin $Exceptions) { 'delete '+$tag Invoke-MatrixMethod -Method Delete -Endpoint ('/_matrix/client/r0/user/'+$MxId+'/rooms/'+$room+'/tags/'+$tag) } } }