const { ButtonInteraction, MessageEmbed, MessageActionRow, MessageButton } = require('discord.js'); const DB = require('../../Models/Ticket'); const {PARENTID, EVERYONEID } = require('../../Structures/config.json'); module.exports = { name: 'interactionCreate', /** * * @param {ButtonInteraction} interaction */ async execute(interaction) { if(!interaction.isButton()) return; const { guild, member, customId} = interaction; if(!['report', 'bug', 'other'].includes(customId)) return; const ID = Math.floor(Math.random() * 90000) + 10000; await guild.channels.create(`${customId + "-" + ID}`, { type: 'GUILD_TEXT', parent: PARENTID, permissionOverwrites: [ { id: member.id, allow: ['SEND_MESSAGES', 'VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', 'ATTACH_FILES'] }, { id: EVERYONEID, deny: ['VIEW_CHANNEL', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] } ] }).then(async(channel) => { await DB.create({ GuildID: guild.id, MemberID: member.id, TicketID: ID, Closed: false, Locked: false, Type: customId }); const embed = new MessageEmbed() .setColor('GREEN') .setAuthor(`${guild.name} | Ticket: ${ID}`, guild.iconURL({dynamic: true})) .setDescription(`${member} Welcome! The staff will be here to soon in order to assit you, make sure you describe your problem until they arrive`) .setFooter({text: 'The buttons are for staff only'}); const Buttons = new MessageActionRow() Buttons.addComponents( new MessageButton() .setCustomId('close') .setLabel('Save & close ticket') .setStyle('PRIMARY') .setEmoji('928252218128363570'), new MessageButton() .setCustomId('lock') .setLabel('Lock the ticket') .setStyle('DANGER') .setEmoji('928252807520337931'), new MessageButton() .setLabel('Unlock the ticket') .setStyle('SUCCESS') .setCustomId('unlock') .setEmoji('928252830630936577') ); channel.send({embeds: [embed], components: [Buttons]}); await channel.send({content: `${member} here is your ticket`}).then((m) => { setTimeout(() => { m.delete().catch(() => {}); }, 1 * 5000); }); interaction.reply({content: `${member} here is your ticket ${channel}`, ephemeral: true}) }); } }