diff --git a/app.js b/app.js index af477cb..e04f77f 100644 --- a/app.js +++ b/app.js @@ -174,35 +174,31 @@ if (isMaster) { }); } - //process the threshold into bytes early - if (process.env.TEMPDIR&&process.env.THRESHOLD) { + // process the threshold into bytes early + if (process.env.TEMPDIR && process.env.THRESHOLD) { const matched = process.env.THRESHOLD.match(/(\d+)([KMGT])/); const sizes = { - "K":1024, - "M":1048576, - "G":1073741824, - "T":1099511627776 + K: 1024, + M: 1048576, + G: 1073741824, + T: 1099511627776 }; - if (matched&&matched[1]&&matched[2]) { - process.env.THRESHOLD=matched[1]*sizes[matched[2]]; + if (matched && matched[1] && matched[2]) { + process.env.THRESHOLD = matched[1] * sizes[matched[2]]; } else { logger.error("Invalid THRESHOLD config."); process.env.THRESHOLD = undefined; } - let dirstat = (await promises.readdir(process.env.TEMPDIR)) - .map(async (file)=>{ - return new Promise((resolve,reject) =>{ - promises.stat(`${process.env.TEMPDIR}/${file}`) - .then((stats)=>{ - resolve(stats.size) - }) - }) + const dirstat = (await promises.readdir(process.env.TEMPDIR)).map(async (file) => { + return new Promise((resolve) => { + promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => { + resolve(stats.size); + }); }); - Promise.all(dirstat) - .then((size)=>{ - process.env.DIRSIZECACHE = size.reduce((a,b)=>{ - return a+b - },0) - }) + }); + const size = await Promise.all(dirstat); + process.env.DIRSIZECACHE = size.reduce((a, b)=>{ + return a + b; + }, 0); } } diff --git a/events/interactionCreate.js b/events/interactionCreate.js index ca9f55d..90323fc 100644 --- a/events/interactionCreate.js +++ b/events/interactionCreate.js @@ -55,6 +55,30 @@ export default async (client, cluster, worker, ipc, interaction) => { }, }] }); + if (process.env.THRESHOLD) { + process.env.DIRSIZECACHE += result.file.length; + if (process.env.DIRSIZECACHE > process.env.THRESHOLD) { + const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => { + return new Promise((resolve, reject) => { + promises.stat(`${process.env.TEMPDIR}/${file}`).then((fstats)=>{ + resolve({ + name: file, + size: fstats.size, + ctime: fstats.ctime + }); + }).catch(reject); + }); + }); + Promise.all(files).then((files) => { + process.env.DIRSIZECACHE = files.reduce((a, b)=>{ + return a+b.size; + }, 0); + const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name; + promises.rm(`${process.env.TEMPDIR}/${oldestFile}`); + logger.log(`Removed oldest image file: ${oldestFile}`); + }); + } + } } else { await interaction[interaction.acknowledged ? "editOriginalMessage" : "createMessage"]("The resulting image was more than 8MB in size, so I can't upload it."); } diff --git a/events/messageCreate.js b/events/messageCreate.js index ba9adf5..a33effd 100644 --- a/events/messageCreate.js +++ b/events/messageCreate.js @@ -4,7 +4,6 @@ import { log, error as _error } from "../utils/logger.js"; import { prefixCache, aliases, disabledCache, disabledCmdCache, commands } from "../utils/collections.js"; import parseCommand from "../utils/parseCommand.js"; import { clean } from "../utils/misc.js"; -import { spawn } from "child_process"; // run when someone sends a message export default async (client, cluster, worker, ipc, message) => { @@ -144,31 +143,27 @@ export default async (client, cluster, worker, ipc, message) => { }] }, reference)); if (process.env.THRESHOLD) { - process.env.DIRSIZECACHE+=result.file.length; - if (process.env.DIRSIZECACHE>process.env.THRESHOLD) { - const files = (await promises.readdir(process.env.TEMPDIR)) - .map((file)=>{ - return new Promise((resolve,reject) => { - promises.stat(`${process.env.TEMPDIR}/${file}`) - .then((fstats)=>{ - resolve({ - name:file, - size:fstats.size, - ctime:fstats.ctime - }); - }) - .catch(reject); - }); - }); - Promise.all(files) - .then((files)=>{ - process.env.DIRSIZECACHE = files.reduce((a,b)=>{ - return a+b.size - },0) - const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name; - promises.rm(`${process.env.TEMPDIR}/${oldestFile}`); - log(`Removed oldest image file: ${oldestFile}`); + process.env.DIRSIZECACHE += result.file.length; + if (process.env.DIRSIZECACHE > process.env.THRESHOLD) { + const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => { + return new Promise((resolve, reject) => { + promises.stat(`${process.env.TEMPDIR}/${file}`).then((fstats)=>{ + resolve({ + name: file, + size: fstats.size, + ctime: fstats.ctime + }); + }).catch(reject); }); + }); + Promise.all(files).then((files) => { + process.env.DIRSIZECACHE = files.reduce((a, b)=>{ + return a+b.size; + }, 0); + const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name; + promises.rm(`${process.env.TEMPDIR}/${oldestFile}`); + log(`Removed oldest image file: ${oldestFile}`); + }); } } } else {