✨ Add vipUsers collection
This commit is contained in:
@@ -3,12 +3,17 @@ import { handleClientAction } from "../chatClient";
|
|||||||
import { resolve } from "path";
|
import { resolve } from "path";
|
||||||
|
|
||||||
const LOG_PREFIX = "[Scheduled] ";
|
const LOG_PREFIX = "[Scheduled] ";
|
||||||
const SCHEDULED_FILE = resolve(process.cwd(), "./storage/scheduled.json");
|
|
||||||
const FIRST_CHECK_TIMEOUT = 5e3;
|
const FIRST_CHECK_TIMEOUT = 5e3;
|
||||||
const SAVE_TIMEOUT = 5e3;
|
const SAVE_TIMEOUT = 5e3;
|
||||||
const CHECK_INTERVAL = 60e3;
|
const CHECK_INTERVAL = 60e3;
|
||||||
|
|
||||||
|
const FILES_BASE = resolve(process.cwd(), "./storage");
|
||||||
|
const SCHEDULED_FILE = resolve(FILES_BASE, "./scheduled.json");
|
||||||
|
const VIP_USERS_FILE = resolve(FILES_BASE, "./vips.json");
|
||||||
|
|
||||||
const scheduledActions: Array<any> = [];
|
const scheduledActions: Array<any> = [];
|
||||||
|
const vipUsers: Record<string, Array<string>> = {};
|
||||||
|
|
||||||
let checkingScheduled = false;
|
let checkingScheduled = false;
|
||||||
let scheduledActionsInterval: NodeJS.Timeout;
|
let scheduledActionsInterval: NodeJS.Timeout;
|
||||||
@@ -35,6 +40,21 @@ async function start(): Promise<void> {
|
|||||||
|
|
||||||
setTimeout(checkScheduledActions, FIRST_CHECK_TIMEOUT);
|
setTimeout(checkScheduledActions, FIRST_CHECK_TIMEOUT);
|
||||||
scheduledActionsInterval = setInterval(checkScheduledActions, CHECK_INTERVAL);
|
scheduledActionsInterval = setInterval(checkScheduledActions, CHECK_INTERVAL);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const savedVipUsers = JSON.parse(
|
||||||
|
await (await fs.readFile(VIP_USERS_FILE)).toString()
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const key of Object.keys(savedVipUsers)) {
|
||||||
|
vipUsers[key] = savedVipUsers[key];
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// probably file does not exist
|
||||||
|
if (e instanceof Error) {
|
||||||
|
console.log(`${LOG_PREFIX}${e.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function checkScheduledActions(): Promise<void> {
|
async function checkScheduledActions(): Promise<void> {
|
||||||
@@ -60,13 +80,13 @@ async function checkScheduledActions(): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hasToSave) {
|
if (hasToSave) {
|
||||||
saveScheduledActions();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
checkingScheduled = false;
|
checkingScheduled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveScheduledActions(): void {
|
function save(): void {
|
||||||
if (saveScheduledActionsTimeout) {
|
if (saveScheduledActionsTimeout) {
|
||||||
clearTimeout(saveScheduledActionsTimeout);
|
clearTimeout(saveScheduledActionsTimeout);
|
||||||
saveScheduledActionsTimeout = null;
|
saveScheduledActionsTimeout = null;
|
||||||
@@ -74,22 +94,22 @@ function saveScheduledActions(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
saveScheduledActionsTimeout = setTimeout(async () => {
|
saveScheduledActionsTimeout = setTimeout(async () => {
|
||||||
const normalizedPath = SCHEDULED_FILE.replace(/\\/g, "/");
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fs.stat(normalizedPath);
|
await fs.stat(FILES_BASE);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const dirs = normalizedPath.split("/");
|
await fs.mkdir(FILES_BASE);
|
||||||
dirs.pop();
|
|
||||||
await fs.mkdir(dirs.join("/"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await fs.writeFile(SCHEDULED_FILE, JSON.stringify(scheduledActions));
|
await Promise.all([
|
||||||
|
fs.writeFile(SCHEDULED_FILE, JSON.stringify(scheduledActions)),
|
||||||
|
fs.writeFile(VIP_USERS_FILE, JSON.stringify(vipUsers))
|
||||||
|
]);
|
||||||
|
|
||||||
console.log(`${LOG_PREFIX}Saved actions.`);
|
console.log(`${LOG_PREFIX}Saved actions.`);
|
||||||
saveScheduledActionsTimeout = null;
|
saveScheduledActionsTimeout = null;
|
||||||
}, SAVE_TIMEOUT);
|
}, SAVE_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
saveScheduledActions();
|
save();
|
||||||
|
|
||||||
export { start, scheduledActions, saveScheduledActions };
|
export { start, scheduledActions, save, vipUsers };
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
save();
|
|
||||||
save();
|
|
||||||
function save(): void {
|
|
||||||
save();
|
|
||||||
export { start, scheduledActions, save };
|
|
Reference in New Issue
Block a user