From f5a0a58a196ce646136628f5ceefdbe6ee036df4 Mon Sep 17 00:00:00 2001 From: LiaoYijun Date: Wed, 24 Sep 2025 15:05:21 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8feat=EF=BC=9A=E5=A2=9E=E5=8A=A0documne?= =?UTF-8?q?tMessagee=E3=80=81audioMessage=E6=B6=88=E6=81=AF=E8=A7=A3?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/baileys/helper.js | 6 ++++- wai-server/core/baileys/index.js | 39 +++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/wai-server/core/baileys/helper.js b/wai-server/core/baileys/helper.js index e7ba004..4757f8c 100644 --- a/wai-server/core/baileys/helper.js +++ b/wai-server/core/baileys/helper.js @@ -66,8 +66,12 @@ const getFileExtension = mimeType => { return '.bmp'; case 'image/webp': return '.webp'; + case 'audio/mpeg': + return '.mp3'; + case 'audio/ogg; codecs=opus': + return '.opus'; default: - return '-unknown'; + return '.unknown'; } } diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index b754094..bbda20b 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -135,6 +135,13 @@ const createWhatsApp = async phone => { } }; + const saveMediaFile = async (original, fileName) => { + const mediaBuffer = await downloadMediaMessage( + original, 'buffer', {}, { logger, reuploadRequest: waSocket.updateMediaMessage, }, + ); + await writeFile(fileName, mediaBuffer); + }; + const parseTextMessage = original => { const text = original.message?.conversation; return { @@ -184,11 +191,8 @@ const createWhatsApp = async phone => { const parseImageMessage = async original => { const imageMessage = original.message.imageMessage; const fileExtension = getFileExtension(imageMessage.mimetype); - const imageBuffer = await downloadMediaMessage( - original, 'buffer', {}, { logger, reuploadRequest: waSocket.updateMediaMessage, }, - ); const imageFilename = './temp/image_' + whatsAppNo + '_' + original.key.id + fileExtension; - await writeFile(imageFilename, imageBuffer); + await saveMediaFile(original, imageFilename); return { type: 'image', @@ -202,14 +206,27 @@ const createWhatsApp = async phone => { }; }; + const parseAudioMessage = async original => { + const audioMessage = original.message.audioMessage; + const fileExtension = getFileExtension(audioMessage.mimetype); + const audioFilename = './temp/audio_' + whatsAppNo + '_' + original.key.id + fileExtension; + await saveMediaFile(original, audioFilename); + + return { + type: 'audio', + audio: { + mimetype: audioMessage.mimetype, + sha256: uint8ArrayToBase64(audioMessage.fileSha256), + filePath: audioFilename, + link_original: audioMessage.url, + }, + }; + }; + const parseDocumentMessage = async original => { const documentMessage = original.message.documentMessage || original.message.documentWithCaptionMessage.message.documentMessage; - // Extract to inner function - const mediaBuffer = await downloadMediaMessage( - original, 'buffer', {}, { logger, reuploadRequest: waSocket.updateMediaMessage, }, - ); - const documentFilename = './temp/doc_' + whatsAppNo + '_' + original.key.id + '_' + documentMessage.fileName; - await writeFile(documentFilename, mediaBuffer); + const documentFilename = './temp/file_' + whatsAppNo + '_' + original.key.id + '_' + documentMessage.fileName; + await saveMediaFile(original, documentFilename); return { type: 'document', @@ -257,6 +274,8 @@ const createWhatsApp = async phone => { if (original.message?.documentMessage || original.message?.documentWithCaptionMessage) return parseDocumentMessage; + if (original.message?.audioMessage) return parseAudioMessage; + if (original.message?.templateMessage) return parseTemplateMessage; return null;