























@@ -234,6 +234,54 @@ describe("web inbound media saves with extension", () => {
234234await listener.close();
235235});
236236237+it("stores quoted image media from reply context", async () => {
238+const onMessage = vi.fn();
239+const listener = await monitorWebInbox({
240+cfg: {
241+channels: { whatsapp: { allowFrom: ["*"] } },
242+messages: { messagePrefix: undefined, responsePrefix: undefined },
243+} as never,
244+verbose: false,
245+ onMessage,
246+accountId: "default",
247+authDir: path.join(HOME, "wa-auth"),
248+});
249+const realSock = await getMockSocket();
250+251+realSock.ev.emit("messages.upsert", {
252+type: "notify",
253+messages: [
254+{
255+key: { id: "quote-img-reply", fromMe: false, remoteJid: "111@g.us" },
256+message: {
257+extendedTextMessage: {
258+text: "@bot what is this?",
259+contextInfo: {
260+stanzaId: "quoted-image",
261+participant: "222@s.whatsapp.net",
262+mentionedJid: ["me@s.whatsapp.net"],
263+quotedMessage: {
264+imageMessage: { mimetype: "image/jpeg" },
265+},
266+},
267+},
268+},
269+messageTimestamp: 1_700_000_005,
270+},
271+],
272+});
273+274+const inbound = await waitForMessage(onMessage);
275+expect(inbound.replyToBody).toBe("<media:image>");
276+expect(inbound.mediaPath).toBeDefined();
277+expect(path.extname(inbound.mediaPath as string)).toBe(".jpg");
278+expect(saveMediaBufferSpy).toHaveBeenCalled();
279+const lastCall = saveMediaBufferSpy.mock.calls.at(-1);
280+expect(lastCall?.[1]).toBe("image/jpeg");
281+282+await listener.close();
283+});
284+237285it("passes mediaMaxMb to saveMediaBuffer", async () => {
238286const onMessage = vi.fn();
239287const listener = await monitorWebInbox({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。