neroxbailx
Version:
baileys whatsapp-api
73 lines (61 loc) • 2.31 kB
JavaScript
/**
* Group Message Handler Utilities
* Menangani pesan grup yang tidak bisa didecrypt dengan graceful handling
*/
const makeGroupMessageHandler = (logger) => {
const handleGroupDecryption = async (decryptFn, messageInfo) => {
try {
const result = await decryptFn();
// Jika hasil null, berarti pesan tidak bisa didecrypt (normal untuk bot baru join grup)
if (result === null) {
logger?.warn('📱 Group message could not be decrypted - bot may not have session for this sender', {
jid: messageInfo?.jid,
keyId: messageInfo?.keyId,
reason: 'Missing sender key or session'
});
return null;
}
return result;
} catch (error) {
// Log error tapi jangan crash bot
logger?.error('Group message decryption error:', {
jid: messageInfo?.jid,
error: error.message,
keyId: messageInfo?.keyId
});
// Return null untuk graceful handling
return null;
}
};
const isGroupMessage = (jid) => {
return jid && jid.endsWith('@g.us');
};
const shouldIgnoreDecryptionError = (error, jid) => {
if (!isGroupMessage(jid)) return false;
const ignorableErrors = [
'No session found to decrypt message for keyId',
'No SenderKeyRecord found for decryption',
'InvalidMessageException'
];
return ignorableErrors.some(ignorableError =>
error.message && error.message.includes(ignorableError)
);
};
const logGroupJoinInfo = (jid, logger) => {
if (isGroupMessage(jid)) {
logger?.info('🎯 Bot is in group chat', {
groupJid: jid,
tip: 'Some historical messages may not be decryptable - this is normal behavior'
});
}
};
return {
handleGroupDecryption,
isGroupMessage,
shouldIgnoreDecryptionError,
logGroupJoinInfo
};
};
module.exports = {
makeGroupMessageHandler
};