diff --git a/events/interactions/logBtnsCmds.js b/events/server/interactions/logBtnsCmds.js similarity index 92% rename from events/interactions/logBtnsCmds.js rename to events/server/interactions/logBtnsCmds.js index fa946d0..d0c871a 100644 --- a/events/interactions/logBtnsCmds.js +++ b/events/server/interactions/logBtnsCmds.js @@ -1,7 +1,8 @@ module.exports = { name: "logBtnsCmds", description: "Logs all button and command interactions", - type: "interaction", + type: "event", + event: "interactionCreate", /** @param { import('discord.js').ChatInputCommandInteraction } interaction */ diff --git a/events/messages/clown.js b/events/server/messages/clown.js similarity index 87% rename from events/messages/clown.js rename to events/server/messages/clown.js index 8ba28b8..36af753 100644 --- a/events/messages/clown.js +++ b/events/server/messages/clown.js @@ -1,7 +1,8 @@ module.exports = { name: 'ur mom', description: 'ur moms someone', - type: 'message', + type: 'event', + event: 'messageCreate', /** @param { import('discord.js').Message } message */ diff --git a/events/ready/consolelog.js b/events/server/ready/consolelog.js similarity index 85% rename from events/ready/consolelog.js rename to events/server/ready/consolelog.js index 45e3ea4..ded7a2a 100644 --- a/events/ready/consolelog.js +++ b/events/server/ready/consolelog.js @@ -1,7 +1,8 @@ module.exports = { name: 'conolelog', description: "console log", - type: 'ready', + type: 'event', + event: 'ready', /** @param { import('discord.js').Client } client */ execute(client) { diff --git a/events/ready/sendOnlineMessage.js b/events/server/ready/sendOnlineMessage.js similarity index 84% rename from events/ready/sendOnlineMessage.js rename to events/server/ready/sendOnlineMessage.js index 75577a5..7bca2ef 100644 --- a/events/ready/sendOnlineMessage.js +++ b/events/server/ready/sendOnlineMessage.js @@ -1,9 +1,10 @@ -const { onlineLogChannel, color } = require('../../config/options.json'); +const { onlineLogChannel, color } = require('../../../config/options.json'); module.exports = { name: 'sendonlinemessage', description: "send an online message", - type: 'ready', + type: 'event', + event: 'ready', execute(client) { if (process.env.NODE_ENV !== 'dev') { diff --git a/events/ready/status.js b/events/server/ready/status.js similarity index 86% rename from events/ready/status.js rename to events/server/ready/status.js index d39ab32..0593df5 100644 --- a/events/ready/status.js +++ b/events/server/ready/status.js @@ -1,9 +1,10 @@ -const statuses = require('../../config/statuses.json') +const statuses = require('../../../config/statuses.json') module.exports = { name: 'status', description: 'Sets the status of the bot', - type: 'ready', + type: 'event', + event: 'ready', /** @param { import('discord.js').Client } client */ diff --git a/events/other/vcJoinLeave.js b/events/server/voiceStateUpdate/vcJoinLeave.js similarity index 96% rename from events/other/vcJoinLeave.js rename to events/server/voiceStateUpdate/vcJoinLeave.js index fe3d3f4..4d121bc 100644 --- a/events/other/vcJoinLeave.js +++ b/events/server/voiceStateUpdate/vcJoinLeave.js @@ -1,10 +1,10 @@ const { userMention, channelMention } = require('discord.js') -const { botLogChannel, color } = require('../../config/options.json') +const { botLogChannel, color } = require('../../../config/options.json') module.exports = { name: 'vcJoinLeave', description: 'Logs when a user joins or leaves a voice channel.', - type: 'other', + type: 'event', event: 'voiceStateUpdate', /** diff --git a/index.js b/index.js index b935427..6aa34f5 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,5 @@ const { Client, GatewayIntentBits, Partials, Collection } = require('discord.js'); -const { - loadSlashCommands, - loadMessageEvents, - loadContextMenu, - loadModalEvents, - loadButtonEvents, - loadReadyEvents, - loadInteractionEvents, - loadOtherEvents -} = require('./utils/eventHandler.js') +const { loadSlashCommandsEvents, loadContextMenuEvents, loadModalEvents, loadButtonEvents, loadEvents } = require('./utils/eventHandler.js') const { autoDeployCommands } = require('./utils/autodeploy.js'); require('dotenv').config(); const mongoURI = process.env.MONGOURI; @@ -44,14 +35,11 @@ client.commands = new Collection(); client.events = new Collection(); client.modals = new Collection(); -loadSlashCommands(client); -loadContextMenu(client); +loadSlashCommandsEvents(client); +loadContextMenuEvents(client); loadButtonEvents(client); loadModalEvents(client); -loadMessageEvents(client); -loadReadyEvents(client) -loadInteractionEvents(client); -loadOtherEvents(client); +loadEvents(client); client.login(token); diff --git a/utils/eventHandler.js b/utils/eventHandler.js index 3cd79f4..33b8473 100644 --- a/utils/eventHandler.js +++ b/utils/eventHandler.js @@ -1,19 +1,13 @@ const { loadButtonEvents } = require('./eventHandlers/button.js') -const { loadSlashCommands } = require('./eventHandlers/command.js') -const { loadContextMenu } = require('./eventHandlers/contextmenu.js') -const { loadMessageEvents } = require('./eventHandlers/message.js') +const { loadSlashCommandsEvents } = require('./eventHandlers/command.js') +const { loadContextMenuEvents } = require('./eventHandlers/contextmenu.js') const { loadModalEvents } = require('./eventHandlers/modal.js') -const { loadReadyEvents } = require('./eventHandlers/ready.js') -const { loadInteractionEvents } = require('./eventHandlers/interaction.js') -const { loadOtherEvents } = require('./eventHandlers/other.js') +const { loadEvents } = require('./eventHandlers/events.js') module.exports = { - loadSlashCommands, + loadSlashCommandsEvents, loadButtonEvents, - loadContextMenu, - loadMessageEvents, + loadContextMenuEvents, loadModalEvents, - loadReadyEvents, - loadInteractionEvents, - loadOtherEvents + loadEvents } diff --git a/utils/eventHandlers/command.js b/utils/eventHandlers/command.js index 60830e1..cc1c401 100644 --- a/utils/eventHandlers/command.js +++ b/utils/eventHandlers/command.js @@ -4,7 +4,7 @@ const fs = require('fs'); /** @param { import('discord.js').Client } client */ -function loadSlashCommands(client) { +function loadSlashCommandsEvents(client) { const cmdPath = path.join(__dirname, '..', '..', 'commands'); const cmdFiles = fs.readdirSync(cmdPath).filter(file => file.endsWith('.js')); @@ -60,4 +60,4 @@ function loadSlashCommands(client) { }) } -module.exports = { loadSlashCommands } +module.exports = { loadSlashCommandsEvents } diff --git a/utils/eventHandlers/contextmenu.js b/utils/eventHandlers/contextmenu.js index 5ed8fe7..54773d9 100644 --- a/utils/eventHandlers/contextmenu.js +++ b/utils/eventHandlers/contextmenu.js @@ -4,7 +4,7 @@ const fs = require('fs'); /** @param { import('discord.js').Client } client */ -function loadContextMenu(client) { +function loadContextMenuEvents(client) { const contextMenuPath = path.join(__dirname, '..', '..', 'commands-contextmenu'); const contextMenuFiles = fs.readdirSync(contextMenuPath).filter(file => file.endsWith('.js')); @@ -44,4 +44,4 @@ function loadContextMenu(client) { }) } -module.exports = { loadContextMenu } +module.exports = { loadContextMenuEvents } diff --git a/utils/eventHandlers/events.js b/utils/eventHandlers/events.js new file mode 100644 index 0000000..7249074 --- /dev/null +++ b/utils/eventHandlers/events.js @@ -0,0 +1,24 @@ +const path = require('path'); +const fs = require('fs'); + +/** @param { import('discord.js').Client } client */ + +function loadEvents(client) { + const serverDir = path.join(__dirname, '..', '..', 'events', 'server') + const eventDirs = fs.readdirSync(serverDir) + for (const eventDir of eventDirs) { + const eventFiles = fs.readdirSync(path.join(serverDir, eventDir)) + for (const eventFile of eventFiles) { + const eventPath = path.join(serverDir, eventDir, eventFile) + const event = require(eventPath) + if ('name' in event && 'execute' in event && 'event' in event && event.type === 'event') { + client.on(event.event, event.execute) + } else { + console.log(`[WARNING] The event at ${eventPath} is missing a required "name", "execute", "type" or "event" property.`); + } + } + } + +} + +module.exports = { loadEvents } diff --git a/utils/eventHandlers/interaction.js b/utils/eventHandlers/interaction.js deleted file mode 100644 index 1af8b5b..0000000 --- a/utils/eventHandlers/interaction.js +++ /dev/null @@ -1,23 +0,0 @@ -const { Events } = require('discord.js') -const path = require('path'); -const fs = require('fs'); - -/** @param { import('discord.js').Client } client */ - -function loadInteractionEvents(client) { - const interactionsPath = path.join(__dirname, '..', '..', 'events', 'interactions') - const interactionsFiles = fs.readdirSync(interactionsPath).filter(file => file.endsWith('.js')); - - for (const file of interactionsFiles) { - const filePath = path.join(interactionsPath, file); - const interactionFile = require(filePath); - - if ('name' in interactionFile && 'execute' in interactionFile && interactionFile.type === 'interaction') { - client.on(Events.InteractionCreate, interactionFile.execute) - } else { - console.log(`[WARNING] The interactions event at ${filePath} is missing a required "name", "execute" or "type" property.`); - } - } -} - -module.exports = { loadInteractionEvents } diff --git a/utils/eventHandlers/message.js b/utils/eventHandlers/message.js deleted file mode 100644 index 249b5ed..0000000 --- a/utils/eventHandlers/message.js +++ /dev/null @@ -1,24 +0,0 @@ -const { Events } = require('discord.js') -const path = require('path'); -const fs = require('fs'); - -/** @param { import('discord.js').Client } client */ - -function loadMessageEvents(client) { - const messagePath = path.join(__dirname, '..', '..', 'events', 'messages'); - const messageFiles = fs.readdirSync(messagePath).filter(file => file.endsWith('.js')); - - for (const file of messageFiles) { - - const filePath = path.join(messagePath, file); - const message = require(filePath); - - if (message.type === 'message') { - client.on(Events.MessageCreate, message.execute); - } else { - console.log(`[WARNING] The message at ${filePath} is missing a required "type" property.`); - } - } -} - -module.exports = { loadMessageEvents } diff --git a/utils/eventHandlers/other.js b/utils/eventHandlers/other.js deleted file mode 100644 index ba303d4..0000000 --- a/utils/eventHandlers/other.js +++ /dev/null @@ -1,22 +0,0 @@ -const path = require('path'); -const fs = require('fs'); - -/** @param { import('discord.js').Client } client */ - -function loadOtherEvents(client) { - const otherPath = path.join(__dirname, '..', '..', 'events', 'other') - const otherFiles = fs.readdirSync(otherPath).filter(file => file.endsWith('.js')); - - for (const file of otherFiles) { - const filePath = path.join(otherPath, file); - const other = require(filePath); - - if ('name' in other && 'execute' in other && 'event' in other && other.type === 'other') { - client.on(other.event, other.execute) - } else { - console.log(`[WARNING] The other event at ${filePath} is missing a required "name", "execute", "type" or "event" property.`); - } - } -} - -module.exports = { loadOtherEvents } diff --git a/utils/eventHandlers/ready.js b/utils/eventHandlers/ready.js deleted file mode 100644 index 282ba72..0000000 --- a/utils/eventHandlers/ready.js +++ /dev/null @@ -1,23 +0,0 @@ -const { Events } = require('discord.js') -const path = require('path'); -const fs = require('fs'); - -/** @param { import('discord.js').Client } client */ - -function loadReadyEvents(client) { - const readyPath = path.join(__dirname, '..', '..', 'events', 'ready') - const readyFiles = fs.readdirSync(readyPath).filter(file => file.endsWith('.js')); - - for (const file of readyFiles) { - const filePath = path.join(readyPath, file); - const ready = require(filePath); - - if ('name' in ready && 'execute' in ready && ready.type === 'ready') { - client.on(Events.ClientReady, ready.execute) - } else { - console.log(`[WARNING] The ready event at ${filePath} is missing a required "name", "execute" or "type" property.`); - } - } -} - -module.exports = { loadReadyEvents }