@realvare/based 2.7.70 → 2.7.71
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 +1118 -249
- package/lib/Defaults/baileys-version.json +1 -1
- package/lib/Defaults/index.d.ts +3 -1
- package/lib/Defaults/index.js +3 -1
- package/lib/Signal/Group/ciphertext-message.d.ts +1 -1
- package/lib/Signal/Group/ciphertext-message.js +1 -1
- package/lib/Signal/Group/sender-message-key.d.ts +1 -1
- package/lib/Signal/Group/sender-message-key.js +1 -1
- package/lib/Signal/libsignal.d.ts +1 -1
- package/lib/Socket/business.d.ts +1 -1
- package/lib/Socket/business.js +1 -1
- package/lib/Socket/chats.d.ts +4 -1
- package/lib/Socket/chats.js +160 -20
- package/lib/Socket/groups.js +55 -27
- package/lib/Socket/index.js +9 -0
- package/lib/Socket/messages-interactive.js +259 -0
- package/lib/Socket/messages-recv.js +272 -97
- package/lib/Socket/messages-send.js +104 -30
- package/lib/Socket/socket.js +142 -25
- package/lib/Types/Auth.d.ts +4 -0
- package/lib/Types/Socket.d.ts +2 -0
- package/lib/Utils/cache-manager.js +2 -1
- package/lib/Utils/generics.js +1 -1
- package/lib/Utils/jid-validation.js +7 -5
- package/lib/Utils/messages-media.d.ts +1 -1
- package/lib/Utils/messages-media.js +2 -2
- package/lib/Utils/messages.js +116 -45
- package/lib/WABinary/generic-utils.js +5 -1
- package/lib/WABinary/jid-utils.d.ts +1 -0
- package/lib/WABinary/jid-utils.js +9 -1
- package/lib/index.js +2 -4
- package/package.json +4 -3
package/lib/Utils/messages.js
CHANGED
|
@@ -56,6 +56,7 @@ const assertColor = async (color) => {
|
|
|
56
56
|
let assertedColor;
|
|
57
57
|
if (typeof color === 'number') {
|
|
58
58
|
assertedColor = color > 0 ? color : 0xffffffff + Number(color) + 1;
|
|
59
|
+
return assertedColor;
|
|
59
60
|
}
|
|
60
61
|
else {
|
|
61
62
|
let hex = color.trim().replace('#', '');
|
|
@@ -245,41 +246,35 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
245
246
|
var _p, _q;
|
|
246
247
|
|
|
247
248
|
// Cross-platform externalAdReply thumbnail handling
|
|
248
|
-
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
if (
|
|
249
|
+
const fixupExternalAdReplyThumb = async (externalAdReply) => {
|
|
250
|
+
const thumbUrl = externalAdReply.originalImageUrl || externalAdReply.thumbnailUrl;
|
|
251
|
+
const currentThumb = externalAdReply.thumbnail;
|
|
252
|
+
const currentThumbLen = currentThumb && typeof currentThumb.length === 'number' ? currentThumb.length : 0;
|
|
253
|
+
if (thumbUrl && (!currentThumb || currentThumbLen < 2000)) {
|
|
253
254
|
try {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
responseType: 'arraybuffer',
|
|
257
|
-
timeout: 5000,
|
|
255
|
+
const stream = await (0, messages_media_1.getHttpStream)(thumbUrl, {
|
|
256
|
+
timeout: 8000,
|
|
258
257
|
headers: {
|
|
259
258
|
'User-Agent': 'WhatsApp/2.23.20.15 iOS/16.0 Device/iPhone'
|
|
260
259
|
}
|
|
261
260
|
});
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
options.logger?.debug('Successfully downloaded externalAdReply thumbnail for cross-platform compatibility');
|
|
268
|
-
}
|
|
269
|
-
} catch (error) {
|
|
270
|
-
// If thumbnail download fails, keep thumbnailUrl as fallback
|
|
271
|
-
options.logger?.warn('Failed to download externalAdReply thumbnail for cross-platform compatibility:', error.message);
|
|
261
|
+
const { buffer } = await (0, messages_media_1.extractImageThumb)(stream, 512, 80);
|
|
262
|
+
externalAdReply.thumbnail = buffer;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
options.logger?.warn('Failed to generate externalAdReply thumbnail for cross-platform compatibility:', error.message);
|
|
272
266
|
}
|
|
273
267
|
}
|
|
274
|
-
|
|
275
|
-
// Ensure renderLargerThumbnail is set for better display across platforms
|
|
276
268
|
if (externalAdReply.renderLargerThumbnail === undefined) {
|
|
277
|
-
externalAdReply.renderLargerThumbnail =
|
|
278
|
-
options.logger?.debug('Set renderLargerThumbnail=false for improved cross-platform display');
|
|
269
|
+
externalAdReply.renderLargerThumbnail = true;
|
|
279
270
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
271
|
+
return externalAdReply;
|
|
272
|
+
};
|
|
273
|
+
if (message.contextInfo?.externalAdReply) {
|
|
274
|
+
message.contextInfo.externalAdReply = await fixupExternalAdReplyThumb(message.contextInfo.externalAdReply);
|
|
275
|
+
}
|
|
276
|
+
if (message.externalAdReply) {
|
|
277
|
+
message.externalAdReply = await fixupExternalAdReplyThumb(message.externalAdReply);
|
|
283
278
|
}
|
|
284
279
|
|
|
285
280
|
let m = {};
|
|
@@ -447,13 +442,28 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
447
442
|
m.keepInChatMessage.timestampMs = Date.now();
|
|
448
443
|
}
|
|
449
444
|
else if ('call' in message) {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
445
|
+
const call = message.call;
|
|
446
|
+
if (call && typeof call === 'object' && (
|
|
447
|
+
'callKey' in call
|
|
448
|
+
|| 'conversionSource' in call
|
|
449
|
+
|| 'conversionData' in call
|
|
450
|
+
|| 'conversionDelaySeconds' in call
|
|
451
|
+
|| 'ctwaSignals' in call
|
|
452
|
+
|| 'ctwaPayload' in call
|
|
453
|
+
|| 'nativeFlowCallButtonPayload' in call
|
|
454
|
+
|| 'deeplinkPayload' in call
|
|
455
|
+
)) {
|
|
456
|
+
m.call = WAProto_1.proto.Message.Call.fromObject(call);
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
m = {
|
|
460
|
+
scheduledCallCreationMessage: {
|
|
461
|
+
scheduledTimestampMs: (_a = call === null || call === void 0 ? void 0 : call.time) !== null && _a !== void 0 ? _a : Date.now(),
|
|
462
|
+
callType: (_b = call === null || call === void 0 ? void 0 : call.type) !== null && _b !== void 0 ? _b : 1,
|
|
463
|
+
title: call === null || call === void 0 ? void 0 : call.title
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
}
|
|
457
467
|
}
|
|
458
468
|
else if ('paymentInvite' in message) {
|
|
459
469
|
m.paymentInviteMessage = {
|
|
@@ -619,12 +629,12 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
619
629
|
};
|
|
620
630
|
}
|
|
621
631
|
else if ('richResponse' in message) {
|
|
622
|
-
m.richResponseMessage = {
|
|
632
|
+
m.richResponseMessage = WAProto_1.proto.AIRichResponseMessage.fromObject({
|
|
623
633
|
messageType: message.richResponse.messageType !== undefined ? message.richResponse.messageType : 1, // AI_RICH_RESPONSE_TYPE_STANDARD
|
|
624
634
|
submessages: message.richResponse.submessages || [],
|
|
625
635
|
unifiedResponse: message.richResponse.unifiedResponse,
|
|
626
636
|
contextInfo: message.richResponse.contextInfo
|
|
627
|
-
};
|
|
637
|
+
});
|
|
628
638
|
}
|
|
629
639
|
else if ('eventResponse' in message && !!message.eventResponse) {
|
|
630
640
|
m.eventResponseMessage = {
|
|
@@ -813,7 +823,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
813
823
|
else if ('requestPayment' in message) {
|
|
814
824
|
const reqPayment = message.requestPayment;
|
|
815
825
|
const sticker = reqPayment.sticker ?
|
|
816
|
-
await (0, exports.prepareWAMessageMedia)({ sticker: reqPayment.sticker
|
|
826
|
+
await (0, exports.prepareWAMessageMedia)({ sticker: reqPayment.sticker }, options)
|
|
817
827
|
: null;
|
|
818
828
|
let notes = {};
|
|
819
829
|
if (reqPayment.sticker) {
|
|
@@ -863,9 +873,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
863
873
|
else if ('requestPhoneNumber' in message) {
|
|
864
874
|
m.requestPhoneNumberMessage = {};
|
|
865
875
|
}
|
|
866
|
-
else if ('call' in message) {
|
|
867
|
-
m.callMessage = Types_1.WAProto.Message.CallMessage.fromObject(message.call);
|
|
868
|
-
}
|
|
869
876
|
else if ('newsletterMessage' in message) {
|
|
870
877
|
m.newsletterMessage = Types_1.WAProto.Message.NewsletterMessage.fromObject(message.newsletterMessage);
|
|
871
878
|
}
|
|
@@ -960,6 +967,46 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
960
967
|
background: message.payment.background
|
|
961
968
|
});
|
|
962
969
|
}
|
|
970
|
+
else if ('comment' in message) {
|
|
971
|
+
m.commentMessage = {
|
|
972
|
+
message: message.comment.message,
|
|
973
|
+
targetMessageKey: message.comment.targetMessageKey
|
|
974
|
+
};
|
|
975
|
+
}
|
|
976
|
+
else if ('question' in message) {
|
|
977
|
+
m.questionMessage = {
|
|
978
|
+
text: message.question.text,
|
|
979
|
+
contextInfo: message.question.contextInfo
|
|
980
|
+
};
|
|
981
|
+
}
|
|
982
|
+
else if ('questionResponse' in message) {
|
|
983
|
+
m.questionResponseMessage = {
|
|
984
|
+
key: message.questionResponse.key,
|
|
985
|
+
text: message.questionResponse.text
|
|
986
|
+
};
|
|
987
|
+
}
|
|
988
|
+
else if ('statusQuestionAnswer' in message) {
|
|
989
|
+
m.statusQuestionAnswerMessage = {
|
|
990
|
+
key: message.statusQuestionAnswer.key,
|
|
991
|
+
text: message.statusQuestionAnswer.text
|
|
992
|
+
};
|
|
993
|
+
}
|
|
994
|
+
else if ('statusQuoted' in message) {
|
|
995
|
+
m.statusQuotedMessage = {
|
|
996
|
+
type: message.statusQuoted.type,
|
|
997
|
+
text: message.statusQuoted.text,
|
|
998
|
+
thumbnail: message.statusQuoted.thumbnail,
|
|
999
|
+
jid: message.statusQuoted.jid,
|
|
1000
|
+
originalStatusId: message.statusQuoted.originalStatusId
|
|
1001
|
+
};
|
|
1002
|
+
}
|
|
1003
|
+
else if ('statusStickerInteraction' in message) {
|
|
1004
|
+
m.statusStickerInteractionMessage = {
|
|
1005
|
+
key: message.statusStickerInteraction.key,
|
|
1006
|
+
stickerKey: message.statusStickerInteraction.stickerKey,
|
|
1007
|
+
type: message.statusStickerInteraction.type
|
|
1008
|
+
};
|
|
1009
|
+
}
|
|
963
1010
|
else if ('album' in message) {
|
|
964
1011
|
const imageMessages = message.album.filter(item => 'image' in item);
|
|
965
1012
|
const videoMessages = message.album.filter(item => 'video' in item);
|
|
@@ -1056,7 +1103,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
1056
1103
|
interactiveMessage.header = {
|
|
1057
1104
|
title: message.title,
|
|
1058
1105
|
subtitle: message.subtitle,
|
|
1059
|
-
hasMediaAttachment: (
|
|
1106
|
+
hasMediaAttachment: !!(message === null || message === void 0 ? void 0 : message.media),
|
|
1060
1107
|
};
|
|
1061
1108
|
Object.assign(interactiveMessage.header, m);
|
|
1062
1109
|
}
|
|
@@ -1077,11 +1124,35 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
1077
1124
|
}
|
|
1078
1125
|
}
|
|
1079
1126
|
if ('title' in message && !!message.title) {
|
|
1080
|
-
|
|
1127
|
+
const headerData = {
|
|
1081
1128
|
title: message.title,
|
|
1082
1129
|
subtitle: message.subtitle,
|
|
1083
|
-
hasMediaAttachment:
|
|
1130
|
+
hasMediaAttachment: !!message.media,
|
|
1084
1131
|
};
|
|
1132
|
+
|
|
1133
|
+
// Process media attachments for interactive buttons
|
|
1134
|
+
if (message.media) {
|
|
1135
|
+
if (message.media.image) {
|
|
1136
|
+
const mediaMessage = await (0, exports.prepareWAMessageMedia)({ image: message.media.image }, options);
|
|
1137
|
+
if (mediaMessage.imageMessage) {
|
|
1138
|
+
headerData.imageMessage = mediaMessage.imageMessage;
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
else if (message.media.video) {
|
|
1142
|
+
const mediaMessage = await (0, exports.prepareWAMessageMedia)({ video: message.media.video }, options);
|
|
1143
|
+
if (mediaMessage.videoMessage) {
|
|
1144
|
+
headerData.videoMessage = mediaMessage.videoMessage;
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1147
|
+
else if (message.media.document) {
|
|
1148
|
+
const mediaMessage = await (0, exports.prepareWAMessageMedia)({ document: message.media.document }, options);
|
|
1149
|
+
if (mediaMessage.documentMessage) {
|
|
1150
|
+
headerData.documentMessage = mediaMessage.documentMessage;
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
interactiveMessage.header = headerData;
|
|
1085
1156
|
// Support for ProductMessage in header
|
|
1086
1157
|
if (message.headerProduct) {
|
|
1087
1158
|
const productMedia = await (0, exports.prepareWAMessageMedia)({ image: message.headerProduct.productImage }, options);
|
|
@@ -1123,7 +1194,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
1123
1194
|
interactiveMessage.header = {
|
|
1124
1195
|
title: message.title,
|
|
1125
1196
|
subtitle: message.subtitle,
|
|
1126
|
-
hasMediaAttachment: (
|
|
1197
|
+
hasMediaAttachment: !!(message === null || message === void 0 ? void 0 : message.media),
|
|
1127
1198
|
};
|
|
1128
1199
|
Object.assign(interactiveMessage.header, m);
|
|
1129
1200
|
}
|
|
@@ -1136,7 +1207,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
1136
1207
|
interactiveMessage.header = {
|
|
1137
1208
|
title: message.title,
|
|
1138
1209
|
subtitle: message.subtitle,
|
|
1139
|
-
hasMediaAttachment: (
|
|
1210
|
+
hasMediaAttachment: !!(message === null || message === void 0 ? void 0 : message.media),
|
|
1140
1211
|
};
|
|
1141
1212
|
Object.assign(interactiveMessage.header, m);
|
|
1142
1213
|
}
|
|
@@ -1719,4 +1790,4 @@ const clearCache = () => {
|
|
|
1719
1790
|
// Silently fail if cache manager is not available
|
|
1720
1791
|
}
|
|
1721
1792
|
};
|
|
1722
|
-
exports.clearCache = clearCache;
|
|
1793
|
+
exports.clearCache = clearCache;
|
|
@@ -54,7 +54,11 @@ exports.getBinaryNodeChildUInt = getBinaryNodeChildUInt;
|
|
|
54
54
|
const assertNodeErrorFree = (node) => {
|
|
55
55
|
const errNode = (0, exports.getBinaryNodeChild)(node, 'error');
|
|
56
56
|
if (errNode) {
|
|
57
|
-
|
|
57
|
+
const code = +errNode.attrs.code;
|
|
58
|
+
throw new boom_1.Boom(errNode.attrs.text || 'Unknown error', {
|
|
59
|
+
data: code,
|
|
60
|
+
statusCode: code || undefined
|
|
61
|
+
});
|
|
58
62
|
}
|
|
59
63
|
};
|
|
60
64
|
exports.assertNodeErrorFree = assertNodeErrorFree;
|
|
@@ -34,4 +34,5 @@ export declare const isJidStatusBroadcast: (jid: string) => jid is "status@broad
|
|
|
34
34
|
export declare const isJidBot: (jid: string | undefined) => boolean | "" | undefined;
|
|
35
35
|
export declare const jidNormalizedUser: (jid: string | undefined) => string;
|
|
36
36
|
export declare const lidToJid: (jid: string) => string;
|
|
37
|
+
export declare const resolveJid: (jid: string | undefined) => string | undefined;
|
|
37
38
|
export declare const getBotJid: (jid: string) => string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateAndConvertLidToJid = exports.validateAndCleanJid = exports.lidToJidEnhanced = exports.lidToJid = exports.getBotJid = exports.jidNormalizedUser = exports.isJidBot = exports.isJidStatusBroadcast = exports.isJidGroup = exports.isJidNewsletter = exports.isJidBroadcast = exports.isLid = exports.assertLid = exports.isJidUser = exports.isJidMetaAi = exports.areJidsSameUser = exports.jidDecode = exports.jidEncode = exports.META_AI_JID = exports.STORIES_JID = exports.PSA_WID = exports.SERVER_JID = exports.OFFICIAL_BIZ_JID = exports.S_WHATSAPP_NET = void 0;
|
|
3
|
+
exports.validateAndConvertLidToJid = exports.validateAndCleanJid = exports.lidToJidEnhanced = exports.resolveJid = exports.lidToJid = exports.getBotJid = exports.jidNormalizedUser = exports.isJidBot = exports.isJidStatusBroadcast = exports.isJidGroup = exports.isJidNewsletter = exports.isJidBroadcast = exports.isLid = exports.assertLid = exports.isJidUser = exports.isJidMetaAi = exports.areJidsSameUser = exports.jidDecode = exports.jidEncode = exports.META_AI_JID = exports.STORIES_JID = exports.PSA_WID = exports.SERVER_JID = exports.OFFICIAL_BIZ_JID = exports.S_WHATSAPP_NET = void 0;
|
|
4
4
|
exports.S_WHATSAPP_NET = '@s.whatsapp.net';
|
|
5
5
|
exports.OFFICIAL_BIZ_JID = '16505361212@c.us';
|
|
6
6
|
exports.SERVER_JID = 'server@c.us';
|
|
@@ -161,6 +161,14 @@ const lidToJid = (jid) => {
|
|
|
161
161
|
};
|
|
162
162
|
exports.lidToJid = lidToJid;
|
|
163
163
|
|
|
164
|
+
const resolveJid = (jid) => {
|
|
165
|
+
if (typeof jid === 'string' && jid.endsWith('@lid')) {
|
|
166
|
+
return lidToJid(jid);
|
|
167
|
+
}
|
|
168
|
+
return jid;
|
|
169
|
+
};
|
|
170
|
+
exports.resolveJid = resolveJid;
|
|
171
|
+
|
|
164
172
|
/**
|
|
165
173
|
* Enhanced LID to JID conversion with phone number validation
|
|
166
174
|
* Validates that the phone number has a valid international format
|
package/lib/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
const chalk = require("chalk");
|
|
4
|
-
const gradient = require("gradient-string");
|
|
5
4
|
|
|
6
|
-
// Only show banner if not in test environment and not explicitly disabled
|
|
7
5
|
if (process.env.NODE_ENV !== 'test' && process.env.SUPPRESS_BANNER !== 'true') {
|
|
8
6
|
const samakavare = 'baileys by sam aka vare - https://github.com/realvare • https://www.npmjs.com/~realvare';
|
|
9
|
-
console.log('\n' +
|
|
7
|
+
console.log('\n' + chalk.hex('#6349d8ff')(samakavare) + '\n');
|
|
10
8
|
}
|
|
11
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
10
|
if (k2 === undefined) k2 = k;
|
|
@@ -52,4 +50,4 @@ __exportStar(require("./WABinary"), exports);
|
|
|
52
50
|
__exportStar(require("./WAM"), exports);
|
|
53
51
|
__exportStar(require("./WAUSync"), exports);
|
|
54
52
|
|
|
55
|
-
exports.default = Socket_1.default;
|
|
53
|
+
exports.default = Socket_1.default;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@realvare/based",
|
|
3
|
-
"version": "2.7.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.7.71",
|
|
4
|
+
"description": "Whatsapp api by Sam",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"baileys",
|
|
7
7
|
"whatsapp",
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
"whatsapp-bot",
|
|
11
11
|
"automation",
|
|
12
12
|
"multi-device",
|
|
13
|
+
"samakavare",
|
|
14
|
+
"realvare",
|
|
13
15
|
"based",
|
|
14
16
|
"varebot"
|
|
15
17
|
],
|
|
@@ -50,7 +52,6 @@
|
|
|
50
52
|
"cache-manager": "^7.2.5",
|
|
51
53
|
"chalk": "^4.1.2",
|
|
52
54
|
"cheerio": "^1.1.2",
|
|
53
|
-
"gradient-string": "^2.0.2",
|
|
54
55
|
"jimp": "^0.22.10",
|
|
55
56
|
"libphonenumber-js": "^1.12.31",
|
|
56
57
|
"libsignal": "github:realvare/libsignal",
|