diff --git a/.gitignore b/.gitignore index ca6ed79e..a0596c3a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ /config.json /.env /app-*.log +/logs +/logs/app-*.log diff --git a/package.json b/package.json index ede5238f..a87bd1ae 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,10 @@ "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node ./index.js", - "start-pretty": "node ./index.js | pino-pretty", - "deploy": "node ./deploy-commands.js && node ./deploy-system-commands.js", - "deploy-pretty": "node ./deploy-commands.js | pino-pretty && node ./deploy-system-commands.js | pino-pretty", + "start": "node ./src/index.js", + "start-pretty": "node ./src/index.js | pino-pretty", + "deploy": "node ./src/deploy-commands.js && node ./src/deploy-system-commands.js", + "deploy-pretty": "node ./src/deploy-commands.js | pino-pretty && node ./src/deploy-system-commands.js | pino-pretty", "eslint": "eslint ./" }, "dependencies": { diff --git a/commands/filters.js b/src/commands/filters.js similarity index 98% rename from commands/filters.js rename to src/commands/filters.js index e5011e52..5bfb2ee7 100644 --- a/commands/filters.js +++ b/src/commands/filters.js @@ -1,3 +1,4 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { @@ -12,7 +13,7 @@ const { embedIcons, filterList, filterThreadAmount -} = require('../config.json'); +} = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/help.js b/src/commands/help.js similarity index 94% rename from commands/help.js rename to src/commands/help.js index 7a22be9c..2d4002d1 100644 --- a/commands/help.js +++ b/src/commands/help.js @@ -1,6 +1,7 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons, botInfo } = require('../config.json'); +const { embedColors, embedIcons, botInfo } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/leave.js b/src/commands/leave.js similarity index 95% rename from commands/leave.js rename to src/commands/leave.js index a7f417d9..f8c2a523 100644 --- a/commands/leave.js +++ b/src/commands/leave.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons } = require('../config.json'); +const { embedColors, embedIcons } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/loop.js b/src/commands/loop.js similarity index 98% rename from commands/loop.js rename to src/commands/loop.js index 2863a696..582db6da 100644 --- a/commands/loop.js +++ b/src/commands/loop.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons, botInfo } = require('../config.json'); +const { embedColors, embedIcons, botInfo } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/nowplaying.js b/src/commands/nowplaying.js similarity index 99% rename from commands/nowplaying.js rename to src/commands/nowplaying.js index d87d5a88..e540b6af 100644 --- a/commands/nowplaying.js +++ b/src/commands/nowplaying.js @@ -1,3 +1,4 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder, ActionRowBuilder, ButtonBuilder } = require('discord.js'); @@ -5,7 +6,7 @@ const { embedColors, embedIcons, progressBarOptions -} = require('../config.json'); +} = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/pause.js b/src/commands/pause.js similarity index 96% rename from commands/pause.js rename to src/commands/pause.js index 9fbe8194..e6856a2f 100644 --- a/commands/pause.js +++ b/src/commands/pause.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons } = require('../config.json'); +const { embedColors, embedIcons } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/play.js b/src/commands/play.js similarity index 99% rename from commands/play.js rename to src/commands/play.js index 9099338e..0ada85c0 100644 --- a/commands/play.js +++ b/src/commands/play.js @@ -1,3 +1,4 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useMainPlayer, useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); @@ -6,7 +7,7 @@ const { embedIcons, playerOptions, botInfo -} = require('../config.json'); +} = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/queue.js b/src/commands/queue.js similarity index 99% rename from commands/queue.js rename to src/commands/queue.js index efd58166..2ac624db 100644 --- a/commands/queue.js +++ b/src/commands/queue.js @@ -1,3 +1,4 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); @@ -5,7 +6,7 @@ const { embedColors, embedIcons, progressBarOptions -} = require('../config.json'); +} = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/remove.js b/src/commands/remove.js similarity index 96% rename from commands/remove.js rename to src/commands/remove.js index f72f0b95..8419685d 100644 --- a/commands/remove.js +++ b/src/commands/remove.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons } = require('../config.json'); +const { embedColors, embedIcons } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/seek.js b/src/commands/seek.js similarity index 98% rename from commands/seek.js rename to src/commands/seek.js index 5431e50a..3821ac24 100644 --- a/commands/seek.js +++ b/src/commands/seek.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons } = require('../config.json'); +const { embedColors, embedIcons } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/skip.js b/src/commands/skip.js similarity index 98% rename from commands/skip.js rename to src/commands/skip.js index 7a6a003b..96f418cb 100644 --- a/commands/skip.js +++ b/src/commands/skip.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons } = require('../config.json'); +const { embedColors, embedIcons } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/volume.js b/src/commands/volume.js similarity index 97% rename from commands/volume.js rename to src/commands/volume.js index e74f43e6..2d45fc5f 100644 --- a/commands/volume.js +++ b/src/commands/volume.js @@ -1,7 +1,8 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { useQueue } = require('discord-player'); const { EmbedBuilder } = require('discord.js'); -const { embedColors, embedIcons } = require('../config.json'); +const { embedColors, embedIcons } = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/deploy-commands.js b/src/deploy-commands.js similarity index 82% rename from deploy-commands.js rename to src/deploy-commands.js index f936d269..0d1c205f 100644 --- a/deploy-commands.js +++ b/src/deploy-commands.js @@ -1,15 +1,16 @@ +const path = require('path'); const fs = require('node:fs'); -const logger = require('./services/logger.js'); +const logger = require(path.resolve('./src/services/logger.js')); const { REST, Routes } = require('discord.js'); require('dotenv').config(); const commands = []; const commandFiles = fs - .readdirSync('./commands') + .readdirSync(path.resolve('./src/commands')) .filter((file) => file.endsWith('.js')); for (const file of commandFiles) { - const command = require(`./commands/${file}`); + const command = require(path.resolve(`./src/commands/${file}`)); commands.push(command.data.toJSON()); } diff --git a/deploy-system-commands.js b/src/deploy-system-commands.js similarity index 81% rename from deploy-system-commands.js rename to src/deploy-system-commands.js index 881ba164..f352aca6 100644 --- a/deploy-system-commands.js +++ b/src/deploy-system-commands.js @@ -1,16 +1,17 @@ +const path = require('path'); const fs = require('node:fs'); -const logger = require('./services/logger.js'); +const logger = require(path.resolve('./src/services/logger.js')); const { REST, Routes } = require('discord.js'); -const { systemServerGuildIds } = require('./config.json'); +const { systemServerGuildIds } = require(path.resolve('./config.json')); require('dotenv').config(); const systemCommands = []; const systemCommandFiles = fs - .readdirSync('./system-commands') + .readdirSync(path.resolve('./src/system-commands')) .filter((file) => file.endsWith('.js')); for (const file of systemCommandFiles) { - const systemCommand = require(`./system-commands/${file}`); + const systemCommand = require(path.resolve(`./src/system-commands/${file}`)); systemCommands.push(systemCommand.data.toJSON()); } diff --git a/index.js b/src/index.js similarity index 92% rename from index.js rename to src/index.js index 8b1b0cac..481b4262 100644 --- a/index.js +++ b/src/index.js @@ -1,10 +1,13 @@ const fs = require('node:fs'); +const path = require('path'); const Discord = require('discord.js'); -const logger = require('./services/logger.js'); +const logger = require(path.resolve('./src/services/logger.js')); const { EmbedBuilder } = require('discord.js'); const { Player, onBeforeCreateStream } = require('discord-player'); const { stream } = require('yt-stream'); -const { embedColors, embedIcons, botInfo } = require('./config.json'); +const { embedColors, embedIcons, botInfo } = require(path.resolve( + './config.json' +)); require('dotenv').config(); // Setup required permissions for the bot to work @@ -19,18 +22,20 @@ const client = new Discord.Client({ // todo: extract this logic to a separate file client.commands = new Discord.Collection(); const commandFiles = fs - .readdirSync('./commands') + .readdirSync(path.resolve('./src/commands')) .filter((file) => file.endsWith('.js')); for (const file of commandFiles) { - const command = require(`./commands/${file}`); + const command = require(path.resolve(`./src/commands/${file}`)); client.commands.set(command.data.name, command); } const systemCommandFiles = fs - .readdirSync('./system-commands') + .readdirSync(path.resolve('./src/system-commands')) .filter((file) => file.endsWith('.js')); for (const file of systemCommandFiles) { - const systemCommand = require(`./system-commands/${file}`); + const systemCommand = require(path.resolve( + `./src/system-commands/${file}` + )); client.commands.set(systemCommand.data.name, systemCommand); } @@ -64,11 +69,11 @@ onBeforeCreateStream(async (track) => { if (process.env.NODE_ENV === 'development') { player.on('debug', (message) => { - logger.debug(`player debug event: ${message}`); + logger.debug(message); }); player.events.on('debug', (message) => { - logger.trace(`player queue debug event: ${message}`); + logger.trace(message); }); } diff --git a/services/logger.js b/src/services/logger.js similarity index 81% rename from services/logger.js rename to src/services/logger.js index b1f2c70d..b79ae012 100644 --- a/services/logger.js +++ b/src/services/logger.js @@ -7,7 +7,8 @@ const transport = pino.transport({ target: 'pino/file', level: process.env.MINIMUM_LOG_LEVEL, options: { - destination: './app-all.log', + destination: './logs/app-all.log', + mkdir: true, sync: false, minLength: 4096 } @@ -16,7 +17,8 @@ const transport = pino.transport({ target: 'pino/file', level: 'info', options: { - destination: './app-info.log', + destination: './logs/app-info.log', + mkdir: true, sync: false, minLength: 4096 } @@ -25,7 +27,8 @@ const transport = pino.transport({ target: 'pino/file', level: 'error', options: { - destination: './app-error.log', + destination: './logs/app-error.log', + mkdir: true, sync: false } }, diff --git a/system-commands/guilds.js b/src/system-commands/guilds.js similarity index 96% rename from system-commands/guilds.js rename to src/system-commands/guilds.js index e98c7533..a288e4a2 100644 --- a/system-commands/guilds.js +++ b/src/system-commands/guilds.js @@ -1,10 +1,11 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { EmbedBuilder } = require('discord.js'); const { embedColors, embedIcons, systemServerGuildIds -} = require('../config.json'); +} = require(path.resolve('./config.json')); module.exports = { data: new SlashCommandBuilder() diff --git a/system-commands/status.js b/src/system-commands/status.js similarity index 96% rename from system-commands/status.js rename to src/system-commands/status.js index 4a0f742c..f472ff2e 100644 --- a/system-commands/status.js +++ b/src/system-commands/status.js @@ -1,3 +1,4 @@ +const path = require('path'); const { SlashCommandBuilder } = require('@discordjs/builders'); const { EmbedBuilder } = require('discord.js'); const { useQueue } = require('discord-player'); @@ -5,9 +6,9 @@ const { embedColors, embedIcons, systemServerGuildIds -} = require('../config.json'); +} = require(path.resolve('./config.json')); const osu = require('node-os-utils'); -const packageJson = require('../package.json'); +const packageJson = require(path.resolve('./package.json')); module.exports = { data: new SlashCommandBuilder()