Выдача промокодов

Работа с массивами

Допустим Вам нужно через бота выдавать промокоды: по одному каждому человеку.

Создаём переменные

Для начала создадим глобальную переменную %промокоды% типа Массив. Обратите внимание, что значения (сами промокоды) записываются через запятую, и каждое значение заключено в двойные кавычки. Всё это — требования формата JSON.

Пример массива промокодов:

[
"abc",
"def",
"ghi"
]

Также нам потребуется переменная, которая будет хранить факт выдачи промокода каждому человеку. Для этого подойдёт локальная строковая переменная. Назовём её, например, %промокод_выдан%. Начальное значение — строка "нет". После выдачи промокода мы будем менять её на "да".

Цепочка выдачи промокода

Группа шагов №1: а остались ли у нас ещё промокоды?

Сначала, в первой группе шагов, проверим, а не закончились ли у нас промокоды.

Для этого добавим сложное условие:

len(%промокоды%) == 0

Если длина массива %промокоды% равна нулю, то мы отправим пользователю сообщение, что акция уже завершена, и вторым шагом обязательно сделаем "Выйти из цепочки". Тогда нам не придётся ниже дублировать условия, для случая, если промокоды ещё есть.

Группа шагов №2: а не получал ли человек промокод ранее?

Для этой цели нам вполне хватит возможностей обычных условий на переменные:

Также как и в предыдущей ситуации отправляем пользователю сообщение и выходим из цепочки:

Группа шагов №3: выдача промокода

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

Создаём третью группу шагов. На этот раз никаких условий добавлять не нужно.

Вытаскиваем из массива очередной промокод и сохраняем его во временную переменную %код%:

%код% = %промокоды%.pop()

Отправляем сообщение с кодом пользователю:

И сохраняем информацию о том, что пользователь получил свой промокод:

Тестируем

Просим промокод в первый раз:

Просим ещё раз:

Теперь, чтобы проверить кейс, когда промокоды уже кончились, зайдём в раздел Переменные и сменим значение переменной %промокоды% на пустой массив: []. А в разделе Пользователи сменим значение %промокод_выдан% на "нет".

И ещё раз попросим бота выдать промокод: