const { Modal, TextInputComponent, MessageActionRow, MessageEmbed } = require('discord.js'); const PartnerSetup = require('../../database/schemas/partnerSetup'); module.exports = { name: "partnership", description: "Create a partnership", options: [ { name: "owner-server", type: "USER", description: "The user who will manage the partnership", required: true } ], run: async (client, interaction) => { const ownerOption = interaction.options.getMember("owner-server"); const owner = ownerOption || interaction.member; const modal = new Modal() .setCustomId('partnership-modal') .setTitle('Partnership Details'); const descriptionInput = new TextInputComponent() .setCustomId('description') .setLabel('Server Description') .setStyle('PARAGRAPH') .setRequired(true); const row = new MessageActionRow().addComponents(descriptionInput); modal.addComponents(row); await interaction.showModal(modal); } }; interaction create .... if (interaction.isModalSubmit()) { if (interaction.customId === 'partnership-modal') { const description = interaction.fields.getTextInputValue('description'); const setup = await PartnerSetup.findOne({ guildId: interaction.guildId }); if (!setup) { return interaction.reply({ content: 'Partner setup not found. Please run /setup-partner first.', ephemeral: true }); } const channel = interaction.guild.channels.cache.get(setup.partnerChannelId); if (!channel) { return interaction.reply({ content: 'Partner channel not found. Please run /setup-partner again.', ephemeral: true }); } const ownerOption = interaction.options.getMember("owner-server"); const owner = ownerOption || interaction.member; const embed = new MessageEmbed() .setTitle('New Partnership') .setDescription(description) .setColor('BLUE') .addField('Author', interaction.user.username) .addField('Server', interaction.guild.name) .addField('Manager', owner.user.username); await channel.send({ embeds: [embed] }); await interaction.reply({ content: 'Partnership details have been sent!', ephemeral: true }); } } });