SmartBot
  • SmartBot - конструктор ботов для ВКонтакте
  • Подключение
  • Создание сценариев
    • Простые команды
    • Цепочка диалога
    • Как работает бот
    • Шаги
      • Отправить сообщение
      • Ждать сообщение
      • Установить переменную
      • Переход
      • Отложенный переход
      • Извлечь данные
        • Фильтры
        • Шаблон
        • Переход в случае ошибки
      • Таймер
      • Написать админу
      • Записать событие в статистику
      • Работа с аудиторией
      • Выполнить SmartQuery
      • Смена контекста
      • HTTP-запрос
    • Реакции
      • Фильтр предобработки
      • Реакция на оплату
    • Переменные
      • Специальные переменные
      • Пользовательские переменные
      • Операции с переменными
      • Временные переменные
      • Отличия шага Установить переменную и SmartQuery
    • Условия
    • Кнопки
      • Текстовая кнопка
      • Кнопка-переход
      • Кнопка-ссылка
      • Inline-кнопки
      • Кнопка-Vk pay
  • Работа с подписчиками
    • Рассылки
      • Создание рассылок
      • Таргетирование рассылки
      • Отписка от рассылок
      • Email-рассылка через Smartbot
    • Раздел "Пользователи"
    • Списки пользователей
    • Лендинги
      • Создание лендингов
      • Оплата через лендинг
      • Кнопка "подписаться"
      • Интеграция с рекламным кабинетом ВК
      • Запуск рекламного объявления
    • Онлайн-оплата
    • Сбор статистики
  • Модули
    • Яндекс.Деньги
    • Виджет
    • Гугл-таблицы
    • Геймификация
      • Взаимодействие пользователей
    • Источники переходов
    • Модуль HTTP-запросы
      • Пример использования
      • Способы подтверждения владения доменом
  • Скрипты на SmartQuery
    • Введение
    • Синтаксис языка
    • Справочник функций
    • Рецепты
      • Работа с регулярными выражениями
      • Форматирование длинных чисел
      • Разные ответы в зависимости от пола пользователя
      • Шаг "Показать топ" с emoji
      • Простая корзина товаров
      • Корзина товаров со счётчиком каждой позиции
      • Фильтрация спама
      • Получить ссылку на фото из сообщения пользователя
      • Данные из отвеченных и пересланных сообщений
      • Выдача промокодов
  • Политика конфиденциальности
Powered by GitBook
On this page
  • Создаём переменные
  • Цепочка выдачи промокода
  • Группа шагов №1: а остались ли у нас ещё промокоды?
  • Группа шагов №2: а не получал ли человек промокод ранее?
  • Группа шагов №3: выдача промокода
  • Тестируем

Was this helpful?

  1. Скрипты на SmartQuery
  2. Рецепты

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

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

PreviousДанные из отвеченных и пересланных сообщенийNextПолитика конфиденциальности

Last updated 5 years ago

Was this helpful?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тестируем

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

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

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

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