const { MessageEmbed, Permissions } = require('discord.js'); const { red, black } = require('../../other/texts/colors.json'); const { noPermissions, tryError } = require("../../other/texts/permissions.json"); module.exports = { config: { name: "clear", usage: "clear ", category: "management", description: "Clear the chat.", accessableby: "Moderators", options: [ { name: 'amount', description: 'Please mention the amount of messages you want to delete in the channel.', required: true, type: 'INTEGER' }, { name: 'user', description: 'Please mention the user whose messages you want to delete.', required: false, type: 'USER' }, ], }, run: async (bot, interaction) => { if (!interaction.channel.permissionsFor(interaction.guild.me).has([Permissions.FLAGS.VIEW_CHANNEL, Permissions.FLAGS.SEND_MESSAGES, Permissions.FLAGS.EMBED_LINKS])) return; let amount = interaction.options.getInteger('amount'); let user = interaction.options.getMember('user'); const embedError = new MessageEmbed() .setColor(red) if (!interaction.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) { embedError.setDescription(noPermissions); return await interaction.followUp({ embeds: [embedError] }); }; if (parseInt(amount) <= 0) { embedError.setDescription("❌ You cannot input a negative number."); return await interaction.followUp({ embeds: [embedError] }); }; if (!interaction.guild.me.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) { embedError.setDescription("❌ I do not have permission to perform this command!"); return await interaction.followUp({ embeds: [embedError] }); }; if (!user) { try { const embedA = new MessageEmbed() .setColor(black) .setDescription(`Successfully deleted **${amount}** messages!`) await interaction.channel.bulkDelete(amount, true) return await interaction.followUp({ embeds: [embedA] }); } catch (err) { embedError.setDescription(tryError); return await interaction.followUp({ embeds: [embedError] }); }; } else { try { const embedB = new MessageEmbed() .setColor(black) .setDescription(`Successfully deleted **${amount}** messages sent by **${user.user.username}**!`) const userMessages = (await interaction.channel.messages.fetch()).filter((m) => m.author.id === user.id); await interaction.channel.bulkDelete(userMessages, true); return await interaction.followUp({ embeds: [embedB] }); } catch (err) { embedError.setDescription(tryError); return await interaction.followUp({ embeds: [embedError] }); }; }; }, };