From c97762e84cdbbb1677f89d18ab3897ef466e98e9 Mon Sep 17 00:00:00 2001 From: ayeuhugyu Date: Fri, 29 Sep 2023 19:32:30 -0700 Subject: [PATCH] added ability to upload custom soundboard files --- src/commands/addsound.js | 96 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/commands/addsound.js diff --git a/src/commands/addsound.js b/src/commands/addsound.js new file mode 100644 index 0000000..55d14f3 --- /dev/null +++ b/src/commands/addsound.js @@ -0,0 +1,96 @@ +import fs from "fs"; +import request from "request"; // yes i know this is deprecated i will fix it later (no i won't) + +function download(url, filename) { + request + .get(url) + .on("error", console.log) + .pipe( + fs.createWriteStream( + `resources/soundboard/${filename + .toLowerCase() + .replaceAll(" ", "_") + .replaceAll("-", "_")}` + ) + ); + return true; +} + +export default { + name: "addsound", + description: "uploads a sound to the soundboard files", + arguments: "none", + execute(message, args) { + if (message.attachments.first()) { + const filename = message.attachments.first().name; + if ( + filename.endsWith(".mp3") || + filename.endsWith(".wav") || + filename.endsWith(".ogg") || + filename.endsWith(".webm") + ) { + const filenameNoExtension = filename.split(".")[0]; + const files = fs.readdirSync("resources/soundboard"); + if (filenameNoExtension) { + if (!(files.includes(filename) || filenameNoExtension === "ls")) { + let possibleFilenames = { + regular: filenameNoExtension, + spaced: filenameNoExtension.replaceAll(" ", "_"), + spacedmp3: filenameNoExtension.replaceAll(" ", "_") + ".mp3", + mp3: filenameNoExtension + ".mp3", + spacedogg: filenameNoExtension.replaceAll(" ", "_") + ".ogg", + ogg: filenameNoExtension + ".ogg", + spacedwav: filenameNoExtension.replaceAll(" ", "_") + ".wav", + wav: filenameNoExtension + ".wav", + spacedwebm: filenameNoExtension.replaceAll(" ", "_") + ".webm", + webm: filenameNoExtension + ".webm", + }; + let invalid = false; + for (const i = 0; i < possibleFilenames.length; i++) { + if (files.includes(possibleFilenames[i])) { + invalid = true; + } + } + if (!invalid) { + const success = download( + message.attachments.first().url, + filename + ); + if (success) { + message.reply( + `downloaded your file to \`resources/soundboard/${filename + .toLowerCase() + .replaceAll(" ", "_") + .replaceAll( + "-", + "_" + )}\`, if this name is different than the one you put, that's normal. all files are lowercased and "fixed."` + ); + } else { + message.reply( + "an unknown error occurred while attempting to download your file. see the console for details (id put it here but its probably too long for discord)" + ); + } + } else { + message.reply( + `invalid file name! the file name either already exists, or you named it ls. don't name it ls.` + ); + } + } else { + message.reply( + `invalid file name! the file name either already exists, or you named it ls. don't name it ls.` + ); + } + } else { + message.reply("error has occurred; filename could not be split"); + } + } else { + message.reply( + "invalid file extention; only `mp3`, `wav`, and `ogg` files are supported" + ); + } + } else { + message.reply("no file detected"); + } + }, +};