February 6, 2023

Как работать в Salebot с данными, когда нам не известен заранее их размер

Что делать, если ты специализируешься на нестандартных и функциональных чат-ботах?

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

Но и здесь есть выход. Salebot даёт возможность выполнять на своей стороне скрипты, написанные на Python, очень приличной сложности.

Например, попробуем перевести строку в массив. Сделаем так, чтобы у нас не было привязки к её длине. То есть, преобразуем любую строку.

1. Оформим код скрипта

Создадим текстовый файл, например, sb_str2array.py, и откроем его в текстовом редакторе:

Код Python-скрипта sb_str2array.py в редакторе Atom

Для удобства копирования привожу код в виде текста:

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. Это позволит нам переводить в массив строки любой длины.

Кстати, поделюсь парой ссылок, где описаны различные способы перевода строки в массив:

Ссылка раз

Ссылка два

2. Загружаем файл на сервер.

Создадим блок "Первостепенная проверка условия", зададим ему оригинальное условие, чтобы вдруг не сработало в боевом режиме и во вложениях загрузим наш файл:

Обязательно сохранить ☝️.

Переходим в раздел тестирования бота и вводим наше ключевое слово:

Salebot выводит адрес загруженного скрипта, который теперь можно использовать на всю катушку :).

Теперь этот блок можно сделать простым блоком "Состояние"

Копируем полученный адрес загруженного скрипта и создаём ещё один блок

Блок вычисления с помощью Python-скрипта

В этом блок в словаре 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 😃

👇