trompot 1.6.1 → 1.6.2
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 +195 -20
- package/lib/client/Client.js +93 -28
- package/lib/client/Client.js.map +1 -1
- package/lib/client/ClientFunctionHandler.js +39 -3
- package/lib/client/ClientFunctionHandler.js.map +1 -1
- package/lib/telegram/TelegramAuth.js +36 -1
- package/lib/telegram/TelegramAuth.js.map +1 -1
- package/lib/telegram/TelegramBot.d.ts +11 -0
- package/lib/telegram/TelegramBot.js +101 -15
- package/lib/telegram/TelegramBot.js.map +1 -1
- package/lib/telegram/TelegramEvents.d.ts +8 -1
- package/lib/telegram/TelegramEvents.js +67 -30
- package/lib/telegram/TelegramEvents.js.map +1 -1
- package/lib/telegram/TelegramSendingController.js +59 -17
- package/lib/telegram/TelegramSendingController.js.map +1 -1
- package/lib/telegram/TelegramToRompotConverter.js +44 -14
- package/lib/telegram/TelegramToRompotConverter.js.map +1 -1
- package/lib/wa/Auth.js +17 -5
- package/lib/wa/Auth.js.map +1 -1
- package/lib/wa/ConfigWAEvents.d.ts +6 -10
- package/lib/wa/ConfigWAEvents.js +216 -430
- package/lib/wa/ConfigWAEvents.js.map +1 -1
- package/lib/wa/ConvertWAMessage.js +28 -19
- package/lib/wa/ConvertWAMessage.js.map +1 -1
- package/lib/wa/ID.d.ts +10 -1
- package/lib/wa/ID.js +22 -2
- package/lib/wa/ID.js.map +1 -1
- package/lib/wa/WhatsAppBot.d.ts +58 -11
- package/lib/wa/WhatsAppBot.js +365 -666
- package/lib/wa/WhatsAppBot.js.map +1 -1
- package/lib/wa/constants/ConfigDefaults.d.ts +23 -0
- package/lib/wa/constants/ConfigDefaults.js +27 -0
- package/lib/wa/constants/ConfigDefaults.js.map +1 -0
- package/lib/wa/constants/DisconnectReasons.d.ts +24 -0
- package/lib/wa/constants/DisconnectReasons.js +36 -0
- package/lib/wa/constants/DisconnectReasons.js.map +1 -0
- package/lib/wa/constants/ErrorCodes.d.ts +28 -0
- package/lib/wa/constants/ErrorCodes.js +32 -0
- package/lib/wa/constants/ErrorCodes.js.map +1 -0
- package/lib/wa/constants/JIDPatterns.d.ts +23 -0
- package/lib/wa/constants/JIDPatterns.js +38 -0
- package/lib/wa/constants/JIDPatterns.js.map +1 -0
- package/lib/wa/constants/Timeouts.d.ts +11 -0
- package/lib/wa/constants/Timeouts.js +15 -0
- package/lib/wa/constants/Timeouts.js.map +1 -0
- package/lib/wa/core/ConnectionManager.d.ts +84 -0
- package/lib/wa/core/ConnectionManager.js +256 -0
- package/lib/wa/core/ConnectionManager.js.map +1 -0
- package/lib/wa/core/SessionManager.d.ts +29 -0
- package/lib/wa/core/SessionManager.js +155 -0
- package/lib/wa/core/SessionManager.js.map +1 -0
- package/lib/wa/core/StateManager.d.ts +49 -0
- package/lib/wa/core/StateManager.js +135 -0
- package/lib/wa/core/StateManager.js.map +1 -0
- package/lib/wa/events/CallEventHandler.d.ts +17 -0
- package/lib/wa/events/CallEventHandler.js +155 -0
- package/lib/wa/events/CallEventHandler.js.map +1 -0
- package/lib/wa/events/ChatEventHandler.d.ts +12 -0
- package/lib/wa/events/ChatEventHandler.js +74 -0
- package/lib/wa/events/ChatEventHandler.js.map +1 -0
- package/lib/wa/events/ConnectionEventHandler.d.ts +43 -0
- package/lib/wa/events/ConnectionEventHandler.js +305 -0
- package/lib/wa/events/ConnectionEventHandler.js.map +1 -0
- package/lib/wa/events/ContactEventHandler.d.ts +12 -0
- package/lib/wa/events/ContactEventHandler.js +55 -0
- package/lib/wa/events/ContactEventHandler.js.map +1 -0
- package/lib/wa/events/EventManager.d.ts +43 -0
- package/lib/wa/events/EventManager.js +198 -0
- package/lib/wa/events/EventManager.js.map +1 -0
- package/lib/wa/events/GroupEventHandler.d.ts +12 -0
- package/lib/wa/events/GroupEventHandler.js +74 -0
- package/lib/wa/events/GroupEventHandler.js.map +1 -0
- package/lib/wa/events/HistoryEventHandler.d.ts +16 -0
- package/lib/wa/events/HistoryEventHandler.js +101 -0
- package/lib/wa/events/HistoryEventHandler.js.map +1 -0
- package/lib/wa/events/LIDMappingEventHandler.d.ts +20 -0
- package/lib/wa/events/LIDMappingEventHandler.js +39 -0
- package/lib/wa/events/LIDMappingEventHandler.js.map +1 -0
- package/lib/wa/events/MessageEventHandler.d.ts +16 -0
- package/lib/wa/events/MessageEventHandler.js +218 -0
- package/lib/wa/events/MessageEventHandler.js.map +1 -0
- package/lib/wa/interfaces/ICacheService.d.ts +12 -0
- package/lib/wa/interfaces/ICacheService.js +3 -0
- package/lib/wa/interfaces/ICacheService.js.map +1 -0
- package/lib/wa/interfaces/IConnectionManager.d.ts +15 -0
- package/lib/wa/interfaces/IConnectionManager.js +3 -0
- package/lib/wa/interfaces/IConnectionManager.js.map +1 -0
- package/lib/wa/interfaces/IErrorHandler.d.ts +9 -0
- package/lib/wa/interfaces/IErrorHandler.js +3 -0
- package/lib/wa/interfaces/IErrorHandler.js.map +1 -0
- package/lib/wa/interfaces/ILoggerService.d.ts +13 -0
- package/lib/wa/interfaces/ILoggerService.js +3 -0
- package/lib/wa/interfaces/ILoggerService.js.map +1 -0
- package/lib/wa/interfaces/ISessionManager.d.ts +16 -0
- package/lib/wa/interfaces/ISessionManager.js +3 -0
- package/lib/wa/interfaces/ISessionManager.js.map +1 -0
- package/lib/wa/interfaces/IStateManager.d.ts +41 -0
- package/lib/wa/interfaces/IStateManager.js +3 -0
- package/lib/wa/interfaces/IStateManager.js.map +1 -0
- package/lib/wa/operations/ChatOperations.d.ts +117 -0
- package/lib/wa/operations/ChatOperations.js +349 -0
- package/lib/wa/operations/ChatOperations.js.map +1 -0
- package/lib/wa/operations/GroupOperations.d.ts +31 -0
- package/lib/wa/operations/GroupOperations.js +128 -0
- package/lib/wa/operations/GroupOperations.js.map +1 -0
- package/lib/wa/operations/MessageOperations.d.ts +69 -0
- package/lib/wa/operations/MessageOperations.js +335 -0
- package/lib/wa/operations/MessageOperations.js.map +1 -0
- package/lib/wa/operations/UserOperations.d.ts +100 -0
- package/lib/wa/operations/UserOperations.js +216 -0
- package/lib/wa/operations/UserOperations.js.map +1 -0
- package/lib/wa/services/CacheService.d.ts +45 -0
- package/lib/wa/services/CacheService.js +93 -0
- package/lib/wa/services/CacheService.js.map +1 -0
- package/lib/wa/services/ErrorHandler.d.ts +26 -0
- package/lib/wa/services/ErrorHandler.js +73 -0
- package/lib/wa/services/ErrorHandler.js.map +1 -0
- package/lib/wa/services/LIDMappingService.d.ts +42 -0
- package/lib/wa/services/LIDMappingService.js +132 -0
- package/lib/wa/services/LIDMappingService.js.map +1 -0
- package/lib/wa/services/LIDNormalizationService.d.ts +30 -0
- package/lib/wa/services/LIDNormalizationService.js +136 -0
- package/lib/wa/services/LIDNormalizationService.js.map +1 -0
- package/lib/wa/services/LoggerService.d.ts +44 -0
- package/lib/wa/services/LoggerService.js +85 -0
- package/lib/wa/services/LoggerService.js.map +1 -0
- package/lib/wa/services/PendingMessageQueue.d.ts +46 -0
- package/lib/wa/services/PendingMessageQueue.js +119 -0
- package/lib/wa/services/PendingMessageQueue.js.map +1 -0
- package/lib/wa/services/RetryService.d.ts +25 -0
- package/lib/wa/services/RetryService.js +59 -0
- package/lib/wa/services/RetryService.js.map +1 -0
- package/lib/wa/utils/ConfigValidator.d.ts +15 -0
- package/lib/wa/utils/ConfigValidator.js +66 -0
- package/lib/wa/utils/ConfigValidator.js.map +1 -0
- package/lib/wa/utils/ErrorUtils.d.ts +29 -0
- package/lib/wa/utils/ErrorUtils.js +66 -0
- package/lib/wa/utils/ErrorUtils.js.map +1 -0
- package/lib/wa/utils/Validation.d.ts +18 -0
- package/lib/wa/utils/Validation.js +40 -0
- package/lib/wa/utils/Validation.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MessageOperations = void 0;
|
|
7
|
+
const baileys_1 = require("@whiskeysockets/baileys");
|
|
8
|
+
const Message_1 = require("../../messages/Message");
|
|
9
|
+
const messages_1 = require("../../messages");
|
|
10
|
+
const Validation_1 = require("../utils/Validation");
|
|
11
|
+
const JIDPatterns_1 = require("../constants/JIDPatterns");
|
|
12
|
+
const ConvertToWAMessage_1 = __importDefault(require("../ConvertToWAMessage"));
|
|
13
|
+
const ChatType_1 = __importDefault(require("../../modules/chat/ChatType"));
|
|
14
|
+
const ID_1 = require("../ID");
|
|
15
|
+
/**
|
|
16
|
+
* Operações relacionadas a mensagens
|
|
17
|
+
*/
|
|
18
|
+
class MessageOperations {
|
|
19
|
+
constructor(bot, errorHandler, pendingMessageQueue) {
|
|
20
|
+
this.bot = bot;
|
|
21
|
+
this.errorHandler = errorHandler;
|
|
22
|
+
this.pendingMessageQueue = pendingMessageQueue;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Normaliza JID LID para JID válido (baseado em práticas do Rompot)
|
|
26
|
+
* Tenta normalizar apenas quando necessário (antes de enviar mensagem)
|
|
27
|
+
* Usa LIDMappingService do bot (que tem cache) primeiro
|
|
28
|
+
* Tenta múltiplas vezes com delays crescentes antes de desistir
|
|
29
|
+
*/
|
|
30
|
+
async normalizeJIDForSend(jid, maxRetries = 5) {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
if (!jid || (0, JIDPatterns_1.isValidJID)(jid)) {
|
|
33
|
+
return jid;
|
|
34
|
+
}
|
|
35
|
+
// Verifica se é um JID LID (termina com @lid)
|
|
36
|
+
if (jid.endsWith('@lid')) {
|
|
37
|
+
const lid = jid.replace('@lid', '');
|
|
38
|
+
// Tenta usar o LIDNormalizationService (múltiplas estratégias, mais rápido)
|
|
39
|
+
try {
|
|
40
|
+
if (this.bot.lidNormalizationService) {
|
|
41
|
+
const normalized = await this.bot.lidNormalizationService.normalizeJID(jid, false);
|
|
42
|
+
if (normalized && (0, JIDPatterns_1.isValidJID)(normalized)) {
|
|
43
|
+
return normalized;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
// Ignora erro - continua para tentar do socket
|
|
49
|
+
}
|
|
50
|
+
// Tenta múltiplas vezes do socket com delays crescentes
|
|
51
|
+
// Delays: 500ms, 1000ms, 2000ms, 4000ms, 8000ms
|
|
52
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
53
|
+
try {
|
|
54
|
+
if ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.signalRepository) === null || _b === void 0 ? void 0 : _b.lidMapping) {
|
|
55
|
+
const pn = await this.bot.sock.signalRepository.lidMapping.getPNForLID(lid);
|
|
56
|
+
if (pn) {
|
|
57
|
+
return (0, ID_1.getID)(pn);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Aguarda antes de tentar novamente (backoff exponencial)
|
|
61
|
+
if (attempt < maxRetries - 1) {
|
|
62
|
+
const delay = 500 * Math.pow(2, attempt);
|
|
63
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// Ignora erro
|
|
68
|
+
if (attempt < maxRetries - 1) {
|
|
69
|
+
const delay = 500 * Math.pow(2, attempt);
|
|
70
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Retorna null se não conseguir normalizar (indica que deve usar fila ou fallback)
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Envia uma mensagem
|
|
80
|
+
* Baseado no Rompot: normaliza JID apenas quando necessário (antes de enviar)
|
|
81
|
+
* Usa fila de mensagens pendentes se o mapeamento LID/PN não estiver disponível
|
|
82
|
+
*/
|
|
83
|
+
async send(message) {
|
|
84
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
85
|
+
// Valida estado antes de enviar
|
|
86
|
+
const sockIsOpen = ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.ws) === null || _b === void 0 ? void 0 : _b.isOpen) === true;
|
|
87
|
+
if (!sockIsOpen) {
|
|
88
|
+
const error = new Error('Bot não está conectado. Socket não está aberto.');
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
// Normaliza JID LID antes de validar (se necessário)
|
|
92
|
+
if (((_c = message.chat) === null || _c === void 0 ? void 0 : _c.id) && !(0, JIDPatterns_1.isValidJID)(message.chat.id)) {
|
|
93
|
+
// Verifica se o socket está disponível antes de tentar normalizar
|
|
94
|
+
if (!((_e = (_d = this.bot.sock) === null || _d === void 0 ? void 0 : _d.signalRepository) === null || _e === void 0 ? void 0 : _e.lidMapping)) {
|
|
95
|
+
const error = new Error(`JID de chat inválido: ${(_f = message.chat) === null || _f === void 0 ? void 0 : _f.id}. Socket não está disponível para normalização LID.`);
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
// Tenta normalizar usando LIDNormalizationService (múltiplas estratégias otimizadas)
|
|
99
|
+
let normalizedJID = null;
|
|
100
|
+
try {
|
|
101
|
+
if (this.bot.lidNormalizationService) {
|
|
102
|
+
normalizedJID = await this.bot.lidNormalizationService.normalizeJID(message.chat.id, false);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
// Ignora erro - continua para tentar outras estratégias
|
|
107
|
+
}
|
|
108
|
+
if (normalizedJID && (0, JIDPatterns_1.isValidJID)(normalizedJID)) {
|
|
109
|
+
// Normalização bem-sucedida, atualiza o JID e continua
|
|
110
|
+
message.chat.id = normalizedJID;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Se não conseguiu normalizar, tenta enviar com JID LID diretamente primeiro
|
|
114
|
+
// Baileys pode aceitar JID LID em alguns casos
|
|
115
|
+
try {
|
|
116
|
+
const waMsg = (await new ConvertToWAMessage_1.default(this.bot, message).refactory()).waMessage;
|
|
117
|
+
const sent = await this.bot.sock.sendMessage(message.chat.id, waMsg);
|
|
118
|
+
if (sent && sent.key && sent.key.id) {
|
|
119
|
+
message.id = sent.key.id;
|
|
120
|
+
}
|
|
121
|
+
return message;
|
|
122
|
+
}
|
|
123
|
+
catch (sendError) {
|
|
124
|
+
// Se falhar ao enviar com LID, adiciona à fila de pendentes
|
|
125
|
+
// A mensagem será processada quando o mapeamento ficar disponível
|
|
126
|
+
return new Promise((resolve, reject) => {
|
|
127
|
+
this.pendingMessageQueue.add(message,
|
|
128
|
+
// Resolve: quando o mapeamento ficar disponível, envia a mensagem
|
|
129
|
+
async (normalizedMessage) => {
|
|
130
|
+
try {
|
|
131
|
+
const sent = await this.sendMessageInternal(normalizedMessage);
|
|
132
|
+
resolve(sent);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
reject(error);
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
// Reject: se a mensagem expirar ou houver erro
|
|
139
|
+
reject);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Valida JID do chat usando utilitário
|
|
145
|
+
if (!((_g = message.chat) === null || _g === void 0 ? void 0 : _g.id) || !(0, JIDPatterns_1.isValidJID)(message.chat.id)) {
|
|
146
|
+
const error = new Error(`JID de chat inválido: ${(_h = message.chat) === null || _h === void 0 ? void 0 : _h.id}. O mapeamento LID/PN pode não estar disponível ainda.`);
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
// Envia a mensagem
|
|
150
|
+
return this.sendMessageInternal(message);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Envia a mensagem internamente (JID já deve estar normalizado)
|
|
154
|
+
*/
|
|
155
|
+
async sendMessageInternal(message) {
|
|
156
|
+
try {
|
|
157
|
+
const waMsg = (await new ConvertToWAMessage_1.default(this.bot, message).refactory()).waMessage;
|
|
158
|
+
const sent = await this.bot.sock.sendMessage(message.chat.id, waMsg);
|
|
159
|
+
if (sent && sent.key && sent.key.id) {
|
|
160
|
+
message.id = sent.key.id;
|
|
161
|
+
}
|
|
162
|
+
return message;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
this.errorHandler.handle(error, 'MessageOperations.sendMessageInternal');
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Lê uma mensagem (marca como lida localmente)
|
|
171
|
+
*/
|
|
172
|
+
async readMessage(message) {
|
|
173
|
+
var _a;
|
|
174
|
+
// Validações básicas
|
|
175
|
+
if (!((_a = message.chat) === null || _a === void 0 ? void 0 : _a.id) || !message.id) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Valida se socket está disponível (mas não exige conexão completa para leitura)
|
|
179
|
+
if (!this.bot.sock) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// REMOVIDO: await this.bot.getChat(message.chat) - estava bloqueando!
|
|
183
|
+
// Não precisa buscar chat do cache - já temos message.chat.type
|
|
184
|
+
// Apenas marca como lido localmente, sem enviar ACK
|
|
185
|
+
const chatType = (0, baileys_1.isJidGroup)(message.chat.id) ? ChatType_1.default.Group : ChatType_1.default.PV;
|
|
186
|
+
if (chatType === ChatType_1.default.Group || chatType === ChatType_1.default.PV) {
|
|
187
|
+
// Marcar mensagem como lida apenas no cache local
|
|
188
|
+
this.bot.addMessageCache(message.id || '');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Remove uma mensagem (marca como removida para todos)
|
|
193
|
+
*/
|
|
194
|
+
async removeMessage(message) {
|
|
195
|
+
var _a;
|
|
196
|
+
if (!message.id || !((_a = message.chat) === null || _a === void 0 ? void 0 : _a.id))
|
|
197
|
+
return;
|
|
198
|
+
await this.bot.sock.sendMessage(message.chat.id, {
|
|
199
|
+
delete: {
|
|
200
|
+
remoteJid: message.chat.id,
|
|
201
|
+
id: message.id,
|
|
202
|
+
fromMe: message.fromMe || message.user.id === this.bot.id,
|
|
203
|
+
participant: (0, baileys_1.isJidGroup)(message.chat.id)
|
|
204
|
+
? message.user.id || this.bot.id || undefined
|
|
205
|
+
: undefined,
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Deleta uma mensagem (remove do histórico)
|
|
211
|
+
*/
|
|
212
|
+
async deleteMessage(message) {
|
|
213
|
+
var _a;
|
|
214
|
+
if (!message.id || !((_a = message.chat) === null || _a === void 0 ? void 0 : _a.id))
|
|
215
|
+
return;
|
|
216
|
+
await this.bot.sock.sendMessage(message.chat.id, {
|
|
217
|
+
delete: {
|
|
218
|
+
remoteJid: message.chat.id,
|
|
219
|
+
id: message.id,
|
|
220
|
+
fromMe: message.fromMe || message.user.id === this.bot.id,
|
|
221
|
+
participant: (0, baileys_1.isJidGroup)(message.chat.id)
|
|
222
|
+
? message.user.id || this.bot.id || undefined
|
|
223
|
+
: undefined,
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Edita o texto de uma mensagem enviada
|
|
229
|
+
*/
|
|
230
|
+
async editMessage(message) {
|
|
231
|
+
var _a;
|
|
232
|
+
// Validações
|
|
233
|
+
Validation_1.Validation.ensureConnected(this.bot.status, this.bot.sock);
|
|
234
|
+
if (!message.id || !((_a = message.chat) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
235
|
+
throw new Error('Message deve ter id e chat.id válidos para edição');
|
|
236
|
+
}
|
|
237
|
+
Validation_1.Validation.ensureValidJID(message.chat.id, 'message.chat.id');
|
|
238
|
+
await this.bot.sock.sendMessage(message.chat.id, {
|
|
239
|
+
edit: {
|
|
240
|
+
remoteJid: message.chat.id,
|
|
241
|
+
id: message.id,
|
|
242
|
+
fromMe: message.fromMe || message.user.id === this.bot.id,
|
|
243
|
+
participant: (0, baileys_1.isJidGroup)(message.chat.id)
|
|
244
|
+
? message.user.id || this.bot.id || undefined
|
|
245
|
+
: undefined,
|
|
246
|
+
},
|
|
247
|
+
text: message.text,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Adiciona uma reação a uma mensagem
|
|
252
|
+
*/
|
|
253
|
+
async addReaction(message) {
|
|
254
|
+
var _a;
|
|
255
|
+
if (!message.id || !((_a = message.chat) === null || _a === void 0 ? void 0 : _a.id) || !message.reaction)
|
|
256
|
+
return;
|
|
257
|
+
await this.bot.sock.sendMessage(message.chat.id, {
|
|
258
|
+
react: {
|
|
259
|
+
text: message.reaction,
|
|
260
|
+
key: {
|
|
261
|
+
id: message.id,
|
|
262
|
+
remoteJid: message.chat.id,
|
|
263
|
+
fromMe: message.fromMe || message.user.id === this.bot.id,
|
|
264
|
+
participant: (0, baileys_1.isJidGroup)(message.chat.id)
|
|
265
|
+
? message.user.id || this.bot.id || undefined
|
|
266
|
+
: undefined,
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Remove uma reação de uma mensagem
|
|
273
|
+
*/
|
|
274
|
+
async removeReaction(message) {
|
|
275
|
+
var _a, _b;
|
|
276
|
+
// Validações
|
|
277
|
+
Validation_1.Validation.ensureConnected(this.bot.status, this.bot.sock);
|
|
278
|
+
if (!((_a = message.chat) === null || _a === void 0 ? void 0 : _a.id) || !message.id) {
|
|
279
|
+
throw new Error('ReactionMessage deve ter chat.id e id válidos');
|
|
280
|
+
}
|
|
281
|
+
Validation_1.Validation.ensureValidJID(message.chat.id, 'message.chat.id');
|
|
282
|
+
if (!message.id || !((_b = message.chat) === null || _b === void 0 ? void 0 : _b.id))
|
|
283
|
+
return;
|
|
284
|
+
await this.bot.sock.sendMessage(message.chat.id, {
|
|
285
|
+
react: {
|
|
286
|
+
text: '',
|
|
287
|
+
key: {
|
|
288
|
+
id: message.id,
|
|
289
|
+
remoteJid: message.chat.id,
|
|
290
|
+
fromMe: message.fromMe || message.user.id === this.bot.id,
|
|
291
|
+
participant: (0, baileys_1.isJidGroup)(message.chat.id)
|
|
292
|
+
? message.user.id || this.bot.id || undefined
|
|
293
|
+
: undefined,
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Baixa a stream de mídia de uma mensagem
|
|
300
|
+
*/
|
|
301
|
+
async downloadStreamMessage(media) {
|
|
302
|
+
var _a;
|
|
303
|
+
// Validações
|
|
304
|
+
Validation_1.Validation.ensureConnected(this.bot.status, this.bot.sock);
|
|
305
|
+
Validation_1.Validation.ensureValidJID((_a = media.chat) === null || _a === void 0 ? void 0 : _a.id, 'media.chat.id');
|
|
306
|
+
Validation_1.Validation.ensureNotNull(media.id, 'media.id');
|
|
307
|
+
const msg = await this.bot.store.loadMessage(media.chat.id, media.id);
|
|
308
|
+
if (!msg)
|
|
309
|
+
return Buffer.from("");
|
|
310
|
+
// downloadMediaMessage espera (msg, type, options?)
|
|
311
|
+
return Buffer.from(await (0, baileys_1.downloadMediaMessage)(msg, "buffer", {
|
|
312
|
+
// opções extras se necessário
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Obtém uma mensagem de enquete
|
|
317
|
+
*/
|
|
318
|
+
async getPollMessage(pollMessageId) {
|
|
319
|
+
const pollMessage = await this.bot.auth.get(`polls-${pollMessageId}`);
|
|
320
|
+
if (!pollMessage || !messages_1.PollMessage.isValid(pollMessage))
|
|
321
|
+
return messages_1.PollMessage.fromJSON({ id: pollMessageId });
|
|
322
|
+
if (pollMessage.type == Message_1.MessageType.PollUpdate) {
|
|
323
|
+
return messages_1.PollUpdateMessage.fromJSON(pollMessage);
|
|
324
|
+
}
|
|
325
|
+
return messages_1.PollMessage.fromJSON(pollMessage);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Salva uma mensagem de enquete
|
|
329
|
+
*/
|
|
330
|
+
async savePollMessage(pollMessage) {
|
|
331
|
+
await this.bot.auth.set(`polls-${pollMessage.id}`, pollMessage.toJSON());
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
exports.MessageOperations = MessageOperations;
|
|
335
|
+
//# sourceMappingURL=MessageOperations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageOperations.js","sourceRoot":"","sources":["../../../src/wa/operations/MessageOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Contact } from '@whiskeysockets/baileys';
|
|
2
|
+
import User from '../../modules/user/User';
|
|
3
|
+
import WhatsAppBot from '../WhatsAppBot';
|
|
4
|
+
/**
|
|
5
|
+
* Operações relacionadas a usuários
|
|
6
|
+
*/
|
|
7
|
+
export declare class UserOperations {
|
|
8
|
+
private bot;
|
|
9
|
+
constructor(bot: WhatsAppBot);
|
|
10
|
+
/**
|
|
11
|
+
* Obtém o nome de um usuário
|
|
12
|
+
*/
|
|
13
|
+
getUserName(user: User): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Define o nome de um usuário (apenas para o próprio bot)
|
|
16
|
+
*/
|
|
17
|
+
setUserName(user: User, name: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Obtém a descrição de um usuário
|
|
20
|
+
*/
|
|
21
|
+
getUserDescription(user: User): Promise<string>;
|
|
22
|
+
/**
|
|
23
|
+
* Define a descrição de um usuário (apenas para o próprio bot)
|
|
24
|
+
*/
|
|
25
|
+
setUserDescription(user: User, description: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Obtém a foto de perfil de um usuário
|
|
28
|
+
*/
|
|
29
|
+
getUserProfile(user: User, lowQuality?: boolean): Promise<Buffer>;
|
|
30
|
+
/**
|
|
31
|
+
* Obtém a URL da foto de perfil de um usuário
|
|
32
|
+
*/
|
|
33
|
+
getUserProfileUrl(user: User, lowQuality?: boolean): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Define a foto de perfil de um usuário (apenas para o próprio bot)
|
|
36
|
+
*/
|
|
37
|
+
setUserProfile(user: User, image: Buffer): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Obtém um usuário
|
|
40
|
+
*/
|
|
41
|
+
getUser(user: User): Promise<User | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Obtém lista de IDs de usuários
|
|
44
|
+
*/
|
|
45
|
+
getUsers(): Promise<string[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Atualiza informações de um usuário
|
|
48
|
+
*/
|
|
49
|
+
updateUser(user: {
|
|
50
|
+
id: string;
|
|
51
|
+
} & Partial<User>): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Define múltiplos usuários
|
|
54
|
+
*/
|
|
55
|
+
setUsers(users: User[]): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Remove um usuário
|
|
58
|
+
*/
|
|
59
|
+
removeUser(user: User): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Bloqueia um usuário
|
|
62
|
+
*/
|
|
63
|
+
blockUser(user: User): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Desbloqueia um usuário
|
|
66
|
+
*/
|
|
67
|
+
unblockUser(user: User): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Lê o usuário e atualiza suas informações
|
|
70
|
+
*/
|
|
71
|
+
readUser(user: Partial<User>, metadata?: Partial<Contact>): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Obtém o nome do bot
|
|
74
|
+
*/
|
|
75
|
+
getBotName(): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* Define o nome do bot
|
|
78
|
+
*/
|
|
79
|
+
setBotName(name: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Obtém a descrição do bot
|
|
82
|
+
*/
|
|
83
|
+
getBotDescription(): Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* Define a descrição do bot
|
|
86
|
+
*/
|
|
87
|
+
setBotDescription(description: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Obtém a foto de perfil do bot
|
|
90
|
+
*/
|
|
91
|
+
getBotProfile(lowQuality?: boolean): Promise<Buffer>;
|
|
92
|
+
/**
|
|
93
|
+
* Obtém a URL da foto de perfil do bot
|
|
94
|
+
*/
|
|
95
|
+
getBotProfileUrl(lowQuality?: boolean): Promise<string>;
|
|
96
|
+
/**
|
|
97
|
+
* Define a foto de perfil do bot
|
|
98
|
+
*/
|
|
99
|
+
setBotProfile(image: Buffer): Promise<void>;
|
|
100
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UserOperations = void 0;
|
|
7
|
+
const User_1 = __importDefault(require("../../modules/user/User"));
|
|
8
|
+
const Generic_1 = require("../../utils/Generic");
|
|
9
|
+
const ID_1 = require("../ID");
|
|
10
|
+
const JIDPatterns_1 = require("../constants/JIDPatterns");
|
|
11
|
+
/**
|
|
12
|
+
* Operações relacionadas a usuários
|
|
13
|
+
*/
|
|
14
|
+
class UserOperations {
|
|
15
|
+
constructor(bot) {
|
|
16
|
+
this.bot = bot;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Obtém o nome de um usuário
|
|
20
|
+
*/
|
|
21
|
+
async getUserName(user) {
|
|
22
|
+
var _a;
|
|
23
|
+
return ((_a = (await this.bot.getUser(user))) === null || _a === void 0 ? void 0 : _a.name) || '';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Define o nome de um usuário (apenas para o próprio bot)
|
|
27
|
+
*/
|
|
28
|
+
async setUserName(user, name) {
|
|
29
|
+
if (user.id !== this.bot.id)
|
|
30
|
+
return;
|
|
31
|
+
await this.bot.setBotName(name);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Obtém a descrição de um usuário
|
|
35
|
+
*/
|
|
36
|
+
async getUserDescription(user) {
|
|
37
|
+
// O método fetchStatus não existe na API pública do Baileys
|
|
38
|
+
throw new Error('getUserDescription não implementado: fetchStatus não disponível na API do Baileys');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Define a descrição de um usuário (apenas para o próprio bot)
|
|
42
|
+
*/
|
|
43
|
+
async setUserDescription(user, description) {
|
|
44
|
+
if (user.id !== this.bot.id)
|
|
45
|
+
return;
|
|
46
|
+
await this.bot.setBotDescription(description);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Obtém a foto de perfil de um usuário
|
|
50
|
+
*/
|
|
51
|
+
async getUserProfile(user, lowQuality) {
|
|
52
|
+
const uri = await this.getUserProfileUrl(user, lowQuality);
|
|
53
|
+
return await (0, Generic_1.getImageURL)(uri);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Obtém a URL da foto de perfil de um usuário
|
|
57
|
+
*/
|
|
58
|
+
async getUserProfileUrl(user, lowQuality) {
|
|
59
|
+
try {
|
|
60
|
+
return ((await this.bot.sock.profilePictureUrl(user.id, lowQuality ? 'preview' : 'image')) || '');
|
|
61
|
+
}
|
|
62
|
+
catch (_a) {
|
|
63
|
+
return '';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Define a foto de perfil de um usuário (apenas para o próprio bot)
|
|
68
|
+
*/
|
|
69
|
+
async setUserProfile(user, image) {
|
|
70
|
+
if (user.id !== this.bot.id)
|
|
71
|
+
return;
|
|
72
|
+
await this.bot.setBotProfile(image);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Obtém um usuário
|
|
76
|
+
*/
|
|
77
|
+
async getUser(user) {
|
|
78
|
+
const userData = await this.bot.auth.get(`users-${user.id}`);
|
|
79
|
+
if (!userData)
|
|
80
|
+
return null;
|
|
81
|
+
return User_1.default.fromJSON(userData);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Obtém lista de IDs de usuários
|
|
85
|
+
*/
|
|
86
|
+
async getUsers() {
|
|
87
|
+
return (await this.bot.auth.listAll('users-')).map((id) => id.replace('users-', ''));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Atualiza informações de um usuário
|
|
91
|
+
*/
|
|
92
|
+
async updateUser(user) {
|
|
93
|
+
const userData = await this.bot.getUser(new User_1.default(user.id));
|
|
94
|
+
if (userData != null) {
|
|
95
|
+
user = Object.keys(user).reduce((data, key) => {
|
|
96
|
+
if (user[key] == undefined || user[key] == null)
|
|
97
|
+
return data;
|
|
98
|
+
if ((0, Generic_1.verifyIsEquals)(user[key], userData[key]))
|
|
99
|
+
return data;
|
|
100
|
+
return { ...data, [key]: user[key] };
|
|
101
|
+
}, { id: user.id });
|
|
102
|
+
if (Object.keys(user).length < 2)
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const newUser = User_1.default.fromJSON({ ...(userData || {}), ...user });
|
|
106
|
+
newUser.phoneNumber = newUser.phoneNumber || (0, ID_1.getPhoneNumber)(user.id);
|
|
107
|
+
await this.bot.auth.set(`users-${user.id}`, newUser.toJSON());
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Define múltiplos usuários
|
|
111
|
+
*/
|
|
112
|
+
async setUsers(users) {
|
|
113
|
+
await Promise.all(users.map(async (user) => await this.updateUser(user)));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Remove um usuário
|
|
117
|
+
*/
|
|
118
|
+
async removeUser(user) {
|
|
119
|
+
await this.bot.auth.remove(`users-${user.id}`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Bloqueia um usuário
|
|
123
|
+
*/
|
|
124
|
+
async blockUser(user) {
|
|
125
|
+
if (user.id === this.bot.id)
|
|
126
|
+
return;
|
|
127
|
+
await this.bot.sock.updateBlockStatus(user.id, 'block');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Desbloqueia um usuário
|
|
131
|
+
*/
|
|
132
|
+
async unblockUser(user) {
|
|
133
|
+
if (user.id === this.bot.id)
|
|
134
|
+
return;
|
|
135
|
+
await this.bot.sock.updateBlockStatus(user.id, 'unblock');
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Lê o usuário e atualiza suas informações
|
|
139
|
+
*/
|
|
140
|
+
async readUser(user, metadata) {
|
|
141
|
+
try {
|
|
142
|
+
if (!user.id || !user.id.includes(JIDPatterns_1.JID_PATTERNS.USER))
|
|
143
|
+
return;
|
|
144
|
+
// Valida se socket está disponível (mas não exige conexão completa para leitura)
|
|
145
|
+
if (!this.bot.sock) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (metadata === null || metadata === void 0 ? void 0 : metadata.imgUrl) {
|
|
149
|
+
user.profileUrl = await this.getUserProfileUrl(new User_1.default(user.id));
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const userData = await this.getUser(new User_1.default(user.id || ''));
|
|
153
|
+
if (userData == null || !userData.profileUrl) {
|
|
154
|
+
user.profileUrl = await this.getUserProfileUrl(new User_1.default(user.id));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if ((metadata === null || metadata === void 0 ? void 0 : metadata.notify) || (metadata === null || metadata === void 0 ? void 0 : metadata.verifiedName)) {
|
|
158
|
+
user.name = (metadata === null || metadata === void 0 ? void 0 : metadata.notify) || (metadata === null || metadata === void 0 ? void 0 : metadata.verifiedName);
|
|
159
|
+
}
|
|
160
|
+
if (metadata === null || metadata === void 0 ? void 0 : metadata.name) {
|
|
161
|
+
user.savedName = metadata.name;
|
|
162
|
+
}
|
|
163
|
+
user.name = user.name || user.savedName;
|
|
164
|
+
await this.updateUser({ id: user.id || '', ...user });
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
this.bot.emit('error', err);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Obtém o nome do bot
|
|
172
|
+
*/
|
|
173
|
+
async getBotName() {
|
|
174
|
+
var _a;
|
|
175
|
+
return ((_a = (await this.getUser(new User_1.default(this.bot.id)))) === null || _a === void 0 ? void 0 : _a.name) || '';
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Define o nome do bot
|
|
179
|
+
*/
|
|
180
|
+
async setBotName(name) {
|
|
181
|
+
await this.bot.sock.updateProfileName(name);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Obtém a descrição do bot
|
|
185
|
+
*/
|
|
186
|
+
async getBotDescription() {
|
|
187
|
+
// O método fetchStatus não existe na API pública do Baileys
|
|
188
|
+
throw new Error('getBotDescription não implementado: fetchStatus não disponível na API do Baileys');
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Define a descrição do bot
|
|
192
|
+
*/
|
|
193
|
+
async setBotDescription(description) {
|
|
194
|
+
await this.bot.sock.updateProfileStatus(description);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Obtém a foto de perfil do bot
|
|
198
|
+
*/
|
|
199
|
+
async getBotProfile(lowQuality) {
|
|
200
|
+
return await this.getUserProfile(new User_1.default(this.bot.id), lowQuality);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Obtém a URL da foto de perfil do bot
|
|
204
|
+
*/
|
|
205
|
+
async getBotProfileUrl(lowQuality) {
|
|
206
|
+
return (await this.getUserProfileUrl(new User_1.default(this.bot.id), lowQuality)) || '';
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Define a foto de perfil do bot
|
|
210
|
+
*/
|
|
211
|
+
async setBotProfile(image) {
|
|
212
|
+
await this.bot.sock.updateProfilePicture(this.bot.id, image);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.UserOperations = UserOperations;
|
|
216
|
+
//# sourceMappingURL=UserOperations.js.map
|