1 |
rakin |
51 |
import path from 'path'; |
2 |
|
|
import { promises as fs } from 'fs'; |
3 |
|
|
import DiscordClient from '../client/Client'; |
4 |
|
|
|
5 |
|
|
export async function registerCommands(client: DiscordClient, dir: string = '') { |
6 |
|
|
const filePath = path.join(__dirname, dir); |
7 |
|
|
const files = await fs.readdir(filePath); |
8 |
|
|
|
9 |
|
|
for (const file of files) { |
10 |
|
|
const stat = await fs.lstat(path.join(filePath, file)); |
11 |
|
|
|
12 |
|
|
if (stat.isDirectory()) |
13 |
|
|
registerCommands(client, path.join(dir, file)); |
14 |
|
|
|
15 |
|
|
if (file.endsWith('.js') || file.endsWith('.ts')) { |
16 |
|
|
const { default: Command } = await import(path.join(dir, file)); |
17 |
|
|
const command = new Command(); |
18 |
|
|
|
19 |
|
|
client.commands.set(command.getName(), command); |
20 |
|
|
|
21 |
|
|
command.getAliases().forEach((alias: string) => { |
22 |
|
|
client.commands.set(alias, command); |
23 |
|
|
}); |
24 |
|
|
} |
25 |
|
|
} |
26 |
|
|
} |
27 |
|
|
|
28 |
|
|
export async function registerEvents(client: DiscordClient, dir: string = '') { |
29 |
|
|
const filePath = path.join(__dirname, dir); |
30 |
|
|
const files = await fs.readdir(filePath); |
31 |
|
|
|
32 |
|
|
for (const file of files) { |
33 |
|
|
const stat = await fs.lstat(path.join(filePath, file)); |
34 |
|
|
|
35 |
|
|
if (stat.isDirectory()) |
36 |
|
|
registerEvents(client, path.join(dir, file)); |
37 |
|
|
|
38 |
|
|
if (file.endsWith('.js') || file.endsWith('.ts')) { |
39 |
|
|
const { default: Event } = await import(path.join(dir, file)); |
40 |
|
|
const event = new Event(); |
41 |
|
|
client.events.set(event.getName(), event); |
42 |
|
|
client.on(event.getName(), event.run.bind(event, client)); |
43 |
|
|
} |
44 |
|
|
} |
45 |
|
|
} |