Add the ability to use a URL on the tdoss command
All checks were successful
CI / CI (push) Successful in 1m27s

This commit is contained in:
SileNce5k 2025-04-10 03:34:21 +02:00
parent 2618524f7f
commit bf97b3633f
Signed by: SileNce
GPG key ID: B0A142BB4291B204

View file

@ -6,32 +6,40 @@ const path = require('path');
module.exports = { module.exports = {
name: 'tdoss', name: 'tdoss',
description: 'Combine picture with tdoss album cover template', description: 'Combine picture with tdoss album cover template',
async execute({ message }) { async execute({ message, args }) {
message.channel.sendTyping(); message.channel.sendTyping();
let dataDir = path.resolve(__dirname, '..', '..', 'data'); let dataDir = path.resolve(__dirname, '..', '..', 'data');
const directory = path.resolve(dataDir, Math.floor(new Date).toString()) const directory = path.resolve(dataDir, Math.floor(new Date).toString())
fs.mkdirSync(directory) fs.mkdirSync(directory)
let url = "";
if(message.attachments.size > 0){ if(message.attachments.size > 0){
const curlCommand = `curl "${message.attachments.first().url}" -o ${directory}/input.png` // TODO: Download with correct extension. url = message.attachments.first().url
if (this.executeCommand(curlCommand).error === true) {
message.channel.send("Something went wrong.\nTry again and if it keeps happening, contact the owner of the bot.")
return
}
}else {
message.channel.send("You have to provide an image to use this command.\nIt only works with attachments for now.") } else if(args[0] && args[0].startsWith("https://") ){
url = args[0];
}
else {
message.channel.send("You have to provide an image to use this command.\nEither via an attachment or via a link (must be the first argument and start with https://)")
fs.rmSync(`${directory}`, {recursive: true})
return
}
// TODO: Download with correct extension.
const curlCommand = `curl "${url}" -o ${directory}/input.png`;
if (this.executeCommand(curlCommand).error === true) {
message.channel.send("Something went wrong during the download.\nTry again and if it keeps happening, contact the owner of the bot.")
fs.rmSync(`${directory}`, {recursive: true}) fs.rmSync(`${directory}`, {recursive: true})
return return
} }
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 ${dataDir}/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.\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})
return return
} }