/[sudobot]/trunk/src/utils/registry.ts
ViewVC logotype

Annotation of /trunk/src/utils/registry.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 393 - (hide annotations)
Mon Jul 29 17:29:59 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 3418 byte(s)
style: add license comments (#77)

* style: add license commits

* fix: shebang errors
1 rakin 393 /**
2     * This file is part of SudoBot.
3     *
4     * Copyright (C) 2021-2022 OSN Inc.
5     *
6     * SudoBot is free software; you can redistribute it and/or modify it
7     * under the terms of the GNU Affero General Public License as published by
8     * the Free Software Foundation, either version 3 of the License, or
9     * (at your option) any later version.
10     *
11     * SudoBot is distributed in the hope that it will be useful, but
12     * WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU Affero General Public License for more details.
15     *
16     * You should have received a copy of the GNU Affero General Public License
17     * along with SudoBot. If not, see <https://www.gnu.org/licenses/>.
18     */
19    
20 rakin 51 import path from 'path';
21     import { promises as fs } from 'fs';
22     import DiscordClient from '../client/Client';
23 rakin 344 import { registered } from './debug';
24 rakin 51
25 rakin 77 export async function registerCLICommands(client: DiscordClient, dir: string = '') {
26     const filePath = path.join(__dirname, dir);
27     const files = await fs.readdir(filePath);
28    
29     for (const file of files) {
30     const stat = await fs.lstat(path.join(filePath, file));
31    
32     if (stat.isDirectory())
33     await registerCLICommands(client, path.join(dir, file));
34    
35     if (file.endsWith('.js') || file.endsWith('.ts')) {
36     const { default: Command } = await import(path.join(dir, file));
37     const command = new Command();
38    
39     client.cliCommands.set(command.getName(), command);
40    
41     command.getAliases().forEach((alias: string) => {
42     client.cliCommands.set(alias, command);
43     });
44     }
45     }
46     }
47    
48 rakin 51 export async function registerCommands(client: DiscordClient, dir: string = '') {
49     const filePath = path.join(__dirname, dir);
50     const files = await fs.readdir(filePath);
51    
52     for (const file of files) {
53     const stat = await fs.lstat(path.join(filePath, file));
54    
55     if (stat.isDirectory())
56 rakin 58 await registerCommands(client, path.join(dir, file));
57 rakin 51
58     if (file.endsWith('.js') || file.endsWith('.ts')) {
59 rakin 58 const startTime = Date.now();
60 rakin 51 const { default: Command } = await import(path.join(dir, file));
61     const command = new Command();
62    
63     client.commands.set(command.getName(), command);
64 rakin 58
65 rakin 51 command.getAliases().forEach((alias: string) => {
66     client.commands.set(alias, command);
67     });
68 rakin 58
69     const endTime = Date.now();
70    
71     registered(command, startTime, endTime);
72 rakin 51 }
73     }
74     }
75    
76     export async function registerEvents(client: DiscordClient, dir: string = '') {
77     const filePath = path.join(__dirname, dir);
78     const files = await fs.readdir(filePath);
79    
80     for (const file of files) {
81     const stat = await fs.lstat(path.join(filePath, file));
82    
83     if (stat.isDirectory())
84 rakin 58 await registerEvents(client, path.join(dir, file));
85 rakin 51
86     if (file.endsWith('.js') || file.endsWith('.ts')) {
87 rakin 58 const startTime = Date.now();
88 rakin 51 const { default: Event } = await import(path.join(dir, file));
89     const event = new Event();
90     client.events.set(event.getName(), event);
91     client.on(event.getName(), event.run.bind(event, client));
92 rakin 58 const endTime = Date.now();
93     registered(event, startTime, endTime);
94 rakin 51 }
95     }
96     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26