@kangwifi-pro/waliwa 1.0.2 → 1.1.0

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 (76) hide show
  1. package/dist/community/audio-transcription.d.ts +46 -0
  2. package/dist/community/audio-transcription.d.ts.map +1 -0
  3. package/dist/community/audio-transcription.js +108 -0
  4. package/dist/community/audio-transcription.js.map +1 -0
  5. package/dist/community/bulk-operations.d.ts +87 -0
  6. package/dist/community/bulk-operations.d.ts.map +1 -0
  7. package/dist/community/bulk-operations.js +223 -0
  8. package/dist/community/bulk-operations.js.map +1 -0
  9. package/dist/community/community-fixes.d.ts +306 -0
  10. package/dist/community/community-fixes.d.ts.map +1 -0
  11. package/dist/community/community-fixes.js +630 -0
  12. package/dist/community/community-fixes.js.map +1 -0
  13. package/dist/community/contacts-manager.d.ts +89 -0
  14. package/dist/community/contacts-manager.d.ts.map +1 -0
  15. package/dist/community/contacts-manager.js +241 -0
  16. package/dist/community/contacts-manager.js.map +1 -0
  17. package/dist/community/disappearing.d.ts +63 -0
  18. package/dist/community/disappearing.d.ts.map +1 -0
  19. package/dist/community/disappearing.js +195 -0
  20. package/dist/community/disappearing.js.map +1 -0
  21. package/dist/community/index.d.ts +101 -0
  22. package/dist/community/index.d.ts.map +1 -0
  23. package/dist/community/index.js +113 -0
  24. package/dist/community/index.js.map +1 -0
  25. package/dist/community/live-location.d.ts +85 -0
  26. package/dist/community/live-location.d.ts.map +1 -0
  27. package/dist/community/live-location.js +238 -0
  28. package/dist/community/live-location.js.map +1 -0
  29. package/dist/community/message-extras.d.ts +110 -0
  30. package/dist/community/message-extras.d.ts.map +1 -0
  31. package/dist/community/message-extras.js +472 -0
  32. package/dist/community/message-extras.js.map +1 -0
  33. package/dist/community/newsletter-extended.d.ts +142 -0
  34. package/dist/community/newsletter-extended.d.ts.map +1 -0
  35. package/dist/community/newsletter-extended.js +543 -0
  36. package/dist/community/newsletter-extended.js.map +1 -0
  37. package/dist/community/privacy-manager.d.ts +98 -0
  38. package/dist/community/privacy-manager.d.ts.map +1 -0
  39. package/dist/community/privacy-manager.js +273 -0
  40. package/dist/community/privacy-manager.js.map +1 -0
  41. package/dist/community/profile-manager.d.ts +94 -0
  42. package/dist/community/profile-manager.d.ts.map +1 -0
  43. package/dist/community/profile-manager.js +363 -0
  44. package/dist/community/profile-manager.js.map +1 -0
  45. package/dist/community/status-extended.d.ts +119 -0
  46. package/dist/community/status-extended.d.ts.map +1 -0
  47. package/dist/community/status-extended.js +444 -0
  48. package/dist/community/status-extended.js.map +1 -0
  49. package/dist/community/sticker-manager.d.ts +73 -0
  50. package/dist/community/sticker-manager.d.ts.map +1 -0
  51. package/dist/community/sticker-manager.js +251 -0
  52. package/dist/community/sticker-manager.js.map +1 -0
  53. package/dist/index.d.ts +4 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +33 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/socket/wa-socket.d.ts +77 -0
  58. package/dist/socket/wa-socket.d.ts.map +1 -1
  59. package/dist/socket/wa-socket.js +149 -3
  60. package/dist/socket/wa-socket.js.map +1 -1
  61. package/package.json +2 -2
  62. package/src/community/audio-transcription.ts +121 -0
  63. package/src/community/bulk-operations.ts +329 -0
  64. package/src/community/community-fixes.ts +771 -0
  65. package/src/community/contacts-manager.ts +282 -0
  66. package/src/community/disappearing.ts +218 -0
  67. package/src/community/index.ts +169 -0
  68. package/src/community/live-location.ts +287 -0
  69. package/src/community/message-extras.ts +523 -0
  70. package/src/community/newsletter-extended.ts +614 -0
  71. package/src/community/privacy-manager.ts +310 -0
  72. package/src/community/profile-manager.ts +402 -0
  73. package/src/community/status-extended.ts +518 -0
  74. package/src/community/sticker-manager.ts +305 -0
  75. package/src/index.ts +67 -2
  76. package/src/socket/wa-socket.ts +183 -4
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Waliwa - Message Extras (Community Request)
3
+ *
4
+ * Fitur yang sering diminta komunitas Baileys:
5
+ * - Edit message (after send)
6
+ * - Star/unstar messages
7
+ * - Get starred messages
8
+ * - View once media download (bypass)
9
+ * - Pin message dalam chat
10
+ * - Mark message as unread
11
+ * - Get message info (read by, delivered to)
12
+ * - Message info / stats
13
+ *
14
+ * Fix Baileys issues:
15
+ * - Edit message tidak support
16
+ * - Star messages tidak ada
17
+ * - View once media tidak bisa didownload
18
+ * - Message read/delivery info missing
19
+ */
20
+ import type { JIDLike, WAMessage, WAMessageKey, WALogger } from '../types/index.js';
21
+ import { BinaryNode } from '../core/binary.js';
22
+ export interface MessageInfo {
23
+ key: WAMessageKey;
24
+ status: 'pending' | 'sent' | 'delivered' | 'read' | 'played';
25
+ deliveredTo: string[];
26
+ readBy: string[];
27
+ playedBy: string[];
28
+ timestamp: number;
29
+ isStarred: boolean;
30
+ isPinned: boolean;
31
+ isEdited: boolean;
32
+ editTimestamp?: number;
33
+ }
34
+ export interface MessageExtrasOptions {
35
+ send: (data: Uint8Array) => void;
36
+ registerIqHandler: (id: string, handler: (node: BinaryNode) => void) => void;
37
+ logger?: WALogger;
38
+ /** Function untuk download media (untuk view-once bypass) */
39
+ downloadMedia?: (url: string, mediaKey: Uint8Array, type: string, mimetype: string) => Promise<Buffer>;
40
+ }
41
+ export declare class MessageExtras {
42
+ private send;
43
+ private registerIqHandler;
44
+ private logger;
45
+ private downloadMedia?;
46
+ private starredMessages;
47
+ private pinnedMessages;
48
+ constructor(opts: MessageExtrasOptions);
49
+ /**
50
+ * Edit message yang sudah dikirim
51
+ * Fix Baileys issue: edit message tidak support
52
+ */
53
+ editMessage(jid: JIDLike, key: WAMessageKey, newText: string): Promise<string>;
54
+ /**
55
+ * Star a message
56
+ * Fix Baileys issue: star messages tidak ada
57
+ */
58
+ starMessage(key: WAMessageKey, starred?: boolean): Promise<void>;
59
+ /**
60
+ * Unstar a message
61
+ */
62
+ unstarMessage(key: WAMessageKey): Promise<void>;
63
+ /**
64
+ * Get all starred messages in a chat
65
+ */
66
+ getStarredMessages(jid: JIDLike, limit?: number): Promise<WAMessage[]>;
67
+ /**
68
+ * Pin message dalam chat (highlight)
69
+ */
70
+ pinMessage(key: WAMessageKey, durationMs?: number): Promise<void>;
71
+ /**
72
+ * Unpin message
73
+ */
74
+ unpinMessage(key: WAMessageKey): Promise<void>;
75
+ /**
76
+ * Get pinned message for a chat
77
+ */
78
+ getPinnedMessage(chatJid: JIDLike): string | undefined;
79
+ /**
80
+ * Mark chat as unread
81
+ */
82
+ markChatAsUnread(jid: JIDLike): Promise<void>;
83
+ /**
84
+ * Get message info (read by, delivered to)
85
+ * Fix Baileys issue: message read/delivery info missing
86
+ */
87
+ getMessageInfo(key: WAMessageKey): Promise<MessageInfo>;
88
+ /**
89
+ * Download view-once media (bypass protection)
90
+ * Fix Baileys issue: view once media tidak bisa didownload
91
+ */
92
+ downloadViewOnceMedia(message: WAMessage): Promise<Buffer | undefined>;
93
+ /**
94
+ * React multiple emojis to a message (limited support)
95
+ */
96
+ reactMultiple(key: WAMessageKey, emojis: string[]): Promise<void>;
97
+ /**
98
+ * Remove reaction dari message
99
+ */
100
+ removeReaction(key: WAMessageKey): Promise<void>;
101
+ /**
102
+ * Forward message with quoted context
103
+ */
104
+ forwardWithContext(to: JIDLike, message: WAMessage, additionalText: string): Promise<string>;
105
+ private sendReaction;
106
+ private parseMessageNode;
107
+ private findChild;
108
+ private sendIqAndWait;
109
+ }
110
+ //# sourceMappingURL=message-extras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-extras.d.ts","sourceRoot":"","sources":["../../src/community/message-extras.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,472 @@
1
+ "use strict";
2
+ /**
3
+ * Waliwa - Message Extras (Community Request)
4
+ *
5
+ * Fitur yang sering diminta komunitas Baileys:
6
+ * - Edit message (after send)
7
+ * - Star/unstar messages
8
+ * - Get starred messages
9
+ * - View once media download (bypass)
10
+ * - Pin message dalam chat
11
+ * - Mark message as unread
12
+ * - Get message info (read by, delivered to)
13
+ * - Message info / stats
14
+ *
15
+ * Fix Baileys issues:
16
+ * - Edit message tidak support
17
+ * - Star messages tidak ada
18
+ * - View once media tidak bisa didownload
19
+ * - Message read/delivery info missing
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.MessageExtras = void 0;
23
+ const binary_js_1 = require("../core/binary.js");
24
+ const jid_js_1 = require("../utils/jid.js");
25
+ const message_encoder_js_1 = require("../messages/message-encoder.js");
26
+ const logger_js_1 = require("../utils/logger.js");
27
+ class MessageExtras {
28
+ send;
29
+ registerIqHandler;
30
+ logger;
31
+ downloadMedia;
32
+ starredMessages = new Set();
33
+ pinnedMessages = new Map(); // chatJid -> messageId
34
+ constructor(opts) {
35
+ this.send = opts.send;
36
+ this.registerIqHandler = opts.registerIqHandler;
37
+ this.logger = opts.logger ?? new logger_js_1.SilentLogger();
38
+ this.downloadMedia = opts.downloadMedia;
39
+ }
40
+ /**
41
+ * Edit message yang sudah dikirim
42
+ * Fix Baileys issue: edit message tidak support
43
+ */
44
+ async editMessage(jid, key, newText) {
45
+ const messageId = (0, message_encoder_js_1.generateMessageId)();
46
+ const node = {
47
+ tag: 'message',
48
+ attrs: {
49
+ to: (0, jid_js_1.jidToString)(jid),
50
+ type: 'edit',
51
+ id: messageId
52
+ },
53
+ content: [
54
+ {
55
+ tag: 'edit_message',
56
+ attrs: {
57
+ original_id: key.id,
58
+ original_from_me: key.fromMe ? 'true' : 'false',
59
+ original_participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
60
+ },
61
+ content: [
62
+ {
63
+ tag: 'conversation',
64
+ attrs: {},
65
+ content: newText
66
+ }
67
+ ]
68
+ }
69
+ ]
70
+ };
71
+ this.send((0, binary_js_1.encodeBinaryNode)(node));
72
+ this.logger.info(`Edited message ${key.id} in ${(0, jid_js_1.jidToString)(jid)}`);
73
+ return messageId;
74
+ }
75
+ /**
76
+ * Star a message
77
+ * Fix Baileys issue: star messages tidak ada
78
+ */
79
+ async starMessage(key, starred = true) {
80
+ const id = (0, message_encoder_js_1.generateStanzaId)();
81
+ const node = {
82
+ tag: 'iq',
83
+ attrs: {
84
+ type: 'set',
85
+ to: (0, jid_js_1.jidToString)(key.remoteJid),
86
+ id
87
+ },
88
+ content: [
89
+ {
90
+ tag: 'star',
91
+ attrs: {
92
+ action: starred ? 'star' : 'unstar',
93
+ id: key.id,
94
+ from_me: key.fromMe ? 'true' : 'false',
95
+ participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
96
+ }
97
+ }
98
+ ]
99
+ };
100
+ await this.sendIqAndWait(node, id);
101
+ if (starred) {
102
+ this.starredMessages.add(key.id);
103
+ }
104
+ else {
105
+ this.starredMessages.delete(key.id);
106
+ }
107
+ this.logger.info(`${starred ? 'Starred' : 'Unstarred'} message ${key.id}`);
108
+ }
109
+ /**
110
+ * Unstar a message
111
+ */
112
+ async unstarMessage(key) {
113
+ return this.starMessage(key, false);
114
+ }
115
+ /**
116
+ * Get all starred messages in a chat
117
+ */
118
+ async getStarredMessages(jid, limit = 50) {
119
+ const id = (0, message_encoder_js_1.generateStanzaId)();
120
+ const node = {
121
+ tag: 'iq',
122
+ attrs: {
123
+ type: 'get',
124
+ to: (0, jid_js_1.jidToString)(jid),
125
+ id
126
+ },
127
+ content: [
128
+ {
129
+ tag: 'starred',
130
+ attrs: { limit: limit.toString() }
131
+ }
132
+ ]
133
+ };
134
+ const response = await this.sendIqAndWait(node, id);
135
+ const starredNode = this.findChild(response, 'starred');
136
+ const messages = [];
137
+ if (Array.isArray(starredNode?.content)) {
138
+ for (const child of starredNode.content) {
139
+ if (typeof child !== 'object' || child?.tag !== 'message')
140
+ continue;
141
+ const msg = this.parseMessageNode(child);
142
+ if (msg) {
143
+ messages.push(msg);
144
+ this.starredMessages.add(msg.key.id);
145
+ }
146
+ }
147
+ }
148
+ return messages;
149
+ }
150
+ /**
151
+ * Pin message dalam chat (highlight)
152
+ */
153
+ async pinMessage(key, durationMs = 24 * 60 * 60 * 1000) {
154
+ const id = (0, message_encoder_js_1.generateStanzaId)();
155
+ const node = {
156
+ tag: 'iq',
157
+ attrs: {
158
+ type: 'set',
159
+ to: (0, jid_js_1.jidToString)(key.remoteJid),
160
+ id
161
+ },
162
+ content: [
163
+ {
164
+ tag: 'pin',
165
+ attrs: {
166
+ action: 'pin',
167
+ id: key.id,
168
+ from_me: key.fromMe ? 'true' : 'false',
169
+ participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid),
170
+ duration: Math.floor(durationMs / 1000).toString()
171
+ }
172
+ }
173
+ ]
174
+ };
175
+ await this.sendIqAndWait(node, id);
176
+ this.pinnedMessages.set((0, jid_js_1.jidToString)(key.remoteJid), key.id);
177
+ this.logger.info(`Pinned message ${key.id} in ${(0, jid_js_1.jidToString)(key.remoteJid)}`);
178
+ }
179
+ /**
180
+ * Unpin message
181
+ */
182
+ async unpinMessage(key) {
183
+ const id = (0, message_encoder_js_1.generateStanzaId)();
184
+ const node = {
185
+ tag: 'iq',
186
+ attrs: {
187
+ type: 'set',
188
+ to: (0, jid_js_1.jidToString)(key.remoteJid),
189
+ id
190
+ },
191
+ content: [
192
+ {
193
+ tag: 'pin',
194
+ attrs: {
195
+ action: 'unpin',
196
+ id: key.id,
197
+ from_me: key.fromMe ? 'true' : 'false',
198
+ participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
199
+ }
200
+ }
201
+ ]
202
+ };
203
+ await this.sendIqAndWait(node, id);
204
+ this.pinnedMessages.delete((0, jid_js_1.jidToString)(key.remoteJid));
205
+ this.logger.info(`Unpinned message ${key.id}`);
206
+ }
207
+ /**
208
+ * Get pinned message for a chat
209
+ */
210
+ getPinnedMessage(chatJid) {
211
+ return this.pinnedMessages.get((0, jid_js_1.jidToString)(chatJid));
212
+ }
213
+ /**
214
+ * Mark chat as unread
215
+ */
216
+ async markChatAsUnread(jid) {
217
+ const id = (0, message_encoder_js_1.generateStanzaId)();
218
+ const node = {
219
+ tag: 'iq',
220
+ attrs: {
221
+ type: 'set',
222
+ to: (0, jid_js_1.jidToString)(jid),
223
+ id
224
+ },
225
+ content: [
226
+ {
227
+ tag: 'mark_unread',
228
+ attrs: {}
229
+ }
230
+ ]
231
+ };
232
+ await this.sendIqAndWait(node, id);
233
+ this.logger.info(`Marked ${(0, jid_js_1.jidToString)(jid)} as unread`);
234
+ }
235
+ /**
236
+ * Get message info (read by, delivered to)
237
+ * Fix Baileys issue: message read/delivery info missing
238
+ */
239
+ async getMessageInfo(key) {
240
+ const id = (0, message_encoder_js_1.generateStanzaId)();
241
+ const node = {
242
+ tag: 'iq',
243
+ attrs: {
244
+ type: 'get',
245
+ to: 's.whatsapp.net',
246
+ id
247
+ },
248
+ content: [
249
+ {
250
+ tag: 'message_info',
251
+ attrs: {
252
+ id: key.id,
253
+ from_me: key.fromMe ? 'true' : 'false',
254
+ participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
255
+ }
256
+ }
257
+ ]
258
+ };
259
+ const response = await this.sendIqAndWait(node, id);
260
+ const infoNode = this.findChild(response, 'message_info');
261
+ const info = {
262
+ key,
263
+ status: 'sent',
264
+ deliveredTo: [],
265
+ readBy: [],
266
+ playedBy: [],
267
+ timestamp: parseInt(infoNode?.attrs?.timestamp ?? '0', 10),
268
+ isStarred: this.starredMessages.has(key.id),
269
+ isPinned: this.pinnedMessages.get((0, jid_js_1.jidToString)(key.remoteJid)) === key.id,
270
+ isEdited: infoNode?.attrs?.is_edited === 'true'
271
+ };
272
+ if (Array.isArray(infoNode?.content)) {
273
+ for (const child of infoNode.content) {
274
+ if (typeof child !== 'object' || !child?.tag)
275
+ continue;
276
+ if (child.tag === 'delivered_to' && Array.isArray(child.content)) {
277
+ info.deliveredTo = child.content
278
+ .filter(c => typeof c === 'object' && c?.tag === 'recipient')
279
+ .map(c => c.attrs?.jid)
280
+ .filter(Boolean);
281
+ }
282
+ if (child.tag === 'read_by' && Array.isArray(child.content)) {
283
+ info.readBy = child.content
284
+ .filter(c => typeof c === 'object' && c?.tag === 'recipient')
285
+ .map(c => c.attrs?.jid)
286
+ .filter(Boolean);
287
+ }
288
+ if (child.tag === 'played_by' && Array.isArray(child.content)) {
289
+ info.playedBy = child.content
290
+ .filter(c => typeof c === 'object' && c?.tag === 'recipient')
291
+ .map(c => c.attrs?.jid)
292
+ .filter(Boolean);
293
+ }
294
+ if (child.tag === 'status') {
295
+ info.status = child.attrs?.value ?? 'sent';
296
+ }
297
+ }
298
+ }
299
+ return info;
300
+ }
301
+ /**
302
+ * Download view-once media (bypass protection)
303
+ * Fix Baileys issue: view once media tidak bisa didownload
304
+ */
305
+ async downloadViewOnceMedia(message) {
306
+ if (!this.downloadMedia) {
307
+ throw new Error('downloadMedia function not provided');
308
+ }
309
+ // Check if message has view-once media
310
+ const mediaTypes = ['image', 'video', 'audio', 'document', 'sticker'];
311
+ let mediaInfo;
312
+ for (const type of mediaTypes) {
313
+ const media = message.message?.[type];
314
+ if (media?.viewOnce === true || message.message?.viewOnce === true) {
315
+ mediaInfo = {
316
+ url: media.url,
317
+ mediaKey: media.mediaKey,
318
+ type,
319
+ mimetype: media.mimetype
320
+ };
321
+ break;
322
+ }
323
+ }
324
+ if (!mediaInfo) {
325
+ this.logger.debug('Message does not contain view-once media');
326
+ return undefined;
327
+ }
328
+ this.logger.info(`Downloading view-once ${mediaInfo.type} media`);
329
+ return this.downloadMedia(mediaInfo.url, mediaInfo.mediaKey, mediaInfo.type, mediaInfo.mimetype);
330
+ }
331
+ /**
332
+ * React multiple emojis to a message (limited support)
333
+ */
334
+ async reactMultiple(key, emojis) {
335
+ // WhatsApp currently only supports single reaction
336
+ // But we send sequentially for last-one-wins behavior
337
+ for (const emoji of emojis) {
338
+ await this.sendReaction(key, emoji);
339
+ await new Promise(resolve => setTimeout(resolve, 100));
340
+ }
341
+ }
342
+ /**
343
+ * Remove reaction dari message
344
+ */
345
+ async removeReaction(key) {
346
+ return this.sendReaction(key, '');
347
+ }
348
+ /**
349
+ * Forward message with quoted context
350
+ */
351
+ async forwardWithContext(to, message, additionalText) {
352
+ const messageId = (0, message_encoder_js_1.generateMessageId)();
353
+ const node = {
354
+ tag: 'message',
355
+ attrs: {
356
+ to: (0, jid_js_1.jidToString)(to),
357
+ type: 'text',
358
+ id: messageId
359
+ },
360
+ content: [
361
+ {
362
+ tag: 'conversation',
363
+ attrs: {},
364
+ content: additionalText
365
+ },
366
+ {
367
+ tag: 'contextInfo',
368
+ attrs: {},
369
+ content: [
370
+ {
371
+ tag: 'stanzaId',
372
+ attrs: {},
373
+ content: message.key.id
374
+ },
375
+ {
376
+ tag: 'participant',
377
+ attrs: {},
378
+ content: (0, jid_js_1.jidToString)(message.key.participant ?? message.key.remoteJid)
379
+ },
380
+ {
381
+ tag: 'forwardingScore',
382
+ attrs: {},
383
+ content: '1'
384
+ },
385
+ {
386
+ tag: 'isForwarded',
387
+ attrs: {},
388
+ content: 'true'
389
+ }
390
+ ]
391
+ }
392
+ ]
393
+ };
394
+ this.send((0, binary_js_1.encodeBinaryNode)(node));
395
+ return messageId;
396
+ }
397
+ // ============== Internal Helpers ==============
398
+ async sendReaction(key, emoji) {
399
+ const messageId = (0, message_encoder_js_1.generateMessageId)();
400
+ const node = {
401
+ tag: 'message',
402
+ attrs: {
403
+ to: (0, jid_js_1.jidToString)(key.remoteJid),
404
+ type: 'reaction',
405
+ id: messageId
406
+ },
407
+ content: [
408
+ {
409
+ tag: 'reactionMessage',
410
+ attrs: {
411
+ key: JSON.stringify({
412
+ id: key.id,
413
+ fromMe: key.fromMe,
414
+ remoteJid: (0, jid_js_1.jidToString)(key.remoteJid),
415
+ participant: key.participant ? (0, jid_js_1.jidToString)(key.participant) : undefined
416
+ }),
417
+ text: emoji,
418
+ timestamp: Math.floor(Date.now() / 1000).toString()
419
+ }
420
+ }
421
+ ]
422
+ };
423
+ this.send((0, binary_js_1.encodeBinaryNode)(node));
424
+ }
425
+ parseMessageNode(node) {
426
+ if (!node.attrs)
427
+ return null;
428
+ return {
429
+ key: {
430
+ remoteJid: node.attrs.from ?? node.attrs.to ?? '',
431
+ fromMe: node.attrs.from_me === 'true',
432
+ id: node.attrs.id ?? ''
433
+ },
434
+ message: typeof node.content === 'string' ? { text: node.content } : {},
435
+ messageTimestamp: parseInt(node.attrs.timestamp ?? '0', 10),
436
+ status: 'read'
437
+ };
438
+ }
439
+ findChild(node, tag) {
440
+ if (!Array.isArray(node.content))
441
+ return null;
442
+ for (const child of node.content) {
443
+ if (typeof child === 'object' && child?.tag === tag)
444
+ return child;
445
+ }
446
+ return null;
447
+ }
448
+ sendIqAndWait(node, id, timeoutMs = 15000) {
449
+ return new Promise((resolve, reject) => {
450
+ const timeout = setTimeout(() => reject(new Error(`IQ ${id} timeout`)), timeoutMs);
451
+ this.registerIqHandler(id, (response) => {
452
+ clearTimeout(timeout);
453
+ const type = response.attrs?.type;
454
+ if (type === 'error') {
455
+ reject(new Error(`IQ error: ${JSON.stringify(response.attrs)}`));
456
+ }
457
+ else {
458
+ resolve(response);
459
+ }
460
+ });
461
+ try {
462
+ this.send((0, binary_js_1.encodeBinaryNode)(node));
463
+ }
464
+ catch (err) {
465
+ clearTimeout(timeout);
466
+ reject(err);
467
+ }
468
+ });
469
+ }
470
+ }
471
+ exports.MessageExtras = MessageExtras;
472
+ //# sourceMappingURL=message-extras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-extras.js","sourceRoot":"","sources":["../../src/community/message-extras.ts"],"names":[],"mappings":"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"}