Files
xiao/structures/remind/TimerManager.js
T
Dragon Fire 78aed1eca0 Fix
2024-05-01 23:35:34 -04:00

31 lines
976 B
JavaScript

const { Collection } = require('@discordjs/collection');
const Timer = require('./Timer');
module.exports = class TimerManager extends Collection {
constructor(client, options) {
super(options);
Object.defineProperty(this, 'client', { value: client });
}
async fetchAll() {
const timers = await this.client.redis.db.hgetall('timer');
for (let data of Object.values(timers)) {
data = JSON.parse(data);
await this.setTimer(data.id, data.channelID, new Date(data.time) - new Date(), data.userID, data.title, false);
}
return this;
}
async setTimer(id, channelID, time, userID, title, updateRedis = true) {
const timer = new Timer(this.client, id, channelID, userID, time, title);
if (updateRedis) await this.client.redis.db.hset('timer', { [timer.id]: timer.stringify() });
this.set(timer.id, timer);
return timer;
}
findAll(channelID, userID) {
return this.filter(timer => timer.channelID === channelID && timer.userID === userID);
}
};