From 56a2b3eabf666970203bcbc5ac949b38f1930fae Mon Sep 17 00:00:00 2001 From: Matthew R Date: Sat, 28 Mar 2020 12:11:16 -0400 Subject: [PATCH] add new interval which automatically updates permissions based on roles --- src/intervals/checkStaffStatus.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/intervals/checkStaffStatus.ts diff --git a/src/intervals/checkStaffStatus.ts b/src/intervals/checkStaffStatus.ts new file mode 100644 index 0000000..b34586c --- /dev/null +++ b/src/intervals/checkStaffStatus.ts @@ -0,0 +1,30 @@ +/* eslint-disable no-await-in-loop */ +import { Client } from '..'; + +export default function checkStaffStatus(client: Client) { + setInterval(async () => { + const accounts = await client.db.Account.find(); + for (const acc of accounts) { + const user = client.guilds.get('446067825673633794').members.get(acc.userID) ?? await client.guilds.get('446067825673633794').getRESTMember(acc.userID); + if (!acc.permissions.facultyMarshal && user.roles.includes('662163685439045632')) { + await client.db.Account.updateOne({ username: acc.username }, { $set: { 'permissions.facultyMarshal': true } }); + } + if (!acc.permissions.sheriff && user.roles.includes('455972169449734144')) { + await client.db.Account.updateOne({ username: acc.username }, { $set: { 'permissions.sheriff': true } }); + } + if (!acc.permissions.staff && user.roles.includes('446104438969466890')) { + await client.db.Account.updateOne({ username: acc.username }, { $set: { 'permissions.staff': true } }); + } + + if (acc.permissions.facultyMarshal && !user.roles.includes('662163685439045632')) { + await client.db.Account.updateOne({ username: acc.username }, { $set: { 'permissions.facultyMarshal': false } }); + } + if (acc.permissions.sheriff && !user.roles.includes('455972169449734144')) { + await client.db.Account.updateOne({ username: acc.username }, { $set: { 'permissions.sheriff': false } }); + } + if (acc.permissions.staff && !user.roles.includes('446104438969466890')) { + await client.db.Account.updateOne({ username: acc.username }, { $set: { 'permissions.staff': false } }); + } + } + }, 300000); +}