ability to cancel savegif

This commit is contained in:
= 2021-07-19 16:01:57 -04:00
parent 0a86548264
commit 2e71b114f2
3 changed files with 56 additions and 6 deletions

View File

@ -6,7 +6,7 @@ const tenor = require('tenorjs').client({
"DateFormat": "D/MM/YYYY - H:mm:ss A" // Change this accordingly "DateFormat": "D/MM/YYYY - H:mm:ss A" // Change this accordingly
}); });
const functions = require('../functions'); const functions = require('../functions');
const { emoji } = require('../config.json'); const { emoji } = require('../src/strings.json');
module.exports = { module.exports = {
name: 'savegif', name: 'savegif',
@ -32,15 +32,17 @@ module.exports = {
// Send the first GIF result as an Embed // Send the first GIF result as an Embed
channel.send(embed) channel.send(embed)
.then(selfMessage => { .then(selfMessage => {
// Add reactions to go back, forward, and confirm GIF choice. // Add reactions to go back, forward, cancel and confirm GIF choice.
// React order is important so these are done in a chain // React order is important so these are done in a chain
selfMessage.react(emoji.previous).then(() => { selfMessage.react(emoji.previous).then(() => {
selfMessage.react(emoji.confirm).then(() => { selfMessage.react(emoji.confirm).then(() => {
selfMessage.react(emoji.next); selfMessage.react(emoji.next).then(() => {
selfMessage.react(emoji.cancel);
});
}); });
}); });
const filter = (reaction, user) => { 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; return ((reaction.emoji.name == emoji.next) || (reaction.emoji.name == emoji.confirm) || (reaction.emoji.name == emoji.previous) || (reaction.emoji.name == emoji.cancel)) && user.id == message.author.id;
} }
const collector = selfMessage.createReactionCollector(filter, { time: 120000 }); const collector = selfMessage.createReactionCollector(filter, { time: 120000 });
@ -60,8 +62,19 @@ module.exports = {
} }
break; break;
case emoji.confirm: case emoji.confirm:
channel.send('GIF Selected. What should I save the GIF as? (don\'t include the `.gif`)') channel.send('GIF Selected. What should I save the GIF as? (don\'t include the `.gif`)\nReact with ' + emoji.cancel + ' to cancel.')
.then(nameQueryMessage => { .then(nameQueryMessage => {
nameQueryMessage.react(emoji.cancel);
const cancelReactFilter = (reaction, user) => {
return (reaction.emoji.name == emoji.cancel) && (user.id == message.author.id);
}
const cancelReactCollector = nameQueryMessage.createReactionCollector(cancelReactFilter, { time: 20000, max: 1 });
cancelReactCollector.on('collect', (reaction, user) => {
nameCollector.stop('cancel');
if (selfMessage.deletable) selfMessage.delete();
if (nameQueryMessage.deletable) nameQueryMessage.delete();
})
const nameCollectorFilter = nameMessage => nameMessage.author == message.author; const nameCollectorFilter = nameMessage => nameMessage.author == message.author;
const nameCollector = nameQueryMessage.channel.createMessageCollector(nameCollectorFilter, { time: 30000, max: 1 }); const nameCollector = nameQueryMessage.channel.createMessageCollector(nameCollectorFilter, { time: 30000, max: 1 });
@ -69,7 +82,17 @@ module.exports = {
channel.send('The GIF has been saved as: ' + nameMessage.content + '.gif'); channel.send('The GIF has been saved as: ' + nameMessage.content + '.gif');
functions.saveGif(message, nameMessage.content, data.embed_url); functions.saveGif(message, nameMessage.content, data.embed_url);
}); });
nameCollector.on('end', (collected, reason) => {
switch (reason) {
case 'cancel':
channel.send('The action has been canceled.');
break;
default:
break;
}
}); });
});
collector.stop("confirm");
break; break;
case emoji.previous: case emoji.previous:
if (i > 0) { if (i > 0) {
@ -84,10 +107,26 @@ module.exports = {
selfMessage.edit(embed); selfMessage.edit(embed);
} }
break; break;
case emoji.cancel:
collector.stop('cancel');
break;
default: default:
channel.send('There was an error, sorry.'); channel.send('There was an error, sorry.');
break; break;
} }
});
collector.on('end', (collected, reason) => {
switch (reason) {
case 'cancel':
selfMessage.delete();
channel.send('The action has been canceled.');
break;
case 'messageDelete':
break;
default:
break;
}
}) })
}).catch(err => console.error(err)); }).catch(err => console.error(err));
}) })

4
gifs/test.js Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
name: 'test',
embed_url: 'https://media.tenor.com/images/0f097ed319d498c2bda3d87ba4f6ff10/tenor.gif'
}

View File

@ -9,5 +9,12 @@
"You're gonna be doing a lot of doobie rollin' when you're living in a ran down by the river!", "You're gonna be doing a lot of doobie rollin' when you're living in a ran down by the river!",
"You'll have plenty of time to live in a van down by the river... when you're living in a van down by the river!", "You'll have plenty of time to live in a van down by the river... when you're living in a van down by the river!",
"Roll, roll, roll my joint, pick out the seeds and stems" "Roll, roll, roll my joint, pick out the seeds and stems"
] ],
"emoji": {
"joint": "<:joint:862082955902976000>",
"next": "⏭️",
"previous": "⏮️",
"confirm": "☑️",
"cancel": "❌"
}
} }