Add event loader
This commit is contained in:
parent
259f61c3e0
commit
efb87df67c
2 changed files with 51 additions and 8 deletions
36
src/events/loader.js
Normal file
36
src/events/loader.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
import { readdir } from 'fs/promises';
|
||||||
|
|
||||||
|
export default async client => {
|
||||||
|
const events_categories = (await readdir('./src/events'))
|
||||||
|
.filter(element => !element.endsWith('.js'));
|
||||||
|
|
||||||
|
events_categories.forEach(async event_category => {
|
||||||
|
// Retrieve events
|
||||||
|
const events = await readdir(`./src/events/${event_category}`);
|
||||||
|
|
||||||
|
// Load them into the client
|
||||||
|
Promise.all(
|
||||||
|
events.map(async event_file => {
|
||||||
|
const { once, default: execute } = await import(
|
||||||
|
`../events/${event_category}/${event_file}`
|
||||||
|
);
|
||||||
|
|
||||||
|
// Remove .js
|
||||||
|
let event_type = event_file.split('.');
|
||||||
|
if (event_type.pop() !== 'js') {
|
||||||
|
throw `Unknown file in ${event_category}: ${event_file}`;
|
||||||
|
}
|
||||||
|
event_type = event_type.join('.');
|
||||||
|
|
||||||
|
if (once) {
|
||||||
|
return client.once(event_type, (...args) => {
|
||||||
|
execute(...args, client);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return client.on(event_type, (...args) => {
|
||||||
|
execute(...args, client);
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
17
src/index.js
17
src/index.js
|
@ -1,23 +1,30 @@
|
||||||
import loadClient from './utils/client.js';
|
import loadClient from './utils/client.js';
|
||||||
|
import loadEvents from './events/loader.js';
|
||||||
|
|
||||||
const run = async () => {
|
const run = async () => {
|
||||||
console.log('Starting Botanique...');
|
console.log('Starting Botanique...');
|
||||||
|
|
||||||
// Load .env if not in prod
|
// Load .env if not in prod
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
if (process.env.NODE_ENV !== 'production') {
|
||||||
const dotenv = await import('dotenv');
|
(await import('dotenv')).config({ path: './config/.env' });
|
||||||
dotenv.config({ path: './config/.env' });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Client Discord.JS
|
// Client Discord.JS
|
||||||
const client = await loadClient().catch(() => {
|
const client = await loadClient()
|
||||||
|
.catch(() => {
|
||||||
throw 'Client ❌';
|
throw 'Client ❌';
|
||||||
});
|
});
|
||||||
if (client) {
|
|
||||||
console.log('Client ✅');
|
console.log('Client ✅');
|
||||||
}
|
|
||||||
|
await loadEvents(client)
|
||||||
|
.then(() => console.log('Events ✅'))
|
||||||
|
.catch(() => {
|
||||||
|
throw 'Events ❌';
|
||||||
|
});
|
||||||
|
|
||||||
await client.login(client.config.token_discord);
|
await client.login(client.config.token_discord);
|
||||||
|
|
||||||
|
console.log(`Botanique "${client.user.username}" ${client.config.version} started!`);
|
||||||
};
|
};
|
||||||
|
|
||||||
run().catch(error => console.error(error));
|
run().catch(error => console.error(error));
|
||||||
|
|
Loading…
Reference in a new issue