1 |
import path from "path"; |
2 |
import DiscordClient from "../client/Client"; |
3 |
|
4 |
const timeouts = new Map(); |
5 |
|
6 |
export const runTimeouts = async () => { |
7 |
const data = await DiscordClient.client.db.allAsync("SELECT * FROM timeouts"); |
8 |
|
9 |
// await console.log(data); |
10 |
|
11 |
if (data && data.length > 0) { |
12 |
console.log('Running timeouts...'); |
13 |
for await (const row of data) { |
14 |
// console.log(row) |
15 |
|
16 |
let timeout = await setTimeout(async () => { |
17 |
await console.log('TIMEOUT'); |
18 |
await DiscordClient.client.db.runAsync("DELETE FROM timeouts WHERE id = ?", [row.id]); |
19 |
await timeouts.delete(row.id); |
20 |
(await import(row.filePath)).default(DiscordClient.client, ...JSON.parse(row.params)); |
21 |
}, new Date(row.time).getTime() - Date.now()); |
22 |
|
23 |
await timeouts.set(row.id, { |
24 |
row, |
25 |
timeout |
26 |
}); |
27 |
} |
28 |
} |
29 |
}; |
30 |
|
31 |
export const setTimeoutv2 = async (file: string, time: number, guild_id: string, cmd: string, ...params: any[]) => { |
32 |
await console.log('SETTING'); |
33 |
await DiscordClient.client.db.allAsync("INSERT INTO timeouts(created_at, filePath, time, params, guild_id, cmd) VALUES(?, ?, ?, ?, ?, ?)", [new Date().toISOString(), path.resolve(__dirname, '../queues', file), new Date(Date.now() + time).toISOString(), JSON.stringify(params), guild_id, cmd]); |
34 |
const row = await DiscordClient.client.db.getAsync('SELECT * FROM timeouts ORDER BY id DESC LIMIT 0, 1'); |
35 |
|
36 |
const timeout = await setTimeout(async () => { |
37 |
await console.log('TIMEOUT_SET'); |
38 |
await DiscordClient.client.db.runAsync("DELETE FROM timeouts WHERE id = ?", [row.id]); |
39 |
await timeouts.delete(row.id); |
40 |
(await import(path.resolve(__dirname, '../queues', file))).default(DiscordClient.client, ...params); |
41 |
}, time); |
42 |
|
43 |
const data = { |
44 |
row, |
45 |
timeout |
46 |
}; |
47 |
|
48 |
await timeouts.set(row.id, data); |
49 |
return data; |
50 |
}; |
51 |
|
52 |
export const clearTimeoutv2 = async ({ row, timeout }: any) => { |
53 |
await clearTimeout(timeout); |
54 |
await DiscordClient.client.db.runAsync("DELETE FROM timeouts WHERE id = ?", [row.id]); |
55 |
await timeouts.delete(row.id); |
56 |
}; |
57 |
|
58 |
export const getTimeout = (id: string | number) => timeouts.get(id); |
59 |
|
60 |
export const hasTimeout = (id: string | number) => timeouts.has(id); |
61 |
|
62 |
export const getTimeouts = () => timeouts; |