From 68de84973a1f973b017c7c9be8d5cac6eb9b76ec Mon Sep 17 00:00:00 2001 From: devlikepro Date: Thu, 27 Mar 2025 13:35:16 +0700 Subject: [PATCH] [core] GOWS - extract replyTo fix #876 --- src/core/engines/gows/session.gows.core.ts | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/core/engines/gows/session.gows.core.ts b/src/core/engines/gows/session.gows.core.ts index 9195bb4c..6cdda1da 100644 --- a/src/core/engines/gows/session.gows.core.ts +++ b/src/core/engines/gows/session.gows.core.ts @@ -1,4 +1,5 @@ import { + getContentType, getUrlFromDirectPath, isJidGroup, isJidStatusBroadcast, @@ -129,6 +130,7 @@ import { promisify } from 'util'; import * as gows from './types'; import MessageServiceClient = messages.MessageServiceClient; +import { ReplyToMessage } from '@waha/structures/message.dto'; enum WhatsMeowEvent { CONNECTED = 'gows.ConnectedEventData', @@ -1396,7 +1398,7 @@ export class WhatsappSessionGoWSCore extends WhatsappSession { const fromToParticipant = getFromToParticipant(message); const id = buildMessageId(message); const body = this.extractBody(message.Message); - const replyTo = null; // TODO: this.extractReplyTo(message.message); + const replyTo = this.extractReplyTo(message.Message); let ack; if (message.Status) { ack = statusToAck(message.Status); @@ -1454,6 +1456,25 @@ export class WhatsappSessionGoWSCore extends WhatsappSession { return body; } + protected extractReplyTo(message): ReplyToMessage | null { + const msgType = getContentType(message); + const contextInfo = message[msgType]?.contextInfo; + if (!contextInfo) { + return null; + } + const quotedMessage = contextInfo.quotedMessage; + if (!quotedMessage) { + return null; + } + const body = this.extractBody(quotedMessage); + return { + id: contextInfo.stanzaID, + participant: toCusFormat(contextInfo.participant), + body: body, + _data: quotedMessage, + }; + } + public async getEngineInfo() { const clientState = this.client?.getChannel().getConnectivityState(false); const streamState = this.stream$?.client