1 |
/** |
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 |
import 'reflect-metadata'; |
21 |
import { registerCommands, registerEvents } from './utils/registry'; |
22 |
import DiscordClient from './client/Client'; |
23 |
import { Intents } from 'discord.js'; |
24 |
import { config } from 'dotenv'; |
25 |
import { existsSync } from 'fs'; |
26 |
import path from 'path'; |
27 |
import { registrationEnd, registrationStart } from './utils/debug'; |
28 |
import { yellow } from './utils/util'; |
29 |
|
30 |
if (existsSync(path.join(__dirname, '../.env'))) { |
31 |
config(); |
32 |
} |
33 |
else { |
34 |
process.env.ENV = 'prod'; |
35 |
} |
36 |
|
37 |
if (process.argv.includes('--prod')) { |
38 |
console.warn(yellow('WARNING: Forcing production mode (--prod option passed)')); |
39 |
process.env.ENV = 'prod'; |
40 |
} |
41 |
|
42 |
if (process.argv.includes('--dev')) { |
43 |
console.warn(yellow('WARNING: Forcing development mode (--dev option passed)')); |
44 |
process.env.ENV = 'dev'; |
45 |
} |
46 |
|
47 |
console.log(`ENV: ${process.env.SUDO_PREFIX}`); |
48 |
|
49 |
const client = new DiscordClient({ |
50 |
partials: ["CHANNEL"], |
51 |
intents: [ |
52 |
Intents.FLAGS.GUILDS, |
53 |
Intents.FLAGS.GUILD_MESSAGES, |
54 |
Intents.FLAGS.DIRECT_MESSAGES, |
55 |
Intents.FLAGS.DIRECT_MESSAGE_TYPING, |
56 |
Intents.FLAGS.GUILD_PRESENCES, |
57 |
Intents.FLAGS.GUILD_MEMBERS, |
58 |
Intents.FLAGS.GUILD_BANS, |
59 |
Intents.FLAGS.GUILD_MESSAGE_REACTIONS, |
60 |
Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS, |
61 |
] |
62 |
}, path.resolve(__dirname, '..')); |
63 |
|
64 |
(async () => { |
65 |
await registrationStart(); |
66 |
await registerCommands(client, '../commands'); |
67 |
await registrationEnd(); |
68 |
|
69 |
await registrationStart(); |
70 |
await registerEvents(client, '../events'); |
71 |
await registrationEnd(); |
72 |
|
73 |
await client.login(process.env.TOKEN); |
74 |
await console.log('test'); |
75 |
})(); |