Add redact_all_messages.py

This commit is contained in:
cynic 2024-06-01 11:33:48 -05:00
parent e1a0a25c3a
commit 467ec88560

66
redact_all_messages.py Normal file
View File

@ -0,0 +1,66 @@
#!/usr/bin/env python3
import requests
import sys
from pprint import pformat
# configure your session here
homeserver = "matrix.thisisjoes.site"
access_token = "syt_M4dpAzM_iQdfTcDDoiGhlOTDnz1r_5HfPcV"
room_id = sys.argv[1]
def get_all_encrypted_messages(homeserver, room_id, access_token):
messages = []
next_batch = None
while True:
print("Reading messages...")
params = {
"dir": "b",
"limit": 2,
"filter": '{"types": ["m.room.encrypted"]}'
}
if next_batch:
params["from"] = next_batch
url = f"https://{homeserver}/_matrix/client/v3/rooms/{room_id}/messages"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, params=params, headers=headers)
response.raise_for_status()
chunk = response.json()["chunk"]
messages.extend(chunk)
next_batch = response.json().get("end")
if not next_batch:
break
return messages
def redact_message(message):
transaction_id = 0
try:
transaction_id = message['unsigned']['transaction_id'] + '1'
except:
pass
event_id = message['event_id']
h = homeserver
r = room_id
e = event_id
t = transaction_id
url = f"https://{h}/_matrix/client/r0/rooms/{r}/redact/{e}/{t}"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.put(url, json={"reason":""}, headers=headers)
print(pformat(response))
response.raise_for_status()
all_messages = get_all_encrypted_messages(homeserver, room_id, access_token)
for message in all_messages:
message_count = 0
if message['content']:
message_count += 1
print("Message count:", message_count)
redact_message(message)