fix: establece fromMe=false en reacciones y actualiza tests

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
main
brobert 1 week ago
parent 89c837b34d
commit 5f8b494a7f

@ -167,11 +167,12 @@ export const ResponseQueue = {
const chatId = String(meta.chatId || ''); const chatId = String(meta.chatId || '');
const messageId = String(meta.messageId || ''); const messageId = String(meta.messageId || '');
const emoji = String(meta.emoji || ''); const emoji = String(meta.emoji || '');
const emojiLabel = emoji === '✅' ? 'check' : (emoji === '🤖' ? 'robot' : (emoji === '⚠️' ? 'warn' : 'other'));
if (!chatId || !messageId || !emoji) { if (!chatId || !messageId || !emoji) {
return { ok: false, error: 'invalid_reaction_metadata' }; return { ok: false, error: 'invalid_reaction_metadata' };
} }
const payload = { const payload = {
key: { remoteJid: chatId, fromMe: true, id: messageId }, key: { remoteJid: chatId, fromMe: false, id: messageId },
reaction: emoji reaction: emoji
}; };
try { try {
@ -184,13 +185,16 @@ export const ResponseQueue = {
const body = await response.text().catch(() => ''); const body = await response.text().catch(() => '');
const errTxt = body?.slice(0, 200) || `HTTP ${response.status}`; const errTxt = body?.slice(0, 200) || `HTTP ${response.status}`;
console.warn('Send reaction failed:', { status: response.status, body: errTxt }); console.warn('Send reaction failed:', { status: response.status, body: errTxt });
try { Metrics.inc('reactions_failed_total', 1, { emoji: emojiLabel }); } catch {}
return { ok: false, status: response.status, error: errTxt }; return { ok: false, status: response.status, error: errTxt };
} }
console.log(`✅ Sent reaction with payload: ${JSON.stringify(payload)}`); console.log(`✅ Sent reaction with payload: ${JSON.stringify(payload)}`);
try { Metrics.inc('reactions_sent_total', 1, { emoji: emojiLabel }); } catch {}
return { ok: true, status: response.status }; return { ok: true, status: response.status };
} catch (err) { } catch (err) {
const errMsg = (err instanceof Error ? err.message : String(err)); const errMsg = (err instanceof Error ? err.message : String(err));
console.error('Network error sending reaction:', errMsg); console.error('Network error sending reaction:', errMsg);
try { Metrics.inc('reactions_failed_total', 1, { emoji: emojiLabel }); } catch {}
return { ok: false, error: errMsg }; return { ok: false, error: errMsg };
} }
} }

@ -77,6 +77,6 @@ describe('ResponseQueue - jobs de reacción (enqueue + sendOne)', () => {
expect(captured.url?.includes('/message/sendReaction/instance-1')).toBe(true); expect(captured.url?.includes('/message/sendReaction/instance-1')).toBe(true);
expect(captured.payload).toBeDefined(); expect(captured.payload).toBeDefined();
expect(captured.payload.reaction).toBe('🤖'); expect(captured.payload.reaction).toBe('🤖');
expect(captured.payload.key).toEqual({ remoteJid: '123@g.us', fromMe: true, id: 'MSG-99' }); expect(captured.payload.key).toEqual({ remoteJid: '123@g.us', fromMe: false, id: 'MSG-99' });
}); });
}); });

Loading…
Cancel
Save