Параметры
Параметры — это временная «сумка» для данных, которые нужно передать дальше: от команды — к кнопкам под ее сообщением, от одного действия — к другому. В отличие от атрибутов, параметры живут недолго: 15 минут с последнего обращения.
Сохранить и прочитать
{% do parameters.store('memberId', arguments.targetMember.id) %}
{{ parameters.get('memberId') }}
{{ parameters.memberId }}| Запись | Что делает |
|---|---|
parameters.store(ключ, значение) | Сохранить значение |
parameters.get(ключ) | Прочитать значение |
parameters.ключ | То же, короче |
Хранить можно числа, строки, участников, роли бота и топики.
Куда попадают параметры
От сообщения — к его кнопкам. Если действие отправило сообщение, все, что оно сохранило через store, бот привязывает к этому сообщению. Когда кто-то нажмет кнопку под ним, действие кнопки получит эти параметры.
!бан @ivan спам
└─ «Спросить»: store('memberId', …), store('reason', 'спам') → сообщение с кнопками
├─ [Забанить] → действие «Бан»: parameters.memberId, parameters.reason
└─ [Отмена] → действие «Отмена»Между действиями цепочки. Действие, запущенное через run, видит параметры запустившего и может получить дополнительные через with:
{% run 'ae04dfed-e19c-49d3-84fc-b05cec59976e' with { page: 0 } %}Время жизни
Параметры хранятся 15 минут с последнего обращения. Каждое чтение продлевает срок. Если кнопку нажали через час после отправки сообщения и за это время к параметрам никто не обращался, они уже пусты — учитывайте это и подставляйте значения по умолчанию:
{% set page = parameters.get('page') ?: 0 %}Параметры или атрибуты?
- Параметры — для короткой передачи данных между шагами одной «сессии»: номер страницы, кого банят, что выбрали в меню.
- Атрибуты — для того, что нужно помнить долго: баланс, уровень в игре, анкета.