From bed3e1f5e68603950f5c66465f3f7fc675b41b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?poljar=20=28Damir=20Jeli=C4=87=29?= <poljar@termina.org.uk> Date: Sun, 25 Feb 2018 16:34:20 +0100 Subject: [PATCH] Add name and aliases room event handling. --- matrix/rooms.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/matrix/rooms.py b/matrix/rooms.py index 6cb84aa..c30626a 100644 --- a/matrix/rooms.py +++ b/matrix/rooms.py @@ -150,6 +150,10 @@ class RoomInfo(): other_events.append(RoomTopicEvent.from_dict(event)) elif event["type"] == "m.room.redaction": other_events.append(RoomRedactionEvent.from_dict(event)) + elif event["type"] == "m.room.name": + other_events.append(RoomNameEvent.from_dict(event)) + elif event["type"] == "m.room.aliases": + other_events.append(RoomAliasEvent.from_dict(event)) return (membership_events, other_events) @@ -498,3 +502,46 @@ class RoomRedactionEvent(RoomEvent): return self._redact_line(data_pointer, tags, room, buff) + + +class RoomNameEvent(RoomEvent): + + def __init__(self, event_id, sender, age, name): + self.name = name + RoomEvent.__init__(self, event_id, sender, age) + + @classmethod + def from_dict(cls, event_dict): + event_id = sanitize_id(event_dict["event_id"]) + sender = sanitize_id(event_dict["sender"]) + age = sanitize_age(event_dict["unsigned"]["age"]) + + name = sanitize_id(event_dict['content']['name']) + + return cls(event_id, sender, age, name) + + def execute(self, server, room, buff, tags): + if not self.name: + return + + W.prnt("", self.name) + room.alias = self.name + W.buffer_set(buff, "name", self.name) + W.buffer_set(buff, "short_name", self.name) + W.buffer_set(buff, "localvar_set_channel", self.name) + + +class RoomAliasEvent(RoomNameEvent): + + def __init__(self, event_id, sender, age, name): + RoomNameEvent.__init__(self, event_id, sender, age, name) + + @classmethod + def from_dict(cls, event_dict): + event_id = sanitize_id(event_dict["event_id"]) + sender = sanitize_id(event_dict["sender"]) + age = sanitize_age(event_dict["unsigned"]["age"]) + + name = sanitize_id(event_dict['content']['aliases'][-1]) + + return cls(event_id, sender, age, name)