From 6da1ba9cfbe7791abec375a5b84b06c7f040e0b0 Mon Sep 17 00:00:00 2001 From: loicbersier Date: Sun, 19 Jul 2020 11:43:29 +0200 Subject: [PATCH] Added prompt and use url type Signed-off-by: loicbersier --- commands/utility/screenshot.js | 59 ++++++++++++++++------------------ 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/commands/utility/screenshot.js b/commands/utility/screenshot.js index f7125258..9cc43394 100644 --- a/commands/utility/screenshot.js +++ b/commands/utility/screenshot.js @@ -12,7 +12,11 @@ class screenshotCommand extends Command { args: [ { id: 'url', - type: 'string' + type: 'url', + prompt: { + start: 'Please send a link of which website you want to take a screenshot of.', + retry: 'This does not look like an url, please try again.' + } }, { id: 'fullpage', @@ -20,7 +24,6 @@ class screenshotCommand extends Command { flag: '--full' } ], - channel: 'guild', description: { content: 'Take a screenshot of a website. Need to start with http(s)://. Use --full to take a full page capture', usage: '[link to a website] [optional: --full]', @@ -30,43 +33,35 @@ class screenshotCommand extends Command { } async exec(message, args) { - if (args.url.includes('config.json')) return message.channel.send('I don\'t think so'); + let url = args.url.href; + if (url.includes('config.json')) return message.channel.send('I don\'t think so'); let Embed = this.client.util.embed() .setColor(message.member ? message.member.displayHexColor : 'NAVY') - .setTitle(args.url); + .setTitle(url); let loadingmsg = await message.channel.send('Taking a screenshot '); - - // eslint-disable-next-line no-useless-escape - let urlregex = new RegExp(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/); - if (!args.url.includes('http')) args.url = 'http://' + args.url; - console.log(args.url); - if (args.url.match(urlregex)) { // Only allow link with http/https - await captureWebsite.file(args.url, `${os.tmpdir()}/${message.id}.jpg`, { - type: 'jpeg', - headers: { - 'Accept-Language': 'en-GB' - }, - fullPage: args.fullpage + + await captureWebsite.file(url, `${os.tmpdir()}/${message.id}.jpg`, { + type: 'jpeg', + headers: { + 'Accept-Language': 'en-GB' + }, + fullPage: args.fullpage + }) + .catch((err) => { + console.error(err); + Embed.setDescription(err.toString()); + loadingmsg.delete(); + return message.channel.send(Embed); }) - .catch((err) => { - console.error(err); - Embed.setDescription(err.toString()); + .then(() => { + if (fs.existsSync(`${os.tmpdir()}/${message.id}.jpg`)) { + Embed.attachFiles([`${os.tmpdir()}/${message.id}.jpg`]); + Embed.setImage(`attachment://${message.id}.jpg`); loadingmsg.delete(); return message.channel.send(Embed); - }) - .then(() => { - if (fs.existsSync(`${os.tmpdir()}/${message.id}.jpg`)) { - Embed.attachFiles([`${os.tmpdir()}/${message.id}.jpg`]); - Embed.setImage(`attachment://${message.id}.jpg`); - loadingmsg.delete(); - return message.channel.send(Embed); - } - }); - } else { - loadingmsg.delete(); - return message.channel.send('The URL you used doesn\'t correspond to a website!'); - } + } + }); } } module.exports = screenshotCommand; \ No newline at end of file