Fix error when trying to mention unauthenticated users

This commit is contained in:
Tulir Asokan
2018-03-31 11:18:39 +03:00
parent a1297e90ce
commit 66d68f6b63
+6 -5
View File
@@ -17,7 +17,7 @@
from html import unescape from html import unescape
from html.parser import HTMLParser from html.parser import HTMLParser
from collections import deque from collections import deque
from typing import Optional, List, Tuple, Type, Callable, Dict, Union from typing import Optional, List, Tuple, Type, Callable, Dict, Any
import math import math
import re import re
import logging import logging
@@ -26,8 +26,7 @@ from telethon.tl.types import (MessageEntityMention,
InputMessageEntityMentionName, MessageEntityEmail, InputMessageEntityMentionName, MessageEntityEmail,
MessageEntityUrl, MessageEntityTextUrl, MessageEntityBold, MessageEntityUrl, MessageEntityTextUrl, MessageEntityBold,
MessageEntityItalic, MessageEntityCode, MessageEntityPre, MessageEntityItalic, MessageEntityCode, MessageEntityPre,
MessageEntityBotCommand, MessageEntityHashtag, MessageEntityBotCommand, InputUser, TypeMessageEntity)
MessageEntityMentionName, InputUser, TypeMessageEntity)
from ..context import Context from ..context import Context
from .. import user as u, puppet as pu, portal as po from .. import user as u, puppet as pu, portal as po
@@ -58,7 +57,7 @@ class MatrixParser(HTMLParser):
self._line_is_new = True self._line_is_new = True
self._list_entry_is_new = False self._list_entry_is_new = False
def _parse_url(self, url: str, args: Dict[str, str] def _parse_url(self, url: str, args: Dict[str, Any]
) -> Tuple[Optional[Type[TypeMessageEntity]], Optional[str]]: ) -> Tuple[Optional[Type[TypeMessageEntity]], Optional[str]]:
mention = self.mention_regex.match(url) mention = self.mention_regex.match(url)
if mention: if mention:
@@ -69,9 +68,11 @@ class MatrixParser(HTMLParser):
return None, None return None, None
if user.username: if user.username:
return MessageEntityMention, f"@{user.username}" return MessageEntityMention, f"@{user.username}"
else: elif user.tgid:
args["user_id"] = InputUser(user.tgid, 0) args["user_id"] = InputUser(user.tgid, 0)
return InputMessageEntityMentionName, user.displayname or None return InputMessageEntityMentionName, user.displayname or None
else:
return None, None
room = self.room_regex.match(url) room = self.room_regex.match(url)
if room: if room: