// Require the necessary discord.js classes const { Client, Events, GatewayIntentBits, REST, Routes, Collection, FLAGS } = require('discord.js'); const Discord = require('discord.js'); const { clientId, guildId, token } = require('./key.json'); const fs = require('node:fs'); const path = require('node:path'); // Create a new client instance const client = new Discord.Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMembers, ], }); // When the client is ready, run this code (only once) // We use 'c' for the event parameter to keep it separate from the already defined 'client' client.once(Events.ClientReady, c => { console.log(`Ready! Logged in as ${c.user.tag}`); }); // Log in to Discord with your client's token client.login(token); // Retrieve commands client.commands = new Collection(); const commandsPath = path.join(__dirname, 'commands'); const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.ts')); for (const file of commandFiles) { const filePath = path.join(commandsPath, file); const command = require(filePath); // Set a new item in the Collection with the key as the command name and the value as the exported module if ('data' in command && 'execute' in command) { client.commands.set(command.data.name, command); } else { console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); } } client.on(Events.InteractionCreate, async interaction => { if (!interaction.isChatInputCommand()) return; const command = interaction.client.commands.get(interaction.commandName); if (!command) { console.error(`No command matching ${interaction.commandName} was found.`); return; } try { await command.execute(interaction); } catch (error) { console.error(error); if (interaction.replied || interaction.deferred) { await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); } else { await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); } } }); // My code var abbreviationKey = require("./abbreviation_key.json"); function arrayRotate(arr, reverse, amount) { for (var i = 0; i < amount; i++) { if (reverse) arr.unshift(arr.pop()); else arr.push(arr.shift()); return arr; } } function matchAbbr(abbrTarget) { console.log("Looking for: " + abbrTarget); for (var abbr in abbreviationKey.target_phrases) { if (abbreviationKey.target_phrases[abbr] == abbrTarget) { //console.log("abbrTarget: " + typeof (abbrTarget)); //console.log("abbr: " + typeof (abbr)); return abbr; } else { //console.log("abbrTarget: " + typeof (abbrTarget)); //console.log("abbr: " + typeof (abbr)); } } return ""; } function replyMessage(message, correctedMessage) { message.reply("Your message contains an acronym! Let me fix that for you: \n > " + correctedMessage); } client.on('messageCreate', message => { console.log(`${message.author.tag} in #${message.channel.name} sent: ${message.content}`); if (message.author.bot) { //console.log(message.author); if (message.author.id == "1091120267851485215") { return; } } var matchMessageArray = message.content.toLowerCase().split(/[ ,!@#$%^&*().;:|]+/); console.log(matchMessageArray); let correctedMessage = message.content; let matchDetected = false; for (let i = 0; i < matchMessageArray.length; ++i) { //console.log("Corrected Message: " + correctedMessage); if (abbreviationKey.target_phrases[matchMessageArray[i]] !== undefined) { matchDetected = true; //Return key var phrase = abbreviationKey.target_phrases[matchMessageArray[i]]; var abbr = matchAbbr(phrase); //abbreviationKey.target_phrases[phrase]; console.log(typeof(abbr)); console.log("Found abbreviation: " + abbr); console.log("Phrase that matches used acronym: " + phrase); if (abbr !== "") { var rebuildMessageArray = correctedMessage.split(new RegExp(abbr, 'i')); } else { message.reply("Detected abbreviation, but regex matching broke. Caleb is working on this..."); break; } arrayRotate(rebuildMessageArray, true, 1); rebuildMessageArray.unshift(phrase); arrayRotate(rebuildMessageArray, true, 2); console.log(rebuildMessageArray); // Build into string and set to variable! correctedMessage = ""; // clear old message. for (let j = 0; j < rebuildMessageArray.length; j++) { correctedMessage += rebuildMessageArray[j]; } console.log(correctedMessage); //break; } } if (matchDetected) { replyMessage(message, correctedMessage); } } );