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.
Files changed (142) hide show
  1. package/README.md +195 -20
  2. package/lib/client/Client.js +93 -28
  3. package/lib/client/Client.js.map +1 -1
  4. package/lib/client/ClientFunctionHandler.js +39 -3
  5. package/lib/client/ClientFunctionHandler.js.map +1 -1
  6. package/lib/telegram/TelegramAuth.js +36 -1
  7. package/lib/telegram/TelegramAuth.js.map +1 -1
  8. package/lib/telegram/TelegramBot.d.ts +11 -0
  9. package/lib/telegram/TelegramBot.js +101 -15
  10. package/lib/telegram/TelegramBot.js.map +1 -1
  11. package/lib/telegram/TelegramEvents.d.ts +8 -1
  12. package/lib/telegram/TelegramEvents.js +67 -30
  13. package/lib/telegram/TelegramEvents.js.map +1 -1
  14. package/lib/telegram/TelegramSendingController.js +59 -17
  15. package/lib/telegram/TelegramSendingController.js.map +1 -1
  16. package/lib/telegram/TelegramToRompotConverter.js +44 -14
  17. package/lib/telegram/TelegramToRompotConverter.js.map +1 -1
  18. package/lib/wa/Auth.js +17 -5
  19. package/lib/wa/Auth.js.map +1 -1
  20. package/lib/wa/ConfigWAEvents.d.ts +6 -10
  21. package/lib/wa/ConfigWAEvents.js +216 -430
  22. package/lib/wa/ConfigWAEvents.js.map +1 -1
  23. package/lib/wa/ConvertWAMessage.js +28 -19
  24. package/lib/wa/ConvertWAMessage.js.map +1 -1
  25. package/lib/wa/ID.d.ts +10 -1
  26. package/lib/wa/ID.js +22 -2
  27. package/lib/wa/ID.js.map +1 -1
  28. package/lib/wa/WhatsAppBot.d.ts +58 -11
  29. package/lib/wa/WhatsAppBot.js +365 -666
  30. package/lib/wa/WhatsAppBot.js.map +1 -1
  31. package/lib/wa/constants/ConfigDefaults.d.ts +23 -0
  32. package/lib/wa/constants/ConfigDefaults.js +27 -0
  33. package/lib/wa/constants/ConfigDefaults.js.map +1 -0
  34. package/lib/wa/constants/DisconnectReasons.d.ts +24 -0
  35. package/lib/wa/constants/DisconnectReasons.js +36 -0
  36. package/lib/wa/constants/DisconnectReasons.js.map +1 -0
  37. package/lib/wa/constants/ErrorCodes.d.ts +28 -0
  38. package/lib/wa/constants/ErrorCodes.js +32 -0
  39. package/lib/wa/constants/ErrorCodes.js.map +1 -0
  40. package/lib/wa/constants/JIDPatterns.d.ts +23 -0
  41. package/lib/wa/constants/JIDPatterns.js +38 -0
  42. package/lib/wa/constants/JIDPatterns.js.map +1 -0
  43. package/lib/wa/constants/Timeouts.d.ts +11 -0
  44. package/lib/wa/constants/Timeouts.js +15 -0
  45. package/lib/wa/constants/Timeouts.js.map +1 -0
  46. package/lib/wa/core/ConnectionManager.d.ts +84 -0
  47. package/lib/wa/core/ConnectionManager.js +256 -0
  48. package/lib/wa/core/ConnectionManager.js.map +1 -0
  49. package/lib/wa/core/SessionManager.d.ts +29 -0
  50. package/lib/wa/core/SessionManager.js +155 -0
  51. package/lib/wa/core/SessionManager.js.map +1 -0
  52. package/lib/wa/core/StateManager.d.ts +49 -0
  53. package/lib/wa/core/StateManager.js +135 -0
  54. package/lib/wa/core/StateManager.js.map +1 -0
  55. package/lib/wa/events/CallEventHandler.d.ts +17 -0
  56. package/lib/wa/events/CallEventHandler.js +155 -0
  57. package/lib/wa/events/CallEventHandler.js.map +1 -0
  58. package/lib/wa/events/ChatEventHandler.d.ts +12 -0
  59. package/lib/wa/events/ChatEventHandler.js +74 -0
  60. package/lib/wa/events/ChatEventHandler.js.map +1 -0
  61. package/lib/wa/events/ConnectionEventHandler.d.ts +43 -0
  62. package/lib/wa/events/ConnectionEventHandler.js +305 -0
  63. package/lib/wa/events/ConnectionEventHandler.js.map +1 -0
  64. package/lib/wa/events/ContactEventHandler.d.ts +12 -0
  65. package/lib/wa/events/ContactEventHandler.js +55 -0
  66. package/lib/wa/events/ContactEventHandler.js.map +1 -0
  67. package/lib/wa/events/EventManager.d.ts +43 -0
  68. package/lib/wa/events/EventManager.js +198 -0
  69. package/lib/wa/events/EventManager.js.map +1 -0
  70. package/lib/wa/events/GroupEventHandler.d.ts +12 -0
  71. package/lib/wa/events/GroupEventHandler.js +74 -0
  72. package/lib/wa/events/GroupEventHandler.js.map +1 -0
  73. package/lib/wa/events/HistoryEventHandler.d.ts +16 -0
  74. package/lib/wa/events/HistoryEventHandler.js +101 -0
  75. package/lib/wa/events/HistoryEventHandler.js.map +1 -0
  76. package/lib/wa/events/LIDMappingEventHandler.d.ts +20 -0
  77. package/lib/wa/events/LIDMappingEventHandler.js +39 -0
  78. package/lib/wa/events/LIDMappingEventHandler.js.map +1 -0
  79. package/lib/wa/events/MessageEventHandler.d.ts +16 -0
  80. package/lib/wa/events/MessageEventHandler.js +218 -0
  81. package/lib/wa/events/MessageEventHandler.js.map +1 -0
  82. package/lib/wa/interfaces/ICacheService.d.ts +12 -0
  83. package/lib/wa/interfaces/ICacheService.js +3 -0
  84. package/lib/wa/interfaces/ICacheService.js.map +1 -0
  85. package/lib/wa/interfaces/IConnectionManager.d.ts +15 -0
  86. package/lib/wa/interfaces/IConnectionManager.js +3 -0
  87. package/lib/wa/interfaces/IConnectionManager.js.map +1 -0
  88. package/lib/wa/interfaces/IErrorHandler.d.ts +9 -0
  89. package/lib/wa/interfaces/IErrorHandler.js +3 -0
  90. package/lib/wa/interfaces/IErrorHandler.js.map +1 -0
  91. package/lib/wa/interfaces/ILoggerService.d.ts +13 -0
  92. package/lib/wa/interfaces/ILoggerService.js +3 -0
  93. package/lib/wa/interfaces/ILoggerService.js.map +1 -0
  94. package/lib/wa/interfaces/ISessionManager.d.ts +16 -0
  95. package/lib/wa/interfaces/ISessionManager.js +3 -0
  96. package/lib/wa/interfaces/ISessionManager.js.map +1 -0
  97. package/lib/wa/interfaces/IStateManager.d.ts +41 -0
  98. package/lib/wa/interfaces/IStateManager.js +3 -0
  99. package/lib/wa/interfaces/IStateManager.js.map +1 -0
  100. package/lib/wa/operations/ChatOperations.d.ts +117 -0
  101. package/lib/wa/operations/ChatOperations.js +349 -0
  102. package/lib/wa/operations/ChatOperations.js.map +1 -0
  103. package/lib/wa/operations/GroupOperations.d.ts +31 -0
  104. package/lib/wa/operations/GroupOperations.js +128 -0
  105. package/lib/wa/operations/GroupOperations.js.map +1 -0
  106. package/lib/wa/operations/MessageOperations.d.ts +69 -0
  107. package/lib/wa/operations/MessageOperations.js +335 -0
  108. package/lib/wa/operations/MessageOperations.js.map +1 -0
  109. package/lib/wa/operations/UserOperations.d.ts +100 -0
  110. package/lib/wa/operations/UserOperations.js +216 -0
  111. package/lib/wa/operations/UserOperations.js.map +1 -0
  112. package/lib/wa/services/CacheService.d.ts +45 -0
  113. package/lib/wa/services/CacheService.js +93 -0
  114. package/lib/wa/services/CacheService.js.map +1 -0
  115. package/lib/wa/services/ErrorHandler.d.ts +26 -0
  116. package/lib/wa/services/ErrorHandler.js +73 -0
  117. package/lib/wa/services/ErrorHandler.js.map +1 -0
  118. package/lib/wa/services/LIDMappingService.d.ts +42 -0
  119. package/lib/wa/services/LIDMappingService.js +132 -0
  120. package/lib/wa/services/LIDMappingService.js.map +1 -0
  121. package/lib/wa/services/LIDNormalizationService.d.ts +30 -0
  122. package/lib/wa/services/LIDNormalizationService.js +136 -0
  123. package/lib/wa/services/LIDNormalizationService.js.map +1 -0
  124. package/lib/wa/services/LoggerService.d.ts +44 -0
  125. package/lib/wa/services/LoggerService.js +85 -0
  126. package/lib/wa/services/LoggerService.js.map +1 -0
  127. package/lib/wa/services/PendingMessageQueue.d.ts +46 -0
  128. package/lib/wa/services/PendingMessageQueue.js +119 -0
  129. package/lib/wa/services/PendingMessageQueue.js.map +1 -0
  130. package/lib/wa/services/RetryService.d.ts +25 -0
  131. package/lib/wa/services/RetryService.js +59 -0
  132. package/lib/wa/services/RetryService.js.map +1 -0
  133. package/lib/wa/utils/ConfigValidator.d.ts +15 -0
  134. package/lib/wa/utils/ConfigValidator.js +66 -0
  135. package/lib/wa/utils/ConfigValidator.js.map +1 -0
  136. package/lib/wa/utils/ErrorUtils.d.ts +29 -0
  137. package/lib/wa/utils/ErrorUtils.js +66 -0
  138. package/lib/wa/utils/ErrorUtils.js.map +1 -0
  139. package/lib/wa/utils/Validation.d.ts +18 -0
  140. package/lib/wa/utils/Validation.js +40 -0
  141. package/lib/wa/utils/Validation.js.map +1 -0
  142. package/package.json +4 -3
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContactEventHandler = void 0;
4
+ const baileys_1 = require("@whiskeysockets/baileys");
5
+ class ContactEventHandler {
6
+ constructor(bot, logger) {
7
+ this.bot = bot;
8
+ this.logger = logger;
9
+ }
10
+ /**
11
+ * Configura handlers para eventos de contatos
12
+ */
13
+ setup(socket) {
14
+ // contacts.upsert - Novos contatos
15
+ socket.ev.on('contacts.upsert', async (updates) => {
16
+ if (!this.bot.config.autoLoadContactInfo)
17
+ return;
18
+ for (const update of updates) {
19
+ try {
20
+ if ((0, baileys_1.isJidGroup)(update.id)) {
21
+ await this.bot.readChat({ id: update.id }, update);
22
+ }
23
+ else {
24
+ await this.bot.readUser({ id: update.id }, update);
25
+ }
26
+ }
27
+ catch (error) {
28
+ this.logger.error('Erro ao processar contacts.upsert', error);
29
+ this.bot.emit('error', error);
30
+ }
31
+ }
32
+ });
33
+ // contacts.update - Atualizações de contatos
34
+ socket.ev.on('contacts.update', async (updates) => {
35
+ if (!this.bot.config.autoLoadContactInfo)
36
+ return;
37
+ for (const update of updates) {
38
+ try {
39
+ if ((0, baileys_1.isJidGroup)(update.id)) {
40
+ await this.bot.readChat({ id: update.id }, update);
41
+ }
42
+ else {
43
+ await this.bot.readUser({ id: update.id }, update);
44
+ }
45
+ }
46
+ catch (error) {
47
+ this.logger.error('Erro ao processar contacts.update', error);
48
+ this.bot.emit('error', error);
49
+ }
50
+ }
51
+ });
52
+ }
53
+ }
54
+ exports.ContactEventHandler = ContactEventHandler;
55
+ //# sourceMappingURL=ContactEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/ContactEventHandler.ts"],"names":[],"mappings":";;;AAAA,qDAA+D;AAI/D,MAAa,mBAAmB;IAI9B,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,mCAAmC;QACnC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB;gBAAE,OAAO;YAEjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,IAAI,IAAA,oBAAU,EAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;oBAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB;gBAAE,OAAO;YAEjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,IAAI,IAAA,oBAAU,EAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;oBAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAjDD,kDAiDC"}
@@ -0,0 +1,43 @@
1
+ import { WASocket, ConnectionState } from '@whiskeysockets/baileys';
2
+ import { ILoggerService } from '../interfaces/ILoggerService';
3
+ type EventHandler<T = any> = (data: T) => void | Promise<void>;
4
+ export declare class EventManager {
5
+ private socket;
6
+ private listeners;
7
+ private logger;
8
+ private cleanupFunctions;
9
+ constructor(logger: ILoggerService);
10
+ /**
11
+ * Configura o socket para gerenciar eventos
12
+ */
13
+ setSocket(socket: WASocket): void;
14
+ /**
15
+ * Registra um listener para um evento
16
+ */
17
+ on<T = any>(event: string, handler: EventHandler<T>): () => void;
18
+ /**
19
+ * Remove um listener
20
+ */
21
+ off<T = any>(event: string, handler: EventHandler<T>): void;
22
+ /**
23
+ * Limpa todos os listeners
24
+ */
25
+ cleanup(): void;
26
+ /**
27
+ * Configura listeners core do Baileys
28
+ * NOTA: connection.update é gerenciado exclusivamente pelo ConfigWAEvents
29
+ * para evitar processamento duplicado. EventManager não escuta diretamente.
30
+ */
31
+ private setupCoreListeners;
32
+ /**
33
+ * Emite um evento para todos os listeners registrados
34
+ */
35
+ private emit;
36
+ onConnectionUpdate(handler: EventHandler<ConnectionState>): () => void;
37
+ onCredsUpdate(handler: EventHandler): () => void;
38
+ onMessagesUpsert(handler: EventHandler): () => void;
39
+ onMessagesUpdate(handler: EventHandler): () => void;
40
+ onHistorySet(handler: EventHandler): () => void;
41
+ onLIDMappingUpdate(handler: EventHandler): () => void;
42
+ }
43
+ export {};
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventManager = void 0;
4
+ class EventManager {
5
+ constructor(logger) {
6
+ this.socket = null;
7
+ this.listeners = new Map();
8
+ this.cleanupFunctions = [];
9
+ this.logger = logger;
10
+ }
11
+ /**
12
+ * Configura o socket para gerenciar eventos
13
+ */
14
+ setSocket(socket) {
15
+ this.socket = socket;
16
+ this.setupCoreListeners();
17
+ }
18
+ /**
19
+ * Registra um listener para um evento
20
+ */
21
+ on(event, handler) {
22
+ if (!this.listeners.has(event)) {
23
+ this.listeners.set(event, new Set());
24
+ }
25
+ this.listeners.get(event).add(handler);
26
+ // Retorna função de cleanup
27
+ return () => {
28
+ this.off(event, handler);
29
+ };
30
+ }
31
+ /**
32
+ * Remove um listener
33
+ */
34
+ off(event, handler) {
35
+ const handlers = this.listeners.get(event);
36
+ if (handlers) {
37
+ handlers.delete(handler);
38
+ if (handlers.size === 0) {
39
+ this.listeners.delete(event);
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Limpa todos os listeners
45
+ */
46
+ cleanup() {
47
+ // Remove listeners do Baileys
48
+ this.cleanupFunctions.forEach(cleanup => cleanup());
49
+ this.cleanupFunctions = [];
50
+ // Limpa listeners internos
51
+ this.listeners.clear();
52
+ // Log removido para reduzir verbosidade
53
+ }
54
+ /**
55
+ * Configura listeners core do Baileys
56
+ * NOTA: connection.update é gerenciado exclusivamente pelo ConfigWAEvents
57
+ * para evitar processamento duplicado. EventManager não escuta diretamente.
58
+ */
59
+ setupCoreListeners() {
60
+ var _a;
61
+ if (!((_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev))
62
+ return;
63
+ // REMOVIDO: Listener duplicado de connection.update
64
+ // O ConfigWAEvents é o único responsável por escutar connection.update
65
+ // EventManager não precisa escutar diretamente para evitar duplicação
66
+ // Creds update
67
+ const credsHandler = (creds) => {
68
+ this.emit('creds.update', creds);
69
+ };
70
+ this.socket.ev.on('creds.update', credsHandler);
71
+ this.cleanupFunctions.push(() => {
72
+ var _a;
73
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('creds.update', credsHandler);
74
+ });
75
+ // Messages
76
+ const messagesUpsertHandler = (data) => {
77
+ this.emit('messages.upsert', data);
78
+ };
79
+ this.socket.ev.on('messages.upsert', messagesUpsertHandler);
80
+ this.cleanupFunctions.push(() => {
81
+ var _a;
82
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('messages.upsert', messagesUpsertHandler);
83
+ });
84
+ const messagesUpdateHandler = (data) => {
85
+ this.emit('messages.update', data);
86
+ };
87
+ this.socket.ev.on('messages.update', messagesUpdateHandler);
88
+ this.cleanupFunctions.push(() => {
89
+ var _a;
90
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('messages.update', messagesUpdateHandler);
91
+ });
92
+ // Contacts
93
+ const contactsUpsertHandler = (data) => {
94
+ this.emit('contacts.upsert', data);
95
+ };
96
+ this.socket.ev.on('contacts.upsert', contactsUpsertHandler);
97
+ this.cleanupFunctions.push(() => {
98
+ var _a;
99
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('contacts.upsert', contactsUpsertHandler);
100
+ });
101
+ const contactsUpdateHandler = (data) => {
102
+ this.emit('contacts.update', data);
103
+ };
104
+ this.socket.ev.on('contacts.update', contactsUpdateHandler);
105
+ this.cleanupFunctions.push(() => {
106
+ var _a;
107
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('contacts.update', contactsUpdateHandler);
108
+ });
109
+ // Groups
110
+ const groupsUpdateHandler = (data) => {
111
+ this.emit('groups.update', data);
112
+ };
113
+ this.socket.ev.on('groups.update', groupsUpdateHandler);
114
+ this.cleanupFunctions.push(() => {
115
+ var _a;
116
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('groups.update', groupsUpdateHandler);
117
+ });
118
+ // Chats
119
+ const chatsDeleteHandler = (data) => {
120
+ this.emit('chats.delete', data);
121
+ };
122
+ this.socket.ev.on('chats.delete', chatsDeleteHandler);
123
+ this.cleanupFunctions.push(() => {
124
+ var _a;
125
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('chats.delete', chatsDeleteHandler);
126
+ });
127
+ // History (OBRIGATÓRIO no v7.0.0)
128
+ const historyHandler = (data) => {
129
+ this.emit('messaging-history.set', data);
130
+ };
131
+ this.socket.ev.on('messaging-history.set', historyHandler);
132
+ this.cleanupFunctions.push(() => {
133
+ var _a;
134
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('messaging-history.set', historyHandler);
135
+ });
136
+ // Calls
137
+ const callHandler = (data) => {
138
+ this.emit('call', data);
139
+ };
140
+ this.socket.ev.on('call', callHandler);
141
+ this.cleanupFunctions.push(() => {
142
+ var _a;
143
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('call', callHandler);
144
+ });
145
+ // LID Mapping (novo no v7.0.0)
146
+ const lidMappingHandler = (data) => {
147
+ this.emit('lid-mapping.update', data);
148
+ };
149
+ this.socket.ev.on('lid-mapping.update', lidMappingHandler);
150
+ this.cleanupFunctions.push(() => {
151
+ var _a;
152
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.ev.off('lid-mapping.update', lidMappingHandler);
153
+ });
154
+ }
155
+ /**
156
+ * Emite um evento para todos os listeners registrados
157
+ */
158
+ emit(event, data) {
159
+ const handlers = this.listeners.get(event);
160
+ if (handlers) {
161
+ handlers.forEach(handler => {
162
+ try {
163
+ const result = handler(data);
164
+ // Se retornar uma Promise, trata erros
165
+ if (result instanceof Promise) {
166
+ result.catch(error => {
167
+ this.logger.error(`Erro no handler do evento ${event}`, error);
168
+ });
169
+ }
170
+ }
171
+ catch (error) {
172
+ this.logger.error(`Erro no handler do evento ${event}`, error);
173
+ }
174
+ });
175
+ }
176
+ }
177
+ // Métodos de conveniência para eventos comuns
178
+ onConnectionUpdate(handler) {
179
+ return this.on('connection.update', handler);
180
+ }
181
+ onCredsUpdate(handler) {
182
+ return this.on('creds.update', handler);
183
+ }
184
+ onMessagesUpsert(handler) {
185
+ return this.on('messages.upsert', handler);
186
+ }
187
+ onMessagesUpdate(handler) {
188
+ return this.on('messages.update', handler);
189
+ }
190
+ onHistorySet(handler) {
191
+ return this.on('messaging-history.set', handler);
192
+ }
193
+ onLIDMappingUpdate(handler) {
194
+ return this.on('lid-mapping.update', handler);
195
+ }
196
+ }
197
+ exports.EventManager = EventManager;
198
+ //# sourceMappingURL=EventManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventManager.js","sourceRoot":"","sources":["../../../src/wa/events/EventManager.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 GroupEventHandler {
5
+ private bot;
6
+ private logger;
7
+ constructor(bot: WhatsAppBot, logger: ILoggerService);
8
+ /**
9
+ * Configura handlers para eventos de grupos
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.GroupEventHandler = void 0;
7
+ const Chat_1 = __importDefault(require("../../modules/chat/Chat"));
8
+ class GroupEventHandler {
9
+ constructor(bot, logger) {
10
+ this.bot = bot;
11
+ this.logger = logger;
12
+ }
13
+ /**
14
+ * Configura handlers para eventos de grupos
15
+ */
16
+ setup(socket) {
17
+ // groups.update - Atualizações de grupos
18
+ socket.ev.on('groups.update', async (updates) => {
19
+ if (!this.bot.config.autoLoadGroupInfo)
20
+ return;
21
+ for (const update of updates) {
22
+ try {
23
+ if (!(update === null || update === void 0 ? void 0 : update.id))
24
+ continue;
25
+ const chat = await this.bot.getChat(new Chat_1.default(update.id));
26
+ if (chat == null) {
27
+ await this.bot.readChat({ id: update.id }, update, true);
28
+ }
29
+ else {
30
+ await this.bot.readChat({ id: update.id }, update, false);
31
+ }
32
+ }
33
+ catch (error) {
34
+ this.logger.error('Erro ao processar groups.update', error);
35
+ this.bot.emit('error', error);
36
+ }
37
+ }
38
+ });
39
+ // group-participants.update - Atualizações de participantes
40
+ socket.ev.on('group-participants.update', async (update) => {
41
+ try {
42
+ const { id, participants, action } = update;
43
+ if (!id || !participants || !action)
44
+ return;
45
+ // Mapeia ParticipantAction para UserAction
46
+ // Ignora 'modify' pois não é um UserAction válido
47
+ if (action === 'modify')
48
+ return;
49
+ // UserAction pode ser: "join" | "leave" | UserEvent ("add" | "remove" | "promote" | "demote")
50
+ let userAction = 'add';
51
+ if (action === 'add')
52
+ userAction = 'add';
53
+ else if (action === 'remove')
54
+ userAction = 'remove';
55
+ else if (action === 'promote')
56
+ userAction = 'promote';
57
+ else if (action === 'demote')
58
+ userAction = 'demote';
59
+ for (const participant of participants) {
60
+ const participantId = typeof participant === 'string'
61
+ ? participant
62
+ : participant.id || participant;
63
+ await this.bot.groupParticipantsUpdate(userAction, id, participantId, update.author || participantId);
64
+ }
65
+ }
66
+ catch (error) {
67
+ this.logger.error('Erro ao processar group-participants.update', error);
68
+ this.bot.emit('error', error);
69
+ }
70
+ });
71
+ }
72
+ }
73
+ exports.GroupEventHandler = GroupEventHandler;
74
+ //# sourceMappingURL=GroupEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/GroupEventHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { WASocket } from '@whiskeysockets/baileys';
2
+ import { ILoggerService } from '../interfaces/ILoggerService';
3
+ import WhatsAppBot from '../WhatsAppBot';
4
+ /**
5
+ * Handler para messaging-history.set (OBRIGATÓRIO no v7.0.0)
6
+ * Este handler é crítico para armazenar mensagens para getMessage funcionar
7
+ */
8
+ export declare class HistoryEventHandler {
9
+ private bot;
10
+ private logger;
11
+ constructor(bot: WhatsAppBot, logger: ILoggerService);
12
+ /**
13
+ * Configura handler para messaging-history.set (OBRIGATÓRIO no v7.0.0)
14
+ */
15
+ setup(socket: WASocket): void;
16
+ }
@@ -0,0 +1,101 @@
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.HistoryEventHandler = void 0;
7
+ const ConvertWAMessage_1 = __importDefault(require("../ConvertWAMessage"));
8
+ const ErrorMessage_1 = __importDefault(require("../../messages/ErrorMessage"));
9
+ const ID_1 = require("../ID");
10
+ /**
11
+ * Handler para messaging-history.set (OBRIGATÓRIO no v7.0.0)
12
+ * Este handler é crítico para armazenar mensagens para getMessage funcionar
13
+ */
14
+ class HistoryEventHandler {
15
+ constructor(bot, logger) {
16
+ this.bot = bot;
17
+ this.logger = logger;
18
+ }
19
+ /**
20
+ * Configura handler para messaging-history.set (OBRIGATÓRIO no v7.0.0)
21
+ */
22
+ setup(socket) {
23
+ socket.ev.on('messaging-history.set', async (update) => {
24
+ var _a;
25
+ if (!this.bot.config.autoSyncHistory)
26
+ return;
27
+ try {
28
+ const { chats, contacts, messages, syncType } = update;
29
+ // Log removido para reduzir verbosidade
30
+ // Processa chats
31
+ if (chats && Array.isArray(chats)) {
32
+ for (const chat of chats) {
33
+ try {
34
+ if (!chat.id)
35
+ continue; // v7: id pode ser null/undefined
36
+ // Armazena chat
37
+ await this.bot.updateChat({
38
+ id: chat.id,
39
+ name: chat.name || undefined,
40
+ timestamp: chat.conversationTimestamp
41
+ ? Number(chat.conversationTimestamp) * 1000
42
+ : undefined,
43
+ unreadCount: chat.unreadCount || 0,
44
+ });
45
+ }
46
+ catch (error) {
47
+ this.logger.error('Erro ao processar chat do history sync', error);
48
+ }
49
+ }
50
+ }
51
+ // Processa contatos
52
+ if (contacts && Array.isArray(contacts)) {
53
+ for (const contact of contacts) {
54
+ try {
55
+ if (!contact.id)
56
+ continue; // v7: id pode ser null/undefined
57
+ // Armazena contato
58
+ await this.bot.updateUser({
59
+ id: contact.id,
60
+ name: contact.notify || contact.verifiedName || contact.name,
61
+ });
62
+ }
63
+ catch (error) {
64
+ this.logger.error('Erro ao processar contato do history sync', error);
65
+ }
66
+ }
67
+ }
68
+ // Processa mensagens (CRÍTICO: armazenar para getMessage)
69
+ if (messages && Array.isArray(messages)) {
70
+ for (const message of messages) {
71
+ try {
72
+ if (!message.key || !message.key.remoteJid || !message.key.id)
73
+ continue;
74
+ if (message.key.remoteJid === 'status@broadcast')
75
+ continue;
76
+ // CRÍTICO: Armazena mensagem para getMessage funcionar
77
+ await this.bot.store.saveMessage(message.key.remoteJid, message, false);
78
+ // Processa mensagem (opcional, se quiser emitir eventos)
79
+ if (this.bot.config.autoSyncHistory) {
80
+ const msg = await new ConvertWAMessage_1.default(this.bot, message).get();
81
+ msg.isOld = true;
82
+ this.bot.emit('message', msg);
83
+ }
84
+ }
85
+ catch (error) {
86
+ this.logger.error('Erro ao processar mensagem do history sync', error);
87
+ this.bot.emit('message', new ErrorMessage_1.default((0, ID_1.fixID)(((_a = message === null || message === void 0 ? void 0 : message.key) === null || _a === void 0 ? void 0 : _a.remoteJid) || ''), error instanceof Error ? error : new Error(JSON.stringify(error))));
88
+ }
89
+ }
90
+ }
91
+ // Log removido para reduzir verbosidade
92
+ }
93
+ catch (error) {
94
+ this.logger.error('Erro no history sync', error);
95
+ this.bot.emit('error', error);
96
+ }
97
+ });
98
+ }
99
+ }
100
+ exports.HistoryEventHandler = HistoryEventHandler;
101
+ //# sourceMappingURL=HistoryEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistoryEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/HistoryEventHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { WASocket } from '@whiskeysockets/baileys';
2
+ import { ILoggerService } from '../interfaces/ILoggerService';
3
+ import { LIDMappingService } from '../services/LIDMappingService';
4
+ import { PendingMessageQueue } from '../services/PendingMessageQueue';
5
+ import WhatsAppBot from '../WhatsAppBot';
6
+ /**
7
+ * Handler para eventos de LID mapping (novo no v7.0.0)
8
+ * Processa mensagens pendentes quando o mapeamento ficar disponível
9
+ */
10
+ export declare class LIDMappingEventHandler {
11
+ private bot;
12
+ private logger;
13
+ private lidMappingService;
14
+ private pendingMessageQueue;
15
+ constructor(bot: WhatsAppBot, logger: ILoggerService, lidMappingService: LIDMappingService, pendingMessageQueue: PendingMessageQueue);
16
+ /**
17
+ * Configura handler para lid-mapping.update (novo no v7.0.0)
18
+ */
19
+ setup(socket: WASocket): void;
20
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LIDMappingEventHandler = void 0;
4
+ /**
5
+ * Handler para eventos de LID mapping (novo no v7.0.0)
6
+ * Processa mensagens pendentes quando o mapeamento ficar disponível
7
+ */
8
+ class LIDMappingEventHandler {
9
+ constructor(bot, logger, lidMappingService, pendingMessageQueue) {
10
+ this.bot = bot;
11
+ this.logger = logger;
12
+ this.lidMappingService = lidMappingService;
13
+ this.pendingMessageQueue = pendingMessageQueue;
14
+ }
15
+ /**
16
+ * Configura handler para lid-mapping.update (novo no v7.0.0)
17
+ */
18
+ setup(socket) {
19
+ socket.ev.on('lid-mapping.update', async (mapping) => {
20
+ try {
21
+ this.logger.info(`🔄 Evento lid-mapping.update recebido: LID ${mapping.lid} -> PN ${mapping.pn}`);
22
+ // Atualiza o mapeamento no serviço
23
+ await this.lidMappingService.handleLIDMappingUpdate(mapping);
24
+ // Processa mensagens pendentes para este LID
25
+ const pendingCount = this.pendingMessageQueue.getPendingCount(mapping.lid);
26
+ if (pendingCount > 0) {
27
+ this.logger.info(`📤 Processando ${pendingCount} mensagem(ns) pendente(s) para LID ${mapping.lid}`);
28
+ }
29
+ await this.pendingMessageQueue.processPendingMessages(mapping.lid, mapping.pn);
30
+ }
31
+ catch (error) {
32
+ this.logger.error('Erro ao processar lid-mapping.update', error);
33
+ this.bot.emit('error', error);
34
+ }
35
+ });
36
+ }
37
+ }
38
+ exports.LIDMappingEventHandler = LIDMappingEventHandler;
39
+ //# sourceMappingURL=LIDMappingEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LIDMappingEventHandler.js","sourceRoot":"","sources":["../../../src/wa/events/LIDMappingEventHandler.ts"],"names":[],"mappings":";;;AAMA;;;GAGG;AACH,MAAa,sBAAsB;IAMjC,YACE,GAAgB,EAChB,MAAsB,EACtB,iBAAoC,EACpC,mBAAwC;QAExC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAgB;QACpB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAmB,EAAE,EAAE;YAC/D,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,OAAO,CAAC,GAAG,UAAU,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBAElG,mCAAmC;gBACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBAE7D,6CAA6C;gBAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC3E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,YAAY,sCAAsC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtG,CAAC;gBACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzCD,wDAyCC"}
@@ -0,0 +1,16 @@
1
+ import { WASocket, MessageUpsertType, proto } from '@whiskeysockets/baileys';
2
+ import { ILoggerService } from '../interfaces/ILoggerService';
3
+ import WhatsAppBot from '../WhatsAppBot';
4
+ export declare class MessageEventHandler {
5
+ private bot;
6
+ private logger;
7
+ constructor(bot: WhatsAppBot, logger: ILoggerService);
8
+ /**
9
+ * Configura handlers para eventos de mensagens
10
+ */
11
+ setup(socket: WASocket): void;
12
+ /**
13
+ * Lê e processa mensagens (v7.0.0: processa TODAS as mensagens do array)
14
+ */
15
+ readMessages(messages: proto.IWebMessageInfo[], type?: MessageUpsertType): Promise<void>;
16
+ }