Refactor
This commit is contained in:
65
commands/countChars.cjs
Normal file
65
commands/countChars.cjs
Normal file
@@ -0,0 +1,65 @@
|
||||
const { SlashCommandBuilder, Discord, codeBlock } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('count_chars')
|
||||
.setDescription('Counts the number of characters in a string')
|
||||
.addStringOption(option =>
|
||||
option.setName('string')
|
||||
.setDescription("String to count characters in")
|
||||
.setRequired(false)
|
||||
)
|
||||
.addStringOption(option =>
|
||||
option.setName('messageid')
|
||||
.setDescription("Message ID of message to count characters in")
|
||||
.setRequired(false)
|
||||
),
|
||||
async execute(interaction, client) {
|
||||
var inputString;
|
||||
|
||||
if (interaction.options.getString('string') !== null) {
|
||||
inputString = interaction.options.getString('string');
|
||||
} else if (interaction.options.getString('messageid') !== null) {
|
||||
var messageId = interaction.options.getString('messageid');
|
||||
const messagefromId = await client.channels.cache.get(interaction.channel.id).messages.fetch(messageId);
|
||||
inputString = messagefromId.content;
|
||||
}
|
||||
let inputStringPrint;
|
||||
if (inputString.length > 1000) {
|
||||
inputStringPrint = "too long to copy";
|
||||
} else {
|
||||
inputStringPrint = inputString;
|
||||
}
|
||||
|
||||
await interaction.reply("Input: `" + inputStringPrint + "`\n" + "input length: " + inputString.length + " characters long" + "\n Output: " + codeBlock("", countChars(inputString)));
|
||||
console.log("User " + interaction.user.tag + " ran /count_chars");
|
||||
},
|
||||
};
|
||||
|
||||
function countChars(string) {
|
||||
var outputString = "";
|
||||
string = string.toLowerCase();
|
||||
var letterCount = Array(65535).fill(0); // Creates an array with 26 values, all equaling 0.
|
||||
for (let i = 0; i < string.length; ++i) {
|
||||
let currentChar = string.charAt(i);
|
||||
let arrayIndex = currentChar.charCodeAt(0);
|
||||
if (string.charAt(i).search(/^[A-Z]+$/) === 0) {
|
||||
arrayIndex += 32; //This should make it cast any uppercase characters to lowercase
|
||||
}
|
||||
letterCount[arrayIndex]++;
|
||||
}
|
||||
for (let i = 0; i < letterCount.length; ++i) {
|
||||
let currentChar = String.fromCharCode(i).toUpperCase();;
|
||||
if (currentChar.charCodeAt(0) == 10 || currentChar.charCodeAt(0) == 13 || currentChar.charCodeAt(0) == 30 || currentChar.charCodeAt(0) == 115 || currentChar.charCodeAt(0) == 21 || currentChar.charCodeAt(0) == 118) {
|
||||
currentChar = "newline";
|
||||
}
|
||||
if (currentChar.charCodeAt(0) == 32) {
|
||||
currentChar = "whitespace"
|
||||
}
|
||||
if (letterCount[i] > 0) {
|
||||
outputString += "Number of " + currentChar + "'s: " + letterCount[i] + "\n";
|
||||
}
|
||||
}
|
||||
return outputString;
|
||||
}
|
||||
//console.log(countChars("test string"));
|
||||
Reference in New Issue
Block a user