jsdecryptor 4.0.3 → 4.0.4

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 (113) hide show
  1. package/Database/database.js +1 -446
  2. package/Database/migration.js +1 -327
  3. package/Database/pgSync.js +1 -229
  4. package/Database/settingsStore.js +1 -305
  5. package/config.js +1 -32
  6. package/dave.js +1 -3063
  7. package/davelib/botConfig.js +1 -71
  8. package/davelib/greetings.js +1 -47
  9. package/davelib/id.js +1 -11
  10. package/davelib/index.js +1 -577
  11. package/davelib/isAdmin.js +1 -32
  12. package/davelib/isBanned.js +1 -12
  13. package/davelib/isOwner.js +1 -15
  14. package/davelib/messageConfig.js +1 -15
  15. package/davelib/messageHandler.js +1 -87
  16. package/davelib/reactions.js +1 -180
  17. package/davelib/welcome.js +1 -100
  18. package/daveset.js +1 -16
  19. package/davexcore/anti/antiaudio.js +1 -106
  20. package/davexcore/anti/antibadword.js +1 -313
  21. package/davexcore/anti/antibug.js +1 -156
  22. package/davexcore/anti/anticall.js +1 -219
  23. package/davexcore/anti/antichart.js +1 -280
  24. package/davexcore/anti/antidelete.js +1 -673
  25. package/davexcore/anti/antideletestatus.js +1 -535
  26. package/davexcore/anti/antidemote.js +1 -352
  27. package/davexcore/anti/antidocument.js +1 -105
  28. package/davexcore/anti/antiedit.js +1 -410
  29. package/davexcore/anti/antifiles.js +1 -109
  30. package/davexcore/anti/antigroupmention.js +1 -206
  31. package/davexcore/anti/antiimage.js +1 -105
  32. package/davexcore/anti/antikick.js +1 -125
  33. package/davexcore/anti/antilink.js +1 -237
  34. package/davexcore/anti/antimention.js +1 -143
  35. package/davexcore/anti/antipromote.js +1 -320
  36. package/davexcore/anti/antisticker.js +1 -105
  37. package/davexcore/anti/antitag.js +1 -191
  38. package/davexcore/anti/antivideo.js +1 -105
  39. package/davexcore/anti/antiviewonce.js +1 -396
  40. package/davexcore/anti/groupanticall.js +1 -262
  41. package/davexcore/anti/mention.js +1 -242
  42. package/davexcore/automation/alwaysonline.js +1 -226
  43. package/davexcore/automation/autoReadReciepts.js +1 -96
  44. package/davexcore/automation/autoread.js +1 -104
  45. package/davexcore/automation/autorecording.js +1 -197
  46. package/davexcore/automation/autostatus.js +1 -317
  47. package/davexcore/automation/autotyping.js +1 -197
  48. package/davexcore/automation/chatbot.js +1 -444
  49. package/davexcore/automation/chatmanage.js +1 -199
  50. package/davexcore/automation/devReact.js +1 -43
  51. package/davexcore/automation/goodbye.js +1 -181
  52. package/davexcore/automation/greetings.js +1 -154
  53. package/davexcore/automation/welcome.js +1 -187
  54. package/davexcore/group/addmember.js +1 -101
  55. package/davexcore/group/ban.js +1 -63
  56. package/davexcore/group/blockUnblock.js +1 -177
  57. package/davexcore/group/clear.js +1 -196
  58. package/davexcore/group/creategroup.js +1 -43
  59. package/davexcore/group/demote.js +1 -115
  60. package/davexcore/group/disappear.js +1 -67
  61. package/davexcore/group/groupinfo.js +1 -167
  62. package/davexcore/group/groupmanage.js +1 -133
  63. package/davexcore/group/hidetag.js +1 -108
  64. package/davexcore/group/joinrequests.js +1 -145
  65. package/davexcore/group/kick.js +1 -92
  66. package/davexcore/group/kickall.js +1 -63
  67. package/davexcore/group/leave.js +1 -38
  68. package/davexcore/group/linkgroup.js +1 -63
  69. package/davexcore/group/mute.js +1 -57
  70. package/davexcore/group/online.js +1 -117
  71. package/davexcore/group/pmblocker.js +1 -65
  72. package/davexcore/group/promote.js +1 -93
  73. package/davexcore/group/resetlink.js +1 -57
  74. package/davexcore/group/staff.js +1 -99
  75. package/davexcore/group/tag.js +1 -111
  76. package/davexcore/group/tagadmins.js +1 -88
  77. package/davexcore/group/tagall.js +1 -99
  78. package/davexcore/group/tagnotadmin.js +1 -92
  79. package/davexcore/group/topmembers.js +1 -202
  80. package/davexcore/group/unban.js +1 -64
  81. package/davexcore/group/unmute.js +1 -45
  82. package/davexcore/group/warn.js +1 -83
  83. package/davexcore/group/warnings.js +1 -26
  84. package/davexcore/owner/alive.js +1 -67
  85. package/davexcore/owner/bio.js +1 -49
  86. package/davexcore/owner/broadcast.js +1 -74
  87. package/davexcore/owner/chanel.js +1 -79
  88. package/davexcore/owner/channelid.js +1 -50
  89. package/davexcore/owner/clearsession.js +1 -86
  90. package/davexcore/owner/help.js +1 -649
  91. package/davexcore/owner/hijack.js +1 -69
  92. package/davexcore/owner/menuManage.js +1 -173
  93. package/davexcore/owner/menuSettings.js +1 -1
  94. package/davexcore/owner/owner.js +1 -17
  95. package/davexcore/owner/pair.js +1 -160
  96. package/davexcore/owner/pinchat.js +1 -44
  97. package/davexcore/owner/ping.js +1 -65
  98. package/davexcore/owner/profilepic.js +1 -61
  99. package/davexcore/owner/resetmenuimage.js +1 -16
  100. package/davexcore/owner/setGroupStatus.js +1 -315
  101. package/davexcore/owner/setbotconfig.js +1 -306
  102. package/davexcore/owner/setfont.js +1 -79
  103. package/davexcore/owner/setowner.js +1 -144
  104. package/davexcore/owner/setprefix.js +1 -131
  105. package/davexcore/owner/settings.js +1 -98
  106. package/davexcore/owner/startupwelcome.js +1 -94
  107. package/davexcore/owner/sudo.js +1 -138
  108. package/davexcore/owner/update.js +1 -282
  109. package/davexcore/utility/bible.js +1 -239
  110. package/davexcore/utility/encrypt.js +1 -99
  111. package/davexcore/utility/sports.js +1 -403
  112. package/index.js +1 -994
  113. package/package.json +1 -1
