elynn-baileys 1.0.2 → 1.0.4
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/README.md +156 -69
- package/lib/Utils/messages.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -673,17 +673,40 @@ async function sendLocation(sock, jid) {
|
|
|
673
673
|
#### ◈ 5.14 · Live Location
|
|
674
674
|
|
|
675
675
|
```js
|
|
676
|
+
import { generateWAMessageFromContent } from 'elynn-baileys'
|
|
677
|
+
|
|
676
678
|
async function sendLiveLocation(sock, jid) {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
+
const messageContent = {
|
|
680
|
+
locationMessage: {
|
|
679
681
|
degreesLatitude: -6.2087634,
|
|
680
682
|
degreesLongitude: 106.845599,
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
683
|
+
name: 'Lokasi Terkini',
|
|
684
|
+
address: 'Berbagi Lokasi Langsung',
|
|
685
|
+
liveLocation: {
|
|
686
|
+
degreesLatitude: -6.2087634,
|
|
687
|
+
degreesLongitude: 106.845599,
|
|
688
|
+
accuracyInMeters: 10,
|
|
689
|
+
speedInMps: 0,
|
|
690
|
+
degreesClockwiseFromMagneticNorth: 0,
|
|
691
|
+
caption: 'Saya sedang membagikan lokasi langsung',
|
|
692
|
+
sequenceNumber: 1,
|
|
693
|
+
timeOffset: 3600
|
|
694
|
+
},
|
|
695
|
+
contextInfo: {
|
|
696
|
+
forwardingScore: 1,
|
|
697
|
+
isForwarded: false
|
|
698
|
+
}
|
|
686
699
|
}
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
const generatedMessage = await generateWAMessageFromContent(
|
|
703
|
+
jid,
|
|
704
|
+
messageContent,
|
|
705
|
+
{ userJid: sock.user.id }
|
|
706
|
+
)
|
|
707
|
+
|
|
708
|
+
await sock.relayMessage(jid, generatedMessage.message, {
|
|
709
|
+
messageId: generatedMessage.key.id
|
|
687
710
|
})
|
|
688
711
|
}
|
|
689
712
|
|
|
@@ -726,47 +749,69 @@ async function sendAlbum(sock, jid) {
|
|
|
726
749
|
#### ◈ 5.17 · Interactive — Buttons (Native Flow)
|
|
727
750
|
|
|
728
751
|
```js
|
|
752
|
+
import { generateWAMessageFromContent } from 'elynn-baileys'
|
|
753
|
+
|
|
729
754
|
async function sendInteractiveButtons(sock, jid) {
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
nativeFlowMessage: {
|
|
737
|
-
buttons: [
|
|
738
|
-
{
|
|
739
|
-
name: 'quick_reply',
|
|
740
|
-
buttonParamsJson: JSON.stringify({
|
|
741
|
-
display_text: '✅ Konfirmasi Pesanan',
|
|
742
|
-
id: 'btn_confirm_order'
|
|
743
|
-
})
|
|
755
|
+
const messageContent = {
|
|
756
|
+
viewOnceMessage: {
|
|
757
|
+
message: {
|
|
758
|
+
interactiveMessage: {
|
|
759
|
+
header: {
|
|
760
|
+
hasMediaAttachment: false
|
|
744
761
|
},
|
|
745
|
-
{
|
|
746
|
-
|
|
747
|
-
buttonParamsJson: JSON.stringify({
|
|
748
|
-
display_text: '🌐 Kunjungi Website Resmi',
|
|
749
|
-
url: 'https://example.com',
|
|
750
|
-
merchant_url: 'https://example.com'
|
|
751
|
-
})
|
|
762
|
+
body: {
|
|
763
|
+
text: 'Silakan pilih salah satu opsi di bawah ini untuk melanjutkan:'
|
|
752
764
|
},
|
|
753
|
-
{
|
|
754
|
-
|
|
755
|
-
buttonParamsJson: JSON.stringify({
|
|
756
|
-
display_text: '📋 Salin Kode Promo',
|
|
757
|
-
copy_code: 'ELYNN2026PROMO'
|
|
758
|
-
})
|
|
765
|
+
footer: {
|
|
766
|
+
text: 'elynn-baileys'
|
|
759
767
|
},
|
|
760
|
-
{
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
768
|
+
nativeFlowMessage: {
|
|
769
|
+
buttons: [
|
|
770
|
+
{
|
|
771
|
+
name: 'quick_reply',
|
|
772
|
+
buttonParamsJson: JSON.stringify({
|
|
773
|
+
display_text: '✅ Konfirmasi Pesanan',
|
|
774
|
+
id: 'btn_confirm_order'
|
|
775
|
+
})
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
name: 'cta_url',
|
|
779
|
+
buttonParamsJson: JSON.stringify({
|
|
780
|
+
display_text: '🌐 Kunjungi Website Resmi',
|
|
781
|
+
url: 'https://example.com',
|
|
782
|
+
merchant_url: 'https://example.com'
|
|
783
|
+
})
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
name: 'cta_copy',
|
|
787
|
+
buttonParamsJson: JSON.stringify({
|
|
788
|
+
display_text: '📋 Salin Kode Promo',
|
|
789
|
+
copy_code: 'ELYNN2026PROMO'
|
|
790
|
+
})
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
name: 'cta_call',
|
|
794
|
+
buttonParamsJson: JSON.stringify({
|
|
795
|
+
display_text: '📞 Hubungi Customer Service',
|
|
796
|
+
phone_number: '+6281234567890'
|
|
797
|
+
})
|
|
798
|
+
}
|
|
799
|
+
],
|
|
800
|
+
messageVersion: 1
|
|
766
801
|
}
|
|
767
|
-
|
|
802
|
+
}
|
|
768
803
|
}
|
|
769
804
|
}
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
const generatedMessage = await generateWAMessageFromContent(
|
|
808
|
+
jid,
|
|
809
|
+
messageContent,
|
|
810
|
+
{ userJid: sock.user.id }
|
|
811
|
+
)
|
|
812
|
+
|
|
813
|
+
await sock.relayMessage(jid, generatedMessage.message, {
|
|
814
|
+
messageId: generatedMessage.key.id
|
|
770
815
|
})
|
|
771
816
|
}
|
|
772
817
|
|
|
@@ -775,37 +820,75 @@ async function sendInteractiveButtons(sock, jid) {
|
|
|
775
820
|
#### ◈ 5.18 · Interactive — List
|
|
776
821
|
|
|
777
822
|
```js
|
|
823
|
+
import { generateWAMessageFromContent } from 'elynn-baileys'
|
|
824
|
+
|
|
778
825
|
async function sendInteractiveList(sock, jid) {
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
title: '🍔 Makanan Utama',
|
|
792
|
-
rows: [
|
|
793
|
-
{ id: 'menu_nasi_goreng', title: 'Nasi Goreng Spesial', description: 'Rp 25.000 - Ekstra Telur' },
|
|
794
|
-
{ id: 'menu_mie_goreng', title: 'Mie Goreng Seafood', description: 'Rp 30.000 - Udang & Cumi' }
|
|
795
|
-
]
|
|
796
|
-
},
|
|
826
|
+
const messageContent = {
|
|
827
|
+
viewOnceMessage: {
|
|
828
|
+
message: {
|
|
829
|
+
interactiveMessage: {
|
|
830
|
+
body: {
|
|
831
|
+
text: 'Berikut adalah katalog produk kami. Silakan pilih kategori yang Anda inginkan:'
|
|
832
|
+
},
|
|
833
|
+
footer: {
|
|
834
|
+
text: 'elynn-baileys'
|
|
835
|
+
},
|
|
836
|
+
nativeFlowMessage: {
|
|
837
|
+
buttons: [
|
|
797
838
|
{
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
839
|
+
name: 'single_select',
|
|
840
|
+
buttonParamsJson: JSON.stringify({
|
|
841
|
+
title: '📋 Buka Katalog Menu',
|
|
842
|
+
sections: [
|
|
843
|
+
{
|
|
844
|
+
title: '🍔 Makanan Utama',
|
|
845
|
+
rows: [
|
|
846
|
+
{
|
|
847
|
+
id: 'menu_nasi_goreng',
|
|
848
|
+
title: 'Nasi Goreng Spesial',
|
|
849
|
+
description: 'Rp 25.000 - Ekstra Telur'
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
id: 'menu_mie_goreng',
|
|
853
|
+
title: 'Mie Goreng Seafood',
|
|
854
|
+
description: 'Rp 30.000 - Udang & Cumi'
|
|
855
|
+
}
|
|
856
|
+
]
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
title: '🥤 Minuman Segar',
|
|
860
|
+
rows: [
|
|
861
|
+
{
|
|
862
|
+
id: 'menu_es_teh',
|
|
863
|
+
title: 'Es Teh Manis',
|
|
864
|
+
description: 'Rp 5.000 - Gula Asli'
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
id: 'menu_jus_jeruk',
|
|
868
|
+
title: 'Jus Jeruk Peras',
|
|
869
|
+
description: 'Rp 12.000 - Jeruk Murni'
|
|
870
|
+
}
|
|
871
|
+
]
|
|
872
|
+
}
|
|
873
|
+
]
|
|
874
|
+
})
|
|
803
875
|
}
|
|
804
|
-
]
|
|
805
|
-
|
|
806
|
-
|
|
876
|
+
],
|
|
877
|
+
messageVersion: 1
|
|
878
|
+
}
|
|
879
|
+
}
|
|
807
880
|
}
|
|
808
881
|
}
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
const generatedMessage = await generateWAMessageFromContent(
|
|
885
|
+
jid,
|
|
886
|
+
messageContent,
|
|
887
|
+
{ userJid: sock.user.id }
|
|
888
|
+
)
|
|
889
|
+
|
|
890
|
+
await sock.relayMessage(jid, generatedMessage.message, {
|
|
891
|
+
messageId: generatedMessage.key.id
|
|
809
892
|
})
|
|
810
893
|
}
|
|
811
894
|
|
|
@@ -1095,9 +1178,13 @@ async function sendEventWithReminder(sock, jid) {
|
|
|
1095
1178
|
description: 'Kumpul bareng nonton final di basecamp ya, jangan telat!',
|
|
1096
1179
|
startDate: new Date('2026-08-01T20:00:00+07:00'),
|
|
1097
1180
|
endDate: new Date('2026-08-01T23:00:00+07:00'),
|
|
1098
|
-
location:
|
|
1181
|
+
location: {
|
|
1182
|
+
degreesLatitude: -7.983908,
|
|
1183
|
+
degreesLongitude: 112.621391,
|
|
1184
|
+
name: 'Basecamp Komunitas, Jl. Mawar No. 5'
|
|
1185
|
+
},
|
|
1099
1186
|
extraGuestsAllowed: true,
|
|
1100
|
-
reminderOffsetSec: 3600
|
|
1187
|
+
reminderOffsetSec: 3600
|
|
1101
1188
|
}
|
|
1102
1189
|
})
|
|
1103
1190
|
}
|
package/lib/Utils/messages.js
CHANGED
|
@@ -1152,7 +1152,7 @@ export const generateWAMessageContent = async (message, options) => {
|
|
|
1152
1152
|
if (hasOptionalProperty(message, 'thumbnail') && !!message.thumbnail) {
|
|
1153
1153
|
interactiveMessage.jpegThumbnail = message.thumbnail;
|
|
1154
1154
|
}
|
|
1155
|
-
Object.assign(interactiveMessage.header, m);
|
|
1155
|
+
interactiveMessage.header = Object.assign(interactiveMessage.header || {}, m);
|
|
1156
1156
|
}
|
|
1157
1157
|
if (hasOptionalProperty(message, 'audioFooter')) {
|
|
1158
1158
|
const { audioMessage } = await prepareWAMessageMedia({
|
|
@@ -1201,7 +1201,7 @@ export const generateWAMessageContent = async (message, options) => {
|
|
|
1201
1201
|
if (hasOptionalProperty(card, 'thumbnail') && !!card.thumbnail) {
|
|
1202
1202
|
carouselCard.jpegThumbnail = card.thumbnail;
|
|
1203
1203
|
}
|
|
1204
|
-
Object.assign(carouselCard.header, carouselHeader);
|
|
1204
|
+
carouselCard.header = Object.assign(carouselCard.header || {}, carouselHeader);
|
|
1205
1205
|
}
|
|
1206
1206
|
if (hasOptionalProperty(card, 'audioFooter')) {
|
|
1207
1207
|
const { audioMessage } = await prepareWAMessageMedia({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elynn-baileys",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "elynn-baileys \u2014 WhatsApp + Telegram + Discord multi-platform library by elynn. Includes sessionGuard for IP-based session protection.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|