Added /drawtriangle command

master
Chloe Fontenot 🏳️‍⚧️ 2023-04-04 20:50:02 +07:00
parent 9cec9c0c9f
commit a61fa8f4f2
2 changed files with 128 additions and 8 deletions

@ -1,17 +1,17 @@
# NoMoreAcronyms
This is a bot that identifies abbreviations in a sentence and replaces them with the written out phrase!<br>
Example:<br>
This is a bot that identifies abbreviations in a sentence and replaces them with the written out phrase!\n
Example:\n
![Example](images/example.png)
<br>
\n
To run an instance of this bot, define your bot token, guildId (Server ID), and client ID in key.json, then run:
<br>
\n
`npm install discord.js`
<br>
\n
After that, register the bot commands:
<br>
\n
`node deploy-commands.js`
<br>
\n
And now all you need to do is start the bot!
<br>
\n
`node main.ts`

@ -0,0 +1,120 @@
const { SlashCommandBuilder, Discord, codeBlock } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('drawdesign')
.setDescription('Draws a design in a codeblock')
.addStringOption(option =>
option.setName('design')
.setDescription("Pick a design. (number 1-3)")
.setRequired(true)
)
.addStringOption(option =>
option.setName('string')
.setDescription("String to feed into input")
.setRequired(true)
),
async execute(interaction, client) {
var inputString = interaction.options.getString('string');
var design = interaction.options.getString('string');
if (design < 1 || design > 3) {
await interaction.reply('Invalid design choice.');
}
if (inputString.length > 1000) {
await interaction.reply('String is too big. Resultant output would be too big to send to Discord.')
}
switch (design) {
case 1:
var output = design1(inputString);
break;
case 2:
var output = design2(inputString);
break;
case 3:
var output = design3(inputString);
break;
}
await interaction.reply(codeBlock("", output));
console.log("User " + interaction.user.tag + " ran /drawtriangle");
},
};
function design1(input) {
var outputString;
var startEnd = "";
for (let i = 0; i < input.length + 2; i++) {
startEnd += "*";
}
outputString = startEnd + "\n";
outputString += "*" + "\n";
outputString += "* " + input + "\n";
outputString += "*" + "\n";
outputString += startEnd;
return outputString;
}
function design2(input) {
var outputString;
var height = (input.length * 2) + 6;
var mid = Math.trunc(height / 2) + 1;
if (height % 2 == 0) {
height++;
}
outputString = "";
for (let i = 0; i < height; i++) {
if (mid == i) { //Determine if we're in the middle of the triangle
outputString += "**" + input + "**";
} else {
for (let j = 0; j < i; j++) {
outputString += "*";
}
}
outputString += "\n";
}
return outputString;
}
function design3(input) {
var outputString;
var height = (input.length * 2) + 6;
var mid = Math.trunc(height / 2) + 1;
if (height % 2 == 0) {
height++;
}
outputString = "";
if (mid % 2 == 1) { // Skip a line if odd
var subOffset = 1;
var addOffset = 0;
} else {
var subOffset = 0;
var addOffset = 1;
}
for (let i = 0; i < mid - addOffset; i++) {
for (let j = 0; j < i; j++) {
if (i % 2 == 1) {
if (i != (mid - 1)) {
if (i == 0 || (j == 0 || j == (i - 1))) { // Check if we're at the beginning or end of the line
outputString += "*";
} else {
outputString += "&nbsp;";
}
}
}
}
outputString += "\n";
}
outputString += "* " + input + " *\n";
for (let i = mid - subOffset; i > 0; i--) {
for (let j = 0; j < i; j++) {
if (i % 2 == 1) {
if (j != (mid - 1) || (j != mid)) {
if ((i == 0 || (j == 0 || j == (i - 1)))) { // Check if we're at the beginning or end of the line
outputString += "*";
} else {
outputString += "&nbsp;";
}
}
}
}
outputString += "\n";
}
return outputString;
}