Merge pull request #11 from gavrielc/claude/fix-message-loss-error-DJwye

Fix message loss when processMessage throws
This commit is contained in:
gavrielc
2026-02-01 20:40:13 +02:00
committed by GitHub

View File

@@ -358,12 +358,19 @@ async function startMessageLoop(): Promise<void> {
while (true) {
try {
const jids = Object.keys(registeredGroups);
const { messages, newTimestamp } = getNewMessages(jids, lastTimestamp);
lastTimestamp = newTimestamp;
const { messages } = getNewMessages(jids, lastTimestamp);
if (messages.length > 0) logger.info({ count: messages.length }, 'New messages');
for (const msg of messages) await processMessage(msg);
saveState();
for (const msg of messages) {
try {
await processMessage(msg);
} catch (err) {
logger.error({ err, msg: msg.id }, 'Error processing message');
}
// Advance timestamp after each message to avoid reprocessing on retry
lastTimestamp = msg.timestamp;
saveState();
}
} catch (err) {
logger.error({ err }, 'Error in message loop');
}