Как работать в Salebot с данными, когда нам не известен заранее их размер
Что делать, если ты специализируешься на нестандартных и функциональных чат-ботах?
При всей своей крутости конструктора Salebot любой специалист, имевший мало-мальский опыт программирования, начинает страдать от отсутствия такого важного инструмента алгоритмирования как, например, циклы. Также массу неудобств доставляют конструкции (строки, массивы), чей размер заведомо неизвестен.
Но и здесь есть выход. Salebot даёт возможность выполнять на своей стороне скрипты, написанные на Python, очень приличной сложности.
Например, попробуем перевести строку в массив. Сделаем так, чтобы у нас не было привязки к её длине. То есть, преобразуем любую строку.
Создадим текстовый файл, например, sb_str2array.py, и откроем его в текстовом редакторе:
Для удобства копирования привожу код в виде текста:
import json
def handle(data):
j = json.loads(data) s = j["s"] a = list(json.loads(data)["s"]) res = {"a": a}
return res
Для любителей суперкомпактного кода ещё один вариант 😃
import json
def handle(data): return {"a": list(json.loads(data)["s"])}
Не забудем сохранить. Это скрипт мы загрузим в Salebot. Это позволит нам переводить в массив строки любой длины.
Кстати, поделюсь парой ссылок, где описаны различные способы перевода строки в массив:
Создадим блок "Первостепенная проверка условия", зададим ему оригинальное условие, чтобы вдруг не сработало в боевом режиме и во вложениях загрузим наш файл:
Переходим в раздел тестирования бота и вводим наше ключевое слово:
Salebot выводит адрес загруженного скрипта, который теперь можно использовать на всю катушку :).
Теперь этот блок можно сделать простым блоком "Состояние"
Копируем полученный адрес загруженного скрипта и создаём ещё один блок
В этом блок в словаре str зададим нужную нам строку. Пусть это будет "str2array". В таком виде мы передадим эту строку в созданный нами скрипт.
А в переменной url сохраним адрес скрипта, который мы получили в тестовой консоли.
str = {"s":"str2array"} url = "https://files.salebot.pro/uploads/message/file/203293/sb_str2array.py"
r = code_executor(url, str)
Переходим в тестовую консоль и, вуаля, получаем массив из строки
Ну а дальше можно развлекаться с ним как угодно.
Описанный выше подход практически полностью развязывает нам руки. Так как теперь мы можем в динамике не только обрабатывать структуры данных. Но также формировать наборы кнопок в тех случаях, когда нам заранее не известно их количество. Обрабатывать тексты и численные массивы теми богатыми инструментами, которыми располагает Python даже в том варианте, который нам позволяют использовать разработчики Salebot.
Благодарность в виде доната приветствуется 😉. Как говорят восточные зулусы, buy me a coffee 😃