@arcaelas/whatsapp 1.4.0 → 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.
- package/build/cjs/Chat.d.ts +187 -205
- package/build/cjs/Chat.js +151 -274
- package/build/cjs/Chat.js.map +1 -1
- package/build/cjs/Contact.d.ts +317 -304
- package/build/cjs/Contact.js +58 -103
- package/build/cjs/Contact.js.map +1 -1
- package/build/cjs/Message.d.ts +567 -265
- package/build/cjs/Message.js +274 -256
- package/build/cjs/Message.js.map +1 -1
- package/build/cjs/WhatsApp.d.ts +16 -4
- package/build/cjs/WhatsApp.js +77 -79
- package/build/cjs/WhatsApp.js.map +1 -1
- package/build/cjs/index.d.ts +2 -2
- package/build/cjs/store/driver/FileEngine.d.ts +13 -2
- package/build/cjs/store/driver/FileEngine.js +15 -19
- package/build/cjs/store/driver/FileEngine.js.map +1 -1
- package/build/cjs/store/driver/RedisEngine.d.ts +13 -4
- package/build/cjs/store/driver/RedisEngine.js +23 -22
- package/build/cjs/store/driver/RedisEngine.js.map +1 -1
- package/build/cjs/store/engine.d.ts +9 -10
- package/build/esm/Chat.d.ts +187 -205
- package/build/esm/Chat.js +151 -273
- package/build/esm/Chat.js.map +1 -1
- package/build/esm/Contact.d.ts +317 -304
- package/build/esm/Contact.js +58 -102
- package/build/esm/Contact.js.map +1 -1
- package/build/esm/Message.d.ts +567 -265
- package/build/esm/Message.js +275 -256
- package/build/esm/Message.js.map +1 -1
- package/build/esm/WhatsApp.d.ts +16 -4
- package/build/esm/WhatsApp.js +80 -82
- package/build/esm/WhatsApp.js.map +1 -1
- package/build/esm/index.d.ts +2 -2
- package/build/esm/store/driver/FileEngine.d.ts +13 -2
- package/build/esm/store/driver/FileEngine.js +15 -19
- package/build/esm/store/driver/FileEngine.js.map +1 -1
- package/build/esm/store/driver/RedisEngine.d.ts +13 -4
- package/build/esm/store/driver/RedisEngine.js +23 -22
- package/build/esm/store/driver/RedisEngine.js.map +1 -1
- package/build/esm/store/engine.d.ts +9 -10
- package/package.json +2 -2
package/build/esm/Contact.js
CHANGED
|
@@ -3,65 +3,57 @@
|
|
|
3
3
|
* @description Clase Contact para gestión de contactos de WhatsApp
|
|
4
4
|
*/
|
|
5
5
|
import { BufferJSON, jidNormalizedUser } from 'baileys';
|
|
6
|
+
/**
|
|
7
|
+
* @description Construye IContactRaw normalizado.
|
|
8
|
+
* Builds a normalized IContactRaw.
|
|
9
|
+
*/
|
|
10
|
+
function build_contact(raw) {
|
|
11
|
+
return {
|
|
12
|
+
id: raw.id,
|
|
13
|
+
lid: raw.lid ?? null,
|
|
14
|
+
name: raw.name ?? null,
|
|
15
|
+
notify: raw.notify ?? null,
|
|
16
|
+
verifiedName: raw.verifiedName ?? null,
|
|
17
|
+
imgUrl: raw.imgUrl ?? null,
|
|
18
|
+
status: raw.status ?? null,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
6
21
|
/**
|
|
7
22
|
* @description
|
|
8
23
|
* Clase base para representar un contacto de WhatsApp.
|
|
9
|
-
*
|
|
24
|
+
* Base class representing a WhatsApp contact.
|
|
10
25
|
*/
|
|
11
26
|
export class Contact {
|
|
12
|
-
constructor(
|
|
13
|
-
this.raw =
|
|
27
|
+
constructor(raw) {
|
|
28
|
+
this.raw = raw;
|
|
14
29
|
}
|
|
15
|
-
/** JID único del contacto */
|
|
16
|
-
get id() {
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
get
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
get
|
|
25
|
-
return this.raw.imgUrl ?? null;
|
|
26
|
-
}
|
|
27
|
-
/** Número de teléfono sin formato */
|
|
28
|
-
get phone() {
|
|
29
|
-
return this.raw.id.split('@')[0];
|
|
30
|
-
}
|
|
31
|
-
/** Bio del contacto */
|
|
32
|
-
get content() {
|
|
33
|
-
return this.raw.status ?? '';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* @description Construye IContact desde raw.
|
|
38
|
-
* @param raw Objeto raw del contacto.
|
|
39
|
-
* @returns IContact normalizado.
|
|
40
|
-
*/
|
|
41
|
-
export function build_contact(raw) {
|
|
42
|
-
return {
|
|
43
|
-
id: raw.id,
|
|
44
|
-
name: raw.name ?? raw.notify ?? raw.id.split('@')[0],
|
|
45
|
-
photo: raw.imgUrl ?? null,
|
|
46
|
-
phone: raw.id.split('@')[0],
|
|
47
|
-
content: raw.status ?? '',
|
|
48
|
-
raw,
|
|
49
|
-
};
|
|
30
|
+
/** JID único del contacto / Unique contact JID */
|
|
31
|
+
get id() { return this.raw.id; }
|
|
32
|
+
/** Nombre del contacto / Contact name */
|
|
33
|
+
get name() { return this.raw.name ?? this.raw.notify ?? this.raw.id.split('@')[0]; }
|
|
34
|
+
/** URL de la foto de perfil o null / Profile picture URL or null */
|
|
35
|
+
get photo() { return this.raw.imgUrl ?? null; }
|
|
36
|
+
/** Número de teléfono sin formato / Phone number without format */
|
|
37
|
+
get phone() { return this.raw.id.split('@')[0]; }
|
|
38
|
+
/** Bio del contacto / Contact bio */
|
|
39
|
+
get content() { return this.raw.status ?? ''; }
|
|
50
40
|
}
|
|
51
41
|
/**
|
|
52
42
|
* @description Factory que retorna la clase Contact enlazada al contexto.
|
|
43
|
+
* Factory that returns the Contact class bound to context.
|
|
53
44
|
* @param wa Instancia de WhatsApp.
|
|
54
|
-
* @returns Clase _Contact que extiende Contact.
|
|
55
45
|
*/
|
|
56
46
|
export function contact(wa) {
|
|
57
47
|
return class _Contact extends Contact {
|
|
58
48
|
/**
|
|
59
49
|
* @description Obtiene un contacto por su ID.
|
|
60
|
-
*
|
|
61
|
-
* @
|
|
50
|
+
* Retrieves a contact by its ID.
|
|
51
|
+
* @param uid JID del contacto o número de teléfono.
|
|
62
52
|
*/
|
|
63
53
|
static async get(uid) {
|
|
64
|
-
const jid =
|
|
54
|
+
const jid = await wa.resolveJID(uid);
|
|
55
|
+
if (!jid)
|
|
56
|
+
return null;
|
|
65
57
|
const stored = await wa.engine.get(`contact/${jid}/index`);
|
|
66
58
|
if (stored)
|
|
67
59
|
return new _Contact(JSON.parse(stored, BufferJSON.reviver));
|
|
@@ -72,12 +64,10 @@ export function contact(wa) {
|
|
|
72
64
|
return null;
|
|
73
65
|
const id = jidNormalizedUser(found.jid);
|
|
74
66
|
const raw = { id, name: null, notify: null, imgUrl: null, status: null };
|
|
75
|
-
// Obtener foto de perfil
|
|
76
67
|
try {
|
|
77
68
|
raw.imgUrl = (await wa.socket.profilePictureUrl(id, 'image')) ?? null;
|
|
78
69
|
}
|
|
79
70
|
catch { /* profile picture may not exist */ }
|
|
80
|
-
// Obtener estado/bio
|
|
81
71
|
try {
|
|
82
72
|
const result = await wa.socket.fetchStatus(id);
|
|
83
73
|
const status_data = result?.[0];
|
|
@@ -88,60 +78,15 @@ export function contact(wa) {
|
|
|
88
78
|
await wa.engine.set(`contact/${id}/index`, JSON.stringify(data, BufferJSON.replacer));
|
|
89
79
|
return new _Contact(data);
|
|
90
80
|
}
|
|
91
|
-
/**
|
|
92
|
-
* @description Actualiza los datos del perfil desde WhatsApp.
|
|
93
|
-
* @param uid JID del contacto.
|
|
94
|
-
* @returns Contacto actualizado o null.
|
|
95
|
-
*/
|
|
96
|
-
static async refresh(uid) {
|
|
97
|
-
const jid = uid.includes('@') ? uid : `${uid}@s.whatsapp.net`;
|
|
98
|
-
if (!wa.socket)
|
|
99
|
-
return null;
|
|
100
|
-
const stored = await wa.engine.get(`contact/${jid}/index`);
|
|
101
|
-
const data = stored ? JSON.parse(stored, BufferJSON.reviver) : build_contact({ id: jid });
|
|
102
|
-
// Obtener foto de perfil
|
|
103
|
-
try {
|
|
104
|
-
data.raw.imgUrl = (await wa.socket.profilePictureUrl(jid, 'image')) ?? null;
|
|
105
|
-
data.photo = data.raw.imgUrl;
|
|
106
|
-
}
|
|
107
|
-
catch { /* profile picture may not exist */ }
|
|
108
|
-
// Obtener estado/bio
|
|
109
|
-
try {
|
|
110
|
-
const result = await wa.socket.fetchStatus(jid);
|
|
111
|
-
const status_data = result?.[0];
|
|
112
|
-
data.raw.status = status_data?.status?.status ?? null;
|
|
113
|
-
data.content = data.raw.status ?? '';
|
|
114
|
-
}
|
|
115
|
-
catch { /* status fetch may fail */ }
|
|
116
|
-
await wa.engine.set(`contact/${jid}/index`, JSON.stringify(data, BufferJSON.replacer));
|
|
117
|
-
return new _Contact(data);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @description Cambia el nombre de un contacto.
|
|
121
|
-
* @param uid JID del contacto.
|
|
122
|
-
* @param name Nuevo nombre.
|
|
123
|
-
* @returns true si se guardó correctamente.
|
|
124
|
-
*/
|
|
125
|
-
static async rename(uid, name) {
|
|
126
|
-
const jid = uid.includes('@') ? uid : `${uid}@s.whatsapp.net`;
|
|
127
|
-
const stored = await wa.engine.get(`contact/${jid}/index`);
|
|
128
|
-
if (!stored)
|
|
129
|
-
return false;
|
|
130
|
-
const data = JSON.parse(stored, BufferJSON.reviver);
|
|
131
|
-
data.raw.name = name;
|
|
132
|
-
data.name = name;
|
|
133
|
-
await wa.engine.set(`contact/${jid}/index`, JSON.stringify(data, BufferJSON.replacer));
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
81
|
/**
|
|
137
82
|
* @description Obtiene contactos paginados.
|
|
83
|
+
* Retrieves paginated contacts.
|
|
138
84
|
* @param offset Inicio de paginación.
|
|
139
85
|
* @param limit Cantidad máxima de resultados.
|
|
140
|
-
* @returns Array de contactos.
|
|
141
86
|
*/
|
|
142
|
-
static async
|
|
87
|
+
static async list(offset = 0, limit = 50) {
|
|
143
88
|
const contacts = [];
|
|
144
|
-
for (const key of await wa.engine.list('contact/', offset, limit
|
|
89
|
+
for (const key of await wa.engine.list('contact/', offset, limit)) {
|
|
145
90
|
const stored = await wa.engine.get(key);
|
|
146
91
|
if (stored)
|
|
147
92
|
contacts.push(new _Contact(JSON.parse(stored, BufferJSON.reviver)));
|
|
@@ -150,30 +95,41 @@ export function contact(wa) {
|
|
|
150
95
|
}
|
|
151
96
|
/**
|
|
152
97
|
* @description Cambia el nombre del contacto.
|
|
98
|
+
* Renames the contact.
|
|
153
99
|
* @param name Nuevo nombre.
|
|
154
|
-
* @returns true si se guardó correctamente.
|
|
155
100
|
*/
|
|
156
101
|
async rename(name) {
|
|
157
|
-
const
|
|
158
|
-
if (
|
|
102
|
+
const stored = await wa.engine.get(`contact/${this.id}/index`);
|
|
103
|
+
if (stored) {
|
|
159
104
|
this.raw.name = name;
|
|
160
|
-
|
|
105
|
+
await wa.engine.set(`contact/${this.id}/index`, JSON.stringify(this.raw, BufferJSON.replacer));
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
161
109
|
}
|
|
162
110
|
/**
|
|
163
111
|
* @description Actualiza los datos del perfil desde WhatsApp.
|
|
164
|
-
*
|
|
112
|
+
* Refreshes profile data from WhatsApp.
|
|
165
113
|
*/
|
|
166
114
|
async refresh() {
|
|
167
|
-
|
|
168
|
-
if (!updated)
|
|
115
|
+
if (!wa.socket)
|
|
169
116
|
return null;
|
|
170
|
-
|
|
171
|
-
|
|
117
|
+
try {
|
|
118
|
+
this.raw.imgUrl = (await wa.socket.profilePictureUrl(this.id, 'image')) ?? null;
|
|
119
|
+
}
|
|
120
|
+
catch { /* profile picture may not exist */ }
|
|
121
|
+
try {
|
|
122
|
+
const result = await wa.socket.fetchStatus(this.id);
|
|
123
|
+
const status_data = result?.[0];
|
|
124
|
+
this.raw.status = status_data?.status?.status ?? null;
|
|
125
|
+
}
|
|
126
|
+
catch { /* status fetch may fail */ }
|
|
127
|
+
await wa.engine.set(`contact/${this.id}/index`, JSON.stringify(this.raw, BufferJSON.replacer));
|
|
172
128
|
return this;
|
|
173
129
|
}
|
|
174
130
|
/**
|
|
175
131
|
* @description Obtiene o crea el chat con este contacto.
|
|
176
|
-
*
|
|
132
|
+
* Gets or creates the chat with this contact.
|
|
177
133
|
*/
|
|
178
134
|
async chat() {
|
|
179
135
|
return wa.Chat.get(this.id);
|
package/build/esm/Contact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Contact.js","sourceRoot":"","sources":["../../src/Contact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Contact.js","sourceRoot":"","sources":["../../src/Contact.ts"],"names":[],"mappings":"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"}
|