diff --git a/src/intervals/autoRelease.ts b/src/intervals/autoRelease.ts new file mode 100644 index 0000000..f115d0b --- /dev/null +++ b/src/intervals/autoRelease.ts @@ -0,0 +1,24 @@ +import { Client } from '../class'; + +let interval: NodeJS.Timeout; + +export default function checkLock(client: Client) { + interval = setInterval(async () => { + try { + const moderations = await client.db.moderation.find(); + moderations.forEach(async (moderation) => { + if (!moderation.expiration) return; + if (moderation.expiration.processed) return; + if (new Date() > moderation.expiration.date) { + await moderation.updateOne({ 'expiration.processed': true }); + const moderator = client.guilds.get(client.config.guildID).members.get(moderation.moderatorID); + await client.util.moderation.unban(moderation.userID, moderator); + client.util.signale.complete(`Released member ${moderation.userID} | Queue date at ${moderation.expiration.date.toLocaleString('en-us')}`); + } + }); + } catch (error) { + await client.util.handleError(error); + } + }, 10000); + return interval; +}