(tasks): simply the tasks 🔥

This commit is contained in:
2026-08-28 01:26:07 +08:00
parent bc9784c9b7
commit a70fa88343
7 changed files with 20 additions and 39 deletions
+5 -1
View File
@@ -8,6 +8,7 @@ import { Handler } from './types';
import { initIfNecessary, loadHandlersFrom, refreshCommands } from './utils'; import { initIfNecessary, loadHandlersFrom, refreshCommands } from './utils';
import { initializeWebserver } from './webserver'; import { initializeWebserver } from './webserver';
import { Encrypter } from './shared/Encrypter'; import { Encrypter } from './shared/Encrypter';
import tasks from './tasks';
let ready = false; let ready = false;
@@ -141,7 +142,10 @@ client.on('clientReady', async () => {
await initializeWebserver(client); await initializeWebserver(client);
ScheduledTasks.forEach(task => scheduler.add(task)); tasks.forEach(async (task) => {
if (task.firstRun) await task.handle(client);
setInterval(async () => await task.handle(client), task.interval);
});
events.forEach(event => events.forEach(event =>
client.on(event.event, (...args) => client.on(event.event, (...args) =>
-23
View File
@@ -1,23 +0,0 @@
import { Client } from 'discord.js';
import { Task } from '../types';
import ScheduledTasks from './tasks';
class Scheduler {
private tasks = new Map<Task, NodeJS.Timeout>();
private context: Client;
constructor(context: Client) {
this.context = context;
}
add(task: Task) {
const interval = setInterval(() => task.handle(this.context), task.interval);
if (task.firstRun) interval._onTimeout();
this.tasks.set(task, interval);
}
}
export {
ScheduledTasks, Scheduler
};
-9
View File
@@ -1,9 +0,0 @@
import checkExpiredBansTask from './check-expired-bans-task';
import closeStaleTicketsTask from './close-stale-tickets-task';
import pruneOldMessagesTask from './prune-old-messages-task';
export default [
closeStaleTicketsTask,
checkExpiredBansTask,
pruneOldMessagesTask
];
@@ -1,6 +1,6 @@
import { Client } from 'discord.js'; import { Client } from 'discord.js';
import { Task } from '../../types'; import { Task } from '../types';
import { checkExpiredBans } from '../../utils'; import { checkExpiredBans } from '../utils';
class CheckExpiredBansTask implements Task { class CheckExpiredBansTask implements Task {
interval: number = 300000; interval: number = 300000;
@@ -1,6 +1,6 @@
import { Client } from 'discord.js'; import { Client } from 'discord.js';
import { Task } from '../../types'; import { Task } from '../types';
import { closeOldTickets } from '../../utils'; import { closeOldTickets } from '../utils';
class CloseStaleTicketsTask implements Task { class CloseStaleTicketsTask implements Task {
interval: number = 3.6e6; interval: number = 3.6e6;
+9
View File
@@ -0,0 +1,9 @@
import checkExpiredBansTask from './checkExpiredBansTask';
import closeStaleTicketsTask from './closeStaleTicketsTask';
import pruneOldMessagesTask from './pruneOldMessagesTask';
export default [
closeStaleTicketsTask,
checkExpiredBansTask,
pruneOldMessagesTask
];
@@ -1,5 +1,5 @@
import { Task } from '../../types'; import { Task } from '../types';
import { Database } from '../../shared/Database'; import { Database } from '../shared/Database';
class PruneOldMessagesTask implements Task { class PruneOldMessagesTask implements Task {
interval: number = 3.6e6; interval: number = 3.6e6;