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()