@queenanya/baileys 9.5.2 → 9.5.3-beta.2
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 +614 -0
- package/lib/Defaults/index.d.ts +5 -0
- package/lib/Defaults/index.d.ts.map +1 -1
- package/lib/Defaults/index.js +32 -3
- package/lib/Defaults/index.js.map +1 -1
- package/lib/Socket/business.d.ts +35 -2
- package/lib/Socket/business.d.ts.map +1 -1
- package/lib/Socket/chats.d.ts +3 -1
- package/lib/Socket/chats.d.ts.map +1 -1
- package/lib/Socket/chats.js +49 -4
- package/lib/Socket/chats.js.map +1 -1
- package/lib/Socket/communities.d.ts +35 -2
- package/lib/Socket/communities.d.ts.map +1 -1
- package/lib/Socket/groups.d.ts +1 -0
- package/lib/Socket/groups.d.ts.map +1 -1
- package/lib/Socket/index.d.ts +35 -2
- package/lib/Socket/index.d.ts.map +1 -1
- package/lib/Socket/messages-recv.d.ts +36 -3
- package/lib/Socket/messages-recv.d.ts.map +1 -1
- package/lib/Socket/messages-recv.js +61 -44
- package/lib/Socket/messages-recv.js.map +1 -1
- package/lib/Socket/messages-send.d.ts +11 -5
- package/lib/Socket/messages-send.d.ts.map +1 -1
- package/lib/Socket/messages-send.js +110 -78
- package/lib/Socket/messages-send.js.map +1 -1
- package/lib/Socket/newsletter.d.ts +1 -0
- package/lib/Socket/newsletter.d.ts.map +1 -1
- package/lib/Socket/newsletter.js +2 -2
- package/lib/Socket/newsletter.js.map +1 -1
- package/lib/Socket/socket.d.ts.map +1 -1
- package/lib/Socket/socket.js +77 -11
- package/lib/Socket/socket.js.map +1 -1
- package/lib/Types/Call.d.ts +8 -0
- package/lib/Types/Call.d.ts.map +1 -1
- package/lib/Types/Events.d.ts +2 -0
- package/lib/Types/Events.d.ts.map +1 -1
- package/lib/Types/Message.d.ts +161 -12
- package/lib/Types/Message.d.ts.map +1 -1
- package/lib/Types/index.d.ts +9 -0
- package/lib/Types/index.d.ts.map +1 -1
- package/lib/Types/index.js.map +1 -1
- package/lib/Utils/browser-utils.d.ts +13 -0
- package/lib/Utils/browser-utils.d.ts.map +1 -1
- package/lib/Utils/browser-utils.js +90 -10
- package/lib/Utils/browser-utils.js.map +1 -1
- package/lib/Utils/event-buffer.js +8 -1
- package/lib/Utils/event-buffer.js.map +1 -1
- package/lib/Utils/history.d.ts +2 -0
- package/lib/Utils/history.d.ts.map +1 -1
- package/lib/Utils/history.js +2 -1
- package/lib/Utils/history.js.map +1 -1
- package/lib/Utils/index.d.ts +2 -0
- package/lib/Utils/index.d.ts.map +1 -1
- package/lib/Utils/index.js +2 -0
- package/lib/Utils/index.js.map +1 -1
- package/lib/Utils/interactive-message.d.ts +201 -0
- package/lib/Utils/interactive-message.d.ts.map +1 -0
- package/lib/Utils/interactive-message.js +256 -0
- package/lib/Utils/interactive-message.js.map +1 -0
- package/lib/Utils/messages-media.d.ts +16 -2
- package/lib/Utils/messages-media.d.ts.map +1 -1
- package/lib/Utils/messages-media.js +19 -10
- package/lib/Utils/messages-media.js.map +1 -1
- package/lib/Utils/messages.d.ts.map +1 -1
- package/lib/Utils/messages.js +408 -11
- package/lib/Utils/messages.js.map +1 -1
- package/lib/Utils/offline-node-processor.d.ts +17 -0
- package/lib/Utils/offline-node-processor.d.ts.map +1 -0
- package/lib/Utils/offline-node-processor.js +40 -0
- package/lib/Utils/offline-node-processor.js.map +1 -0
- package/lib/Utils/stanza-ack.d.ts +11 -0
- package/lib/Utils/stanza-ack.d.ts.map +1 -0
- package/lib/Utils/stanza-ack.js +38 -0
- package/lib/Utils/stanza-ack.js.map +1 -0
- package/lib/Utils/use-mongo-file-auth-state.d.ts +16 -0
- package/lib/Utils/use-mongo-file-auth-state.d.ts.map +1 -0
- package/lib/Utils/use-mongo-file-auth-state.js +60 -0
- package/lib/Utils/use-mongo-file-auth-state.js.map +1 -0
- package/lib/Utils/validate-connection.d.ts.map +1 -1
- package/lib/Utils/validate-connection.js +15 -2
- package/lib/Utils/validate-connection.js.map +1 -1
- package/lib/WABinary/generic-utils.d.ts +9 -0
- package/lib/WABinary/generic-utils.d.ts.map +1 -1
- package/lib/WABinary/generic-utils.js +23 -0
- package/lib/WABinary/generic-utils.js.map +1 -1
- package/lib/addons/anti-delete.d.ts +72 -0
- package/lib/addons/anti-delete.d.ts.map +1 -0
- package/lib/addons/anti-delete.js +165 -0
- package/lib/addons/anti-delete.js.map +1 -0
- package/lib/addons/auto-reply.d.ts +67 -0
- package/lib/addons/auto-reply.d.ts.map +1 -0
- package/lib/addons/auto-reply.js +145 -0
- package/lib/addons/auto-reply.js.map +1 -0
- package/lib/addons/chat-control.d.ts +57 -0
- package/lib/addons/chat-control.d.ts.map +1 -0
- package/lib/addons/chat-control.js +128 -0
- package/lib/addons/chat-control.js.map +1 -0
- package/lib/addons/from-chats.d.ts +30 -0
- package/lib/addons/from-chats.d.ts.map +1 -0
- package/lib/addons/from-chats.js +38 -0
- package/lib/addons/from-chats.js.map +1 -0
- package/lib/addons/from-messages-recv.d.ts +59 -0
- package/lib/addons/from-messages-recv.d.ts.map +1 -0
- package/lib/addons/from-messages-recv.js +326 -0
- package/lib/addons/from-messages-recv.js.map +1 -0
- package/lib/addons/from-messages-send.d.ts +50 -0
- package/lib/addons/from-messages-send.d.ts.map +1 -0
- package/lib/addons/from-messages-send.js +148 -0
- package/lib/addons/from-messages-send.js.map +1 -0
- package/lib/addons/from-messages.d.ts +52 -0
- package/lib/addons/from-messages.d.ts.map +1 -0
- package/lib/addons/from-messages.js +305 -0
- package/lib/addons/from-messages.js.map +1 -0
- package/lib/addons/index.d.ts +28 -0
- package/lib/addons/index.d.ts.map +1 -0
- package/lib/addons/index.js +44 -0
- package/lib/addons/index.js.map +1 -0
- package/lib/addons/interactive-message.d.ts +201 -0
- package/lib/addons/interactive-message.d.ts.map +1 -0
- package/lib/addons/interactive-message.js +256 -0
- package/lib/addons/interactive-message.js.map +1 -0
- package/lib/addons/jid-plotting.d.ts +53 -0
- package/lib/addons/jid-plotting.d.ts.map +1 -0
- package/lib/addons/jid-plotting.js +150 -0
- package/lib/addons/jid-plotting.js.map +1 -0
- package/lib/addons/message-search.d.ts +38 -0
- package/lib/addons/message-search.d.ts.map +1 -0
- package/lib/addons/message-search.js +171 -0
- package/lib/addons/message-search.js.map +1 -0
- package/lib/addons/message-utils.d.ts +14 -0
- package/lib/addons/message-utils.d.ts.map +1 -0
- package/lib/addons/message-utils.js +174 -0
- package/lib/addons/message-utils.js.map +1 -0
- package/lib/addons/scheduling.d.ts +40 -0
- package/lib/addons/scheduling.d.ts.map +1 -0
- package/lib/addons/scheduling.js +110 -0
- package/lib/addons/scheduling.js.map +1 -0
- package/lib/addons/status-posting.d.ts +120 -0
- package/lib/addons/status-posting.d.ts.map +1 -0
- package/lib/addons/status-posting.js +94 -0
- package/lib/addons/status-posting.js.map +1 -0
- package/lib/addons/templates.d.ts +72 -0
- package/lib/addons/templates.d.ts.map +1 -0
- package/lib/addons/templates.js +145 -0
- package/lib/addons/templates.js.map +1 -0
- package/lib/addons/vcard.d.ts +57 -0
- package/lib/addons/vcard.d.ts.map +1 -0
- package/lib/addons/vcard.js +88 -0
- package/lib/addons/vcard.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AnyMessageContent, WAMessage } from '../Types/index.js';
|
|
2
|
+
import { generateWAMessage } from '../Utils/messages.js';
|
|
3
|
+
export interface StatusMentionDeps {
|
|
4
|
+
meId: string;
|
|
5
|
+
logger: {
|
|
6
|
+
error: (msg: string) => void;
|
|
7
|
+
};
|
|
8
|
+
groupMetadata: (jid: string) => Promise<{
|
|
9
|
+
participants: Array<{
|
|
10
|
+
id: string;
|
|
11
|
+
}>;
|
|
12
|
+
}>;
|
|
13
|
+
cachedGroupMetadata?: (jid: string) => Promise<{
|
|
14
|
+
participants: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
}>;
|
|
17
|
+
} | undefined>;
|
|
18
|
+
generateWAMessageFn?: typeof generateWAMessage;
|
|
19
|
+
relayMessage: (jid: string, message: any, opts: any) => Promise<any>;
|
|
20
|
+
waUploadToServer: any;
|
|
21
|
+
getUrlInfo?: any;
|
|
22
|
+
config: any;
|
|
23
|
+
linkPreviewImageThumbnailWidth?: number;
|
|
24
|
+
generateHighQualityLinkPreview?: boolean;
|
|
25
|
+
httpRequestOptions?: any;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Normalize status content — strips fields not valid for media/audio status
|
|
29
|
+
* Source: messages-send.ts → sendStatusMentions (content normalization block)
|
|
30
|
+
*/
|
|
31
|
+
export declare function normalizeStatusContent(content: AnyMessageContent): {
|
|
32
|
+
msgContent: AnyMessageContent;
|
|
33
|
+
font?: number;
|
|
34
|
+
textColor?: string;
|
|
35
|
+
backgroundColor?: string;
|
|
36
|
+
ptt?: boolean;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Build the mentioned_users meta node for status relay
|
|
40
|
+
* Source: messages-send.ts → sendStatusMentions (additionalNodes block)
|
|
41
|
+
*/
|
|
42
|
+
export declare function buildStatusMentionNode(jids: string[]): any;
|
|
43
|
+
/**
|
|
44
|
+
* Core sendStatusMentions logic
|
|
45
|
+
* Source: messages-send.ts → sendStatusMentions
|
|
46
|
+
*
|
|
47
|
+
* Pass all sock dependencies explicitly so this stays testable.
|
|
48
|
+
*/
|
|
49
|
+
export declare function execSendStatusMentions(content: AnyMessageContent, jids: string[], deps: StatusMentionDeps): Promise<WAMessage>;
|
|
50
|
+
//# sourceMappingURL=from-messages-send.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-messages-send.d.ts","sourceRoot":"","sources":["../../src/addons/from-messages-send.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAuB,MAAM,UAAU,CAAA;AAGjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,mBAAmB,CAAA;AAInF,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;IACxC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IAChF,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACnG,mBAAmB,CAAC,EAAE,OAAO,iBAAiB,CAAA;IAC9C,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACpE,gBAAgB,EAAE,GAAG,CAAA;IACrB,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,MAAM,EAAE,GAAG,CAAA;IACX,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,8BAA8B,CAAC,EAAE,OAAO,CAAA;IACxC,kBAAkB,CAAC,EAAE,GAAG,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACnE,UAAU,EAAE,iBAAiB,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;CACb,CAkCA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAe1D;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,SAAS,CAAC,CA0FpB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* from-messages-send.ts
|
|
3
|
+
* Source: src/Socket/messages-send.ts
|
|
4
|
+
*
|
|
5
|
+
* Status mentions + content normalization ported from baileys.
|
|
6
|
+
* Imported back into makeMessagesSocket.
|
|
7
|
+
*/
|
|
8
|
+
import { randomBytes } from 'crypto';
|
|
9
|
+
import { isJidGroup, jidNormalizedUser } from '../WABinary/index.js';
|
|
10
|
+
import { delay } from '../Utils/generics.js';
|
|
11
|
+
import { generateWAMessage, generateWAMessageFromContent } from '../Utils/messages.js';
|
|
12
|
+
const STORIES_JID = 'status@broadcast';
|
|
13
|
+
/**
|
|
14
|
+
* Normalize status content — strips fields not valid for media/audio status
|
|
15
|
+
* Source: messages-send.ts → sendStatusMentions (content normalization block)
|
|
16
|
+
*/
|
|
17
|
+
export function normalizeStatusContent(content) {
|
|
18
|
+
const getRandomHex = () => '#' +
|
|
19
|
+
Math.floor(Math.random() * 16777215)
|
|
20
|
+
.toString(16)
|
|
21
|
+
.padStart(6, '0');
|
|
22
|
+
const isMedia = 'image' in content || 'video' in content || 'audio' in content;
|
|
23
|
+
const isAudio = 'audio' in content;
|
|
24
|
+
const msgContent = { ...content };
|
|
25
|
+
if (isMedia && !isAudio) {
|
|
26
|
+
if (msgContent.text) {
|
|
27
|
+
msgContent.caption = msgContent.text;
|
|
28
|
+
delete msgContent.text;
|
|
29
|
+
}
|
|
30
|
+
delete msgContent.ptt;
|
|
31
|
+
delete msgContent.font;
|
|
32
|
+
delete msgContent.backgroundColor;
|
|
33
|
+
delete msgContent.textColor;
|
|
34
|
+
}
|
|
35
|
+
if (isAudio) {
|
|
36
|
+
delete msgContent.text;
|
|
37
|
+
delete msgContent.caption;
|
|
38
|
+
delete msgContent.font;
|
|
39
|
+
delete msgContent.textColor;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
msgContent: msgContent,
|
|
43
|
+
font: !isMedia ? (content.font ?? Math.floor(Math.random() * 9)) : undefined,
|
|
44
|
+
textColor: !isMedia ? (content.textColor ?? getRandomHex()) : undefined,
|
|
45
|
+
backgroundColor: !isMedia || isAudio ? (content.backgroundColor ?? getRandomHex()) : undefined,
|
|
46
|
+
ptt: isAudio ? (typeof content.ptt === 'boolean' ? content.ptt : true) : undefined
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build the mentioned_users meta node for status relay
|
|
51
|
+
* Source: messages-send.ts → sendStatusMentions (additionalNodes block)
|
|
52
|
+
*/
|
|
53
|
+
export function buildStatusMentionNode(jids) {
|
|
54
|
+
return {
|
|
55
|
+
tag: 'meta',
|
|
56
|
+
attrs: {},
|
|
57
|
+
content: [
|
|
58
|
+
{
|
|
59
|
+
tag: 'mentioned_users',
|
|
60
|
+
attrs: {},
|
|
61
|
+
content: jids.map(jid => ({
|
|
62
|
+
tag: 'to',
|
|
63
|
+
attrs: { jid: jidNormalizedUser(jid) }
|
|
64
|
+
}))
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Core sendStatusMentions logic
|
|
71
|
+
* Source: messages-send.ts → sendStatusMentions
|
|
72
|
+
*
|
|
73
|
+
* Pass all sock dependencies explicitly so this stays testable.
|
|
74
|
+
*/
|
|
75
|
+
export async function execSendStatusMentions(content, jids, deps) {
|
|
76
|
+
const { meId, logger, groupMetadata, cachedGroupMetadata, relayMessage, waUploadToServer, getUrlInfo, config, linkPreviewImageThumbnailWidth, generateHighQualityLinkPreview, httpRequestOptions } = deps;
|
|
77
|
+
const userJid = jidNormalizedUser(meId);
|
|
78
|
+
const allUsers = new Set([userJid]);
|
|
79
|
+
for (const id of jids) {
|
|
80
|
+
const isGroup = isJidGroup(id);
|
|
81
|
+
// match fork: isJidUser = ends with @s.whatsapp.net
|
|
82
|
+
const isPrivate = id.endsWith('@s.whatsapp.net');
|
|
83
|
+
if (isGroup) {
|
|
84
|
+
try {
|
|
85
|
+
// fork: cachedGroupMetadata first, then fallback to groupMetadata
|
|
86
|
+
const meta = (cachedGroupMetadata ? await cachedGroupMetadata(id) : undefined) || (await groupMetadata(id));
|
|
87
|
+
meta.participants.forEach(p => allUsers.add(jidNormalizedUser(p.id)));
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
logger.error(`Error getting metadata for group ${id}: ${e}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (isPrivate) {
|
|
94
|
+
allUsers.add(jidNormalizedUser(id));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const { msgContent, font, textColor, backgroundColor, ptt } = normalizeStatusContent(content);
|
|
98
|
+
const msg = await generateWAMessage(STORIES_JID, msgContent, {
|
|
99
|
+
logger,
|
|
100
|
+
userJid,
|
|
101
|
+
getUrlInfo: getUrlInfo
|
|
102
|
+
? (text) => getUrlInfo(text, {
|
|
103
|
+
thumbnailWidth: linkPreviewImageThumbnailWidth,
|
|
104
|
+
fetchOpts: { timeout: 3000, ...(httpRequestOptions || {}) },
|
|
105
|
+
logger,
|
|
106
|
+
uploadImage: generateHighQualityLinkPreview ? waUploadToServer : undefined
|
|
107
|
+
})
|
|
108
|
+
: undefined,
|
|
109
|
+
upload: waUploadToServer,
|
|
110
|
+
mediaCache: config.mediaCache,
|
|
111
|
+
options: config.options,
|
|
112
|
+
font,
|
|
113
|
+
backgroundColor,
|
|
114
|
+
ptt,
|
|
115
|
+
...(textColor ? { textColor } : {})
|
|
116
|
+
});
|
|
117
|
+
await relayMessage(STORIES_JID, msg.message, {
|
|
118
|
+
messageId: msg.key.id,
|
|
119
|
+
statusJidList: Array.from(allUsers),
|
|
120
|
+
additionalNodes: [buildStatusMentionNode(jids)]
|
|
121
|
+
});
|
|
122
|
+
for (const id of jids) {
|
|
123
|
+
try {
|
|
124
|
+
const normalizedId = jidNormalizedUser(id);
|
|
125
|
+
const isPrivate = normalizedId.endsWith('@s.whatsapp.net');
|
|
126
|
+
const type = isPrivate ? 'statusMentionMessage' : 'groupStatusMentionMessage';
|
|
127
|
+
const protocolMessage = {
|
|
128
|
+
[type]: { message: { protocolMessage: { key: msg.key, type: 25 } } },
|
|
129
|
+
messageContextInfo: { messageSecret: randomBytes(32) }
|
|
130
|
+
};
|
|
131
|
+
const statusMsg = generateWAMessageFromContent(normalizedId, protocolMessage, { userJid: meId });
|
|
132
|
+
await relayMessage(normalizedId, statusMsg.message, {
|
|
133
|
+
additionalNodes: [
|
|
134
|
+
{
|
|
135
|
+
tag: 'meta',
|
|
136
|
+
attrs: isPrivate ? { is_status_mention: 'true' } : { is_group_status_mention: 'true' }
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
});
|
|
140
|
+
await delay(2000);
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
logger.error(`Error sending status mention to ${id}: ${e}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return msg;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=from-messages-send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-messages-send.js","sourceRoot":"","sources":["../../src/addons/from-messages-send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { proto } from '../../WAProto/index.js';
|
|
2
|
+
import type { MessageContentGenerationOptions } from '../Types/index.js';
|
|
3
|
+
import type { AdminInviteInfo, CallCreationInfo, PaymentInviteInfo, StickerPack } from '../Types/Message.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build newsletterAdminInviteMessage from adminInvite content
|
|
6
|
+
* Source: messages.ts → adminInvite block
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildAdminInviteMessage(adminInvite: AdminInviteInfo, contextInfo: any, options: MessageContentGenerationOptions): Promise<proto.Message.INewsletterAdminInviteMessage>;
|
|
9
|
+
/**
|
|
10
|
+
* Build scheduledCallCreationMessage from call content
|
|
11
|
+
* Source: messages.ts → call block
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildCallMessage(call: CallCreationInfo): proto.Message.IScheduledCallCreationMessage;
|
|
14
|
+
/**
|
|
15
|
+
* Build paymentInviteMessage from paymentInvite content
|
|
16
|
+
* Source: messages.ts → paymentInvite block
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildPaymentInviteMessage(paymentInvite: PaymentInviteInfo): proto.Message.IPaymentInviteMessage;
|
|
19
|
+
/**
|
|
20
|
+
* Check if buffer is a valid WebP file (magic bytes: RIFF....WEBP)
|
|
21
|
+
* Source: PR #84 rsalcara/InfiniteAPI
|
|
22
|
+
*/
|
|
23
|
+
export declare function isWebPBuffer(buffer: Buffer): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Detect animated WebP by checking VP8X chunk animation flag
|
|
26
|
+
* Source: PR #84 rsalcara/InfiniteAPI
|
|
27
|
+
*/
|
|
28
|
+
export declare function isAnimatedWebP(buffer: Buffer): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Detect Lottie/WAS format (gzip-compressed or raw Lottie JSON)
|
|
31
|
+
* WAS = WhatsApp Animated Sticker = gzip-compressed Lottie JSON
|
|
32
|
+
* Source: PR #260 rsalcara/InfiniteAPI
|
|
33
|
+
*/
|
|
34
|
+
export declare function isLottieBuffer(buffer: Buffer): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Build stickerPackMessage following PR #1561 (WhiskeySockets) + PR #84 + PR #260 approach:
|
|
37
|
+
*
|
|
38
|
+
* Architecture:
|
|
39
|
+
* 1. Process stickers → WebP/WAS buffers (with Lottie support from PR #260)
|
|
40
|
+
* 2. Cover (tray icon) → add to ZIP as ${packId}.webp inside ZIP
|
|
41
|
+
* 3. ZIP everything → encrypt → upload as 'sticker-pack'
|
|
42
|
+
* 4. Generate 252x252 JPEG thumbnail from cover → encrypt with SAME mediaKey → upload as 'thumbnail-sticker-pack'
|
|
43
|
+
* 5. Return full IStickerPackMessage with both upload results
|
|
44
|
+
*
|
|
45
|
+
* KEY FIXES vs old implementation:
|
|
46
|
+
* - Cover goes INSIDE ZIP (not uploaded separately as image)
|
|
47
|
+
* - Thumbnail is separate 252x252 JPEG upload with same mediaKey
|
|
48
|
+
* - stickerPackOrigin: USER_CREATED (not THIRD_PARTY)
|
|
49
|
+
* - thumbnail-sticker-pack media type for thumbnail
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildStickerPackMessage(stickerPack: StickerPack, options: MessageContentGenerationOptions): Promise<proto.Message.IStickerPackMessage>;
|
|
52
|
+
//# sourceMappingURL=from-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-messages.d.ts","sourceRoot":"","sources":["../../src/addons/from-messages.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAK9C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAIzG;;;GAGG;AACH,wBAAsB,uBAAuB,CAC5C,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAkBtD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAMpG;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAK/G;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAiBtD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAwBtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC5C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CA6K5C"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* from-messages.ts
|
|
3
|
+
* Source: src/Utils/messages.ts
|
|
4
|
+
*
|
|
5
|
+
* Message content builder functions ported from baileys.
|
|
6
|
+
* These are imported back into generateWAMessageContent in messages.ts.
|
|
7
|
+
*/
|
|
8
|
+
import { gunzipSync, gzipSync } from 'zlib';
|
|
9
|
+
import { promises as fs } from 'fs';
|
|
10
|
+
import { zipSync } from 'fflate';
|
|
11
|
+
import { Boom } from '@hapi/boom';
|
|
12
|
+
import { proto } from '../../WAProto/index.js';
|
|
13
|
+
import { generateMessageIDV2, unixTimestampSeconds } from '../Utils/generics.js';
|
|
14
|
+
import { sha256 } from '../Utils/crypto.js';
|
|
15
|
+
import { encryptedStream, getImageProcessingLibrary, getStream, toBuffer } from '../Utils/messages-media.js';
|
|
16
|
+
import { generateThumbnail } from '../Utils/messages-media.js';
|
|
17
|
+
// ── adminInvite → newsletterAdminInviteMessage ─────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Build newsletterAdminInviteMessage from adminInvite content
|
|
20
|
+
* Source: messages.ts → adminInvite block
|
|
21
|
+
*/
|
|
22
|
+
export async function buildAdminInviteMessage(adminInvite, contextInfo, options) {
|
|
23
|
+
const msg = {
|
|
24
|
+
newsletterJid: adminInvite.jid,
|
|
25
|
+
newsletterName: adminInvite.name,
|
|
26
|
+
caption: adminInvite.caption,
|
|
27
|
+
inviteExpiration: adminInvite.expiration,
|
|
28
|
+
contextInfo
|
|
29
|
+
};
|
|
30
|
+
if (options.getProfilePicUrl) {
|
|
31
|
+
try {
|
|
32
|
+
const pfpUrl = await options.getProfilePicUrl(adminInvite.jid, 'preview');
|
|
33
|
+
if (pfpUrl) {
|
|
34
|
+
const { thumbnail } = await generateThumbnail(pfpUrl, 'image', {});
|
|
35
|
+
if (thumbnail)
|
|
36
|
+
msg.jpegThumbnail = Buffer.from(thumbnail, 'base64');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch { }
|
|
40
|
+
}
|
|
41
|
+
return msg;
|
|
42
|
+
}
|
|
43
|
+
// ── call → scheduledCallCreationMessage ───────────────────────────────────
|
|
44
|
+
/**
|
|
45
|
+
* Build scheduledCallCreationMessage from call content
|
|
46
|
+
* Source: messages.ts → call block
|
|
47
|
+
*/
|
|
48
|
+
export function buildCallMessage(call) {
|
|
49
|
+
return {
|
|
50
|
+
scheduledTimestampMs: call.time ?? Date.now(),
|
|
51
|
+
callType: call.type ?? 1,
|
|
52
|
+
title: call.name ?? 'Call'
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// ── paymentInvite → paymentInviteMessage ──────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Build paymentInviteMessage from paymentInvite content
|
|
58
|
+
* Source: messages.ts → paymentInvite block
|
|
59
|
+
*/
|
|
60
|
+
export function buildPaymentInviteMessage(paymentInvite) {
|
|
61
|
+
return {
|
|
62
|
+
expiryTimestamp: paymentInvite.expiry ?? 0,
|
|
63
|
+
serviceType: paymentInvite.type ?? 2
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// ── stickerPack → stickerPackMessage ──────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Check if buffer is a valid WebP file (magic bytes: RIFF....WEBP)
|
|
69
|
+
* Source: PR #84 rsalcara/InfiniteAPI
|
|
70
|
+
*/
|
|
71
|
+
export function isWebPBuffer(buffer) {
|
|
72
|
+
if (buffer.length < 12)
|
|
73
|
+
return false;
|
|
74
|
+
const riffHeader = buffer.toString('ascii', 0, 4);
|
|
75
|
+
const webpHeader = buffer.toString('ascii', 8, 12);
|
|
76
|
+
return riffHeader === 'RIFF' && webpHeader === 'WEBP';
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Detect animated WebP by checking VP8X chunk animation flag
|
|
80
|
+
* Source: PR #84 rsalcara/InfiniteAPI
|
|
81
|
+
*/
|
|
82
|
+
export function isAnimatedWebP(buffer) {
|
|
83
|
+
if (!isWebPBuffer(buffer))
|
|
84
|
+
return false;
|
|
85
|
+
// VP8X chunk starts at offset 12 for extended WebP
|
|
86
|
+
try {
|
|
87
|
+
let offset = 12;
|
|
88
|
+
while (offset + 8 <= buffer.length) {
|
|
89
|
+
const chunkId = buffer.toString('ascii', offset, offset + 4);
|
|
90
|
+
const chunkSize = buffer.readUInt32LE(offset + 4);
|
|
91
|
+
if (chunkId === 'VP8X') {
|
|
92
|
+
// flags byte at offset+8, bit 1 (0x02) = animation
|
|
93
|
+
const flags = buffer[offset + 8] ?? 0;
|
|
94
|
+
return (flags & 0x02) !== 0;
|
|
95
|
+
}
|
|
96
|
+
offset += 8 + chunkSize + (chunkSize % 2);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch { }
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Detect Lottie/WAS format (gzip-compressed or raw Lottie JSON)
|
|
104
|
+
* WAS = WhatsApp Animated Sticker = gzip-compressed Lottie JSON
|
|
105
|
+
* Source: PR #260 rsalcara/InfiniteAPI
|
|
106
|
+
*/
|
|
107
|
+
export function isLottieBuffer(buffer) {
|
|
108
|
+
if (buffer.length < 2)
|
|
109
|
+
return false;
|
|
110
|
+
let jsonBuffer;
|
|
111
|
+
if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
|
|
112
|
+
// gzip-compressed
|
|
113
|
+
try {
|
|
114
|
+
jsonBuffer = gunzipSync(buffer, { maxOutputLength: 50 * 1024 * 1024 });
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (buffer[0] === 0x7b) {
|
|
121
|
+
// raw JSON starts with '{'
|
|
122
|
+
jsonBuffer = buffer;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const str = jsonBuffer.toString('utf8', 0, Math.min(jsonBuffer.length, 4096));
|
|
129
|
+
return str.includes('"v"') && str.includes('"layers"') && str.includes('"ip"') && str.includes('"op"');
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Build stickerPackMessage following PR #1561 (WhiskeySockets) + PR #84 + PR #260 approach:
|
|
137
|
+
*
|
|
138
|
+
* Architecture:
|
|
139
|
+
* 1. Process stickers → WebP/WAS buffers (with Lottie support from PR #260)
|
|
140
|
+
* 2. Cover (tray icon) → add to ZIP as ${packId}.webp inside ZIP
|
|
141
|
+
* 3. ZIP everything → encrypt → upload as 'sticker-pack'
|
|
142
|
+
* 4. Generate 252x252 JPEG thumbnail from cover → encrypt with SAME mediaKey → upload as 'thumbnail-sticker-pack'
|
|
143
|
+
* 5. Return full IStickerPackMessage with both upload results
|
|
144
|
+
*
|
|
145
|
+
* KEY FIXES vs old implementation:
|
|
146
|
+
* - Cover goes INSIDE ZIP (not uploaded separately as image)
|
|
147
|
+
* - Thumbnail is separate 252x252 JPEG upload with same mediaKey
|
|
148
|
+
* - stickerPackOrigin: USER_CREATED (not THIRD_PARTY)
|
|
149
|
+
* - thumbnail-sticker-pack media type for thumbnail
|
|
150
|
+
*/
|
|
151
|
+
export async function buildStickerPackMessage(stickerPack, options) {
|
|
152
|
+
const { stickers, cover, name, publisher, packId, description } = stickerPack;
|
|
153
|
+
const stickerPackId = packId || generateMessageIDV2();
|
|
154
|
+
const stickerData = {};
|
|
155
|
+
// ── Step 1: Process stickers ──────────────────────────────────────────
|
|
156
|
+
const validStickers = stickers.filter(s => s !== null && s !== undefined);
|
|
157
|
+
if (validStickers.length < 1) {
|
|
158
|
+
throw new Error('Sticker pack must contain at least one sticker');
|
|
159
|
+
}
|
|
160
|
+
const stickerMetadata = await Promise.all(validStickers.map(async (s, i) => {
|
|
161
|
+
const raw = s.sticker ?? s.data;
|
|
162
|
+
const normalized = Buffer.isBuffer(raw) ? raw : typeof raw === 'string' ? { url: raw } : raw;
|
|
163
|
+
const { stream } = await getStream(normalized);
|
|
164
|
+
const buffer = (await toBuffer(stream));
|
|
165
|
+
// Lottie/WAS detection (PR #260)
|
|
166
|
+
const detectedLottie = s.isLottie !== undefined ? s.isLottie : isLottieBuffer(buffer);
|
|
167
|
+
let finalBuffer = buffer;
|
|
168
|
+
if (detectedLottie) {
|
|
169
|
+
// Raw Lottie JSON → gzip to WAS
|
|
170
|
+
if (buffer[0] === 0x7b) {
|
|
171
|
+
finalBuffer = gzipSync(buffer);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
else if (isWebPBuffer(buffer)) {
|
|
175
|
+
finalBuffer = buffer; // preserve WebP as-is (keeps EXIF + animation)
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// Non-WebP sticker — needs sharp to convert (jimp can't output WebP)
|
|
179
|
+
const lib = await getImageProcessingLibrary();
|
|
180
|
+
if (lib?.sharp) {
|
|
181
|
+
finalBuffer = await lib.sharp.default(buffer).webp().toBuffer();
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
throw new Boom(`Sticker ${i + 1}: No image processing library (sharp) available for converting to WebP. Either install sharp or provide stickers in WebP format.`, { statusCode: 400 });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const isAnimated = detectedLottie ? true : isAnimatedWebP(finalBuffer);
|
|
188
|
+
const extension = detectedLottie ? 'was' : 'webp';
|
|
189
|
+
// Use sha256 hash for filename (deduplication) — RFC 4648 base64url
|
|
190
|
+
const hash = sha256(finalBuffer).toString('base64url');
|
|
191
|
+
const fileName = `${hash}.${extension}`;
|
|
192
|
+
// Dedup: only add if not already in stickerData
|
|
193
|
+
if (!stickerData[fileName]) {
|
|
194
|
+
stickerData[fileName] = [new Uint8Array(finalBuffer), { level: 0 }];
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
fileName,
|
|
198
|
+
mimetype: detectedLottie ? 'application/was' : 'image/webp',
|
|
199
|
+
isAnimated,
|
|
200
|
+
isLottie: detectedLottie,
|
|
201
|
+
emojis: s.emojis || [],
|
|
202
|
+
accessibilityLabel: s.accessibilityLabel || ''
|
|
203
|
+
};
|
|
204
|
+
}));
|
|
205
|
+
// ── Step 2: Process cover (tray icon) → add INSIDE ZIP ───────────────
|
|
206
|
+
const coverRaw = Buffer.isBuffer(cover) ? cover : typeof cover === 'string' ? { url: cover } : cover;
|
|
207
|
+
const { stream: coverStream } = await getStream(coverRaw);
|
|
208
|
+
const coverBuffer = (await toBuffer(coverStream));
|
|
209
|
+
// Cover as WebP in ZIP (tray icon)
|
|
210
|
+
let coverWebP;
|
|
211
|
+
if (isWebPBuffer(coverBuffer)) {
|
|
212
|
+
coverWebP = coverBuffer;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const lib = await getImageProcessingLibrary();
|
|
216
|
+
if (lib?.sharp) {
|
|
217
|
+
coverWebP = await lib.sharp.default(coverBuffer).webp().toBuffer();
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
throw new Boom('No image processing library (sharp) available for converting cover to WebP. Either install sharp or provide cover in WebP format.', { statusCode: 400 });
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const trayIconFileName = `${stickerPackId}.webp`;
|
|
224
|
+
stickerData[trayIconFileName] = [new Uint8Array(coverWebP), { level: 0 }];
|
|
225
|
+
// ── Step 3: ZIP + encrypt + upload as 'sticker-pack' ─────────────────
|
|
226
|
+
const zipBuffer = Buffer.from(zipSync(stickerData));
|
|
227
|
+
const stickerPackEncrypted = await encryptedStream(zipBuffer, 'sticker-pack', {
|
|
228
|
+
logger: options.logger,
|
|
229
|
+
opts: options.options
|
|
230
|
+
});
|
|
231
|
+
const stickerPackResult = await options.upload(stickerPackEncrypted.encFilePath, {
|
|
232
|
+
fileEncSha256B64: stickerPackEncrypted.fileEncSha256.toString('base64'),
|
|
233
|
+
mediaType: 'sticker-pack',
|
|
234
|
+
timeoutMs: options.mediaUploadTimeoutMs
|
|
235
|
+
});
|
|
236
|
+
// Cleanup temp file
|
|
237
|
+
try {
|
|
238
|
+
await fs.unlink(stickerPackEncrypted.encFilePath);
|
|
239
|
+
}
|
|
240
|
+
catch { }
|
|
241
|
+
// ── Step 4: Generate 252x252 JPEG thumbnail + upload as 'thumbnail-sticker-pack'
|
|
242
|
+
// CRITICAL: same mediaKey as ZIP upload (required by WhatsApp protocol)
|
|
243
|
+
let thumbnailBuffer;
|
|
244
|
+
try {
|
|
245
|
+
const lib = await getImageProcessingLibrary();
|
|
246
|
+
if (lib?.sharp) {
|
|
247
|
+
thumbnailBuffer = await lib.sharp.default(coverBuffer).resize(252, 252).jpeg().toBuffer();
|
|
248
|
+
}
|
|
249
|
+
else if (lib?.jimp) {
|
|
250
|
+
const jimpImage = await lib.jimp.Jimp.read(coverBuffer);
|
|
251
|
+
thumbnailBuffer = await jimpImage.resize({ w: 252, h: 252 }).getBuffer('image/jpeg');
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
throw new Error('No image processing library available for thumbnail generation');
|
|
255
|
+
}
|
|
256
|
+
if (!thumbnailBuffer || thumbnailBuffer.length === 0) {
|
|
257
|
+
throw new Error('Failed to generate thumbnail buffer');
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
thumbnailBuffer = coverBuffer;
|
|
262
|
+
}
|
|
263
|
+
const thumbEncrypted = await encryptedStream(thumbnailBuffer, 'thumbnail-sticker-pack', {
|
|
264
|
+
logger: options.logger,
|
|
265
|
+
opts: options.options,
|
|
266
|
+
mediaKey: stickerPackEncrypted.mediaKey // SAME mediaKey — protocol requirement!
|
|
267
|
+
});
|
|
268
|
+
const thumbResult = await options.upload(thumbEncrypted.encFilePath, {
|
|
269
|
+
fileEncSha256B64: thumbEncrypted.fileEncSha256.toString('base64'),
|
|
270
|
+
mediaType: 'thumbnail-sticker-pack',
|
|
271
|
+
timeoutMs: options.mediaUploadTimeoutMs
|
|
272
|
+
});
|
|
273
|
+
// Cleanup thumb temp file
|
|
274
|
+
try {
|
|
275
|
+
await fs.unlink(thumbEncrypted.encFilePath);
|
|
276
|
+
}
|
|
277
|
+
catch { }
|
|
278
|
+
// ── Step 5: Return complete IStickerPackMessage ───────────────────────
|
|
279
|
+
return {
|
|
280
|
+
name,
|
|
281
|
+
publisher,
|
|
282
|
+
stickerPackId,
|
|
283
|
+
packDescription: description,
|
|
284
|
+
stickerPackOrigin: proto.Message.StickerPackMessage.StickerPackOrigin.USER_CREATED,
|
|
285
|
+
stickerPackSize: zipBuffer.length,
|
|
286
|
+
stickers: stickerMetadata,
|
|
287
|
+
// ZIP upload fields
|
|
288
|
+
fileSha256: stickerPackEncrypted.fileSha256,
|
|
289
|
+
fileEncSha256: stickerPackEncrypted.fileEncSha256,
|
|
290
|
+
mediaKey: stickerPackEncrypted.mediaKey,
|
|
291
|
+
directPath: stickerPackResult.directPath,
|
|
292
|
+
fileLength: zipBuffer.length,
|
|
293
|
+
mediaKeyTimestamp: unixTimestampSeconds(),
|
|
294
|
+
// Tray icon (cover filename inside ZIP)
|
|
295
|
+
trayIconFileName,
|
|
296
|
+
// Thumbnail upload fields (separate 252x252 JPEG, same mediaKey)
|
|
297
|
+
thumbnailDirectPath: thumbResult.directPath,
|
|
298
|
+
thumbnailSha256: thumbEncrypted.fileSha256,
|
|
299
|
+
thumbnailEncSha256: thumbEncrypted.fileEncSha256,
|
|
300
|
+
thumbnailHeight: 252,
|
|
301
|
+
thumbnailWidth: 252,
|
|
302
|
+
imageDataHash: sha256(thumbnailBuffer).toString('base64')
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=from-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-messages.js","sourceRoot":"","sources":["../../src/addons/from-messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* baileys utility functions
|
|
3
|
+
* Ported to TypeScript for @whiskeysockets/baileys
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* import { MessageStore, createAntiDeleteHandler } from 'baileys/src/addons'
|
|
7
|
+
* import { MessageScheduler, createMessageScheduler } from 'baileys/src/addons'
|
|
8
|
+
* import { AutoReplyHandler, createAutoReply } from 'baileys/src/addons'
|
|
9
|
+
* import { generateVCard, createContactCard } from 'baileys/src/addons'
|
|
10
|
+
* import { StatusHelper, createTextStatus } from 'baileys/src/addons'
|
|
11
|
+
* import { MessageSearchManager, searchMessages } from 'baileys/src/addons'
|
|
12
|
+
* import { TemplateManager, createTemplateManager, renderTemplate } from 'baileys/src/addons'
|
|
13
|
+
*/
|
|
14
|
+
export * from './anti-delete.js';
|
|
15
|
+
export * from './scheduling.js';
|
|
16
|
+
export * from './auto-reply.js';
|
|
17
|
+
export * from './vcard.js';
|
|
18
|
+
export * from './status-posting.js';
|
|
19
|
+
export * from './message-search.js';
|
|
20
|
+
export * from './templates.js';
|
|
21
|
+
export * from './chat-control.js';
|
|
22
|
+
export * from './jid-plotting.js';
|
|
23
|
+
export * from './message-utils.js';
|
|
24
|
+
export * from './from-messages-recv.js';
|
|
25
|
+
export * from './from-messages-send.js';
|
|
26
|
+
export * from './from-chats.js';
|
|
27
|
+
export * from './from-messages.js';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,cAAc,eAAe,CAAA;AAG7B,cAAc,cAAc,CAAA;AAG5B,cAAc,cAAc,CAAA;AAG5B,cAAc,SAAS,CAAA;AAGvB,cAAc,kBAAkB,CAAA;AAGhC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,aAAa,CAAA;AAG3B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,sBAAsB,CAAA;AAGpC,cAAc,sBAAsB,CAAA;AAGpC,cAAc,cAAc,CAAA;AAG5B,cAAc,iBAAiB,CAAA"}
|