UNPKG

neroxbailx

Version:

baileys whatsapp-api

82 lines (66 loc) 2.64 kB
/** * WhatsApp Message Type Handler * Utility untuk handle berbagai jenis pesan WhatsApp dengan benar */ const getMessageType = (message) => { if (!message) return 'unknown'; // Protocol messages (internal, should be filtered out) if (message.senderKeyDistributionMessage) return 'senderKeyDistribution'; if (message.protocolMessage) return 'protocol'; // Text messages if (message.conversation) return 'text'; if (message.extendedTextMessage) return 'extendedText'; // Media messages if (message.imageMessage) return 'image'; if (message.videoMessage) return 'video'; if (message.audioMessage) return 'audio'; if (message.documentMessage) return 'document'; if (message.stickerMessage) return 'sticker'; // Other message types if (message.contactMessage) return 'contact'; if (message.locationMessage) return 'location'; if (message.liveLocationMessage) return 'liveLocation'; if (message.groupInviteMessage) return 'groupInvite'; return 'other'; }; const getMessageText = (message) => { if (!message) return ''; // Extract text from different message types if (message.conversation) return message.conversation; if (message.extendedTextMessage?.text) return message.extendedTextMessage.text; if (message.imageMessage?.caption) return message.imageMessage.caption; if (message.videoMessage?.caption) return message.videoMessage.caption; if (message.documentMessage?.caption) return message.documentMessage.caption; return ''; }; const shouldProcessMessage = (message) => { const type = getMessageType(message); // Skip internal protocol messages const protocolMessages = ['senderKeyDistribution', 'protocol']; if (protocolMessages.includes(type)) return false; // Only process messages with text content const textMessages = ['text', 'extendedText']; return textMessages.includes(type); }; const formatMessageInfo = (msg) => { const type = getMessageType(msg.message); const text = getMessageText(msg.message); const senderJid = msg.key.remoteJid; const senderName = msg.pushName || 'Unknown'; const isGroup = senderJid && senderJid.endsWith('@g.us'); return { type, text, senderJid, senderName, isGroup, messageId: msg.key.id, timestamp: msg.messageTimestamp }; }; module.exports = { getMessageType, getMessageText, shouldProcessMessage, formatMessageInfo };