@arcaelas/whatsapp 1.2.3 → 2.0.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.
Files changed (78) hide show
  1. package/build/cjs/Chat.d.ts +317 -0
  2. package/build/cjs/Chat.js +273 -0
  3. package/build/cjs/Chat.js.map +1 -0
  4. package/build/{Contact.d.ts → cjs/Contact.d.ts} +317 -304
  5. package/build/cjs/Contact.js +144 -0
  6. package/build/cjs/Contact.js.map +1 -0
  7. package/build/cjs/Message.d.ts +882 -0
  8. package/build/cjs/Message.js +483 -0
  9. package/build/cjs/Message.js.map +1 -0
  10. package/build/{WhatsApp.d.ts → cjs/WhatsApp.d.ts} +16 -4
  11. package/build/{WhatsApp.js → cjs/WhatsApp.js} +84 -81
  12. package/build/cjs/WhatsApp.js.map +1 -0
  13. package/build/{index.d.ts → cjs/index.d.ts} +2 -2
  14. package/build/cjs/index.js +17 -0
  15. package/build/cjs/index.js.map +1 -0
  16. package/build/cjs/package.json +1 -0
  17. package/build/cjs/store/driver/FileEngine.d.ts +34 -0
  18. package/build/{store → cjs/store}/driver/FileEngine.js +16 -20
  19. package/build/cjs/store/driver/FileEngine.js.map +1 -0
  20. package/build/{store → cjs/store}/driver/RedisEngine.d.ts +14 -5
  21. package/build/{store → cjs/store}/driver/RedisEngine.js +23 -22
  22. package/build/cjs/store/driver/RedisEngine.js.map +1 -0
  23. package/build/{store → cjs/store}/engine.d.ts +9 -10
  24. package/build/cjs/store/engine.js.map +1 -0
  25. package/build/cjs/store/index.d.ts +8 -0
  26. package/build/{store → cjs/store}/index.js +2 -2
  27. package/build/cjs/store/index.js.map +1 -0
  28. package/build/esm/Chat.d.ts +317 -0
  29. package/build/esm/Chat.js +268 -0
  30. package/build/esm/Chat.js.map +1 -0
  31. package/build/esm/Contact.d.ts +869 -0
  32. package/build/esm/Contact.js +139 -0
  33. package/build/esm/Contact.js.map +1 -0
  34. package/build/esm/Message.d.ts +882 -0
  35. package/build/esm/Message.js +478 -0
  36. package/build/esm/Message.js.map +1 -0
  37. package/build/esm/WhatsApp.d.ts +80 -0
  38. package/build/esm/WhatsApp.js +362 -0
  39. package/build/esm/WhatsApp.js.map +1 -0
  40. package/build/esm/index.d.ts +13 -0
  41. package/build/esm/index.js +10 -0
  42. package/build/esm/index.js.map +1 -0
  43. package/build/esm/package.json +1 -0
  44. package/build/esm/store/driver/FileEngine.d.ts +34 -0
  45. package/build/esm/store/driver/FileEngine.js +82 -0
  46. package/build/esm/store/driver/FileEngine.js.map +1 -0
  47. package/build/esm/store/driver/RedisEngine.d.ts +47 -0
  48. package/build/esm/store/driver/RedisEngine.js +66 -0
  49. package/build/esm/store/driver/RedisEngine.js.map +1 -0
  50. package/build/esm/store/engine.d.ts +53 -0
  51. package/build/esm/store/engine.js +6 -0
  52. package/build/{store → esm/store}/engine.js.map +1 -1
  53. package/build/esm/store/index.d.ts +8 -0
  54. package/build/esm/store/index.js +7 -0
  55. package/build/esm/store/index.js.map +1 -0
  56. package/package.json +70 -58
  57. package/API.md +0 -776
  58. package/CHANGELOG.md +0 -53
  59. package/DOC.md +0 -532
  60. package/build/Chat.d.ts +0 -335
  61. package/build/Chat.js +0 -396
  62. package/build/Chat.js.map +0 -1
  63. package/build/Contact.js +0 -188
  64. package/build/Contact.js.map +0 -1
  65. package/build/Message.d.ts +0 -580
  66. package/build/Message.js +0 -463
  67. package/build/Message.js.map +0 -1
  68. package/build/WhatsApp.js.map +0 -1
  69. package/build/index.js +0 -2
  70. package/build/index.js.map +0 -7
  71. package/build/store/driver/FileEngine.d.ts +0 -23
  72. package/build/store/driver/FileEngine.js.map +0 -1
  73. package/build/store/driver/RedisEngine.js.map +0 -1
  74. package/build/store/index.d.ts +0 -8
  75. package/build/store/index.js.map +0 -1
  76. package/context7.json +0 -4
  77. package/tsconfig.json +0 -27
  78. /package/build/{store → cjs/store}/engine.js +0 -0
