aboutsummaryrefslogtreecommitdiff
path: root/src/tasks/updateSuperUsers.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/tasks/updateSuperUsers.ts')
-rw-r--r--src/tasks/updateSuperUsers.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/tasks/updateSuperUsers.ts b/src/tasks/updateSuperUsers.ts
new file mode 100644
index 0000000..5b1555f
--- /dev/null
+++ b/src/tasks/updateSuperUsers.ts
@@ -0,0 +1,29 @@
+import { BushTask } from '../lib/extensions/discord-akairo/BushTask';
+import { Global } from '../lib/models/Global';
+
+export default class UpdateSuperUsersTask extends BushTask {
+ public constructor() {
+ super('updateSuperUsers', {
+ delay: 300_000, // 5 minutes
+ runOnStart: true
+ });
+ }
+ public override async exec(): Promise<void> {
+ const superUsers = client.guilds.cache
+ .get(client.config.supportGuild.id)
+ ?.members.cache.filter(
+ (member) =>
+ (member.roles.cache.has('865954009280938056') || member.permissions.has('ADMINISTRATOR')) && !member.user.bot
+ )
+ .map((member) => member.id);
+
+ const row =
+ (await Global.findByPk(client.config.environment)) ?? (await Global.create({ environment: client.config.environment }));
+
+ row.superUsers = superUsers ?? row.superUsers;
+ client.cache.global.superUsers = superUsers ?? row.superUsers;
+ await row.save();
+
+ void client.logger.verbose(`updateSuperUsers`, 'Updated superusers.');
+ }
+}