tomatrix: fix refetching channel media when bridging messages

This commit is contained in:
Tulir Asokan
2025-03-27 18:29:13 +02:00
parent 28d8276554
commit 6347383788
+26 -3
View File
@@ -131,9 +131,32 @@ func (c *TelegramClient) convertToMatrixWithRefetch(ctx context.Context, portal
ctx = log.WithContext(ctx)
log.Warn().Err(err).Msg("Refetching message to convert media")
m, err := c.client.API().MessagesGetMessages(ctx, []tg.InputMessageClass{
&tg.InputMessageID{ID: msg.ID},
})
// TODO deduplicate this with the direct download code
var m tg.MessagesMessagesClass
peerType, id, err := ids.ParsePortalID(portal.ID)
if err != nil {
return nil, fmt.Errorf("failed to parse portal ID: %w", err)
} else if peerType == ids.PeerTypeChannel {
var accessHash int64
accessHash, err = c.ScopedStore.GetAccessHash(ctx, ids.PeerTypeChannel, id)
if err != nil {
return nil, fmt.Errorf("failed to get channel access hash: %w", err)
}
m, err = c.client.API().ChannelsGetMessages(ctx, &tg.ChannelsGetMessagesRequest{
Channel: &tg.InputChannel{
ChannelID: id,
AccessHash: accessHash,
},
ID: []tg.InputMessageClass{
&tg.InputMessageID{ID: msg.ID},
},
})
} else {
m, err = c.client.API().MessagesGetMessages(ctx, []tg.InputMessageClass{
&tg.InputMessageID{ID: msg.ID},
})
}
if err != nil {
return nil, err
} else if messages, ok := m.(tg.ModifiedMessagesMessages); !ok {