@builderbot/provider-baileys 1.3.15-alpha.2 → 1.3.15-alpha.20
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/dist/bailey.d.ts +15 -9
- package/dist/bailey.d.ts.map +1 -1
- package/dist/baileyWrapper.d.ts +2 -2
- package/dist/baileyWrapper.d.ts.map +1 -1
- package/dist/index.cjs +80 -33
- package/dist/index.mjs +81 -34
- package/dist/utils.d.ts +4 -4
- package/dist/utils.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/bailey.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ declare class BaileysProvider extends ProviderClass<WASocket> {
|
|
|
13
13
|
private reconnectDelay;
|
|
14
14
|
msgRetryCounterCache?: NodeCache;
|
|
15
15
|
userDevicesCache?: NodeCache;
|
|
16
|
+
messageCache?: NodeCache;
|
|
16
17
|
private logger;
|
|
17
18
|
private logStream;
|
|
18
19
|
private idsDuplicates;
|
|
@@ -38,7 +39,7 @@ declare class BaileysProvider extends ProviderClass<WASocket> {
|
|
|
38
39
|
protected getMessage: (key: {
|
|
39
40
|
remoteJid: string;
|
|
40
41
|
id: string;
|
|
41
|
-
}) => Promise<proto.
|
|
42
|
+
}) => Promise<proto.IMessage | undefined>;
|
|
42
43
|
protected saveCredsGlobal: (() => Promise<void>) | null;
|
|
43
44
|
/**
|
|
44
45
|
* Iniciar todo Bailey
|
|
@@ -77,20 +78,25 @@ declare class BaileysProvider extends ProviderClass<WASocket> {
|
|
|
77
78
|
* @example await getOrderDetails('order-id', 'order-token')
|
|
78
79
|
*/
|
|
79
80
|
getOrderDetails: (orderId: string, orderToken: string) => Promise<import("baileys").OrderDetails>;
|
|
81
|
+
/**
|
|
82
|
+
* Accede al lidMapping del signalRepository de Baileys.
|
|
83
|
+
*/
|
|
84
|
+
private get lidMapping();
|
|
80
85
|
/**
|
|
81
86
|
* Obtener LID (Local Identifier) para un número de teléfono (PN)
|
|
82
|
-
* @param
|
|
83
|
-
* @returns {Promise<string|null>} - El LID correspondiente o null si no se encuentra
|
|
84
|
-
* @example await getLIDForPN('1234567890@s.whatsapp.net')
|
|
87
|
+
* @param phoneNumber - JID con formato '1234567890@s.whatsapp.net'
|
|
85
88
|
*/
|
|
86
|
-
getLIDForPN: (phoneNumber: string) => Promise<
|
|
89
|
+
getLIDForPN: (phoneNumber: string) => Promise<string | null>;
|
|
87
90
|
/**
|
|
88
91
|
* Obtener número de teléfono (PN) para un LID (Local Identifier)
|
|
89
|
-
* @param
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
* @param lid - JID con formato '16424005304394@lid'
|
|
93
|
+
*/
|
|
94
|
+
getPNForLID: (lid: string) => Promise<string | null>;
|
|
95
|
+
/**
|
|
96
|
+
* Normaliza un número entrante a un JID válido para envío.
|
|
97
|
+
* Si es un @lid, intenta resolver a @s.whatsapp.net; si falla, envía al LID directamente.
|
|
92
98
|
*/
|
|
93
|
-
|
|
99
|
+
private resolveNumber;
|
|
94
100
|
/**
|
|
95
101
|
* @param {string} number
|
|
96
102
|
* @param {string} message
|
package/dist/bailey.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bailey.d.ts","sourceRoot":"","sources":["../src/bailey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAA;AAI9C,OAAO,SAAS,MAAM,YAAY,CAAA;AAIlC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAG3D,OAAO,EAGH,eAAe,EACf,SAAS,EACT,QAAQ,
|
|
1
|
+
{"version":3,"file":"bailey.d.ts","sourceRoot":"","sources":["../src/bailey.ts"],"names":[],"mappings":"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"}
|
package/dist/baileyWrapper.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import makeWASocketOther, { useMultiFileAuthState, DisconnectReason, proto, makeCacheableSignalKeyStore, getAggregateVotesInPollMessage, WASocket, BaileysEventMap, AnyMediaMessageContent, AnyMessageContent, downloadMediaMessage, WAMessage, MessageUpsertType, isJidGroup, isJidBroadcast, PollMessageOptions, WAVersion, WABrowserDescription } from 'baileys';
|
|
2
|
-
export { makeWASocketOther, useMultiFileAuthState, DisconnectReason, proto, makeCacheableSignalKeyStore, getAggregateVotesInPollMessage, WASocket, BaileysEventMap, AnyMediaMessageContent, AnyMessageContent, downloadMediaMessage, WAMessage, MessageUpsertType, isJidGroup, isJidBroadcast, PollMessageOptions, WAVersion, WABrowserDescription, };
|
|
1
|
+
import makeWASocketOther, { useMultiFileAuthState, DisconnectReason, proto, makeCacheableSignalKeyStore, getAggregateVotesInPollMessage, WASocket, BaileysEventMap, AnyMediaMessageContent, AnyMessageContent, downloadMediaMessage, WAMessage, MessageUpsertType, isJidGroup, isJidBroadcast, isLidUser, PollMessageOptions, WAVersion, WABrowserDescription } from 'baileys';
|
|
2
|
+
export { makeWASocketOther, useMultiFileAuthState, DisconnectReason, proto, makeCacheableSignalKeyStore, getAggregateVotesInPollMessage, WASocket, BaileysEventMap, AnyMediaMessageContent, AnyMessageContent, downloadMediaMessage, WAMessage, MessageUpsertType, isJidGroup, isJidBroadcast, isLidUser, PollMessageOptions, WAVersion, WABrowserDescription, };
|
|
3
3
|
//# sourceMappingURL=baileyWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baileyWrapper.d.ts","sourceRoot":"","sources":["../src/baileyWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,EAAE,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACvB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,oBAAoB,GACvB,CAAA"}
|
|
1
|
+
{"version":3,"file":"baileyWrapper.d.ts","sourceRoot":"","sources":["../src/baileyWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,EAAE,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACvB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,oBAAoB,GACvB,CAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -4226,19 +4226,24 @@ const emptyDirSessions = async (pathBase) => new Promise((resolve, reject) => {
|
|
|
4226
4226
|
});
|
|
4227
4227
|
});
|
|
4228
4228
|
/**
|
|
4229
|
-
* Cleans
|
|
4230
|
-
* @
|
|
4231
|
-
* @param
|
|
4232
|
-
* @returns
|
|
4229
|
+
* Cleans and normalizes a WhatsApp JID.
|
|
4230
|
+
* Supports @s.whatsapp.net, @g.us (groups), and @lid (Local Identifiers).
|
|
4231
|
+
* @param number - Raw JID or phone number
|
|
4232
|
+
* @param full - If true, strips the suffix and returns only the number/id part
|
|
4233
4233
|
*/
|
|
4234
4234
|
const baileyCleanNumber = (number, full = false) => {
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
|
|
4235
|
+
if (!number)
|
|
4236
|
+
return '';
|
|
4237
|
+
// Groups: always return as-is
|
|
4238
|
+
if (number.includes('@g.us'))
|
|
4239
|
+
return number;
|
|
4240
|
+
// LID (Local Identifiers): always preserve the @lid suffix
|
|
4241
|
+
// so sendMessage/resolveNumber can detect and route correctly
|
|
4242
|
+
if (number.includes('@lid'))
|
|
4238
4243
|
return number;
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
return
|
|
4244
|
+
// Standard phone numbers
|
|
4245
|
+
const raw = number.replace('@s.whatsapp.net', '').replace('+', '').replace(/\s/g, '');
|
|
4246
|
+
return full ? raw : `${raw}@s.whatsapp.net`;
|
|
4242
4247
|
};
|
|
4243
4248
|
/**
|
|
4244
4249
|
* Generates an image from a base64 string.
|
|
@@ -33756,8 +33761,14 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
33756
33761
|
}
|
|
33757
33762
|
};
|
|
33758
33763
|
this.getMessage = async (key) => {
|
|
33759
|
-
|
|
33760
|
-
|
|
33764
|
+
if (!key.id)
|
|
33765
|
+
return {};
|
|
33766
|
+
// Intentar recuperar el mensaje del cache
|
|
33767
|
+
const cachedMessage = this.messageCache?.get(`msg:${key.id}`);
|
|
33768
|
+
if (cachedMessage) {
|
|
33769
|
+
return cachedMessage;
|
|
33770
|
+
}
|
|
33771
|
+
return {};
|
|
33761
33772
|
};
|
|
33762
33773
|
this.saveCredsGlobal = null;
|
|
33763
33774
|
/**
|
|
@@ -33935,6 +33946,10 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
33935
33946
|
}
|
|
33936
33947
|
};
|
|
33937
33948
|
for (const messageCtx of messages) {
|
|
33949
|
+
// Almacenar mensaje en cache para poder recuperarlo en getMessage (soluciona iOS "this message can take a while")
|
|
33950
|
+
if (messageCtx?.key?.id && messageCtx?.message) {
|
|
33951
|
+
this.messageCache?.set(`msg:${messageCtx.key.id}`, messageCtx.message);
|
|
33952
|
+
}
|
|
33938
33953
|
if (messageCtx?.messageStubParameters?.length &&
|
|
33939
33954
|
messageCtx.messageStubParameters[0].includes('absent'))
|
|
33940
33955
|
continue;
|
|
@@ -33997,10 +34012,9 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
33997
34012
|
this.logger.log(`[${new Date().toISOString()}] Message received from phone, id=${messageCtx.requestId}`, messageCtx);
|
|
33998
34013
|
}
|
|
33999
34014
|
}
|
|
34000
|
-
//
|
|
34001
|
-
const remoteJid = messageCtx?.key
|
|
34002
|
-
const
|
|
34003
|
-
const fromParse = remoteJid?.includes('@lid') ? remoteJidAlt : remoteJid;
|
|
34015
|
+
// Preferir @s.whatsapp.net (remoteJidAlt) sobre @lid cuando esté disponible
|
|
34016
|
+
const { remoteJid, remoteJidAlt } = (messageCtx?.key ?? {});
|
|
34017
|
+
const fromParse = remoteJid?.includes('@lid') ? remoteJidAlt || remoteJid : remoteJid;
|
|
34004
34018
|
let payload = {
|
|
34005
34019
|
...messageCtx,
|
|
34006
34020
|
body: textToBody,
|
|
@@ -34173,17 +34187,11 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34173
34187
|
};
|
|
34174
34188
|
/**
|
|
34175
34189
|
* Obtener LID (Local Identifier) para un número de teléfono (PN)
|
|
34176
|
-
* @param
|
|
34177
|
-
* @returns {Promise<string|null>} - El LID correspondiente o null si no se encuentra
|
|
34178
|
-
* @example await getLIDForPN('1234567890@s.whatsapp.net')
|
|
34190
|
+
* @param phoneNumber - JID con formato '1234567890@s.whatsapp.net'
|
|
34179
34191
|
*/
|
|
34180
34192
|
this.getLIDForPN = async (phoneNumber) => {
|
|
34181
34193
|
try {
|
|
34182
|
-
|
|
34183
|
-
if (vendor?.signalRepository?.lidMapping?.getLIDForPN) {
|
|
34184
|
-
return await vendor.signalRepository.lidMapping.getLIDForPN(phoneNumber);
|
|
34185
|
-
}
|
|
34186
|
-
return null;
|
|
34194
|
+
return (await this.lidMapping?.getLIDForPN?.(phoneNumber)) ?? null;
|
|
34187
34195
|
}
|
|
34188
34196
|
catch (e) {
|
|
34189
34197
|
this.logger.log(`[${new Date().toISOString()}] Error getting LID for PN:`, e);
|
|
@@ -34192,23 +34200,32 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34192
34200
|
};
|
|
34193
34201
|
/**
|
|
34194
34202
|
* Obtener número de teléfono (PN) para un LID (Local Identifier)
|
|
34195
|
-
* @param
|
|
34196
|
-
* @returns {Promise<string|null>} - El número de teléfono correspondiente o null si no se encuentra
|
|
34197
|
-
* @example await getPNForLID('lid:xxxxxx')
|
|
34203
|
+
* @param lid - JID con formato '16424005304394@lid'
|
|
34198
34204
|
*/
|
|
34199
34205
|
this.getPNForLID = async (lid) => {
|
|
34200
34206
|
try {
|
|
34201
|
-
|
|
34202
|
-
if (vendor?.signalRepository?.lidMapping?.getPNForLID) {
|
|
34203
|
-
return await vendor.signalRepository.lidMapping.getPNForLID(lid);
|
|
34204
|
-
}
|
|
34205
|
-
return null;
|
|
34207
|
+
return (await this.lidMapping?.getPNForLID?.(lid)) ?? null;
|
|
34206
34208
|
}
|
|
34207
34209
|
catch (e) {
|
|
34208
34210
|
this.logger.log(`[${new Date().toISOString()}] Error getting PN for LID:`, e);
|
|
34209
34211
|
return null;
|
|
34210
34212
|
}
|
|
34211
34213
|
};
|
|
34214
|
+
/**
|
|
34215
|
+
* Normaliza un número entrante a un JID válido para envío.
|
|
34216
|
+
* Si es un @lid, intenta resolver a @s.whatsapp.net; si falla, envía al LID directamente.
|
|
34217
|
+
*/
|
|
34218
|
+
this.resolveNumber = async (numberIn) => {
|
|
34219
|
+
const jid = baileyCleanNumber(`${numberIn}`);
|
|
34220
|
+
if (!jid.includes('@lid'))
|
|
34221
|
+
return jid;
|
|
34222
|
+
const resolved = await this.getPNForLID(jid);
|
|
34223
|
+
if (resolved) {
|
|
34224
|
+
this.logger.log(`[${new Date().toISOString()}] LID resolved: ${jid} -> ${resolved}`);
|
|
34225
|
+
return baileyCleanNumber(resolved);
|
|
34226
|
+
}
|
|
34227
|
+
return jid;
|
|
34228
|
+
};
|
|
34212
34229
|
/**
|
|
34213
34230
|
* @param {string} number
|
|
34214
34231
|
* @param {string} message
|
|
@@ -34338,7 +34355,7 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34338
34355
|
*/
|
|
34339
34356
|
this.sendMessage = async (numberIn, message, options) => {
|
|
34340
34357
|
options = { ...options, ...options['options'] };
|
|
34341
|
-
const number =
|
|
34358
|
+
const number = await this.resolveNumber(numberIn);
|
|
34342
34359
|
if (options.buttons?.length)
|
|
34343
34360
|
return this.sendButtons(number, message, options.buttons);
|
|
34344
34361
|
if (options.media)
|
|
@@ -34466,6 +34483,16 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34466
34483
|
forceString: false,
|
|
34467
34484
|
errorOnMissing: false,
|
|
34468
34485
|
});
|
|
34486
|
+
// Cache para almacenar mensajes enviados (soluciona el problema "this message can take a while" en iOS)
|
|
34487
|
+
this.messageCache = new NodeCache({
|
|
34488
|
+
stdTTL: 43200, // 12 horas (optimizado para alto volumen)
|
|
34489
|
+
checkperiod: 1800, // Limpieza cada 30 minutos
|
|
34490
|
+
maxKeys: 20000, // 20K mensajes
|
|
34491
|
+
deleteOnExpire: true,
|
|
34492
|
+
useClones: false,
|
|
34493
|
+
forceString: false,
|
|
34494
|
+
errorOnMissing: false,
|
|
34495
|
+
});
|
|
34469
34496
|
this.globalVendorArgs = { ...this.globalVendorArgs, ...args };
|
|
34470
34497
|
this.setupCleanupHandlers();
|
|
34471
34498
|
this.setupPeriodicCleanup();
|
|
@@ -34530,6 +34557,10 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34530
34557
|
this.userDevicesCache.close();
|
|
34531
34558
|
this.userDevicesCache = undefined;
|
|
34532
34559
|
}
|
|
34560
|
+
if (this.messageCache) {
|
|
34561
|
+
this.messageCache.close();
|
|
34562
|
+
this.messageCache = undefined;
|
|
34563
|
+
}
|
|
34533
34564
|
this.mapSet.clear();
|
|
34534
34565
|
this.idsDuplicates.length = 0;
|
|
34535
34566
|
if (this.logStream && typeof this.logStream.end === 'function') {
|
|
@@ -34555,6 +34586,12 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34555
34586
|
.get('/', this.indexHome);
|
|
34556
34587
|
}
|
|
34557
34588
|
afterHttpServerInit() { }
|
|
34589
|
+
/**
|
|
34590
|
+
* Accede al lidMapping del signalRepository de Baileys.
|
|
34591
|
+
*/
|
|
34592
|
+
get lidMapping() {
|
|
34593
|
+
return this.vendor?.signalRepository?.lidMapping ?? null;
|
|
34594
|
+
}
|
|
34558
34595
|
shouldReconnect(statusCode) {
|
|
34559
34596
|
// Lista de códigos donde SÍ debemos reconectar
|
|
34560
34597
|
const reconnectableCodes = [
|
|
@@ -34588,6 +34625,16 @@ class BaileysProvider extends bot.ProviderClass {
|
|
|
34588
34625
|
this.logger.log(`[${new Date().toISOString()}] Reconnection attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts} in ${delay}ms`);
|
|
34589
34626
|
setTimeout(async () => {
|
|
34590
34627
|
try {
|
|
34628
|
+
// Cerrar el socket anterior para evitar conflictos de conexión (xml-not-well-formed)
|
|
34629
|
+
if (this.vendor) {
|
|
34630
|
+
try {
|
|
34631
|
+
this.vendor.ws?.close();
|
|
34632
|
+
this.vendor.end(new Error('Reconnecting'));
|
|
34633
|
+
}
|
|
34634
|
+
catch (e) {
|
|
34635
|
+
this.logger.log(`[${new Date().toISOString()}] Error closing previous socket:`, e);
|
|
34636
|
+
}
|
|
34637
|
+
}
|
|
34591
34638
|
this.initVendor().then((v) => this.listenOnEvents(v));
|
|
34592
34639
|
}
|
|
34593
34640
|
catch (error) {
|
package/dist/index.mjs
CHANGED
|
@@ -24,7 +24,7 @@ import require$$1$3 from 'tty';
|
|
|
24
24
|
import require$$0$b from 'crypto';
|
|
25
25
|
import require$$0$d from 'sharp';
|
|
26
26
|
import require$$0$c from 'fluent-ffmpeg';
|
|
27
|
-
import makeWASocketOther, {
|
|
27
|
+
import makeWASocketOther, { useMultiFileAuthState, isJidGroup, isJidBroadcast, makeCacheableSignalKeyStore, DisconnectReason, getAggregateVotesInPollMessage, downloadMediaMessage } from 'baileys';
|
|
28
28
|
|
|
29
29
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
30
30
|
|
|
@@ -4224,19 +4224,24 @@ const emptyDirSessions = async (pathBase) => new Promise((resolve, reject) => {
|
|
|
4224
4224
|
});
|
|
4225
4225
|
});
|
|
4226
4226
|
/**
|
|
4227
|
-
* Cleans
|
|
4228
|
-
* @
|
|
4229
|
-
* @param
|
|
4230
|
-
* @returns
|
|
4227
|
+
* Cleans and normalizes a WhatsApp JID.
|
|
4228
|
+
* Supports @s.whatsapp.net, @g.us (groups), and @lid (Local Identifiers).
|
|
4229
|
+
* @param number - Raw JID or phone number
|
|
4230
|
+
* @param full - If true, strips the suffix and returns only the number/id part
|
|
4231
4231
|
*/
|
|
4232
4232
|
const baileyCleanNumber = (number, full = false) => {
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4233
|
+
if (!number)
|
|
4234
|
+
return '';
|
|
4235
|
+
// Groups: always return as-is
|
|
4236
|
+
if (number.includes('@g.us'))
|
|
4237
|
+
return number;
|
|
4238
|
+
// LID (Local Identifiers): always preserve the @lid suffix
|
|
4239
|
+
// so sendMessage/resolveNumber can detect and route correctly
|
|
4240
|
+
if (number.includes('@lid'))
|
|
4236
4241
|
return number;
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
return
|
|
4242
|
+
// Standard phone numbers
|
|
4243
|
+
const raw = number.replace('@s.whatsapp.net', '').replace('+', '').replace(/\s/g, '');
|
|
4244
|
+
return full ? raw : `${raw}@s.whatsapp.net`;
|
|
4240
4245
|
};
|
|
4241
4246
|
/**
|
|
4242
4247
|
* Generates an image from a base64 string.
|
|
@@ -33754,8 +33759,14 @@ class BaileysProvider extends ProviderClass {
|
|
|
33754
33759
|
}
|
|
33755
33760
|
};
|
|
33756
33761
|
this.getMessage = async (key) => {
|
|
33757
|
-
|
|
33758
|
-
|
|
33762
|
+
if (!key.id)
|
|
33763
|
+
return {};
|
|
33764
|
+
// Intentar recuperar el mensaje del cache
|
|
33765
|
+
const cachedMessage = this.messageCache?.get(`msg:${key.id}`);
|
|
33766
|
+
if (cachedMessage) {
|
|
33767
|
+
return cachedMessage;
|
|
33768
|
+
}
|
|
33769
|
+
return {};
|
|
33759
33770
|
};
|
|
33760
33771
|
this.saveCredsGlobal = null;
|
|
33761
33772
|
/**
|
|
@@ -33933,6 +33944,10 @@ class BaileysProvider extends ProviderClass {
|
|
|
33933
33944
|
}
|
|
33934
33945
|
};
|
|
33935
33946
|
for (const messageCtx of messages) {
|
|
33947
|
+
// Almacenar mensaje en cache para poder recuperarlo en getMessage (soluciona iOS "this message can take a while")
|
|
33948
|
+
if (messageCtx?.key?.id && messageCtx?.message) {
|
|
33949
|
+
this.messageCache?.set(`msg:${messageCtx.key.id}`, messageCtx.message);
|
|
33950
|
+
}
|
|
33936
33951
|
if (messageCtx?.messageStubParameters?.length &&
|
|
33937
33952
|
messageCtx.messageStubParameters[0].includes('absent'))
|
|
33938
33953
|
continue;
|
|
@@ -33995,10 +34010,9 @@ class BaileysProvider extends ProviderClass {
|
|
|
33995
34010
|
this.logger.log(`[${new Date().toISOString()}] Message received from phone, id=${messageCtx.requestId}`, messageCtx);
|
|
33996
34011
|
}
|
|
33997
34012
|
}
|
|
33998
|
-
//
|
|
33999
|
-
const remoteJid = messageCtx?.key
|
|
34000
|
-
const
|
|
34001
|
-
const fromParse = remoteJid?.includes('@lid') ? remoteJidAlt : remoteJid;
|
|
34013
|
+
// Preferir @s.whatsapp.net (remoteJidAlt) sobre @lid cuando esté disponible
|
|
34014
|
+
const { remoteJid, remoteJidAlt } = (messageCtx?.key ?? {});
|
|
34015
|
+
const fromParse = remoteJid?.includes('@lid') ? remoteJidAlt || remoteJid : remoteJid;
|
|
34002
34016
|
let payload = {
|
|
34003
34017
|
...messageCtx,
|
|
34004
34018
|
body: textToBody,
|
|
@@ -34171,17 +34185,11 @@ class BaileysProvider extends ProviderClass {
|
|
|
34171
34185
|
};
|
|
34172
34186
|
/**
|
|
34173
34187
|
* Obtener LID (Local Identifier) para un número de teléfono (PN)
|
|
34174
|
-
* @param
|
|
34175
|
-
* @returns {Promise<string|null>} - El LID correspondiente o null si no se encuentra
|
|
34176
|
-
* @example await getLIDForPN('1234567890@s.whatsapp.net')
|
|
34188
|
+
* @param phoneNumber - JID con formato '1234567890@s.whatsapp.net'
|
|
34177
34189
|
*/
|
|
34178
34190
|
this.getLIDForPN = async (phoneNumber) => {
|
|
34179
34191
|
try {
|
|
34180
|
-
|
|
34181
|
-
if (vendor?.signalRepository?.lidMapping?.getLIDForPN) {
|
|
34182
|
-
return await vendor.signalRepository.lidMapping.getLIDForPN(phoneNumber);
|
|
34183
|
-
}
|
|
34184
|
-
return null;
|
|
34192
|
+
return (await this.lidMapping?.getLIDForPN?.(phoneNumber)) ?? null;
|
|
34185
34193
|
}
|
|
34186
34194
|
catch (e) {
|
|
34187
34195
|
this.logger.log(`[${new Date().toISOString()}] Error getting LID for PN:`, e);
|
|
@@ -34190,23 +34198,32 @@ class BaileysProvider extends ProviderClass {
|
|
|
34190
34198
|
};
|
|
34191
34199
|
/**
|
|
34192
34200
|
* Obtener número de teléfono (PN) para un LID (Local Identifier)
|
|
34193
|
-
* @param
|
|
34194
|
-
* @returns {Promise<string|null>} - El número de teléfono correspondiente o null si no se encuentra
|
|
34195
|
-
* @example await getPNForLID('lid:xxxxxx')
|
|
34201
|
+
* @param lid - JID con formato '16424005304394@lid'
|
|
34196
34202
|
*/
|
|
34197
34203
|
this.getPNForLID = async (lid) => {
|
|
34198
34204
|
try {
|
|
34199
|
-
|
|
34200
|
-
if (vendor?.signalRepository?.lidMapping?.getPNForLID) {
|
|
34201
|
-
return await vendor.signalRepository.lidMapping.getPNForLID(lid);
|
|
34202
|
-
}
|
|
34203
|
-
return null;
|
|
34205
|
+
return (await this.lidMapping?.getPNForLID?.(lid)) ?? null;
|
|
34204
34206
|
}
|
|
34205
34207
|
catch (e) {
|
|
34206
34208
|
this.logger.log(`[${new Date().toISOString()}] Error getting PN for LID:`, e);
|
|
34207
34209
|
return null;
|
|
34208
34210
|
}
|
|
34209
34211
|
};
|
|
34212
|
+
/**
|
|
34213
|
+
* Normaliza un número entrante a un JID válido para envío.
|
|
34214
|
+
* Si es un @lid, intenta resolver a @s.whatsapp.net; si falla, envía al LID directamente.
|
|
34215
|
+
*/
|
|
34216
|
+
this.resolveNumber = async (numberIn) => {
|
|
34217
|
+
const jid = baileyCleanNumber(`${numberIn}`);
|
|
34218
|
+
if (!jid.includes('@lid'))
|
|
34219
|
+
return jid;
|
|
34220
|
+
const resolved = await this.getPNForLID(jid);
|
|
34221
|
+
if (resolved) {
|
|
34222
|
+
this.logger.log(`[${new Date().toISOString()}] LID resolved: ${jid} -> ${resolved}`);
|
|
34223
|
+
return baileyCleanNumber(resolved);
|
|
34224
|
+
}
|
|
34225
|
+
return jid;
|
|
34226
|
+
};
|
|
34210
34227
|
/**
|
|
34211
34228
|
* @param {string} number
|
|
34212
34229
|
* @param {string} message
|
|
@@ -34336,7 +34353,7 @@ class BaileysProvider extends ProviderClass {
|
|
|
34336
34353
|
*/
|
|
34337
34354
|
this.sendMessage = async (numberIn, message, options) => {
|
|
34338
34355
|
options = { ...options, ...options['options'] };
|
|
34339
|
-
const number =
|
|
34356
|
+
const number = await this.resolveNumber(numberIn);
|
|
34340
34357
|
if (options.buttons?.length)
|
|
34341
34358
|
return this.sendButtons(number, message, options.buttons);
|
|
34342
34359
|
if (options.media)
|
|
@@ -34464,6 +34481,16 @@ class BaileysProvider extends ProviderClass {
|
|
|
34464
34481
|
forceString: false,
|
|
34465
34482
|
errorOnMissing: false,
|
|
34466
34483
|
});
|
|
34484
|
+
// Cache para almacenar mensajes enviados (soluciona el problema "this message can take a while" en iOS)
|
|
34485
|
+
this.messageCache = new NodeCache({
|
|
34486
|
+
stdTTL: 43200, // 12 horas (optimizado para alto volumen)
|
|
34487
|
+
checkperiod: 1800, // Limpieza cada 30 minutos
|
|
34488
|
+
maxKeys: 20000, // 20K mensajes
|
|
34489
|
+
deleteOnExpire: true,
|
|
34490
|
+
useClones: false,
|
|
34491
|
+
forceString: false,
|
|
34492
|
+
errorOnMissing: false,
|
|
34493
|
+
});
|
|
34467
34494
|
this.globalVendorArgs = { ...this.globalVendorArgs, ...args };
|
|
34468
34495
|
this.setupCleanupHandlers();
|
|
34469
34496
|
this.setupPeriodicCleanup();
|
|
@@ -34528,6 +34555,10 @@ class BaileysProvider extends ProviderClass {
|
|
|
34528
34555
|
this.userDevicesCache.close();
|
|
34529
34556
|
this.userDevicesCache = undefined;
|
|
34530
34557
|
}
|
|
34558
|
+
if (this.messageCache) {
|
|
34559
|
+
this.messageCache.close();
|
|
34560
|
+
this.messageCache = undefined;
|
|
34561
|
+
}
|
|
34531
34562
|
this.mapSet.clear();
|
|
34532
34563
|
this.idsDuplicates.length = 0;
|
|
34533
34564
|
if (this.logStream && typeof this.logStream.end === 'function') {
|
|
@@ -34553,6 +34584,12 @@ class BaileysProvider extends ProviderClass {
|
|
|
34553
34584
|
.get('/', this.indexHome);
|
|
34554
34585
|
}
|
|
34555
34586
|
afterHttpServerInit() { }
|
|
34587
|
+
/**
|
|
34588
|
+
* Accede al lidMapping del signalRepository de Baileys.
|
|
34589
|
+
*/
|
|
34590
|
+
get lidMapping() {
|
|
34591
|
+
return this.vendor?.signalRepository?.lidMapping ?? null;
|
|
34592
|
+
}
|
|
34556
34593
|
shouldReconnect(statusCode) {
|
|
34557
34594
|
// Lista de códigos donde SÍ debemos reconectar
|
|
34558
34595
|
const reconnectableCodes = [
|
|
@@ -34586,6 +34623,16 @@ class BaileysProvider extends ProviderClass {
|
|
|
34586
34623
|
this.logger.log(`[${new Date().toISOString()}] Reconnection attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts} in ${delay}ms`);
|
|
34587
34624
|
setTimeout(async () => {
|
|
34588
34625
|
try {
|
|
34626
|
+
// Cerrar el socket anterior para evitar conflictos de conexión (xml-not-well-formed)
|
|
34627
|
+
if (this.vendor) {
|
|
34628
|
+
try {
|
|
34629
|
+
this.vendor.ws?.close();
|
|
34630
|
+
this.vendor.end(new Error('Reconnecting'));
|
|
34631
|
+
}
|
|
34632
|
+
catch (e) {
|
|
34633
|
+
this.logger.log(`[${new Date().toISOString()}] Error closing previous socket:`, e);
|
|
34634
|
+
}
|
|
34635
|
+
}
|
|
34589
34636
|
this.initVendor().then((v) => this.listenOnEvents(v));
|
|
34590
34637
|
}
|
|
34591
34638
|
catch (error) {
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
declare const emptyDirSessions: (pathBase: string) => Promise<unknown>;
|
|
2
2
|
/**
|
|
3
|
-
* Cleans
|
|
4
|
-
* @
|
|
5
|
-
* @param
|
|
6
|
-
* @returns
|
|
3
|
+
* Cleans and normalizes a WhatsApp JID.
|
|
4
|
+
* Supports @s.whatsapp.net, @g.us (groups), and @lid (Local Identifiers).
|
|
5
|
+
* @param number - Raw JID or phone number
|
|
6
|
+
* @param full - If true, strips the suffix and returns only the number/id part
|
|
7
7
|
*/
|
|
8
8
|
declare const baileyCleanNumber: (number: string, full?: boolean) => string;
|
|
9
9
|
/**
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,gBAAgB,GAAU,UAAU,MAAM,qBAM1C,CAAA;AACN;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,OAAM,OAAe,KAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,gBAAgB,GAAU,UAAU,MAAM,qBAM1C,CAAA;AACN;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,OAAM,OAAe,KAAG,MAalE,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,GAAU,QAAQ,MAAM,EAAE,OAAM,MAAiB,KAAG,OAAO,CAAC,IAAI,CAaxF,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,GAAI,WAAW,MAAM,KAAG,OAKhD,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builderbot/provider-baileys",
|
|
3
|
-
"version": "1.3.15-alpha.
|
|
3
|
+
"version": "1.3.15-alpha.20",
|
|
4
4
|
"description": "Now I'm the model of a modern major general / The venerated Virginian veteran whose men are all / Lining up, to put me up on a pedestal / Writin' letters to relatives / Embellishin' my elegance and eloquence / But the elephant is in the room / The truth is in ya face when ya hear the British cannons go / BOOM",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "Leifer Mendez <leifer33@gmail.com>",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/codigoencasa/bot-whatsapp#readme",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@builderbot/bot": "1.3.15-alpha.
|
|
41
|
+
"@builderbot/bot": "^1.3.15-alpha.20",
|
|
42
42
|
"@hapi/boom": "^10.0.1",
|
|
43
43
|
"@jest/globals": "^30.2.0",
|
|
44
44
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"node-cache": "^5.1.2",
|
|
78
78
|
"sharp": "0.33.3"
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "9e42f89f192af0c70931241e820e726f822dd9cc"
|
|
81
81
|
}
|