Add from_dict class method
Add new event types Add missing attributes
This commit is contained in:
parent
3e8e9eebbc
commit
faaf2ecb39
@ -1,15 +1,35 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
|
|
||||||
|
from .client import Client
|
||||||
|
from .room import Room
|
||||||
from .content import ContentBase
|
from .content import ContentBase
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class EventBase:
|
class EventBase:
|
||||||
|
client: Client
|
||||||
content: ContentBase
|
content: ContentBase
|
||||||
type: str
|
type: str
|
||||||
sender: str
|
sender: str
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
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']]
|
||||||
|
else:
|
||||||
|
content_class = content_dispatcher[event_dict['type']]
|
||||||
|
|
||||||
|
content_dict = event_dict['content']
|
||||||
|
del event_dict['content']
|
||||||
|
|
||||||
|
return cls(
|
||||||
|
client=client,
|
||||||
|
content=content_class(content_dict),
|
||||||
|
**event_dict
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class UnsignedData:
|
class UnsignedData:
|
||||||
@ -21,19 +41,30 @@ class UnsignedData:
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class RoomEvent(EventBase):
|
class RoomEvent(EventBase):
|
||||||
from .room import Room
|
|
||||||
event_id: str
|
event_id: str
|
||||||
origin_server_id: int
|
origin_server_ts: int
|
||||||
unsigned: UnsignedData
|
unsigned: UnsignedData
|
||||||
room: Room
|
room: Room
|
||||||
|
user_id: str
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class StateEvent(RoomEvent):
|
class StateEvent(RoomEvent):
|
||||||
state_key: str
|
state_key: str
|
||||||
|
age: int
|
||||||
prev_content: Optional[EventBase] = None
|
prev_content: Optional[EventBase] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class RedactionEvent(RoomEvent):
|
class RedactionEvent(RoomEvent):
|
||||||
redacts: EventBase
|
redacts: EventBase
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class MessageEvent(RoomEvent):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class PresenceEvent(EventBase):
|
||||||
|
pass
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user