fix: serialize telegram media-group processing

This commit is contained in:
Peter Steinberger
2026-01-10 18:05:33 +01:00
parent b383fbeed3
commit f1a1032cd6
2 changed files with 14 additions and 2 deletions

View File

@@ -238,6 +238,7 @@ export function createTelegramBot(opts: TelegramBotOptions) {
};
const mediaGroupBuffer = new Map<string, MediaGroupEntry>();
let mediaGroupProcessing: Promise<void> = Promise.resolve();
const cfg = opts.config ?? loadConfig();
const account = resolveTelegramAccount({
@@ -1228,14 +1229,24 @@ export function createTelegramBot(opts: TelegramBotOptions) {
existing.messages.push({ msg, ctx });
existing.timer = setTimeout(async () => {
mediaGroupBuffer.delete(mediaGroupId);
await processMediaGroup(existing);
mediaGroupProcessing = mediaGroupProcessing
.then(async () => {
await processMediaGroup(existing);
})
.catch(() => undefined);
await mediaGroupProcessing;
}, MEDIA_GROUP_TIMEOUT_MS);
} else {
const entry: MediaGroupEntry = {
messages: [{ msg, ctx }],
timer: setTimeout(async () => {
mediaGroupBuffer.delete(mediaGroupId);
await processMediaGroup(entry);
mediaGroupProcessing = mediaGroupProcessing
.then(async () => {
await processMediaGroup(entry);
})
.catch(() => undefined);
await mediaGroupProcessing;
}, MEDIA_GROUP_TIMEOUT_MS),
};
mediaGroupBuffer.set(mediaGroupId, entry);