const db = require("quick.db"); const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, PermissionsBitField, AttachmentBuilder, InteractionType, StringSelectMenuBuilder, ModalBuilder, TextInputBuilder, TextInputStyle } = require('discord.js'); module.exports = { name: 'interactionCreate', run: async (interaction, clients) => { function voltarstart() { const embed = new EmbedBuilder() .setColor("#2f3136") .setTitle(`<:dev:1104552040962723853> ${interaction.guild.name} | Configuração <:dev:1104552040962723853>`) .setDescription("Selecione abaixo qual opção deseja alterar no seu bot. É importante que você preste atenção nas configurações atuais para garantir que suas alterações sejam feitas corretamente. <:warningaa:1116762438579277895>") .setColor("#2b2d31") const style2row = new ActionRowBuilder() .addComponents( new StringSelectMenuBuilder() .setCustomId('select') .setPlaceholder('Selecione abaixo qual opção deseja modificar no BOT.') .addOptions([ { label: 'Configurações Basicas', description: `Configurações sobre sua aplicação`, emoji: '1104552049896607865', value: 'configbasic', }, { label: 'Configurações Avançadas', description: `Configurações sobre seu BOT MENSALIDADE`, emoji: '1104552040962723853', value: 'configHospedagem', }, ]) ) interaction.message.edit({ embeds: [embed], components: [style2row] }) } function configbasic() { const embed = new EmbedBuilder() .setColor("#2f3136") .setTitle(`<:dev:1104552040962723853> ${interaction.guild.name} | Configurações Basicas <:dev:1104552040962723853>`) .setDescription("Selecione abaixo qual opção deseja alterar no seu bot. É importante que você preste atenção nas configurações atuais para garantir que suas alterações sejam feitas corretamente. <:warningaa:1116762438579277895>") .setColor("#2b2d31") const style2row = new ActionRowBuilder() .addComponents( new StringSelectMenuBuilder() .setCustomId('select') .setPlaceholder('Selecione abaixo qual Configurações Basicas deseja realizar.') .addOptions([ { label: 'Alterar Nome', description: `Altere o nome do BOT`, emoji: '🪪', value: 'alterarnome', }, { label: 'Alterar Avatar', description: `Altere o avatar do BOT`, emoji: '🖼️', value: 'alteraravatar', }, ]) ) const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId("voltarstart") .setLabel('Voltar') .setEmoji(`1106069998331514930`) .setStyle(2) .setDisabled(false),) interaction.message.edit({ embeds: [embed], components: [style2row, row] }) } async function renamebot() { const modalaa = new ModalBuilder() .setCustomId('alterarnomebot') .setTitle(`${interaction.user.username} - Alterar NOME do BOT`); const newnamebot = new TextInputBuilder() .setCustomId('newnamebot') .setLabel("Envie o novo NOME do BOT.") .setStyle(TextInputStyle.Short) .setRequired(true) .setMaxLength(32) .setMinLength(2) const firstActionRow = new ActionRowBuilder().addComponents(newnamebot); modalaa.addComponents(firstActionRow); await interaction.showModal(modalaa); } async function changeavatar() { const modala = new ModalBuilder() .setCustomId('alteraravatarbot') .setTitle(`${interaction.user.username} - Alterar AVATAR do BOT`); const newavatarbot = new TextInputBuilder() .setCustomId('newavatarbot') .setLabel("Envie o LINK do novo AVATAR do BOT.") .setStyle(TextInputStyle.Short) .setRequired(true) const firstActionRow = new ActionRowBuilder().addComponents(newavatarbot); modala.addComponents(firstActionRow); await interaction.showModal(modala); } async function renamebotFunction() { const newnamebot = interaction.fields.getTextInputValue('newnamebot'); try { await interaction.client.user.setUsername(newnamebot) const embed = new EmbedBuilder() .setColor("#2f3136") .setTitle(`<:dev:1104552040962723853> ${interaction.guild.name} | Configurações Basicas <:dev:1104552040962723853>`) .setDescription(`Gostaria de informar que o nome deste bot foi alterado para **${newnamebot}**. Caso seja de seu interesse, por favor, prossiga com a configuração abaixo.`) .setColor("#2b2d31") interaction.message.edit({ embeds: [embed], content: `${interaction.user}` }) } catch (error) { if (error.code == 50035) { const style2 = new EmbedBuilder() .setDescription(`<:no:1104552043579973632> ${interaction.user}, algum erro inesperado aconteceu, aguarde alguns minutos para tentar novamente.`) .setColor("#2b2d31") const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId("voltarbasic") .setLabel('Voltar') .setEmoji(`1106069998331514930`) .setStyle(2) .setDisabled(false),) interaction.message.edit({ embeds: [style2], components: [row] }) return } } } async function changeavatarFunction() { const newavatarbot = interaction.fields.getTextInputValue('newavatarbot'); try { await clients.user.setAvatar(`${newavatarbot}`) const embed = new EmbedBuilder() .setColor("#2f3136") .setTitle(`<:dev:1104552040962723853> ${interaction.guild.name} | Configurações Basicas <:dev:1104552040962723853>`) .setDescription(`Gostaria de informar que o avatar deste bot foi alterado. Caso seja de seu interesse, por favor, prossiga com a configuração abaixo.`) .setColor("#2b2d31") interaction.message.edit({ embeds: [embed] }) } catch (error) { if (error.errno == -4058) { const style2 = new EmbedBuilder() .setDescription(`<:no:1104552043579973632> Desculpe, ${interaction.user}, mas você inseriu um link ou uma imagem indisponível para ser adicionada como avatar do seu BOT.`) .setColor("#2b2d31") const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId("voltarbasic") .setLabel('Voltar') .setEmoji(`1106069998331514930`) .setStyle(2) .setDisabled(false),) interaction.message.edit({ embeds: [style2], components: [row] }) } return } } function configHospedagem() { const embed = new EmbedBuilder() .setColor("#2f3136") .setTitle(`<:dev:1104552040962723853> ${interaction.guild.name} | Configurações Avançadas <:dev:1104552040962723853>`) .setDescription("Selecione abaixo qual opção deseja alterar no seu bot. É importante que você preste atenção nas configurações atuais para garantir que suas alterações sejam feitas corretamente. <:warningaa:1116762438579277895>") .setColor("#2b2d31") const style2row = new ActionRowBuilder() .addComponents( new StringSelectMenuBuilder() .setCustomId('select') .setPlaceholder('Selecione abaixo qual Configurações Avançadas deseja realizar.') .addOptions([ { label: 'Criar Nova Venda', description: `Crie um novo BOT para vender`, emoji: '1104552049896607865', value: 'newvendabot', }, { label: 'Alterar Arquivo Venda', description: `Altere o arquivo de uma venda (UNICO)`, emoji: '⬆️', value: 'updatearquivosale', }, { label: 'Alterar Mensagem Venda', description: `Altere a mensagem de venda (UNICO)`, emoji: '📩', value: 'updatemessagesale', }, ]) ) const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId("voltarstart") .setLabel('Voltar') .setEmoji(`1106069998331514930`) .setStyle(2) .setDisabled(false),) interaction.message.edit({ embeds: [embed], components: [style2row, row] }) } async function newvendabot2() { const modalaB = new ModalBuilder() .setCustomId('CreateSales') .setTitle(`${interaction.user.username} - New Venda`); const newnamebote = new TextInputBuilder() .setCustomId('BotNameNew') .setLabel("Nome do Produto (BOT).") .setPlaceholder("TICKET | WHITELIST | AUTOCONNECT (EXEMPLO)") .setStyle(TextInputStyle.Short) .setRequired(true) .setMaxLength(32) .setMinLength(2) const firstActionRow2 = new ActionRowBuilder().addComponents(newnamebote); modalaB.addComponents(firstActionRow2); await interaction.showModal(modalaB); } async function newvendabotFunction() { const CreateBotName = interaction.fields.getTextInputValue('BotNameNew'); const style22 = new EmbedBuilder() .setDescription(`<:product:1113515984880402523> ${interaction.user}, Para concluir a primeira etapa de configuração de um novo produto nós envie abaixo o **.ZIP** de seu BOT.`) .setColor("#2b2d31") const row2 = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId("voltarbasic") .setLabel('Voltar') .setEmoji(`1106069998331514930`) .setStyle(2) .setDisabled(false),) interaction.message.edit({ embeds: [style22], components: [row2] }) const collectorFilter = response => { return response.author.id === interaction.user.id; }; interaction.channel.awaitMessages({ filter: collectorFilter, max: 1, time: 300000, errors: ['time'] }) .then(collected => { const receivedMessage = collected.first(); if (receivedMessage.attachments.size == 0) return interaction.editReply({ content: `Você inseriu um arquivo diferende de .zip com isso nada foi adicionado` }) receivedMessage.attachments.forEach(async attachment => { const fileName = attachment.name; if (fileName.endsWith('.zip')) { const lastFolder = path.join(__dirname, 'last_folder'); const previousFolder = path.dirname(lastFolder); const filePath = path.join(previousFolder, CreateBotName); const file = fs.createWriteStream(filePath); const request = https.get(attachment.url, function (response) { response.pipe(file); }); console.log('foi enviado') } else { console.log('arquivo incorreto') } }) }) } if (interaction.type == InteractionType.ModalSubmit) { if (interaction.customId === 'alterarnomebot') { interaction.deferUpdate() renamebotFunction() } if (interaction.customId === 'alteraravatarbot') { interaction.deferUpdate() changeavatarFunction() } if (interaction.customId === 'CreateSales') { interaction.deferUpdate() newvendabotFunction() } } if (interaction.isButton()) { if (interaction.customId.startsWith('voltarbasic')) { interaction.deferUpdate() configbasic() } if (interaction.customId.startsWith('voltarstart')) { interaction.deferUpdate() voltarstart() } } if (interaction.isStringSelectMenu()) { if (interaction.values[0] === ('alterarnome')) { renamebot() } if (interaction.values[0] === ('alteraravatar')) { changeavatar() } if (interaction.values[0] === ('configbasic')) { interaction.deferUpdate() configbasic() } if (interaction.values[0] === ('configHospedagem')) { interaction.deferUpdate() configHospedagem() } if (interaction.values[0] === ('newvendabot')) { interaction.deferUpdate() newvendabot2() } } } }