Отправка случайных команд без повторения инструментами PuzzleBot
В этой статье мы делаем отправку случайных команд без повторения используя исключительно PuzzleBot.
Данный способ реализации наиболее совершенен, чем предыдущий и гораздо более оптимизированный, так как все процессы происходят только относительно его получателя и не зависимы от внешних факторов.
Разработка
Переменные
Для решения этой задачи мы используем ряд зависимых друг от друга переменных-формул. На практике достаточно скопировать и соблюдать синтаксис, чтобы всё работало.
Создайте текстовую переменную {{commands_list}}, эта переменная будет содержать массив из команд, которые бот будет отправлять в случайном порядке. Сейчас поясню:
В поле "Значение по умолчанию" переменной укажите:
Во второй паре кавычек (значении) укажите название команды, как вместо name_1, name_2.
Имя команды может быть на любом языке, использовать экранируемые символы нельзя. Имя параметра ("name") всегда должно быть статичным. Играться с разделителями, переносами и пробелами вне кавычек не советую. Список можно продолжать бесконечно. Например:
Не правильно:
Создайте числовую переменную {{N}}. Позже она будет записывать номер объекта, из которой будет выводиться название команды.
Создайте переменную {{get_N_command_name}} с типом формула:
Эта формула необходима для вывода названия команды N-ного объекта. Проще говоря эта переменная будет отображать название случайной команды из списка.
Создайте переменные с типом формула:
- {{part_1}}, со значением:
- {{part_2}}, со значением:
- {{part_3}}, со значением:
Позже эти переменные помогут исключать из списка вариантов уже отправленную команду.
Создайте переменную {{edited_list}} с типом формула. Она будет выводить обновленный список команд исключая отправленные команды. Укажите формулу:
Создайте переменную {{quantity_objects}} с типом формула. Она будет выводить все запятуи из массива объектов. Это будет нужно, чтобы корректно посчитать оставшееся количество команд, доступных пользователю. Формула:
Создайте последнюю переменную {{random_N}} с типом формула. Она будет выдавать случайных номер объекта относительно количества запятуй. Формула:
Конструктор
Достаточно создать по одной команде и условию, чтобы наша структура заработала:
Создайте команду "Получение команды". Добавьте действия:
- Изменить переменную: Изменяем переменную {{N}} на {{random_N}}
- Отправить условие: Указываем условие "Отправка случайной команды" (создадим на следующем этапе)
Создаём условие "Отправка случайной команды". Добавим проверку значения переменной. Укажем проверку наличия значения переменной random_NВ действиях указываем:
1. Отправить запрос: Указываем адрес https://api.puzzlebot.top/?token=XXX&method=sendCommand, где вместо XXX нужно указать токен своего бота из Входящих запросов PuzzleBot.
В параметрах укажите:
- Ключ: command_name
- Значение: {{get_N_command_name}}
- Ключ: tg_chat_id
- Значение: {{USER_ID_TEXT}}
Добавьте действие "Изменить переменную". В поле "Название переменной" укажите commands_list, в "Выражение": {{edited_list}}
В исключениях:
Добавьте действие "Отправить команду", укажите название любой команды, которая будет отправляться после отправки всех команд. Чтобы возобновить список команд у пользователя, укажите в действиях любой из команд "Очистить переменную" и введите commands_list.
Всё готово! 🔥 Теперь при вызове команды "Получение команды" пользователь получит случайную команду из списка, а в последующих вызовах команды повторяться не будут.