From fdebeb9ca882c37a43a56f2b444d127d2be9ac0b Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 30 Mar 2026 18:03:12 +0300 Subject: [PATCH] handletelegram: avoid redundant getCustomEmojiDocuments calls --- pkg/connector/handletelegram.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/connector/handletelegram.go b/pkg/connector/handletelegram.go index eff86f07..3e081d48 100644 --- a/pkg/connector/handletelegram.go +++ b/pkg/connector/handletelegram.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" "slices" + "strconv" "strings" "time" @@ -39,6 +40,7 @@ import ( "go.mau.fi/mautrix-telegram/pkg/connector/emojis" "go.mau.fi/mautrix-telegram/pkg/connector/ids" "go.mau.fi/mautrix-telegram/pkg/connector/media" + "go.mau.fi/mautrix-telegram/pkg/connector/store" "go.mau.fi/mautrix-telegram/pkg/connector/tljson" "go.mau.fi/mautrix-telegram/pkg/connector/util" "go.mau.fi/mautrix-telegram/pkg/gotd/tg" @@ -1249,7 +1251,22 @@ func (t *TelegramClient) transferEmojisToMatrix(ctx context.Context, customEmoji return result, nil } - customEmojiDocuments, err := t.client.API().MessagesGetCustomEmojiDocuments(ctx, customEmojiIDs) + missingCustomEmojiIDs := customEmojiIDs[:0] + for _, emojiID := range customEmojiIDs { + file, err := t.main.Store.TelegramFile.GetByLocationID(ctx, store.TelegramFileLocationID(strconv.FormatInt(emojiID, 10))) + if err != nil { + return nil, fmt.Errorf("failed to get file for custom emoji %d: %w", emojiID, err) + } else if file != nil { + result[ids.MakeEmojiIDFromDocumentID(emojiID)] = emojis.EmojiInfo{EmojiURI: file.MXC, DocumentID: emojiID} + } else { + missingCustomEmojiIDs = append(missingCustomEmojiIDs, emojiID) + } + } + if len(missingCustomEmojiIDs) == 0 { + return + } + + customEmojiDocuments, err := t.client.API().MessagesGetCustomEmojiDocuments(ctx, missingCustomEmojiIDs) if err != nil { return nil, err }