import loadClient, { quit } from './utils/client'; import loadEvents from './events/loader'; import loadModals from './modals/loader'; import loadButtons from './buttons/loader'; import loadCommands from './commands/loader'; import { logStart } from './utils/misc'; /** Run the bot. */ const run = async () => { console.log('Starting Botanique...'); // Load .env if not in prod if (process.env.NODE_ENV !== 'production') { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore (await import('dotenv')).config({ path: './config/.env' }); } // Client Discord.JS const client_name = 'Client'; await loadClient() .then(async client => { // Events Discord.JS const events_name = 'Events'; await loadEvents(client) .then(() => console.log(logStart(events_name, true))) .catch((err) => { console.error(err); throw logStart(events_name, false); }); // Connect the bot to Discord.com await client.login(client.config.token_discord); // Modals Discord.JS const modals_name = 'Modals'; await loadModals(client) .then(() => console.log(logStart(modals_name, true))) .catch((err) => { console.error(err); throw logStart(modals_name, false); }); // Buttons Discord.JS const buttons_name = 'Buttons'; await loadButtons(client) .then(() => console.log(logStart(buttons_name, true))) .catch((err) => { console.error(err); throw logStart(buttons_name, false); }); // Commands Slash Discord.JS const commands_name = 'Commands'; await loadCommands(client) .then(() => console.log(logStart(commands_name, true))) .catch((err) => { console.error(err); throw logStart(commands_name, false); }); console.log(logStart(client_name, true)); console.log(`Botanique "${client.user?.username}" v${client.config.version} started!`); // ^C process.on('SIGINT', () => quit(client)); // Container force closed process.on('SIGTERM', () => quit(client)); }) .catch((err) => { console.error(err); throw logStart(client_name, false); }); }; run().catch(error => console.error(error));