const { CommandInteraction, MessageEmbed, MessageActionRow, MessageButton, Client, } = require("discord.js"); const suggestDB = require("../../Models/suggestShema"); const errorHandler = require("../../Structures/Handlers/error_handler"); module.exports = { name: "suggest", description: "Suggest to the server", options: [ { name: "type", description: "Select an option.", type: "STRING", required: true, choices: [ { name: "Command", value: "Command" }, { name: "Event Listener", value: "Event Listener" }, { name: "System", value: "System" }, { name: "Other", value: "Other" }, ], }, { name: "suggestion", description: "Type the suggestion", type: "STRING", required: true, }, ], /** * * @param {CommandInteraction} interaction * @param {Client} bot */ async execute(interaction, bot) { try { const { options, guildId, member, user, channelId } = interaction; const type = options.getString("type"); const suggestion = options.getString("suggestion"); const embed = new MessageEmbed() .setColor("NAVY") .setAuthor( user.tag, user.displayAvatarURL({ dynamic: true, size: 512 }) ) .addFields( { name: "Suggestion", value: suggestion, inline: false }, { name: "Type", value: type, inline: true }, { name: "Status", value: "Pending", inline: true } ) .setTimestamp(); const buttons = new MessageActionRow(); buttons.addComponents( new MessageButton() .setCustomId("suggest-accept") .setLabel("✅ Accept") .setStyle("PRIMARY"), new MessageButton() .setCustomId("suggest-decline") .setLabel("⛔ Decline") .setStyle("DANGER") ); const M = await interaction.reply({ embeds: [embed], components: [buttons], fetchReply: true, }); const db_s = { id: guildId, channel_id: channelId, message_id: M.id, details: [ { member_id: member.id, type, suggestion, }, ], }; let db = await await suggestDB.create(db_s); db.save(); } catch (error) { errorHandler(interaction, error); } }, };