-
Notifications
You must be signed in to change notification settings - Fork 1
/
loader.ts
76 lines (49 loc) · 1.83 KB
/
loader.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { readdirSync } from 'fs'
import BaseCallback from './callbacks/_base'
import BaseCommand from './commands/_base'
import BaseInline from './inline/_base'
export function getCommands() {
const cmds: {
[id: string]: BaseCommand
} = {}
const dir = readdirSync('./commands/')
for (const file of dir) {
const { default: cmdClass } = require(`./commands/${file}`)
const cmd: BaseCommand = new cmdClass()
if(cmd.id == null) continue;
if(Object.keys(cmds).includes(cmd.id)) throw new Error(`cmd id '${cmd.id}' is already registred`)
cmds[cmd.id] = cmd
}
console.log(`Loaded ${Object.keys(cmds).length} commands`)
return cmds
}
export function getCallbacks() {
const callbacks: {
[id: string]: BaseCallback
} = {}
const dir = readdirSync('./callbacks/')
for (const file of dir) {
const { default: cbClass } = require(`./callbacks/${file}`)
const cb: BaseCallback = new cbClass()
if(cb.id == null) continue;
if(Object.keys(callbacks).includes(cb.id)) throw new Error(`callback id '${cb.id}' is already registred`)
callbacks[cb.id] = cb
}
console.log(`Loaded ${Object.keys(callbacks).length} callbacks`)
return callbacks
}
export function getInlines() {
const inlines: {
[id: string]: BaseInline
} = {}
const dir = readdirSync('./inline/')
for (const file of dir) {
const { default: inlineClass } = require(`./inline/${file}`)
const inline: BaseInline = new inlineClass()
if(inline.id == null) continue;
if(Object.keys(inlines).includes(inline.id)) throw new Error(`inline id '${inline.id}' is already registred`)
inlines[inline.id] = inline
}
console.log(`Loaded ${Object.keys(inlines).length} inlines`)
return inlines
}