@@ -1,535 +1 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const { downloadContentFromMessage, normalizeMessageContent } = require('@whiskeysockets/baileys');
4
- const { writeFile, unlink, readdir, stat } = require('fs/promises');
5
- const { getOwnerConfig, setOwnerConfig } = require('../../Database/settingsStore');
6
- const { createFakeContact, getBotName } = require('../../davelib/fakeContact');
7
-
8
- const statusStore = new Map();
9
- const deletedStatusStore = new Map();
10
- const STATUS_MEDIA_DIR = path.join(__dirname, '../tmp/status_media');
11
-
12
- const DEFAULT_STATUS_CONFIG = {
13
- enabled: true,
14
- mode: 'private',
15
- captureMedia: true,
16
- maxStorageMB: 100,
17
- cleanupInterval: 30,
18
- autoCleanup: true,
19
- maxStatuses: 200,
20
- notifyOwner: true,
21
- cleanRetrieved: true,
22
- maxAgeHours: 12
23
- };
24
-
25
- let statusCleanupInterval = null;
26
- initializeStatusSystem();
27
- function initializeStatusSystem() {
28
- ensureStatusMediaDir();
29
- startStatusCleanupInterval();
30
- }
31
-
32
- async function ensureStatusMediaDir() {
33
- try {
34
- await fs.promises.mkdir(STATUS_MEDIA_DIR, { recursive: true });
35
- } catch (err) {}
36
- }
37
-
38
- async function getStatusFolderSizeInMB() {
39
- try {
40
- const files = await readdir(STATUS_MEDIA_DIR);
41
- let totalSize = 0;
42
- for (const file of files) {
43
- const filePath = path.join(STATUS_MEDIA_DIR, file);
44
- try {
45
- const stats = await stat(filePath);
46
- if (stats.isFile()) totalSize += stats.size;
47
- } catch {}
48
- }
49
- return totalSize / (1024 * 1024);
50
- } catch {
51
- return 0;
52
- }
53
- }
54
-
55
- async function cleanStatusMediaFolder() {
56
- try {
57
- const config = loadStatusConfig();
58
- const sizeMB = await getStatusFolderSizeInMB();
59
- if (sizeMB > config.maxStorageMB) {
60
- const files = await readdir(STATUS_MEDIA_DIR);
61
- let deletedCount = 0;
62
- for (const file of files) {
63
- const filePath = path.join(STATUS_MEDIA_DIR, file);
64
- try {
65
- await unlink(filePath);
66
- deletedCount++;
67
- } catch {}
68
- }
69
- return deletedCount;
70
- }
71
- return 0;
72
- } catch {
73
- return 0;
74
- }
75
- }
76
-
77
- function loadStatusConfig() {
78
- try {
79
- const config = getOwnerConfig('status_antidelete');
80
- if (!config || typeof config !== 'object') {
81
- saveStatusConfig(DEFAULT_STATUS_CONFIG);
82
- return { ...DEFAULT_STATUS_CONFIG };
83
- }
84
- return { ...DEFAULT_STATUS_CONFIG, ...config };
85
- } catch {
86
- return { ...DEFAULT_STATUS_CONFIG };
87
- }
88
- }
89
-
90
- function saveStatusConfig(config) {
91
- try {
92
- setOwnerConfig('status_antidelete', config);
93
- return true;
94
- } catch {
95
- return false;
96
- }
97
- }
98
-
99
- function startStatusCleanupInterval() {
100
- const config = loadStatusConfig();
101
- if (statusCleanupInterval) clearInterval(statusCleanupInterval);
102
- statusCleanupInterval = setInterval(() => {
103
- cleanStatusMediaFolder().catch(() => {});
104
- autoCleanOldStatuses();
105
- }, config.cleanupInterval * 60 * 1000);
106
- }
107
-
108
- async function isStatusAuthorized(message) {
109
- try {
110
- const { isSudo } = require('../../davelib/index');
111
- const senderId = message.key.participant || message.key.remoteJid;
112
- return message.key.fromMe || await isSudo(senderId);
113
- } catch {
114
- return message.key.fromMe;
115
- }
116
- }
117
-
118
- async function handleStatusAntideleteCommand(sock, chatId, message, match) {
119
- if (!await isStatusAuthorized(message)) {
120
- const fakeContact = createFakeContact(message);
121
- return sock.sendMessage(chatId, {
122
- text: 'Owner only'
123
- }, { quoted: fakeContact });
124
- }
125
-
126
- const fakeContact = createFakeContact(message);
127
- const config = loadStatusConfig();
128
-
129
- if (!match) {
130
- return showStatusAntideleteStatus(sock, chatId, fakeContact, config);
131
- }
132
-
133
- const command = match.toLowerCase().trim();
134
- return processStatusCommand(sock, chatId, fakeContact, command, config);
135
- }
136
-
137
- async function showStatusAntideleteStatus(sock, chatId, fakeContact, config) {
138
- const sizeMB = await getStatusFolderSizeInMB();
139
-
140
- const text = `*STATUS ANTIDELETE*\n\n` +
141
- `Status: ${config.enabled ? 'ON' : 'OFF'}\n` +
142
- `Mode: ${config.mode}\n` +
143
- `Storage: ${sizeMB.toFixed(1)}MB / ${config.maxStorageMB}MB\n` +
144
- `Cached: ${statusStore.size} statuses\n` +
145
- `Deleted: ${deletedStatusStore.size} captured\n\n` +
146
- `*Commands:*\n` +
147
- `on/off - Toggle\n` +
148
- `private - Send to owner DM\n` +
149
- `chat - Send in original chat\n` +
150
- `both - Send to both\n` +
151
- `clean - Clear media storage\n` +
152
- `stats - View statistics\n` +
153
- `list - Recent deleted statuses\n` +
154
- `settings - View settings`;
155
-
156
- await sock.sendMessage(chatId, { text }, { quoted: fakeContact });
157
- }
158
-
159
- async function processStatusCommand(sock, chatId, fakeContact, command, config) {
160
- let responseText = '';
161
-
162
- switch (command) {
163
- case 'on':
164
- config.enabled = true;
165
- responseText = 'Status Antidelete: ON';
166
- break;
167
- case 'off':
168
- config.enabled = false;
169
- responseText = 'Status Antidelete: OFF';
170
- break;
171
- case 'private':
172
- config.mode = 'private';
173
- responseText = 'Mode set to: Private (owner DM only)';
174
- break;
175
- case 'chat':
176
- config.mode = 'chat';
177
- responseText = 'Mode set to: Chat (original chat)';
178
- break;
179
- case 'both':
180
- config.mode = 'both';
181
- responseText = 'Mode set to: Both (DM + chat)';
182
- break;
183
- case 'clean': {
184
- const deletedCount = await cleanStatusMediaFolder();
185
- responseText = `Cleaned ${deletedCount} media files`;
186
- break;
187
- }
188
- case 'stats': {
189
- const sizeMB = await getStatusFolderSizeInMB();
190
- responseText = `*Status Antidelete Stats*\n\nCached: ${statusStore.size}\nDeleted captured: ${deletedStatusStore.size}\nStorage: ${sizeMB.toFixed(1)}MB / ${config.maxStorageMB}MB\nMax age: ${config.maxAgeHours}h\nAuto cleanup: ${config.autoCleanup ? 'ON' : 'OFF'}`;
191
- break;
192
- }
193
- case 'list': {
194
- const recentStatuses = Array.from(deletedStatusStore.values())
195
- .slice(-5)
196
- .reverse();
197
-
198
- if (recentStatuses.length === 0) {
199
- responseText = 'No deleted statuses recorded yet.';
200
- } else {
201
- responseText = '*Recent Deleted Statuses:*\n\n';
202
- recentStatuses.forEach((status, index) => {
203
- const time = new Date(status.timestamp).toLocaleTimeString();
204
- const sender = status.senderNumber || status.sender.split('@')[0];
205
- const name = status.pushName || 'Unknown';
206
- responseText += `${index + 1}. ${name} (+${sender})\n Type: ${status.mediaType || 'text'} | ${time}\n`;
207
- });
208
- }
209
- break;
210
- }
211
- case 'settings': {
212
- responseText = `*Current Settings:*\n\n` +
213
- `Enabled: ${config.enabled}\n` +
214
- `Mode: ${config.mode}\n` +
215
- `Capture media: ${config.captureMedia}\n` +
216
- `Max storage: ${config.maxStorageMB}MB\n` +
217
- `Cleanup interval: ${config.cleanupInterval}min\n` +
218
- `Auto cleanup: ${config.autoCleanup}\n` +
219
- `Max statuses: ${config.maxStatuses}\n` +
220
- `Max age: ${config.maxAgeHours}h\n` +
221
- `Notify owner: ${config.notifyOwner}\n` +
222
- `Clean after retrieval: ${config.cleanRetrieved}`;
223
- break;
224
- }
225
- default:
226
- responseText = 'Unknown command. Use: on, off, private, chat, both, clean, stats, list, settings';
227
- }
228
-
229
- if (!responseText.startsWith('Unknown')) {
230
- saveStatusConfig(config);
231
- startStatusCleanupInterval();
232
- }
233
-
234
- await sock.sendMessage(chatId, { text: responseText }, { quoted: fakeContact });
235
- }
236
-
237
- async function storeStatusMessage(sock, message) {
238
- try {
239
- await ensureStatusMediaDir();
240
- const config = loadStatusConfig();
241
- if (!config.enabled) return;
242
-
243
- if (!message.key?.id) return;
244
- if (message.key.fromMe) return;
245
- if (message.key.remoteJid !== 'status@broadcast') return;
246
-
247
- const msgContent = normalizeMessageContent(message.message) || message.message;
248
- if (!msgContent) return;
249
-
250
- const protoMsg = msgContent?.protocolMessage;
251
- if (protoMsg && (protoMsg.type === 0 || protoMsg.type === 4)) {
252
- return;
253
- }
254
-
255
- if (statusStore.size >= config.maxStatuses) {
256
- const firstKey = statusStore.keys().next().value;
257
- const oldStatus = statusStore.get(firstKey);
258
- statusStore.delete(firstKey);
259
- if (oldStatus?.mediaPath) {
260
- unlink(oldStatus.mediaPath).catch(() => {});
261
- }
262
- }
263
-
264
- const statusId = message.key.id;
265
- const sender = message.key.participant || message.key.remoteJid;
266
- const pushName = message.pushName || 'Unknown';
267
- let senderNumber = sender.split('@')[0].split(':')[0];
268
-
269
- if (sender.includes('@lid') || senderNumber.length > 15 || !/^\d+$/.test(senderNumber)) {
270
- try {
271
- if (sock?.signalRepository?.lidMapping?.getPNForLID) {
272
- const formats = [sender, `${senderNumber}:0@lid`, `${senderNumber}@lid`];
273
- for (const fmt of formats) {
274
- try {
275
- const pn = await sock.signalRepository.lidMapping.getPNForLID(fmt);
276
- if (pn) {
277
- const num = String(pn).split('@')[0].replace(/[^0-9]/g, '');
278
- if (num.length >= 7 && num.length <= 15 && num !== senderNumber) {
279
- senderNumber = num;
280
- break;
281
- }
282
- }
283
- } catch {}
284
- }
285
- }
286
- } catch {}
287
- }
288
-
289
- const storedStatus = {
290
- id: statusId,
291
- sender,
292
- senderNumber,
293
- pushName,
294
- chatId: message.key.remoteJid,
295
- type: 'status',
296
- mediaType: '',
297
- mediaPath: '',
298
- content: '',
299
- timestamp: Date.now(),
300
- isDeleted: false
301
- };
302
-
303
- await extractStatusContent(msgContent, storedStatus, config);
304
-
305
- if (storedStatus.content || storedStatus.mediaType) {
306
- statusStore.set(statusId, storedStatus);
307
- }
308
-
309
- } catch (err) {}
310
- }
311
-
312
- async function extractStatusContent(msg, storedStatus, config) {
313
- try {
314
- if (!msg) return;
315
-
316
- if (msg.imageMessage) {
317
- storedStatus.mediaType = 'image';
318
- storedStatus.content = msg.imageMessage.caption || '';
319
- if (config.captureMedia) {
320
- storedStatus.mediaPath = await downloadStatusMedia(
321
- msg.imageMessage,
322
- 'image',
323
- `${storedStatus.timestamp}_status.jpg`
324
- );
325
- }
326
- } else if (msg.videoMessage) {
327
- storedStatus.mediaType = 'video';
328
- storedStatus.content = msg.videoMessage.caption || '';
329
- if (config.captureMedia) {
330
- storedStatus.mediaPath = await downloadStatusMedia(
331
- msg.videoMessage,
332
- 'video',
333
- `${storedStatus.timestamp}_status.mp4`
334
- );
335
- }
336
- } else if (msg.audioMessage) {
337
- storedStatus.mediaType = 'audio';
338
- if (config.captureMedia) {
339
- const mime = msg.audioMessage.mimetype || '';
340
- const ext = mime.includes('mpeg') ? 'mp3' : (mime.includes('ogg') ? 'ogg' : 'mp3');
341
- storedStatus.mediaPath = await downloadStatusMedia(
342
- msg.audioMessage,
343
- 'audio',
344
- `${storedStatus.timestamp}_status.${ext}`
345
- );
346
- }
347
- } else if (msg.extendedTextMessage?.text) {
348
- storedStatus.content = msg.extendedTextMessage.text;
349
- storedStatus.mediaType = 'text';
350
- } else if (msg.conversation) {
351
- storedStatus.content = msg.conversation;
352
- storedStatus.mediaType = 'text';
353
- }
354
- } catch {}
355
- }
356
-
357
- async function downloadStatusMedia(message, type, fileName) {
358
- try {
359
- const stream = await downloadContentFromMessage(message, type);
360
- let buffer = Buffer.from([]);
361
- for await (const chunk of stream) {
362
- buffer = Buffer.concat([buffer, chunk]);
363
- }
364
- const filePath = path.join(STATUS_MEDIA_DIR, fileName);
365
- await writeFile(filePath, buffer);
366
- return filePath;
367
- } catch {
368
- return null;
369
- }
370
- }
371
-
372
- async function handleStatusProtocolRevoke(sock, message) {
373
- try {
374
- const config = loadStatusConfig();
375
- if (!config.enabled) return;
376
-
377
- if (message.key.remoteJid !== 'status@broadcast') return;
378
-
379
- const msgContent = normalizeMessageContent(message.message) || message.message;
380
- if (!msgContent) return;
381
-
382
- const protoMsg = msgContent?.protocolMessage;
383
- if (!protoMsg || protoMsg.type !== 0) return;
384
-
385
- const revokedId = protoMsg.key?.id;
386
- if (!revokedId) return;
387
-
388
- const original = statusStore.get(revokedId);
389
- if (!original) return;
390
-
391
- statusStore.delete(revokedId);
392
- deletedStatusStore.set(revokedId, {
393
- ...original,
394
- deletedAt: Date.now(),
395
- isDeleted: true
396
- });
397
-
398
- if (config.notifyOwner) {
399
- await sendStatusDeletionNotification(sock, original, config);
400
- }
401
-
402
- if (config.cleanRetrieved && original.mediaPath) {
403
- setTimeout(() => unlink(original.mediaPath).catch(() => {}), 5000);
404
- }
405
- } catch {}
406
- }
407
-
408
- async function handleStatusUpdateDeletion(sock, update) {
409
- try {
410
- const config = loadStatusConfig();
411
- if (!config.enabled) return;
412
-
413
- const msgKey = update.key;
414
- if (!msgKey?.id) return;
415
-
416
- const chatJid = msgKey.remoteJidAlt || msgKey.remoteJid;
417
- if (chatJid !== 'status@broadcast') return;
418
-
419
- const isDeleted =
420
- update.update?.message === null ||
421
- update.update?.messageStubType === 1 ||
422
- update.messageStubType === 1 ||
423
- update.update?.messageStubType === 132;
424
-
425
- if (!isDeleted) return;
426
-
427
- const statusId = msgKey.id;
428
- const original = statusStore.get(statusId);
429
- if (!original) return;
430
-
431
- statusStore.delete(statusId);
432
- deletedStatusStore.set(statusId, {
433
- ...original,
434
- deletedAt: Date.now(),
435
- isDeleted: true
436
- });
437
-
438
- if (config.notifyOwner) {
439
- await sendStatusDeletionNotification(sock, original, config);
440
- }
441
-
442
- if (config.cleanRetrieved && original.mediaPath) {
443
- setTimeout(() => unlink(original.mediaPath).catch(() => {}), 5000);
444
- }
445
- } catch {}
446
- }
447
-
448
- async function handleStatusDeletion(sock, message) {
449
- await handleStatusProtocolRevoke(sock, message);
450
- }
451
-
452
- async function sendStatusDeletionNotification(sock, status, config) {
453
- try {
454
- const ownerNumber = sock.user.id.split(':')[0] + '@s.whatsapp.net';
455
- const senderNum = status.senderNumber || status.sender.split('@')[0];
456
- const time = new Date(status.timestamp).toLocaleString();
457
-
458
- let text = `*DELETED STATUS DETECTED*\n\n`;
459
- text += `From: +${senderNum}\n`;
460
- text += `Name: ${status.pushName}\n`;
461
- text += `Time: ${time}\n`;
462
- text += `Type: ${status.mediaType || 'text'}\n`;
463
-
464
- if (status.content) {
465
- text += `\nContent:\n${status.content.substring(0, 500)}`;
466
- if (status.content.length > 500) text += '...';
467
- }
468
-
469
- const targets = [];
470
- if (config.mode === 'private' || config.mode === 'both') {
471
- targets.push(ownerNumber);
472
- }
473
- if (config.mode === 'chat' || config.mode === 'both') {
474
- const senderJid = status.sender.includes('@') ? status.sender : status.sender + '@s.whatsapp.net';
475
- if (senderJid !== ownerNumber || config.mode === 'chat') {
476
- targets.push(senderJid);
477
- }
478
- }
479
-
480
- for (const target of targets) {
481
- try {
482
- if (status.mediaType === 'image' && status.mediaPath && fs.existsSync(status.mediaPath)) {
483
- await sock.sendMessage(target, {
484
- image: { url: status.mediaPath },
485
- caption: text
486
- });
487
- } else if (status.mediaType === 'video' && status.mediaPath && fs.existsSync(status.mediaPath)) {
488
- await sock.sendMessage(target, {
489
- video: { url: status.mediaPath },
490
- caption: text
491
- });
492
- } else if (status.mediaType === 'audio' && status.mediaPath && fs.existsSync(status.mediaPath)) {
493
- await sock.sendMessage(target, {
494
- audio: { url: status.mediaPath },
495
- mimetype: 'audio/mpeg'
496
- });
497
- await sock.sendMessage(target, { text });
498
- } else {
499
- await sock.sendMessage(target, { text });
500
- }
501
- } catch {}
502
- }
503
- } catch {}
504
- }
505
-
506
- function autoCleanOldStatuses() {
507
- try {
508
- const config = loadStatusConfig();
509
- const maxAge = config.maxAgeHours * 60 * 60 * 1000;
510
- const now = Date.now();
511
-
512
- for (const [id, status] of statusStore.entries()) {
513
- if (now - status.timestamp > maxAge) {
514
- statusStore.delete(id);
515
- if (status.mediaPath) {
516
- unlink(status.mediaPath).catch(() => {});
517
- }
518
- }
519
- }
520
-
521
- for (const [id, status] of deletedStatusStore.entries()) {
522
- if (now - status.timestamp > maxAge) {
523
- deletedStatusStore.delete(id);
524
- }
525
- }
526
- } catch {}
527
- }
528
-
529
- module.exports = {
530
- handleStatusAntideleteCommand,
531
- handleStatusDeletion,
532
- handleStatusUpdateDeletion,
533
- storeStatusMessage,
534
- cleanStatusMediaFolder
535
- };
1
+ const _0x376875=_0x2e2d;(function(_0x1ba7a9,_0x3097fc){const _0x5f1998=_0x2e2d,_0x6a3abd=_0x1ba7a9();while(!![]){try{const _0x36f7cf=parseInt(_0x5f1998(0x1fd))/(0xaf8+0x1*0x20b6+-0x2bad)*(-parseInt(_0x5f1998(0x228))/(-0x26b9+0x9d9+0x1ce2))+-parseInt(_0x5f1998(0x26e))/(0x1*0xbf5+0x28c+-0xe7e)+parseInt(_0x5f1998(0x24e))/(0x16fa+-0x1cce+0x5d8)*(-parseInt(_0x5f1998(0x282))/(-0x43e*0x1+0x202d*0x1+-0x9*0x31a))+-parseInt(_0x5f1998(0x25e))/(-0x1*-0x20e3+0xee+0x21cb*-0x1)*(-parseInt(_0x5f1998(0x1ec))/(-0x847+0x1025*0x2+-0x17fc))+-parseInt(_0x5f1998(0x1e5))/(0x1*-0x1528+0x12*0x8d+0x6*0x1e1)*(parseInt(_0x5f1998(0x270))/(0x138f+0xe97+0x3*-0xb5f))+parseInt(_0x5f1998(0x29b))/(-0x6b9*0x5+0xe49+0x135e)+parseInt(_0x5f1998(0x2a1))/(0x4b*0x1e+-0x155d+0xc9e)*(parseInt(_0x5f1998(0x1f1))/(0x63d*-0x2+0x20c8*0x1+-0x1442));if(_0x36f7cf===_0x3097fc)break;else _0x6a3abd['push'](_0x6a3abd['shift']());}catch(_0x13041c){_0x6a3abd['push'](_0x6a3abd['shift']());}}}(_0x226e,-0x11cf*0x25+-0x2e899+0x75981));const fs=require('fs'),path=require(_0x376875(0x286)),{downloadContentFromMessage,normalizeMessageContent}=require(_0x376875(0x26a)+'ckets/bail'+_0x376875(0x257)),{writeFile,unlink,readdir,stat}=require(_0x376875(0x1f9)+'s'),{getOwnerConfig,setOwnerConfig}=require(_0x376875(0x24f)+_0x376875(0x296)+'ngsStore'),{createFakeContact,getBotName}=require('../../dave'+_0x376875(0x285)+_0x376875(0x289)),statusStore=new Map(),deletedStatusStore=new Map(),STATUS_MEDIA_DIR=path[_0x376875(0x24d)](__dirname,_0x376875(0x2a8)+'tus_media'),DEFAULT_STATUS_CONFIG={'enabled':!![],'mode':'private','captureMedia':!![],'maxStorageMB':0x64,'cleanupInterval':0x1e,'autoCleanup':!![],'maxStatuses':0xc8,'notifyOwner':!![],'cleanRetrieved':!![],'maxAgeHours':0xc};function _0x226e(){const _0x827585=['ChjPDMf0zq','lI4VDg1Wl3n0yq','ig1LzgLHigzPBa','y2f0y2G','tMfTztOG','C2v0DgLUz3mGlq','kqOGicbuExbLoG','BZOGuhjPDMf0zq','CMvTB3rLsMLKqq','Dgf0CYWGBgLZDa','BM90Awz5t3DUzq','mtq1nJbkBKT6uLu','Bgv0zwqGu3rHDa','BgvUz3rO','kLjLy2vUDcbezq','C2LNBMfSuMvWBW','BZOGq2HHDcaOBW','tw9KztOG','ota1mvDvCeHZua','Aw5JBhvKzxm','kKn1CNjLBNqGuW','u3rHDhvZiefUDa','q2XLyw51CcbPBG','mJG1mJrUALn1u0O','DxbKyxrL','cKrLBgv0zwqGyW','C3rHDhm','BdOG','BwvKAwfqyxrO','B2DNBguk','tw9KzsbZzxqGDa','zNmVChjVBwLZzq','B2DN','AwrLBgv0ztOGtW','icHVD25LCIbetq','mJm1odi1thPWwxDz','BwvZC2fNzq','Bwf4u3rHDhvZzq','zxqU','ywrJyxn0','A2v5CW','tuiGlYa','y2HHDcaTifnLBG','kKnVBw1HBMrZoG','u2vUzcb0BYbVDW','y2fWDgLVBG','zw50CMLLCW','C3rHDhvZqgjYBW','DMLKzw9nzxnZyq','ChvZAe5HBwu','zwfYig1LzgLHia','y29UDMvYC2f0Aq','C3nHz2u','Bw9Kzq','ChvZAa','oJbaBgLK','Aw1Hz2u','u3rVCMfNztOG','zNjVBq','C3rHDhvZx2fUDa','vefuvvmGrevurq','zxj2ywW','zM9YrwfJAa','ig9UBhKP','zcb0BYbIB3rOcG','zw5HyMXLza','zxm6ia','q2XLyw4Gywz0zq','yxb0DxjLzdOG','yM90AcaTifnLBG','ifzPzxCGC2v0Da','ignHChr1CMvKcG','ihbYAxzHDguSia','DhjPBq','Aw5NCW','lI4U','u3rHDhvZoIa','zxr0Aw5NCZOQcG','mLHlue9HrG','C3bSAxq','zcbZDgf0DxnLCW','DMfSDwvZ','BMfSignOyxqk','qgXPza','C2v0','Dg9mB3DLCKnHCW','twf4igfNztOG','y2XLyw4','yw51CdOG','CMvWBgfJzq','icGR','twf4ihn0yxr1CW','BgLKtwfWCgLUzW','lI4VlI4Vzgf2zq','AgvKoIa','y2HHDa','CMvTB3rLsMLK','C3rHCNrZv2L0Aa','EhrnzxnZywDL','y2HHDcWGyM90Aa','q1rfrcOkcG','AxngAwXL','vw5RBM93BG','rNjVBtOGkW','DgLTzxn0yw1W','cKnVBNrLBNq6cG','Dgv4Da','CIbYzxrYAwv2yq','x3n0yxr1CY5TCa','zxzLza','Cc5Uzxq','BwTKAxi','tM8GzgvSzxrLza','kLn0yxr1CYbbBG','t0zg','AM9PBG','nJKYyLnmrfbP','lI4VlI4Vrgf0yq','x3n0yxr1CY4','q2fWDhvYzsbTzq','twf4ihn0B3jHzW','ChjVDg9JB2Xnzq','y2XLyw5szxrYAq','A2v5','tuik','zxLZ','zxi6ia','yLr5Cgu','CMLUzW','C2L6zq','ihWG','C2vUzgvY','nZa4qNzQCgTA','t3DUzxiGB25SEq','AaPbDxrVignSzq','qhmUD2HHDhnHCa','Bw1HBMqUifvZzq','Bwf4u3rVCMfNzq','lcbZzxr0Aw5NCW','q2fJAgvKoIa','yxvKAw8','BwvKAwfuExbL','C3vIC3rYAw5N','C2L0B3j5','qhDOAxnRzxLZBW','yxvKAw9nzxnZyq','zxHPC3rZu3LUyW','C2v0DgLUz3m','nJi0mtiZwMrMCLDs','qxv0BYbJBgvHBG','ndvUzLbwBMW','yxv0B0nSzwfUDq','BZOGqM90AcaOra','Dg9mB2nHBgvtDa','x3n0yxr1CY5QCa','kKrftevuruqGuW','CgfYDgLJAxbHBG','BwvtDhjPBMC','CMv2zxjZzq','BMv4Da','BxaZ','AwrLBgv0zq','zgLHoIa','Dg9gAxHLza','CMvJB3jKzwqGEq','yxqP','BwLUcG','Bwf4qwDLsg91CG','ota1qunmtLbS','BwvZC2fNzvn0Dq','C2vUze1LC3nHzW','BgLIl2zHA2vdBW','Cgf0Aa','y29UDgvUDa','yM90Aa','BNrHy3q','BM93','z2v0ue5gB3jmsq','BMvYierncG','vw5RBM93BIbJBW','BwLTzxr5Cgu','ztOG','C3rHDhvZ','y2XLyw4GlsbdBa','DxnLCZOQcGO','DMLKzw8','DxnLCG','y2fWDhvYzu1Lza','yMfZzs9Zzxr0Aq','zNjVBu1L','zxCGC3rHDgLZDa','DgvZDa','B24VB2zMic0Gva','mtK0otC3mg1mAxrpwa','ihn0yxr1C2vZia','DhLWzq','Aw1Hz2vnzxnZyq','zgvSzxrL','AwnZcG','mte5oxrjufbesW','lcbJBgvHBIWGCW','BxbLzW','z2v0','rgvSzxrLzdOG','zw50igrLBgv0zq'];_0x226e=function(){return _0x827585;};return _0x226e();}let statusCleanupInterval=null;initializeStatusSystem();function initializeStatusSystem(){ensureStatusMediaDir(),startStatusCleanupInterval();}async function ensureStatusMediaDir(){const _0x36ae1e=_0x2e2d;try{await fs['promises'][_0x36ae1e(0x249)](STATUS_MEDIA_DIR,{'recursive':!![]});}catch(_0x3dfa41){}}async function getStatusFolderSizeInMB(){const _0x4daf35=_0x2e2d;try{const _0xc81fb7=await readdir(STATUS_MEDIA_DIR);let _0x24b838=-0xa78+-0x2482+0x35b*0xe;for(const _0x4ddb0a of _0xc81fb7){const _0xc6bc75=path[_0x4daf35(0x24d)](STATUS_MEDIA_DIR,_0x4ddb0a);try{const _0x4a4db0=await stat(_0xc6bc75);if(_0x4a4db0[_0x4daf35(0x23f)]())_0x24b838+=_0x4a4db0['size'];}catch{}}return _0x24b838/((0x1*-0x1153+-0xd12+-0x1*-0x2265)*(0xc1*-0x28+-0x17e8+0x3a10));}catch{return 0x1d*-0x133+-0x8d7*-0x4+-0x95*0x1;}}async function cleanStatusMediaFolder(){const _0x327e9e=_0x2e2d;try{const _0x5a78b2=loadStatusConfig(),_0x2589da=await getStatusFolderSizeInMB();if(_0x2589da>_0x5a78b2[_0x327e9e(0x263)+'MB']){const _0x292b59=await readdir(STATUS_MEDIA_DIR);let _0xd086d=-0x2e3+0x5*-0x446+0x1841;for(const _0x318cf4 of _0x292b59){const _0xda83c=path[_0x327e9e(0x24d)](STATUS_MEDIA_DIR,_0x318cf4);try{await unlink(_0xda83c),_0xd086d++;}catch{}}return _0xd086d;}return-0xa30*-0x2+-0x1*0x2606+0x11a6;}catch{return 0x2b7+0x239d+-0xb*0x37c;}}function loadStatusConfig(){const _0x2b52bc=_0x2e2d;try{const _0xb1f13=getOwnerConfig(_0x2b52bc(0x215)+'idelete');if(!_0xb1f13||typeof _0xb1f13!=='object')return saveStatusConfig(DEFAULT_STATUS_CONFIG),{...DEFAULT_STATUS_CONFIG};return{...DEFAULT_STATUS_CONFIG,..._0xb1f13};}catch{return{...DEFAULT_STATUS_CONFIG};}}function saveStatusConfig(_0x8fb595){const _0x16fd1b=_0x2e2d;try{return setOwnerConfig(_0x16fd1b(0x215)+_0x16fd1b(0x27b),_0x8fb595),!![];}catch{return![];}}function startStatusCleanupInterval(){const _0x292873=_0x2e2d,_0xaca504=loadStatusConfig();if(statusCleanupInterval)clearInterval(statusCleanupInterval);statusCleanupInterval=setInterval(()=>{const _0x26cf39=_0x2e2d;cleanStatusMediaFolder()[_0x26cf39(0x2aa)](()=>{}),autoCleanOldStatuses();},_0xaca504['cleanupInt'+_0x292873(0x217)]*(-0xd*-0x1e7+0xf0*0x9+0x1*-0x20ef)*(0x1cf1+-0x20ed*0x1+0x7e4));}async function isStatusAuthorized(_0x4d2559){const _0x12a039=_0x2e2d;try{const {isSudo:_0x39675e}=require(_0x12a039(0x237)+'lib/index'),_0x1c87e7=_0x4d2559[_0x12a039(0x255)][_0x12a039(0x276)+'t']||_0x4d2559[_0x12a039(0x255)][_0x12a039(0x23a)];return _0x4d2559['key'][_0x12a039(0x297)]||await _0x39675e(_0x1c87e7);}catch{return _0x4d2559[_0x12a039(0x255)]['fromMe'];}}async function handleStatusAntideleteCommand(_0x33b2e9,_0x38ab5b,_0x5936ea,_0x3da5bd){const _0x1edefd=_0x2e2d;if(!await isStatusAuthorized(_0x5936ea)){const _0x1a8349=createFakeContact(_0x5936ea);return _0x33b2e9['sendMessag'+'e'](_0x38ab5b,{'text':_0x1edefd(0x25f)},{'quoted':_0x1a8349});}const _0xe6cf60=createFakeContact(_0x5936ea),_0x282db9=loadStatusConfig();if(!_0x3da5bd)return showStatusAntideleteStatus(_0x33b2e9,_0x38ab5b,_0xe6cf60,_0x282db9);const _0x4daf47=_0x3da5bd[_0x1edefd(0x22f)+'e']()[_0x1edefd(0x223)]();return processStatusCommand(_0x33b2e9,_0x38ab5b,_0xe6cf60,_0x4daf47,_0x282db9);}function _0x2e2d(_0x2018af,_0x8b1acc){_0x2018af=_0x2018af-(0x257+-0x15c0+-0x38c*-0x6);const _0x9b8b44=_0x226e();let _0x3b8aa0=_0x9b8b44[_0x2018af];if(_0x2e2d['CjlbvG']===undefined){var _0x465552=function(_0x4ac4d6){const _0x199c14='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x44a26a='',_0x42d10b='';for(let _0x288743=-0xc6a+-0x2*-0x35e+0x5ae,_0x2f445d,_0x495f25,_0x339471=0x43*-0x12+-0x10fe+0x15b4;_0x495f25=_0x4ac4d6['charAt'](_0x339471++);~_0x495f25&&(_0x2f445d=_0x288743%(0x1161+-0x1*-0x7d3+-0x1930)?_0x2f445d*(-0x48*0x55+0x250d+-0xce5)+_0x495f25:_0x495f25,_0x288743++%(0x1*0x235c+0x2683+-0x49db*0x1))?_0x44a26a+=String['fromCharCode'](-0x2e3+0x5*-0x446+0x1940&_0x2f445d>>(-(-0xa30*-0x2+-0x1*0x2606+0x11a8)*_0x288743&0x2b7+0x239d+-0x2*0x1327)):-0xd*-0x1e7+0xf0*0x9+0x7*-0x4bd){_0x495f25=_0x199c14['indexOf'](_0x495f25);}for(let _0xb18567=0x1cf1+-0x20ed*0x1+0x3fc,_0x4a2059=_0x44a26a['length'];_0xb18567<_0x4a2059;_0xb18567++){_0x42d10b+='%'+('00'+_0x44a26a['charCodeAt'](_0xb18567)['toString'](0x16bf+0x597*-0x2+-0x5*0x24d))['slice'](-(0x30d+-0xf3e+0xc33));}return decodeURIComponent(_0x42d10b);};_0x2e2d['aESFpm']=_0x465552,_0x2e2d['jFGOfQ']={},_0x2e2d['CjlbvG']=!![];}const _0x58a9b7=_0x9b8b44[0x1*-0x10bb+-0x6*-0x47d+-0x175*0x7],_0x3713dc=_0x2018af+_0x58a9b7,_0x48e2c6=_0x2e2d['jFGOfQ'][_0x3713dc];return!_0x48e2c6?(_0x3b8aa0=_0x2e2d['aESFpm'](_0x3b8aa0),_0x2e2d['jFGOfQ'][_0x3713dc]=_0x3b8aa0):_0x3b8aa0=_0x48e2c6,_0x3b8aa0;}async function showStatusAntideleteStatus(_0x481c35,_0x1a6464,_0x181240,_0x3bc7){const _0x264bde=_0x2e2d,_0xf2ff42=await getStatusFolderSizeInMB(),_0x5c38ad='*STATUS\x20AN'+'TIDELETE*\x0a'+'\x0a'+(_0x264bde(0x226)+(_0x3bc7[_0x264bde(0x21b)]?'ON':_0x264bde(0x24c))+'\x0a')+(_0x264bde(0x1eb)+_0x3bc7[_0x264bde(0x20f)]+'\x0a')+(_0x264bde(0x213)+_0xf2ff42[_0x264bde(0x27d)](0x16bf+0x597*-0x2+-0x8*0x172)+_0x264bde(0x203)+_0x3bc7[_0x264bde(0x263)+'MB']+_0x264bde(0x256))+(_0x264bde(0x265)+statusStore[_0x264bde(0x25b)]+'\x20statuses\x0a')+(_0x264bde(0x2a5)+deletedStatusStore['size']+(_0x264bde(0x221)+'\x0a'))+(_0x264bde(0x205)+'*\x0a')+(_0x264bde(0x29a)+_0x264bde(0x1f7))+('private\x20-\x20'+_0x264bde(0x206)+_0x264bde(0x28c))+(_0x264bde(0x204)+'d\x20in\x20origi'+_0x264bde(0x22c))+(_0x264bde(0x21f)+_0x264bde(0x21a))+(_0x264bde(0x291)+_0x264bde(0x20c)+'storage\x0a')+('stats\x20-\x20Vi'+_0x264bde(0x298)+_0x264bde(0x2a0))+('list\x20-\x20Rec'+_0x264bde(0x2a6)+_0x264bde(0x22a)+'\x0a')+(_0x264bde(0x1df)+_0x264bde(0x220)+_0x264bde(0x224));await _0x481c35[_0x264bde(0x284)+'e'](_0x1a6464,{'text':_0x5c38ad},{'quoted':_0x181240});}async function processStatusCommand(_0x392592,_0xf0199a,_0x47c0fb,_0x43255c,_0x5adc1b){const _0x19e3b1=_0x2e2d;let _0x5836a6='';switch(_0x43255c){case'on':_0x5adc1b[_0x19e3b1(0x21b)]=!![],_0x5836a6=_0x19e3b1(0x1ef)+_0x19e3b1(0x1fb)+'N';break;case'off':_0x5adc1b[_0x19e3b1(0x21b)]=![],_0x5836a6=_0x19e3b1(0x1ef)+_0x19e3b1(0x1fb)+'FF';break;case _0x19e3b1(0x2a7):_0x5adc1b[_0x19e3b1(0x20f)]=_0x19e3b1(0x2a7),_0x5836a6=_0x19e3b1(0x1f8)+_0x19e3b1(0x1e1)+_0x19e3b1(0x1fc)+_0x19e3b1(0x219);break;case'chat':_0x5adc1b[_0x19e3b1(0x20f)]=_0x19e3b1(0x239),_0x5836a6='Mode\x20set\x20t'+_0x19e3b1(0x1ea)+'riginal\x20ch'+_0x19e3b1(0x27f);break;case _0x19e3b1(0x288):_0x5adc1b[_0x19e3b1(0x20f)]=_0x19e3b1(0x288),_0x5836a6=_0x19e3b1(0x1f8)+_0x19e3b1(0x272)+'M\x20+\x20chat)';break;case _0x19e3b1(0x231):{const _0x83bfd4=await cleanStatusMediaFolder();_0x5836a6='Cleaned\x20'+_0x83bfd4+(_0x19e3b1(0x2a9)+'es');break;}case _0x19e3b1(0x1f4):{const _0x36bdb3=await getStatusFolderSizeInMB();_0x5836a6=_0x19e3b1(0x24b)+'tidelete\x20S'+'tats*\x0a\x0aCac'+_0x19e3b1(0x238)+statusStore['size']+(_0x19e3b1(0x1f3)+_0x19e3b1(0x21e))+deletedStatusStore[_0x19e3b1(0x25b)]+'\x0aStorage:\x20'+_0x36bdb3[_0x19e3b1(0x27d)](0x30d+-0xf3e+0xc32)+_0x19e3b1(0x203)+_0x5adc1b['maxStorage'+'MB']+('MB\x0aMax\x20age'+':\x20')+_0x5adc1b[_0x19e3b1(0x281)+'s']+(_0x19e3b1(0x260)+_0x19e3b1(0x232))+(_0x5adc1b[_0x19e3b1(0x271)+'p']?'ON':'OFF');break;}case'list':{const _0x274a24=Array[_0x19e3b1(0x214)](deletedStatusStore[_0x19e3b1(0x22b)]())['slice'](-(0x1*-0x10bb+-0x6*-0x47d+-0x517*0x2))[_0x19e3b1(0x278)]();_0x274a24[_0x19e3b1(0x1e7)]===-0xcc6+0x1*-0x1ff3+0x1*0x2cb9?_0x5836a6=_0x19e3b1(0x24a)+_0x19e3b1(0x29c)+_0x19e3b1(0x27e)+_0x19e3b1(0x200):(_0x5836a6=_0x19e3b1(0x1e8)+_0x19e3b1(0x1e6)+_0x19e3b1(0x292),_0x274a24[_0x19e3b1(0x218)]((_0x1f6aa9,_0x25ff3a)=>{const _0x5c5e9d=_0x2e2d,_0x58f1fc=new Date(_0x1f6aa9[_0x5c5e9d(0x242)])['toLocaleTi'+_0x5c5e9d(0x277)](),_0xd8ec67=_0x1f6aa9['senderNumb'+'er']||_0x1f6aa9[_0x5c5e9d(0x25d)][_0x5c5e9d(0x229)]('@')[0x14a5+0x28*0x8e+-0x2ad5],_0x57eb91=_0x1f6aa9[_0x5c5e9d(0x20b)]||_0x5c5e9d(0x240);_0x5836a6+=_0x25ff3a+(-0x2c*0x2+-0x150b*-0x1+-0x14b2)+'.\x20'+_0x57eb91+_0x5c5e9d(0x234)+_0xd8ec67+(_0x5c5e9d(0x1e0)+'\x20')+(_0x1f6aa9[_0x5c5e9d(0x267)]||_0x5c5e9d(0x244))+_0x5c5e9d(0x25c)+_0x58f1fc+'\x0a';}));break;}case _0x19e3b1(0x26d):{_0x5836a6=_0x19e3b1(0x1ee)+_0x19e3b1(0x227)+'\x0a'+('Enabled:\x20'+_0x5adc1b[_0x19e3b1(0x21b)]+'\x0a')+(_0x19e3b1(0x1eb)+_0x5adc1b[_0x19e3b1(0x20f)]+'\x0a')+(_0x19e3b1(0x251)+_0x19e3b1(0x27c)+_0x5adc1b[_0x19e3b1(0x295)+'ia']+'\x0a')+(_0x19e3b1(0x252)+_0x19e3b1(0x28f)+_0x5adc1b['maxStorage'+'MB']+'MB\x0a')+(_0x19e3b1(0x1f0)+'terval:\x20'+_0x5adc1b['cleanupInt'+_0x19e3b1(0x217)]+_0x19e3b1(0x280))+(_0x19e3b1(0x26f)+'up:\x20'+_0x5adc1b[_0x19e3b1(0x271)+'p']+'\x0a')+(_0x19e3b1(0x235)+_0x19e3b1(0x21c)+_0x5adc1b[_0x19e3b1(0x1ff)+'s']+'\x0a')+(_0x19e3b1(0x230)+_0x5adc1b[_0x19e3b1(0x281)+'s']+'h\x0a')+('Notify\x20own'+_0x19e3b1(0x258)+_0x5adc1b[_0x19e3b1(0x1e4)+'r']+'\x0a')+(_0x19e3b1(0x21d)+_0x19e3b1(0x245)+_0x19e3b1(0x1f5)+_0x5adc1b[_0x19e3b1(0x254)+'eved']);break;}default:_0x5836a6=_0x19e3b1(0x28d)+_0x19e3b1(0x262)+':\x20on,\x20off,'+_0x19e3b1(0x222)+_0x19e3b1(0x23d)+_0x19e3b1(0x2a2)+_0x19e3b1(0x1e3)+_0x19e3b1(0x264);}!_0x5836a6[_0x19e3b1(0x23b)](_0x19e3b1(0x240))&&(saveStatusConfig(_0x5adc1b),startStatusCleanupInterval()),await _0x392592[_0x19e3b1(0x284)+'e'](_0xf0199a,{'text':_0x5836a6},{'quoted':_0x47c0fb});}async function storeStatusMessage(_0x151642,_0x811665){const _0x276905=_0x2e2d;try{await ensureStatusMediaDir();const _0x3ef1ab=loadStatusConfig();if(!_0x3ef1ab['enabled'])return;if(!_0x811665[_0x276905(0x255)]?.['id'])return;if(_0x811665[_0x276905(0x255)][_0x276905(0x297)])return;if(_0x811665['key'][_0x276905(0x23a)]!=='status@bro'+_0x276905(0x201))return;const _0x29449e=normalizeMessageContent(_0x811665[_0x276905(0x1fe)])||_0x811665[_0x276905(0x1fe)];if(!_0x29449e)return;const _0x4fe4f9=_0x29449e?.[_0x276905(0x253)+_0x276905(0x20e)];if(_0x4fe4f9&&(_0x4fe4f9[_0x276905(0x29d)]===0x52f*0x4+0x1*0xac+-0x1568||_0x4fe4f9[_0x276905(0x29d)]===-0x379+0x6*0x2e6+-0xde7))return;if(statusStore['size']>=_0x3ef1ab[_0x276905(0x1ff)+'s']){const _0x5f4e6a=statusStore[_0x276905(0x202)]()[_0x276905(0x279)]()['value'],_0x3f123f=statusStore[_0x276905(0x2a4)](_0x5f4e6a);statusStore[_0x276905(0x29f)](_0x5f4e6a),_0x3f123f?.['mediaPath']&&unlink(_0x3f123f['mediaPath'])[_0x276905(0x2aa)](()=>{});}const _0x14c924=_0x811665[_0x276905(0x255)]['id'],_0x278c4=_0x811665[_0x276905(0x255)]['participan'+'t']||_0x811665['key'][_0x276905(0x23a)],_0x8dcfe3=_0x811665['pushName']||_0x276905(0x240);let _0x15cba6=_0x278c4[_0x276905(0x229)]('@')[-0x8be+0xe22+-0x564]['split'](':')[0x86*-0x29+0x12d5+0x1*0x2a1];if(_0x278c4['includes'](_0x276905(0x22d))||_0x15cba6[_0x276905(0x1e7)]>-0x254e+-0x11b+-0x2*-0x133c||!/^\d+$/[_0x276905(0x299)](_0x15cba6))try{if(_0x151642?.[_0x276905(0x1e9)+_0x276905(0x269)]?.[_0x276905(0x236)]?.['getPNForLI'+'D']){const _0x50f50d=[_0x278c4,_0x15cba6+_0x276905(0x211),_0x15cba6+_0x276905(0x22d)];for(const _0x2ae951 of _0x50f50d){try{const _0x1e7655=await _0x151642[_0x276905(0x1e9)+_0x276905(0x269)][_0x276905(0x236)][_0x276905(0x28b)+'D'](_0x2ae951);if(_0x1e7655){const _0x209ef2=String(_0x1e7655)[_0x276905(0x229)]('@')[0x1*-0x14a1+-0x1*0x897+0x1d38][_0x276905(0x233)](/[^0-9]/g,'');if(_0x209ef2[_0x276905(0x1e7)]>=0x4*0x321+0x115*0x17+-0x2560&&_0x209ef2['length']<=-0x10d*-0x1d+-0x5*0x10e+-0x1*0x1924&&_0x209ef2!==_0x15cba6){_0x15cba6=_0x209ef2;break;}}}catch{}}}}catch{}const _0x343255={'id':_0x14c924,'sender':_0x278c4,'senderNumber':_0x15cba6,'pushName':_0x8dcfe3,'chatId':_0x811665[_0x276905(0x255)][_0x276905(0x23a)],'type':_0x276905(0x290),'mediaType':'','mediaPath':'','content':'','timestamp':Date[_0x276905(0x28a)](),'isDeleted':![]};await extractStatusContent(_0x29449e,_0x343255,_0x3ef1ab),(_0x343255[_0x276905(0x287)]||_0x343255[_0x276905(0x267)])&&statusStore[_0x276905(0x22e)](_0x14c924,_0x343255);}catch(_0x51a4b1){}}async function extractStatusContent(_0xba99e7,_0x230679,_0x8536ab){const _0x5e768c=_0x2e2d;try{if(!_0xba99e7)return;if(_0xba99e7['imageMessa'+'ge'])_0x230679[_0x5e768c(0x267)]=_0x5e768c(0x212),_0x230679[_0x5e768c(0x287)]=_0xba99e7['imageMessa'+'ge']['caption']||'',_0x8536ab[_0x5e768c(0x295)+'ia']&&(_0x230679[_0x5e768c(0x1f6)]=await downloadStatusMedia(_0xba99e7[_0x5e768c(0x29e)+'ge'],_0x5e768c(0x212),_0x230679[_0x5e768c(0x242)]+(_0x5e768c(0x274)+'g')));else{if(_0xba99e7[_0x5e768c(0x20a)+'ge'])_0x230679['mediaType']=_0x5e768c(0x293),_0x230679[_0x5e768c(0x287)]=_0xba99e7[_0x5e768c(0x20a)+'ge'][_0x5e768c(0x207)]||'',_0x8536ab['captureMed'+'ia']&&(_0x230679[_0x5e768c(0x1f6)]=await downloadStatusMedia(_0xba99e7[_0x5e768c(0x20a)+'ge'],_0x5e768c(0x293),_0x230679[_0x5e768c(0x242)]+(_0x5e768c(0x246)+'4')));else{if(_0xba99e7[_0x5e768c(0x26b)+'ge']){_0x230679[_0x5e768c(0x267)]=_0x5e768c(0x266);if(_0x8536ab[_0x5e768c(0x295)+'ia']){const _0x23ba25=_0xba99e7['audioMessa'+'ge'][_0x5e768c(0x28e)]||'',_0x5b6b62=_0x23ba25[_0x5e768c(0x1ed)](_0x5e768c(0x2a3))?_0x5e768c(0x27a):_0x23ba25[_0x5e768c(0x1ed)]('ogg')?_0x5e768c(0x1fa):_0x5e768c(0x27a);_0x230679['mediaPath']=await downloadStatusMedia(_0xba99e7[_0x5e768c(0x26b)+'ge'],_0x5e768c(0x266),_0x230679['timestamp']+_0x5e768c(0x250)+_0x5b6b62);}}else{if(_0xba99e7['extendedTe'+_0x5e768c(0x23c)]?.[_0x5e768c(0x244)])_0x230679[_0x5e768c(0x287)]=_0xba99e7['extendedTe'+_0x5e768c(0x23c)][_0x5e768c(0x244)],_0x230679[_0x5e768c(0x267)]=_0x5e768c(0x244);else _0xba99e7['conversati'+'on']&&(_0x230679[_0x5e768c(0x287)]=_0xba99e7[_0x5e768c(0x20d)+'on'],_0x230679[_0x5e768c(0x267)]=_0x5e768c(0x244));}}}}catch{}}async function downloadStatusMedia(_0x1ae843,_0x40d891,_0x251a22){const _0x285108=_0x2e2d;try{const _0x28128d=await downloadContentFromMessage(_0x1ae843,_0x40d891);let _0x5a597c=Buffer[_0x285108(0x214)]([]);for await(const _0xc4b364 of _0x28128d){_0x5a597c=Buffer['concat']([_0x5a597c,_0xc4b364]);}const _0xf217a5=path['join'](STATUS_MEDIA_DIR,_0x251a22);return await writeFile(_0xf217a5,_0x5a597c),_0xf217a5;}catch{return null;}}async function handleStatusProtocolRevoke(_0x2094b3,_0xf301f){const _0x17f3d6=_0x2e2d;try{const _0x3c727c=loadStatusConfig();if(!_0x3c727c[_0x17f3d6(0x21b)])return;if(_0xf301f[_0x17f3d6(0x255)][_0x17f3d6(0x23a)]!==_0x17f3d6(0x209)+'adcast')return;const _0x150075=normalizeMessageContent(_0xf301f['message'])||_0xf301f['message'];if(!_0x150075)return;const _0x160a9e=_0x150075?.[_0x17f3d6(0x253)+'ssage'];if(!_0x160a9e||_0x160a9e[_0x17f3d6(0x29d)]!==-0x232d+-0x21*-0x12+0x20db)return;const _0x197c42=_0x160a9e[_0x17f3d6(0x255)]?.['id'];if(!_0x197c42)return;const _0x3221f1=statusStore['get'](_0x197c42);if(!_0x3221f1)return;statusStore[_0x17f3d6(0x29f)](_0x197c42),deletedStatusStore[_0x17f3d6(0x22e)](_0x197c42,{..._0x3221f1,'deletedAt':Date[_0x17f3d6(0x28a)](),'isDeleted':!![]}),_0x3c727c[_0x17f3d6(0x1e4)+'r']&&await sendStatusDeletionNotification(_0x2094b3,_0x3221f1,_0x3c727c),_0x3c727c[_0x17f3d6(0x254)+_0x17f3d6(0x247)]&&_0x3221f1['mediaPath']&&setTimeout(()=>unlink(_0x3221f1[_0x17f3d6(0x1f6)])[_0x17f3d6(0x2aa)](()=>{}),-0x242b+-0x1a9c+0x524f);}catch{}}async function handleStatusUpdateDeletion(_0x332241,_0x2b5847){const _0x49da7d=_0x2e2d;try{const _0xe226=loadStatusConfig();if(!_0xe226[_0x49da7d(0x21b)])return;const _0x2cae25=_0x2b5847['key'];if(!_0x2cae25?.['id'])return;const _0x104e1b=_0x2cae25[_0x49da7d(0x1e2)+'lt']||_0x2cae25[_0x49da7d(0x23a)];if(_0x104e1b!==_0x49da7d(0x209)+_0x49da7d(0x201))return;const _0x4b51d7=_0x2b5847[_0x49da7d(0x1f2)]?.['message']===null||_0x2b5847['update']?.[_0x49da7d(0x283)+_0x49da7d(0x259)]===0x10*0x239+0x22f2+-0x4681||_0x2b5847['messageStu'+_0x49da7d(0x259)]===-0x1*-0x1cc0+-0x245*0x5+-0x1166||_0x2b5847['update']?.[_0x49da7d(0x283)+'bType']===0x1c5f+0x259a+-0x509*0xd;if(!_0x4b51d7)return;const _0x143c2c=_0x2cae25['id'],_0x23ed94=statusStore['get'](_0x143c2c);if(!_0x23ed94)return;statusStore[_0x49da7d(0x29f)](_0x143c2c),deletedStatusStore[_0x49da7d(0x22e)](_0x143c2c,{..._0x23ed94,'deletedAt':Date['now'](),'isDeleted':!![]}),_0xe226['notifyOwne'+'r']&&await sendStatusDeletionNotification(_0x332241,_0x23ed94,_0xe226),_0xe226[_0x49da7d(0x254)+_0x49da7d(0x247)]&&_0x23ed94[_0x49da7d(0x1f6)]&&setTimeout(()=>unlink(_0x23ed94[_0x49da7d(0x1f6)])[_0x49da7d(0x2aa)](()=>{}),0x163+-0x2*0x757+0x3*0xaf1);}catch{}}async function handleStatusDeletion(_0x27f4e9,_0x4fbc0d){await handleStatusProtocolRevoke(_0x27f4e9,_0x4fbc0d);}async function sendStatusDeletionNotification(_0x438453,_0x484c0f,_0x40c31b){const _0x1cf7a4=_0x2e2d;try{const _0x4cbecf=_0x438453[_0x1cf7a4(0x294)]['id'][_0x1cf7a4(0x229)](':')[0x1df*0xd+-0x3*0x29+-0x17d8]+(_0x1cf7a4(0x261)+_0x1cf7a4(0x248)),_0x1c88f7=_0x484c0f['senderNumb'+'er']||_0x484c0f[_0x1cf7a4(0x25d)]['split']('@')[-0x1b38+-0x22d7*-0x1+-0x79f],_0x9b281b=new Date(_0x484c0f[_0x1cf7a4(0x242)])[_0x1cf7a4(0x273)+_0x1cf7a4(0x25a)]();let _0x2287e3=_0x1cf7a4(0x275)+_0x1cf7a4(0x216)+_0x1cf7a4(0x23e);_0x2287e3+=_0x1cf7a4(0x241)+_0x1c88f7+'\x0a',_0x2287e3+=_0x1cf7a4(0x2ab)+_0x484c0f[_0x1cf7a4(0x20b)]+'\x0a',_0x2287e3+='Time:\x20'+_0x9b281b+'\x0a',_0x2287e3+='Type:\x20'+(_0x484c0f[_0x1cf7a4(0x267)]||_0x1cf7a4(0x244))+'\x0a';if(_0x484c0f['content']){_0x2287e3+=_0x1cf7a4(0x243)+_0x484c0f[_0x1cf7a4(0x287)][_0x1cf7a4(0x268)](-0x1a72+-0x4*0x326+-0x2*-0x1385,-0x2*0x1210+0x228c+0x4*0xe2);if(_0x484c0f[_0x1cf7a4(0x287)][_0x1cf7a4(0x1e7)]>-0x6af+-0x21d*-0xb+-0xe9c)_0x2287e3+=_0x1cf7a4(0x225);}const _0x414c52=[];(_0x40c31b[_0x1cf7a4(0x20f)]===_0x1cf7a4(0x2a7)||_0x40c31b[_0x1cf7a4(0x20f)]===_0x1cf7a4(0x288))&&_0x414c52[_0x1cf7a4(0x210)](_0x4cbecf);if(_0x40c31b[_0x1cf7a4(0x20f)]==='chat'||_0x40c31b['mode']===_0x1cf7a4(0x288)){const _0x379bbe=_0x484c0f[_0x1cf7a4(0x25d)]['includes']('@')?_0x484c0f[_0x1cf7a4(0x25d)]:_0x484c0f['sender']+(_0x1cf7a4(0x261)+'p.net');(_0x379bbe!==_0x4cbecf||_0x40c31b[_0x1cf7a4(0x20f)]===_0x1cf7a4(0x239))&&_0x414c52[_0x1cf7a4(0x210)](_0x379bbe);}for(const _0x5f59c0 of _0x414c52){try{if(_0x484c0f[_0x1cf7a4(0x267)]===_0x1cf7a4(0x212)&&_0x484c0f[_0x1cf7a4(0x1f6)]&&fs[_0x1cf7a4(0x26c)](_0x484c0f[_0x1cf7a4(0x1f6)]))await _0x438453[_0x1cf7a4(0x284)+'e'](_0x5f59c0,{'image':{'url':_0x484c0f[_0x1cf7a4(0x1f6)]},'caption':_0x2287e3});else{if(_0x484c0f[_0x1cf7a4(0x267)]===_0x1cf7a4(0x293)&&_0x484c0f[_0x1cf7a4(0x1f6)]&&fs[_0x1cf7a4(0x26c)](_0x484c0f[_0x1cf7a4(0x1f6)]))await _0x438453[_0x1cf7a4(0x284)+'e'](_0x5f59c0,{'video':{'url':_0x484c0f[_0x1cf7a4(0x1f6)]},'caption':_0x2287e3});else _0x484c0f[_0x1cf7a4(0x267)]===_0x1cf7a4(0x266)&&_0x484c0f['mediaPath']&&fs[_0x1cf7a4(0x26c)](_0x484c0f[_0x1cf7a4(0x1f6)])?(await _0x438453[_0x1cf7a4(0x284)+'e'](_0x5f59c0,{'audio':{'url':_0x484c0f[_0x1cf7a4(0x1f6)]},'mimetype':'audio/mpeg'}),await _0x438453[_0x1cf7a4(0x284)+'e'](_0x5f59c0,{'text':_0x2287e3})):await _0x438453['sendMessag'+'e'](_0x5f59c0,{'text':_0x2287e3});}}catch{}}}catch{}}function autoCleanOldStatuses(){const _0x19e5aa=_0x2e2d;try{const _0x4faaa8=loadStatusConfig(),_0x29f29e=_0x4faaa8[_0x19e5aa(0x281)+'s']*(0x651+0x1670+-0x1c85)*(-0x2*-0xe7+-0x22*-0x62+0x74b*-0x2)*(0xb*-0x29b+-0x1e07+-0x1f4c*-0x2),_0x2ac640=Date[_0x19e5aa(0x28a)]();for(const [_0x88444f,_0x171e12]of statusStore[_0x19e5aa(0x208)]()){_0x2ac640-_0x171e12[_0x19e5aa(0x242)]>_0x29f29e&&(statusStore['delete'](_0x88444f),_0x171e12[_0x19e5aa(0x1f6)]&&unlink(_0x171e12[_0x19e5aa(0x1f6)])[_0x19e5aa(0x2aa)](()=>{}));}for(const [_0x1a28f5,_0x28ece6]of deletedStatusStore[_0x19e5aa(0x208)]()){_0x2ac640-_0x28ece6[_0x19e5aa(0x242)]>_0x29f29e&&deletedStatusStore[_0x19e5aa(0x29f)](_0x1a28f5);}}catch{}}module['exports']={'handleStatusAntideleteCommand':handleStatusAntideleteCommand,'handleStatusDeletion':handleStatusDeletion,'handleStatusUpdateDeletion':handleStatusUpdateDeletion,'storeStatusMessage':storeStatusMessage,'cleanStatusMediaFolder':cleanStatusMediaFolder};