Fall back to get_dialogs if get_entity fails. Fixes #229

This commit is contained in:
Tulir Asokan
2018-11-15 11:20:43 +02:00
parent d551934ec1
commit 2dfc05db5f
+14 -3
View File
@@ -282,6 +282,17 @@ class Portal:
def get_input_entity(self, user: 'u.User') -> Awaitable[TypeInputPeer]:
return user.client.get_input_entity(self.peer)
async def get_entity(self, user: 'u.User') -> TypeChat:
try:
return await user.client.get_entity(self.peer)
except ValueError:
self.log.warning(f"Could not find entity for {self.tgid_log} with user {user.tgid} "
f"falling back to get_dialogs.")
async for dialog in user.client.iter_dialogs():
if dialog.entity.id == self.tgid:
return dialog.entity
raise
# endregion
# region Matrix room info updating
@@ -316,7 +327,7 @@ class Portal:
if self.mxid:
if update_if_exists:
if not entity:
entity = await user.client.get_entity(self.peer)
entity = await self.get_entity(user)
update = self.update_matrix_room(user, entity, self.peer_type == "user")
if synchronous:
await update
@@ -338,7 +349,7 @@ class Portal:
return None
if not entity:
entity = await user.client.get_entity(self.peer)
entity = await self.get_entity(user)
self.log.debug("Fetched data: %s", entity)
self.log.debug(f"Creating room for {self.tgid_log}")
@@ -518,7 +529,7 @@ class Portal:
self.log.debug(f"Updating info of {self.tgid_log}")
if not entity:
entity = await user.client.get_entity(self.peer)
entity = await self.get_entity(user)
self.log.debug("Fetched data: %s", entity)
changed = False