diff --git a/pkg/connector/handletelegram.go b/pkg/connector/handletelegram.go index e881bd3a..1e7e06dc 100644 --- a/pkg/connector/handletelegram.go +++ b/pkg/connector/handletelegram.go @@ -922,7 +922,8 @@ func (t *TelegramClient) onUpdate(ctx context.Context, e tg.Entities, upd tg.Upd zerolog.Ctx(ctx).Trace().Stringer("channel", channel).Msg("Raw channel info in update") if channel.GetLeft() { t.selfLeaveChat(ctx, t.makePortalKeyFromID(ids.PeerTypeChannel, channel.ID, 0), fmt.Errorf("left flag in entity update")) - } else if _, err := t.updateChannel(ctx, channel); err != nil { + } + if _, err := t.updateChannel(ctx, channel); err != nil { return err } } diff --git a/pkg/connector/tomatrix.go b/pkg/connector/tomatrix.go index 501350cd..be9acf10 100644 --- a/pkg/connector/tomatrix.go +++ b/pkg/connector/tomatrix.go @@ -273,8 +273,10 @@ func (t *TelegramClient) addForwardHeader(ctx context.Context, part *bridgev2.Co ) case *tg.PeerChannel, *tg.PeerChat: unknownType := "unknown chat" - if _, ok := from.(*tg.PeerChannel); ok { + var channelID int64 + if ch, ok := from.(*tg.PeerChannel); ok { unknownType = "unknown channel" + channelID = ch.ChannelID } portal, err := t.main.Bridge.GetExistingPortalByKey(ctx, t.makePortalKeyFromPeer(from, 0)) if err != nil { @@ -293,6 +295,19 @@ func (t *TelegramClient) addForwardHeader(ctx context.Context, part *bridgev2.Co fwdFromText = unknownType fwdFromHTML = unknownType } + if channelID != 0 && fwdFromText == unknownType { + ghost, err := t.main.Bridge.GetExistingGhostByID(ctx, ids.MakeChannelUserID(channelID)) + if err != nil { + return err + } else if ghost != nil && ghost.Name != "" { + fwdFromText = ghost.Name + fwdFromHTML = fmt.Sprintf( + `%s`, + ghost.Intent.GetMXID().URI().MatrixToURL(), + html.EscapeString(fwdFromText), + ) + } + } // TODO fetch channel if not found } if fwdFromText == "" && fwd.FromName != "" {