trompot 1.6.7 → 1.7.0
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 +0 -7
- package/lib/messages/MediaMessage.js +0 -15
- package/lib/messages/MediaMessage.js.map +1 -1
- package/lib/telegram/TelegramBot.d.ts +3 -3
- package/lib/telegram/TelegramBot.js +7 -16
- package/lib/telegram/TelegramBot.js.map +1 -1
- package/lib/telegram/TelegramEvents.js.map +1 -1
- package/lib/telegram/TelegramSendingController.d.ts +17 -12
- package/lib/telegram/TelegramSendingController.js +12 -45
- package/lib/telegram/TelegramSendingController.js.map +1 -1
- package/lib/telegram/TelegramToRompotConverter.d.ts +3 -3
- package/lib/telegram/TelegramToRompotConverter.js.map +1 -1
- package/lib/telegram/TelegramUtils.d.ts +10 -10
- package/lib/telegram/TelegramUtils.js +20 -20
- package/lib/telegram/TelegramUtils.js.map +1 -1
- package/lib/telegram/telegramTypes.d.ts +5 -0
- package/lib/telegram/telegramTypes.js +3 -0
- package/lib/telegram/telegramTypes.js.map +1 -0
- package/lib/wa/ConfigWAEvents.js +14 -11
- package/lib/wa/ConfigWAEvents.js.map +1 -1
- package/lib/wa/ConvertWAMessage.js +49 -60
- package/lib/wa/ConvertWAMessage.js.map +1 -1
- package/lib/wa/ID.d.ts +13 -1
- package/lib/wa/ID.js +43 -1
- package/lib/wa/ID.js.map +1 -1
- package/lib/wa/WhatsAppBot.d.ts +0 -2
- package/lib/wa/WhatsAppBot.js +8 -12
- package/lib/wa/WhatsAppBot.js.map +1 -1
- package/lib/wa/constants/DisconnectReasons.d.ts +1 -1
- package/lib/wa/constants/DisconnectReasons.js +1 -0
- package/lib/wa/constants/DisconnectReasons.js.map +1 -1
- package/lib/wa/constants/ErrorCodes.d.ts +4 -0
- package/lib/wa/constants/ErrorCodes.js +4 -0
- package/lib/wa/constants/ErrorCodes.js.map +1 -1
- package/lib/wa/constants/JIDPatterns.d.ts +8 -1
- package/lib/wa/constants/JIDPatterns.js +12 -2
- package/lib/wa/constants/JIDPatterns.js.map +1 -1
- package/lib/wa/core/ConnectionManager.js +1 -0
- package/lib/wa/core/ConnectionManager.js.map +1 -1
- package/lib/wa/events/CallEventHandler.js +15 -11
- package/lib/wa/events/CallEventHandler.js.map +1 -1
- package/lib/wa/events/ConnectionEventHandler.js +30 -24
- package/lib/wa/events/ConnectionEventHandler.js.map +1 -1
- package/lib/wa/events/ContactEventHandler.js +30 -40
- package/lib/wa/events/ContactEventHandler.js.map +1 -1
- package/lib/wa/events/GroupEventHandler.js +2 -2
- package/lib/wa/events/GroupEventHandler.js.map +1 -1
- package/lib/wa/events/HistoryEventHandler.js +13 -23
- package/lib/wa/events/HistoryEventHandler.js.map +1 -1
- package/lib/wa/events/LIDMappingEventHandler.d.ts +4 -13
- package/lib/wa/events/LIDMappingEventHandler.js +12 -42
- package/lib/wa/events/LIDMappingEventHandler.js.map +1 -1
- package/lib/wa/events/MessageEventHandler.d.ts +2 -2
- package/lib/wa/events/MessageEventHandler.js +6 -45
- package/lib/wa/events/MessageEventHandler.js.map +1 -1
- package/lib/wa/makeInMemoryStore.js +0 -21
- package/lib/wa/makeInMemoryStore.js.map +1 -1
- package/lib/wa/operations/ChatOperations.js +7 -6
- package/lib/wa/operations/ChatOperations.js.map +1 -1
- package/lib/wa/operations/MessageOperations.js +3 -6
- package/lib/wa/operations/MessageOperations.js.map +1 -1
- package/lib/wa/services/LIDMappingService.d.ts +4 -0
- package/lib/wa/services/LIDMappingService.js +30 -43
- package/lib/wa/services/LIDMappingService.js.map +1 -1
- package/lib/wa/services/LIDNormalizationService.d.ts +3 -2
- package/lib/wa/services/LIDNormalizationService.js +15 -30
- package/lib/wa/services/LIDNormalizationService.js.map +1 -1
- package/lib/wa/services/PendingMessageQueue.js +6 -4
- package/lib/wa/services/PendingMessageQueue.js.map +1 -1
- package/package.json +89 -98
- package/lib/wa/services/ContactService.d.ts +0 -122
- package/lib/wa/services/ContactService.js +0 -442
- package/lib/wa/services/ContactService.js.map +0 -1
- package/lib/wa/utils/ContactIdHelper.d.ts +0 -112
- package/lib/wa/utils/ContactIdHelper.js +0 -216
- package/lib/wa/utils/ContactIdHelper.js.map +0 -1
|
@@ -1,442 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContactService = void 0;
|
|
4
|
-
const ContactIdHelper_1 = require("../utils/ContactIdHelper");
|
|
5
|
-
/**
|
|
6
|
-
* 🎯 SERVIÇO DE GERENCIAMENTO DE CONTATOS (Baileys v7)
|
|
7
|
-
*
|
|
8
|
-
* FILOSOFIA:
|
|
9
|
-
* - LID é o identificador PRINCIPAL e MAIS CONFIÁVEL
|
|
10
|
-
* - PN (phoneNumber) é OPCIONAL e informativo
|
|
11
|
-
* - Aceita LID como identificador válido (não tenta "descobrir" PN a todo custo)
|
|
12
|
-
* - Usa signalRepository.lidMapping oficial para conversões
|
|
13
|
-
*
|
|
14
|
-
* MUDANÇAS do Baileys v7:
|
|
15
|
-
* - "PNs are WAY LESS RELIABLE. MIGRATE TO LIDs"
|
|
16
|
-
* - Contact.id pode ser LID ou PN
|
|
17
|
-
* - Se id é LID → phoneNumber pode estar presente
|
|
18
|
-
* - Se id é PN → lid pode estar presente
|
|
19
|
-
*
|
|
20
|
-
* @since Baileys v7
|
|
21
|
-
*/
|
|
22
|
-
class ContactService {
|
|
23
|
-
constructor(bot, logger, cache) {
|
|
24
|
-
// Cache em memória: ID (LID ou PN) → Contact completo
|
|
25
|
-
this.contactsMap = new Map();
|
|
26
|
-
// Índices para busca rápida
|
|
27
|
-
this.phoneToIdIndex = new Map(); // phoneNumber → id
|
|
28
|
-
this.lidToIdIndex = new Map(); // LID → id
|
|
29
|
-
this.bot = bot;
|
|
30
|
-
this.logger = logger;
|
|
31
|
-
this.cache = cache;
|
|
32
|
-
// Carrega contatos salvos ao iniciar
|
|
33
|
-
this.loadContactsFromPersistence();
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* 🔄 Sincroniza contatos do evento contacts.upsert
|
|
37
|
-
*/
|
|
38
|
-
async syncContactsUpsert(contacts) {
|
|
39
|
-
for (const contact of contacts) {
|
|
40
|
-
await this.upsertContact(contact);
|
|
41
|
-
}
|
|
42
|
-
// Salva após cada batch de atualizações
|
|
43
|
-
await this.saveContactsToPersistence();
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* 🔄 Sincroniza contatos do evento contacts.update
|
|
47
|
-
*/
|
|
48
|
-
async syncContactsUpdate(contacts) {
|
|
49
|
-
for (const update of contacts) {
|
|
50
|
-
if (!update.id)
|
|
51
|
-
continue;
|
|
52
|
-
const existing = this.contactsMap.get(update.id);
|
|
53
|
-
if (existing) {
|
|
54
|
-
await this.upsertContact({ ...existing, ...update });
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
await this.upsertContact(update);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
await this.saveContactsToPersistence();
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* ✨ Insere ou atualiza um contato (CORE DO SISTEMA)
|
|
64
|
-
*
|
|
65
|
-
* ✅ Baileys v7: Usa signalRepository.lidMapping oficial
|
|
66
|
-
* ✅ Aceita LID como identificador válido
|
|
67
|
-
* ✅ Enriquece com phoneNumber/lid quando disponível
|
|
68
|
-
*/
|
|
69
|
-
async upsertContact(contact) {
|
|
70
|
-
var _a, _b, _c, _d, _e;
|
|
71
|
-
const id = contact.id;
|
|
72
|
-
if (!id)
|
|
73
|
-
return;
|
|
74
|
-
const existing = this.contactsMap.get(id);
|
|
75
|
-
// ✅ Extrai phoneNumber seguindo Baileys v7
|
|
76
|
-
let phoneNumber = contact.phoneNumber;
|
|
77
|
-
// 1. Mantém phoneNumber existente se disponível
|
|
78
|
-
if (!phoneNumber && (existing === null || existing === void 0 ? void 0 : existing.phoneNumber)) {
|
|
79
|
-
phoneNumber = existing.phoneNumber;
|
|
80
|
-
}
|
|
81
|
-
// 2. Se id é PN, extrai direto
|
|
82
|
-
if (!phoneNumber && ContactIdHelper_1.ContactIdHelper.isPN(id)) {
|
|
83
|
-
const extracted = ContactIdHelper_1.ContactIdHelper.extractPhoneFromPN(id);
|
|
84
|
-
if (extracted) {
|
|
85
|
-
phoneNumber = extracted;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// 3. Se id é LID, tenta enriquecer via signalRepository oficial (NOVO)
|
|
89
|
-
if (!phoneNumber && ContactIdHelper_1.ContactIdHelper.isLID(id)) {
|
|
90
|
-
try {
|
|
91
|
-
const pn = await ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.signalRepository) === null || _b === void 0 ? void 0 : _b.lidMapping.getPNForLID(id));
|
|
92
|
-
if (pn) {
|
|
93
|
-
const extracted = ContactIdHelper_1.ContactIdHelper.extractPhoneFromPN(pn);
|
|
94
|
-
if (extracted) {
|
|
95
|
-
phoneNumber = extracted;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
this.logger.debug(`Não foi possível obter PN para LID ${id}`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// ✅ Extrai LID seguindo Baileys v7
|
|
104
|
-
let lid = contact.lid;
|
|
105
|
-
// 1. Mantém lid existente se disponível
|
|
106
|
-
if (!lid && (existing === null || existing === void 0 ? void 0 : existing.lid)) {
|
|
107
|
-
lid = existing.lid;
|
|
108
|
-
}
|
|
109
|
-
// 2. Se id é PN, tenta obter LID via signalRepository (NOVO)
|
|
110
|
-
if (!lid && ContactIdHelper_1.ContactIdHelper.isPN(id)) {
|
|
111
|
-
try {
|
|
112
|
-
const obtainedLid = await ((_d = (_c = this.bot.sock) === null || _c === void 0 ? void 0 : _c.signalRepository) === null || _d === void 0 ? void 0 : _d.lidMapping.getLIDForPN(id));
|
|
113
|
-
if (obtainedLid) {
|
|
114
|
-
lid = obtainedLid;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
this.logger.debug(`Não foi possível obter LID para PN ${id}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// 3. Se id é LID, define lid
|
|
122
|
-
if (!lid && ContactIdHelper_1.ContactIdHelper.isLID(id)) {
|
|
123
|
-
lid = id;
|
|
124
|
-
}
|
|
125
|
-
// ✅ Cria contato enriquecido (sem campos obsoletos)
|
|
126
|
-
const enriched = {
|
|
127
|
-
...existing,
|
|
128
|
-
...contact,
|
|
129
|
-
id,
|
|
130
|
-
phoneNumber,
|
|
131
|
-
lid,
|
|
132
|
-
lastSeenAt: new Date(),
|
|
133
|
-
lastUpdatedAt: new Date(),
|
|
134
|
-
firstSeenAt: (existing === null || existing === void 0 ? void 0 : existing.firstSeenAt) || new Date(),
|
|
135
|
-
alternateIds: (existing === null || existing === void 0 ? void 0 : existing.alternateIds) || []
|
|
136
|
-
};
|
|
137
|
-
// ✅ Rastreia IDs alternativos (substitui lidHistory/jidHistory)
|
|
138
|
-
if (!enriched.alternateIds) {
|
|
139
|
-
enriched.alternateIds = [];
|
|
140
|
-
}
|
|
141
|
-
if (id && !enriched.alternateIds.includes(id)) {
|
|
142
|
-
enriched.alternateIds.push(id);
|
|
143
|
-
}
|
|
144
|
-
// Salva no cache em memória
|
|
145
|
-
this.contactsMap.set(id, enriched);
|
|
146
|
-
// ✅ Atualiza índices
|
|
147
|
-
if (phoneNumber) {
|
|
148
|
-
this.phoneToIdIndex.set(phoneNumber, id);
|
|
149
|
-
}
|
|
150
|
-
if (lid) {
|
|
151
|
-
this.lidToIdIndex.set(lid, id);
|
|
152
|
-
}
|
|
153
|
-
// Sincroniza com store do Baileys
|
|
154
|
-
if ((_e = this.bot.store) === null || _e === void 0 ? void 0 : _e.contacts) {
|
|
155
|
-
this.bot.store.contacts[id] = contact;
|
|
156
|
-
}
|
|
157
|
-
// Salva no storage persistente do bot (auth)
|
|
158
|
-
await this.bot.auth.set(`contacts-${id}`, enriched);
|
|
159
|
-
this.logger.debug(`✅ Contato sincronizado: ${id} → ${phoneNumber || 'sem telefone'}`);
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* 📞 Obtém phoneNumber de um JID/LID
|
|
163
|
-
*
|
|
164
|
-
* ✅ Baileys v7: Usa signalRepository.lidMapping oficial
|
|
165
|
-
* ✅ Aceita que phoneNumber pode não estar disponível
|
|
166
|
-
*/
|
|
167
|
-
async getPhoneNumber(jid) {
|
|
168
|
-
var _a, _b;
|
|
169
|
-
// 1. Busca no cache
|
|
170
|
-
const contact = this.contactsMap.get(jid);
|
|
171
|
-
if (contact === null || contact === void 0 ? void 0 : contact.phoneNumber) {
|
|
172
|
-
return contact.phoneNumber;
|
|
173
|
-
}
|
|
174
|
-
// 2. Se é PN, extrai direto
|
|
175
|
-
if (ContactIdHelper_1.ContactIdHelper.isPN(jid)) {
|
|
176
|
-
return ContactIdHelper_1.ContactIdHelper.extractPhoneFromPN(jid);
|
|
177
|
-
}
|
|
178
|
-
// 3. Se é LID, usa signalRepository oficial (NOVO)
|
|
179
|
-
if (ContactIdHelper_1.ContactIdHelper.isLID(jid)) {
|
|
180
|
-
try {
|
|
181
|
-
const pn = await ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.signalRepository) === null || _b === void 0 ? void 0 : _b.lidMapping.getPNForLID(jid));
|
|
182
|
-
if (pn) {
|
|
183
|
-
const phoneNumber = ContactIdHelper_1.ContactIdHelper.extractPhoneFromPN(pn);
|
|
184
|
-
if (phoneNumber) {
|
|
185
|
-
// Atualiza contato com phoneNumber descoberto
|
|
186
|
-
await this.upsertContact({ id: jid, phoneNumber });
|
|
187
|
-
return phoneNumber;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
this.logger.debug(`Erro ao buscar PN para LID ${jid}: ${error}`);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
// 4. Busca no storage persistente
|
|
196
|
-
const stored = await this.bot.auth.get(`contacts-${jid}`);
|
|
197
|
-
if (stored === null || stored === void 0 ? void 0 : stored.phoneNumber) {
|
|
198
|
-
this.contactsMap.set(jid, stored);
|
|
199
|
-
if (stored.phoneNumber) {
|
|
200
|
-
this.phoneToIdIndex.set(stored.phoneNumber, jid);
|
|
201
|
-
}
|
|
202
|
-
return stored.phoneNumber;
|
|
203
|
-
}
|
|
204
|
-
return null;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* 🔍 Busca JID/LID de um phoneNumber
|
|
208
|
-
*/
|
|
209
|
-
async getIdByPhoneNumber(phoneNumber) {
|
|
210
|
-
var _a;
|
|
211
|
-
// Remove caracteres não numéricos
|
|
212
|
-
phoneNumber = phoneNumber.replace(/\D/g, '');
|
|
213
|
-
// 1. Busca no índice reverso (cache em memória)
|
|
214
|
-
const cached = this.phoneToIdIndex.get(phoneNumber);
|
|
215
|
-
if (cached)
|
|
216
|
-
return cached;
|
|
217
|
-
// 2. Tenta JID direto
|
|
218
|
-
const jid = `${phoneNumber}@s.whatsapp.net`;
|
|
219
|
-
const contact = this.contactsMap.get(jid);
|
|
220
|
-
if (contact)
|
|
221
|
-
return jid;
|
|
222
|
-
// 3. Busca em todos os contatos (fallback)
|
|
223
|
-
for (const [id, contact] of this.contactsMap.entries()) {
|
|
224
|
-
if (contact.phoneNumber === phoneNumber) {
|
|
225
|
-
this.phoneToIdIndex.set(phoneNumber, id);
|
|
226
|
-
return id;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// 4. Busca no LIDMappingService
|
|
230
|
-
const lid = await ((_a = this.bot.lidMappingService) === null || _a === void 0 ? void 0 : _a.getLIDForPN(phoneNumber));
|
|
231
|
-
if (lid) {
|
|
232
|
-
return `${lid}@lid`;
|
|
233
|
-
}
|
|
234
|
-
return null;
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* 📋 Obtém contato completo
|
|
238
|
-
*/
|
|
239
|
-
async getContact(jid) {
|
|
240
|
-
var _a, _b;
|
|
241
|
-
// Busca em memória
|
|
242
|
-
const cached = this.contactsMap.get(jid);
|
|
243
|
-
if (cached)
|
|
244
|
-
return cached;
|
|
245
|
-
// Busca no storage
|
|
246
|
-
const stored = await this.bot.auth.get(`contacts-${jid}`);
|
|
247
|
-
if (stored) {
|
|
248
|
-
this.contactsMap.set(jid, stored);
|
|
249
|
-
if (stored.phoneNumber) {
|
|
250
|
-
this.phoneToIdIndex.set(stored.phoneNumber, jid);
|
|
251
|
-
}
|
|
252
|
-
return stored;
|
|
253
|
-
}
|
|
254
|
-
// Busca no store do Baileys
|
|
255
|
-
if ((_b = (_a = this.bot.store) === null || _a === void 0 ? void 0 : _a.contacts) === null || _b === void 0 ? void 0 : _b[jid]) {
|
|
256
|
-
await this.upsertContact(this.bot.store.contacts[jid]);
|
|
257
|
-
return this.contactsMap.get(jid) || null;
|
|
258
|
-
}
|
|
259
|
-
return null;
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* 📋 Lista todos os contatos
|
|
263
|
-
*/
|
|
264
|
-
getAllContacts() {
|
|
265
|
-
return Array.from(this.contactsMap.values());
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* 💾 Salva contatos em arquivo persistente
|
|
269
|
-
*/
|
|
270
|
-
async saveContactsToPersistence() {
|
|
271
|
-
try {
|
|
272
|
-
const data = {
|
|
273
|
-
contacts: Array.from(this.contactsMap.entries()),
|
|
274
|
-
phoneIndex: Array.from(this.phoneToIdIndex.entries()),
|
|
275
|
-
savedAt: new Date().toISOString(),
|
|
276
|
-
};
|
|
277
|
-
await this.bot.auth.set('_contact_service_data', data);
|
|
278
|
-
this.logger.debug(`💾 Contatos salvos: ${this.contactsMap.size} contatos`);
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
this.logger.error('Erro ao salvar contatos:', error);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* 📂 Carrega contatos do arquivo persistente
|
|
286
|
-
*/
|
|
287
|
-
async loadContactsFromPersistence() {
|
|
288
|
-
try {
|
|
289
|
-
const data = await this.bot.auth.get('_contact_service_data');
|
|
290
|
-
if (!data) {
|
|
291
|
-
this.logger.debug('Nenhum dado de contatos salvo encontrado');
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
// Reconstrói cache
|
|
295
|
-
if (data.contacts) {
|
|
296
|
-
this.contactsMap = new Map(data.contacts);
|
|
297
|
-
}
|
|
298
|
-
if (data.phoneIndex) {
|
|
299
|
-
this.phoneToIdIndex = new Map(data.phoneIndex);
|
|
300
|
-
}
|
|
301
|
-
this.logger.info(`📂 Contatos carregados: ${this.contactsMap.size} contatos`);
|
|
302
|
-
}
|
|
303
|
-
catch (error) {
|
|
304
|
-
this.logger.error('Erro ao carregar contatos:', error);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* 🔄 Sincroniza com o store do Baileys (chamado após bind)
|
|
309
|
-
*/
|
|
310
|
-
async syncWithBaileysStore() {
|
|
311
|
-
var _a;
|
|
312
|
-
if (!((_a = this.bot.store) === null || _a === void 0 ? void 0 : _a.contacts)) {
|
|
313
|
-
this.logger.warn('Store do Baileys não disponível');
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
const baileysContacts = Object.values(this.bot.store.contacts);
|
|
317
|
-
this.logger.info(`🔄 Sincronizando ${baileysContacts.length} contatos do Baileys...`);
|
|
318
|
-
for (const contact of baileysContacts) {
|
|
319
|
-
await this.upsertContact(contact);
|
|
320
|
-
}
|
|
321
|
-
await this.saveContactsToPersistence();
|
|
322
|
-
this.logger.info(`✅ Sincronização completa: ${this.contactsMap.size} contatos`);
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* 🧹 Limpa cache (útil para testes)
|
|
326
|
-
*/
|
|
327
|
-
clear() {
|
|
328
|
-
this.contactsMap.clear();
|
|
329
|
-
this.phoneToIdIndex.clear();
|
|
330
|
-
this.lidToIdIndex.clear();
|
|
331
|
-
this.logger.debug('Cache de contatos limpo');
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* 🔄 Enriquece contato com mapeamento LID ↔ PN (NOVO - Baileys v7)
|
|
335
|
-
*
|
|
336
|
-
* Se o contato tem apenas LID, tenta obter PN.
|
|
337
|
-
* Se o contato tem apenas PN, tenta obter LID.
|
|
338
|
-
*
|
|
339
|
-
* @param contactId - ID do contato (LID ou PN)
|
|
340
|
-
* @returns true se conseguiu enriquecer, false caso contrário
|
|
341
|
-
*/
|
|
342
|
-
async enrichContactWithMapping(contactId) {
|
|
343
|
-
var _a, _b, _c, _d;
|
|
344
|
-
try {
|
|
345
|
-
const contact = await this.getContact(contactId);
|
|
346
|
-
if (!contact) {
|
|
347
|
-
return false;
|
|
348
|
-
}
|
|
349
|
-
let updated = false;
|
|
350
|
-
// Se tem LID mas não tem phoneNumber, tenta obter
|
|
351
|
-
if (ContactIdHelper_1.ContactIdHelper.isLID(contactId) && !contact.phoneNumber) {
|
|
352
|
-
const pn = await ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.signalRepository) === null || _b === void 0 ? void 0 : _b.lidMapping.getPNForLID(contactId));
|
|
353
|
-
if (pn) {
|
|
354
|
-
const extracted = ContactIdHelper_1.ContactIdHelper.extractPhoneFromPN(pn);
|
|
355
|
-
if (extracted) {
|
|
356
|
-
contact.phoneNumber = extracted;
|
|
357
|
-
updated = true;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
// Se tem PN mas não tem LID, tenta obter
|
|
362
|
-
if (ContactIdHelper_1.ContactIdHelper.isPN(contactId) && !contact.lid) {
|
|
363
|
-
const lid = await ((_d = (_c = this.bot.sock) === null || _c === void 0 ? void 0 : _c.signalRepository) === null || _d === void 0 ? void 0 : _d.lidMapping.getLIDForPN(contactId));
|
|
364
|
-
if (lid) {
|
|
365
|
-
contact.lid = lid;
|
|
366
|
-
updated = true;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
// Se atualizou, salva
|
|
370
|
-
if (updated) {
|
|
371
|
-
contact.lastUpdatedAt = new Date();
|
|
372
|
-
await this.upsertContact(contact);
|
|
373
|
-
this.logger.debug(`✅ Contato ${contactId} enriquecido com mapeamento`);
|
|
374
|
-
}
|
|
375
|
-
return updated;
|
|
376
|
-
}
|
|
377
|
-
catch (error) {
|
|
378
|
-
this.logger.debug(`Erro ao enriquecer contato ${contactId}: ${error}`);
|
|
379
|
-
return false;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* 🔄 Enriquece contato com mapeamento direto LID ↔ PN
|
|
384
|
-
*
|
|
385
|
-
* @param lid - LID do usuário (com ou sem @lid)
|
|
386
|
-
* @param pn - PN do usuário (com ou sem @s.whatsapp.net)
|
|
387
|
-
*/
|
|
388
|
-
async enrichContactWithDirectMapping(lid, pn) {
|
|
389
|
-
var _a, _b;
|
|
390
|
-
try {
|
|
391
|
-
// Normaliza IDs
|
|
392
|
-
const lidFull = lid.includes('@') ? lid : `${lid}@lid`;
|
|
393
|
-
const pnFull = pn.includes('@') ? pn : `${pn}@s.whatsapp.net`;
|
|
394
|
-
// Armazena no signalRepository oficial
|
|
395
|
-
if ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.signalRepository) === null || _b === void 0 ? void 0 : _b.lidMapping) {
|
|
396
|
-
await this.bot.sock.signalRepository.lidMapping.storeLIDPNMappings([
|
|
397
|
-
{ lid: lidFull, pn: pnFull }
|
|
398
|
-
]);
|
|
399
|
-
}
|
|
400
|
-
// Extrai phoneNumber
|
|
401
|
-
const phoneNumber = ContactIdHelper_1.ContactIdHelper.extractPhoneFromPN(pnFull);
|
|
402
|
-
if (!phoneNumber) {
|
|
403
|
-
this.logger.warn(`Não foi possível extrair phoneNumber de ${pnFull}`);
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
// Atualiza contato com LID
|
|
407
|
-
const contactByLid = await this.getContact(lidFull);
|
|
408
|
-
if (contactByLid) {
|
|
409
|
-
await this.upsertContact({
|
|
410
|
-
...contactByLid,
|
|
411
|
-
phoneNumber,
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
await this.upsertContact({
|
|
416
|
-
id: lidFull,
|
|
417
|
-
phoneNumber,
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
// Atualiza contato com PN
|
|
421
|
-
const contactByPn = await this.getContact(pnFull);
|
|
422
|
-
if (contactByPn) {
|
|
423
|
-
await this.upsertContact({
|
|
424
|
-
...contactByPn,
|
|
425
|
-
lid: lidFull,
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
else {
|
|
429
|
-
await this.upsertContact({
|
|
430
|
-
id: pnFull,
|
|
431
|
-
lid: lidFull,
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
this.logger.debug(`✅ Mapeamento ${lidFull} ↔ ${pnFull} armazenado e contatos atualizados`);
|
|
435
|
-
}
|
|
436
|
-
catch (error) {
|
|
437
|
-
this.logger.error(`Erro ao enriquecer com mapeamento direto: ${error}`);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
exports.ContactService = ContactService;
|
|
442
|
-
//# sourceMappingURL=ContactService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContactService.js","sourceRoot":"","sources":["../../../src/wa/services/ContactService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🎯 CONTACT ID HELPER
|
|
3
|
-
*
|
|
4
|
-
* Utilitário para identificar e manipular diferentes tipos de IDs do WhatsApp
|
|
5
|
-
*
|
|
6
|
-
* Tipos suportados:
|
|
7
|
-
* - LID: Local ID (identificador criptografado) - Ex: "7812579066017@lid"
|
|
8
|
-
* - PN: Phone Number JID (formato antigo) - Ex: "5511999999999@s.whatsapp.net"
|
|
9
|
-
* - Group: ID de grupo - Ex: "120363XXXXX@g.us"
|
|
10
|
-
* - Broadcast: Lista de transmissão - Ex: "XXXXX@broadcast"
|
|
11
|
-
* - Newsletter: Canal - Ex: "XXXXX@newsletter"
|
|
12
|
-
*
|
|
13
|
-
* @since Baileys v7 - LID é o formato PREFERIDO e mais confiável
|
|
14
|
-
*/
|
|
15
|
-
export declare class ContactIdHelper {
|
|
16
|
-
/**
|
|
17
|
-
* Verifica se é um LID (Local ID)
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ContactIdHelper.isLID("7812579066017@lid") // true
|
|
21
|
-
* ContactIdHelper.isLID("5511999999999@s.whatsapp.net") // false
|
|
22
|
-
*/
|
|
23
|
-
static isLID(id: string): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Verifica se é um PN (Phone Number JID)
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* ContactIdHelper.isPN("5511999999999@s.whatsapp.net") // true
|
|
29
|
-
* ContactIdHelper.isPN("7812579066017@lid") // false
|
|
30
|
-
*/
|
|
31
|
-
static isPN(id: string): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Verifica se é um ID de grupo
|
|
34
|
-
*/
|
|
35
|
-
static isGroup(id: string): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Verifica se é uma lista de transmissão
|
|
38
|
-
*/
|
|
39
|
-
static isBroadcast(id: string): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Verifica se é um canal (newsletter)
|
|
42
|
-
*/
|
|
43
|
-
static isNewsletter(id: string): boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Verifica se é um contato individual (LID ou PN)
|
|
46
|
-
*/
|
|
47
|
-
static isUser(id: string): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Retorna o tipo do ID
|
|
50
|
-
*/
|
|
51
|
-
static getIdType(id: string): 'lid' | 'pn' | 'group' | 'broadcast' | 'newsletter' | 'unknown';
|
|
52
|
-
/**
|
|
53
|
-
* Extrai o número de telefone de um PN format
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ContactIdHelper.extractPhoneFromPN("5511999999999@s.whatsapp.net")
|
|
57
|
-
* // "5511999999999"
|
|
58
|
-
*/
|
|
59
|
-
static extractPhoneFromPN(pn: string): string | null;
|
|
60
|
-
/**
|
|
61
|
-
* Extrai o LID number (parte antes do @)
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ContactIdHelper.extractLIDNumber("7812579066017@lid")
|
|
65
|
-
* // "7812579066017"
|
|
66
|
-
*/
|
|
67
|
-
static extractLIDNumber(lid: string): string | null;
|
|
68
|
-
/**
|
|
69
|
-
* Normaliza um ID removendo device ID e mantendo só user ID
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ContactIdHelper.normalizeId("5511999999999:10@s.whatsapp.net")
|
|
73
|
-
* // "5511999999999@s.whatsapp.net"
|
|
74
|
-
*/
|
|
75
|
-
static normalizeId(id: string): string;
|
|
76
|
-
/**
|
|
77
|
-
* Formata um phoneNumber para PN JID
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ContactIdHelper.formatToPN("5511999999999")
|
|
81
|
-
* // "5511999999999@s.whatsapp.net"
|
|
82
|
-
*/
|
|
83
|
-
static formatToPN(phoneNumber: string): string;
|
|
84
|
-
/**
|
|
85
|
-
* Retorna o ID preferido para uso
|
|
86
|
-
* Baileys v7: LID é PREFERIDO sobre PN
|
|
87
|
-
*
|
|
88
|
-
* @param lidId - LID se disponível
|
|
89
|
-
* @param pnId - PN se disponível
|
|
90
|
-
* @returns ID preferido (LID > PN)
|
|
91
|
-
*/
|
|
92
|
-
static getPreferredId(lidId?: string | null, pnId?: string | null): string | null;
|
|
93
|
-
/**
|
|
94
|
-
* Verifica se dois IDs representam o mesmo usuário
|
|
95
|
-
* Útil para comparar LID ↔ PN do mesmo contato
|
|
96
|
-
*/
|
|
97
|
-
static isSameUser(id1: string, id2: string): boolean;
|
|
98
|
-
/**
|
|
99
|
-
* Valida se um ID está no formato correto
|
|
100
|
-
*/
|
|
101
|
-
static isValidId(id: string): boolean;
|
|
102
|
-
/**
|
|
103
|
-
* Extrai informações detalhadas de um ID
|
|
104
|
-
*/
|
|
105
|
-
static parseId(id: string): {
|
|
106
|
-
type: 'lid' | 'pn' | 'group' | 'broadcast' | 'newsletter' | 'unknown';
|
|
107
|
-
user: string | null;
|
|
108
|
-
device: number | null;
|
|
109
|
-
domain: string | null;
|
|
110
|
-
isValid: boolean;
|
|
111
|
-
};
|
|
112
|
-
}
|