const {Command, Random, ErrorMessage, ErrorType} = require('../../lib.js'); const {EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle} = require('discord.js'); var Job = require('cron').CronJob; class remind extends Command{ constructor(client){ super(client, { name: 'remind', aliases: ['remindme', 'reminder'], description: `It will send you a message after the ammount of minutes you specified. Ex: !remindme "message" 5` }) } async run(message, args) { if(!args[1]) return new ErrorMessage(this.client).send(ErrorType.NoArguments, message); if(isNaN(parseInt(args[1]))) return new ErrorMessage(this.client).send(ErrorType.Arguments,message); var reminderMessage = args.slice(0,-1); reminderMessage = new Array(reminderMessage).join(" ") console.log('Reminder:', message.author.id, 'wants to be reminded of', reminderMessage, 'in', args[args.length-1]); const embed = new EmbedBuilder() const randomID = Random(); embed.setFooter({text:'Rem-chan on ', iconURL:"https://i.imgur.com/g6FSNhL.png"}) embed.setAuthor({name:"Rem-chan", iconURL:"https://i.imgur.com/g6FSNhL.png",url:'https://rem.wordfights.com/addtodiscord'}); embed.setColor(0x110809); embed.setTimestamp() embed.setTitle(`Reminder set.`) embed.addFields({name:'With the message:', value:reminderMessage}) const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId(randomID+0) .setLabel('Remove message.') .setStyle(ButtonStyle.Primary), ); const row1 = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId(randomID+1) .setLabel('Remove reminder.') .setStyle(ButtonStyle.Danger), ); const filter = i => i.customId.slice(0, i.customId.length-1) === randomID; message.channel.send({embeds: [embed], components: [row, row1] }); var timer = new Job( new Date(new Date().setMinutes(new Date().getMinutes()+parseInt(args[args.length-1]))), function() { console.log('Reminder:', message.author.id, 'is being reminded of', reminderMessage, 'in', args[args.length-1]); message.author.send(reminderMessage) }, null, true ); const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 }); collector.on('collect', async m => { if(m.customId[m.customId.length-1]==1) timer.stop(); collector.stop(); message.delete(); m.message.delete(); }); collector.on('end', async m=> { message.delete(); m.message.delete() }) } } module.exports = remind;