Модальные окна
С помощью модальных окон вы можете создавать всплывающие формы, которые позволяют пользователям предоставлять вам отформатированные данные через отправку. Мы рассмотрим, как создавать, отображать и получать модальные формы с помощью necord
app.modals.ts
import { Injectable } from '@nestjs/common';
import { Context, Modal, ModalContext } from 'necord';
@Injectable()
export class AppModals {
@Modal('pizza')
public onModal(@Ctx() [interaction]: ModalContext) {
return interaction.reply({
content: `Your fav pizza : ${interaction.fields.getTextInputValue('pizza')}`
});
}
}
Динамические модальные окна
Вы можете создавать модальные окна с динамическим полем id
. Это полезно для передачи метаданных модальным окнам.
Динамические модальные окна используют формат path-to-regexp для выполнения сравнения с регулярны ми выражениями. Преобразуйте строку пути, такую как user/:name
, в регулярное выражение.
Чтобы создать динамическое модальное окно
new ModalBuilder()
.setTitle('What your fav pizza?')
.setCustomId('pizza/12345')
.setComponents([
new ActionRowBuilder<ModalActionRowComponentBuilder>().addComponents([
new TextInputBuilder()
.setCustomId('pizza')
.setLabel('???')
.setStyle(TextInputStyle.Paragraph)
])
])
Чтобы получить данные из динамического модального окна
app.modals.ts
import { Injectable } from '@nestjs/common';
import { Context, Modal, ModalContext,ModalParam } from 'necord';
@Injectable()
export class AppModals {
@Modal('pizza/:value')
public onModal(@Ctx() [interaction]: ModalContext, @ModalParam('value') value: string) {
return interaction.reply({
content: `Your fav pizza ${value} : ${interaction.fields.getTextInputValue('pizza')}`
});
}
}
Рабочий пример можно посмотреть здесь.