UNPKG

neroxbailx

Version:

baileys whatsapp-api

73 lines (61 loc) 2.31 kB
/** * 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 };