Skip to content

Modals ​

Modals are a way to display a form to the user. They can be used to collect information or confirm an action.

Example ​

ts
import { defineModal } from '@harmonix-js/core'

export default defineModal(
  {
    title: 'Form',
    inputs: {
      color: {
        label: 'Favorite color',
        style: 'Short',
        placeholder: 'Enter your favorite color'
      },
      hobbies: {
        label: 'Hobbies',
        style: 'Paragraph',
        placeholder: 'Enter your hobbies'
      }
    }
  },
  (interaction, context) => {
    const { color } = context.inputs

    interaction.reply(`Submitted color: ${color}`)
  }
)

Modal can be customized using the following options:

  • id: The unique identifier for the modal.
  • title: The title displayed on the modal.
  • inputs: The record of inputs to include in the modal.

Using Modals ​

Modals can be imported using getModal function and be added to messages using the components property of the interaction.reply method. You can use the useActionRow function to create a row.

Example ​

ts
import { defineCommand, getModal, useActionRow } from '@harmonix-js/core'

export default defineCommand(
	{
		description: 'Open a form.'
	},
	(_, interaction) => {
		const modal = getModal('form')
		const row = useActionRow(modal)

		interaction.reply({
			content: 'Click the button to open the form!',
			components: [row]
		})
	}
)

INFO

The getModal function is used to import the modal with the specified ID. By default, the ID is the filename without the extension.

Released under the MIT License.