@dyyxyzz/baileys-mod 6.0.43 → 6.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,76 @@ const newsletter_1 = require("./newsletter");
17
17
  const WAUSync_1 = require("../WAUSync")
18
18
  const kikyy = require('./dugong');
19
19
  var ListType = WAProto_1.proto.Message.ListMessage.ListType;
20
+
21
+ // TAMBAHAN BARU: Helper functions untuk button di newsletter
22
+ const getAdditionalNode = (buttonType) => {
23
+ const nodes = []
24
+
25
+ switch(buttonType) {
26
+ case 'list':
27
+ nodes.push({
28
+ tag: 'biz',
29
+ attrs: {},
30
+ content: [{
31
+ tag: 'list_message',
32
+ attrs: { v: '2' }
33
+ }]
34
+ })
35
+ break
36
+
37
+ case 'buttons':
38
+ nodes.push({
39
+ tag: 'biz',
40
+ attrs: {},
41
+ content: [{
42
+ tag: 'buttons_message',
43
+ attrs: { v: '2' }
44
+ }]
45
+ })
46
+ break
47
+
48
+ case 'interactive':
49
+ case 'native_flow':
50
+ nodes.push({
51
+ tag: 'biz',
52
+ attrs: {},
53
+ content: [{
54
+ tag: 'native_flow',
55
+ attrs: { v: '3' }
56
+ }]
57
+ })
58
+ break
59
+
60
+ case 'review_and_pay':
61
+ case 'review_order':
62
+ case 'payment_info':
63
+ case 'payment_status':
64
+ case 'payment_method':
65
+ nodes.push({
66
+ tag: 'biz',
67
+ attrs: {},
68
+ content: [{
69
+ tag: 'payment',
70
+ attrs: { v: '2' }
71
+ }]
72
+ })
73
+ break
74
+ }
75
+
76
+ return nodes
77
+ }
78
+
79
+ const getBinaryNodeFilter = (nodes) => {
80
+ if (!nodes || !Array.isArray(nodes) || nodes.length === 0) return false
81
+
82
+ return nodes.some(node =>
83
+ node.tag === 'biz' ||
84
+ node.tag === 'bot' ||
85
+ node.tag === 'native_flow' ||
86
+ node.tag === 'payment'
87
+ )
88
+ }
89
+
20
90
  const makeMessagesSocket = (config) => {
21
91
  const {
22
92
  logger,
@@ -443,25 +513,27 @@ const makeMessagesSocket = (config) => {
443
513
  const patched = await patchMessageBeforeSending(message, [])
444
514
  const bytes = Utils_1.encodeNewsletterMessage(patched)
445
515
 
446
- // Tambahkan logic untuk detect button type
516
+ // Detect button type dan media type
447
517
  const buttonType = getButtonType(patched)
448
518
  const mediaType = getMediaType(patched)
449
519
 
450
- // Set media type di extraAttrs kalo ada
520
+ // Set extraAttrs untuk newsletter
451
521
  if (mediaType) {
452
522
  extraAttrs['mediatype'] = mediaType
453
523
  }
454
524
 
455
- // Set decrypt-fail untuk message tertentu
456
525
  if (patched.pinInChatMessage || patched.keepInChatMessage ||
457
526
  patched.reactionMessage || patched.protocolMessage?.editedMessage) {
458
527
  extraAttrs['decrypt-fail'] = 'hide'
459
528
  }
460
529
 
461
- // Tambah native flow name kalo ada
462
530
  if (patched.interactiveResponseMessage?.nativeFlowResponseMessage) {
463
531
  extraAttrs['native_flow_name'] = patched.interactiveResponseMessage?.nativeFlowResponseMessage.name
464
532
  }
533
+
534
+ if (patched.interactiveMessage?.nativeFlowMessage) {
535
+ extraAttrs['native_flow_name'] = patched.interactiveMessage?.nativeFlowMessage?.name || 'flow'
536
+ }
465
537
 
466
538
  binaryNodeContent.push({
467
539
  tag: 'plaintext',
@@ -469,17 +541,20 @@ const makeMessagesSocket = (config) => {
469
541
  content: bytes
470
542
  })
471
543
 
472
- if (buttonType) {
473
- const content = WABinary_1.getAdditionalNode(buttonType)
474
- const filteredNode = WABinary_1.getBinaryNodeFilter(additionalNodes)
544
+ // TAMBAHAN: Push button nodes untuk newsletter
545
+ if (buttonType && !didPushAdditional) {
546
+ const content = getAdditionalNode(buttonType)
547
+ const filteredNode = getBinaryNodeFilter(additionalNodes || [])
475
548
 
476
- if (filteredNode) {
549
+ if (filteredNode && additionalNodes) {
550
+ binaryNodeContent.push(...additionalNodes)
477
551
  didPushAdditional = true
478
- stanza.content.push(...additionalNodes)
479
- } else {
552
+ } else if (content && content.length > 0) {
480
553
  binaryNodeContent.push(...content)
554
+ didPushAdditional = true
481
555
  }
482
- logger.debug({ jid }, 'adding business node to newsletter')
556
+
557
+ logger.debug({ jid, buttonType }, 'adding button node to newsletter')
483
558
  }
484
559
  }
485
560
  else {
@@ -549,9 +624,24 @@ const makeMessagesSocket = (config) => {
549
624
  },
550
625
  content: binaryNodeContent
551
626
  }
552
- // if the participant to send to is explicitly specified (generally retry recp)
553
- // ensure the message is only sent to that person
554
- // if a retry receipt is sent to everyone -- it'll fail decryption for everyone else who received the msg
627
+ if (isNewsletter && !didPushAdditional) {
628
+ const buttonType = getButtonType(messages)
629
+
630
+ if (buttonType) {
631
+ const content = WABinary_1.getAdditionalNode(buttonType)
632
+ const filteredNode = WABinary_1.getBinaryNodeFilter(additionalNodes || [])
633
+
634
+ if (filteredNode && additionalNodes) {
635
+ stanza.content.push(...additionalNodes)
636
+ didPushAdditional = true
637
+ } else if (content && content.length > 0) {
638
+ stanza.content.push(...content)
639
+ didPushAdditional = true
640
+ }
641
+
642
+ logger.debug({ jid, buttonType }, 'adding button node to newsletter')
643
+ }
644
+ }
555
645
  if (participant) {
556
646
  if (WABinary_1.isJidGroup(destinationJid)) {
557
647
  stanza.attrs.to = destinationJid;
@@ -702,34 +792,40 @@ const makeMessagesSocket = (config) => {
702
792
  }
703
793
 
704
794
  const getButtonType = (message) => {
705
- if (message.listMessage) {
706
- return 'list'
707
- }
708
- else if (message.buttonsMessage) {
709
- return 'buttons'
710
- }
711
- else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'review_and_pay') {
712
- return 'review_and_pay'
713
- }
714
- else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'review_order') {
715
- return 'review_order'
716
- }
717
- else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'payment_info') {
718
- return 'payment_info'
719
- }
720
- else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'payment_status') {
721
- return 'payment_status'
722
- }
723
- else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'payment_method') {
724
- return 'payment_method'
725
- }
726
- else if (message.interactiveMessage && message.interactiveMessage?.nativeFlowMessage) {
727
- return 'interactive'
728
- }
729
- else if (message.interactiveMessage?.nativeFlowMessage) {
730
- return 'native_flow'
731
- }
795
+ if (message.listMessage) {
796
+ return 'list'
797
+ }
798
+ else if (message.buttonsMessage) {
799
+ return 'buttons'
800
+ }
801
+ else if (message.viewOnceMessage?.message?.interactiveMessage) {
802
+ return 'interactive'
803
+ }
804
+ else if (message.viewOnceMessageV2?.message?.interactiveMessage) {
805
+ return 'interactive'
806
+ }
807
+ else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'review_and_pay') {
808
+ return 'review_and_pay'
809
+ }
810
+ else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'review_order') {
811
+ return 'review_order'
732
812
  }
813
+ else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'payment_info') {
814
+ return 'payment_info'
815
+ }
816
+ else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'payment_status') {
817
+ return 'payment_status'
818
+ }
819
+ else if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === 'payment_method') {
820
+ return 'payment_method'
821
+ }
822
+ else if (message.interactiveMessage?.nativeFlowMessage) {
823
+ return 'native_flow'
824
+ }
825
+ else if (message.interactiveMessage) {
826
+ return 'interactive'
827
+ }
828
+ }
733
829
  const getPrivacyTokens = async (jids) => {
734
830
  const t = Utils_1.unixTimestampSeconds().toString();
735
831
  const result = await query({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dyyxyzz/baileys-mod",
3
- "version": "6.0.43",
3
+ "version": "6.0.44",
4
4
  "description": "WhatsApp API Modification",
5
5
  "keywords": [
6
6
  "whatsapp",