diff --git a/mautrix_telegram/formatter/from_telegram.py b/mautrix_telegram/formatter/from_telegram.py index aa74e3fa..e504bb65 100644 --- a/mautrix_telegram/formatter/from_telegram.py +++ b/mautrix_telegram/formatter/from_telegram.py @@ -20,7 +20,7 @@ import logging from telethon.tl.types import * from mautrix_appservice import MatrixRequestError -from .. import user as u, puppet as p +from .. import user as u, puppet as pu, portal as po from ..db import Message as DBMessage from .util import add_surrogates, remove_surrogates @@ -57,13 +57,13 @@ async def telegram_to_matrix(evt, source, native_replies=False, message_link_in_ if user: fwd_from = f"{user.mxid}" else: - puppet = p.Puppet.get(from_id, create=False) + puppet = pu.Puppet.get(from_id, create=False) if puppet and puppet.displayname: fwd_from = f"{puppet.displayname}" else: user = await source.client.get_entity(from_id) if user: - fwd_from = p.Puppet.get_displayname(user, format=False) + fwd_from = pu.Puppet.get_displayname(user, format=False) else: fwd_from = None if not fwd_from: @@ -92,7 +92,7 @@ async def telegram_to_matrix(evt, source, native_replies=False, message_link_in_ if "formatted_body" in content else content["body"]) sender = event['sender'] - puppet = p.Puppet.get_by_mxid(sender, create=False) + puppet = pu.Puppet.get_by_mxid(sender, create=False) displayname = puppet.displayname if puppet else sender reply_to_user = f"{displayname}" reply_to_msg = (("{entity_text}") else: @@ -174,7 +175,7 @@ def _telegram_entities_to_matrix(text, entities): if user: mxid = user.mxid else: - puppet = p.Puppet.get(entity.user_id, create=False) + puppet = pu.Puppet.get(entity.user_id, create=False) mxid = puppet.mxid if puppet else None if mxid: html.append(f"{entity_text}") diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index 949b929a..81a6dcd1 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -1125,7 +1125,7 @@ class Portal: return None for _, portal in cls.by_tgid.items(): - if portal.username == username: + if portal.username and portal.username.lower() == username.lower(): return portal portal = DBPortal.query.filter(DBPortal.username == username).one_or_none() diff --git a/mautrix_telegram/puppet.py b/mautrix_telegram/puppet.py index a316a48d..980c365d 100644 --- a/mautrix_telegram/puppet.py +++ b/mautrix_telegram/puppet.py @@ -174,8 +174,11 @@ class Puppet: @classmethod def find_by_username(cls, username): + if not username: + return None + for _, puppet in cls.cache.items(): - if puppet.username == username: + if puppet.username and puppet.username.lower() == username.lower(): return puppet puppet = DBPuppet.query.filter(DBPuppet.username == username).one_or_none() diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index c7406159..25a62d64 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -311,8 +311,11 @@ class User(AbstractUser): @classmethod def find_by_username(cls, username): + if not username: + return None + for _, user in cls.by_tgid.items(): - if user.username == username: + if user.username and user.username.lower() == username.lower(): return user puppet = DBUser.query.filter(DBUser.tg_username == username).one_or_none()