From c6dd85040ce49280b5adbd8c250c39ca027180b6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 3 Dec 2025 23:23:07 +0200 Subject: [PATCH] client: fix parsing username message links --- pkg/connector/client.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/connector/client.go b/pkg/connector/client.go index deade5a0..260bc2a7 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -338,14 +338,15 @@ func NewTelegramClient(ctx context.Context, tc *TelegramConnector, login *bridge portalKey = client.makePortalKeyFromID(ids.PeerTypeChannel, chatID) } else if submatches[1] == "premium" { portalKey = client.makePortalKeyFromID(ids.PeerTypeUser, 777000) - } else { - // FIXME why does this not handle usernames?? - userID, err := strconv.ParseInt(submatches[1], 10, 64) - if err != nil { - log.Warn().Err(err).Msg("error parsing user ID") - return url - } + } else if userID, err := strconv.ParseInt(submatches[1], 10, 64); err == nil && userID > 0 { portalKey = client.makePortalKeyFromID(ids.PeerTypeUser, userID) + } else if peerType, peerID, err := client.ScopedStore.GetEntityIDByUsername(ctx, submatches[1]); err != nil { + log.Err(err).Msg("Failed to get entity ID by username") + return url + } else if peerType != "" { + portalKey = client.makePortalKeyFromID(peerType, peerID) + } else { + return url } portal, err := tc.Bridge.DB.Portal.GetByKey(ctx, portalKey)