From 92f6a250f1e6f6a667bc79cbfe0c4e0333c26ded Mon Sep 17 00:00:00 2001 From: Dusty Pianalto Date: Wed, 6 Nov 2019 22:36:10 -0900 Subject: [PATCH] Support redactions --- morpheus/core/client.py | 2 ++ morpheus/core/content.py | 2 +- morpheus/core/events.py | 18 ++++++++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/morpheus/core/client.py b/morpheus/core/client.py index 2908afc..3879b11 100644 --- a/morpheus/core/client.py +++ b/morpheus/core/client.py @@ -160,6 +160,8 @@ class Client: return EventBase.from_dict(self, event) elif event["type"] == "m.room.message": return MessageEvent.from_dict(self, event) + elif event['type'] == 'm.room.redaction': + return RedactionEvent.from_dict(self, event) else: return RoomEvent.from_dict(self, event) diff --git a/morpheus/core/content.py b/morpheus/core/content.py index ed4be68..338daa0 100644 --- a/morpheus/core/content.py +++ b/morpheus/core/content.py @@ -144,7 +144,7 @@ class MRoomPowerLevelsContent(ContentBase): @dataclass class MRoomRedactionContent(ContentBase): - reason: str + reason: Optional[str] = None @dataclass diff --git a/morpheus/core/events.py b/morpheus/core/events.py index bfb4ed9..9ea1182 100644 --- a/morpheus/core/events.py +++ b/morpheus/core/events.py @@ -18,7 +18,8 @@ class EventBase: def from_dict(cls, client: Client, event_dict: dict): from .content import content_dispatcher if event_dict['type'] == 'm.room.message': - content_class = content_dispatcher[event_dict['content']['msgtype']] + content_class = content_dispatcher[event_dict['content']['msgtype']] \ + if event_dict['content'].get('msgtype') else ContentBase else: content_class = content_dispatcher[event_dict['type']] @@ -41,11 +42,16 @@ class EventBase: del event_dict['content'] - return cls( - client=client, - content=content_class(**content_dict), - **event_dict - ) + try: + return cls( + client=client, + content=content_class(**content_dict), + **event_dict + ) + except Exception as e: + print(content_dict) + print(event_dict) + raise e @dataclass