rintrix/listeners.py

22 lines
766 B
Python
Raw Normal View History

2022-02-24 16:27:55 +11:00
from .utils import Listener as _l, Event as _e, get_or_create as goc
import .models
# Default handlers will be given two parts each:
# 1) Mould the raw event into a parsed event (update internal state)
# 2) Identify event chains and dump them into the queue.
# I really don't recommend removing them. (But I won't stop you.)
def sync_f(client,event):
blob=event.raw_data
# This event never really gets any processed data in it.
rooms=blob['rooms']['join']
for rid,room in rooms.items():
client.event_queue.add(_e('m.room',{'id':rid},room))
sync=_l('sync','m.sync',sync_f)
def room_f(client,event):
blob=event.raw_data
rid=event.data['id']
room=goc(lambda x:x.id==rid,client.account.rooms,models.Room(rid))
event.data=room
room=_l('room','m.room',room_f)