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.
Files changed (144) hide show
  1. package/README.md +195 -20
  2. package/lib/bot/BotEvents.d.ts +2 -0
  3. package/lib/bot/BotEvents.js.map +1 -1
  4. package/lib/client/Client.js +93 -28
  5. package/lib/client/Client.js.map +1 -1
  6. package/lib/client/ClientFunctionHandler.js +39 -3
  7. package/lib/client/ClientFunctionHandler.js.map +1 -1
  8. package/lib/telegram/TelegramAuth.js +36 -1
  9. package/lib/telegram/TelegramAuth.js.map +1 -1
  10. package/lib/telegram/TelegramBot.d.ts +11 -0
  11. package/lib/telegram/TelegramBot.js +101 -15
  12. package/lib/telegram/TelegramBot.js.map +1 -1
  13. package/lib/telegram/TelegramEvents.d.ts +8 -1
  14. package/lib/telegram/TelegramEvents.js +67 -30
  15. package/lib/telegram/TelegramEvents.js.map +1 -1
  16. package/lib/telegram/TelegramSendingController.js +59 -17
  17. package/lib/telegram/TelegramSendingController.js.map +1 -1
  18. package/lib/telegram/TelegramToRompotConverter.js +44 -14
  19. package/lib/telegram/TelegramToRompotConverter.js.map +1 -1
  20. package/lib/wa/Auth.js +17 -5
  21. package/lib/wa/Auth.js.map +1 -1
  22. package/lib/wa/ConfigWAEvents.d.ts +6 -10
  23. package/lib/wa/ConfigWAEvents.js +220 -426
  24. package/lib/wa/ConfigWAEvents.js.map +1 -1
  25. package/lib/wa/ConvertWAMessage.js +28 -19
  26. package/lib/wa/ConvertWAMessage.js.map +1 -1
  27. package/lib/wa/ID.d.ts +10 -1
  28. package/lib/wa/ID.js +22 -2
  29. package/lib/wa/ID.js.map +1 -1
  30. package/lib/wa/WhatsAppBot.d.ts +58 -11
  31. package/lib/wa/WhatsAppBot.js +365 -648
  32. package/lib/wa/WhatsAppBot.js.map +1 -1
  33. package/lib/wa/constants/ConfigDefaults.d.ts +23 -0
  34. package/lib/wa/constants/ConfigDefaults.js +27 -0
  35. package/lib/wa/constants/ConfigDefaults.js.map +1 -0
  36. package/lib/wa/constants/DisconnectReasons.d.ts +24 -0
  37. package/lib/wa/constants/DisconnectReasons.js +36 -0
  38. package/lib/wa/constants/DisconnectReasons.js.map +1 -0
  39. package/lib/wa/constants/ErrorCodes.d.ts +28 -0
  40. package/lib/wa/constants/ErrorCodes.js +32 -0
  41. package/lib/wa/constants/ErrorCodes.js.map +1 -0
  42. package/lib/wa/constants/JIDPatterns.d.ts +23 -0
  43. package/lib/wa/constants/JIDPatterns.js +38 -0
  44. package/lib/wa/constants/JIDPatterns.js.map +1 -0
  45. package/lib/wa/constants/Timeouts.d.ts +11 -0
  46. package/lib/wa/constants/Timeouts.js +15 -0
  47. package/lib/wa/constants/Timeouts.js.map +1 -0
  48. package/lib/wa/core/ConnectionManager.d.ts +84 -0
  49. package/lib/wa/core/ConnectionManager.js +256 -0
  50. package/lib/wa/core/ConnectionManager.js.map +1 -0
  51. package/lib/wa/core/SessionManager.d.ts +29 -0
  52. package/lib/wa/core/SessionManager.js +155 -0
  53. package/lib/wa/core/SessionManager.js.map +1 -0
  54. package/lib/wa/core/StateManager.d.ts +49 -0
  55. package/lib/wa/core/StateManager.js +135 -0
  56. package/lib/wa/core/StateManager.js.map +1 -0
  57. package/lib/wa/events/CallEventHandler.d.ts +17 -0
  58. package/lib/wa/events/CallEventHandler.js +155 -0
  59. package/lib/wa/events/CallEventHandler.js.map +1 -0
  60. package/lib/wa/events/ChatEventHandler.d.ts +12 -0
  61. package/lib/wa/events/ChatEventHandler.js +74 -0
  62. package/lib/wa/events/ChatEventHandler.js.map +1 -0
  63. package/lib/wa/events/ConnectionEventHandler.d.ts +43 -0
  64. package/lib/wa/events/ConnectionEventHandler.js +305 -0
  65. package/lib/wa/events/ConnectionEventHandler.js.map +1 -0
  66. package/lib/wa/events/ContactEventHandler.d.ts +12 -0
  67. package/lib/wa/events/ContactEventHandler.js +55 -0
  68. package/lib/wa/events/ContactEventHandler.js.map +1 -0
  69. package/lib/wa/events/EventManager.d.ts +43 -0
  70. package/lib/wa/events/EventManager.js +198 -0
  71. package/lib/wa/events/EventManager.js.map +1 -0
  72. package/lib/wa/events/GroupEventHandler.d.ts +12 -0
  73. package/lib/wa/events/GroupEventHandler.js +74 -0
  74. package/lib/wa/events/GroupEventHandler.js.map +1 -0
  75. package/lib/wa/events/HistoryEventHandler.d.ts +16 -0
  76. package/lib/wa/events/HistoryEventHandler.js +101 -0
  77. package/lib/wa/events/HistoryEventHandler.js.map +1 -0
  78. package/lib/wa/events/LIDMappingEventHandler.d.ts +20 -0
  79. package/lib/wa/events/LIDMappingEventHandler.js +39 -0
  80. package/lib/wa/events/LIDMappingEventHandler.js.map +1 -0
  81. package/lib/wa/events/MessageEventHandler.d.ts +16 -0
  82. package/lib/wa/events/MessageEventHandler.js +218 -0
  83. package/lib/wa/events/MessageEventHandler.js.map +1 -0
  84. package/lib/wa/interfaces/ICacheService.d.ts +12 -0
  85. package/lib/wa/interfaces/ICacheService.js +3 -0
  86. package/lib/wa/interfaces/ICacheService.js.map +1 -0
  87. package/lib/wa/interfaces/IConnectionManager.d.ts +15 -0
  88. package/lib/wa/interfaces/IConnectionManager.js +3 -0
  89. package/lib/wa/interfaces/IConnectionManager.js.map +1 -0
  90. package/lib/wa/interfaces/IErrorHandler.d.ts +9 -0
  91. package/lib/wa/interfaces/IErrorHandler.js +3 -0
  92. package/lib/wa/interfaces/IErrorHandler.js.map +1 -0
  93. package/lib/wa/interfaces/ILoggerService.d.ts +13 -0
  94. package/lib/wa/interfaces/ILoggerService.js +3 -0
  95. package/lib/wa/interfaces/ILoggerService.js.map +1 -0
  96. package/lib/wa/interfaces/ISessionManager.d.ts +16 -0
  97. package/lib/wa/interfaces/ISessionManager.js +3 -0
  98. package/lib/wa/interfaces/ISessionManager.js.map +1 -0
  99. package/lib/wa/interfaces/IStateManager.d.ts +41 -0
  100. package/lib/wa/interfaces/IStateManager.js +3 -0
  101. package/lib/wa/interfaces/IStateManager.js.map +1 -0
  102. package/lib/wa/operations/ChatOperations.d.ts +117 -0
  103. package/lib/wa/operations/ChatOperations.js +349 -0
  104. package/lib/wa/operations/ChatOperations.js.map +1 -0
  105. package/lib/wa/operations/GroupOperations.d.ts +31 -0
  106. package/lib/wa/operations/GroupOperations.js +128 -0
  107. package/lib/wa/operations/GroupOperations.js.map +1 -0
  108. package/lib/wa/operations/MessageOperations.d.ts +69 -0
  109. package/lib/wa/operations/MessageOperations.js +335 -0
  110. package/lib/wa/operations/MessageOperations.js.map +1 -0
  111. package/lib/wa/operations/UserOperations.d.ts +100 -0
  112. package/lib/wa/operations/UserOperations.js +216 -0
  113. package/lib/wa/operations/UserOperations.js.map +1 -0
  114. package/lib/wa/services/CacheService.d.ts +45 -0
  115. package/lib/wa/services/CacheService.js +93 -0
  116. package/lib/wa/services/CacheService.js.map +1 -0
  117. package/lib/wa/services/ErrorHandler.d.ts +26 -0
  118. package/lib/wa/services/ErrorHandler.js +73 -0
  119. package/lib/wa/services/ErrorHandler.js.map +1 -0
  120. package/lib/wa/services/LIDMappingService.d.ts +42 -0
  121. package/lib/wa/services/LIDMappingService.js +132 -0
  122. package/lib/wa/services/LIDMappingService.js.map +1 -0
  123. package/lib/wa/services/LIDNormalizationService.d.ts +30 -0
  124. package/lib/wa/services/LIDNormalizationService.js +136 -0
  125. package/lib/wa/services/LIDNormalizationService.js.map +1 -0
  126. package/lib/wa/services/LoggerService.d.ts +44 -0
  127. package/lib/wa/services/LoggerService.js +85 -0
  128. package/lib/wa/services/LoggerService.js.map +1 -0
  129. package/lib/wa/services/PendingMessageQueue.d.ts +46 -0
  130. package/lib/wa/services/PendingMessageQueue.js +119 -0
  131. package/lib/wa/services/PendingMessageQueue.js.map +1 -0
  132. package/lib/wa/services/RetryService.d.ts +25 -0
  133. package/lib/wa/services/RetryService.js +59 -0
  134. package/lib/wa/services/RetryService.js.map +1 -0
  135. package/lib/wa/utils/ConfigValidator.d.ts +15 -0
  136. package/lib/wa/utils/ConfigValidator.js +66 -0
  137. package/lib/wa/utils/ConfigValidator.js.map +1 -0
  138. package/lib/wa/utils/ErrorUtils.d.ts +29 -0
  139. package/lib/wa/utils/ErrorUtils.js +66 -0
  140. package/lib/wa/utils/ErrorUtils.js.map +1 -0
  141. package/lib/wa/utils/Validation.d.ts +18 -0
  142. package/lib/wa/utils/Validation.js +40 -0
  143. package/lib/wa/utils/Validation.js.map +1 -0
  144. 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
+ }