@dyyxyzz/baileys-mod 6.0.42 → 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.
- package/lib/Socket/messages-send.js +177 -48
- package/package.json +1 -1
|
@@ -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,
|
|
@@ -428,27 +498,65 @@ const makeMessagesSocket = (config) => {
|
|
|
428
498
|
await authState.keys.set({ 'sender-key-memory': { [jid]: senderKeyMap } });
|
|
429
499
|
}
|
|
430
500
|
else if (isNewsletter) {
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
501
|
+
// Message edit
|
|
502
|
+
if (message.protocolMessage?.editedMessage) {
|
|
503
|
+
msgId = message.protocolMessage.key?.id
|
|
504
|
+
message = message.protocolMessage.editedMessage
|
|
505
|
+
}
|
|
436
506
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
507
|
+
// Message delete
|
|
508
|
+
if (message.protocolMessage?.type === WAProto_1.proto.Message.ProtocolMessage.Type.REVOKE) {
|
|
509
|
+
msgId = message.protocolMessage.key?.id
|
|
510
|
+
message = {}
|
|
511
|
+
}
|
|
442
512
|
|
|
443
|
-
|
|
444
|
-
|
|
513
|
+
const patched = await patchMessageBeforeSending(message, [])
|
|
514
|
+
const bytes = Utils_1.encodeNewsletterMessage(patched)
|
|
515
|
+
|
|
516
|
+
// Detect button type dan media type
|
|
517
|
+
const buttonType = getButtonType(patched)
|
|
518
|
+
const mediaType = getMediaType(patched)
|
|
519
|
+
|
|
520
|
+
// Set extraAttrs untuk newsletter
|
|
521
|
+
if (mediaType) {
|
|
522
|
+
extraAttrs['mediatype'] = mediaType
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (patched.pinInChatMessage || patched.keepInChatMessage ||
|
|
526
|
+
patched.reactionMessage || patched.protocolMessage?.editedMessage) {
|
|
527
|
+
extraAttrs['decrypt-fail'] = 'hide'
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
if (patched.interactiveResponseMessage?.nativeFlowResponseMessage) {
|
|
531
|
+
extraAttrs['native_flow_name'] = patched.interactiveResponseMessage?.nativeFlowResponseMessage.name
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if (patched.interactiveMessage?.nativeFlowMessage) {
|
|
535
|
+
extraAttrs['native_flow_name'] = patched.interactiveMessage?.nativeFlowMessage?.name || 'flow'
|
|
536
|
+
}
|
|
445
537
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
538
|
+
binaryNodeContent.push({
|
|
539
|
+
tag: 'plaintext',
|
|
540
|
+
attrs: extraAttrs,
|
|
541
|
+
content: bytes
|
|
542
|
+
})
|
|
543
|
+
|
|
544
|
+
// TAMBAHAN: Push button nodes untuk newsletter
|
|
545
|
+
if (buttonType && !didPushAdditional) {
|
|
546
|
+
const content = getAdditionalNode(buttonType)
|
|
547
|
+
const filteredNode = getBinaryNodeFilter(additionalNodes || [])
|
|
548
|
+
|
|
549
|
+
if (filteredNode && additionalNodes) {
|
|
550
|
+
binaryNodeContent.push(...additionalNodes)
|
|
551
|
+
didPushAdditional = true
|
|
552
|
+
} else if (content && content.length > 0) {
|
|
553
|
+
binaryNodeContent.push(...content)
|
|
554
|
+
didPushAdditional = true
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
logger.debug({ jid, buttonType }, 'adding button node to newsletter')
|
|
558
|
+
}
|
|
559
|
+
}
|
|
452
560
|
else {
|
|
453
561
|
const { user: meUser } = WABinary_1.jidDecode(meId);
|
|
454
562
|
if (!participant) {
|
|
@@ -516,9 +624,24 @@ const makeMessagesSocket = (config) => {
|
|
|
516
624
|
},
|
|
517
625
|
content: binaryNodeContent
|
|
518
626
|
}
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
+
}
|
|
522
645
|
if (participant) {
|
|
523
646
|
if (WABinary_1.isJidGroup(destinationJid)) {
|
|
524
647
|
stanza.attrs.to = destinationJid;
|
|
@@ -669,34 +792,40 @@ const makeMessagesSocket = (config) => {
|
|
|
669
792
|
}
|
|
670
793
|
|
|
671
794
|
const getButtonType = (message) => {
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
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'
|
|
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'
|
|
699
827
|
}
|
|
828
|
+
}
|
|
700
829
|
const getPrivacyTokens = async (jids) => {
|
|
701
830
|
const t = Utils_1.unixTimestampSeconds().toString();
|
|
702
831
|
const result = await query({
|