kage-baileys 1.1.6 → 1.1.9

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.
@@ -0,0 +1,142 @@
1
+ AUTOMATIZACIÓN CHIAKI + KAGE BAILEYS — INSTRUCCIONES
2
+
3
+ INSTALACIÓN
4
+ 1. Haz una copia de seguridad de tu proyecto, sesiones y base de datos.
5
+ 2. Extrae Chiaki-corregido.zip en la carpeta del bot. Conserva tus sesiones y datos propios.
6
+ 3. Usa Node.js 22.12.0 o superior. Ejecuta npm install y después npm start.
7
+ 4. Si estás reemplazando una instalación previa y npm conserva la librería antigua,
8
+ ejecuta npm install --force antes de reiniciar.
9
+ 5. Chiaki ya incluye vendor/kage-baileys-1.1.8-automatizacion.tgz. No necesitas
10
+ publicar Kage en npm ni instalar el otro ZIP aparte para utilizar Chiaki.
11
+ Los tres alias de Baileys de package.json apuntan al mismo paquete modificado.
12
+ 6. El paquete original vendor/kage-baileys-1.1.8-revision.tgz se conserva por
13
+ integridad del archivo aportado, pero package.json NO lo utiliza.
14
+
15
+ AJUSTES CENTRALIZADOS
16
+ La implementación está en lib/options.js. plugins/_options.js solo registra
17
+ su exportación; no hay dos implementaciones de los interruptores.
18
+ Los antiguos comandos .autodescarga / .autoviewonce solo orientan al propietario.
19
+
20
+ .on autodescarga Archiva medios normales recibidos en este chat.
21
+ .off autodescarga Desactiva esa descarga en este chat.
22
+ .on autoviewonce Descarga y envía una copia normal en este chat.
23
+ .off autoviewonce Detiene ese reenvío automático en este chat.
24
+ .on guardarestados Guarda estados de contactos y envía copias a este privado.
25
+ .off guardarestados Deja de guardar/enviar automáticamente estados nuevos.
26
+ .on statuszip Cuando guardarestados está activo, entrega un ZIP por contacto.
27
+ .off statuszip Vuelve a entregar cada estado por separado.
28
+ .on statusreaction random ❤️ 🔥 👍 💜
29
+ Selecciona un emoji de la lista por estado.
30
+ .on statusreaction ❤️ Usa un emoji fijo.
31
+ .off statusreaction Desactiva únicamente las reacciones automáticas.
32
+
33
+ Solo el propietario del bot puede cambiar estas opciones. autodescarga y
34
+ autoviewonce son por chat, también se pueden habilitar por el dueño en un grupo.
35
+ guardarestados/statuszip se activan en el privado del propietario: las copias
36
+ no se envían a grupos. La configuración se persiste en la base de datos por cuenta.
37
+ Todo está desactivado inicialmente salvo ajustes previamente guardados.
38
+ La activación es una vez; no hace falta ejecutar un comando por cada medio recibido.
39
+ Usa el guardado y el reenvío únicamente con permiso de las personas remitentes.
40
+
41
+ AUTOVIEWONCE
42
+ Se atienden imageMessage, videoMessage y audioMessage; también se reconocen
43
+ los demás tipos de medios soportados por Baileys si llegan en un envoltorio válido.
44
+ Se reconocen viewOnceMessage, viewOnceMessageV2, viewOnceMessageV2Extension,
45
+ ephemeralMessage y la marca viewOnce directamente en el medio.
46
+ Primero se descarga y descifra el archivo entregado por WhatsApp. Después se
47
+ suben los bytes como un medio NUEVO, no como forward/copyNForward y sin viewOnce.
48
+ Se mantiene el texto, MIME, tipo de audio/PTT y GIF cuando están disponibles.
49
+ El mensaje original no se modifica. Se ignoran los envíos del propio bot y se
50
+ controlan duplicados y colas para evitar reenvíos en bucle.
51
+ Solo se procesa recepción en vivo (notify), no lotes históricos append.
52
+ Cambiar el interruptor a off durante la descarga evita el envío posterior.
53
+
54
+ ESTADOS
55
+ .estados Cuenta los estados recibidos disponibles por contacto.
56
+ .estados todos Lista IDs, tipo y reacción del bot por estado.
57
+ .estados historial Muestra caducidad y eliminaciones notificadas.
58
+ .estadoinfo E1 Muestra información, color original y reacción registrada.
59
+ .verestado E1 Envía el contenido de ese estado.
60
+ .descargarestado E1 Descarga individual y metadatos.
61
+ .estadoszip E1 ZIP de los estados disponibles del autor de E1.
62
+ .estadoszip 51987654321 ZIP de un contacto por su número conocido.
63
+ .estadoszip 123456789@lid ZIP por LID recibido. No se inventan números para LID.
64
+ .reaccionestado E1 🔥 Reacción manual. No activa la reacción automática.
65
+ .estadoemoji random ❤️ 🔥 Cambia la lista de emojis sin cambiar el interruptor on/off.
66
+
67
+ Solo se aceptan contactos guardados que consten en la sincronización de la cuenta
68
+ (nombre de agenda o marca isMyContact/isSaved). Un pushName, un notify o pertenecer
69
+ a un grupo NO prueba que alguien esté guardado. Si todavía no se sincronizaron
70
+ los contactos, la lista puede estar vacía. Los mapeos PN/LID usan datos reales.
71
+
72
+ Con guardarestados se guardan los archivos localmente y se envían al privado en
73
+ que el propietario activó el ajuste. Con statuszip se agrupan las recepciones
74
+ consecutivas de cada contacto durante unos 3 segundos, con un máximo de 10 segundos
75
+ por ráfaga; el ZIP incluye los estados recibidos disponibles de ese contacto.
76
+ Los ZIP pueden contener imágenes, videos, audios y texto, más informacion.json.
77
+ Los estados de texto se entregan como texto/TXT: NO se promete una imagen del
78
+ estado. Sus colores ARGB y fuente se conservan en informacion.json cuando llegan.
79
+
80
+ Cada estado muestra la reacción ENVIADA POR EL BOT o ninguna registrada. No se
81
+ promete conocer las reacciones de otros usuarios que WhatsApp no entregue.
82
+ La lista aleatoria admite hasta 50 emojis separados por espacios. Se utiliza
83
+ UN emoji por estado: no se envía una ráfaga de reacciones al mismo estado.
84
+
85
+ VIGENCIA Y ALMACENAMIENTO
86
+ received significa recibido y dentro de la ventana calculada de 24 horas, sin
87
+ borrado notificado. NO es una consulta remota que certifique que sigue publicado.
88
+ deleted significa que llegó un aviso de eliminación; expired indica caducidad.
89
+ Se reciben revocaciones y eventos messages.delete/messages.update.
90
+ La caché guarda hasta 500 entradas y conserva metadatos retirados hasta 48 horas.
91
+ Las copias locales ya archivadas permanecen aunque el estado original caduque
92
+ o sea eliminado: son archivos del servidor, NO estados todavía publicados.
93
+ .estados limpiar vacía la caché, NO borra las copias locales guardadas.
94
+
95
+ Medios normales: downloads/normal.
96
+ Estados guardados: downloads/status/<identificador de cuenta>.
97
+ Metadatos de estados: data/status/<identificador de cuenta>.json.
98
+ Permisos locales restringidos: directorios 0700 y archivos 0600.
99
+ Límite por medio: 32 MiB. Cuota de archivo: 512 MiB por directorio/cuenta de estados.
100
+ ZIP: hasta 64 MiB de archivos y 100 elementos; el manifiesto indica omisiones.
101
+ Colas acotadas: hasta 20 descargas/guardados pendientes. Debes limpiar tus copias
102
+ cuando ya no las necesites. No se elimina ni cambia el estado original del contacto.
103
+
104
+ MÉTODOS NUEVOS EN KAGE
105
+ La integración se instala al crear el socket en lib/Socket/index.js.
106
+ conn.getViewOnceContent(raw)
107
+ conn.normalizeViewOnceMessage(raw)
108
+ conn.downloadViewOnceMessage(raw, opciones)
109
+ conn.resendViewOnceMessage(raw, opciones)
110
+ conn.handleAutoViewOnce(raw, settings, opciones)
111
+ conn.enableMediaAutomation(settings) -> función para detener listeners
112
+ conn.saveReceivedStatus(entry, opciones)
113
+ conn.exportReceivedStatuses(author, opciones)
114
+ Los helpers también están disponibles en el export público de la librería.
115
+
116
+ En una aplicación independiente puedes crear el socket con:
117
+ const settings = { autoViewOnceChats: ['51987654321@s.whatsapp.net'] }
118
+ const sock = makeWASocket({ auth, kageTools: {
119
+ mediaAutomation: true, mediaSettings: settings, contactsOnly: true,
120
+ statusTracking: true, statusSettings: { statusSave: false, statusReaction: false }
121
+ } })
122
+ No actives otro listener independiente en Chiaki: handler.js ya integra estos helpers
123
+ con su configuración y evita un segundo procesamiento de los mismos eventos.
124
+ Los listeners auxiliares se retiran al cerrar la conexión.
125
+
126
+ WAPROTO
127
+ El esquema aportado ya incluye los tres envoltorios y los campos viewOnce.
128
+ No se inventaron números de campo ni métodos dentro de protobuf. La normalización
129
+ es una utilidad local, no un cambio del protocolo de WhatsApp. Se regeneraron
130
+ WAProto/index.js e index.d.ts desde WAProto.proto y las declaraciones públicas.
131
+ Se mantienen los campos y la compatibilidad binaria del esquema aportado.
132
+
133
+ PRUEBAS Y LÍMITES
134
+ Kage: npm run check — análisis de sintaxis y pruebas unitarias/de integración local.
135
+ Chiaki: npm run check y npm test.
136
+ Los informes de esta revisión están dentro de validation/ y maintenance/.
137
+ Las pruebas usan datos sintéticos, streams de descarga simulados y sockets de prueba.
138
+ NO se ha conectado esta revisión a una cuenta real ni se ha comprobado la entrega
139
+ por los servidores de WhatsApp. No se puede garantizar que funcione "sí o sí"
140
+ con cualquier versión, cuenta o cambio futuro del servicio.
141
+ No recupera archivos consumidos, borrados, caducados o claves que WhatsApp no entregue.
142
+ El servidor de WhatsApp puede rechazar descargas, envíos o reacciones.
@@ -2290,6 +2290,8 @@ message Message {
2290
2290
  optional DeviceSentMessage deviceSentMessage = 31;
2291
2291
  optional MessageContextInfo messageContextInfo = 35;
2292
2292
  optional ListMessage listMessage = 36;
2293
+ // Kage: preserve the actual wire envelope on receive. Local download/re-upload
2294
+ // helpers live in lib/Utils/view-once.js; no custom protobuf tags are required.
2293
2295
  optional FutureProofMessage viewOnceMessage = 37;
2294
2296
  optional OrderMessage orderMessage = 38;
2295
2297
  optional ListResponseMessage listResponseMessage = 39;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
- const [major, minor, patch] = process.versions.node.split('.').map(Number);
3
- if (major < 20 || (major === 20 && (minor < 18 || (minor === 18 && patch < 1)))) {
4
- console.error('Kage Baileys 1.1.4 requires Node.js >=20.18.1; Node.js 22 LTS is recommended.');
5
- process.exitCode = 1;
2
+ const [major, minor] = process.versions.node.split('.').map(Number);
3
+ if (major < 22 || (major === 22 && minor < 12)) {
4
+ console.error('Kage Baileys requires Node.js >=22.12.0. Use a supported Node.js LTS release.');
5
+ process.exitCode = 1;
6
6
  }
@@ -39,13 +39,13 @@ let sharp, ffmpeg;
39
39
  try {
40
40
  sharp = (await Promise.resolve().then(() => _interopRequireWildcard(require('sharp')))).default;
41
41
  } catch (e2) {
42
- console.warn('⚠️ [ourin-baileys] WARNING: Module "sharp" is not installed. Image resizing & processing may not work.\n👉 Please run: npm install sharp');
42
+ console.warn('⚠️ [kage-baileys] WARNING: Module "sharp" is not installed. Image resizing & processing may not work.\n👉 Please run: npm install sharp');
43
43
  }
44
44
 
45
45
  try {
46
46
  ffmpeg = (await Promise.resolve().then(() => _interopRequireWildcard(require('fluent-ffmpeg')))).default;
47
47
  } catch (e3) {
48
- console.warn('⚠️ [ourin-baileys] WARNING: Module "fluent-ffmpeg" is not installed. Video previews may not work.\n👉 Please run: npm install fluent-ffmpeg');
48
+ console.warn('⚠️ [kage-baileys] WARNING: Module "fluent-ffmpeg" is not installed. Video previews may not work.\n👉 Please run: npm install fluent-ffmpeg');
49
49
  }
50
50
 
51
51
  function extractIE(text, { extract = true, hyperlink = true, citation = true, latex = true } = {}) {
@@ -3,8 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const Defaults_1 = require("../Defaults");
4
4
  const business_1 = require("./business");
5
5
  // export the last socket layer
6
- const makeWASocket = (config) => ((0, business_1.makeBusinessSocket)({
7
- ...Defaults_1.DEFAULT_CONNECTION_CONFIG,
8
- ...config
9
- }));
6
+ const makeWASocket = (config = {}) => {
7
+ const socket = (0, business_1.makeBusinessSocket)({
8
+ ...Defaults_1.DEFAULT_CONNECTION_CONFIG,
9
+ ...config
10
+ });
11
+ // Unified socket helpers: normal media, view-once re-upload and contact status archives.
12
+ // Automation stays OFF unless explicitly enabled with kageTools / owner options.
13
+ const tools = require('../Utils/automation-tools').installKageTools(socket, config.kageTools || {});
14
+ return tools;
15
+ };
10
16
  exports.default = makeWASocket;