Fix highlighting Telegram users without usernames

This commit is contained in:
Tulir Asokan
2018-03-06 00:27:35 +02:00
parent ed8c933772
commit e2ba478095
2 changed files with 17 additions and 10 deletions
+4 -6
View File
@@ -53,17 +53,15 @@ class MatrixParser(HTMLParser):
mention = self.mention_regex.match(url)
if mention:
mxid = mention.group(1)
user = (pu.Puppet.get_by_mxid(mxid, create=False)
user = (pu.Puppet.get_by_mxid(mxid)
or u.User.get_by_mxid(mxid, create=False))
if not user:
return None, None
if user.username:
entity_type = MessageEntityMention
url = f"@{user.username}"
return MessageEntityMention, f"@{user.username}"
else:
entity_type = MessageEntityMentionName
args["user_id"] = user.tgid
return entity_type, url
args["user_id"] = InputUser(user.tgid, 0)
return InputMessageEntityMentionName, user.displayname or None
room = self.room_regex.match(url)
if room:
+13 -4
View File
@@ -580,13 +580,22 @@ class Portal:
message["body"] = f"<{sender.displayname}> {message['body']}"
return type
def _handle_matrix_text(self, client, message, reply_to):
if "format" in message and message["format"] == "org.matrix.custom.html":
async def _handle_matrix_text(self, client, message, reply_to):
is_formatted = ("format" in message
and message["format"] == "org.matrix.custom.html"
and "formatted_body" in message)
if is_formatted:
message, entities = formatter.matrix_to_telegram(message["formatted_body"])
return client.send_message(self.peer, message, entities=entities, reply_to=reply_to)
# TODO remove this crap
for entity in entities:
if isinstance(entity, InputMessageEntityMentionName):
entity.user_id = await client.get_input_entity(entity.user_id.user_id)
return await client.send_message(self.peer, message, entities=entities, reply_to=reply_to)
else:
message = formatter.matrix_text_to_telegram(message["body"])
return client.send_message(self.peer, message, reply_to=reply_to)
return await client.send_message(self.peer, message, reply_to=reply_to)
async def _handle_matrix_file(self, client, message, reply_to):
file = await self.main_intent.download_file(message["url"])