Modais
Com modais você pode criar formulários pop-up que permitem que os usuários lhe forneçam entradas formatadas através de envios. Vamos abordar como criar, mostrar e receber formulários modais usando o necord

app.modals.ts
import { Injectable } from '@nestjs/common';
import { Context, Modal, ModalContext } from 'necord';
@Injectable()
export class AppModals {
@Modal('pizza')
public async onModal(@Context() [interaction]: ModalContext): Promise<void> {
await interaction.reply({
content: `Your fav pizza : ${interaction.fields.getTextInputValue('pizza')}`
});
}
}
Modal Dinâmico
Você pode criar botões com o campo dinâmico id. Isso é útil para passar metadados para modais.
Modais dinâmicos usam um formato path-to-regexp para realizar a correspondência de expressão regular. Transforme uma string de caminho como user/:name em uma expressão regular.
Para criar um modal dinâmico
import {
ActionRowBuilder,
ModalActionRowComponentBuilder,
ModalBuilder,
TextInputBuilder,
TextInputStyle
} from 'discord.js';
new ModalBuilder()
.setTitle('What your fav pizza?')
.setCustomId('pizza/12345')
.setComponents([
new ActionRowBuilder<ModalActionRowComponentBuilder>().addComponents([
new TextInputBuilder()
.setCustomId('pizza')
.setLabel('???')
.setStyle(TextInputStyle.Paragraph)
])
])
Para receber um modal dinâmico
app.modals.ts
import { Injectable } from '@nestjs/common';
import { Context, Modal, ModalContext, ModalParam } from 'necord';
@Injectable()
export class AppModals {
@Modal('pizza/:value')
public async onModal(
@Context() [interaction]: ModalContext,
@ModalParam('value') value: string
): Promise<void> {
await interaction.reply({
content: `Your fav pizza ${value} : ${interaction.fields.getTextInputValue('pizza')}`
});
}
}
Você pode ver um exemplo funcional aqui.