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,673 +1 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const { downloadContentFromMessage } = require('@whiskeysockets/baileys');
4
- const { writeFile, unlink, readdir, stat } = require('fs/promises');
5
- const { getOwnerConfig, setOwnerConfig, getGroupConfig, setGroupConfig, parseToggleCommand } = require('../../Database/settingsStore');
6
- const db = require('../../Database/database');
7
- const { createFakeContact, getBotName } = require('../../davelib/fakeContact');
8
-
9
- const TEMP_MEDIA_DIR = path.join(__dirname, '../tmp');
10
- const MESSAGE_RETENTION_SECONDS = 604800;
11
- const MESSAGE_RETENTION_MS = MESSAGE_RETENTION_SECONDS * 1000;
12
-
13
- async function ensureTempDir() {
14
- try {
15
- await fs.promises.mkdir(TEMP_MEDIA_DIR, { recursive: true });
16
- } catch {}
17
- }
18
-
19
- async function getFolderSizeInMB(folderPath) {
20
- try {
21
- const files = await readdir(folderPath);
22
- let totalSize = 0;
23
- for (const file of files) {
24
- const filePath = path.join(folderPath, file);
25
- try {
26
- const stats = await stat(filePath);
27
- if (stats.isFile()) totalSize += stats.size;
28
- } catch {}
29
- }
30
- return totalSize / (1024 * 1024);
31
- } catch {
32
- return 0;
33
- }
34
- }
35
-
36
- async function cleanTempFolder(maxStorageMB = 200) {
37
- try {
38
- const sizeMB = await getFolderSizeInMB(TEMP_MEDIA_DIR);
39
- if (sizeMB > maxStorageMB) {
40
- const files = await readdir(TEMP_MEDIA_DIR);
41
- let deletedCount = 0;
42
- for (const file of files) {
43
- const filePath = path.join(TEMP_MEDIA_DIR, file);
44
- try {
45
- await unlink(filePath);
46
- deletedCount++;
47
- } catch {}
48
- }
49
- return deletedCount;
50
- }
51
- return 0;
52
- } catch {
53
- return 0;
54
- }
55
- }
56
-
57
- async function isAuthorized(sock, message) {
58
- try {
59
- const senderId = message.key.participant || message.key.remoteJid;
60
- if (message.key.fromMe) return true;
61
- return db.isSudo(senderId);
62
- } catch {
63
- return message.key.fromMe;
64
- }
65
- }
66
-
67
- function normalizeOwnerConfig(raw) {
68
- if (!raw || typeof raw !== 'object') {
69
- return { gc: { enabled: true, mode: 'private' }, pm: { enabled: true, mode: 'private' } };
70
- }
71
- if (raw.gc && raw.pm) return raw;
72
- const enabled = raw.enabled !== undefined ? raw.enabled : true;
73
- const mode = raw.mode || 'private';
74
- return { gc: { enabled, mode }, pm: { enabled, mode } };
75
- }
76
-
77
- function getEffectiveConfig(chatId) {
78
- const isGroup = chatId.endsWith('@g.us');
79
- if (isGroup) {
80
- if (db.hasGroupSetting(chatId, 'antidelete')) {
81
- const groupConf = getGroupConfig(chatId, 'antidelete');
82
- if (typeof groupConf === 'object' && groupConf.enabled !== undefined) {
83
- return groupConf;
84
- }
85
- }
86
- const ownerRaw = getOwnerConfig('antidelete');
87
- const ownerConf = normalizeOwnerConfig(ownerRaw);
88
- return { enabled: ownerConf.gc.enabled, mode: ownerConf.gc.mode };
89
- } else {
90
- const ownerRaw = getOwnerConfig('antidelete');
91
- const ownerConf = normalizeOwnerConfig(ownerRaw);
92
- return { enabled: ownerConf.pm.enabled, mode: ownerConf.pm.mode };
93
- }
94
- }
95
-
96
- async function handleAntideleteCommand(sock, chatId, message, match) {
97
- const botName = getBotName();
98
- const senderId = message.key.participant || message.key.remoteJid;
99
- const fake = createFakeContact(senderId);
100
-
101
- if (!await isAuthorized(sock, message)) {
102
- return sock.sendMessage(chatId, {
103
- text: `┌─ *${botName}* ─┐\n│\n│ Owner only command!\n│\n└─────────────┘`
104
- }, { quoted: fake });
105
- }
106
-
107
- const isGroup = chatId.endsWith('@g.us');
108
- const ownerRaw = getOwnerConfig('antidelete');
109
- const ownerConf = normalizeOwnerConfig(ownerRaw);
110
-
111
- if (!match) {
112
- const sizeMB = await getFolderSizeInMB(TEMP_MEDIA_DIR);
113
- const msgCount = db.getMessageCount();
114
- let groupStatus = '';
115
- if (isGroup) {
116
- const gc = getEffectiveConfig(chatId);
117
- groupStatus = `This Group: ${gc.enabled ? 'ON' : 'OFF'} (${gc.mode})\n`;
118
- }
119
-
120
- const text = `┌─ *${botName}* ─┐
121
-
122
- │ Groups: ${ownerConf.gc.enabled ? 'ON' : 'OFF'} (${ownerConf.gc.mode})
123
- │ PMs: ${ownerConf.pm.enabled ? 'ON' : 'OFF'} (${ownerConf.pm.mode})
124
- │ ${groupStatus}Storage: ${sizeMB.toFixed(1)}MB
125
- │ Messages: ${msgCount}
126
- │ Retention: 7 days
127
-
128
- │ Commands:
129
- │ .antidelete on/off
130
- │ .antidelete gc on/off/private/chat/both
131
- │ .antidelete pm on/off/private/chat/both
132
- │ .antidelete private/chat/both
133
- │ .antidelete clean | stats
134
-
135
- └─────────────┘`;
136
-
137
- await sock.sendMessage(chatId, { text }, { quoted: fake });
138
- return;
139
- }
140
-
141
- const command = match.toLowerCase().trim();
142
- let responseText = '';
143
-
144
- const parts = command.split(/\s+/);
145
- const scope = parts[0];
146
- const action = parts[1] || '';
147
-
148
- if (scope === 'gc' || scope === 'group' || scope === 'groups') {
149
- const toggle = parseToggleCommand(action);
150
- if (toggle === 'on') {
151
- ownerConf.gc.enabled = true;
152
- setOwnerConfig('antidelete', ownerConf);
153
- responseText = `┌─ *${botName}* ─┐
154
-
155
- │ Antidelete GROUPS: ON
156
- │ Mode: ${ownerConf.gc.mode}
157
-
158
- └─────────────┘`;
159
- } else if (toggle === 'off') {
160
- ownerConf.gc.enabled = false;
161
- setOwnerConfig('antidelete', ownerConf);
162
- responseText = `┌─ *${botName}* ─┐
163
-
164
- │ Antidelete GROUPS: OFF
165
-
166
- └─────────────┘`;
167
- } else if (['private', 'prvt', 'priv'].includes(action)) {
168
- ownerConf.gc.enabled = true;
169
- ownerConf.gc.mode = 'private';
170
- setOwnerConfig('antidelete', ownerConf);
171
- responseText = `┌─ *${botName}* ─┐
172
-
173
- │ Antidelete GROUPS: PRIVATE
174
- │ Deleted messages → Owner DM
175
-
176
- └─────────────┘`;
177
- } else if (['chat', 'cht'].includes(action)) {
178
- ownerConf.gc.enabled = true;
179
- ownerConf.gc.mode = 'chat';
180
- setOwnerConfig('antidelete', ownerConf);
181
- responseText = `┌─ *${botName}* ─┐
182
-
183
- │ Antidelete GROUPS: CHAT
184
- │ Deleted messages → This chat
185
-
186
- └─────────────┘`;
187
- } else if (['both', 'all'].includes(action)) {
188
- ownerConf.gc.enabled = true;
189
- ownerConf.gc.mode = 'both';
190
- setOwnerConfig('antidelete', ownerConf);
191
- responseText = `┌─ *${botName}* ─┐
192
-
193
- │ Antidelete GROUPS: BOTH
194
- │ Deleted messages → Owner + Chat
195
-
196
- └─────────────┘`;
197
- } else {
198
- responseText = `┌─ *${botName}* ─┐
199
-
200
- │ Usage:
201
- │ .antidelete gc on/off
202
- │ .antidelete gc private/chat/both
203
-
204
- └─────────────┘`;
205
- }
206
- } else if (scope === 'pm' || scope === 'dm' || scope === 'pms' || scope === 'dms') {
207
- const toggle = parseToggleCommand(action);
208
- if (toggle === 'on') {
209
- ownerConf.pm.enabled = true;
210
- setOwnerConfig('antidelete', ownerConf);
211
- responseText = `┌─ *${botName}* ─┐
212
-
213
- │ Antidelete PMs: ON
214
- │ Mode: ${ownerConf.pm.mode}
215
-
216
- └─────────────┘`;
217
- } else if (toggle === 'off') {
218
- ownerConf.pm.enabled = false;
219
- setOwnerConfig('antidelete', ownerConf);
220
- responseText = `┌─ *${botName}* ─┐
221
-
222
- │ Antidelete PMs: OFF
223
-
224
- └─────────────┘`;
225
- } else if (['private', 'prvt', 'priv'].includes(action)) {
226
- ownerConf.pm.enabled = true;
227
- ownerConf.pm.mode = 'private';
228
- setOwnerConfig('antidelete', ownerConf);
229
- responseText = `┌─ *${botName}* ─┐
230
-
231
- │ Antidelete PMs: PRIVATE
232
- │ Deleted PMs → Owner DM
233
-
234
- └─────────────┘`;
235
- } else if (['chat', 'cht'].includes(action)) {
236
- ownerConf.pm.enabled = true;
237
- ownerConf.pm.mode = 'chat';
238
- setOwnerConfig('antidelete', ownerConf);
239
- responseText = `┌─ *${botName}* ─┐
240
-
241
- │ Antidelete PMs: CHAT
242
- │ Deleted PMs → Same chat
243
-
244
- └─────────────┘`;
245
- } else if (['both', 'all'].includes(action)) {
246
- ownerConf.pm.enabled = true;
247
- ownerConf.pm.mode = 'both';
248
- setOwnerConfig('antidelete', ownerConf);
249
- responseText = `┌─ *${botName}* ─┐
250
-
251
- │ Antidelete PMs: BOTH
252
- │ Deleted PMs → Owner + Chat
253
-
254
- └─────────────┘`;
255
- } else {
256
- responseText = `┌─ *${botName}* ─┐
257
-
258
- │ Usage:
259
- │ .antidelete pm on/off
260
- │ .antidelete pm private/chat/both
261
-
262
- └─────────────┘`;
263
- }
264
- } else {
265
- const toggle = parseToggleCommand(scope);
266
- if (toggle === 'on') {
267
- if (isGroup) {
268
- setGroupConfig(chatId, 'antidelete', { enabled: true, mode: 'private' });
269
- responseText = `┌─ *${botName}* ─┐
270
-
271
- │ Antidelete ENABLED for this group
272
- │ Mode: private
273
-
274
- └─────────────┘`;
275
- } else {
276
- ownerConf.gc.enabled = true;
277
- ownerConf.pm.enabled = true;
278
- setOwnerConfig('antidelete', ownerConf);
279
- responseText = `┌─ *${botName}* ─┐
280
-
281
- │ Antidelete ENABLED
282
- │ Groups + PMs
283
-
284
- └─────────────┘`;
285
- }
286
- } else if (toggle === 'off') {
287
- if (isGroup) {
288
- setGroupConfig(chatId, 'antidelete', { enabled: false, mode: 'private' });
289
- responseText = `┌─ *${botName}* ─┐
290
-
291
- │ Antidelete DISABLED for this group
292
-
293
- └─────────────┘`;
294
- } else {
295
- ownerConf.gc.enabled = false;
296
- ownerConf.pm.enabled = false;
297
- setOwnerConfig('antidelete', ownerConf);
298
- responseText = `┌─ *${botName}* ─┐
299
-
300
- │ Antidelete DISABLED
301
- │ Groups + PMs
302
-
303
- └─────────────┘`;
304
- }
305
- } else if (['private', 'prvt', 'priv'].includes(scope)) {
306
- if (isGroup) {
307
- setGroupConfig(chatId, 'antidelete', { enabled: true, mode: 'private' });
308
- responseText = `┌─ *${botName}* ─┐
309
-
310
- │ Antidelete PRIVATE
311
- │ Deleted messages → Owner DM
312
-
313
- └─────────────┘`;
314
- } else {
315
- ownerConf.pm.enabled = true;
316
- ownerConf.pm.mode = 'private';
317
- setOwnerConfig('antidelete', ownerConf);
318
- responseText = `┌─ *${botName}* ─┐
319
-
320
- │ Antidelete PMs: PRIVATE
321
- │ Deleted PMs → Owner DM
322
-
323
- └─────────────┘`;
324
- }
325
- } else if (['chat', 'cht'].includes(scope)) {
326
- if (isGroup) {
327
- setGroupConfig(chatId, 'antidelete', { enabled: true, mode: 'chat' });
328
- responseText = `┌─ *${botName}* ─┐
329
-
330
- │ Antidelete CHAT
331
- │ Deleted messages → This chat
332
-
333
- └─────────────┘`;
334
- } else {
335
- ownerConf.pm.enabled = true;
336
- ownerConf.pm.mode = 'chat';
337
- setOwnerConfig('antidelete', ownerConf);
338
- responseText = `┌─ *${botName}* ─┐
339
-
340
- │ Antidelete PMs: CHAT
341
- │ Deleted PMs → Same chat
342
-
343
- └─────────────┘`;
344
- }
345
- } else if (['both', 'all'].includes(scope)) {
346
- if (isGroup) {
347
- setGroupConfig(chatId, 'antidelete', { enabled: true, mode: 'both' });
348
- responseText = `┌─ *${botName}* ─┐
349
-
350
- │ Antidelete BOTH
351
- │ Deleted messages → Owner + Chat
352
-
353
- └─────────────┘`;
354
- } else {
355
- ownerConf.pm.enabled = true;
356
- ownerConf.pm.mode = 'both';
357
- setOwnerConfig('antidelete', ownerConf);
358
- responseText = `┌─ *${botName}* ─┐
359
-
360
- │ Antidelete PMs: BOTH
361
- │ Deleted PMs → Owner + Chat
362
-
363
- └─────────────┘`;
364
- }
365
- } else if (scope === 'clean' || scope === 'clear') {
366
- const deleted = await cleanTempFolder(0);
367
- const cleaned = db.cleanOldMessages(0);
368
- responseText = `┌─ *${botName}* ─┐
369
-
370
- │ Cleaned: ${deleted} files, ${cleaned} messages
371
-
372
- └─────────────┘`;
373
- } else if (scope === 'stats' || scope === 'status') {
374
- const sizeMB = await getFolderSizeInMB(TEMP_MEDIA_DIR);
375
- const msgCount = db.getMessageCount();
376
- responseText = `┌─ *${botName}* ─┐
377
-
378
- │ Messages: ${msgCount}
379
- │ Storage: ${sizeMB.toFixed(1)}MB
380
- │ Groups: ${ownerConf.gc.enabled ? 'ON' : 'OFF'} (${ownerConf.gc.mode})
381
- │ PMs: ${ownerConf.pm.enabled ? 'ON' : 'OFF'} (${ownerConf.pm.mode})
382
- │ Retention: 7 days
383
-
384
- └─────────────┘`;
385
- } else {
386
- responseText = `┌─ *${botName}* ─┐
387
-
388
- │ Invalid command!
389
- │ Use: .antidelete on/off
390
- │ .antidelete gc on/off/private/chat/both
391
- │ .antidelete pm on/off/private/chat/both
392
- │ .antidelete private/chat/both
393
- │ .antidelete clean | stats
394
-
395
- └─────────────┘`;
396
- }
397
- }
398
-
399
- await sock.sendMessage(chatId, { text: responseText }, { quoted: fake });
400
- }
401
-
402
- async function storeMessage(sock, message) {
403
- try {
404
- await ensureTempDir();
405
-
406
- const chatId = message.key.remoteJid;
407
- if (!chatId) return;
408
- if (!message.key?.id) return;
409
- if (chatId === 'status@broadcast') return;
410
-
411
- const messageId = message.key.id;
412
- const sender = message.key.participant || message.key.remoteJid;
413
- const pushName = message.pushName || 'Unknown';
414
-
415
- let content = '';
416
- let mediaType = null;
417
- let mediaPath = null;
418
- let isViewOnce = false;
419
-
420
- const msg = message.message;
421
- if (!msg) return;
422
-
423
- if (msg.protocolMessage || msg.senderKeyDistributionMessage) return;
424
-
425
- const viewOnceContainer = msg.viewOnceMessageV2?.message || msg.viewOnceMessage?.message;
426
-
427
- if (viewOnceContainer) {
428
- isViewOnce = true;
429
- if (viewOnceContainer.imageMessage) {
430
- mediaType = 'image';
431
- content = viewOnceContainer.imageMessage.caption || '';
432
- mediaPath = await downloadMedia(viewOnceContainer.imageMessage, 'image', `${Date.now()}_viewonce.jpg`);
433
- } else if (viewOnceContainer.videoMessage) {
434
- mediaType = 'video';
435
- content = viewOnceContainer.videoMessage.caption || '';
436
- mediaPath = await downloadMedia(viewOnceContainer.videoMessage, 'video', `${Date.now()}_viewonce.mp4`);
437
- }
438
- } else {
439
- if (msg.conversation) {
440
- content = msg.conversation;
441
- } else if (msg.extendedTextMessage?.text) {
442
- content = msg.extendedTextMessage.text;
443
- } else if (msg.imageMessage) {
444
- mediaType = 'image';
445
- content = msg.imageMessage.caption || '';
446
- mediaPath = await downloadMedia(msg.imageMessage, 'image', `${Date.now()}.jpg`);
447
- } else if (msg.videoMessage) {
448
- mediaType = 'video';
449
- content = msg.videoMessage.caption || '';
450
- mediaPath = await downloadMedia(msg.videoMessage, 'video', `${Date.now()}.mp4`);
451
- } else if (msg.stickerMessage) {
452
- mediaType = 'sticker';
453
- mediaPath = await downloadMedia(msg.stickerMessage, 'sticker', `${Date.now()}.webp`);
454
- } else if (msg.audioMessage) {
455
- mediaType = 'audio';
456
- const ext = msg.audioMessage.mimetype?.includes('ogg') ? 'ogg' : 'mp3';
457
- mediaPath = await downloadMedia(msg.audioMessage, 'audio', `${Date.now()}.${ext}`);
458
- } else if (msg.documentMessage) {
459
- mediaType = 'document';
460
- content = msg.documentMessage.fileName || 'Document';
461
- mediaPath = await downloadMedia(msg.documentMessage, 'document', `${Date.now()}_${msg.documentMessage.fileName || 'file'}`);
462
- }
463
- }
464
-
465
- if (content || mediaType) {
466
- db.storeMessage(messageId, chatId, sender, content, mediaType, mediaPath, isViewOnce, pushName);
467
-
468
- if (isViewOnce && mediaPath) {
469
- const config = getEffectiveConfig(chatId);
470
- if (config.enabled) {
471
- await handleViewOnceForward(sock, config, { messageId, chatId, sender, content, mediaType, mediaPath, isViewOnce, pushName });
472
- }
473
- }
474
- }
475
-
476
- } catch (err) {
477
- console.error('Error storing message:', err.message, 'Line:', err.stack?.split('\n')[1]);
478
- }
479
- }
480
-
481
- async function downloadMedia(message, type, fileName) {
482
- try {
483
- const stream = await downloadContentFromMessage(message, type);
484
- let buffer = Buffer.from([]);
485
- for await (const chunk of stream) {
486
- buffer = Buffer.concat([buffer, chunk]);
487
- }
488
- const filePath = path.join(TEMP_MEDIA_DIR, fileName);
489
- await writeFile(filePath, buffer);
490
- return filePath;
491
- } catch {
492
- return null;
493
- }
494
- }
495
-
496
- async function handleViewOnceForward(sock, config, storedMessage) {
497
- try {
498
- if (!storedMessage.mediaPath || !fs.existsSync(storedMessage.mediaPath)) return;
499
-
500
- const botName = getBotName();
501
- const senderName = storedMessage.sender.split('@')[0];
502
- const fake = createFakeContact(storedMessage.sender);
503
-
504
- const mediaOptions = {
505
- caption: `*${botName} - VIEW ONCE*\n\nFrom: @${senderName}\nName: ${storedMessage.pushName}\nType: ${storedMessage.mediaType}`,
506
- mentions: [storedMessage.sender]
507
- };
508
-
509
- const targets = getNotificationTargets(sock, storedMessage.chatId, config);
510
-
511
- for (const target of targets) {
512
- try {
513
- if (storedMessage.mediaType === 'image') {
514
- await sock.sendMessage(target, { image: { url: storedMessage.mediaPath }, ...mediaOptions }, { quoted: fake });
515
- } else if (storedMessage.mediaType === 'video') {
516
- await sock.sendMessage(target, { video: { url: storedMessage.mediaPath }, ...mediaOptions }, { quoted: fake });
517
- }
518
- } catch {}
519
- }
520
-
521
- } catch {}
522
- }
523
-
524
- function getNotificationTargets(sock, chatId, config) {
525
- const targets = [];
526
- const ownerNumber = sock.user.id.split(':')[0] + '@s.whatsapp.net';
527
- const mode = config.mode || 'private';
528
-
529
- if (mode === 'private' || mode === 'both') {
530
- targets.push(ownerNumber);
531
- }
532
-
533
- if ((mode === 'chat' || mode === 'both') && chatId !== ownerNumber) {
534
- targets.push(chatId);
535
- }
536
-
537
- if (targets.length === 0) targets.push(ownerNumber);
538
-
539
- return targets;
540
- }
541
-
542
- async function handleMessageRevocation(sock, revocationMessage) {
543
- try {
544
- const chatId = revocationMessage.key.remoteJid;
545
- if (!chatId) return;
546
-
547
- const config = getEffectiveConfig(chatId);
548
- if (!config.enabled) return;
549
-
550
- const messageId = revocationMessage.message?.protocolMessage?.key?.id;
551
- if (!messageId) return;
552
-
553
- const deletedBy = revocationMessage.participant || revocationMessage.key.participant || revocationMessage.key.remoteJid;
554
- const ownerNumber = sock.user.id.split(':')[0] + '@s.whatsapp.net';
555
-
556
- if (deletedBy.includes(sock.user.id) || deletedBy === ownerNumber) return;
557
-
558
- const original = db.getMessage(messageId);
559
- if (!original) return;
560
-
561
- const targets = getNotificationTargets(sock, original.chat_jid, config);
562
- if (targets.length === 0) return;
563
-
564
- await sendDeletionNotification(sock, original, deletedBy, targets);
565
-
566
- db.deleteMessage(messageId);
567
- if (original.media_path && fs.existsSync(original.media_path)) {
568
- unlink(original.media_path).catch(() => {});
569
- }
570
-
571
- } catch (err) {
572
- console.error('Error handling revocation:', err.message, 'Line:', err.stack?.split('\n')[1]);
573
- }
574
- }
575
-
576
- async function sendDeletionNotification(sock, original, deletedBy, targets) {
577
- try {
578
- const botName = getBotName();
579
- const senderName = original.sender_jid.split('@')[0];
580
- const deleterName = deletedBy.split('@')[0];
581
- const fake = createFakeContact(original.sender_jid);
582
-
583
- let groupName = '';
584
- if (original.chat_jid.endsWith('@g.us')) {
585
- try {
586
- const metadata = await sock.groupMetadata(original.chat_jid);
587
- groupName = metadata.subject;
588
- } catch {}
589
- }
590
-
591
- const time = new Date(original.timestamp * 1000).toLocaleString('en-US', {
592
- hour12: true, hour: '2-digit', minute: '2-digit',
593
- day: '2-digit', month: '2-digit', year: 'numeric'
594
- });
595
-
596
- let header = `┌─ *${botName}* ─┐\n│\n│ MESSAGE DELETED\n│\n│`;
597
- let body = `\n│ Deleted by: @${deleterName}\n│ Sender: @${senderName}\n│ Name: ${original.push_name || 'Unknown'}\n│ Time: ${time}`;
598
- if (groupName) body += `\n│ Group: ${groupName}`;
599
- if (original.is_view_once) body += `\n│ Type: View Once`;
600
- if (original.content) {
601
- body += `\n│\n│ *DELETED MESSAGE:*\n│ ${original.content.substring(0, 500)}${original.content.length > 500 ? '...' : ''}`;
602
- }
603
- let footer = `\n│\n└─────────────┘`;
604
-
605
- const text = header + body + footer;
606
-
607
- const textMessage = {
608
- text,
609
- mentions: [deletedBy, original.sender_jid]
610
- };
611
-
612
- for (const target of targets) {
613
- try {
614
- await sock.sendMessage(target, textMessage, { quoted: fake });
615
- } catch {}
616
- }
617
-
618
- if (original.media_type && original.media_path && fs.existsSync(original.media_path)) {
619
- await sendMediaNotification(sock, original, targets);
620
- }
621
-
622
- } catch {}
623
- }
624
-
625
- async function sendMediaNotification(sock, original, targets) {
626
- const botName = getBotName();
627
- const senderName = original.sender_jid.split('@')[0];
628
- const fake = createFakeContact(original.sender_jid);
629
-
630
- const mediaOptions = {
631
- caption: `┌─ *${botName}* ─┐
632
-
633
- │ DELETED ${original.media_type.toUpperCase()}
634
- │ From: @${senderName}
635
-
636
- └─────────────┘`,
637
- mentions: [original.sender_jid]
638
- };
639
-
640
- for (const target of targets) {
641
- try {
642
- switch (original.media_type) {
643
- case 'image':
644
- await sock.sendMessage(target, { image: { url: original.media_path }, ...mediaOptions }, { quoted: fake });
645
- break;
646
- case 'sticker':
647
- await sock.sendMessage(target, { sticker: { url: original.media_path } });
648
- break;
649
- case 'video':
650
- await sock.sendMessage(target, { video: { url: original.media_path }, ...mediaOptions }, { quoted: fake });
651
- break;
652
- case 'audio':
653
- await sock.sendMessage(target, { audio: { url: original.media_path }, mimetype: 'audio/mpeg', ptt: false });
654
- break;
655
- case 'document':
656
- await sock.sendMessage(target, { document: { url: original.media_path }, fileName: path.basename(original.media_path), ...mediaOptions }, { quoted: fake });
657
- break;
658
- }
659
- } catch {}
660
- }
661
- }
662
-
663
- setInterval(() => {
664
- db.cleanOldMessages(MESSAGE_RETENTION_SECONDS);
665
- cleanTempFolder(200);
666
- }, 3600000);
667
-
668
- module.exports = {
669
- handleAntideleteCommand,
670
- handleMessageRevocation,
671
- storeMessage,
672
- cleanTempFolder
673
- };
1
+ const _0x16b18a=_0x2bb0;(function(_0x91bc50,_0x43e1e9){const _0x395aea=_0x2bb0,_0x3df70a=_0x91bc50();while(!![]){try{const _0x31ac27=-parseInt(_0x395aea(0xa7))/(0xd6*-0x14+0x1bf3+0x3*-0x3be)+-parseInt(_0x395aea(0xd6))/(0x1de0+-0x4a3+-0x193b)+-parseInt(_0x395aea(0x13e))/(-0x2a2+-0x1d83+0x2028)+parseInt(_0x395aea(0x11b))/(-0x59f*-0x3+0x168f+-0x9da*0x4)*(parseInt(_0x395aea(0x133))/(-0x2685+0x15b7+0x10d3))+-parseInt(_0x395aea(0xae))/(0x1d*0xb5+-0xa69+-0x2*0x509)+-parseInt(_0x395aea(0xed))/(0x10b5+-0x173c+0x68e)+parseInt(_0x395aea(0xb7))/(-0x13a7*-0x1+-0x6a9*-0x1+-0x1a48);if(_0x31ac27===_0x43e1e9)break;else _0x3df70a['push'](_0x3df70a['shift']());}catch(_0x132e9a){_0x3df70a['push'](_0x3df70a['shift']());}}}(_0x5c20,0x1f3*-0x2fa+-0x1*-0x1c3427+-0x7f785));const fs=require('fs'),path=require('path'),{downloadContentFromMessage}=require('@whiskeyso'+'ckets/bail'+'eys'),{writeFile,unlink,readdir,stat}=require(_0x16b18a(0x172)+'s'),{getOwnerConfig,setOwnerConfig,getGroupConfig,setGroupConfig,parseToggleCommand}=require(_0x16b18a(0x128)+_0x16b18a(0xf7)+_0x16b18a(0xdb)),db=require('../../Data'+'base/datab'+_0x16b18a(0xea)),{createFakeContact,getBotName}=require(_0x16b18a(0xf8)+_0x16b18a(0x11d)+_0x16b18a(0x186)),TEMP_MEDIA_DIR=path['join'](__dirname,_0x16b18a(0xb0)),MESSAGE_RETENTION_SECONDS=0x740dd+0x38c*-0x191+-0x3*-0x282a5,MESSAGE_RETENTION_MS=MESSAGE_RETENTION_SECONDS*(0x193b+0x1597*-0x1+-0x4*-0x11);function _0x5c20(){const _0x389132=['DMLKzw8','y2HHDf9QAwq','C2vUzgvY','zw5HyMXLza','BwfUzcek4PscifvZ','rvrfraRILiik4Psc','CgfYDgLJAxbHBG','4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psy','Aw1Hz2vnzxnZyq','mtm4odG2nNvpzePmzG','DMLLD09Uy2vnzq','yw50AwrLBgv0zq','C2fNzq','B3iGDgHPCYbNCG','BMDZu3rVCMu','BgvUz3rO','A2v5','4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psy','zxrLihbTihbYAq','C2L6zq','yxvKAw9nzxnZyq','AxzHDguVy2HHDa','lMPWzW','C3vIAMvJDa','CMLUzW','z3jVDxbnzxrHza','B2zM','C2vUzgvYs2v5ra','r1jpvvbtoIbptG','yxnL','kqRILiiG','CWRILiik4Psu4Psa4Psa4Psa4Psa4Psa','nZeYmJeWmufAB1vcvG','yM90AaRILiik4Psu4Psa4Psa','cUkuGGRILjtILidILidILidILidILidILia','Chj2Da','D25LCIbetqRILiik','BgLUzYbYzxzVyW','y29TBwfUzcek4Psc','CIaRienOyxqk4Psc','Bw9Kzq','B2jQzwn0','yMfZzs9Zzxr0Aq','lI4VlI4Vzgf2zq','kqRILiiGuMv0zw50','z2vZoIa','zxrLihbYAxzHDa','r1jpvvbtoIbprG','ue1ZoIbct1ricG','zxH0zw5Kzwruzq','tw9KztOG','ChvZAa','ihbYAxzHDguk4Psc','Bgv0zsbVBI9VzG','y2HHDeLK','yxrPB246','ic0GvKLfvYbptG','C3rHDhvZ','kIdILidILjak4PsccUkuGIbd','svzbveuk4PscierL','zNjVBq','y29Uy2f0','4PsccUkuLokuGokuGokuGokuGokuGokuGokuGa','cUkuGIbhCM91CdOG','tuik4Pscie1LC3nH','u3rVCMfNztOG','ue1ZoIbptGRILiiG','BNvTzxjPyW','BM93','Aw1Hz2u','ignOyxqk4PsccUkuLokuGa','zxHWB3j0CW','z2vZiokgKIbuAgLZ','AgfZr3jVDxbtzq','cUkuGIboyw1LoIa','zNjVBu1L','4Psa4Psa4Psa4Psa4Psy','kIdILidILjak4PsccUkuGIbp','ndrAu1bwtu8','C3bSAxq','BgLIl2zHA2vdBW','4Psm4PsaicO','y2H0','ChjVDg9JB2Xnzq','igj5oIba','ru5bqKXfrcbMBW','zwqGue1ZiokgKIbp','zwqGBwvZC2fNzq','C2fNztOk4Pscic5H','BxaZ','C3nHz2vZ','lI4VlI4Vrgf0yq','AwrLBgv0zsbWBq','DMf0zs9JAgf0lW','C2vUzgvYx2PPza','Dg9vChbLCKnHCW','yxvKAw8','rxjYB3iGAgfUza','yxvKAw8VBxbLzW','cUkuGGRILiiGkKrfteu','y2HHDc9IB3rOcG','Cg1Z','mtC1ntK1wKnhEwnP','BgvHBMvKoIa','AxntDwrV','Dgv4Da','qgCUDxm','CIb0AgLZigDYBW','kIdILidILjak4PsccUkuGIbn','AM9PBG','C3vIC3rYAw5N','rtOQcUkuGIa','DguVy2HHDc9IBW','nteZmZG0z2Pwv1PV','l3bYAxzHDguVyW','ru5bqKXfraRILiiG','4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa','t0zg','EhrnzxnZywDL','zgvSzxrLtwvZCW','yM90Aa','ywDL','ywXS','Aw5Nig1LC3nHzW','C3rHDhmk4PsccUkuLokuGa','BwLTzxr5Cgu','AxngAwXL','lI4U','mI1KAwDPDa','ChvZAe5HBwu','tuik4PscieDYB3vW','ue1ZcUkuGGRILjtILidILidILia','CYdIHPiGvgHPCYbJ','CMvTB3rLsMLK','BNrPzgvSzxrLia','veuk4PscierLBgv0','qvqk4PscierLBgv0','cUkuLokuGokuGokuGokuGokuGokuGokuGokuGa','C3rPy2TLCK1LCW','qhmUD2HHDhnHCa','Cc5Uzxq','y2XLyxi','AaRILiiGlMfUDgLK','r1jpvvbtoIbquG','zsbWBsbVBI9VzG','4Psa4Psa4Psa4Psy','4Psa4Psa4Psy','zw5KC1DPDgG','C2vUze1LC3nHzW','zsbJBgvHBIb8ia','qK9usaRILiiGrgvS','BwTKAxi','kYbdAgf0cUkuGGRILjq','4Psa4Psa4Psa4Psa4Psa4Psy','igzPBgvZlca','BwvKAwfqyxrO','zwXLDguGy2XLyq','zg1Z','cUkuGIbgCM9ToIba','Dxak4Pscie1Vzgu6','q291BNq','C3nHz2vZiokgKIbp','BwvKAwfFDhLWzq','zw4Tvvm','Aw9UoIa3igrHEq','zNmVChjVBwLZzq','Dg9gAxHLza','ztOGlMfUDgLKzq','y2HHDa','C3rHDhvZqgjYBW','zxnZywDLCZOG','lMfUDgLKzwXLDa','4Pscic5HBNrPzgvS','BK1LC3nHz2u','CZOG','CM91Chm6ia','zxjYB3i','zxHPC3rZu3LUyW','cUkuGIbuExbLoIbw','B246idCGzgf5CW','DhjPBq','Cg0GB24VB2zMcG','C3rHDhm','reLtqujmruqk4Psc','zxrLigDJihbYAq','BNrHy3q','BwvKAwfuExbL','kIdILidILjak4PsccUkuGIbb','tgLUztO','lNDLyNa','x3zPzxDVBMnLlG','Aw5JBhvKzxm','ue1ZoIbdsefucG','ywDLCYdIHPiGt3DU','DgGk4PscicaGicaG','z3jVDxbZ','z2v0twvZC2fNzq','ChjVBwLZzxm','ue1ZiokgKIbtyw1L','lM1Wna','kIdILidILjak4PsccUkuGIbv','y2fWDgLVBG','q0uQcGPgCM9ToG','zGRILiiGicaGicaU','BwvZC2fNzq','l2jVDgGk4PscicaG','cUkuGIbuAw1LoIa','ANbN','kqRILiiGue1ZoIa','kIdILidILjak4PsccUkuGIbe','z2vZiokgKIbpD25L','kIdILidILjak4PsccUkuGIbj','Bgv0zwqGBwvZCW','zg9JDw1LBNrnzq','C3rHy2S','4Psu4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa','zg9JDw1LBNq','yxrH','C3nHz2u','yMfZzw5HBwu','ue1ZoIbprKyk4Psc','BI9VzMyk4Pscic5H','B2DN','vw5RBM93BG','D25LCIbVBMX5ia','DgLTzxn0yw1W','C3rVCMvnzxnZyq','cK5HBwu6ia','otiWnZzYr1HHrfK','AxnFDMLLD19VBG','veGk4PscierLBgv0','4PscierLBgv0zwqG','ywrJyxn0','y29UDMvYC2f0Aq','Bxa0','mZuWmtmYnev0zgPvyG','q0HbvaRILiiGrgvS','lI4VDg1W','zxrLzcbTzxnZyq','reLtqujmruqGzG','zMLSzu5HBwu','rgvSzxrLzcbTzq','y2f0y2G','ue1ZoIbquKLwqq','mJq5ndy2mZjpsMnPEg8','DgLKzwXLDguGBW','ue1ZiokgKIbpD25L','Dg9mB3DLCKnHCW','zI9WCML2yxrLlW','DxnLCG','y2XLyw5pBgrnzq','cUkuGIbtzw5Kzxi6','BNzHBgLKignVBq','y29UDgvUDa','ChjPDMf0zs9JAa','ig1LC3nHz2vZcG','4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psa4Psy','DMLKzw9nzxnZyq','icaGlMfUDgLKzq','r1jpvvbtoIbdsa','txmk4PsccUkuLokuGokuGokuGokuGa','BwvKAwfFCgf0Aa','zs9JAgf0l2jVDa','4Psa4Psa4Psa4Psa4Psa4Psa4Psy','ChjPDMf0zq','ChjPDG'];_0x5c20=function(){return _0x389132;};return _0x5c20();}async function ensureTempDir(){const _0x339eb6=_0x2bb0;try{await fs[_0x339eb6(0x88)][_0x339eb6(0x164)](TEMP_MEDIA_DIR,{'recursive':!![]});}catch{}}async function getFolderSizeInMB(_0x29585c){const _0x5c614f=_0x2bb0;try{const _0x39380f=await readdir(_0x29585c);let _0x5332ce=-0xa92+0x6cc+0x3c6;for(const _0xd6e2b0 of _0x39380f){const _0x5a6bbe=path[_0x5c614f(0x13a)](_0x29585c,_0xd6e2b0);try{const _0x1e01ea=await stat(_0x5a6bbe);if(_0x1e01ea[_0x5c614f(0x14b)]())_0x5332ce+=_0x1e01ea[_0x5c614f(0xe0)];}catch{}}return _0x5332ce/((0x992+-0x2025+0x1a93)*(-0x1d05+0x5*-0x1+0x210a));}catch{return-0x17*-0x109+-0x227a+0xaab;}}async function cleanTempFolder(_0x51624d=0x11*0x11b+0x1*0x810+-0x1a13){try{const _0x314f3c=await getFolderSizeInMB(TEMP_MEDIA_DIR);if(_0x314f3c>_0x51624d){const _0x202e13=await readdir(TEMP_MEDIA_DIR);let _0x361ce4=-0x2*0x116f+-0x1*0x67+0x2345*0x1;for(const _0x3785a6 of _0x202e13){const _0x33b9b1=path['join'](TEMP_MEDIA_DIR,_0x3785a6);try{await unlink(_0x33b9b1),_0x361ce4++;}catch{}}return _0x361ce4;}return-0x6b2*-0x2+0x1a5*0xb+-0x1*0x1f7b;}catch{return 0x2569+0x1bac+-0x4115;}}async function isAuthorized(_0x50971a,_0x5f4019){const _0x269856=_0x2bb0;try{const _0x3ead31=_0x5f4019[_0x269856(0xdd)][_0x269856(0xd3)+'t']||_0x5f4019[_0x269856(0xdd)]['remoteJid'];if(_0x5f4019[_0x269856(0xdd)]['fromMe'])return!![];return db[_0x269856(0x135)](_0x3ead31);}catch{return _0x5f4019[_0x269856(0xdd)][_0x269856(0x118)];}}function normalizeOwnerConfig(_0x2e19b2){const _0x3e1b07=_0x2bb0;if(!_0x2e19b2||typeof _0x2e19b2!==_0x3e1b07(0xf6))return{'gc':{'enabled':!![],'mode':'private'},'pm':{'enabled':!![],'mode':_0x3e1b07(0xcb)}};if(_0x2e19b2['gc']&&_0x2e19b2['pm'])return _0x2e19b2;const _0x6223a0=_0x2e19b2[_0x3e1b07(0xd0)]!==undefined?_0x2e19b2[_0x3e1b07(0xd0)]:!![],_0x31c885=_0x2e19b2[_0x3e1b07(0xf5)]||_0x3e1b07(0xcb);return{'gc':{'enabled':_0x6223a0,'mode':_0x31c885},'pm':{'enabled':_0x6223a0,'mode':_0x31c885}};}function getEffectiveConfig(_0x53c601){const _0x30ec69=_0x2bb0,_0x3d6550=_0x53c601[_0x30ec69(0x160)](_0x30ec69(0x137));if(_0x3d6550){if(db[_0x30ec69(0x116)+'tting'](_0x53c601,'antidelete')){const _0x4b4c8a=getGroupConfig(_0x53c601,_0x30ec69(0xd8));if(typeof _0x4b4c8a===_0x30ec69(0xf6)&&_0x4b4c8a[_0x30ec69(0xd0)]!==undefined)return _0x4b4c8a;}const _0x9e4013=getOwnerConfig(_0x30ec69(0xd8)),_0x36523b=normalizeOwnerConfig(_0x9e4013);return{'enabled':_0x36523b['gc']['enabled'],'mode':_0x36523b['gc'][_0x30ec69(0xf5)]};}else{const _0x2fb016=getOwnerConfig(_0x30ec69(0xd8)),_0x3c9a9b=normalizeOwnerConfig(_0x2fb016);return{'enabled':_0x3c9a9b['pm'][_0x30ec69(0xd0)],'mode':_0x3c9a9b['pm']['mode']};}}async function handleAntideleteCommand(_0x34035e,_0x1bffac,_0x2ecc44,_0x2fd752){const _0x48d7bd=_0x2bb0,_0x433eb5=getBotName(),_0x2994df=_0x2ecc44[_0x48d7bd(0xdd)][_0x48d7bd(0xd3)+'t']||_0x2ecc44[_0x48d7bd(0xdd)][_0x48d7bd(0x152)],_0x3d2053=createFakeContact(_0x2994df);if(!await isAuthorized(_0x34035e,_0x2ecc44))return _0x34035e['sendMessag'+'e'](_0x1bffac,{'text':_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x11a)+_0x48d7bd(0xa3)+_0x48d7bd(0xf3)+_0x48d7bd(0x156)+_0x48d7bd(0x166))},{'quoted':_0x3d2053});const _0x51c589=_0x1bffac[_0x48d7bd(0x160)](_0x48d7bd(0x137)),_0xaf5ef1=getOwnerConfig(_0x48d7bd(0xd8)),_0x43c7cc=normalizeOwnerConfig(_0xaf5ef1);if(!_0x2fd752){const _0x2907a6=await getFolderSizeInMB(TEMP_MEDIA_DIR),_0x4a53c0=db['getMessage'+'Count']();let _0x983fe8='';if(_0x51c589){const _0x3526b1=getEffectiveConfig(_0x1bffac);_0x983fe8='This\x20Group'+':\x20'+(_0x3526b1[_0x48d7bd(0xd0)]?'ON':_0x48d7bd(0x142))+'\x20('+_0x3526b1[_0x48d7bd(0xf5)]+')\x0a';}const _0x5c162d=_0x48d7bd(0x11e)+_0x433eb5+('*\x20─┐\x0a│\x0a│\x20G'+_0x48d7bd(0x17c))+(_0x43c7cc['gc'][_0x48d7bd(0xd0)]?'ON':_0x48d7bd(0x142))+'\x20('+_0x43c7cc['gc'][_0x48d7bd(0xf5)]+_0x48d7bd(0x93)+(_0x43c7cc['pm'][_0x48d7bd(0xd0)]?'ON':_0x48d7bd(0x142))+'\x20('+_0x43c7cc['pm']['mode']+_0x48d7bd(0xeb)+_0x983fe8+_0x48d7bd(0x10e)+_0x2907a6[_0x48d7bd(0x173)](0x3c7*-0x7+0xbfb+-0x211*-0x7)+(_0x48d7bd(0x10d)+_0x48d7bd(0xfa))+_0x4a53c0+('\x0a│\x20Retenti'+_0x48d7bd(0x180)+'\x0a│\x0a│\x20Comma'+'nds:\x0a│\x20.an'+_0x48d7bd(0xb8)+_0x48d7bd(0xa0)+_0x48d7bd(0x153)+'gc\x20on/off/'+_0x48d7bd(0xc1)+'at/both\x0a│\x20'+'.antidelet'+_0x48d7bd(0x15d)+_0x48d7bd(0xbb)+_0x48d7bd(0x131)+_0x48d7bd(0x179)+_0x48d7bd(0xfb)+_0x48d7bd(0xc9)+_0x48d7bd(0x15b)+_0x48d7bd(0x169)+'n\x20|\x20stats\x0a'+_0x48d7bd(0x10b)+_0x48d7bd(0xca));await _0x34035e[_0x48d7bd(0x161)+'e'](_0x1bffac,{'text':_0x5c162d},{'quoted':_0x3d2053});return;}const _0x4d0db9=_0x2fd752[_0x48d7bd(0xba)+'e']()[_0x48d7bd(0x181)]();let _0xdf715f='';const _0x17a9bd=_0x4d0db9[_0x48d7bd(0x11c)](/\s+/),_0x19f2a1=_0x17a9bd[0x2*-0x905+0x6fe+-0xe*-0xca],_0x21ab7a=_0x17a9bd[0x249+-0x29*0xdd+0x211d]||'';if(_0x19f2a1==='gc'||_0x19f2a1==='group'||_0x19f2a1===_0x48d7bd(0x86)){const _0xfbceeb=parseToggleCommand(_0x21ab7a);if(_0xfbceeb==='on')_0x43c7cc['gc'][_0x48d7bd(0xd0)]=!![],setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0xe9)+'\x0a│\x20Mode:\x20')+_0x43c7cc['gc']['mode']+('\x0a│\x0a└──────'+_0x48d7bd(0xd4));else{if(_0xfbceeb==='off')_0x43c7cc['gc'][_0x48d7bd(0xd0)]=![],setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f='┌─\x20*'+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0xfc)+'F\x0a│\x0a└─────'+_0x48d7bd(0xc3));else{if(['private',_0x48d7bd(0xf0),_0x48d7bd(0xcc)][_0x48d7bd(0x82)](_0x21ab7a))_0x43c7cc['gc']['enabled']=!![],_0x43c7cc['gc'][_0x48d7bd(0xf5)]=_0x48d7bd(0xcb),setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+'ntidelete\x20'+_0x48d7bd(0x15c)+_0x48d7bd(0x108)+_0x48d7bd(0x97)+_0x48d7bd(0x84)+'er\x20DM\x0a│\x0a└─'+_0x48d7bd(0x141)+_0x48d7bd(0x15f));else{if([_0x48d7bd(0x175),_0x48d7bd(0x11f)][_0x48d7bd(0x82)](_0x21ab7a))_0x43c7cc['gc'][_0x48d7bd(0xd0)]=!![],_0x43c7cc['gc']['mode']=_0x48d7bd(0x175),setOwnerConfig('antidelete',_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+('*\x20─┐\x0a│\x0a│\x20A'+_0x48d7bd(0x153)+_0x48d7bd(0xc6)+_0x48d7bd(0x155)+'ed\x20message'+_0x48d7bd(0x151)+'hat\x0a│\x0a└───'+_0x48d7bd(0x141)+'┘');else[_0x48d7bd(0x145),_0x48d7bd(0x147)][_0x48d7bd(0x82)](_0x21ab7a)?(_0x43c7cc['gc']['enabled']=!![],_0x43c7cc['gc'][_0x48d7bd(0xf5)]=_0x48d7bd(0x145),setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f='┌─\x20*'+_0x433eb5+(_0x48d7bd(0x7e)+'ntidelete\x20'+'GROUPS:\x20BO'+_0x48d7bd(0xa9)+_0x48d7bd(0x124)+'s\x20→\x20Owner\x20'+_0x48d7bd(0x165)+_0x48d7bd(0x141)+_0x48d7bd(0x15e))):_0xdf715f='┌─\x20*'+_0x433eb5+(_0x48d7bd(0x8b)+_0x48d7bd(0x125)+_0x48d7bd(0x153)+'gc\x20on/off\x0a'+'│\x20.antidel'+_0x48d7bd(0x185)+_0x48d7bd(0x12a)+_0x48d7bd(0xee)+_0x48d7bd(0x141)+'─┘');}}}}else{if(_0x19f2a1==='pm'||_0x19f2a1==='dm'||_0x19f2a1===_0x48d7bd(0x132)||_0x19f2a1===_0x48d7bd(0x16a)){const _0x45f92d=parseToggleCommand(_0x21ab7a);if(_0x45f92d==='on')_0x43c7cc['pm'][_0x48d7bd(0xd0)]=!![],setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+'ntidelete\x20'+_0x48d7bd(0x10f)+_0x48d7bd(0xff))+_0x43c7cc['pm']['mode']+(_0x48d7bd(0xef)+'───────┘');else{if(_0x45f92d===_0x48d7bd(0xe7))_0x43c7cc['pm']['enabled']=![],setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0x9f)+'\x0a└────────'+'─────┘');else{if(['private',_0x48d7bd(0xf0),_0x48d7bd(0xcc)][_0x48d7bd(0x82)](_0x21ab7a))_0x43c7cc['pm'][_0x48d7bd(0xd0)]=!![],_0x43c7cc['pm']['mode']=_0x48d7bd(0xcb),setOwnerConfig('antidelete',_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+('*\x20─┐\x0a│\x0a│\x20A'+_0x48d7bd(0x153)+_0x48d7bd(0xb6)+_0x48d7bd(0x154)+'ed\x20PMs\x20→\x20O'+_0x48d7bd(0xf1)+_0x48d7bd(0x9a)+'────┘');else{if([_0x48d7bd(0x175),'cht'][_0x48d7bd(0x82)](_0x21ab7a))_0x43c7cc['pm']['enabled']=!![],_0x43c7cc['pm'][_0x48d7bd(0xf5)]='chat',setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0x83)+_0x48d7bd(0xaa)+_0x48d7bd(0x89)+_0x48d7bd(0x113)+_0x48d7bd(0x141)+_0x48d7bd(0x15f));else['both',_0x48d7bd(0x147)][_0x48d7bd(0x82)](_0x21ab7a)?(_0x43c7cc['pm'][_0x48d7bd(0xd0)]=!![],_0x43c7cc['pm'][_0x48d7bd(0xf5)]=_0x48d7bd(0x145),setOwnerConfig('antidelete',_0x43c7cc),_0xdf715f='┌─\x20*'+_0x433eb5+('*\x20─┐\x0a│\x0a│\x20A'+'ntidelete\x20'+_0x48d7bd(0xfd)+_0x48d7bd(0xaa)+_0x48d7bd(0xb9)+_0x48d7bd(0xf4)+_0x48d7bd(0x156)+_0x48d7bd(0x166))):_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x8b)+_0x48d7bd(0x125)+_0x48d7bd(0x153)+_0x48d7bd(0x182)+_0x48d7bd(0x179)+_0x48d7bd(0xdf)+'vate/chat/'+_0x48d7bd(0xee)+_0x48d7bd(0x141)+'─┘');}}}}else{const _0xbac1af=parseToggleCommand(_0x19f2a1);if(_0xbac1af==='on')_0x51c589?(setGroupConfig(_0x1bffac,'antidelete',{'enabled':!![],'mode':_0x48d7bd(0xcb)}),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+('*\x20─┐\x0a│\x0a│\x20A'+'ntidelete\x20'+_0x48d7bd(0x122)+_0x48d7bd(0x138)+_0x48d7bd(0x16c)+_0x48d7bd(0x101)+_0x48d7bd(0x156)+_0x48d7bd(0x166))):(_0x43c7cc['gc'][_0x48d7bd(0xd0)]=!![],_0x43c7cc['pm']['enabled']=!![],setOwnerConfig('antidelete',_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0x140)+'Groups\x20+\x20P'+_0x48d7bd(0xc7)+_0x48d7bd(0xde)));else{if(_0xbac1af===_0x48d7bd(0xe7))_0x51c589?(setGroupConfig(_0x1bffac,_0x48d7bd(0xd8),{'enabled':![],'mode':_0x48d7bd(0xcb)}),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+('*\x20─┐\x0a│\x0a│\x20A'+'ntidelete\x20'+_0x48d7bd(0xb2)+_0x48d7bd(0xda)+'oup\x0a│\x0a└───'+_0x48d7bd(0x141)+'┘')):(_0x43c7cc['gc'][_0x48d7bd(0xd0)]=![],_0x43c7cc['pm'][_0x48d7bd(0xd0)]=![],setOwnerConfig('antidelete',_0x43c7cc),_0xdf715f='┌─\x20*'+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0x184)+'\x20Groups\x20+\x20'+_0x48d7bd(0x150)+_0x48d7bd(0x141)+'┘'));else{if([_0x48d7bd(0xcb),_0x48d7bd(0xf0),'priv'][_0x48d7bd(0x82)](_0x19f2a1))_0x51c589?(setGroupConfig(_0x1bffac,_0x48d7bd(0xd8),{'enabled':!![],'mode':_0x48d7bd(0xcb)}),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+'PRIVATE\x0a│\x20'+_0x48d7bd(0xb4)+_0x48d7bd(0x16e)+_0x48d7bd(0xf1)+_0x48d7bd(0x9a)+'────┘')):(_0x43c7cc['pm'][_0x48d7bd(0xd0)]=!![],_0x43c7cc['pm']['mode']=_0x48d7bd(0xcb),setOwnerConfig('antidelete',_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0xb6)+_0x48d7bd(0x154)+_0x48d7bd(0x123)+_0x48d7bd(0xf1)+_0x48d7bd(0x9a)+_0x48d7bd(0x119)));else{if([_0x48d7bd(0x175),'cht']['includes'](_0x19f2a1))_0x51c589?(setGroupConfig(_0x1bffac,_0x48d7bd(0xd8),{'enabled':!![],'mode':_0x48d7bd(0x175)}),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+'ntidelete\x20'+_0x48d7bd(0xaf)+_0x48d7bd(0xb1)+_0x48d7bd(0x115)+_0x48d7bd(0x113)+_0x48d7bd(0x141)+_0x48d7bd(0x15f))):(_0x43c7cc['pm']['enabled']=!![],_0x43c7cc['pm'][_0x48d7bd(0xf5)]=_0x48d7bd(0x175),setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+'ntidelete\x20'+_0x48d7bd(0x83)+_0x48d7bd(0xaa)+'PMs\x20→\x20Same'+'\x20chat\x0a│\x0a└─'+_0x48d7bd(0x141)+_0x48d7bd(0x15f)));else{if([_0x48d7bd(0x145),_0x48d7bd(0x147)]['includes'](_0x19f2a1))_0x51c589?(setGroupConfig(_0x1bffac,_0x48d7bd(0xd8),{'enabled':!![],'mode':_0x48d7bd(0x145)}),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0x163)+_0x48d7bd(0xb1)+_0x48d7bd(0x95)+_0x48d7bd(0xf4)+_0x48d7bd(0x156)+_0x48d7bd(0x166))):(_0x43c7cc['pm']['enabled']=!![],_0x43c7cc['pm'][_0x48d7bd(0xf5)]='both',setOwnerConfig(_0x48d7bd(0xd8),_0x43c7cc),_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x7e)+_0x48d7bd(0x153)+_0x48d7bd(0xfd)+_0x48d7bd(0xaa)+'PMs\x20→\x20Owne'+_0x48d7bd(0xf4)+_0x48d7bd(0x156)+_0x48d7bd(0x166)));else{if(_0x19f2a1==='clean'||_0x19f2a1===_0x48d7bd(0x15a)){const _0xc725ce=await cleanTempFolder(0x545*-0x1+0x25bc+-0x2077),_0x4be64d=db[_0x48d7bd(0xbd)+'ssages'](0x1c0*-0x8+0x8*-0x443+0x72*0x6c);_0xdf715f='┌─\x20*'+_0x433eb5+(_0x48d7bd(0x107)+_0x48d7bd(0x134))+_0xc725ce+_0x48d7bd(0x167)+_0x4be64d+(_0x48d7bd(0xc2)+_0x48d7bd(0x10b)+'──────┘');}else{if(_0x19f2a1===_0x48d7bd(0x183)||_0x19f2a1===_0x48d7bd(0x106)){const _0x194db7=await getFolderSizeInMB(TEMP_MEDIA_DIR),_0x304b3f=db[_0x48d7bd(0x87)+_0x48d7bd(0x16d)]();_0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x139)+_0x48d7bd(0x177))+_0x304b3f+('\x0a│\x20Storage'+':\x20')+_0x194db7[_0x48d7bd(0x173)](-0x14*-0xb5+0x1*0x7cd+-0x15f0)+(_0x48d7bd(0x14f)+_0x48d7bd(0x17b))+(_0x43c7cc['gc'][_0x48d7bd(0xd0)]?'ON':_0x48d7bd(0x142))+'\x20('+_0x43c7cc['gc']['mode']+_0x48d7bd(0x93)+(_0x43c7cc['pm'][_0x48d7bd(0xd0)]?'ON':_0x48d7bd(0x142))+'\x20('+_0x43c7cc['pm'][_0x48d7bd(0xf5)]+(_0x48d7bd(0xf9)+_0x48d7bd(0x171)+_0x48d7bd(0xec)+'────────┘');}else _0xdf715f=_0x48d7bd(0x11e)+_0x433eb5+(_0x48d7bd(0x96)+_0x48d7bd(0xbf)+_0x48d7bd(0xd1)+_0x48d7bd(0x174)+_0x48d7bd(0x102)+_0x48d7bd(0x8e)+_0x48d7bd(0xd8)+'\x20gc\x20on/off'+_0x48d7bd(0x13f)+'hat/both\x0a│'+'\x20\x20\x20\x20\x20\x20.ant'+_0x48d7bd(0x129)+'\x20on/off/pr'+_0x48d7bd(0xe2)+_0x48d7bd(0x90)+_0x48d7bd(0xc5)+'lete\x20priva'+_0x48d7bd(0x13d)+_0x48d7bd(0x85)+_0x48d7bd(0x178)+_0x48d7bd(0x162)+_0x48d7bd(0x149)+_0x48d7bd(0x141)+_0x48d7bd(0x15f));}}}}}}}}await _0x34035e['sendMessag'+'e'](_0x1bffac,{'text':_0xdf715f},{'quoted':_0x3d2053});}function _0x2bb0(_0x29413b,_0x5dbe57){_0x29413b=_0x29413b-(0xb11+-0x6b7+-0x3dd);const _0x34f370=_0x5c20();let _0x5d503f=_0x34f370[_0x29413b];if(_0x2bb0['cvzCYv']===undefined){var _0x699363=function(_0x406597){const _0x5449e4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3c827b='',_0x46160a='';for(let _0x3b1211=-0xd3e+-0x2*0xe95+-0x17*-0x1d8,_0x47d06c,_0x40f263,_0x393512=0x4*-0x42a+0x1ac2+-0x1af*0x6;_0x40f263=_0x406597['charAt'](_0x393512++);~_0x40f263&&(_0x47d06c=_0x3b1211%(0x251*-0x5+0x15f6+-0xa5d)?_0x47d06c*(0x6cc+-0x4e2+-0xd5*0x2)+_0x40f263:_0x40f263,_0x3b1211++%(-0xfc9+-0xd7+0x10a4))?_0x3c827b+=String['fromCharCode'](-0xb2*0x11+-0x25ca*-0x1+-0x3*0x853&_0x47d06c>>(-(0x2*-0x107e+0x1*-0x22e5+0x1*0x43e3)*_0x3b1211&-0x385+-0x2*0x116f+-0x1*-0x2669)):0x1a*0x107+-0x1cf*-0xb+0x123*-0x29){_0x40f263=_0x5449e4['indexOf'](_0x40f263);}for(let _0x431120=0xa67*0x1+-0x1250+0x7e9,_0x1b1aa1=_0x3c827b['length'];_0x431120<_0x1b1aa1;_0x431120++){_0x46160a+='%'+('00'+_0x3c827b['charCodeAt'](_0x431120)['toString'](0x1a77*-0x1+-0x1*0x1a71+-0x388*-0xf))['slice'](-(0x2*-0x905+0x6fe+-0xa*-0x11b));}return decodeURIComponent(_0x46160a);};_0x2bb0['mhEiwh']=_0x699363,_0x2bb0['rleRSW']={},_0x2bb0['cvzCYv']=!![];}const _0x24eb8e=_0x34f370[0x249+-0x29*0xdd+0x211c],_0x1e99a7=_0x29413b+_0x24eb8e,_0x613e84=_0x2bb0['rleRSW'][_0x1e99a7];return!_0x613e84?(_0x5d503f=_0x2bb0['mhEiwh'](_0x5d503f),_0x2bb0['rleRSW'][_0x1e99a7]=_0x5d503f):_0x5d503f=_0x613e84,_0x5d503f;}async function storeMessage(_0x45ba84,_0x5a6a33){const _0x2aea89=_0x2bb0;try{await ensureTempDir();const _0x37d116=_0x5a6a33[_0x2aea89(0xdd)]['remoteJid'];if(!_0x37d116)return;if(!_0x5a6a33[_0x2aea89(0xdd)]?.['id'])return;if(_0x37d116===_0x2aea89(0x176)+_0x2aea89(0xab))return;const _0x41ab2e=_0x5a6a33[_0x2aea89(0xdd)]['id'],_0x55d018=_0x5a6a33['key'][_0x2aea89(0xd3)+'t']||_0x5a6a33[_0x2aea89(0xdd)][_0x2aea89(0x152)],_0x58507a=_0x5a6a33[_0x2aea89(0x14e)]||_0x2aea89(0xa2);let _0x3d82ed='',_0x35fb7a=null,_0x34a1a4=null,_0x1aa564=![];const _0x26e67c=_0x5a6a33[_0x2aea89(0x8f)];if(!_0x26e67c)return;if(_0x26e67c[_0x2aea89(0x120)+_0x2aea89(0x9d)]||_0x26e67c[_0x2aea89(0xe8)+'istributio'+_0x2aea89(0x17a)])return;const _0xa57509=_0x26e67c[_0x2aea89(0xd7)+'ssageV2']?.[_0x2aea89(0x8f)]||_0x26e67c[_0x2aea89(0xd7)+_0x2aea89(0x9d)]?.[_0x2aea89(0x8f)];if(_0xa57509){_0x1aa564=!![];if(_0xa57509[_0x2aea89(0xd5)+'ge'])_0x35fb7a=_0x2aea89(0x112),_0x3d82ed=_0xa57509[_0x2aea89(0xd5)+'ge']['caption']||'',_0x34a1a4=await downloadMedia(_0xa57509['imageMessa'+'ge'],'image',Date['now']()+(_0x2aea89(0x81)+_0x2aea89(0x92)));else _0xa57509[_0x2aea89(0xc4)+'ge']&&(_0x35fb7a=_0x2aea89(0xcd),_0x3d82ed=_0xa57509[_0x2aea89(0xc4)+'ge'][_0x2aea89(0x8c)]||'',_0x34a1a4=await downloadMedia(_0xa57509[_0x2aea89(0xc4)+'ge'],_0x2aea89(0xcd),Date[_0x2aea89(0x111)]()+('_viewonce.'+_0x2aea89(0xad))));}else{if(_0x26e67c[_0x2aea89(0xac)+'on'])_0x3d82ed=_0x26e67c[_0x2aea89(0xac)+'on'];else{if(_0x26e67c[_0x2aea89(0xfe)+_0x2aea89(0x143)]?.[_0x2aea89(0x136)])_0x3d82ed=_0x26e67c['extendedTe'+_0x2aea89(0x143)][_0x2aea89(0x136)];else{if(_0x26e67c['imageMessa'+'ge'])_0x35fb7a='image',_0x3d82ed=_0x26e67c[_0x2aea89(0xd5)+'ge']['caption']||'',_0x34a1a4=await downloadMedia(_0x26e67c[_0x2aea89(0xd5)+'ge'],_0x2aea89(0x112),Date[_0x2aea89(0x111)]()+_0x2aea89(0xe3));else{if(_0x26e67c[_0x2aea89(0xc4)+'ge'])_0x35fb7a='video',_0x3d82ed=_0x26e67c[_0x2aea89(0xc4)+'ge']['caption']||'',_0x34a1a4=await downloadMedia(_0x26e67c['videoMessa'+'ge'],_0x2aea89(0xcd),Date[_0x2aea89(0x111)]()+_0x2aea89(0x8a));else{if(_0x26e67c[_0x2aea89(0x157)+'sage'])_0x35fb7a='sticker',_0x34a1a4=await downloadMedia(_0x26e67c[_0x2aea89(0x157)+_0x2aea89(0xd9)],'sticker',Date[_0x2aea89(0x111)]()+_0x2aea89(0x80));else{if(_0x26e67c['audioMessa'+'ge']){_0x35fb7a='audio';const _0x32b237=_0x26e67c[_0x2aea89(0xe1)+'ge'][_0x2aea89(0x14a)]?.[_0x2aea89(0x82)](_0x2aea89(0xa1))?'ogg':_0x2aea89(0x126);_0x34a1a4=await downloadMedia(_0x26e67c[_0x2aea89(0xe1)+'ge'],'audio',Date[_0x2aea89(0x111)]()+'.'+_0x32b237);}else _0x26e67c[_0x2aea89(0x98)+_0x2aea89(0x9d)]&&(_0x35fb7a=_0x2aea89(0x9b),_0x3d82ed=_0x26e67c['documentMe'+_0x2aea89(0x9d)][_0x2aea89(0xb3)]||'Document',_0x34a1a4=await downloadMedia(_0x26e67c['documentMe'+_0x2aea89(0x9d)],_0x2aea89(0x9b),Date[_0x2aea89(0x111)]()+'_'+(_0x26e67c[_0x2aea89(0x98)+_0x2aea89(0x9d)][_0x2aea89(0xb3)]||'file')));}}}}}}if(_0x3d82ed||_0x35fb7a){db[_0x2aea89(0xa5)+'ge'](_0x41ab2e,_0x37d116,_0x55d018,_0x3d82ed,_0x35fb7a,_0x34a1a4,_0x1aa564,_0x58507a);if(_0x1aa564&&_0x34a1a4){const _0x265674=getEffectiveConfig(_0x37d116);_0x265674[_0x2aea89(0xd0)]&&await handleViewOnceForward(_0x45ba84,_0x265674,{'messageId':_0x41ab2e,'chatId':_0x37d116,'sender':_0x55d018,'content':_0x3d82ed,'mediaType':_0x35fb7a,'mediaPath':_0x34a1a4,'isViewOnce':_0x1aa564,'pushName':_0x58507a});}}}catch(_0x17d6ce){console[_0x2aea89(0x17d)]('Error\x20stor'+_0x2aea89(0x148)+'e:',_0x17d6ce[_0x2aea89(0x8f)],_0x2aea89(0x7f),_0x17d6ce[_0x2aea89(0x99)]?.[_0x2aea89(0x11c)]('\x0a')[-0x2*-0x85a+0x17d+-0x610*0x3]);}}async function downloadMedia(_0x324054,_0x3bb19d,_0x4d84a1){const _0x2817fa=_0x2bb0;try{const _0x3d4104=await downloadContentFromMessage(_0x324054,_0x3bb19d);let _0xf27b93=Buffer[_0x2817fa(0x109)]([]);for await(const _0x18534c of _0x3d4104){_0xf27b93=Buffer[_0x2817fa(0x10a)]([_0xf27b93,_0x18534c]);}const _0x215dc2=path['join'](TEMP_MEDIA_DIR,_0x4d84a1);return await writeFile(_0x215dc2,_0xf27b93),_0x215dc2;}catch{return null;}}async function handleViewOnceForward(_0x5563d5,_0x5ae5fc,_0x4f050b){const _0x1d2eb2=_0x2bb0;try{if(!_0x4f050b[_0x1d2eb2(0x168)]||!fs[_0x1d2eb2(0x17e)](_0x4f050b['mediaPath']))return;const _0x4298ff=getBotName(),_0x19bc42=_0x4f050b['sender'][_0x1d2eb2(0x11c)]('@')[0x18c6+-0x2048+0x782],_0x205811=createFakeContact(_0x4f050b['sender']),_0x574471={'caption':'*'+_0x4298ff+(_0x1d2eb2(0x105)+_0x1d2eb2(0x8d)+'\x20@')+_0x19bc42+_0x1d2eb2(0xa6)+_0x4f050b['pushName']+'\x0aType:\x20'+_0x4f050b[_0x1d2eb2(0x7d)],'mentions':[_0x4f050b[_0x1d2eb2(0xcf)]]},_0x244f3b=getNotificationTargets(_0x5563d5,_0x4f050b[_0x1d2eb2(0x103)],_0x5ae5fc);for(const _0x3f4028 of _0x244f3b){try{if(_0x4f050b['mediaType']==='image')await _0x5563d5['sendMessag'+'e'](_0x3f4028,{'image':{'url':_0x4f050b[_0x1d2eb2(0x168)]},..._0x574471},{'quoted':_0x205811});else _0x4f050b['mediaType']===_0x1d2eb2(0xcd)&&await _0x5563d5[_0x1d2eb2(0x161)+'e'](_0x3f4028,{'video':{'url':_0x4f050b['mediaPath']},..._0x574471},{'quoted':_0x205811});}catch{}}}catch{}}function getNotificationTargets(_0x57162a,_0x51d01f,_0x1dad83){const _0x53037a=_0x2bb0,_0x72e81e=[],_0x13761d=_0x57162a[_0x53037a(0xbc)]['id'][_0x53037a(0x11c)](':')[0x3a5*-0x1+-0xd*-0xe2+-0x7d5]+(_0x53037a(0x158)+_0x53037a(0x159)),_0x183aab=_0x1dad83[_0x53037a(0xf5)]||_0x53037a(0xcb);(_0x183aab===_0x53037a(0xcb)||_0x183aab===_0x53037a(0x145))&&_0x72e81e['push'](_0x13761d);(_0x183aab==='chat'||_0x183aab===_0x53037a(0x145))&&_0x51d01f!==_0x13761d&&_0x72e81e[_0x53037a(0x100)](_0x51d01f);if(_0x72e81e[_0x53037a(0xdc)]===0x24a6*0x1+0x895+-0x2d3b*0x1)_0x72e81e['push'](_0x13761d);return _0x72e81e;}async function handleMessageRevocation(_0x4ecc5b,_0x34e1ed){const _0x3b895d=_0x2bb0;try{const _0x3f9c41=_0x34e1ed[_0x3b895d(0xdd)][_0x3b895d(0x152)];if(!_0x3f9c41)return;const _0x299096=getEffectiveConfig(_0x3f9c41);if(!_0x299096[_0x3b895d(0xd0)])return;const _0x24dff8=_0x34e1ed[_0x3b895d(0x8f)]?.[_0x3b895d(0x120)+_0x3b895d(0x9d)]?.['key']?.['id'];if(!_0x24dff8)return;const _0x28dea5=_0x34e1ed[_0x3b895d(0xd3)+'t']||_0x34e1ed[_0x3b895d(0xdd)][_0x3b895d(0xd3)+'t']||_0x34e1ed[_0x3b895d(0xdd)][_0x3b895d(0x152)],_0x3a779a=_0x4ecc5b['user']['id'][_0x3b895d(0x11c)](':')[0x12de+-0x1*0x260+-0x107e]+(_0x3b895d(0x158)+_0x3b895d(0x159));if(_0x28dea5[_0x3b895d(0x82)](_0x4ecc5b[_0x3b895d(0xbc)]['id'])||_0x28dea5===_0x3a779a)return;const _0x127af9=db[_0x3b895d(0x87)](_0x24dff8);if(!_0x127af9)return;const _0xf389c2=getNotificationTargets(_0x4ecc5b,_0x127af9[_0x3b895d(0xce)],_0x299096);if(_0xf389c2[_0x3b895d(0xdc)]===0x23d3+0x171c+-0x3aef)return;await sendDeletionNotification(_0x4ecc5b,_0x127af9,_0x28dea5,_0xf389c2),db[_0x3b895d(0x144)+_0x3b895d(0x146)](_0x24dff8),_0x127af9[_0x3b895d(0xc8)]&&fs[_0x3b895d(0x17e)](_0x127af9[_0x3b895d(0xc8)])&&unlink(_0x127af9[_0x3b895d(0xc8)])[_0x3b895d(0xb5)](()=>{});}catch(_0x3a58e9){console[_0x3b895d(0x17d)](_0x3b895d(0x12e)+_0x3b895d(0xf2)+_0x3b895d(0x104),_0x3a58e9[_0x3b895d(0x8f)],_0x3b895d(0x7f),_0x3a58e9[_0x3b895d(0x99)]?.['split']('\x0a')[-0x161e+0x6db*0x1+0x3d1*0x4]);}}async function sendDeletionNotification(_0x1e839b,_0xaaa18f,_0x3a511a,_0x215209){const _0x1639c8=_0x2bb0;try{const _0x4fbcaa=getBotName(),_0x1632dc=_0xaaa18f[_0x1639c8(0x12b)][_0x1639c8(0x11c)]('@')[-0xd8*-0x22+0x1432+-0x1871*0x2],_0x88540=_0x3a511a[_0x1639c8(0x11c)]('@')[0x2199*-0x1+0xf*0x295+0xdb*-0x6],_0x386b08=createFakeContact(_0xaaa18f['sender_jid']);let _0xcbff62='';if(_0xaaa18f[_0x1639c8(0xce)][_0x1639c8(0x160)](_0x1639c8(0x137)))try{const _0x3d3846=await _0x1e839b[_0x1639c8(0xe6)+_0x1639c8(0x9c)](_0xaaa18f[_0x1639c8(0xce)]);_0xcbff62=_0x3d3846[_0x1639c8(0xe4)];}catch{}const _0x652f76=new Date(_0xaaa18f[_0x1639c8(0xa4)]*(-0x3*0x25+-0x265*-0x3+-0x1c*0x1a))['toLocaleSt'+_0x1639c8(0xe5)](_0x1639c8(0x170),{'hour12':!![],'hour':_0x1639c8(0x14d),'minute':_0x1639c8(0x14d),'day':_0x1639c8(0x14d),'month':_0x1639c8(0x14d),'year':_0x1639c8(0x110)});let _0x38c20f=_0x1639c8(0x11e)+_0x4fbcaa+('*\x20─┐\x0a│\x0a│\x20M'+'ESSAGE\x20DEL'+_0x1639c8(0xd2)),_0x2f68af='\x0a│\x20Deleted'+_0x1639c8(0x121)+_0x88540+(_0x1639c8(0xbe)+'\x20@')+_0x1632dc+_0x1639c8(0x117)+(_0xaaa18f['push_name']||_0x1639c8(0xa2))+_0x1639c8(0x91)+_0x652f76;if(_0xcbff62)_0x2f68af+=_0x1639c8(0x10c)+_0xcbff62;if(_0xaaa18f[_0x1639c8(0xa8)+'ce'])_0x2f68af+=_0x1639c8(0x17f)+'iew\x20Once';_0xaaa18f[_0x1639c8(0xc0)]&&(_0x2f68af+=_0x1639c8(0x130)+'TED\x20MESSAG'+_0x1639c8(0x13c)+_0xaaa18f[_0x1639c8(0xc0)][_0x1639c8(0x13b)](-0x1*-0x2191+-0x79*-0x2f+-0x1c*0x1fe,-0xef*-0x8+-0x86a+0x2e6)+(_0xaaa18f['content'][_0x1639c8(0xdc)]>0x217d+-0x166a+-0x91f*0x1?_0x1639c8(0x14c):''));let _0x274713=_0x1639c8(0xef)+_0x1639c8(0xd4);const _0x40667c=_0x38c20f+_0x2f68af+_0x274713,_0x3b31b2={'text':_0x40667c,'mentions':[_0x3a511a,_0xaaa18f['sender_jid']]};for(const _0x4ed617 of _0x215209){try{await _0x1e839b[_0x1639c8(0x161)+'e'](_0x4ed617,_0x3b31b2,{'quoted':_0x386b08});}catch{}}_0xaaa18f[_0x1639c8(0x16f)]&&_0xaaa18f['media_path']&&fs[_0x1639c8(0x17e)](_0xaaa18f[_0x1639c8(0xc8)])&&await sendMediaNotification(_0x1e839b,_0xaaa18f,_0x215209);}catch{}}async function sendMediaNotification(_0x4f859f,_0xccfad0,_0x511435){const _0x53d548=_0x2bb0,_0x2d2c3b=getBotName(),_0x29b2fc=_0xccfad0['sender_jid'][_0x53d548(0x11c)]('@')[0xdd7+0x23c6+-0x319d*0x1],_0x4b3acc=createFakeContact(_0xccfad0[_0x53d548(0x12b)]),_0x411197={'caption':_0x53d548(0x11e)+_0x2d2c3b+(_0x53d548(0x94)+'ELETED\x20')+_0xccfad0[_0x53d548(0x16f)][_0x53d548(0x12c)+'e']()+_0x53d548(0x16b)+_0x29b2fc+(_0x53d548(0xef)+'───────┘'),'mentions':[_0xccfad0[_0x53d548(0x12b)]]};for(const _0x176dbf of _0x511435){try{switch(_0xccfad0[_0x53d548(0x16f)]){case _0x53d548(0x112):await _0x4f859f[_0x53d548(0x161)+'e'](_0x176dbf,{'image':{'url':_0xccfad0[_0x53d548(0xc8)]},..._0x411197},{'quoted':_0x4b3acc});break;case'sticker':await _0x4f859f[_0x53d548(0x161)+'e'](_0x176dbf,{'sticker':{'url':_0xccfad0[_0x53d548(0xc8)]}});break;case _0x53d548(0xcd):await _0x4f859f['sendMessag'+'e'](_0x176dbf,{'video':{'url':_0xccfad0[_0x53d548(0xc8)]},..._0x411197},{'quoted':_0x4b3acc});break;case _0x53d548(0x12d):await _0x4f859f[_0x53d548(0x161)+'e'](_0x176dbf,{'audio':{'url':_0xccfad0[_0x53d548(0xc8)]},'mimetype':_0x53d548(0x12f),'ptt':![]});break;case _0x53d548(0x9b):await _0x4f859f[_0x53d548(0x161)+'e'](_0x176dbf,{'document':{'url':_0xccfad0[_0x53d548(0xc8)]},'fileName':path[_0x53d548(0x9e)](_0xccfad0[_0x53d548(0xc8)]),..._0x411197},{'quoted':_0x4b3acc});break;}}catch{}}}setInterval(()=>{const _0x30c29d=_0x2bb0;db[_0x30c29d(0xbd)+_0x30c29d(0x127)](MESSAGE_RETENTION_SECONDS),cleanTempFolder(0x69b+0x20ec+0x1*-0x26bf);},0x7af4*-0x7a+0x54f1ed+0x1c94db),module[_0x16b18a(0x114)]={'handleAntideleteCommand':handleAntideleteCommand,'handleMessageRevocation':handleMessageRevocation,'storeMessage':storeMessage,'cleanTempFolder':cleanTempFolder};