January 26, 2023

Часть 6. Получаем количество в товарной позиции

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

Создаем блок

Настройки стрелки.

В стрелке стоит просто условие "Изменить количество"

В выводе текста у нас стоит переменная #{basket_text}

а в калькуляторе у нас такой код

header=Укажите номер позиции для изменения:
basket_text=massive_to_text(basket, header, 1)

basket_text=replace(basket_text, "{'product': '", " ")

basket_text=replace(basket_text, "', 'quantity': ", " Количество: ")

basket_text = replace(basket_text, ", 'price': ", " шт. Цена: ")

basket_text = replace(basket_text, "};", " руб.")

В переменную header мы теперь сохраняем такой текст "Укажите номер позиции для изменения:"

А дальше уже с помощью функции massive_to_text мы преобразовываем словарь
в текст.

А уже с помощью replace избавляемся от ненужных частей текста или заменяем эти фрагменты на нужные


Дальше мы создаем блок и в настройках стрелки включаем функцию "Пользователь вводит данные"

и сохраняем то что введет пользователь в переменную position

А сам этот блок абсолютно пустой.

Этот блок нужен для проверки цифры, которую вводит пользователь.

Чтобы не было случаев, когда в корзине только 2 товара, а пользователь вводит 10 позицию.

И если не будет подобной проверки, то бот не будет работать корректно.

И с этого блока отводим 2 стрелки

Настройки стрелки, которая идет на вверх, выглядят таким образом.

В переменной для сравнения написано такое условие:

lenbasket<position

и время отправки -1 секунда

lenbasket<position

Это условие можно прочитать 2 способами.

1) Если цифра, которую вводит пользователь, больше чем количество элементов в корзине, то отправить по этой стрелке

2) Если количество элементов в корзине меньше чем цифры, которую ввел пользователь, то отправить по этой стрелке

Вот тут можно прочитать больше про сравнение переменных https://docs.salebot.pro/peremennye-1/sravnenie-peremennykh

А в этом блоке просто текст "Вы ошиблись с номером (ввели больше, чем позиций в корзине)"

И этот блок отправляет обратно через -1 секунду. На картинке представлены настройки стрелки.


Теперь перейдем к стрелке, которая идет на право

в настройках указана задержка -1 секунда

а переменная для сравнения lenbasket>=position

Это условие означает-
Если цифру, которую вводит пользователь не превышает количество элементов в корзине, то отправить по этой стрелке

Здесь в калькуляторе пишем

position=position-1

Зачем мы отнимает -1 от цифры, которую вводит пользователь?

Вспомним, что элементы в массиве начинаются с 0

Так как корзина у нас массив

то в этой корзине индексы товаров начинаются с 0

то есть у товара 1 будет индекс 0

При использовании переменной position, мы из нее отнимаем -1. Это необходимо, потому что мы будем использовать эту переменную для извлечения необходимой информации о товаре, которая хранится в массиве.

И через -1 секунды отправляем пользователя в другой блок

Текст -

Напишите сколько хотите удалить. Всего доступно #{quantity} шт.

В калькуляторе -

quantity=basket[position]['quantity']
price=basket[position]['price']

Тут мы в переменную quantity сохраняем количество товара

а в price пишем стоимость этого товара

А обращаемся мы с помощью такой логики

mas[index]['key']

То есть корзина это у нас массив, а в этом массиве хранятся словари.

И поэтому мы сперва обращаемся по индексу к нужному товару

А потом уже по ключу к нужному значению

Работа с массивами и словарями - Salebot.pro

Потом создаем стрелку и в настройках стрелки указываем, что пользователь вводит данные

и сохраняем эти данные в переменную qua

Этот блок пустой, но он нужен для проверки информации, которую ввел пользователь

Задержка -1 секунда

Переменная для сравнения:

quantity<qua

Это строгое неравенство можно прочитать таким образом:

Если общее количество(quantity) меньше количества, которую ввел пользователь(qua)
то отправить по этой стрелке

В этом блоке просто текст "Вы ввели больше, чем позиций есть в позиции."


В стрелке просто задержка -1 секунда

А вот уже в этой стрелке

Задержка -1 секунда

Переменная для сравнения:

quantity>=qua

Это нестрогое неравенство означает:

Если общее количество(quantity) больше или равно введенному числу пользователем(qua), то отправить по этой стрелке

В этом блоке, вывод текста будет таким:

Вы хотите удалить #{qua} шт. Останется #{quantity} шт.

в калькуляторе:

quantity=quantity-qua

Кнопки клавиатурные:

Да

Изменить

В калькуляторе мы отнимаем от общего числа(quantity), введенное число пользователем(qua)

и это значение обратно сохраняем в переменную quantity

Стрелку изменить направляем вот в этот блок

Стрелку с условием "Да" направляем в блок ниже

Сам блок пустой

И с этого пустого блока направляем стрелку с задержкой -1 секунда

и с переменной для сравнения quantity==0

И эта стрелку нужна, если человек полностью убрал количество товара

и этот товар нужно убрать с корзины

Корзина в проектах на конструкторе Salebot. Начало

Если вам понравилась наша статья, пишите комментарии. Задавайте вопросы по статье в комментариях.

И конечно же у вас есть возможность поддержать наш проект отправив донат.