From 456658faf9078cb169481247906d1a95b6dcdc1c Mon Sep 17 00:00:00 2001 From: Itay Sharoni <110981018+Itay-Sharoni@users.noreply.github.com> Date: Sun, 23 Jul 2023 11:15:47 +0300 Subject: [PATCH] feat: add condition, if message received with ExtendedTextMessage, then use it, else use Conversation attribute (#82) * add condition, if message received with ExtendedTextMessage, then use it instead of Conversation * Update go.mod * Update whatsapp.go fix webhook --- src/go.mod | 2 +- src/pkg/whatsapp/whatsapp.go | 57 ++++++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/go.mod b/src/go.mod index 0a2086c..a9ee849 100644 --- a/src/go.mod +++ b/src/go.mod @@ -18,7 +18,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/valyala/fasthttp v1.47.0 go.mau.fi/libsignal v0.1.0 - go.mau.fi/whatsmeow v0.0.0-20230608204524-7aedaa1de108 + go.mau.fi/whatsmeow v0.0.0-20230628230045-73f143bc9874 google.golang.org/protobuf v1.30.0 ) diff --git a/src/pkg/whatsapp/whatsapp.go b/src/pkg/whatsapp/whatsapp.go index 92c776c..f4f2dcd 100644 --- a/src/pkg/whatsapp/whatsapp.go +++ b/src/pkg/whatsapp/whatsapp.go @@ -266,22 +266,47 @@ func sendAutoReplyWebhook(evt *events.Message) error { audioMedia := evt.Message.GetAudioMessage() documentMedia := evt.Message.GetDocumentMessage() - body := map[string]any{ - "message_id": evt.Info.ID, - "from": evt.Info.SourceString(), - "message": evt.Message.GetConversation(), - "image": imageMedia, - "video": videoMedia, - "audio": audioMedia, - "document": documentMedia, - "location": evt.Message.GetLocationMessage(), - "sticker": stickerMedia, - "live_location": evt.Message.GetLiveLocationMessage(), - "view_once": evt.Message.GetViewOnceMessage(), - "list": evt.Message.GetListMessage(), - "order": evt.Message.GetOrderMessage(), - "contact": evt.Message.GetContactMessage(), - "forwarded": evt.Message.GetGroupInviteMessage(), + message := evt.Message.GetConversation() + if extendedMessage := evt.Message.ExtendedTextMessage.GetText(); extendedMessage != "" { + message = extendedMessage + } + + + var quotedmessage interface{} = nil + if evt.Message.ExtendedTextMessage != nil { + quotedmessage = evt.Message.ExtendedTextMessage.ContextInfo.QuotedMessage.GetConversation() + if quotedmessage == "" { + quotedmessage = nil + } + } + + var forwarded interface{} = nil + if evt.Message.ExtendedTextMessage != nil && evt.Message.ExtendedTextMessage.ContextInfo != nil { + forwarded = evt.Message.ExtendedTextMessage.ContextInfo.GetIsForwarded() + if forwarded == false { + forwarded = nil + } + } + + + body := map[string]any{ + "message_id": evt.Info.ID, + "from": evt.Info.SourceString(), + "pushname": evt.Info.PushName, + "message": message, + "image": imageMedia, + "video": videoMedia, + "audio": audioMedia, + "document": documentMedia, + "location": evt.Message.GetLocationMessage(), + "sticker": stickerMedia, + "live_location": evt.Message.GetLiveLocationMessage(), + "view_once": evt.Message.GetViewOnceMessage(), + "list": evt.Message.GetListMessage(), + "order": evt.Message.GetOrderMessage(), + "contact": evt.Message.GetContactMessage(), + "forwarded": forwarded, + "quotedmessage": quotedmessage, } if imageMedia != nil {