Strip displayname format in Matrix->Telegram non-username mentions. Fixes #138
This commit is contained in:
@@ -31,7 +31,6 @@ from .telegram_message import TelegramMessage, Entity, offset_length_multiply
|
|||||||
|
|
||||||
from .html_reader import HTMLNode, read_html
|
from .html_reader import HTMLNode, read_html
|
||||||
|
|
||||||
|
|
||||||
ParsedMessage = Tuple[str, List[TypeMessageEntity]]
|
ParsedMessage = Tuple[str, List[TypeMessageEntity]]
|
||||||
|
|
||||||
|
|
||||||
@@ -155,8 +154,8 @@ class MatrixParser:
|
|||||||
if user.username:
|
if user.username:
|
||||||
return TelegramMessage(f"@{user.username}").format(Mention)
|
return TelegramMessage(f"@{user.username}").format(Mention)
|
||||||
elif user.tgid:
|
elif user.tgid:
|
||||||
return TelegramMessage(user.displayname or msg.text).format(MentionName,
|
displayname = user.plain_displayname or msg.text
|
||||||
user_id=user.tgid)
|
return TelegramMessage(displayname).format(MentionName, user_id=user.tgid)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
room = cls.room_regex.match(href)
|
room = cls.room_regex.match(href)
|
||||||
|
|||||||
@@ -104,6 +104,16 @@ class Puppet:
|
|||||||
""" Is True if the puppet is logged in. """
|
""" Is True if the puppet is logged in. """
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@property
|
||||||
|
def plain_displayname(self) -> str:
|
||||||
|
tpl = config["bridge.displayname_template"]
|
||||||
|
if tpl == "{displayname}":
|
||||||
|
# Template has no extra stuff, no need to parse.
|
||||||
|
return self.displayname
|
||||||
|
regex = re.compile("^" + re.escape(tpl).replace(re.escape("{displayname}"), "(.+?)") + "$")
|
||||||
|
match = regex.match(self.displayname)
|
||||||
|
return match.group(1) or self.displayname
|
||||||
|
|
||||||
# region Custom puppet management
|
# region Custom puppet management
|
||||||
def _fresh_intent(self) -> IntentAPI:
|
def _fresh_intent(self) -> IntentAPI:
|
||||||
return (self.az.intent.user(self.custom_mxid, self.access_token)
|
return (self.az.intent.user(self.custom_mxid, self.access_token)
|
||||||
@@ -312,8 +322,7 @@ class Puppet:
|
|||||||
"first name": info.first_name,
|
"first name": info.first_name,
|
||||||
"last name": info.last_name,
|
"last name": info.last_name,
|
||||||
}
|
}
|
||||||
preferences = config.get("bridge.displayname_preference",
|
preferences = config["bridge.displayname_preference"]
|
||||||
["full name", "username", "phone"])
|
|
||||||
name = None
|
name = None
|
||||||
for preference in preferences:
|
for preference in preferences:
|
||||||
name = data[preference]
|
name = data[preference]
|
||||||
@@ -327,7 +336,7 @@ class Puppet:
|
|||||||
|
|
||||||
if not enable_format:
|
if not enable_format:
|
||||||
return name
|
return name
|
||||||
return config.get("bridge.displayname_template", "{displayname} (Telegram)").format(
|
return config["bridge.displayname_template"].format(
|
||||||
displayname=name)
|
displayname=name)
|
||||||
|
|
||||||
async def update_info(self, source: 'AbstractUser', info: User) -> None:
|
async def update_info(self, source: 'AbstractUser', info: User) -> None:
|
||||||
|
|||||||
@@ -97,6 +97,10 @@ class User(AbstractUser):
|
|||||||
def displayname(self) -> str:
|
def displayname(self) -> str:
|
||||||
return self.mxid_localpart
|
return self.mxid_localpart
|
||||||
|
|
||||||
|
@property
|
||||||
|
def plain_displayname(self) -> str:
|
||||||
|
return self.displayname
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def db_contacts(self) -> List[DBContact]:
|
def db_contacts(self) -> List[DBContact]:
|
||||||
return [self.db.merge(DBContact(user=self.tgid, contact=puppet.id))
|
return [self.db.merge(DBContact(user=self.tgid, contact=puppet.id))
|
||||||
|
|||||||
Reference in New Issue
Block a user