diff options
author | TymanWasTaken <32660892+tymanwastaken@users.noreply.github.com> | 2021-04-27 21:06:22 -0600 |
---|---|---|
committer | TymanWasTaken <32660892+tymanwastaken@users.noreply.github.com> | 2021-04-27 21:06:22 -0600 |
commit | 763fb7d98c3accbb21adf035a7cf0a83cb9533c9 (patch) | |
tree | 9d333fbca2a2a8e19d79904a4e29226174925cfc /src/tasks.ts | |
download | tanzanite-763fb7d98c3accbb21adf035a7cf0a83cb9533c9.tar.gz tanzanite-763fb7d98c3accbb21adf035a7cf0a83cb9533c9.tar.bz2 tanzanite-763fb7d98c3accbb21adf035a7cf0a83cb9533c9.zip |
legit just copy utilibot v2 code
Diffstat (limited to 'src/tasks.ts')
-rw-r--r-- | src/tasks.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/tasks.ts b/src/tasks.ts new file mode 100644 index 0000000..3aa07c8 --- /dev/null +++ b/src/tasks.ts @@ -0,0 +1,38 @@ +import { DiscordAPIError } from 'discord.js'; +import { Op } from 'sequelize'; +import { BotClient } from './lib/extensions/BotClient'; +import { Ban } from './lib/types/Models'; + +export const BanTask = async (client: BotClient): Promise<void> => { + const rows = await Ban.findAll({ + where: { + [Op.and]: [ + { + expires: { + [Op.lt]: new Date() // Find all rows with an expiry date before now + } + } + ] + } + }); + client.util.devLog(`Queried bans, found ${rows.length} expired bans.`); + for (const row of rows) { + const guild = client.guilds.cache.get(row.guild); + if (!guild) { + await row.destroy(); + continue; + } + try { + await guild.members.unban( + row.user, + `Unbanning user because tempban expired` + ); + } catch (e) { + if (e instanceof DiscordAPIError) { + // Member not banned, ignore + } else throw e; + } + await row.destroy(); + client.util.devLog('Unbanned user'); + } +}; |