3 Commits

Author SHA1 Message Date
nxbat d223a4e5b4 (tasks): Linting. 2026-09-21 22:22:58 +08:00
nxbat f66f1b84cd (tasks): Implement error handling and task IDs. 2026-09-21 22:20:22 +08:00
nxbat 2fa8e8bf43 (types): Re-implemented the Task type. 2026-09-21 22:06:09 +08:00
7 changed files with 38 additions and 11 deletions
+8 -3
View File
@@ -139,9 +139,14 @@ client.on('clientReady', async () => {
await initializeWebserver(client);
tasks.forEach(async (task) => {
if (task.firstRun) await task.handler(client);
setInterval(async () => await task.handler(client), task.interval);
tasks.forEach((task) => {
const handler = () => {
Promise.resolve(task.handle(client))
.catch(e => console.error(`Error in '${task.id}' task:`, e));
};
if (task.firstRun) handler();
setInterval(handler, task.interval);
});
events.forEach(event =>
+6 -2
View File
@@ -1,11 +1,15 @@
import { Client } from 'discord.js';
import { Task } from '../types';
import { checkExpiredBans } from '../utils';
export default {
const task: Task = {
id: 'checkExpiredBans',
interval: 300000,
firstRun: true,
handler: async (context: Client) => {
handle: async (context: Client) => {
await checkExpiredBans(context);
},
};
export default task;
+6 -2
View File
@@ -1,11 +1,15 @@
import { Client } from 'discord.js';
import { Task } from '../types';
import { closeOldTickets } from '../utils';
export default {
const task: Task = {
id: 'closeStaleTickets',
interval: 3.6e6,
firstRun: true,
handler: async (context: Client) => {
handle: async (context: Client) => {
await closeOldTickets(context);
},
};
export default task;
+6 -2
View File
@@ -1,11 +1,15 @@
import { Client } from 'discord.js';
import { Database } from '../shared/Database';
import { Task } from '../types';
export default {
const task: Task = {
id: 'pruneOldMessages',
interval: 3.6e6,
firstRun: true,
handler: async (context: Client) => {
handle: async (context: Client) => {
await Database.pruneOldMessages();
},
};
export default task;
+1
View File
@@ -3,3 +3,4 @@ export * from './database-types.d';
export * from './e621-types.d';
export * from './handler.d';
export * from './helper-types.d';
export * from './task.d';
+9
View File
@@ -0,0 +1,9 @@
import { Client } from 'discord.js';
export interface Task {
id: string;
interval: number;
firstRun: boolean;
handle(context: Client): Promise<void>;
}
+2 -2
View File
@@ -1,7 +1,7 @@
import { APIEmbed, Client } from 'discord.js';
type EmbedSeverity =
| 'info'
type EmbedSeverity
= | 'info'
| 'warning'
| 'error'
| 'success'