riftcore 1.4.5 → 1.4.7
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 +422 -0
- package/WAProto/index.js +79296 -118676
- package/example.js +13 -0
- package/lib/Defaults/baileys-version.json +2 -2
- package/lib/Defaults/index.d.ts +7 -16
- package/lib/Defaults/index.js +103 -90
- package/lib/Defaults/phonenumber-mcc.json +223 -0
- package/lib/Socket/Client/{types.d.ts → abstract-socket-client.d.ts} +2 -1
- package/lib/Socket/Client/index.d.ts +3 -2
- package/lib/Socket/Client/index.js +3 -2
- package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
- package/lib/Socket/Client/mobile-socket-client.js +65 -0
- package/lib/Socket/Client/{websocket.d.ts → web-socket-client.d.ts} +1 -2
- package/lib/Socket/Client/{websocket.js → web-socket-client.js} +5 -54
- package/lib/Socket/business.d.ts +58 -59
- package/lib/Socket/chats.d.ts +27 -29
- package/lib/Socket/chats.js +90 -97
- package/lib/Socket/erlanggaofficial.d.ts +219 -0
- package/lib/Socket/erlanggaofficial.js +439 -0
- package/lib/Socket/groups.d.ts +32 -41
- package/lib/Socket/groups.js +5 -20
- package/lib/Socket/index.d.ts +64 -63
- package/lib/Socket/index.js +2 -2
- package/lib/Socket/messages-recv.js +65 -9
- package/lib/Socket/messages-send.d.ts +47 -49
- package/lib/Socket/messages-send.js +377 -541
- package/lib/Socket/newsletter.d.ts +37 -39
- package/lib/Socket/newsletter.js +41 -73
- package/lib/Socket/registration.d.ts +267 -0
- package/lib/Socket/registration.js +166 -0
- package/lib/Socket/socket.d.ts +43 -270
- package/lib/Socket/socket.js +38 -62
- package/lib/Socket/usync.d.ts +3 -3
- package/lib/Store/index.d.ts +2 -1
- package/lib/Store/index.js +3 -1
- package/lib/Store/make-cache-manager-store.d.ts +13 -0
- package/lib/Store/make-cache-manager-store.js +83 -0
- package/lib/Store/make-in-memory-store.d.ts +24 -24
- package/lib/Store/make-in-memory-store.js +15 -27
- package/lib/Store/make-ordered-dictionary.d.ts +1 -1
- package/lib/Store/make-ordered-dictionary.js +2 -2
- package/lib/Types/Auth.d.ts +7 -0
- package/lib/Types/Call.d.ts +1 -1
- package/lib/Types/Chat.d.ts +7 -14
- package/lib/Types/Contact.d.ts +1 -5
- package/lib/Types/Events.d.ts +2 -44
- package/lib/Types/GroupMetadata.d.ts +2 -11
- package/lib/Types/Label.js +1 -1
- package/lib/Types/LabelAssociation.js +1 -1
- package/lib/Types/Message.d.ts +21 -148
- package/lib/Types/Message.js +2 -0
- package/lib/Types/Newsletter.d.ts +13 -0
- package/lib/Types/Newsletter.js +17 -3
- package/lib/Types/Socket.d.ts +9 -17
- package/lib/Types/index.d.ts +1 -8
- package/lib/Types/index.js +2 -2
- package/lib/Utils/auth-utils.d.ts +3 -3
- package/lib/Utils/auth-utils.js +13 -6
- package/lib/Utils/business.js +2 -2
- package/lib/Utils/chat-utils.d.ts +16 -15
- package/lib/Utils/chat-utils.js +35 -36
- package/lib/Utils/crypto.d.ts +16 -15
- package/lib/Utils/crypto.js +29 -71
- package/lib/Utils/decode-wa-message.d.ts +6 -22
- package/lib/Utils/decode-wa-message.js +56 -65
- package/lib/Utils/event-buffer.d.ts +2 -2
- package/lib/Utils/event-buffer.js +7 -11
- package/lib/Utils/generics.d.ts +20 -17
- package/lib/Utils/generics.js +23 -73
- package/lib/Utils/history.d.ts +0 -4
- package/lib/Utils/history.js +6 -4
- package/lib/Utils/link-preview.d.ts +2 -2
- package/lib/Utils/link-preview.js +1 -34
- package/lib/Utils/logger.d.ts +3 -10
- package/lib/Utils/lt-hash.d.ts +2 -2
- package/lib/Utils/lt-hash.js +6 -6
- package/lib/Utils/make-mutex.d.ts +2 -2
- package/lib/Utils/messages-media.d.ts +24 -28
- package/lib/Utils/messages-media.js +157 -406
- package/lib/Utils/messages.d.ts +10 -13
- package/lib/Utils/messages.js +48 -345
- package/lib/Utils/noise-handler.d.ts +12 -10
- package/lib/Utils/noise-handler.js +23 -18
- package/lib/Utils/process-message.d.ts +4 -5
- package/lib/Utils/process-message.js +25 -108
- package/lib/Utils/signal.d.ts +1 -2
- package/lib/Utils/signal.js +35 -37
- package/lib/Utils/use-multi-file-auth-state.d.ts +1 -0
- package/lib/Utils/use-multi-file-auth-state.js +6 -51
- package/lib/Utils/validate-connection.d.ts +4 -3
- package/lib/Utils/validate-connection.js +66 -90
- package/lib/WABinary/constants.d.ts +4 -4
- package/lib/WABinary/constants.js +13 -1276
- package/lib/WABinary/decode.d.ts +4 -3
- package/lib/WABinary/decode.js +13 -26
- package/lib/WABinary/encode.d.ts +2 -1
- package/lib/WABinary/encode.js +17 -39
- package/lib/WABinary/generic-utils.d.ts +3 -1
- package/lib/WABinary/generic-utils.js +10 -2
- package/lib/WABinary/jid-utils.d.ts +5 -11
- package/lib/WABinary/jid-utils.js +5 -28
- package/lib/WAM/BinaryInfo.d.ts +11 -2
- package/lib/WAM/encode.d.ts +2 -1
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +1 -1
- package/lib/index.d.ts +2 -6
- package/lib/index.js +15 -31
- package/package.json +51 -39
- package/WAProto/GenerateStatics.sh +0 -4
- package/WAProto/WAProto.proto +0 -4775
- package/WAProto/index.d.ts +0 -55057
- package/WAProto/index.ts.ts +0 -53473
- package/lib/Socket/setup.js +0 -481
- package/lib/Socket/setup.ts +0 -623
- package/lib/WABinary/jid-utils.js.bak +0 -83
- /package/lib/Socket/Client/{types.js → abstract-socket-client.js} +0 -0
package/lib/Utils/messages.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Logger } from 'pino';
|
|
1
4
|
import { type Transform } from 'stream';
|
|
2
5
|
import { proto } from '../../WAProto';
|
|
3
|
-
import { ILogger } from './logger';
|
|
4
6
|
import { AnyMediaMessageContent, AnyMessageContent, MediaGenerationOptions, MessageContentGenerationOptions, MessageGenerationOptions, MessageGenerationOptionsFromContent, MessageUserReceipt, WAMessage, WAMessageContent, WAProto } from '../Types';
|
|
5
7
|
import { MediaDownloadOptions } from './messages-media';
|
|
6
8
|
/**
|
|
@@ -9,7 +11,7 @@ import { MediaDownloadOptions } from './messages-media';
|
|
|
9
11
|
* @returns the URL, eg. https://google.com
|
|
10
12
|
*/
|
|
11
13
|
export declare const extractUrlFromText: (text: string) => string | undefined;
|
|
12
|
-
export declare const generateLinkPreviewIfRequired: (text: string, getUrlInfo: MessageGenerationOptions[
|
|
14
|
+
export declare const generateLinkPreviewIfRequired: (text: string, getUrlInfo: MessageGenerationOptions['getUrlInfo'], logger: MessageGenerationOptions['logger']) => Promise<import("../Types").WAUrlInfo | undefined>;
|
|
13
15
|
export declare const prepareWAMessageMedia: (message: AnyMediaMessageContent, options: MediaGenerationOptions) => Promise<proto.Message>;
|
|
14
16
|
export declare const prepareDisappearingMessageSettingContent: (ephemeralExpiration?: number) => proto.Message;
|
|
15
17
|
/**
|
|
@@ -38,13 +40,13 @@ export declare const extractMessageContent: (content: WAMessageContent | undefin
|
|
|
38
40
|
/**
|
|
39
41
|
* Returns the device predicted by message ID
|
|
40
42
|
*/
|
|
41
|
-
export declare const getDevice: (id: string) => "
|
|
43
|
+
export declare const getDevice: (id: string) => "android" | "unknown" | "web" | "ios" | "desktop";
|
|
42
44
|
/** Upserts a receipt in the message */
|
|
43
|
-
export declare const updateMessageWithReceipt: (msg: Pick<WAMessage,
|
|
45
|
+
export declare const updateMessageWithReceipt: (msg: Pick<WAMessage, 'userReceipt'>, receipt: MessageUserReceipt) => void;
|
|
44
46
|
/** Update the message with a new reaction */
|
|
45
|
-
export declare const updateMessageWithReaction: (msg: Pick<WAMessage,
|
|
47
|
+
export declare const updateMessageWithReaction: (msg: Pick<WAMessage, 'reactions'>, reaction: proto.IReaction) => void;
|
|
46
48
|
/** Update the message with a new poll update */
|
|
47
|
-
export declare const updateMessageWithPollUpdate: (msg: Pick<WAMessage,
|
|
49
|
+
export declare const updateMessageWithPollUpdate: (msg: Pick<WAMessage, 'pollUpdates'>, update: proto.IPollUpdate) => void;
|
|
48
50
|
type VoteAggregation = {
|
|
49
51
|
name: string;
|
|
50
52
|
voters: string[];
|
|
@@ -64,17 +66,12 @@ export declare const aggregateMessageKeysNotFromMe: (keys: proto.IMessageKey[])
|
|
|
64
66
|
}[];
|
|
65
67
|
type DownloadMediaMessageContext = {
|
|
66
68
|
reuploadRequest: (msg: WAMessage) => Promise<WAMessage>;
|
|
67
|
-
logger:
|
|
69
|
+
logger: Logger;
|
|
68
70
|
};
|
|
69
71
|
/**
|
|
70
72
|
* Downloads the given message. Throws an error if it's not a media message
|
|
71
73
|
*/
|
|
72
|
-
export declare const downloadMediaMessage: <Type extends "
|
|
74
|
+
export declare const downloadMediaMessage: <Type extends "stream" | "buffer">(message: WAMessage, type: Type, options: MediaDownloadOptions, ctx?: DownloadMediaMessageContext) => Promise<Type extends "buffer" ? Buffer : Transform>;
|
|
73
75
|
/** Checks whether the given message is a media message; if it is returns the inner content */
|
|
74
76
|
export declare const assertMediaContent: (content: proto.IMessage | null | undefined) => proto.Message.IVideoMessage | proto.Message.IImageMessage | proto.Message.IAudioMessage | proto.Message.IDocumentMessage | proto.Message.IStickerMessage;
|
|
75
|
-
export declare const toJid: (id: string) => string;
|
|
76
|
-
export declare const getSenderLid: (msg: WAMessage) => {
|
|
77
|
-
jid: string;
|
|
78
|
-
lid: string;
|
|
79
|
-
};
|
|
80
77
|
export {};
|
package/lib/Utils/messages.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
3
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
4
|
};
|
|
6
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.updateMessageWithPollUpdate = exports.updateMessageWithReaction = exports.updateMessageWithReceipt = exports.getDevice = exports.extractMessageContent = exports.normalizeMessageContent = exports.getContentType = exports.generateWAMessage = exports.generateWAMessageFromContent = exports.generateWAMessageContent = exports.generateForwardMessageContent = exports.prepareDisappearingMessageSettingContent = exports.prepareWAMessageMedia = exports.generateLinkPreviewIfRequired = exports.extractUrlFromText = void 0;
|
|
8
|
-
exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
|
|
6
|
+
exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.getAggregateVotesInPollMessage = exports.updateMessageWithPollUpdate = exports.updateMessageWithReaction = exports.updateMessageWithReceipt = exports.getDevice = exports.extractMessageContent = exports.normalizeMessageContent = exports.getContentType = exports.generateWAMessage = exports.generateWAMessageFromContent = exports.generateWAMessageContent = exports.generateForwardMessageContent = exports.prepareDisappearingMessageSettingContent = exports.prepareWAMessageMedia = exports.generateLinkPreviewIfRequired = exports.extractUrlFromText = void 0;
|
|
9
7
|
const boom_1 = require("@hapi/boom");
|
|
10
8
|
const axios_1 = __importDefault(require("axios"));
|
|
11
9
|
const crypto_1 = require("crypto");
|
|
@@ -104,9 +102,9 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
104
102
|
}
|
|
105
103
|
],
|
|
106
104
|
newsletter: {
|
|
107
|
-
newsletterJid: "
|
|
105
|
+
newsletterJid: "120363297591152843@newsletter",
|
|
108
106
|
serverMessageId: 0,
|
|
109
|
-
newsletterName: "
|
|
107
|
+
newsletterName: "-",
|
|
110
108
|
contentType: "UPDATE",
|
|
111
109
|
}
|
|
112
110
|
}
|
|
@@ -139,27 +137,19 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
139
137
|
return obj;
|
|
140
138
|
}
|
|
141
139
|
}
|
|
142
|
-
|
|
140
|
+
const requiresDurationComputation = mediaType === 'audio' && typeof uploadData.seconds === 'undefined';
|
|
143
141
|
const requiresThumbnailComputation = (mediaType === 'image' || mediaType === 'video') &&
|
|
144
142
|
(typeof uploadData['jpegThumbnail'] === 'undefined');
|
|
145
143
|
const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true;
|
|
146
144
|
const requiresAudioBackground = options.backgroundColor && mediaType === 'audio' && uploadData.ptt === true;
|
|
147
145
|
const requiresOriginalForSomeProcessing = requiresDurationComputation || requiresThumbnailComputation;
|
|
148
|
-
|
|
149
|
-
const { mediaKey, encWriteStream, bodyPath, fileEncSha256, fileSha256, fileLength, didSaveToTmpPath, opusConverted } = await (options.newsletter ? messages_media_1.prepareStream : messages_media_1.encryptedStream)(uploadData.media, options.mediaTypeOverride || mediaType, {
|
|
146
|
+
const { mediaKey, encWriteStream, bodyPath, fileEncSha256, fileSha256, fileLength, didSaveToTmpPath, } = await (options.newsletter ? messages_media_1.prepareStream : messages_media_1.encryptedStream)(uploadData.media, options.mediaTypeOverride || mediaType, {
|
|
150
147
|
logger,
|
|
151
148
|
saveOriginalFileIfRequired: requiresOriginalForSomeProcessing,
|
|
152
|
-
opts: options.options
|
|
153
|
-
isPtt: uploadData.ptt,
|
|
154
|
-
forceOpus: (mediaType === "audio" && uploadData.mimetype && uploadData.mimetype.includes('opus'))
|
|
149
|
+
opts: options.options
|
|
155
150
|
});
|
|
156
|
-
|
|
157
|
-
if (mediaType === 'audio' && opusConverted) {
|
|
158
|
-
uploadData.mimetype = 'audio/ogg; codecs=opus';
|
|
159
|
-
}
|
|
160
|
-
|
|
151
|
+
// url safe Base64 encode the SHA256 hash of the body
|
|
161
152
|
const fileEncSha256B64 = (options.newsletter ? fileSha256 : fileEncSha256 !== null && fileEncSha256 !== void 0 ? fileEncSha256 : fileSha256).toString('base64');
|
|
162
|
-
|
|
163
153
|
const [{ mediaUrl, directPath, handle }] = await Promise.all([
|
|
164
154
|
(async () => {
|
|
165
155
|
const result = await options.upload(encWriteStream, { fileEncSha256B64, mediaType, timeoutMs: options.mediaUploadTimeoutMs });
|
|
@@ -186,6 +176,10 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
186
176
|
uploadData.waveform = await (0, messages_media_1.getAudioWaveform)(bodyPath, logger);
|
|
187
177
|
logger === null || logger === void 0 ? void 0 : logger.debug('processed waveform');
|
|
188
178
|
}
|
|
179
|
+
if (requiresWaveformProcessing) {
|
|
180
|
+
uploadData.waveform = await (0, messages_media_1.getAudioWaveform)(bodyPath, logger);
|
|
181
|
+
logger === null || logger === void 0 ? void 0 : logger.debug('processed waveform');
|
|
182
|
+
}
|
|
189
183
|
if (requiresAudioBackground) {
|
|
190
184
|
uploadData.backgroundArgb = await assertColor(options.backgroundColor);
|
|
191
185
|
logger === null || logger === void 0 ? void 0 : logger.debug('computed backgroundColor audio status');
|
|
@@ -202,14 +196,8 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
202
196
|
}
|
|
203
197
|
// remove tmp files
|
|
204
198
|
if (didSaveToTmpPath && bodyPath) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
await fs_1.promises.unlink(bodyPath);
|
|
208
|
-
logger === null || logger === void 0 ? void 0 : logger.debug('removed tmp file');
|
|
209
|
-
}
|
|
210
|
-
catch (error) {
|
|
211
|
-
logger === null || logger === void 0 ? void 0 : logger.warn('failed to remove tmp file');
|
|
212
|
-
}
|
|
199
|
+
await fs_1.promises.unlink(bodyPath);
|
|
200
|
+
logger === null || logger === void 0 ? void 0 : logger.debug('removed tmp files');
|
|
213
201
|
}
|
|
214
202
|
});
|
|
215
203
|
const obj = Types_1.WAProto.Message.fromObject({
|
|
@@ -225,21 +213,10 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
225
213
|
media: undefined
|
|
226
214
|
})
|
|
227
215
|
});
|
|
228
|
-
|
|
229
|
-
// START PERBAIKAN PTV UNTUK CHANNEL
|
|
230
216
|
if (uploadData.ptv) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
obj.videoMessage = obj.videoMessage;
|
|
234
|
-
obj.videoMessage.viewOnce = true;
|
|
235
|
-
} else {
|
|
236
|
-
// Untuk chat biasa, gunakan ptvMessage
|
|
237
|
-
obj.ptvMessage = obj.videoMessage;
|
|
238
|
-
delete obj.videoMessage;
|
|
239
|
-
}
|
|
217
|
+
obj.ptvMessage = obj.videoMessage;
|
|
218
|
+
delete obj.videoMessage;
|
|
240
219
|
}
|
|
241
|
-
// END PERBAIKAN PTV UNTUK CHANNEL
|
|
242
|
-
|
|
243
220
|
if (cacheableKey) {
|
|
244
221
|
logger === null || logger === void 0 ? void 0 : logger.debug({ cacheableKey }, 'set cache');
|
|
245
222
|
options.mediaCache.set(cacheableKey, Types_1.WAProto.Message.encode(obj).finish());
|
|
@@ -294,8 +271,8 @@ const generateForwardMessageContent = (message, forceForward) => {
|
|
|
294
271
|
};
|
|
295
272
|
exports.generateForwardMessageContent = generateForwardMessageContent;
|
|
296
273
|
const generateWAMessageContent = async (message, options) => {
|
|
297
|
-
var _a
|
|
298
|
-
var
|
|
274
|
+
var _a;
|
|
275
|
+
var _b;
|
|
299
276
|
let m = {};
|
|
300
277
|
if ('text' in message) {
|
|
301
278
|
const extContent = { text: message.text };
|
|
@@ -304,6 +281,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
304
281
|
urlInfo = await (0, exports.generateLinkPreviewIfRequired)(message.text, options.getUrlInfo, options.logger);
|
|
305
282
|
}
|
|
306
283
|
if (urlInfo) {
|
|
284
|
+
extContent.canonicalUrl = urlInfo['canonical-url'];
|
|
307
285
|
extContent.matchedText = urlInfo['matched-text'];
|
|
308
286
|
extContent.jpegThumbnail = urlInfo.jpegThumbnail;
|
|
309
287
|
extContent.description = urlInfo.description;
|
|
@@ -364,54 +342,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
364
342
|
message.disappearingMessagesInChat;
|
|
365
343
|
m = (0, exports.prepareDisappearingMessageSettingContent)(exp);
|
|
366
344
|
}
|
|
367
|
-
else if ('groupInvite' in message) {
|
|
368
|
-
m.groupInviteMessage = {};
|
|
369
|
-
m.groupInviteMessage.inviteCode = message.groupInvite.inviteCode;
|
|
370
|
-
m.groupInviteMessage.inviteExpiration = message.groupInvite.inviteExpiration;
|
|
371
|
-
m.groupInviteMessage.caption = message.groupInvite.text;
|
|
372
|
-
m.groupInviteMessage.groupJid = message.groupInvite.jid;
|
|
373
|
-
m.groupInviteMessage.groupName = message.groupInvite.subject;
|
|
374
|
-
//TODO: use built-in interface and get disappearing mode info etc.
|
|
375
|
-
//TODO: cache / use store!?
|
|
376
|
-
if (options.getProfilePicUrl) {
|
|
377
|
-
const pfpUrl = await options.getProfilePicUrl(message.groupInvite.jid, 'preview');
|
|
378
|
-
if (pfpUrl) {
|
|
379
|
-
const resp = await axios_1.default.get(pfpUrl, { responseType: 'arraybuffer' });
|
|
380
|
-
if (resp.status === 200) {
|
|
381
|
-
m.groupInviteMessage.jpegThumbnail = resp.data;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
else if ('pin' in message) {
|
|
387
|
-
m.pinInChatMessage = {};
|
|
388
|
-
m.messageContextInfo = {};
|
|
389
|
-
m.pinInChatMessage.key = message.pin;
|
|
390
|
-
m.pinInChatMessage.type = message.type;
|
|
391
|
-
m.pinInChatMessage.senderTimestampMs = Date.now();
|
|
392
|
-
m.messageContextInfo.messageAddOnDurationInSecs = message.type === 1 ? message.time || 86400 : 0;
|
|
393
|
-
}
|
|
394
|
-
else if ('keep' in message) {
|
|
395
|
-
m.keepInChatMessage = {};
|
|
396
|
-
m.keepInChatMessage.key = message.keep;
|
|
397
|
-
m.keepInChatMessage.keepType = message.type;
|
|
398
|
-
m.keepInChatMessage.timestampMs = Date.now();
|
|
399
|
-
}
|
|
400
|
-
else if ('call' in message) {
|
|
401
|
-
m = {
|
|
402
|
-
scheduledCallCreationMessage: {
|
|
403
|
-
scheduledTimestampMs: (_a = message.call.time) !== null && _a !== void 0 ? _a : Date.now(),
|
|
404
|
-
callType: (_b = message.call.type) !== null && _b !== void 0 ? _b : 1,
|
|
405
|
-
title: message.call.title
|
|
406
|
-
}
|
|
407
|
-
};
|
|
408
|
-
}
|
|
409
|
-
else if ('paymentInvite' in message) {
|
|
410
|
-
m.paymentInviteMessage = {
|
|
411
|
-
serviceType: message.paymentInvite.type,
|
|
412
|
-
expiryTimestamp: message.paymentInvite.expiry
|
|
413
|
-
};
|
|
414
|
-
}
|
|
415
345
|
else if ('buttonReply' in message) {
|
|
416
346
|
switch (message.type) {
|
|
417
347
|
case 'template':
|
|
@@ -430,10 +360,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
430
360
|
break;
|
|
431
361
|
}
|
|
432
362
|
}
|
|
433
|
-
else if ('ptv' in message && message.ptv) {
|
|
434
|
-
const { videoMessage } = await (0, exports.prepareWAMessageMedia)({ video: message.video, ptv: true }, options); // <-- Perbaikan ptv: true
|
|
435
|
-
m.ptvMessage = videoMessage;
|
|
436
|
-
}
|
|
437
363
|
else if ('product' in message) {
|
|
438
364
|
const { imageMessage } = await (0, exports.prepareWAMessageMedia)({ image: message.product.productImage }, options);
|
|
439
365
|
m.productMessage = Types_1.WAProto.Message.ProductMessage.fromObject({
|
|
@@ -444,27 +370,11 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
444
370
|
}
|
|
445
371
|
});
|
|
446
372
|
}
|
|
447
|
-
else if ('order' in message) {
|
|
448
|
-
m.orderMessage = Types_1.WAProto.Message.OrderMessage.fromObject({
|
|
449
|
-
orderId: message.order.id,
|
|
450
|
-
thumbnail: message.order.thumbnail,
|
|
451
|
-
itemCount: message.order.itemCount,
|
|
452
|
-
status: message.order.status,
|
|
453
|
-
surface: message.order.surface,
|
|
454
|
-
orderTitle: message.order.title,
|
|
455
|
-
message: message.order.text,
|
|
456
|
-
sellerJid: message.order.seller,
|
|
457
|
-
token: message.order.token,
|
|
458
|
-
totalAmount1000: message.order.amount,
|
|
459
|
-
totalCurrencyCode: message.order.currency
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
373
|
else if ('listReply' in message) {
|
|
463
374
|
m.listResponseMessage = { ...message.listReply };
|
|
464
375
|
}
|
|
465
376
|
else if ('poll' in message) {
|
|
466
|
-
(
|
|
467
|
-
(_q = message.poll).toAnnouncementGroup || (_q.toAnnouncementGroup = false);
|
|
377
|
+
(_b = message.poll).selectableCount || (_b.selectableCount = 0);
|
|
468
378
|
if (!Array.isArray(message.poll.values)) {
|
|
469
379
|
throw new boom_1.Boom('Invalid poll values', { statusCode: 400 });
|
|
470
380
|
}
|
|
@@ -476,72 +386,11 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
476
386
|
// encKey
|
|
477
387
|
messageSecret: message.poll.messageSecret || (0, crypto_1.randomBytes)(32),
|
|
478
388
|
};
|
|
479
|
-
|
|
389
|
+
m.pollCreationMessage = {
|
|
480
390
|
name: message.poll.name,
|
|
481
391
|
selectableOptionsCount: message.poll.selectableCount,
|
|
482
392
|
options: message.poll.values.map(optionName => ({ optionName })),
|
|
483
393
|
};
|
|
484
|
-
if (message.poll.toAnnouncementGroup) {
|
|
485
|
-
// poll v2 is for community announcement groups (single select and multiple)
|
|
486
|
-
m.pollCreationMessageV2 = pollCreationMessage;
|
|
487
|
-
}
|
|
488
|
-
else {
|
|
489
|
-
if (message.poll.selectableCount === 1) {
|
|
490
|
-
// poll v3 is for single select polls
|
|
491
|
-
m.pollCreationMessageV3 = pollCreationMessage;
|
|
492
|
-
}
|
|
493
|
-
else {
|
|
494
|
-
// poll for multiple choice polls
|
|
495
|
-
m.pollCreationMessage = pollCreationMessage;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
else if ('event' in message) {
|
|
500
|
-
m.messageContextInfo = {
|
|
501
|
-
messageSecret: message.event.messageSecret || (0, crypto_1.randomBytes)(32),
|
|
502
|
-
};
|
|
503
|
-
m.eventMessage = { ...message.event };
|
|
504
|
-
}
|
|
505
|
-
else if ('inviteAdmin' in message) {
|
|
506
|
-
m.newsletterAdminInviteMessage = {};
|
|
507
|
-
m.newsletterAdminInviteMessage.inviteExpiration = message.inviteAdmin.inviteExpiration;
|
|
508
|
-
m.newsletterAdminInviteMessage.caption = message.inviteAdmin.text;
|
|
509
|
-
m.newsletterAdminInviteMessage.newsletterJid = message.inviteAdmin.jid;
|
|
510
|
-
m.newsletterAdminInviteMessage.newsletterName = message.inviteAdmin.subject;
|
|
511
|
-
m.newsletterAdminInviteMessage.jpegThumbnail = message.inviteAdmin.thumbnail;
|
|
512
|
-
}
|
|
513
|
-
else if ('requestPayment' in message) {
|
|
514
|
-
const sticker = ((_c = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _c === void 0 ? void 0 : _c.sticker) ?
|
|
515
|
-
await (0, exports.prepareWAMessageMedia)({ sticker: (_d = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _d === void 0 ? void 0 : _d.sticker, ...options }, options)
|
|
516
|
-
: null;
|
|
517
|
-
let notes = {};
|
|
518
|
-
if ((_e = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _e === void 0 ? void 0 : _e.sticker) {
|
|
519
|
-
notes = {
|
|
520
|
-
stickerMessage: {
|
|
521
|
-
...sticker === null || sticker === void 0 ? void 0 : sticker.stickerMessage,
|
|
522
|
-
contextInfo: (_f = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _f === void 0 ? void 0 : _f.contextInfo
|
|
523
|
-
}
|
|
524
|
-
};
|
|
525
|
-
}
|
|
526
|
-
else if (message.requestPayment.note) {
|
|
527
|
-
notes = {
|
|
528
|
-
extendedTextMessage: {
|
|
529
|
-
text: message.requestPayment.note,
|
|
530
|
-
contextInfo: (_g = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _g === void 0 ? void 0 : _g.contextInfo,
|
|
531
|
-
}
|
|
532
|
-
};
|
|
533
|
-
}
|
|
534
|
-
else {
|
|
535
|
-
throw new boom_1.Boom('Invalid media type', { statusCode: 400 });
|
|
536
|
-
}
|
|
537
|
-
m.requestPaymentMessage = Types_1.WAProto.Message.RequestPaymentMessage.fromObject({
|
|
538
|
-
expiryTimestamp: message.requestPayment.expiry,
|
|
539
|
-
amount1000: message.requestPayment.amount,
|
|
540
|
-
currencyCodeIso4217: message.requestPayment.currency,
|
|
541
|
-
requestFrom: message.requestPayment.from,
|
|
542
|
-
noteMessage: { ...notes },
|
|
543
|
-
background: (_h = message.requestPayment.background) !== null && _h !== void 0 ? _h : null,
|
|
544
|
-
});
|
|
545
394
|
}
|
|
546
395
|
else if ('sharePhoneNumber' in message) {
|
|
547
396
|
m.protocolMessage = {
|
|
@@ -551,14 +400,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
551
400
|
else if ('requestPhoneNumber' in message) {
|
|
552
401
|
m.requestPhoneNumberMessage = {};
|
|
553
402
|
}
|
|
554
|
-
else if ('album' in message) {
|
|
555
|
-
const imageMessages = message.album.filter(item => 'image' in item);
|
|
556
|
-
const videoMessages = message.album.filter(item => 'video' in item);
|
|
557
|
-
m.albumMessage = WAProto_1.proto.Message.AlbumMessage.fromObject({
|
|
558
|
-
expectedImageCount: imageMessages.length,
|
|
559
|
-
expectedVideoCount: videoMessages.length,
|
|
560
|
-
});
|
|
561
|
-
}
|
|
562
403
|
else {
|
|
563
404
|
m = await (0, exports.prepareWAMessageMedia)(message, options);
|
|
564
405
|
}
|
|
@@ -578,24 +419,14 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
578
419
|
buttonsMessage.headerType = ButtonType[type];
|
|
579
420
|
Object.assign(buttonsMessage, m);
|
|
580
421
|
}
|
|
581
|
-
if ('title' in message && !!message.title) {
|
|
582
|
-
buttonsMessage.text = message.title,
|
|
583
|
-
buttonsMessage.headerType = ButtonType.TEXT;
|
|
584
|
-
}
|
|
585
422
|
if ('footer' in message && !!message.footer) {
|
|
586
423
|
buttonsMessage.footerText = message.footer;
|
|
587
424
|
}
|
|
588
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
589
|
-
buttonsMessage.contextInfo = message.contextInfo;
|
|
590
|
-
}
|
|
591
|
-
if ('mentions' in message && !!message.mentions) {
|
|
592
|
-
buttonsMessage.contextInfo = { mentionedJid: message.mentions };
|
|
593
|
-
}
|
|
594
425
|
m = { buttonsMessage };
|
|
595
426
|
}
|
|
596
427
|
else if ('templateButtons' in message && !!message.templateButtons) {
|
|
597
428
|
const msg = {
|
|
598
|
-
hydratedButtons: message.
|
|
429
|
+
hydratedButtons: message.templateButtons
|
|
599
430
|
};
|
|
600
431
|
if ('text' in message) {
|
|
601
432
|
msg.hydratedContentText = message.text;
|
|
@@ -627,97 +458,10 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
627
458
|
};
|
|
628
459
|
m = { listMessage };
|
|
629
460
|
}
|
|
630
|
-
if ('interactiveButtons' in message && !!message.interactiveButtons) {
|
|
631
|
-
const interactiveMessage = {
|
|
632
|
-
nativeFlowMessage: Types_1.WAProto.Message.InteractiveMessage.NativeFlowMessage.fromObject({
|
|
633
|
-
buttons: message.interactiveButtons,
|
|
634
|
-
})
|
|
635
|
-
};
|
|
636
|
-
if ('text' in message) {
|
|
637
|
-
interactiveMessage.body = {
|
|
638
|
-
text: message.text
|
|
639
|
-
};
|
|
640
|
-
}
|
|
641
|
-
else if ('caption' in message) {
|
|
642
|
-
interactiveMessage.body = {
|
|
643
|
-
text: message.caption
|
|
644
|
-
};
|
|
645
|
-
interactiveMessage.header = {
|
|
646
|
-
title: message.title,
|
|
647
|
-
subtitle: message.subtitle,
|
|
648
|
-
hasMediaAttachment: (_j = message === null || message === void 0 ? void 0 : message.media) !== null && _j !== void 0 ? _j : false,
|
|
649
|
-
};
|
|
650
|
-
Object.assign(interactiveMessage.header, m);
|
|
651
|
-
}
|
|
652
|
-
if ('footer' in message && !!message.footer) {
|
|
653
|
-
interactiveMessage.footer = {
|
|
654
|
-
text: message.footer
|
|
655
|
-
};
|
|
656
|
-
}
|
|
657
|
-
if ('title' in message && !!message.title) {
|
|
658
|
-
interactiveMessage.header = {
|
|
659
|
-
title: message.title,
|
|
660
|
-
subtitle: message.subtitle,
|
|
661
|
-
hasMediaAttachment: (_k = message === null || message === void 0 ? void 0 : message.media) !== null && _k !== void 0 ? _k : false,
|
|
662
|
-
};
|
|
663
|
-
Object.assign(interactiveMessage.header, m);
|
|
664
|
-
}
|
|
665
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
666
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
|
667
|
-
}
|
|
668
|
-
if ('mentions' in message && !!message.mentions) {
|
|
669
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
|
670
|
-
}
|
|
671
|
-
m = { interactiveMessage };
|
|
672
|
-
}
|
|
673
|
-
if ('shop' in message && !!message.shop) {
|
|
674
|
-
const interactiveMessage = {
|
|
675
|
-
shopStorefrontMessage: Types_1.WAProto.Message.InteractiveMessage.ShopMessage.fromObject({
|
|
676
|
-
surface: message.shop,
|
|
677
|
-
id: message.id
|
|
678
|
-
})
|
|
679
|
-
};
|
|
680
|
-
if ('text' in message) {
|
|
681
|
-
interactiveMessage.body = {
|
|
682
|
-
text: message.text
|
|
683
|
-
};
|
|
684
|
-
}
|
|
685
|
-
else if ('caption' in message) {
|
|
686
|
-
interactiveMessage.body = {
|
|
687
|
-
text: message.caption
|
|
688
|
-
};
|
|
689
|
-
interactiveMessage.header = {
|
|
690
|
-
title: message.title,
|
|
691
|
-
subtitle: message.subtitle,
|
|
692
|
-
hasMediaAttachment: (_l = message === null || message === void 0 ? void 0 : message.media) !== null && _l !== void 0 ? _l : false,
|
|
693
|
-
};
|
|
694
|
-
Object.assign(interactiveMessage.header, m);
|
|
695
|
-
}
|
|
696
|
-
if ('footer' in message && !!message.footer) {
|
|
697
|
-
interactiveMessage.footer = {
|
|
698
|
-
text: message.footer
|
|
699
|
-
};
|
|
700
|
-
}
|
|
701
|
-
if ('title' in message && !!message.title) {
|
|
702
|
-
interactiveMessage.header = {
|
|
703
|
-
title: message.title,
|
|
704
|
-
subtitle: message.subtitle,
|
|
705
|
-
hasMediaAttachment: (_m = message === null || message === void 0 ? void 0 : message.media) !== null && _m !== void 0 ? _m : false,
|
|
706
|
-
};
|
|
707
|
-
Object.assign(interactiveMessage.header, m);
|
|
708
|
-
}
|
|
709
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
710
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
|
711
|
-
}
|
|
712
|
-
if ('mentions' in message && !!message.mentions) {
|
|
713
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
|
714
|
-
}
|
|
715
|
-
m = { interactiveMessage };
|
|
716
|
-
}
|
|
717
461
|
if ('viewOnce' in message && !!message.viewOnce) {
|
|
718
462
|
m = { viewOnceMessage: { message: m } };
|
|
719
463
|
}
|
|
720
|
-
if ('mentions' in message && ((
|
|
464
|
+
if ('mentions' in message && ((_a = message.mentions) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
721
465
|
const [messageType] = Object.keys(m);
|
|
722
466
|
m[messageType].contextInfo = m[messageType] || {};
|
|
723
467
|
m[messageType].contextInfo.mentionedJid = message.mentions;
|
|
@@ -750,29 +494,26 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
750
494
|
const key = (0, exports.getContentType)(innerMessage);
|
|
751
495
|
const timestamp = (0, generics_1.unixTimestampSeconds)(options.timestamp);
|
|
752
496
|
const { quoted, userJid } = options;
|
|
753
|
-
|
|
754
|
-
if (quoted && !(0, WABinary_1.isJidNewsletter)(jid)) {
|
|
497
|
+
if (quoted && !(0, WABinary_1.isJidNewsLetter)(jid)) {
|
|
755
498
|
const participant = quoted.key.fromMe ? userJid : (quoted.participant || quoted.key.participant || quoted.key.remoteJid);
|
|
756
499
|
let quotedMsg = (0, exports.normalizeMessageContent)(quoted.message);
|
|
757
500
|
const msgType = (0, exports.getContentType)(quotedMsg);
|
|
758
501
|
// strip any redundant properties
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
innerMessage[key].contextInfo = contextInfo;
|
|
775
|
-
}
|
|
502
|
+
quotedMsg = WAProto_1.proto.Message.fromObject({ [msgType]: quotedMsg[msgType] });
|
|
503
|
+
const quotedContent = quotedMsg[msgType];
|
|
504
|
+
if (typeof quotedContent === 'object' && quotedContent && 'contextInfo' in quotedContent) {
|
|
505
|
+
delete quotedContent.contextInfo;
|
|
506
|
+
}
|
|
507
|
+
const contextInfo = innerMessage[key].contextInfo || {};
|
|
508
|
+
contextInfo.participant = (0, WABinary_1.jidNormalizedUser)(participant);
|
|
509
|
+
contextInfo.stanzaId = quoted.key.id;
|
|
510
|
+
contextInfo.quotedMessage = quotedMsg;
|
|
511
|
+
// if a participant is quoted, then it must be a group
|
|
512
|
+
// hence, remoteJid of group must also be entered
|
|
513
|
+
if (jid !== quoted.key.remoteJid) {
|
|
514
|
+
contextInfo.remoteJid = quoted.key.remoteJid;
|
|
515
|
+
}
|
|
516
|
+
innerMessage[key].contextInfo = contextInfo;
|
|
776
517
|
}
|
|
777
518
|
if (
|
|
778
519
|
// if we want to send a disappearing message
|
|
@@ -782,7 +523,7 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
782
523
|
// already not converted to disappearing message
|
|
783
524
|
key !== 'ephemeralMessage' &&
|
|
784
525
|
// newsletter not accept disappearing messages
|
|
785
|
-
!(0, WABinary_1.
|
|
526
|
+
!(0, WABinary_1.isJidNewsLetter)(jid)) {
|
|
786
527
|
innerMessage[key].contextInfo = {
|
|
787
528
|
...(innerMessage[key].contextInfo || {}),
|
|
788
529
|
expiration: options.ephemeralExpiration || Defaults_1.WA_DEFAULT_EPHEMERAL,
|
|
@@ -794,7 +535,7 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
794
535
|
key: {
|
|
795
536
|
remoteJid: jid,
|
|
796
537
|
fromMe: true,
|
|
797
|
-
id: (options === null || options === void 0 ? void 0 : options.messageId) || (0, generics_1.
|
|
538
|
+
id: (options === null || options === void 0 ? void 0 : options.messageId) || (0, generics_1.generateMessageID)(),
|
|
798
539
|
},
|
|
799
540
|
message: message,
|
|
800
541
|
messageTimestamp: timestamp,
|
|
@@ -809,7 +550,7 @@ const generateWAMessage = async (jid, content, options) => {
|
|
|
809
550
|
var _a;
|
|
810
551
|
// ensure msg ID is with every log
|
|
811
552
|
options.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) === null || _a === void 0 ? void 0 : _a.child({ msgId: options.messageId });
|
|
812
|
-
return (0, exports.generateWAMessageFromContent)(jid, await (0, exports.generateWAMessageContent)(content, { newsletter: (0, WABinary_1.
|
|
553
|
+
return (0, exports.generateWAMessageFromContent)(jid, await (0, exports.generateWAMessageContent)(content, { newsletter: (0, WABinary_1.isJidNewsLetter)(jid), ...options }), options);
|
|
813
554
|
};
|
|
814
555
|
exports.generateWAMessage = generateWAMessage;
|
|
815
556
|
/** Get the key to access the true type of content */
|
|
@@ -846,24 +587,7 @@ const normalizeMessageContent = (content) => {
|
|
|
846
587
|
|| (message === null || message === void 0 ? void 0 : message.documentWithCaptionMessage)
|
|
847
588
|
|| (message === null || message === void 0 ? void 0 : message.viewOnceMessageV2)
|
|
848
589
|
|| (message === null || message === void 0 ? void 0 : message.viewOnceMessageV2Extension)
|
|
849
|
-
|| (message === null || message === void 0 ? void 0 : message.editedMessage)
|
|
850
|
-
|| (message === null || message === void 0 ? void 0 : message.groupMentionedMessage)
|
|
851
|
-
|| (message === null || message === void 0 ? void 0 : message.botInvokeMessage)
|
|
852
|
-
|| (message === null || message === void 0 ? void 0 : message.lottieStickerMessage)
|
|
853
|
-
|| (message === null || message === void 0 ? void 0 : message.eventCoverImage)
|
|
854
|
-
|| (message === null || message === void 0 ? void 0 : message.statusMentionMessage)
|
|
855
|
-
|| (message === null || message === void 0 ? void 0 : message.pollCreationOptionImageMessage)
|
|
856
|
-
|| (message === null || message === void 0 ? void 0 : message.associatedChildMessage)
|
|
857
|
-
|| (message === null || message === void 0 ? void 0 : message.groupStatusMentionMessage)
|
|
858
|
-
|| (message === null || message === void 0 ? void 0 : message.pollCreationMessageV4)
|
|
859
|
-
|| (message === null || message === void 0 ? void 0 : message.pollCreationMessageV5)
|
|
860
|
-
|| (message === null || message === void 0 ? void 0 : message.statusAddYours)
|
|
861
|
-
|| (message === null || message === void 0 ? void 0 : message.groupStatusMessage)
|
|
862
|
-
|| (message === null || message === void 0 ? void 0 : message.limitSharingMessage)
|
|
863
|
-
|| (message === null || message === void 0 ? void 0 : message.botTaskMessage)
|
|
864
|
-
|| (message === null || message === void 0 ? void 0 : message.questionMessage)
|
|
865
|
-
|| (message === null || message === void 0 ? void 0 : message.groupStatusMessageV2)
|
|
866
|
-
|| (message === null || message === void 0 ? void 0 : message.botForwardedMessage));
|
|
590
|
+
|| (message === null || message === void 0 ? void 0 : message.editedMessage));
|
|
867
591
|
}
|
|
868
592
|
};
|
|
869
593
|
exports.normalizeMessageContent = normalizeMessageContent;
|
|
@@ -913,11 +637,7 @@ exports.extractMessageContent = extractMessageContent;
|
|
|
913
637
|
/**
|
|
914
638
|
* Returns the device predicted by message ID
|
|
915
639
|
*/
|
|
916
|
-
const getDevice = (id) => /^3A.{18}$/.test(id) ? 'ios' :
|
|
917
|
-
/^3E.{20}$/.test(id) ? 'web' :
|
|
918
|
-
/^(.{21}|.{32})$/.test(id) ? 'android' :
|
|
919
|
-
/^(3F|.{18}$)/.test(id) ? 'desktop' :
|
|
920
|
-
'unknown';
|
|
640
|
+
const getDevice = (id) => /^3A.{18}$/.test(id) ? 'ios' : /^3E.{20}$/.test(id) ? 'web' : /^(.{21}|.{32})$/.test(id) ? 'android' : /^.{18}$/.test(id) ? 'desktop' : 'unknown';
|
|
921
641
|
exports.getDevice = getDevice;
|
|
922
642
|
/** Upserts a receipt in the message */
|
|
923
643
|
const updateMessageWithReceipt = (msg, receipt) => {
|
|
@@ -936,8 +656,9 @@ const updateMessageWithReaction = (msg, reaction) => {
|
|
|
936
656
|
const authorID = (0, generics_1.getKeyAuthor)(reaction.key);
|
|
937
657
|
const reactions = (msg.reactions || [])
|
|
938
658
|
.filter(r => (0, generics_1.getKeyAuthor)(r.key) !== authorID);
|
|
939
|
-
|
|
940
|
-
|
|
659
|
+
if (reaction.text) {
|
|
660
|
+
reactions.push(reaction);
|
|
661
|
+
}
|
|
941
662
|
msg.reactions = reactions;
|
|
942
663
|
};
|
|
943
664
|
exports.updateMessageWithReaction = updateMessageWithReaction;
|
|
@@ -990,6 +711,7 @@ function getAggregateVotesInPollMessage({ message, pollUpdates }, meId) {
|
|
|
990
711
|
}
|
|
991
712
|
return Object.values(voteHashMap);
|
|
992
713
|
}
|
|
714
|
+
exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
|
|
993
715
|
/** Given a list of message keys, aggregates them by chat & sender. Useful for sending read receipts in bulk */
|
|
994
716
|
const aggregateMessageKeysNotFromMe = (keys) => {
|
|
995
717
|
const keyMap = {};
|
|
@@ -1080,22 +802,3 @@ const assertMediaContent = (content) => {
|
|
|
1080
802
|
return mediaContent;
|
|
1081
803
|
};
|
|
1082
804
|
exports.assertMediaContent = assertMediaContent;
|
|
1083
|
-
|
|
1084
|
-
const toJid = (id) => {
|
|
1085
|
-
if (!id)
|
|
1086
|
-
return '';
|
|
1087
|
-
if (id.endsWith('@lid'))
|
|
1088
|
-
return id.replace('@lid', '@s.whatsapp.net');
|
|
1089
|
-
if (id.includes('@'))
|
|
1090
|
-
return id;
|
|
1091
|
-
return `${id}@s.whatsapp.net`;
|
|
1092
|
-
};
|
|
1093
|
-
exports.toJid = toJid;
|
|
1094
|
-
const getSenderLid = (message) => {
|
|
1095
|
-
const sender = message.key.participant || message.key.remoteJid;
|
|
1096
|
-
const user = (0, WABinary_1.jidDecode)(sender)?.user || '';
|
|
1097
|
-
const lid = (0, WABinary_1.jidEncode)(user, 'lid');
|
|
1098
|
-
console.log('sender lid:', lid);
|
|
1099
|
-
return { jid: sender, lid };
|
|
1100
|
-
};
|
|
1101
|
-
exports.getSenderLid = getSenderLid;
|