trompot 1.5.0 → 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/bot/BotEvents.d.ts +2 -0
- package/lib/bot/BotEvents.js.map +1 -1
- 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 +220 -426
- 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 -648
- 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,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CallEventHandler = void 0;
|
|
37
|
+
const Call_1 = __importStar(require("../../models/Call"));
|
|
38
|
+
const ID_1 = require("../ID");
|
|
39
|
+
const JIDPatterns_1 = require("../constants/JIDPatterns");
|
|
40
|
+
class CallEventHandler {
|
|
41
|
+
constructor(bot, logger) {
|
|
42
|
+
this.bot = bot;
|
|
43
|
+
this.logger = logger;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Converte um JID LID para um JID válido
|
|
47
|
+
* Tenta múltiplas vezes com delay, pois o mapeamento pode não estar disponível imediatamente
|
|
48
|
+
*/
|
|
49
|
+
async normalizeJID(jid, retries = 2) {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
if (!jid || (0, JIDPatterns_1.isValidJID)(jid)) {
|
|
52
|
+
return jid;
|
|
53
|
+
}
|
|
54
|
+
// Verifica se é um JID LID (termina com @lid)
|
|
55
|
+
if (jid.endsWith('@lid')) {
|
|
56
|
+
const lid = jid.replace('@lid', '');
|
|
57
|
+
// Tenta obter o PN com retries
|
|
58
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
59
|
+
try {
|
|
60
|
+
// Usa o LIDMappingService do bot (que tem cache e retry interno)
|
|
61
|
+
if ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.signalRepository) === null || _b === void 0 ? void 0 : _b.lidMapping) {
|
|
62
|
+
const pn = await this.bot.sock.signalRepository.lidMapping.getPNForLID(lid);
|
|
63
|
+
if (pn) {
|
|
64
|
+
// Converte PN para JID válido
|
|
65
|
+
return (0, ID_1.getID)(pn);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Se não encontrou e ainda tem tentativas, aguarda um pouco
|
|
69
|
+
if (attempt < retries) {
|
|
70
|
+
await new Promise(resolve => setTimeout(resolve, 100 * (attempt + 1)));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.logger.debug(`Tentativa ${attempt + 1} de normalização LID falhou: ${error}`);
|
|
75
|
+
if (attempt < retries) {
|
|
76
|
+
await new Promise(resolve => setTimeout(resolve, 100 * (attempt + 1)));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Se não conseguir converter após todas as tentativas, retorna o JID original
|
|
82
|
+
// Isso pode acontecer se o mapeamento ainda não estiver disponível
|
|
83
|
+
return jid;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Configura handler para eventos de chamadas
|
|
87
|
+
*/
|
|
88
|
+
setup(socket) {
|
|
89
|
+
socket.ev.on('call', async (events) => {
|
|
90
|
+
for (const event of events || []) {
|
|
91
|
+
try {
|
|
92
|
+
// Guarda o JID original do evento (pode ser LID)
|
|
93
|
+
const originalChatJID = event.chatId || event.groupJid || event.from || '';
|
|
94
|
+
// Normaliza JID LID para JID válido (para o Call que será emitido)
|
|
95
|
+
let normalizedChat = await this.normalizeJID(originalChatJID);
|
|
96
|
+
// Normaliza também o JID do usuário (event.from)
|
|
97
|
+
let userJID = event.from || '';
|
|
98
|
+
if (userJID) {
|
|
99
|
+
userJID = await this.normalizeJID(userJID);
|
|
100
|
+
}
|
|
101
|
+
let status;
|
|
102
|
+
switch (event.status) {
|
|
103
|
+
case 'offer':
|
|
104
|
+
status = Call_1.CallStatus.Offer;
|
|
105
|
+
break;
|
|
106
|
+
case 'ringing':
|
|
107
|
+
status = Call_1.CallStatus.Ringing;
|
|
108
|
+
break;
|
|
109
|
+
case 'reject':
|
|
110
|
+
status = Call_1.CallStatus.Reject;
|
|
111
|
+
break;
|
|
112
|
+
case 'accept':
|
|
113
|
+
status = Call_1.CallStatus.Accept;
|
|
114
|
+
break;
|
|
115
|
+
case 'timeout':
|
|
116
|
+
status = Call_1.CallStatus.Timeout;
|
|
117
|
+
break;
|
|
118
|
+
default:
|
|
119
|
+
status = Call_1.CallStatus.Ringing;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
// Rejeita automaticamente se autoRejectCalls estiver ativado e for uma oferta de chamada
|
|
123
|
+
// IMPORTANTE: Usa o JID original do evento (pode ser LID) - o Baileys aceita LID
|
|
124
|
+
const autoRejectEnabled = this.bot.config.autoRejectCalls === true;
|
|
125
|
+
const isOfferStatus = status === Call_1.CallStatus.Offer;
|
|
126
|
+
const shouldAutoReject = autoRejectEnabled && isOfferStatus;
|
|
127
|
+
if (shouldAutoReject) {
|
|
128
|
+
try {
|
|
129
|
+
// Usa o JID original do evento diretamente no rejectCall do Baileys
|
|
130
|
+
await this.bot.sock.rejectCall(event.id, originalChatJID);
|
|
131
|
+
this.logger.info(`📞 Chamada ${event.id} rejeitada automaticamente (JID: ${originalChatJID})`);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
this.logger.error(`Erro ao rejeitar chamada automaticamente (ID: ${event.id}, JID: ${originalChatJID})`, error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Cria o Call com JID normalizado para uso posterior (envio de mensagens, etc)
|
|
138
|
+
const call = new Call_1.default(event.id, normalizedChat, userJID, status, {
|
|
139
|
+
date: event.date || new Date(),
|
|
140
|
+
isVideo: !!event.isVideo,
|
|
141
|
+
offline: !!event.offline,
|
|
142
|
+
latencyMs: event.latencyMs || 1,
|
|
143
|
+
});
|
|
144
|
+
this.bot.emit('call', call);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
this.logger.error('Erro ao processar call event', error);
|
|
148
|
+
this.bot.emit('error', error);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.CallEventHandler = CallEventHandler;
|
|
155
|
+
//# sourceMappingURL=CallEventHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/CallEventHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WASocket } from '@whiskeysockets/baileys';
|
|
2
|
+
import { ILoggerService } from '../interfaces/ILoggerService';
|
|
3
|
+
import WhatsAppBot from '../WhatsAppBot';
|
|
4
|
+
export declare class ChatEventHandler {
|
|
5
|
+
private bot;
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(bot: WhatsAppBot, logger: ILoggerService);
|
|
8
|
+
/**
|
|
9
|
+
* Configura handlers para eventos de chats
|
|
10
|
+
*/
|
|
11
|
+
setup(socket: WASocket): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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.ChatEventHandler = void 0;
|
|
7
|
+
const Chat_1 = __importDefault(require("../../modules/chat/Chat"));
|
|
8
|
+
class ChatEventHandler {
|
|
9
|
+
constructor(bot, logger) {
|
|
10
|
+
this.bot = bot;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Configura handlers para eventos de chats
|
|
15
|
+
*/
|
|
16
|
+
setup(socket) {
|
|
17
|
+
// chats.delete - Deleção de chats
|
|
18
|
+
socket.ev.on('chats.delete', async (deletions) => {
|
|
19
|
+
for (const id of deletions) {
|
|
20
|
+
try {
|
|
21
|
+
await this.bot.removeChat(new Chat_1.default(id));
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
this.logger.error('Erro ao processar chats.delete', error);
|
|
25
|
+
this.bot.emit('error', error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// chats.upsert - Novos chats
|
|
30
|
+
socket.ev.on('chats.upsert', async (chats) => {
|
|
31
|
+
for (const chat of chats) {
|
|
32
|
+
try {
|
|
33
|
+
if (!chat.id)
|
|
34
|
+
continue;
|
|
35
|
+
await this.bot.updateChat({
|
|
36
|
+
id: chat.id,
|
|
37
|
+
name: chat.name || undefined,
|
|
38
|
+
timestamp: chat.conversationTimestamp
|
|
39
|
+
? Number(chat.conversationTimestamp) * 1000
|
|
40
|
+
: undefined,
|
|
41
|
+
unreadCount: chat.unreadCount || 0,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
this.logger.error('Erro ao processar chats.upsert', error);
|
|
46
|
+
this.bot.emit('error', error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
// chats.update - Atualizações de chats
|
|
51
|
+
socket.ev.on('chats.update', async (updates) => {
|
|
52
|
+
for (const update of updates) {
|
|
53
|
+
try {
|
|
54
|
+
if (!update.id)
|
|
55
|
+
continue;
|
|
56
|
+
await this.bot.updateChat({
|
|
57
|
+
id: update.id,
|
|
58
|
+
name: update.name || undefined,
|
|
59
|
+
timestamp: update.conversationTimestamp
|
|
60
|
+
? Number(update.conversationTimestamp) * 1000
|
|
61
|
+
: undefined,
|
|
62
|
+
unreadCount: update.unreadCount || undefined,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
this.logger.error('Erro ao processar chats.update', error);
|
|
67
|
+
this.bot.emit('error', error);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.ChatEventHandler = ChatEventHandler;
|
|
74
|
+
//# sourceMappingURL=ChatEventHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/ChatEventHandler.ts"],"names":[],"mappings":";;;;;;AAEA,mEAA2C;AAG3C,MAAa,gBAAgB;IAI3B,YAAY,GAAgB,EAAE,MAAsB;QAClD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAgB;QACpB,kCAAkC;QAClC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC/C,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,cAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;oBAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,SAAS;oBACvB,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;wBACxB,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;wBAC5B,SAAS,EAAE,IAAI,CAAC,qBAAqB;4BACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,IAAI;4BAC3C,CAAC,CAAC,SAAS;wBACb,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;qBACnC,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;oBAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,EAAE;wBAAE,SAAS;oBACzB,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;wBACxB,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;wBAC9B,SAAS,EAAE,MAAM,CAAC,qBAAqB;4BACrC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI;4BAC7C,CAAC,CAAC,SAAS;wBACb,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;qBAC7C,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;oBAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAjED,4CAiEC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { WASocket, ConnectionState } from '@whiskeysockets/baileys';
|
|
2
|
+
import { ILoggerService } from '../interfaces/ILoggerService';
|
|
3
|
+
import { IStateManager } from '../interfaces/IStateManager';
|
|
4
|
+
import { ISessionManager } from '../interfaces/ISessionManager';
|
|
5
|
+
import WhatsAppBot from '../WhatsAppBot';
|
|
6
|
+
export declare class ConnectionEventHandler {
|
|
7
|
+
private bot;
|
|
8
|
+
private logger;
|
|
9
|
+
private stateManager;
|
|
10
|
+
private sessionManager;
|
|
11
|
+
constructor(bot: WhatsAppBot, logger: ILoggerService, stateManager: IStateManager, sessionManager: ISessionManager);
|
|
12
|
+
/**
|
|
13
|
+
* Configura handlers para eventos de conexão
|
|
14
|
+
* NOTA: Este handler NÃO escuta connection.update diretamente para evitar duplicação
|
|
15
|
+
* O ConfigWAEvents já escuta connection.update e notifica connectionListeners
|
|
16
|
+
* Este handler é chamado pelo EventManager quando necessário
|
|
17
|
+
*/
|
|
18
|
+
setup(socket: WASocket): void;
|
|
19
|
+
/**
|
|
20
|
+
* Exposto para que ConfigWAEvents delegue o tratamento de 'close'
|
|
21
|
+
*/
|
|
22
|
+
onConnectionClose(update: ConnectionState): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Trata atualizações de conexão
|
|
25
|
+
* NOTA: Os connectionListeners já são notificados pelo ConfigWAEvents
|
|
26
|
+
* Este método apenas gerencia o estado adicional
|
|
27
|
+
*/
|
|
28
|
+
private handleConnectionUpdate;
|
|
29
|
+
/**
|
|
30
|
+
* Trata quando a conexão é aberta
|
|
31
|
+
*/
|
|
32
|
+
private handleOpen;
|
|
33
|
+
/**
|
|
34
|
+
* Trata quando a conexão é fechada
|
|
35
|
+
*/
|
|
36
|
+
private handleClose;
|
|
37
|
+
/**
|
|
38
|
+
* Trata atualizações de credenciais
|
|
39
|
+
* Atualiza informações do bot quando credenciais são atualizadas
|
|
40
|
+
* Isso garante que o número seja obtido mesmo se sock.user.id não estiver disponível imediatamente
|
|
41
|
+
*/
|
|
42
|
+
private handleCredsUpdate;
|
|
43
|
+
}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConnectionEventHandler = void 0;
|
|
4
|
+
const ErrorCodes_1 = require("../constants/ErrorCodes");
|
|
5
|
+
class ConnectionEventHandler {
|
|
6
|
+
constructor(bot, logger, stateManager, sessionManager) {
|
|
7
|
+
this.bot = bot;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
this.stateManager = stateManager;
|
|
10
|
+
this.sessionManager = sessionManager;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Configura handlers para eventos de conexão
|
|
14
|
+
* NOTA: Este handler NÃO escuta connection.update diretamente para evitar duplicação
|
|
15
|
+
* O ConfigWAEvents já escuta connection.update e notifica connectionListeners
|
|
16
|
+
* Este handler é chamado pelo EventManager quando necessário
|
|
17
|
+
*/
|
|
18
|
+
setup(socket) {
|
|
19
|
+
// REMOVIDO: Listener duplicado de connection.update
|
|
20
|
+
// O ConfigWAEvents já escuta este evento e notifica connectionListeners
|
|
21
|
+
// Para evitar processamento duplicado, este handler não escuta diretamente
|
|
22
|
+
// A lógica adicional será chamada através do EventManager se necessário
|
|
23
|
+
// Handler para creds.update (único responsável)
|
|
24
|
+
// Handler para creds.update
|
|
25
|
+
socket.ev.on('creds.update', async (creds) => {
|
|
26
|
+
try {
|
|
27
|
+
await this.handleCredsUpdate(creds);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
this.logger.error('Erro ao processar creds.update', error);
|
|
31
|
+
this.bot.emit('error', error);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Exposto para que ConfigWAEvents delegue o tratamento de 'close'
|
|
37
|
+
*/
|
|
38
|
+
async onConnectionClose(update) {
|
|
39
|
+
await this.handleClose(update);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Trata atualizações de conexão
|
|
43
|
+
* NOTA: Os connectionListeners já são notificados pelo ConfigWAEvents
|
|
44
|
+
* Este método apenas gerencia o estado adicional
|
|
45
|
+
*/
|
|
46
|
+
async handleConnectionUpdate(update) {
|
|
47
|
+
// Atualiza estado
|
|
48
|
+
this.stateManager.updateConnectionState(update);
|
|
49
|
+
this.stateManager.setLastConnectionUpdateDate(Date.now());
|
|
50
|
+
// NOTA: Os eventos 'connecting' e 'qr' já são emitidos pelo ConfigWAEvents
|
|
51
|
+
// Não duplicar aqui para evitar logs duplicados
|
|
52
|
+
if (update.connection === 'connecting') {
|
|
53
|
+
this.stateManager.setStatus(require('../../bot/BotStatus').BotStatus.Offline);
|
|
54
|
+
// this.bot.emit('connecting', { action: 'connecting' }); // Já emitido pelo ConfigWAEvents
|
|
55
|
+
}
|
|
56
|
+
if (update.connection === 'open') {
|
|
57
|
+
await this.handleOpen(update);
|
|
58
|
+
}
|
|
59
|
+
if (update.connection === 'close') {
|
|
60
|
+
await this.handleClose(update);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Trata quando a conexão é aberta
|
|
65
|
+
*/
|
|
66
|
+
async handleOpen(update) {
|
|
67
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
68
|
+
try {
|
|
69
|
+
const uptime = Date.now();
|
|
70
|
+
this.stateManager.setStatus(require('../../bot/BotStatus').BotStatus.Online);
|
|
71
|
+
this.stateManager.setLastDisconnectError(undefined);
|
|
72
|
+
this.stateManager.setConnectionStatus('connected');
|
|
73
|
+
// Atualiza informações do bot
|
|
74
|
+
// Tenta obter ID de múltiplas fontes (sock.user.id pode não estar disponível imediatamente)
|
|
75
|
+
try {
|
|
76
|
+
const { fixID, getPhoneNumber } = require('../ID');
|
|
77
|
+
// 1. Tenta sock.user.id
|
|
78
|
+
// 2. Tenta creds.me.id (das credenciais, mais confiável)
|
|
79
|
+
let rawId = ((_b = (_a = this.bot.sock) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id) || '';
|
|
80
|
+
// Se não encontrou, tenta das credenciais
|
|
81
|
+
if (!rawId && ((_f = (_e = (_d = (_c = this.bot.sock) === null || _c === void 0 ? void 0 : _c.authState) === null || _d === void 0 ? void 0 : _d.creds) === null || _e === void 0 ? void 0 : _e.me) === null || _f === void 0 ? void 0 : _f.id)) {
|
|
82
|
+
rawId = this.bot.sock.authState.creds.me.id;
|
|
83
|
+
}
|
|
84
|
+
if (rawId) {
|
|
85
|
+
const id = fixID(rawId);
|
|
86
|
+
this.stateManager.setId(id);
|
|
87
|
+
// Obtém o número de telefone do ID original (antes do fixID) ou do ID fixado
|
|
88
|
+
// Tenta primeiro do ID original, depois do fixado
|
|
89
|
+
const phoneNumber = getPhoneNumber(rawId) || getPhoneNumber(id);
|
|
90
|
+
this.stateManager.setPhoneNumber(phoneNumber);
|
|
91
|
+
this.stateManager.setName(((_h = (_g = this.bot.sock) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.name) ||
|
|
92
|
+
((_k = (_j = this.bot.sock) === null || _j === void 0 ? void 0 : _j.user) === null || _k === void 0 ? void 0 : _k.notify) ||
|
|
93
|
+
((_m = (_l = this.bot.sock) === null || _l === void 0 ? void 0 : _l.user) === null || _m === void 0 ? void 0 : _m.verifiedName) ||
|
|
94
|
+
((_r = (_q = (_p = (_o = this.bot.sock) === null || _o === void 0 ? void 0 : _o.authState) === null || _p === void 0 ? void 0 : _p.creds) === null || _q === void 0 ? void 0 : _q.me) === null || _r === void 0 ? void 0 : _r.name) ||
|
|
95
|
+
'');
|
|
96
|
+
this.stateManager.setProfileUrl(((_t = (_s = this.bot.sock) === null || _s === void 0 ? void 0 : _s.user) === null || _t === void 0 ? void 0 : _t.imgUrl) || '');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
this.logger.error('Erro ao atualizar informações do bot', error);
|
|
101
|
+
}
|
|
102
|
+
// Lê informações do usuário e chat (pode falhar silenciosamente)
|
|
103
|
+
try {
|
|
104
|
+
if (this.stateManager.id) {
|
|
105
|
+
await this.bot.readUser({ id: this.stateManager.id }, {
|
|
106
|
+
notify: this.stateManager.name || undefined,
|
|
107
|
+
imgUrl: this.stateManager.profileUrl || undefined,
|
|
108
|
+
});
|
|
109
|
+
await this.bot.readChat({ id: this.stateManager.id }, { subject: this.stateManager.name || undefined });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
// Ignora erros não críticos silenciosamente
|
|
114
|
+
}
|
|
115
|
+
this.bot.emit('open', { isNewLogin: update.isNewLogin || false });
|
|
116
|
+
// Auto restart após intervalo configurado
|
|
117
|
+
if (this.bot.config.autoRestartInterval) {
|
|
118
|
+
setTimeout(async () => {
|
|
119
|
+
try {
|
|
120
|
+
if (this.stateManager.lastConnectionUpdateDate !== uptime)
|
|
121
|
+
return;
|
|
122
|
+
// Reconexão será gerenciada pelo ConnectionManager
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
this.bot.emit('error', error);
|
|
126
|
+
}
|
|
127
|
+
}, this.bot.config.autoRestartInterval);
|
|
128
|
+
}
|
|
129
|
+
// Busca grupos (pode falhar silenciosamente)
|
|
130
|
+
try {
|
|
131
|
+
await ((_u = this.bot.sock) === null || _u === void 0 ? void 0 : _u.groupFetchAllParticipating());
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
// Ignora erros não críticos silenciosamente
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
this.logger.error('Erro crítico ao processar conexão aberta', error);
|
|
139
|
+
this.bot.emit('error', error);
|
|
140
|
+
// Não re-lança o erro para não quebrar o fluxo de conexão
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Trata quando a conexão é fechada
|
|
145
|
+
*/
|
|
146
|
+
async handleClose(update) {
|
|
147
|
+
var _a, _b, _c, _d;
|
|
148
|
+
this.stateManager.setStatus(require('../../bot/BotStatus').BotStatus.Offline);
|
|
149
|
+
this.stateManager.setConnectionStatus('disconnected');
|
|
150
|
+
const { DisconnectReason } = require('@whiskeysockets/baileys');
|
|
151
|
+
const { Boom } = require('@hapi/boom');
|
|
152
|
+
const status = ((_c = (_b = (_a = update.lastDisconnect) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.output) === null || _c === void 0 ? void 0 : _c.statusCode) ||
|
|
153
|
+
(typeof ((_d = update.lastDisconnect) === null || _d === void 0 ? void 0 : _d.error) === 'number'
|
|
154
|
+
? update.lastDisconnect.error
|
|
155
|
+
: undefined) ||
|
|
156
|
+
ErrorCodes_1.ErrorCodes.INTERNAL_SERVER_ERROR;
|
|
157
|
+
this.stateManager.setLastDisconnectError(typeof status === 'number' ? status : undefined);
|
|
158
|
+
// Limpa interval de verificação de conexão
|
|
159
|
+
if (this.bot.checkConnectionInterval !== null) {
|
|
160
|
+
clearInterval(this.bot.checkConnectionInterval);
|
|
161
|
+
this.bot.checkConnectionInterval = null;
|
|
162
|
+
}
|
|
163
|
+
// Trata diferentes códigos de erro
|
|
164
|
+
if (status === DisconnectReason.loggedOut || status === ErrorCodes_1.ErrorCodes.LOGGED_OUT || status === ErrorCodes_1.ErrorCodes.LOGGED_OUT_ALT) {
|
|
165
|
+
// CRÍTICO: Limpa a sessão inválida automaticamente
|
|
166
|
+
// A biblioteca gerencia isso para garantir que um novo QR code seja gerado
|
|
167
|
+
// O cliente não precisa fazer nada - apenas chamar connect() novamente quando quiser
|
|
168
|
+
try {
|
|
169
|
+
await this.sessionManager.clearInvalidSession(this.bot.auth);
|
|
170
|
+
// Log removido - limpeza de sessão é silenciosa
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
this.logger.error('Erro ao limpar sessão após 401/421', error);
|
|
174
|
+
}
|
|
175
|
+
// Emite eventos para o cliente ser notificado
|
|
176
|
+
// O cliente pode então decidir quando chamar connect() novamente
|
|
177
|
+
this.bot.emit('close', {
|
|
178
|
+
reason: status,
|
|
179
|
+
message: ErrorCodes_1.ErrorMessages.LOGGED_OUT(status)
|
|
180
|
+
});
|
|
181
|
+
this.bot.emit('stop', { isLogout: true });
|
|
182
|
+
}
|
|
183
|
+
else if (status === ErrorCodes_1.ErrorCodes.CONNECTION_CLOSED) {
|
|
184
|
+
// 402 = connectionClosed - geralmente é temporário, não limpa sessão
|
|
185
|
+
// Apenas emite o evento, não tenta reconectar automaticamente
|
|
186
|
+
this.bot.emit('close', {
|
|
187
|
+
reason: status,
|
|
188
|
+
message: ErrorCodes_1.ErrorMessages.CONNECTION_CLOSED
|
|
189
|
+
});
|
|
190
|
+
// NÃO emite 'stop' para 402 - permite que o Baileys tente reconectar
|
|
191
|
+
// Garante tentativa de reconexão mesmo que Baileys não o faça
|
|
192
|
+
try {
|
|
193
|
+
await this.bot.reconnect(false, false, true);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
this.logger.error('Erro ao tentar reconectar após erro 402', error);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else if (status === ErrorCodes_1.ErrorCodes.REQUEST_TIMEOUT) {
|
|
200
|
+
// 408 = Request Timeout - requisição expirou, geralmente temporário
|
|
201
|
+
// Similar ao 402 (Connection Closed) - não limpa sessão, permite reconexão
|
|
202
|
+
this.bot.emit('close', {
|
|
203
|
+
reason: status,
|
|
204
|
+
message: ErrorCodes_1.ErrorMessages.REQUEST_TIMEOUT
|
|
205
|
+
});
|
|
206
|
+
// NÃO emite 'stop' para 408 - permite que o Baileys tente reconectar
|
|
207
|
+
// Garante tentativa de reconexão mesmo que Baileys não o faça
|
|
208
|
+
try {
|
|
209
|
+
await this.bot.reconnect(false, false, true);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
this.logger.error('Erro ao tentar reconectar após erro 408', error);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else if (status === ErrorCodes_1.ErrorCodes.CONNECTION_TERMINATED) {
|
|
216
|
+
// 428 = Connection Terminated - erro temporário
|
|
217
|
+
// Emite eventos e aciona reconexão via ConnectionManager
|
|
218
|
+
this.bot.emit('close', {
|
|
219
|
+
reason: status,
|
|
220
|
+
message: ErrorCodes_1.ErrorMessages.CONNECTION_TERMINATED
|
|
221
|
+
});
|
|
222
|
+
this.bot.emit('stop', { isLogout: false });
|
|
223
|
+
// Garante reconexão imediata
|
|
224
|
+
try {
|
|
225
|
+
await this.bot.reconnect(false, false, true);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
this.logger.error('Erro ao tentar reconectar após erro 428', error);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else if (status === ErrorCodes_1.ErrorCodes.INTERNAL_SERVER_ERROR) {
|
|
232
|
+
// 500 = Internal Server Error - erro temporário do servidor, permite reconexão
|
|
233
|
+
this.bot.emit('close', {
|
|
234
|
+
reason: status,
|
|
235
|
+
message: ErrorCodes_1.ErrorMessages.INTERNAL_SERVER_ERROR_MSG
|
|
236
|
+
});
|
|
237
|
+
// NÃO emite 'stop' para 500 - permite reconexão
|
|
238
|
+
// Garante reconexão mesmo se o Baileys não fizer
|
|
239
|
+
try {
|
|
240
|
+
await this.bot.reconnect(false, false, true);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
this.logger.error('Erro ao tentar reconectar após erro 500', error);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else if (status === DisconnectReason.restartRequired) {
|
|
247
|
+
// Após autenticação (QR code escaneado), o WhatsApp força restartRequired
|
|
248
|
+
// Salva credenciais e cria novo socket imediatamente
|
|
249
|
+
try {
|
|
250
|
+
// Salva credenciais primeiro
|
|
251
|
+
await this.bot.saveCreds(this.bot.sock.authState.creds);
|
|
252
|
+
// Cria novo socket com credenciais salvas (método centralizado)
|
|
253
|
+
await this.bot.createSocket();
|
|
254
|
+
// Log removido - criação de socket após restartRequired é silenciosa
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
this.logger.error('Erro ao criar novo socket após restartRequired', error);
|
|
258
|
+
this.bot.emit('error', error);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this.bot.emit('close', { reason: status });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Trata atualizações de credenciais
|
|
267
|
+
* Atualiza informações do bot quando credenciais são atualizadas
|
|
268
|
+
* Isso garante que o número seja obtido mesmo se sock.user.id não estiver disponível imediatamente
|
|
269
|
+
*/
|
|
270
|
+
async handleCredsUpdate(creds) {
|
|
271
|
+
var _a, _b;
|
|
272
|
+
await this.bot.saveCreds(creds);
|
|
273
|
+
// Atualiza informações do bot se credenciais contiverem me.id
|
|
274
|
+
if ((_a = creds === null || creds === void 0 ? void 0 : creds.me) === null || _a === void 0 ? void 0 : _a.id) {
|
|
275
|
+
try {
|
|
276
|
+
const { fixID, getPhoneNumber } = require('../ID');
|
|
277
|
+
const rawId = creds.me.id;
|
|
278
|
+
const id = fixID(rawId);
|
|
279
|
+
// Atualiza apenas se ainda não tiver ID ou se o ID mudou
|
|
280
|
+
if (!this.stateManager.id || this.stateManager.id !== id) {
|
|
281
|
+
this.stateManager.setId(id);
|
|
282
|
+
// Obtém o número de telefone do ID original (antes do fixID) ou do ID fixado
|
|
283
|
+
const phoneNumber = getPhoneNumber(rawId) || getPhoneNumber(id);
|
|
284
|
+
this.stateManager.setPhoneNumber(phoneNumber);
|
|
285
|
+
}
|
|
286
|
+
else if (!this.stateManager.phoneNumber) {
|
|
287
|
+
// Se já tem ID mas não tem número, tenta obter novamente
|
|
288
|
+
const phoneNumber = getPhoneNumber(rawId) || getPhoneNumber(this.stateManager.id);
|
|
289
|
+
if (phoneNumber) {
|
|
290
|
+
this.stateManager.setPhoneNumber(phoneNumber);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Atualiza nome se disponível nas credenciais e ainda não tiver
|
|
294
|
+
if (((_b = creds.me) === null || _b === void 0 ? void 0 : _b.name) && !this.stateManager.name) {
|
|
295
|
+
this.stateManager.setName(creds.me.name);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
this.logger.error('Erro ao atualizar informações do bot em creds.update', error);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
exports.ConnectionEventHandler = ConnectionEventHandler;
|
|
305
|
+
//# sourceMappingURL=ConnectionEventHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/ConnectionEventHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WASocket } from '@whiskeysockets/baileys';
|
|
2
|
+
import { ILoggerService } from '../interfaces/ILoggerService';
|
|
3
|
+
import WhatsAppBot from '../WhatsAppBot';
|
|
4
|
+
export declare class ContactEventHandler {
|
|
5
|
+
private bot;
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(bot: WhatsAppBot, logger: ILoggerService);
|
|
8
|
+
/**
|
|
9
|
+
* Configura handlers para eventos de contatos
|
|
10
|
+
*/
|
|
11
|
+
setup(socket: WASocket): void;
|
|
12
|
+
}
|