Skip to main content

Перебор сообщений или меню в случайном порядке

Функционал позволяет обращаться к фиксированному списку сообщений, разделов меню или даже функций в случайном порядке (без повторов), показывая юзеру их содержимое или производя заданное действие. Цикл показов можно повторять с генерацией новой случайной последовательности или прервать после первого показа.

В качестве примера возьмём показ списка сообщений в случайном порядке, но поняв принцип, его можно будет применить и для других кейсов - например для показа вопросов опросника в случайном порядке и тому подобных вещей. После окончания цикла просмотра (когда ВСЕ сообщения показаны) будет осуществляться автоматический сброс и генерироваться новая последовательность перебора. Какую-то более сложную механику сброса для повторно показа - описывать НЕТ смысла - её конечная реализация слишком сильно зависит от конкретного проекта и вряд ли может быть как-то генерализована. В общем случае, для рестарта, вам нужно будет создать функцию приводящую описанную ниже систему в исходно состояние, на ваших условиях.


 Приобретение функционала


Весь функционал приобретается В ВАШЕМ БОТЕ, для этого перейдите в свой бот:
☞ 🔐Админ | 🧩Расширения

ВАЖНО: Приобретение функционала для бота доступно только Создателю (хозяину) бота. Админы покупать функционал - НЕ МОГУТ!


Вам понадобится:

1. Переменная - 3 штуки
☞ 🔐Админ | 🧩Расширения | 📂Переменные

2. Action-ы - 4 штуки
☞ 🔐Админ | 🧩Расширения | 📂Action-ы

3. Плагин - Макросы и Выражения для Кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

❖ Создание перебора сообщений

1. Создание Переменных

1.1 Создайте Глобальную переменную, значение которой будет соответствовать количеству сущностей для перебора (кнопок с сообщениями в нашем случае).
Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📘Глобальные | ➕Создать Переменную
Название: «msgmax» - вы можете выбрать своё (не выходите из редактора переменной).
1.1.1 Поскольку глобальные переменные являются текстовыми, то такой переменной необходимо присвоить начальное значение. Поэтому, не выходя из редактора переменной, присвойте ей значение 3 (три) - мы для примера создадим 3 кнопки с сообщениями.

1.2 Создайте переменную Простого Кортежа (sTuple). В переменной будет храниться Кортеж со последовательными числами в случайном порядке.
Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📚sTuple | ➕Создать Переменную
Название: «msgtuple» - вы можете выбрать своё.

1.3 Создайте Числовую переменную. В переменной будет храниться текущий номер Ячейки Кортежа.
Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📙Цифровые | ➕Создать Переменную
Название: «msgcur» - вы можете выбрать своё.

2. Создание кнопок с сообщениями

В этих кнопках будут сообщения которые вы хотите показать юзеру. "Основная Кнопка" (описана ниже) будет в произвольном порядке обращаться к этим кнопкам - показывая их содержимое.

Надо понимать, что кнопки с сообщениями, в этом руководстве, выбраны для простоты понимания примера и, в целом, могут использоваться как первоначальный тестовый вариант. Вместо сообщений в кнопках могут быть целые функции выполняющие те или иные действия.

2.1 Создайте кнопки с произвольными именами.
2.2 Добавьте кнопкам Команды (без переходов) с последовательными номерами. (Например /btn1, /btn2, /btn3).
2.3 Скройте кнопки (режим «Только Админ»).
2.4 Добавьте кнопкам сообщения для показа юзерам.

3. Создание основной кнопки перебора сообщений

3.1 Создайте кнопку с нужным вам именем.
3.2 Не выходя из "Редактора Кнопок" (если вышли - зайдите снова) нажимаем инлайн кнопку настроек [ * ].
Нажимаем «Назначить Pre-Action»:

● Выбираем «Action Чисел»
Переменная для изменения: «msgcur»
Тип операции: Задать Значение
Значение: 0 (ноль)
Условие: {%msgcur% == %msgmax%}

Action будет делать «Рестарт» - сбрасывать текущее значение для начала нового цикла перебора, если в счётчик достиг максимального значения кнопок с сообщениями.

Если «Рестарт» не нужен, ВМЕСТО первого экшена нужно добавить Условие кнопки - {%msgcur% < %msgmax%} с сообщением ошибки.

● Выбираем «Action Чисел»
Переменная для изменения: «msgtuple»
Тип операции: Задать Значение
Значение: {stuple_rlist(1, %msgmax%)} - функция заполнения Кортежа.
Условие: {%msgcur% == 0}

Action создаёт список чисел в случайном порядке, диапазона от 1 до «msgmax» (максимально количество кнопок из глобальной переменной). Сработает только в новом цикле - если «msgcur» (текущее значение) равно нулю.

● Выбираем «Action Чисел»
Переменная для изменения: «msgcur»
Тип операции: Изменить Значение
Значение: 1 (один)
Условие: нет

Action "считает" показанные сообщения чтобы первый Action мог знать когда начинать следующий цикл.

● Выбираем «Action Команд»
Команда: «/btn{stuple_get(%msgtuple%, %msgcur%)}» - функция запроса данных из Кортежа.
Условие: нет

Action вызывает кнопку с сообщением по команде с номером содержащимся в Ячейке Кортежа соответствующей счётчику в переменной «msgcur».

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