const {ModalBuilder, TextInputBuilder, ActionRowBuilder, TextInputStyle, ChannelType, EmbedBuilder, ButtonBuilder, ButtonStyle,PermissionsBitField, Embed} = require ('discord.js'); const ticket = require('../Schemas/ticketSchema'); const {createTranscript} = require('discord-html-transcripts'); module.exports = { name: 'interactionCreate', async execute(interaction, client) { if (interaction.customId == 'ticketCreateSelect') { const modal = new ModalBuilder() .setTitle(`Create your ticket`) .setCustomId('ticketModal') const why = new TextInputBuilder() .setCustomId('whyTicket') .setRequired(true) .setPlaceholder('What is the reason for creating this ticket?') .setLabel('Why are you creating this ticket?') .setStyle(TextInputStyle.Paragraph); const info = new TextInputBuilder() .setCustomId('infoTicket') .setRequired(true) .setPlaceholder('Feel free to leave this blank') .setLabel('Provide us with any additional information') .setStyle(TextInputStyle.Paragraph); const daniala = new TextInputBuilder() .setCustomId('dis') .setRequired(true) .setPlaceholder('ldnajdkjbw') .setLabel('knfalnflja') .setStyle(TextInputStyle.Short); const one = new ActionRowBuilder().addComponents(why); const two = new ActionRowBuilder().addComponents(info); const third = new ActionRowBuilder().addComponents(daniala); modal.addComponents(one, two, third); await interaction.showModal(modal); } else if (interaction.customId == 'panel') { const embed = new EmbedBuilder() .setColor('Blurple') .setTitle('Панель Управления Тикетом') const button = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId('Obzvon') .setLabel(`Обзвон`) .setStyle(ButtonStyle.Primary), new ButtonBuilder() .setCustomId('dopinva') .setLabel(`Запросить Доп.Инфу`) .setEmoji('') .setStyle(ButtonStyle.Secondary) ); await interaction.reply({embeds: [embed],components: [button], ephemeral: true}); } else if (interaction.customId == 'dopinva') { const modal = new ModalBuilder() .setTitle(`Запросить Дополнительную Информацию`) .setCustomId('dopinfaModel') const infa = new TextInputBuilder() .setCustomId('infa') .setRequired(true) .setPlaceholder('Информация') .setLabel('Что мне запросить у него?') .setStyle(TextInputStyle.Short); const one = new ActionRowBuilder().addComponents(infa); modal.addComponents(one); await interaction.showModal(modal); } else if (interaction.customId == 'dopinfaModel') { const username = interaction.fields.getTextInputValue('dis'); const user = client.users.cache.find(u => u.tag === username); // Send a message to the user user.send(`Some message here`); } else if (interaction.customId == 'ticketModal') { const user = interaction.user; const data = await ticket.findOne({Guild: interaction.guild.id}); if (!data) return await interaction.reply({content: `Sorry! Looks like you found this message but the ticket systme is desabled`, ephemeral: true}); else { const why = interaction.fields.getTextInputValue("whyTicket"); const info = interaction.fields.getTextInputValue("infoTicket"); const category = await interaction.guild.channels.cache.get(data.Category); const channel = await interaction.guild.channels.create({ name: `ticket-${user.id}`, type: ChannelType.GuildText, topic: `Ticket user: \`${user.username}\`; Ticket reason: \`${why}\``, parent: category, permissionOverwrites: [ { id: interaction.guild.id, allow: [PermissionsBitField.Flags.ViewChannel, PermissionsBitField.Flags.SendMessages, PermissionsBitField.Flags.ReadMessageHistory] }, { id: interaction.guild.id, deny: [PermissionsBitField.Flags.ViewChannel] } ] }); const embed = new EmbedBuilder() .setColor("Blurple") .setTitle(`Ticket from ${user.username}🕶️`) .setDescription(`Opening Reason: \n\`${why}\`\n\nExtra Information: \n\`${info}\``) const button = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId('closeTicket') .setLabel(`🔒 Close Ticket`) .setStyle(ButtonStyle.Danger), new ButtonBuilder() .setCustomId('panel') .setLabel(`Панель Управления`) .setEmoji('') .setStyle(ButtonStyle.Secondary) ); await channel.send({embeds: [embed], components: [button]}); await interaction.reply({content: `♻️ Your ticket has been opened in ${channel}`, ephemeral: true}); } } else if (interaction.customId == 'closeTicket') { const closeModal = new ModalBuilder() .setTitle('Ticket Closing') .setCustomId('closeTicketModal') const reason = new TextInputBuilder() .setCustomId('closeReasonTicket') .setLabel('Closing Reason') .setRequired(true) .setPlaceholder('Provide a closing reason') .setStyle(TextInputStyle.Paragraph); const one = new ActionRowBuilder().addComponents(reason); closeModal.addComponents(one); await interaction.showModal(closeModal); } else if (interaction.customId == 'closeTicketModal') { var channel = interaction.channel; var name = channel.name; name = name.replace('ticket-', ''); const member = await interaction.guild.members.cache.get(name); const reason = interaction.fields.getTextInputValue("closeReasonTicket"); await interaction.reply({content: `⚜️ Closing this ticket...`}); setTimeout(async () => { await channel.delete().catch(err => {}); await member.send(`📨 You are receiving this notification because your ticket in ${interaction.guild.name} has been closed fpr: \'${reason}\``).catch(err => {}); }, 5000); } } };