diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index 98a4cbec..b242d276 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -51,6 +51,7 @@ import { getBinaryNodeChildren, getBinaryNodeChildString, isJidGroup, + isJidNewsletter, isJidStatusBroadcast, isLidUser, isPnUser, @@ -1250,30 +1251,36 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { await sendMessageAck(node, NACK_REASONS.UnhandledError) }) } else { - // no type in the receipt => message delivered - let type: MessageReceiptType = undefined - let participant = msg.key.participant - if (category === 'peer') { - // special peer message - type = 'peer_msg' - } else if (msg.key.fromMe) { - // message was sent by us from a different device - type = 'sender' - // need to specially handle this case - if (isLidUser(msg.key.remoteJid!) || isLidUser(msg.key.remoteJidAlt)) { - participant = author // TODO: investigate sending receipts to LIDs and not PNs + await sendMessageAck(node) + const isNewsletter = isJidNewsletter(msg.key.remoteJid!) + if (!isNewsletter) { + // no type in the receipt => message delivered + let type: MessageReceiptType = undefined + let participant = msg.key.participant + if (category === 'peer') { + // special peer message + type = 'peer_msg' + } else if (msg.key.fromMe) { + // message was sent by us from a different device + type = 'sender' + // need to specially handle this case + if (isLidUser(msg.key.remoteJid!) || isLidUser(msg.key.remoteJidAlt)) { + participant = author // TODO: investigate sending receipts to LIDs and not PNs + } + } else if (!sendActiveReceipts) { + type = 'inactive' } - } else if (!sendActiveReceipts) { - type = 'inactive' - } - await sendReceipt(msg.key.remoteJid!, participant!, [msg.key.id!], type) + await sendReceipt(msg.key.remoteJid!, participant!, [msg.key.id!], type) - // send ack for history message - const isAnyHistoryMsg = getHistoryMsg(msg.message!) - if (isAnyHistoryMsg) { - const jid = jidNormalizedUser(msg.key.remoteJid!) - await sendReceipt(jid, undefined, [msg.key.id!], 'hist_sync') + // send ack for history message + const isAnyHistoryMsg = getHistoryMsg(msg.message!) + if (isAnyHistoryMsg) { + const jid = jidNormalizedUser(msg.key.remoteJid!) + await sendReceipt(jid, undefined, [msg.key.id!], 'hist_sync') + } + } else { + logger.debug({ key: msg.key }, 'processed newsletter message without receipts') } }