neroxbailx
Version:
baileys whatsapp-api
82 lines (66 loc) • 2.64 kB
JavaScript
/**
* 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
};