Запись переменной

Используйте компонент Запись переменной, если вы заранее знаете значения переменных или если вам нужно вычислить, изменить или преобразовать переменные, полученные из других мест. Например, из Запросов, Развилок или Вводов от пользователя.

Функции

  1. Записывает значения в переменные без ожидания сообщения от пользователя бота.
  2. Позволяет создать сразу несколько переменных в одном компоненте.
  3. Записывает переменные с определенным типом данных.
  4. Добавляет созданную переменную в начало, конец или на известную позицию в списках

Чтобы создать переменную, нужно добавить компонент Запись переменной на экран, указать Имя, выбрать один из Типов и указать Значение, подходящее под выбранный тип.

Имя

Оно может быть любым, но мы советуем использовать только латинские буквы, цифры и символ нижнего подчеркивания для разделения слов. Подробнее про подходящие имена переменных можно прочитать в статье.

Тип

Компонент поддерживает создание переменной из следующих типов:

  • Строка — просто любой текст, эмодзи или пустая строка.
  • Число — чтобы его можно было использовать в математических шаблонах.
  • Логический — true или false (правда или ложь).
  • Пустой объект — контейнер, чтобы объединить другие переменные (также называют словарем).
  • Пустой список — список, чтобы в будущем его можно было наполнить данными из других переменных (также список называют массивом).
  • NULL — пустое значение, обычно заглушка для данных, которые появятся в будущем.
  • Объект из JSON — для записи переменных в массив или объект из формата JSON.
  • Увеличить число на — прибавляет заданное число к существующему значению переменной.
  • Уменьшить число на — вычитает заданное число из существующего значения переменной.

Про простые типы вроде строк, чисел, логических переменных и NULL подробно описано в статье про типы данных переменных.

Пустой объект

Это контейнер для будущих данных. После создания переменной в компоненте Запись переменной можно что-то добавить в этот объект, задав имя вложенной переменной через точку.

Например, если мы назовем переменную с пустым объектом my_object, то мы можем создать новую переменную my_object.inner_object и записать в нее что-то. inner_object станет вложенной в my_object переменной. Получить к ней доступ можно также, через точку:

{{my_object.inner_object}}

Тоже самое можно сделать в любом другом компоненте, который позволяет создавать новые переменные, например, в Вводе от пользователя или Запросе.

Также этот тип данных можно использовать для того, чтобы очистить заполненную переменную, в которой вы ожидаете объект.

Например, вы можете создать в боте анкету, ответы записывать в отдельный, выделенный объект, а чтобы дать пользователю возможность полностью сбросить эту анкету и пройти заново, вы записываете в переменную с данными из анкеты пустой объект.

Пустой список

Аналогичен пустому объекту, только создает список для будущего наполнения или использования с хелперами.

Чтобы записать что-то в созданный список, можно поступить также, как с объектами, только вместо имени вложенной переменной использовать индекс элемента, который нужно записать. Чтобы записать что-то в пустой список, можно использовать 0 — индекс первого элемента.

Допустим, мы создали переменную my_list с пустым списком и хотим записать в нее сообщение, которое пришлет нам пользователь. Мы можем добавить компонент Ввод от пользователя и в Имени переменной, куда записывать ввод, указать my_list.0. Тогда то, что напишет пользователь, попадет в первый элемент списка.

Если мы захотим сделать так, чтобы то, что присылает пользователь добавлялось всегда в конец списка, мы можем написать шаблон, который будет получать длину списка, и записывать по этому индексу. Индекс равный длине списка — это как раз индекс в конце списка. Запишем такой шаблон в Имя переменной в компоненте Ввод от пользователя:

my_list.{{my_list.length}}

Теперь все, что пишет пользователь будет добавляться в конец списка.

Также записать новый элемент в список можно через Управление списками в другой Записи переменной.

Объект из JSON

Этот тип данных позволяет вам записать в переменную любой допустимый JSON.

Он полезен, если вам нужно составить и записать какой-то сложный объект или список.

Подробнее про JSON мы рассказывали в статье JSON и типы данных в нем.

Значение

Значение переменной должно соответствовать выбранному типу. Т. е. если вы выбрали тип Число, то в значение можно записывать только числа, если выбрали Логический тип, то только true или false, а в типе Объект из JSON может быть только допустимый JSON-объект.

Почти для каждого типа в значении может быть собираемый шаблон.

Если в Значении находится шаблон, он будет собран во время выполнения компонента ботом и приведен к нужному типу.

Если приведение типа невозможно, например, вы пытаетесь записать эмодзи в число, то бот прекратит текущее выполнение с ошибкой и отменит изменения в переменных пользователя на момент последнего успешного сообщения.

Это свойство можно получить из шаблона.

Управление списками

Свойства из секции Управление списками позволяет записывать переменную в ранее созданный или новый список.

Это может понадобиться для анкет, различных списков, корзин с товарами. Списки полезны в большом количестве ситуаций.

По умолчанию управление списками выключено, в этом случае переменная просто запишется в указанное вами Имя.

Если вы активируете любую из опций Управления списками, то свойство Имя переменной будет указывать на переменную со списком, которым вы хотите управлять. Т. е. поведение этого свойства немного меняется.

Создать новый и добавить в него

Ботмама создаст переменную, поместит туда новый список, первым элементом которого запишет значение переменной.

Имя переменной, в которую будет записан новый список, Ботмама возьмет из свойства Имя.

Добавить в конец

Ботмама попытается найти список в переменной из свойства Имя и записать значение новым элементом в конце списка.

Если переменную со списком найти не получилось (такой переменной нет или в ней не список), Ботмама прекратит текущее выполнение бота и отменит изменения в переменных текущего пользователя на момент последнего успешного сообщения.

Добавить в начало

Ведет себя аналогично Добавлению в конец списка, только добавляет в начало списка, а не в конец.

Добавить в конец или создать новый список и добавить в него

Ведет себя аналогично Добавлению в конец списка, только не останавливает бота, если список не найден в указанном имени переменной.

Вместо этого создает новый список и добавляет значение в него.

Добавить в начало или создать новый список и добавить в него

Ведет себя аналогично Добавлению в начало списка, только не останавливает бота, если список не найден в указанном имени переменной.

Вместо этого создает новый список и добавляет значение в него.

Записать в определенную позицию

Ботмама попытается найти список в переменной из свойства Имя и записать значение новым элементом в указанную позицию. Элемент, который уже находится в этой позиции, будет заменен.

Позиция в списке

Записывается в соответствующем свойстве.

Это свойство можно получить из шаблона.

Если переменную со списком найти не получилось (такой переменной нет или в ней не список), Ботмама прекратит текущее выполнение бота и отменит изменения в переменных текущего пользователя на момент последнего успешного сообщения.

Если позиция находится за пределами размеров списка, то Ботмама следует правилам:

  • позиция больше длинны списка — вставить значение в конец списка;
  • позиция меньше нуля — вставить значение в начало списка.

Добавить после определенной позиции

Ботмама попытается найти список в переменной из свойства Имя и записать значение новым элементом после указанной позиции. Элемент, который уже находится в этой позиции, изменен не будет, вместо этого будет вставлен новый.

Добавить перед определенной позицией

Ведет себя аналогично Добавлению после определенной позиции, только значение будет записано перед определенной позицией, а не после.

В начало ↑