@shadow-dev/core
Version:
A modular core framework for Discord bot development, providing commands, buttons, menus, middleware, and more.
48 lines (47 loc) • 1.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaskScheduler = void 0;
class TaskScheduler {
constructor() {
this.tasks = new Map();
}
schedule(name, interval, callback, immediate = false) {
if (this.tasks.has(name)) {
console.warn(`⚠️ Task "${name}" is already scheduled.`);
return;
}
console.log(`🕒 Scheduled Task: ${name} (every ${interval / 1000}s)`);
if (immediate) {
try {
callback();
}
catch (err) {
console.error(`❌ Initial run of task "${name}" failed:`, err);
}
}
const timer = setInterval(() => {
try {
callback();
}
catch (err) {
console.error(`❌ Task "${name}" error:`, err);
}
}, interval);
this.tasks.set(name, { name, interval, timer, callback });
}
cancel(name) {
const task = this.tasks.get(name);
if (!task)
return console.warn(`⚠️ Task "${name}" not found.`);
clearInterval(task.timer);
this.tasks.delete(name);
console.log(`🛑 Cancelled Task: ${name}`);
}
list() {
return Array.from(this.tasks.keys());
}
has(name) {
return this.tasks.has(name);
}
}
exports.TaskScheduler = TaskScheduler;
;