const { ActionRowBuilder, ButtonStyle, ButtonBuilder } = require('discord.js'); const { color } = require('../../config/options.json'); const mongoose = require("mongoose"); const guildapp = require('../../schemas/guildAppSchema.js'); const waitingList = require('../../schemas/waitinglistSchema.js'); const { waitingListRole } = require('../../config/roles.json'); module.exports = { name: 'guildapplicationaccept', description: 'Accept a guild application.', type: 'button', async execute(interaction) { await interaction.deferReply(); const user = interaction.user; const guild = interaction.guild; const embedColor = Number(color.replace("#", "0x")); const message = interaction.message; const embed = message.embeds[0]; const applicantId = embed.footer.text.split(" ")[1] const applicantIGN1 = embed.fields[0].value; const applicantIGN = applicantIGN1.replaceAll("`", ""); const applicant = await guild.members.fetch(applicantId) const applicantUsername = applicant.user.username + "#" + applicant.user.discriminator; await message.edit({ components: [ new ActionRowBuilder().addComponents( new ButtonBuilder() .setCustomId("guildapplicationaccept") .setLabel("Accept") .setStyle(ButtonStyle.Primary) .setDisabled(true), new ButtonBuilder() .setCustomId("guildapplicationdeny") .setLabel("Deny") .setStyle(ButtonStyle.Danger) .setDisabled(true), new ButtonBuilder() .setCustomId("checkstats") .setLabel("Check Stats") .setStyle(ButtonStyle.Secondary) .setDisabled(true) ) ] }); await applicant.send({ embeds: [{ description: `Your application for the Illegitimate guild has been accepted.`, color: embedColor }] }); const applicantEntry = await guildapp.findOne({ userID: applicantId }) const applicantUUID = applicantEntry.uuid; const time = Date.now(); const waitingListAdd = new waitingList({ _id: new mongoose.Types.ObjectId(), userID: applicantId, uuid: applicantUUID, IGN: applicantIGN, timestamp: time }); await waitingListAdd.save(); await applicant.roles.add(waitingListRole); await guildapp.findOneAndDelete({ userID: applicantId }); await interaction.editReply({ embeds: [{ title: applicantUsername + " - Guild Application", description: "Application has been accepted by <@" + user.id + ">.", color: embedColor, thumbnail: { url: applicant.avatarURL() }, footer: { iconURL: guild.iconURL(), text: "ID: " + applicant.id } }] }); } };