PepperBot/src/commands/addsound.js

108 lines
3.8 KiB
JavaScript

import fs from "fs";
import * as action from "../util/discordAction.js";
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") ||
filename.endsWith(".m4a")
) {
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) {
action.reply(
message,
`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 {
action.reply(
message,
"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 {
action.reply(
message,
`invalid file name! the file name either already exists, or you named it ls. don't name it ls. detected file name: \`${filename}\``
);
}
} else {
action.reply(
message,
`invalid file name! the file name either already exists, or you named it ls. don't name it ls. detected file name: \`${filename}\``
);
}
} else {
action.reply(
message,
"error has occurred; filename could not be split"
);
}
} else {
action.reply(
message,
`invalid file extention; only \`mp3\`, \`wav\`, \`ogg\`, \`webm\`, and \`m4a\` files are supported. \`${
filename.split(".")[1]
}\` is not.`
);
}
} else {
action.reply(message, "no file detected");
}
},
};