From 47517275d7adf88ebd509614a2ece17ef785d64e Mon Sep 17 00:00:00 2001 From: chimpdev Date: Mon, 1 Apr 2024 19:02:29 +0300 Subject: [PATCH] Add reminders command for listing active reminders --- server/src/bot/commands/reminders.js | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 server/src/bot/commands/reminders.js diff --git a/server/src/bot/commands/reminders.js b/server/src/bot/commands/reminders.js new file mode 100644 index 00000000..19604360 --- /dev/null +++ b/server/src/bot/commands/reminders.js @@ -0,0 +1,43 @@ +const VoteReminder = require('@/schemas/Server/Vote/Reminder'); +const Discord = require('discord.js'); + +module.exports = { + data: { + name: 'reminders', + description: 'List currently active reminders for vote system', + }, + execute: async interaction => { + await interaction.deferReply({ ephemeral: true }); + + const reminders = await VoteReminder.find({ 'user.id': interaction.user.id }); + if (!reminders.length) return interaction.followUp({ content: 'You have no active reminders.' }); + + const embeds = [ + new Discord.EmbedBuilder() + .setTitle('Active reminders') + .setColor('#adadad') + .setDescription(`You have ${reminders.length} active reminders.`) + ]; + + if (reminders.length > 9) { + const template = (await Promise.all(reminders.map(async reminder => { + const guild = client.guilds.cache.get(reminder.guild.id) || await client.guilds.fetch(reminder.guild.id).catch(() => null); + return `${guild?.name || reminder.guild.id} `; + }))).join('\n'); + + embeds[0].setDescription(`You have ${reminders.length} active reminders.\n\n${template}`); + } else { + reminders.forEach(async reminder => { + const guild = client.guilds.cache.get(reminder.guild.id) || await client.guilds.fetch(reminder.guild.id).catch(() => null); + const newEmbed = new Discord.EmbedBuilder() + .setAuthor({ name: guild?.name || reminder.guild.id, iconURL: guild?.iconURL?.() || 'https://cdn.discordapp.com/embed/avatars/0.png' }) + .setColor('Random') + .setDescription(`You will be able to vote again for this server .`); + + embeds.push(newEmbed); + }); + } + + return interaction.followUp({ embeds }); + } +}; \ No newline at end of file