From 3c3c3f1dec475fc344262f99d29286dc3c28d042 Mon Sep 17 00:00:00 2001 From: Toni Spets Date: Fri, 30 May 2025 13:11:16 +0300 Subject: [PATCH] client: Prefer contact name if exists Don't allow TG user to override your own contact name for them after they have been made a contact. --- pkg/connector/client.go | 3 ++- pkg/connector/metadata.go | 1 + pkg/connector/telegram.go | 8 ++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 69969641..f9706892 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -691,9 +691,10 @@ func (t *TelegramClient) getUserInfoFromTelegramUser(ctx context.Context, u tg.U ExtraUpdates: func(ctx context.Context, ghost *bridgev2.Ghost) (changed bool) { meta := ghost.Metadata.(*GhostMetadata) if !user.Min { - changed = changed || meta.IsPremium != user.Premium || meta.IsBot != user.Bot + changed = changed || meta.IsPremium != user.Premium || meta.IsBot != user.Bot || meta.IsContact != user.Contact meta.IsPremium = user.Premium meta.IsBot = user.Bot + meta.IsContact = user.Contact meta.Deleted = user.Deleted } return changed diff --git a/pkg/connector/metadata.go b/pkg/connector/metadata.go index bf8ed064..b0f71298 100644 --- a/pkg/connector/metadata.go +++ b/pkg/connector/metadata.go @@ -40,6 +40,7 @@ type GhostMetadata struct { IsPremium bool `json:"is_premium,omitempty"` IsBot bool `json:"is_bot,omitempty"` IsChannel bool `json:"is_channel,omitempty"` + IsContact bool `json:"is_contact,omitempty"` Blocked bool `json:"blocked,omitempty"` Deleted bool `json:"deleted,omitempty"` } diff --git a/pkg/connector/telegram.go b/pkg/connector/telegram.go index cd04bb61..eb5c6b00 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/telegram.go @@ -609,8 +609,12 @@ func (t *TelegramClient) onUserName(ctx context.Context, e tg.Entities, update * return err } - name := util.FormatFullName(update.FirstName, update.LastName, false, update.UserID) - userInfo := bridgev2.UserInfo{Name: &name} + var userInfo bridgev2.UserInfo + + if !ghost.Metadata.(*GhostMetadata).IsContact { + name := util.FormatFullName(update.FirstName, update.LastName, false, update.UserID) + userInfo.Name = &name + } if len(update.Usernames) > 0 { for _, ident := range ghost.Identifiers {