From ad5bc33cf34d942d884b42aab66e1c0cf3fda95c Mon Sep 17 00:00:00 2001 From: Daydaylw3 Date: Wed, 15 May 2024 19:04:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=84=E7=90=86=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原本收到合并消息转发的消息,会直接抛出错误,现在捕获这个错误并处理 --- src/service/msgUploader.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/service/msgUploader.js b/src/service/msgUploader.js index f71d431..96bfd46 100644 --- a/src/service/msgUploader.js +++ b/src/service/msgUploader.js @@ -122,7 +122,40 @@ async function sendMsg2RecvdApi(msg) { formData.append('isMsgFromSelf', msg.self() ? '1' : '0') switch (msg.type()) { - case MSG_TYPE_ENUM.ATTACHMENT: + case MSG_TYPE_ENUM.ATTACHMENT: { + try { + /**@type {import('file-box').FileBox} */ + //@ts-expect-errors 这里msg一定是wechaty的msg + const steamFile = msg.toFileBox ? await msg.toFileBox() : msg.content() + formData.append('type', 'file') + let fileInfo = { + // @ts-ignore + ext: steamFile._name.split('.').pop() ?? '', + // @ts-ignore + mime: steamFile._mediaType ?? 'Unknown', + // @ts-ignore + filename: steamFile._name ?? 'UnknownFile' + } + + formData.append( + 'content', + //@ts-expect-errors 需要用到私有属性 + steamFile.buffer /** 发送一个文件 */ ?? + //@ts-expect-errors 需要用到私有属性 + steamFile.stream /** 同一个文件转发 */, + { + filename: fileInfo.filename, + contentType: fileInfo.mime + } + ) + } catch (e) { + /** 如果 const steamFile = msg.toFileBox ? await msg.toFileBox() : msg.content() 这里执行抛出错误 */ + /** 则很有可能是合并消息转发 */ + formData.append('type', 'combineforward') + formData.append('content', msg.text()) + } + break + } case MSG_TYPE_ENUM.VOICE: case MSG_TYPE_ENUM.PIC: case MSG_TYPE_ENUM.VIDEO: {