From 23f081c6c1d82e597786047d8759391e4dd89e39 Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Wed, 25 Sep 2024 11:54:33 -0400 Subject: [PATCH] Move CommandData and checkCommand to NodBot Classes --- CustomModules/NodBot.js | 18 ++++++++++++++++++ functions.js | 33 +++------------------------------ 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/CustomModules/NodBot.js b/CustomModules/NodBot.js index 2d5ff83..24efec3 100644 --- a/CustomModules/NodBot.js +++ b/CustomModules/NodBot.js @@ -1,4 +1,22 @@ module.exports = { + CommandData: class { + constructor(message) { + // Get the location of the final period in the message + this.finalPeriod = message.content.lastIndexOf('.'); + this.isCommand = finalPeriod >= 0 ? true : false; // Check if there is a period somewhere in the message to flag as a possible command + this.args = message.content.slice(0,finalPeriod).toLowerCase(); // Grab everything leading up to the final period + this.command = message.content.slice(finalPeriod + 1).toLowerCase(); // Grab everything after the final period + this.author = message.author.username; + + return this; + } + + isValid(validCommands) { + if (this.args.startsWith('http')) return false; + if (this.args.startsWith('www')) return false; + return validCommands.includes(this.command); + } + }, GifData: class { constructor() { this.id = 0; diff --git a/functions.js b/functions.js index d6b12dd..7a27238 100644 --- a/functions.js +++ b/functions.js @@ -34,6 +34,7 @@ const config = require('./config.json'); const strings = require('./strings.json'); const slashCommandFiles = fs.readdirSync('./slash-commands/').filter(file => file.endsWith('.js')); const dotCommandFiles = fs.readdirSync('./dot-commands/').filter(file => file.endsWith('.js')); +const { CommandData } = require('./CustomModules/NodBot.js'); // MySQL database connection const mysql = require('mysql'); @@ -172,36 +173,8 @@ const functions = { }, dot: { getCommandData(message) { - const commandData = {}; - // Split the message content at the final instance of a period - const finalPeriod = message.content.lastIndexOf('.'); - // if(isDev) console.log(message.content); - // If the final period is the last character, or doesn't exist - if (finalPeriod < 0) { - if (isDev) console.log(finalPeriod); - commandData.isCommand = false; - return commandData; - } - commandData.isCommand = true; - // Get the first part of the message, everything leading up to the final period - commandData.args = message.content.slice(0,finalPeriod).toLowerCase(); - // Get the last part of the message, everything after the final period - commandData.command = message.content.slice(finalPeriod + 1).toLowerCase(); - commandData.author = `${message.author.username}`; - return this.checkCommand(commandData); - }, - checkCommand(commandData) { - if (commandData.isCommand) { - const validCommands = require('./config.json').validCommands; - commandData.isValid = validCommands.includes(commandData.command); - // Add exceptions for messages that contain only a link - if (commandData.args.startsWith('http')) commandData.isValid = false; - } - else { - commandData.isValid = false; - console.error('Somehow a non-command made it to checkCommands()'); - } - return commandData; + const commandData = new CommandData(message); + return commandData.isValid(require('./config.json').validCommands); } }, embeds: {