umbot
    Preparing search index...

    Interface IAddFormField<TBotController>

    Описание одного поля формы в Bot.addForm.

    interface IAddFormField<TBotController extends BotController = BotController> {
        name: string;
        prompt: string | ((ctx: TBotController) => string);
        validate?: (value: string) => string | boolean | Promise<string | boolean>;
    }

    Type Parameters

    Index

    Properties

    Properties

    name: string

    Имя поля. Станет ключом в объекте ответов, который получит onComplete. Должно быть валидным ключом объекта.

    'name', 'email', 'age'
    
    prompt: string | ((ctx: TBotController) => string)

    Текст, который бот отправит пользователю с просьбой ввести это поле. Может быть строкой или функцией от контроллера (для dynamic-content).

    'Как вас зовут?' | (ctx) => `Привет, ${ctx.userData.name}! Ваш email?`
    
    validate?: (value: string) => string | boolean | Promise<string | boolean>

    Валидатор пользовательского ввода.

    Может быть синхронным или асинхронным. Возвращаемое значение:

    • true — значение принято, переходим к следующему полю.
    • false — валидация не прошла, повторяем prompt без сообщения об ошибке.
    • string — эта строка отправляется пользователю как текст ошибки.
    // Синхронная валидация
    validate: (v) => v.length > 0

    // Сообщение, если неверно
    validate: (v) => /\S+@\S+/.test(v) || 'Некорректный email'

    // Асинхронная (например, проверка через API)
    validate: async (v) => {
    const exists = await db.users.findOne({ email: v });
    return exists ? 'Email уже занят' : true;
    }