From 467ec8856064d18a54b05deb4b0a49dbe72ee7e8 Mon Sep 17 00:00:00 2001 From: cynic Date: Sat, 1 Jun 2024 11:33:48 -0500 Subject: [PATCH] Add redact_all_messages.py --- redact_all_messages.py | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 redact_all_messages.py diff --git a/redact_all_messages.py b/redact_all_messages.py new file mode 100644 index 0000000..6ac1107 --- /dev/null +++ b/redact_all_messages.py @@ -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)