Форма
Форма задает участнику вопросы по очереди — как анкета. Когда он ответит на последний вопрос, бот запустит другое действие и передаст ему все ответы. Так делают заявки в клуб, обратную связь, регистрацию на турнир.
Как это выглядит для участника
- Участник вызывает команду, например
!заявка. - Бот присылает первый вопрос. Поле ввода Telegram само переключается на ответ этому сообщению.
- Участник отвечает. Если вопрос с вариантами, он просто нажимает кнопку.
- Бот присылает следующий вопрос — и так до конца.
- После последнего ответа бот запускает действие «после отправки».
На каждом шаге есть кнопка «Отмена». На ответ дается 5 минут — если участник молчит дольше, бот отменяет форму и сообщает об этом.
Как тебя зовут и сколько тебе лет?
Настройки формы
| Поле | Описание |
|---|---|
| Заголовок | Название формы, показывается в первом сообщении |
| Поля | От 1 до 5 вопросов — см. ниже |
| Действие после отправки | Какое действие этой команды запустить с ответами |
Поле формы
| Настройка | Описание |
|---|---|
| ID | Имя ответа латиницей, по которому его достать в шаблоне: form.values.tag |
| Тип | Текст, Число, Выбор или Да/Нет |
| Вопрос | Что бот спросит |
| Обязательное | Нельзя пропустить |
| Подсказка | Шаблон, который бот покажет как подсказку к ответу — например, {{ member.name }} |
| Варианты | Для типа «Выбор»: какие кнопки показать |
| Мин. и макс. | Для типа «Число»: допустимый диапазон |
| Тип | Как отвечает участник | Что придет в шаблон |
|---|---|---|
| Текст | Пишет ответ | Строка |
| Число | Пишет число | Число. Если написал не число или вне диапазона, бот переспросит |
| Выбор | Нажимает одну из кнопок-вариантов | Значение выбранного варианта |
| Да/Нет | Нажимает «Да» или «Нет» | true или false |
Ответы в следующем действии
Действие «после отправки» получает ответы в form.values. Каждый ответ доступен по ID поля:
{{ form.values.tag }}
{{ form.values['tag'] }}Обе записи одинаковые. Вторая удобна, если ID хранится в переменной.
Пример: заявка в клуб
Команда !заявка с двумя действиями.
Действие 1 — «Анкета» (по умолчанию), тип Форма:
| ID | Тип | Вопрос | Настройки |
|---|---|---|---|
tag | Текст | Твой тег в Brawl Stars? | обязательное |
trophies | Число | Сколько у тебя кубков? | от 0 до 200 000 |
mode | Выбор | Любимый режим? | Варианты: Захват кристаллов, Броулбол, Одиночное ШД |
active | Да/Нет | Готов играть в клубной лиге каждую неделю? | обязательное |
Действие после отправки — «Отправить заявку».
Действие 2 — «Отправить заявку», тип Отправка сообщения, куда — в топик «Заявки»:
## Новая заявка
От: {{ member }}
{{ table([
['Тег', '#' ~ (form.values.tag | upper | replace('#', ''))],
['Кубки', form.values.trophies | number_format],
['Режим', form.values.mode],
['Клубная лига', form.values.active ? 'да' : 'нет']
], {bordered: true, compact: true}) }}Проверка игрока по ЧС
Если ваш чат привязан к клубу Astral, в то же действие можно добавить проверку по черному списку — см. пример в статье Пространство astral.
Ограничения
- От 1 до 5 полей в форме.
- На каждый ответ — 5 минут.
- Бот принимает ответ только от того, кто начал форму, и только ответом на сообщение с вопросом.
- Форма не может запустить другую форму: действие после отправки должно быть другого типа.