Merge pull request #11 from gavrielc/claude/fix-message-loss-error-DJwye
Fix message loss when processMessage throws
This commit is contained in:
13
src/index.ts
13
src/index.ts
@@ -358,12 +358,19 @@ async function startMessageLoop(): Promise<void> {
|
|||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
const jids = Object.keys(registeredGroups);
|
const jids = Object.keys(registeredGroups);
|
||||||
const { messages, newTimestamp } = getNewMessages(jids, lastTimestamp);
|
const { messages } = getNewMessages(jids, lastTimestamp);
|
||||||
lastTimestamp = newTimestamp;
|
|
||||||
|
|
||||||
if (messages.length > 0) logger.info({ count: messages.length }, 'New messages');
|
if (messages.length > 0) logger.info({ count: messages.length }, 'New messages');
|
||||||
for (const msg of messages) await processMessage(msg);
|
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();
|
saveState();
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error({ err }, 'Error in message loop');
|
logger.error({ err }, 'Error in message loop');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user