Update autodelete.js
This commit is contained in:
		| @@ -6,8 +6,8 @@ let ignoredMessages = new Set(); | |||||||
| let isFirstDeletion = true; | let isFirstDeletion = true; | ||||||
|  |  | ||||||
| const DELETION_DELAY = 5 * 60 * 1000; | const DELETION_DELAY = 5 * 60 * 1000; | ||||||
| const MIN_DELETE_INTERVAL = 1500; | const MIN_DELETE_INTERVAL = 2500; | ||||||
| const MAX_DELETE_INTERVAL = 3000; | const MAX_DELETE_INTERVAL = 3500; | ||||||
|  |  | ||||||
| const getRandomInterval = () => { | const getRandomInterval = () => { | ||||||
|     return Math.floor(Math.random() * (MAX_DELETE_INTERVAL - MIN_DELETE_INTERVAL)) + MIN_DELETE_INTERVAL; |     return Math.floor(Math.random() * (MAX_DELETE_INTERVAL - MIN_DELETE_INTERVAL)) + MIN_DELETE_INTERVAL; | ||||||
| @@ -20,12 +20,23 @@ const processDeleteQueue = async () => { | |||||||
|         const messageToDelete = deleteQueue.shift(); |         const messageToDelete = deleteQueue.shift(); | ||||||
|         if (!messageToDelete) return; |         if (!messageToDelete) return; | ||||||
|  |  | ||||||
|  |         const deleteDelay = Math.floor(Math.random() * 100) + 50; | ||||||
|  |         await new Promise(resolve => setTimeout(resolve, deleteDelay)); | ||||||
|  |         console.log(`[AUTODELETE] Waited ${deleteDelay}ms before processing`); | ||||||
|  |  | ||||||
|         if (isFirstDeletion || Math.random() < 0.2) { |         if (isFirstDeletion || Math.random() < 0.2) { | ||||||
|             console.log(`[AUTODELETE] Checking message ${messageToDelete.id} existence${isFirstDeletion ? ' (first deletion)' : ''}`); |             console.log(`[AUTODELETE] Checking message ${messageToDelete.id} existence${isFirstDeletion ? ' (first deletion)' : ''}`); | ||||||
|             const exists = await messageToDelete.fetch().catch(() => null); |             const exists = await messageToDelete.fetch().catch(() => null); | ||||||
|             if (!exists) { |             if (!exists) { | ||||||
|                 console.log(`[AUTODELETE] Message ${messageToDelete.id} no longer exists, skipping`); |                 console.log(`[AUTODELETE] Message ${messageToDelete.id} no longer exists, skipping`); | ||||||
|                 isFirstDeletion = false; |                 isFirstDeletion = false; | ||||||
|  |                 if (deleteQueue.length > 0 && isProcessingQueue) { | ||||||
|  |                     const nextInterval = getRandomInterval(); | ||||||
|  |                     console.log(`[AUTODELETE] Next deletion in ${nextInterval}ms | Queue size: ${deleteQueue.length}`); | ||||||
|  |                     setTimeout(processDeleteQueue, nextInterval); | ||||||
|  |                 } else { | ||||||
|  |                     isProcessingQueue = false; | ||||||
|  |                 } | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -33,7 +44,7 @@ const processDeleteQueue = async () => { | |||||||
|         await messageToDelete.delete().catch(() => { |         await messageToDelete.delete().catch(() => { | ||||||
|             console.log(`[AUTODELETE] Couldn't delete message ${messageToDelete.id}`); |             console.log(`[AUTODELETE] Couldn't delete message ${messageToDelete.id}`); | ||||||
|         }); |         }); | ||||||
|          |  | ||||||
|         console.log(`[AUTODELETE] Processed message ${messageToDelete.id}`); |         console.log(`[AUTODELETE] Processed message ${messageToDelete.id}`); | ||||||
|         isFirstDeletion = false; |         isFirstDeletion = false; | ||||||
|  |  | ||||||
| @@ -59,7 +70,7 @@ const startQueueProcessing = () => { | |||||||
|  |  | ||||||
| const handleNewMessage = (message) => { | const handleNewMessage = (message) => { | ||||||
|     if (!isAutoDeleteActive || message.author.id !== message.client.user.id) return; |     if (!isAutoDeleteActive || message.author.id !== message.client.user.id) return; | ||||||
|      |  | ||||||
|     if (ignoredMessages.has(message.id)) { |     if (ignoredMessages.has(message.id)) { | ||||||
|         console.log(`[AUTODELETE] Skipping ignored message: ${message.id}`); |         console.log(`[AUTODELETE] Skipping ignored message: ${message.id}`); | ||||||
|         return; |         return; | ||||||
| @@ -92,20 +103,20 @@ module.exports = { | |||||||
|  |  | ||||||
|         if (args[0]?.toLowerCase() === 'stop') { |         if (args[0]?.toLowerCase() === 'stop') { | ||||||
|             isAutoDeleteActive = false; |             isAutoDeleteActive = false; | ||||||
|              |  | ||||||
|             for (const [messageId, timer] of messageTimers) { |             for (const [messageId, timer] of messageTimers) { | ||||||
|                 clearTimeout(timer); |                 clearTimeout(timer); | ||||||
|                 console.log(`[AUTODELETE] Cleared timer for message: ${messageId}`); |                 console.log(`[AUTODELETE] Cleared timer for message: ${messageId}`); | ||||||
|             } |             } | ||||||
|              |  | ||||||
|             messageTimers.clear(); |             messageTimers.clear(); | ||||||
|             deleteQueue = []; |             deleteQueue = []; | ||||||
|             isProcessingQueue = false; |             isProcessingQueue = false; | ||||||
|             isFirstDeletion = true; |             isFirstDeletion = true; | ||||||
|              |  | ||||||
|             console.log('[AUTODELETE] System deactivated - All timers cleared'); |             console.log('[AUTODELETE] System deactivated - All timers cleared'); | ||||||
|             message.channel.send('Auto-delete has been deactivated.') |             message.channel.send('Auto-delete has been deactivated.') | ||||||
|                 .then(msg => setTimeout(() => msg.delete().catch(() => {}), deleteTimeout)); |                 .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -118,10 +129,10 @@ module.exports = { | |||||||
|             message.client.on('messageCreate', handleNewMessage); |             message.client.on('messageCreate', handleNewMessage); | ||||||
|  |  | ||||||
|             message.channel.send('Auto-delete activated. Each message will be deleted after exactly 5 minutes.') |             message.channel.send('Auto-delete activated. Each message will be deleted after exactly 5 minutes.') | ||||||
|                 .then(msg => setTimeout(() => msg.delete().catch(() => {}), deleteTimeout)); |                 .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|         } else { |         } else { | ||||||
|             message.channel.send('Auto-delete is already active.') |             message.channel.send('Auto-delete is already active.') | ||||||
|                 .then(msg => setTimeout(() => msg.delete().catch(() => {}), deleteTimeout)); |                 .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
		Reference in New Issue
	
	Block a user