tomatrix: include external_url field in messages

This commit is contained in:
Tulir Asokan
2026-04-28 22:01:54 +03:00
parent 5a1a478992
commit cdb77f938a

View File

@@ -257,6 +257,12 @@ func (tc *TelegramClient) convertToMatrix(
log.Warn().Type("reply_to", replyTo).Msg("unhandled reply to type")
}
}
if cm.Parts[0].Extra == nil {
cm.Parts[0].Extra = make(map[string]any)
}
if externalURL := getMessageLink(msg); externalURL != "" {
cm.Parts[0].Extra["external_url"] = externalURL
}
if len(cm.Parts) > 1 {
log.Warn().Int("part_count", len(cm.Parts)).Msg("Message has multiple parts")
for i, part := range cm.Parts[1:] {
@@ -274,6 +280,23 @@ func (tc *TelegramClient) convertToMatrix(
return
}
func getMessageLink(msg *tg.Message) string {
var chatID int64
switch peer := msg.PeerID.(type) {
case *tg.PeerChat:
chatID = peer.ChatID
case *tg.PeerChannel:
chatID = peer.ChannelID
default: // also PeerUser
return ""
}
topicID := rawGetTopicID(msg.ReplyTo)
if topicID > 0 {
return fmt.Sprintf("https://t.me/c/%d/%d/%d", chatID, topicID, msg.ID)
}
return fmt.Sprintf("https://t.me/c/%d/%d", chatID, msg.ID)
}
func (tc *TelegramClient) addForwardHeader(ctx context.Context, part *bridgev2.ConvertedMessagePart, fwd tg.MessageFwdHeader) error {
var fwdFromText, fwdFromHTML string
switch from := fwd.FromID.(type) {