📝 Modal
Como obter: `Modal()`
Métodos
| Assinatura | Parâmetro(s) | Descrição |
|---|---|---|
| setTitle(v) | string | Título del formulario (máx. 45 caracteres) |
| addTextInput(customId, label, opts?) | string, string, object? | Añade un campo de texto. opts: { style: "short"|"long", placeholder, required, minLength, maxLength, value } |
| onSubmit(fn, opts?) | function, object? | Registra el envío del formulario. fn(interaction, fields) — fields tiene el valor de cada campo por su customId. opts: { user: true|"id", ttl: ms } |
En el objeto de interacción
| Assinatura | Parâmetro(s) | Descrição |
|---|---|---|
| interaction.showModal(modal) | Modal | Abre el formulario. modal ya debe haber pasado por .onSubmit(fn) |
Limitación de Discord: un Modal solo se abre en respuesta a una interacción ya existente (dentro de
on(buttonClick) o on(selectMenu), o en el .onClick() temporal de un Button/SelectMenu) — nunca desde on(command), que es un mensaje normal sin token de interacción detrás.Exemplo de uso
on command("feedback", message, args)
let btn = Button()
.setLabel("Dar feedback")
.onClick(function(interaction)
let modal = Modal()
.setTitle("Feedback")
.addTextInput("nota", "Nota de 1 a 5", { style: "short" })
.addTextInput("comentario", "Comentário", { style: "long", required: false })
.onSubmit(function(interaction, fields)
interaction.reply("Recebido! Nota: " .. fields.nota .. " — " .. fields.comentario)
end)
interaction.showModal(modal)
end)
message.reply("Clica pra dar feedback:", { components: [btn] })
end