aunubaileys 1.0.38 → 1.0.40
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 +8 -0
- package/lib/Socket/newsletter.d.ts +1 -0
- package/lib/Socket/newsletter.js +4 -0
- package/lib/Types/Message.d.ts +10 -0
- package/lib/Types/Newsletter.d.ts +2 -0
- package/lib/Types/Newsletter.js +2 -0
- package/lib/Utils/messages.js +25 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,6 +64,14 @@ Everything else is pure upstream. When upstream moves, we rebase the patch layer
|
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
|
|
67
|
+
### 🆕 What's new in 1.0.40 / Baru di 1.0.40
|
|
68
|
+
|
|
69
|
+
- 🎁 **Four future-proof message wrapper options** — **`viewOnceV2: true`** wraps content into `viewOnceMessageV2`, **`viewOnceV2Extension: true`** into `viewOnceMessageV2Extension`, **`ephemeral: true`** into `ephemeralMessage`, and **`interactiveAsTemplate: true`** wraps an interactive message into a `templateMessage` (optional `templateId`; the `messageContextInfo` device-list metadata is preserved alongside, and using it on a non-interactive message throws a clear 400). The 6.7.24 proto already carries all four wrapper types — only the boolean options were missing. Adapted from @itsliaaa/baileys; classic `viewOnce` behaviour is unchanged.
|
|
70
|
+
|
|
71
|
+
### 🆕 What's new in 1.0.39 / Baru di 1.0.39
|
|
72
|
+
|
|
73
|
+
- 📰 **New `sock.newsletterSubscribed()`** — fetch **every newsletter this account follows** in one call, the newsletter analogue of `groupFetchAllParticipating()` that was missing until now (only `newsletterSubscribers(jid)`, the follower count of one newsletter, existed). Implemented over the same MEX path as the other newsletter methods: query id `6388546374527196`, path `xwa2_newsletter_subscribed` (WhatsApp's own MEX schema constants), added to the `QueryIds`/`XWAPaths` enums. Adapted from @itsliaaa/baileys.
|
|
74
|
+
|
|
67
75
|
### 🆕 What's new in 1.0.38 / Baru di 1.0.38
|
|
68
76
|
|
|
69
77
|
- 📰 **Ad-reply / link-preview cards as a direct message option** — attaching an `externalAdReply` card (title + thumbnail riding on top of a message) used to mean hand-assembling a full `contextInfo`. Now just pass `externalAdReply: { title, body, url, thumbnail, largeThumbnail }` in the message content: `url` maps to both `mediaUrl` and `sourceUrl`, `mediaType` defaults to 1 (image), and the result merges cleanly with an explicit `contextInfo` and with `mentions`/`mentionAll` when combined. One deliberate difference from the adaptation source (@itsliaaa/baileys): there, a missing `url` is silently replaced with the maintainer's donation link — here a missing url **stays empty**; this library never injects a third-party link into your messages. A non-Buffer thumbnail is rejected with a clear 400 error.
|
|
@@ -7,6 +7,7 @@ export declare const makeNewsletterSocket: (sock: GroupsSocket) => {
|
|
|
7
7
|
newsletterSubscribers: (jid: string) => Promise<{
|
|
8
8
|
subscribers: number;
|
|
9
9
|
}>;
|
|
10
|
+
newsletterSubscribed: () => Promise<unknown>;
|
|
10
11
|
newsletterMetadata: (type: "invite" | "jid", key: string) => Promise<NewsletterMetadata | null>;
|
|
11
12
|
newsletterFollow: (jid: string) => Promise<unknown>;
|
|
12
13
|
newsletterUnfollow: (jid: string) => Promise<unknown>;
|
package/lib/Socket/newsletter.js
CHANGED
|
@@ -71,6 +71,10 @@ export const makeNewsletterSocket = (sock) => {
|
|
|
71
71
|
newsletterSubscribers: async (jid) => {
|
|
72
72
|
return executeWMexQuery({ newsletter_id: jid }, QueryIds.SUBSCRIBERS, XWAPaths.xwa2_newsletter_subscribers);
|
|
73
73
|
},
|
|
74
|
+
// AunuBaileys: daftar semua newsletter yang diikuti akun ini (dari @itsliaaa/baileys)
|
|
75
|
+
newsletterSubscribed: async () => {
|
|
76
|
+
return executeWMexQuery({}, QueryIds.SUBSCRIBED, XWAPaths.xwa2_newsletter_subscribed);
|
|
77
|
+
},
|
|
74
78
|
newsletterMetadata: async (type, key) => {
|
|
75
79
|
const variables = {
|
|
76
80
|
fetch_creation_time: true,
|
package/lib/Types/Message.d.ts
CHANGED
|
@@ -91,6 +91,16 @@ type Contextable = {
|
|
|
91
91
|
};
|
|
92
92
|
type ViewOnce = {
|
|
93
93
|
viewOnce?: boolean;
|
|
94
|
+
/** wrap the message into viewOnceMessageV2 */
|
|
95
|
+
viewOnceV2?: boolean;
|
|
96
|
+
/** wrap the message into viewOnceMessageV2Extension */
|
|
97
|
+
viewOnceV2Extension?: boolean;
|
|
98
|
+
/** wrap the message into ephemeralMessage */
|
|
99
|
+
ephemeral?: boolean;
|
|
100
|
+
/** wrap an interactive message into a templateMessage (requires `interactive` content) */
|
|
101
|
+
interactiveAsTemplate?: boolean;
|
|
102
|
+
/** optional template id used when interactiveAsTemplate is set */
|
|
103
|
+
templateId?: string;
|
|
94
104
|
};
|
|
95
105
|
type Editable = {
|
|
96
106
|
edit?: WAMessageKey;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare enum XWAPaths {
|
|
2
2
|
xwa2_newsletter_create = "xwa2_newsletter_create",
|
|
3
3
|
xwa2_newsletter_subscribers = "xwa2_newsletter_subscribers",
|
|
4
|
+
xwa2_newsletter_subscribed = "xwa2_newsletter_subscribed",
|
|
4
5
|
xwa2_newsletter_view = "xwa2_newsletter_view",
|
|
5
6
|
xwa2_newsletter_metadata = "xwa2_newsletter",
|
|
6
7
|
xwa2_newsletter_admin_count = "xwa2_newsletter_admin",
|
|
@@ -17,6 +18,7 @@ export declare enum QueryIds {
|
|
|
17
18
|
UPDATE_METADATA = "24250201037901610",
|
|
18
19
|
METADATA = "6563316087068696",
|
|
19
20
|
SUBSCRIBERS = "9783111038412085",
|
|
21
|
+
SUBSCRIBED = "6388546374527196",
|
|
20
22
|
FOLLOW = "7871414976211147",
|
|
21
23
|
UNFOLLOW = "7238632346214362",
|
|
22
24
|
MUTE = "29766401636284406",
|
package/lib/Types/Newsletter.js
CHANGED
|
@@ -2,6 +2,7 @@ export var XWAPaths;
|
|
|
2
2
|
(function (XWAPaths) {
|
|
3
3
|
XWAPaths["xwa2_newsletter_create"] = "xwa2_newsletter_create";
|
|
4
4
|
XWAPaths["xwa2_newsletter_subscribers"] = "xwa2_newsletter_subscribers";
|
|
5
|
+
XWAPaths["xwa2_newsletter_subscribed"] = "xwa2_newsletter_subscribed";
|
|
5
6
|
XWAPaths["xwa2_newsletter_view"] = "xwa2_newsletter_view";
|
|
6
7
|
XWAPaths["xwa2_newsletter_metadata"] = "xwa2_newsletter";
|
|
7
8
|
XWAPaths["xwa2_newsletter_admin_count"] = "xwa2_newsletter_admin";
|
|
@@ -21,6 +22,7 @@ export var QueryIds;
|
|
|
21
22
|
QueryIds["UPDATE_METADATA"] = "24250201037901610";
|
|
22
23
|
QueryIds["METADATA"] = "6563316087068696";
|
|
23
24
|
QueryIds["SUBSCRIBERS"] = "9783111038412085";
|
|
25
|
+
QueryIds["SUBSCRIBED"] = "6388546374527196";
|
|
24
26
|
QueryIds["FOLLOW"] = "7871414976211147";
|
|
25
27
|
QueryIds["UNFOLLOW"] = "7238632346214362";
|
|
26
28
|
QueryIds["MUTE"] = "29766401636284406";
|
package/lib/Utils/messages.js
CHANGED
|
@@ -821,6 +821,13 @@ export const generateWAMessageContent = async (message, options) => {
|
|
|
821
821
|
if ('viewOnce' in message && !!message.viewOnce) {
|
|
822
822
|
m = { viewOnceMessage: { message: m } };
|
|
823
823
|
}
|
|
824
|
+
// AunuBaileys: viewOnceV2 / viewOnceV2Extension (dari @itsliaaa/baileys)
|
|
825
|
+
else if ('viewOnceV2' in message && !!message.viewOnceV2) {
|
|
826
|
+
m = { viewOnceMessageV2: { message: m } };
|
|
827
|
+
}
|
|
828
|
+
else if ('viewOnceV2Extension' in message && !!message.viewOnceV2Extension) {
|
|
829
|
+
m = { viewOnceMessageV2Extension: { message: m } };
|
|
830
|
+
}
|
|
824
831
|
if (('mentions' in message && message.mentions?.length) ||
|
|
825
832
|
('mentionAll' in message && !!message.mentionAll)) {
|
|
826
833
|
const messageType = Object.keys(m)[0];
|
|
@@ -840,6 +847,24 @@ export const generateWAMessageContent = async (message, options) => {
|
|
|
840
847
|
};
|
|
841
848
|
}
|
|
842
849
|
}
|
|
850
|
+
// AunuBaileys: ephemeral (dari @itsliaaa/baileys)
|
|
851
|
+
if ('ephemeral' in message && !!message.ephemeral) {
|
|
852
|
+
m = { ephemeralMessage: { message: m } };
|
|
853
|
+
}
|
|
854
|
+
// AunuBaileys: interactiveAsTemplate (dari @itsliaaa/baileys) — bungkus interactiveMessage
|
|
855
|
+
// ke templateMessage; messageContextInfo (deviceListMetadata) dipertahankan di sisinya
|
|
856
|
+
if ('interactiveAsTemplate' in message && !!message.interactiveAsTemplate) {
|
|
857
|
+
if (!m.interactiveMessage) {
|
|
858
|
+
throw new Boom('interactiveAsTemplate requires an interactive message', { statusCode: 400 });
|
|
859
|
+
}
|
|
860
|
+
m = {
|
|
861
|
+
templateMessage: {
|
|
862
|
+
interactiveMessageTemplate: m.interactiveMessage,
|
|
863
|
+
templateId: message.templateId || 'template-' + Date.now()
|
|
864
|
+
},
|
|
865
|
+
...(m.messageContextInfo ? { messageContextInfo: m.messageContextInfo } : {})
|
|
866
|
+
};
|
|
867
|
+
}
|
|
843
868
|
if ('edit' in message) {
|
|
844
869
|
m = {
|
|
845
870
|
protocolMessage: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aunubaileys",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.40",
|
|
5
5
|
"description": "AunuBaileys \u2014 a WhatsApp Web API for bots that never sleep. Full upstream power with the beloved in-memory store restored and pairing that just works. Forged by AunuCore.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"whatsapp",
|