diff --git a/src/events/ready.js b/src/events/ready.js index 0a32014..8bf54d7 100644 --- a/src/events/ready.js +++ b/src/events/ready.js @@ -1,5 +1,7 @@ const logger = require('../handlers/logger'); +const { database, deployCommands } = require('../helpers'); + module.exports = { name: 'ready', once: true, @@ -14,5 +16,7 @@ module.exports = { ], status: 'online', }); + + await deployCommands(); }, }; diff --git a/src/handlers/commands.js b/src/handlers/commands.js new file mode 100644 index 0000000..2f91cee --- /dev/null +++ b/src/handlers/commands.js @@ -0,0 +1,13 @@ +const fs = require('fs'); // fs +const { Collection } = require('discord.js'); // discord.js + +module.exports = async (client) => { + client.commands = new Collection(); + const commandFiles = fs.readdirSync('./src/commands'); + + for (const file of commandFiles) { + // eslint-disable-next-line import/no-dynamic-require, global-require + const command = require(`../commands/${file}`); + client.commands.set(command.data.name, command); + } +}; diff --git a/src/handlers/events.js b/src/handlers/events.js new file mode 100644 index 0000000..175e9ba --- /dev/null +++ b/src/handlers/events.js @@ -0,0 +1,16 @@ +const fs = require('fs'); // fs + +module.exports = async (client) => { + const eventFiles = fs + .readdirSync('./src/events') + .filter((file) => file.endsWith('.js')); + + for (const file of eventFiles) { + const event = require(`../events/${file}`); + if (event.once) { + client.once(event.name, (...args) => event.execute(...args)); + } else { + client.on(event.name, (...args) => event.execute(...args)); + } + } +}; diff --git a/src/handlers/index.js b/src/handlers/index.js new file mode 100644 index 0000000..ab4a615 --- /dev/null +++ b/src/handlers/index.js @@ -0,0 +1,5 @@ +const events = require('./events'); +const commands = require('./commands'); +const locale = require('./locale'); + +module.exports = { events, commands, locale }; diff --git a/src/deploy-commands.js b/src/helpers/deployCommands.js similarity index 62% rename from src/deploy-commands.js rename to src/helpers/deployCommands.js index 1b64f2c..d488470 100644 --- a/src/deploy-commands.js +++ b/src/helpers/deployCommands.js @@ -1,22 +1,16 @@ -/* eslint-disable no-restricted-syntax */ -const config = require('../config.json'); - -const logger = require('./handlers/logger'); +const config = require('../../config.json'); +const logger = require('../handlers/logger'); +const fs = require('fs'); +const { REST } = require('@discordjs/rest'); +const { Routes } = require('discord-api-types/v9'); module.exports = async () => { - // eslint-disable-next-line global-require - const fs = require('fs'); - // eslint-disable-next-line global-require - const { REST } = require('@discordjs/rest'); - // eslint-disable-next-line global-require - const { Routes } = require('discord-api-types/v9'); - const commands = []; const commandFiles = fs.readdirSync('./src/commands'); for (const file of commandFiles) { // eslint-disable-next-line import/no-dynamic-require, global-require - const command = require(`./commands/${file}`); + const command = require(`../commands/${file}`); commands.push(command.data.toJSON()); } diff --git a/src/helpers/index.js b/src/helpers/index.js new file mode 100644 index 0000000..b63f4e0 --- /dev/null +++ b/src/helpers/index.js @@ -0,0 +1,4 @@ +const database = require('./database'); +const deployCommands = require('./deployCommands'); + +module.exports = { database, deployCommands }; diff --git a/src/index.js b/src/index.js index 75a879e..e5c563c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,37 +1,21 @@ -const fs = require('fs'); -const { Client, Collection, Intents } = require('discord.js'); +// Dependencies +const { Client, Intents } = require('discord.js'); // discord.js -require('./deploy-commands')(); -require('./helpers/database')(); -require('./handlers/locale')(); +const { database } = require('./helpers'); // helpers +const { events, commands, locale } = require('./handlers'); // handlers -const config = require('../config.json'); +const config = require('../config.json'); // config.json -const client = new Client({ - intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES], -}); +(async () => { + // Initialize discord.js client + const client = new Client({ + intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES], + }); -const eventFiles = fs - .readdirSync('./src/events') - .filter((file) => file.endsWith('.js')); + await database(); + await locale(); + await events(client); + await commands(client); -client.commands = new Collection(); -const commandFiles = fs.readdirSync('./src/commands'); - -for (const file of commandFiles) { - // eslint-disable-next-line import/no-dynamic-require, global-require - const command = require(`./commands/${file}`); - client.commands.set(command.data.name, command); -} - -for (const file of eventFiles) { - // eslint-disable-next-line import/no-dynamic-require, global-require - const event = require(`./events/${file}`); - if (event.once) { - client.once(event.name, (...args) => event.execute(...args)); - } else { - client.on(event.name, (...args) => event.execute(...args)); - } -} - -client.login(config.bot.token); + await client.login(config.bot.token); +})();