const getHumanizedDeleteDelay = (baseDelay = 5000) => {
    const jitter = Math.floor(Math.random() * 2000) - 1000;
    return Math.max(1500, baseDelay + jitter);
};

const sendTempMessage = async (channel, content, baseDeleteDelay = 5000) => {
    if (channel.id === 'console') {
        return channel.send(content);
    }
    
    try {
        const deleteDelay = getHumanizedDeleteDelay(baseDeleteDelay);
        const sentMessage = await channel.send(content);
        
        sentMessage.scheduledForDeletion = true;
        
        console.log(`[MESSAGE] Sending temp message in ${channel.id}, will delete in ${deleteDelay}ms`);
        
        setTimeout(() => {
            if (Math.random() < 0.1) {
                const extraDelay = Math.floor(Math.random() * 3000) + 1000;
                console.log(`[MESSAGE] Adding ${extraDelay}ms extra delay before deletion`);
                setTimeout(() => sentMessage.delete().catch(err => console.error('[MESSAGE] Delete error:', err)), extraDelay);
            } else {
                sentMessage.delete().catch(err => console.error('[MESSAGE] Delete error:', err));
            }
        }, deleteDelay);
        
        return sentMessage;
    } catch (error) {
        console.error('[MESSAGE] Error sending temporary message:', error);
        return null;
    }
};

const sendCommandResponse = async (message, content, baseDeleteDelay = 5000, deleteOriginal = true) => {
    if (deleteOriginal) {
        try {
            const cmdDeleteDelay = Math.floor(Math.random() * 1000) + 500;
            setTimeout(() => message.delete().catch(() => {}), cmdDeleteDelay);
        } catch (error) {
            console.error('[MESSAGE] Error deleting original command:', error);
        }
    }
    
    return await sendTempMessage(message.channel, content, baseDeleteDelay);
};

module.exports = {
    getHumanizedDeleteDelay,
    sendTempMessage,
    sendCommandResponse
};