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", /** @param {import('discord.js').ButtonInteraction} interaction */ 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 } }] }) } }