Skip to content

Commit 4b39115

Browse files
committed
fix: decouple http context from whatsapp context, always use background context for whatsapp, upgrade vendor packages
1 parent 97c16d1 commit 4b39115

File tree

3 files changed

+24
-26
lines changed

3 files changed

+24
-26
lines changed

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ require (
77
github.com/lib/pq v1.10.9
88
github.com/sashabaranov/go-openai v1.41.2
99
github.com/sirupsen/logrus v1.9.3
10-
github.com/spf13/cobra v1.10.1
11-
go.mau.fi/whatsmeow v0.0.0-20251116104239-3aca43070cd4
10+
github.com/spf13/cobra v1.10.2
11+
go.mau.fi/whatsmeow v0.0.0-20251205211405-fd6170ac96e5
1212
google.golang.org/protobuf v1.36.10
1313
modernc.org/sqlite v1.17.0
1414
)
@@ -24,9 +24,9 @@ require (
2424
github.com/mattn/go-colorable v0.1.14 // indirect
2525
github.com/mattn/go-isatty v0.0.20 // indirect
2626
github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490 // indirect
27-
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
27+
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
2828
github.com/rs/zerolog v1.34.0 // indirect
29-
github.com/spf13/pflag v1.0.10 // indirect
29+
github.com/spf13/pflag v1.0.9 // indirect
3030
github.com/vektah/gqlparser/v2 v2.5.27 // indirect
3131
go.mau.fi/libsignal v0.2.1 // indirect
3232
go.mau.fi/util v0.9.3 // indirect

go.sum

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490/go.mod h1:pxMtw7c
5050
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
5151
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
5252
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
53+
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
5354
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
54-
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
55-
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
5655
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
5756
github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY=
5857
github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ=
@@ -63,11 +62,10 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
6362
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
6463
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
6564
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
66-
github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s=
67-
github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0=
65+
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
66+
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
67+
github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
6868
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
69-
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
70-
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
7169
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
7270
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
7371
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
@@ -79,8 +77,9 @@ go.mau.fi/libsignal v0.2.1 h1:vRZG4EzTn70XY6Oh/pVKrQGuMHBkAWlGRC22/85m9L0=
7977
go.mau.fi/libsignal v0.2.1/go.mod h1:iVvjrHyfQqWajOUaMEsIfo3IqgVMrhWcPiiEzk7NgoU=
8078
go.mau.fi/util v0.9.3 h1:aqNF8KDIN8bFpFbybSk+mEBil7IHeBwlujfyTnvP0uU=
8179
go.mau.fi/util v0.9.3/go.mod h1:krWWfBM1jWTb5f8NCa2TLqWMQuM81X7TGQjhMjBeXmQ=
82-
go.mau.fi/whatsmeow v0.0.0-20251116104239-3aca43070cd4 h1:7hXdxCFs2Me4nypiWjdBNonaFrPfmYJvEtTOwLctSHU=
83-
go.mau.fi/whatsmeow v0.0.0-20251116104239-3aca43070cd4/go.mod h1:5aYaEa3FF5e5XWsA8Xa80ttUXZvb6HyaBGgo2SfzUkE=
80+
go.mau.fi/whatsmeow v0.0.0-20251205211405-fd6170ac96e5 h1:ld9iMjQ2PxZtsrbq2vFsFPf6qDhiON3DiEipQEPI8hA=
81+
go.mau.fi/whatsmeow v0.0.0-20251205211405-fd6170ac96e5/go.mod h1:5aYaEa3FF5e5XWsA8Xa80ttUXZvb6HyaBGgo2SfzUkE=
82+
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
8483
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
8584
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
8685
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=

pkg/whatsapp/whatsapp.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func WhatsAppLogout() error {
227227
var err error
228228

229229
// Set WhatsApp Client Presence to Unavailable
230-
WhatsAppPresence(context.Background(), false)
230+
WhatsAppPresence(false)
231231

232232
// Logout WhatsApp Client and Disconnect from WebSocket
233233
err = WhatsAppClient.Logout(context.Background())
@@ -254,15 +254,15 @@ func WhatsAppLogout() error {
254254
return errors.New("WhatsApp Client is not Valid")
255255
}
256256

257-
func WhatsAppPresence(ctx context.Context, isAvailable bool) {
257+
func WhatsAppPresence(isAvailable bool) {
258258
if isAvailable {
259-
_ = WhatsAppClient.SendPresence(ctx, types.PresenceAvailable)
259+
_ = WhatsAppClient.SendPresence(context.Background(), types.PresenceAvailable)
260260
} else {
261-
_ = WhatsAppClient.SendPresence(ctx, types.PresenceUnavailable)
261+
_ = WhatsAppClient.SendPresence(context.Background(), types.PresenceUnavailable)
262262
}
263263
}
264264

265-
func WhatsAppComposeStatus(ctx context.Context, rjid types.JID, isComposing bool, isAudio bool) {
265+
func WhatsAppComposeStatus(rjid types.JID, isComposing bool, isAudio bool) {
266266
// Set Compose Status
267267
var typeCompose types.ChatPresence
268268
if isComposing {
@@ -280,10 +280,10 @@ func WhatsAppComposeStatus(ctx context.Context, rjid types.JID, isComposing bool
280280
}
281281

282282
// Send Chat Compose Status
283-
_ = WhatsAppClient.SendChatPresence(ctx, rjid, typeCompose, typeComposeMedia)
283+
_ = WhatsAppClient.SendChatPresence(context.Background(), rjid, typeCompose, typeComposeMedia)
284284
}
285285

286-
func WhatsAppSendGPTResponse(ctx context.Context, event *events.Message, response string) (string, error) {
286+
func WhatsAppSendGPTResponse(event *events.Message, response string) (string, error) {
287287
if WhatsAppClient != nil {
288288
var err error
289289

@@ -300,7 +300,7 @@ func WhatsAppSendGPTResponse(ctx context.Context, event *events.Message, respons
300300
}
301301

302302
// Send WhatsApp Message Proto
303-
_, err = WhatsAppClient.SendMessage(ctx, rJID, msgContent, msgExtra)
303+
_, err = WhatsAppClient.SendMessage(context.Background(), rJID, msgContent, msgExtra)
304304
if err != nil {
305305
return "", err
306306
}
@@ -318,7 +318,6 @@ func WhatsAppSendGPTResponse(ctx context.Context, event *events.Message, respons
318318
func WhatsAppHandler(event interface{}) {
319319
switch evt := event.(type) {
320320
case *events.Message:
321-
ctx := context.Background()
322321
realRJID := evt.Info.Chat.String()
323322

324323
var maskRJID string
@@ -348,11 +347,11 @@ func WhatsAppHandler(event interface{}) {
348347
log.Println(log.LogLevelInfo, "Question : "+question)
349348

350349
// Set Chat Presence
351-
WhatsAppPresence(ctx, true)
352-
WhatsAppComposeStatus(ctx, evt.Info.Chat, true, false)
350+
WhatsAppPresence(true)
351+
WhatsAppComposeStatus(evt.Info.Chat, true, false)
353352
defer func() {
354-
WhatsAppComposeStatus(ctx, evt.Info.Chat, false, false)
355-
WhatsAppPresence(ctx, false)
353+
WhatsAppComposeStatus(evt.Info.Chat, false, false)
354+
WhatsAppPresence(false)
356355
}()
357356

358357
response, err := gpt.GPTResponse(question)
@@ -361,7 +360,7 @@ func WhatsAppHandler(event interface{}) {
361360
response = "Sorry, the AI can not response for this time. Please try again after a few moment 🥺"
362361
}
363362

364-
_, err = WhatsAppSendGPTResponse(ctx, evt, response)
363+
_, err = WhatsAppSendGPTResponse(evt, response)
365364
if err != nil {
366365
log.Println(log.LogLevelError, "Failed to Send OpenAI GPT Response")
367366
}

0 commit comments

Comments
 (0)