package/build/Chat.js DELETED
@@ -1,396 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file Chat.ts
4
- * @description Clase Chat para gestión de conversaciones de WhatsApp
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Chat = void 0;
8
- exports.build_chat = build_chat;
9
- exports.chat = chat;
10
- const baileys_1 = require("baileys");
11
- /**
12
- * @description Construye IChat desde raw.
13
- * @param raw Objeto raw del chat.
14
- * @returns IChat normalizado.
15
- */
16
- function build_chat(raw) {
17
- return {
18
- id: raw.id,
19
- type: raw.id.endsWith('@g.us') ? 'group' : 'contact',
20
- name: raw.name ?? raw.displayName ?? raw.id.split('@')[0],
21
- content: raw.description ?? '',
22
- pined: raw.pinned !== null && raw.pinned !== undefined,
23
- archived: raw.archived ?? false,
24
- muted: raw.muteEndTime ?? false,
25
- readed: (raw.unreadCount === 0 || raw.unreadCount === null) && !raw.markedAsUnread,
26
- readonly: raw.readOnly ?? false,
27
- labels: [],
28
- raw,
29
- };
30
- }
31
- /**
32
- * @description
33
- * Clase base para representar una conversación de WhatsApp.
34
- * Usar Chat.get() para obtener instancias.
35
- */
36
- class Chat {
37
- constructor(data) {
38
- this.raw = data.raw;
39
- }
40
- /** JID único del chat */
41
- get id() {
42
- return this.raw.id;
43
- }
44
- /** Tipo de chat */
45
- get type() {
46
- return this.raw.id.endsWith('@g.us') ? 'group' : 'contact';
47
- }
48
- /** Nombre del chat */
49
- get name() {
50
- return this.raw.name ?? this.raw.displayName ?? this.raw.id.split('@')[0];
51
- }
52
- /** Descripción del chat/grupo */
53
- get content() {
54
- return this.raw.description ?? '';
55
- }
56
- /** Si está fijado */
57
- get pined() {
58
- return this.raw.pinned !== null && this.raw.pinned !== undefined;
59
- }
60
- /** Si está archivado */
61
- get archived() {
62
- return this.raw.archived ?? false;
63
- }
64
- /** Timestamp cuando expira el silencio o false */
65
- get muted() {
66
- return this.raw.muteEndTime ?? false;
67
- }
68
- /** Si está leído */
69
- get readed() {
70
- return (this.raw.unreadCount === 0 || this.raw.unreadCount === null) && !this.raw.markedAsUnread;
71
- }
72
- /** Si es solo lectura */
73
- get readonly() {
74
- return this.raw.readOnly ?? false;
75
- }
76
- }
77
- exports.Chat = Chat;
78
- /**
79
- * @description Factory que retorna la clase Chat enlazada al contexto.
80
- * @param wa Instancia de WhatsApp.
81
- * @returns Clase _Chat que extiende Chat.
82
- */
83
- function chat(wa) {
84
- /** Obtiene el último mensaje raw del chat para chatModify */
85
- async function _last_messages(cid) {
86
- const messages_index = await wa.engine.get(`chat/${cid}/messages`);
87
- if (!messages_index)
88
- return [];
89
- const first_line = messages_index.trim().split('\n')[0];
90
- if (!first_line)
91
- return [];
92
- const [timestamp, mid] = first_line.split(' ');
93
- const msg = await wa.Message.get(cid, mid);
94
- if (!msg)
95
- return [];
96
- return [{ key: { remoteJid: cid, id: msg.id, fromMe: msg.me }, messageTimestamp: Math.floor(Number(timestamp) / 1000) }];
97
- }
98
- const _Chat = class extends Chat {
99
- /**
100
- * @description Obtiene un chat por su ID.
101
- * @param cid ID del chat (JID).
102
- * @returns Chat o null si no existe.
103
- */
104
- static async get(cid) {
105
- const stored = await wa.engine.get(`chat/${cid}/index`);
106
- if (stored)
107
- return new _Chat(JSON.parse(stored, baileys_1.BufferJSON.reviver));
108
- const contact = await wa.Contact.get(cid);
109
- if (!contact)
110
- return null;
111
- const raw = { id: cid, name: contact.name };
112
- const data = build_chat(raw);
113
- await wa.engine.set(`chat/${cid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
114
- return new _Chat(data);
115
- }
116
- /**
117
- * @description Actualiza los datos del chat desde WhatsApp.
118
- * @param cid ID del chat.
119
- * @returns Chat actualizado o null.
120
- */
121
- static async refresh(cid) {
122
- if (!wa.socket)
123
- return null;
124
- const stored = await wa.engine.get(`chat/${cid}/index`);
125
- const data = stored ? JSON.parse(stored, baileys_1.BufferJSON.reviver) : build_chat({ id: cid });
126
- // Para grupos, obtener metadata actualizada
127
- if (cid.endsWith('@g.us')) {
128
- try {
129
- const meta = await wa.socket.groupMetadata(cid);
130
- data.raw.name = meta.subject;
131
- data.raw.description = meta.desc ?? null;
132
- data.raw.participant = meta.participants.map((p) => ({ id: p.id, admin: p.admin ?? null }));
133
- data.raw.createdBy = meta.owner ?? null;
134
- data.raw.createdAt = meta.creation ?? null;
135
- data.name = meta.subject;
136
- data.content = meta.desc ?? '';
137
- }
138
- catch { }
139
- }
140
- else {
141
- // Para contactos individuales, actualizar desde Contact
142
- const contact = await wa.Contact.refresh(cid);
143
- if (contact) {
144
- data.raw.name = contact.name;
145
- data.name = contact.name;
146
- }
147
- }
148
- await wa.engine.set(`chat/${cid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
149
- return new _Chat(data);
150
- }
151
- /**
152
- * @description Obtiene chats paginados.
153
- * @param offset Inicio de paginación.
154
- * @param limit Cantidad máxima de resultados.
155
- * @returns Array de chats.
156
- */
157
- static async paginate(offset = 0, limit = 50) {
158
- const chats = [];
159
- for (const key of await wa.engine.list('chat/', offset, limit, '/index')) {
160
- const stored = await wa.engine.get(key);
161
- if (stored)
162
- chats.push(new _Chat(JSON.parse(stored, baileys_1.BufferJSON.reviver)));
163
- }
164
- return chats;
165
- }
166
- /**
167
- * @description Fija o desfija un chat.
168
- * @param cid ID del chat.
169
- * @param value true para fijar, false para desfijar.
170
- * @returns true si se actualizó correctamente.
171
- */
172
- static async pin(cid, value) {
173
- if (!wa.socket)
174
- return false;
175
- const last_messages = await _last_messages(cid);
176
- await wa.socket.chatModify({ pin: value, lastMessages: last_messages }, cid);
177
- const stored = await wa.engine.get(`chat/${cid}/index`);
178
- if (!stored)
179
- return true;
180
- const data = JSON.parse(stored, baileys_1.BufferJSON.reviver);
181
- data.raw.pinned = value ? Date.now() : null;
182
- data.pined = value;
183
- await wa.engine.set(`chat/${cid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
184
- return true;
185
- }
186
- /**
187
- * @description Archiva o desarchiva un chat.
188
- * @param cid ID del chat.
189
- * @param value true para archivar, false para desarchivar.
190
- * @returns true si se actualizó correctamente.
191
- */
192
- static async archive(cid, value) {
193
- if (!wa.socket)
194
- return false;
195
- const last_messages = await _last_messages(cid);
196
- await wa.socket.chatModify({ archive: value, lastMessages: last_messages }, cid);
197
- const stored = await wa.engine.get(`chat/${cid}/index`);
198
- if (!stored)
199
- return true;
200
- const data = JSON.parse(stored, baileys_1.BufferJSON.reviver);
201
- data.raw.archived = value;
202
- data.archived = value;
203
- await wa.engine.set(`chat/${cid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
204
- return true;
205
- }
206
- /**
207
- * @description Silencia o quita silencio de un chat.
208
- * @param cid ID del chat.
209
- * @param duration Duración en milisegundos (0 o null para quitar silencio).
210
- * @returns true si se actualizó correctamente.
211
- */
212
- static async mute(cid, duration) {
213
- if (!wa.socket)
214
- return false;
215
- const mute_end = duration ? Date.now() + duration : null;
216
- const last_messages = await _last_messages(cid);
217
- await wa.socket.chatModify({ mute: mute_end, lastMessages: last_messages }, cid);
218
- const stored = await wa.engine.get(`chat/${cid}/index`);
219
- if (!stored)
220
- return true;
221
- const data = JSON.parse(stored, baileys_1.BufferJSON.reviver);
222
- data.raw.muteEndTime = mute_end;
223
- data.muted = mute_end ?? false;
224
- await wa.engine.set(`chat/${cid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
225
- return true;
226
- }
227
- /**
228
- * @description Marca un chat como leído.
229
- * @param cid ID del chat.
230
- * @returns true si se marcó correctamente.
231
- */
232
- static async seen(cid) {
233
- if (!wa.socket)
234
- return false;
235
- const last_messages = await _last_messages(cid);
236
- if (!last_messages.length)
237
- return false;
238
- const msg = last_messages[0];
239
- await wa.socket.readMessages([{ remoteJid: cid, id: msg.key.id, participant: msg.key.fromMe ? undefined : msg.key.remoteJid }]);
240
- // Actualizar estado del chat
241
- const stored = await wa.engine.get(`chat/${cid}/index`);
242
- if (stored) {
243
- const data = JSON.parse(stored, baileys_1.BufferJSON.reviver);
244
- data.raw.unreadCount = 0;
245
- data.raw.markedAsUnread = false;
246
- data.readed = true;
247
- await wa.engine.set(`chat/${cid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
248
- }
249
- return true;
250
- }
251
- /**
252
- * @description Limpia todos los datos del chat del storage (cascade delete).
253
- * @param cid ID del chat.
254
- */
255
- static async cascade_delete(cid) {
256
- await wa.engine.delete_prefix(`chat/${cid}/`);
257
- }
258
- /**
259
- * @description Elimina un chat con cascade delete.
260
- * @param cid ID del chat.
261
- * @returns true si se eliminó correctamente.
262
- */
263
- static async remove(cid) {
264
- if (!wa.socket)
265
- return false;
266
- const stored = await wa.engine.get(`chat/${cid}/index`);
267
- if (!stored)
268
- return false;
269
- const data = JSON.parse(stored, baileys_1.BufferJSON.reviver);
270
- if (data.type === 'group') {
271
- await wa.socket.groupLeave(cid);
272
- }
273
- else {
274
- await wa.socket.chatModify({ delete: true, lastMessages: [] }, cid);
275
- }
276
- await _Chat.cascade_delete(cid);
277
- return true;
278
- }
279
- /**
280
- * @description Agrega un mensaje al índice del chat.
281
- * @param cid ID del chat.
282
- * @param mid ID del mensaje.
283
- * @param timestamp Timestamp de creación.
284
- */
285
- static async add_message(cid, mid, timestamp) {
286
- const key = `chat/${cid}/messages`;
287
- const line = `${timestamp} ${mid}`;
288
- const current = await wa.engine.get(key);
289
- await wa.engine.set(key, current ? `${line}\n${current}` : line);
290
- }
291
- /**
292
- * @description Elimina un mensaje del índice del chat.
293
- * @param cid ID del chat.
294
- * @param mid ID del mensaje.
295
- */
296
- static async remove_message(cid, mid) {
297
- const key = `chat/${cid}/messages`;
298
- const content = await wa.engine.get(key);
299
- if (!content)
300
- return;
301
- const filtered = content
302
- .trim()
303
- .split('\n')
304
- .filter((line) => !line.endsWith(` ${mid}`))
305
- .join('\n');
306
- await wa.engine.set(key, filtered || null);
307
- }
308
- /**
309
- * @description Lista IDs de mensajes del chat (paginado).
310
- * @param cid ID del chat.
311
- * @param offset Inicio de paginación.
312
- * @param limit Cantidad máxima.
313
- * @returns Array de IDs de mensajes.
314
- */
315
- static async list_messages(cid, offset = 0, limit = 50) {
316
- const content = await wa.engine.get(`chat/${cid}/messages`);
317
- if (!content)
318
- return [];
319
- return content
320
- .trim()
321
- .split('\n')
322
- .slice(offset, offset + limit)
323
- .map((line) => line.split(' ')[1])
324
- .filter(Boolean);
325
- }
326
- /**
327
- * @description Cuenta mensajes del chat.
328
- * @param cid ID del chat.
329
- * @returns Cantidad de mensajes.
330
- */
331
- static async count_messages(cid) {
332
- const content = await wa.engine.get(`chat/${cid}/messages`);
333
- if (!content)
334
- return 0;
335
- return content.trim().split('\n').filter(Boolean).length;
336
- }
337
- /**
338
- * @description Obtiene los miembros de un chat.
339
- * @param cid ID del chat.
340
- * @param offset Inicio de paginación.
341
- * @param limit Cantidad máxima de resultados.
342
- * @returns Array de contactos.
343
- */
344
- static async members(cid, offset = 0, limit = 50) {
345
- if (!cid.endsWith('@g.us') || !wa.socket) {
346
- const contact = await wa.Contact.get(cid);
347
- return contact ? [contact] : [];
348
- }
349
- const members = [];
350
- for (const p of (await wa.socket.groupMetadata(cid)).participants.slice(offset, offset + limit)) {
351
- const existing = await wa.Contact.get(p.id);
352
- if (existing) {
353
- members.push(existing);
354
- }
355
- else {
356
- const raw = { id: p.id };
357
- const data = (0, Contact_1.build_contact)(raw);
358
- await wa.engine.set(`contact/${p.id}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
359
- members.push(new wa.Contact(data));
360
- }
361
- }
362
- return members;
363
- }
364
- /**
365
- * @description Obtiene mensajes del chat (paginados).
366
- * @param offset Inicio de paginación.
367
- * @param limit Cantidad máxima de resultados.
368
- * @returns Array de mensajes.
369
- */
370
- async messages(offset = 0, limit = 50) {
371
- const ids = await _Chat.list_messages(this.id, offset, limit);
372
- const messages = [];
373
- for (const mid of ids) {
374
- const msg = await wa.Message.get(this.id, mid);
375
- if (msg)
376
- messages.push(msg);
377
- }
378
- return messages;
379
- }
380
- /**
381
- * @description Actualiza los datos del chat desde WhatsApp.
382
- * @returns this con datos actualizados, o null si falla.
383
- */
384
- async refresh() {
385
- const updated = await _Chat.refresh(this.id);
386
- if (!updated)
387
- return null;
388
- Object.assign(this.raw, updated.raw);
389
- return this;
390
- }
391
- };
392
- return _Chat;
393
- }
394
- // Import para la factory
395
- const Contact_1 = require("./Contact");
396
- //# sourceMappingURL=Chat.js.map
package/build/Chat.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chat.js","sourceRoot":"","sources":["../src/Chat.ts"],"names":[],"mappings":"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"}
package/build/Contact.js DELETED
@@ -1,188 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file Contact.ts
4
- * @description Clase Contact para gestión de contactos de WhatsApp
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Contact = void 0;
8
- exports.build_contact = build_contact;
9
- exports.contact = contact;
10
- const baileys_1 = require("baileys");
11
- /**
12
- * @description
13
- * Clase base para representar un contacto de WhatsApp.
14
- * Usar Contact.get() para obtener instancias.
15
- */
16
- class Contact {
17
- constructor(data) {
18
- this.raw = data.raw;
19
- }
20
- /** JID único del contacto */
21
- get id() {
22
- return this.raw.id;
23
- }
24
- /** Nombre del contacto */
25
- get name() {
26
- return this.raw.name ?? this.raw.notify ?? this.raw.id.split('@')[0];
27
- }
28
- /** URL de la foto de perfil o null */
29
- get photo() {
30
- return this.raw.imgUrl ?? null;
31
- }
32
- /** Número de teléfono sin formato */
33
- get phone() {
34
- return this.raw.id.split('@')[0];
35
- }
36
- /** Bio del contacto */
37
- get content() {
38
- return this.raw.status ?? '';
39
- }
40
- }
41
- exports.Contact = Contact;
42
- /**
43
- * @description Construye IContact desde raw.
44
- * @param raw Objeto raw del contacto.
45
- * @returns IContact normalizado.
46
- */
47
- function build_contact(raw) {
48
- return {
49
- id: raw.id,
50
- name: raw.name ?? raw.notify ?? raw.id.split('@')[0],
51
- photo: raw.imgUrl ?? null,
52
- phone: raw.id.split('@')[0],
53
- content: raw.status ?? '',
54
- raw,
55
- };
56
- }
57
- /**
58
- * @description Factory que retorna la clase Contact enlazada al contexto.
59
- * @param wa Instancia de WhatsApp.
60
- * @returns Clase _Contact que extiende Contact.
61
- */
62
- function contact(wa) {
63
- return class _Contact extends Contact {
64
- /**
65
- * @description Obtiene un contacto por su ID.
66
- * @param uid JID del contacto (@s.whatsapp.net) o número de teléfono.
67
- * @returns Contacto o null si no existe.
68
- */
69
- static async get(uid) {
70
- const jid = uid.includes('@') ? uid : `${uid}@s.whatsapp.net`;
71
- const stored = await wa.engine.get(`contact/${jid}/index`);
72
- if (stored)
73
- return new _Contact(JSON.parse(stored, baileys_1.BufferJSON.reviver));
74
- if (!wa.socket)
75
- return null;
76
- const found = (await wa.socket.onWhatsApp(jid.split('@')[0]))?.[0];
77
- if (!found?.exists)
78
- return null;
79
- const id = (0, baileys_1.jidNormalizedUser)(found.jid);
80
- const raw = { id, name: null, notify: null, imgUrl: null, status: null };
81
- // Obtener foto de perfil
82
- try {
83
- raw.imgUrl = (await wa.socket.profilePictureUrl(id, 'image')) ?? null;
84
- }
85
- catch { }
86
- // Obtener estado/bio
87
- try {
88
- const result = await wa.socket.fetchStatus(id);
89
- const status_data = result?.[0];
90
- raw.status = status_data?.status?.status ?? null;
91
- }
92
- catch { }
93
- const data = build_contact(raw);
94
- await wa.engine.set(`contact/${id}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
95
- return new _Contact(data);
96
- }
97
- /**
98
- * @description Actualiza los datos del perfil desde WhatsApp.
99
- * @param uid JID del contacto.
100
- * @returns Contacto actualizado o null.
101
- */
102
- static async refresh(uid) {
103
- const jid = uid.includes('@') ? uid : `${uid}@s.whatsapp.net`;
104
- if (!wa.socket)
105
- return null;
106
- const stored = await wa.engine.get(`contact/${jid}/index`);
107
- const data = stored ? JSON.parse(stored, baileys_1.BufferJSON.reviver) : build_contact({ id: jid });
108
- // Obtener foto de perfil
109
- try {
110
- data.raw.imgUrl = (await wa.socket.profilePictureUrl(jid, 'image')) ?? null;
111
- data.photo = data.raw.imgUrl;
112
- }
113
- catch { }
114
- // Obtener estado/bio
115
- try {
116
- const result = await wa.socket.fetchStatus(jid);
117
- const status_data = result?.[0];
118
- data.raw.status = status_data?.status?.status ?? null;
119
- data.content = data.raw.status ?? '';
120
- }
121
- catch { }
122
- await wa.engine.set(`contact/${jid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
123
- return new _Contact(data);
124
- }
125
- /**
126
- * @description Cambia el nombre de un contacto.
127
- * @param uid JID del contacto.
128
- * @param name Nuevo nombre.
129
- * @returns true si se guardó correctamente.
130
- */
131
- static async rename(uid, name) {
132
- const jid = uid.includes('@') ? uid : `${uid}@s.whatsapp.net`;
133
- const stored = await wa.engine.get(`contact/${jid}/index`);
134
- if (!stored)
135
- return false;
136
- const data = JSON.parse(stored, baileys_1.BufferJSON.reviver);
137
- data.raw.name = name;
138
- data.name = name;
139
- await wa.engine.set(`contact/${jid}/index`, JSON.stringify(data, baileys_1.BufferJSON.replacer));
140
- return true;
141
- }
142
- /**
143
- * @description Obtiene contactos paginados.
144
- * @param offset Inicio de paginación.
145
- * @param limit Cantidad máxima de resultados.
146
- * @returns Array de contactos.
147
- */
148
- static async paginate(offset = 0, limit = 50) {
149
- const contacts = [];
150
- for (const key of await wa.engine.list('contact/', offset, limit, '/index')) {
151
- const stored = await wa.engine.get(key);
152
- if (stored)
153
- contacts.push(new _Contact(JSON.parse(stored, baileys_1.BufferJSON.reviver)));
154
- }
155
- return contacts;
156
- }
157
- /**
158
- * @description Cambia el nombre del contacto.
159
- * @param name Nuevo nombre.
160
- * @returns true si se guardó correctamente.
161
- */
162
- async rename(name) {
163
- const result = await _Contact.rename(this.id, name);
164
- result && (this.raw.name = name);
165
- return result;
166
- }
167
- /**
168
- * @description Actualiza los datos del perfil desde WhatsApp.
169
- * @returns this con datos actualizados, o null si falla.
170
- */
171
- async refresh() {
172
- const updated = await _Contact.refresh(this.id);
173
- if (!updated)
174
- return null;
175
- // Actualizar raw con los nuevos datos
176
- Object.assign(this.raw, updated.raw);
177
- return this;
178
- }
179
- /**
180
- * @description Obtiene o crea el chat con este contacto.
181
- * @returns Chat asociado al contacto.
182
- */
183
- async chat() {
184
- return wa.Chat.get(this.id);
185
- }
186
- };
187
- }
188
- //# sourceMappingURL=Contact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Contact.js","sourceRoot":"","sources":["../src/Contact.ts"],"names":[],"mappings":"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"}