Compare commits

...

2 commits

Author SHA1 Message Date
6a0350f13c
Fix problem if content-type isn't provided by server
All checks were successful
CI / CI (push) Successful in 1m22s
2025-05-10 15:09:53 +02:00
8570b2a204
Use a tdoss directory in the data directory
This is better because then I won't have a bunch of directories with
random numbers directly in the data/ directory.
Which makes it easier to clean up whenever something fails and the
cleanup isn't done.
2025-05-10 15:04:57 +02:00

View file

@ -10,9 +10,10 @@ module.exports = {
description: 'Combine picture with tdoss album cover template', description: 'Combine picture with tdoss album cover template',
async execute({ message, args }) { async execute({ message, args }) {
let dataDir = path.resolve(__dirname, '..', '..', 'data'); let tdossDir = path.resolve(process.cwd, 'data', 'tdoss');
const directory = path.resolve(dataDir, Math.floor(new Date).toString())
fs.mkdirSync(directory) const directory = path.resolve(tdossDir, Math.floor(new Date).toString())
fs.mkdirSync(directory, {recursive: true})
let url = ""; let url = "";
if(message.attachments.size > 0){ if(message.attachments.size > 0){
@ -58,7 +59,7 @@ module.exports = {
} }
const command = `magick ${dataDir}/tdoss_template.png \\( ${directory}/input.png -resize 800x800^ -gravity center -extent 1000x1000 \\) -compose dst-over -composite ${directory}/tdoss_result.png`; const command = `magick ${tdossDir}/tdoss_template.png \\( ${directory}/input.png -resize 800x800^ -gravity center -extent 1000x1000 \\) -compose dst-over -composite ${directory}/tdoss_result.png`;
if (this.executeCommand(command).error === true) { if (this.executeCommand(command).error === true) {
message.channel.send("Something went wrong during image manipulation.\nTry again and if it keeps happening, contact the owner of the bot.") message.channel.send("Something went wrong during image manipulation.\nTry again and if it keeps happening, contact the owner of the bot.")
fs.rmSync(`${directory}`, {recursive: true}) fs.rmSync(`${directory}`, {recursive: true})
@ -96,7 +97,8 @@ module.exports = {
return {value: 3, errorMessage: error.cause.message}; return {value: 3, errorMessage: error.cause.message};
} }
if(!res.ok) return {value: 1, errorMessage: res.status.toString()}; if(!res.ok) return {value: 1, errorMessage: res.status.toString()};
if(!res.headers.get('content-type').startsWith("image")) return {value: 2, errorMessage: ""}; const contentType = res.headers.get('content-type');
if(!contentType || !contentType.startsWith("image")) return {value: 2, errorMessage: contentType || "No content-type header"};
const stream = Readable.fromWeb(res.body) const stream = Readable.fromWeb(res.body)
await writeFile(path, stream); await writeFile(path, stream);
return {value: 0, errorMessage: ""}; return {value: 0, errorMessage: ""};