From f5e791895772328e780413d92b152a50c70d2f17 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 9 Jul 2021 23:24:58 -0400 Subject: [PATCH] Initial testing for interactive gif search and save --- commands/savegif.js | 77 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 12 deletions(-) diff --git a/commands/savegif.js b/commands/savegif.js index 9e49863..2b0a778 100644 --- a/commands/savegif.js +++ b/commands/savegif.js @@ -1,20 +1,73 @@ +const giphy = require('giphy-api')(process.env.giphyAPIKey); +const functions = require('../functions'); +const { emoji } = require('../config.json'); + module.exports = { name: 'savegif', description: 'Adds a given gif to the hardcoded list.', - usage: ' ', + usage: '', execute(message, file) { - const tempArray = file.name.split(' '); - const embedURL = tempArray.shift(); - const gifName = tempArray.join(' '); + message.author.createDM() + .then(channel => { + const query = file.name; + giphy.search(query) + .then(res => { + if (res.data == undefined) return; + if (res.data[0] == undefined) { + channel.send('Sorry, I wasn\'t able to find a GIF of ' + file.name); + return; + } + let i = 0; + const data = { + "name": file.name, + "embed_url": res.data[i].images.original.url, + "author": message.author + }; + let embed = functions.createGifEmbed(data); - const fs = require('fs'); - fs.appendFile(`./gifs/${gifName}.js`, `module.exports = {\n\tname: '${gifName}',\n\tembed_url: '${embedURL}'\n}`, function(err) { - if (err) throw err; - console.log('Saved file!'); - const gif = require(`../gifs/${gifName}.js`); - message.client.gifs.set(gif.name, gif); - }); + channel.send(embed) + .then(selfMessage => { + selfMessage.react(emoji.previous).then(() => { + selfMessage.react(emoji.confirm).then(() => { + selfMessage.react(emoji.next); + }); + }); + const filter = (reaction, user) => { + return ((reaction.emoji.name == emoji.next) || (reaction.emoji.name == emoji.confirm) || (reaction.emoji.name == emoji.previous)) && user.id == message.author.id; + } + const collector = selfMessage.createReactionCollector(filter, { time: 120000 }); - message.reply('GIF saved as: ' + gifName + '.gif!'); + collector.on('collect', (reaction, user) => { + switch (reaction.emoji.name) { + case emoji.next: + i++; + data.embed_url = res.data[i].images.original.url; + embed = functions.createGifEmbed(data); + if (selfMessage.editable) { + selfMessage.edit(embed); + } + break; + case emoji.confirm: + channel.send('Saving GIF: ' + res.data[i].images.original.url); + functions.saveGif(message, data.name, data.embed_url); + break; + case emoji.previous: + i--; + data.embed_url = res.data[i].images.original.url; + embed = functions.createGifEmbed(data); + if (selfMessage.editable) { + selfMessage.edit(embed); + } + break; + default: + channel.send('There was an error, sorry.'); + break; + } + }) + }).catch(err => console.error(err)); + }) + .catch(err => console.error(err)); + }) + .catch(err => console.error(err)); } } \ No newline at end of file