From 13dddb4c10fd2468177251ed60e7d2eaa0102cad Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 7 Mar 2018 13:00:13 +0200 Subject: [PATCH] Override alias if it already exists --- mautrix_appservice/intent_api.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mautrix_appservice/intent_api.py b/mautrix_appservice/intent_api.py index fa148b2e..5a7495a5 100644 --- a/mautrix_appservice/intent_api.py +++ b/mautrix_appservice/intent_api.py @@ -277,11 +277,16 @@ class IntentAPI: content["info"] = info return self.send_state_event(room_id, "m.room.avatar", content) - async def add_room_alias(self, room_id, localpart): + async def add_room_alias(self, room_id, localpart, override=True): await self.ensure_registered() content = {"room_id": room_id} alias = f"#{localpart}:{self.client.domain}" - return await self.client.request("PUT", f"/directory/room/{quote(alias)}", content) + try: + return await self.client.request("PUT", f"/directory/room/{quote(alias)}", content) + except MatrixRequestError as e: + if override and e.code == 409: + await self.remove_room_alias(localpart) + return await self.client.request("PUT", f"/directory/room/{quote(alias)}", content) async def remove_room_alias(self, localpart): await self.ensure_registered()