EnotPRO Logo EnotPRO

loadRandomContent

loadRandomContent — загружает случайный контент из списка доступных в текущий контекст выполнения.

📝 Назначение

Используется для выбора случайного контента из всех созданных в разделе /adm → Публикации. После загрузки данные становятся доступны через переменную ${content}.

Когда это нужно:

  • Рандомная рассылка (разные контенты разным пользователям)
  • Игровые механики (случайный факт, случайный вопрос)
  • Ротация рекламных объявлений
  • A/B тестирование разных вариантов сообщений
  • «Кнопка удачи» — случайный контент по запросу

💡 Совет: Комбинируйте с sendContent для отправки случайного контента пользователю.

📍 Результат

После выполнения реакции данные случайно выбранного контента становятся доступны в переменной:

${content}

Структура ${content}:

Поле Тип Описание
id String ID контента
name String Техническое название контента
text String Текст сообщения
file Object Медиафайл (или массив для альбома)
buttons Array Кнопки меню
web_preview Object Настройки превью ссылок
auto_update Boolean Флаг автообновления
disable_notification Boolean Тихая отправка
protect_content Boolean Защита от пересылки
show_caption_above_media Boolean Подпись над медиа
no_memory Boolean Режим «Не запоминать»
posts Array История публикаций (связи)
posts_limit Integer Лимит истории
check_post Object Превью-сообщение («Проверить»)

🎲 Как выбирается случайный контент

Параметр Поведение
Список не указан Выбор из всех контентов бота (равномерная вероятность)
Список указан Выбор только из указанных контентов (равномерная вероятность)
В списке один контент Всегда возвращается он (100% вероятность)
Контент(ы) не существуют Реакция вызовет ошибку

⚠️ Важно: Выбор происходит случайным образом при каждом вызове. Нет гарантии, что разные пользователи не получат один и тот же контент.

🧪 Примеры использования

Пример 1: Отправка случайного контента пользователю

Задача: При команде /random отправлять пользователю случайный контент из всех доступных.

Обработчик: Команда /random

Реакции:

  1. loadRandomContent (список не указан)
  2. sendContent → Контент: ${content.name}, Чат: ${chat.id}

Пример 2: Случайный факт из подборки

Задача: Отправлять случайный «факт дня» из списка контентов fact_01, fact_02, fact_03.

Обработчик: Команда /fact

Реакции:

  1. loadRandomContentСписок контентов: fact_01, fact_02, fact_03
  2. sendContent → Контент: ${content.name}, Чат: ${chat.id}

Пример 3: A/B тестирование (50/50)

Задача: 50% пользователей получают вариант A, 50% — вариант B.

Обработчик: Команда /test

Реакции:

  1. loadRandomContentСписок контентов: variant_a, variant_b
  2. sendContent → Контент: ${content.name}, Чат: ${chat.id}
  3. SendMessage → (в технический чат) текст: Пользователю ${user.id} отправлен вариант: ${content.name}

Пример 4: Ротация рекламных объявлений

Задача: При каждом новом пользователе отправлять случайное рекламное объявление.

Обработчик: Команда /start

Реакции:

  1. loadRandomContentСписок контентов: ad_winter, ad_spring, ad_summer, ad_autumn
  2. sendContent → Контент: ${content.name}, Чат: ${user.id}

Пример 5: Кнопка «Удачи» (с исключением текущего)

Задача: При нажатии кнопки отправлять случайный контент, отличный от текущего.

Обработчик: Нажатие кнопки

Реакции:

  1. loadContent → загрузить текущий контент (чтобы знать его ID)
  2. loadRandomContentСписок контентов: content_1, content_2, content_3 (без текущего)
  3. sendContent → Контент: ${content.name}, Чат: ${chat.id}

Пример 6: Использование в отложенном действии

Задача: Через час после подписки отправить случайный приветственный контент.

Реакции (при подписке):

  1. StartTaskОтложенное действие: welcome_random, Отсрочка: 1h

В отложенном действии:

  1. loadRandomContent (список не указан)
  2. sendContent → Контент: ${content.name}, Чат: ${user.id}

🔄 Особенности поведения

Ситуация Поведение
Нет ни одного контента Реакция вызовет ошибку
В списке указан несуществующий контент Реакция вызовет ошибку
Один контент в списке Всегда выбирается он
Один контент всего Всегда выбирается он
Список пуст (но выбран) Реакция вызовет ошибку

📊 Пример распределения

При выборе из 4 контентов с равной вероятностью:

Контент Вероятность
content_1 25%
content_2 25%
content_3 25%
content_4 25%

💡 Совет: Для неравномерного распределения (например, 70/30) используйте несколько вызовов loadRandomContent с разными наборами и условиями.

🔗 Связанные реакции

Реакция Назначение
LoadContent Загрузить конкретный контент
SendContent Отправить контент
UpdateContent Обновить опубликованные копии

🔗 Связанные разделы

Раздел Описание
Публикации (Content) Создание и управление контентом
Макрос random Альтернативный способ случайного выбора

🔗 Быстрая навигация

  • Вверх
  • Параметры
  • Результат
  • Как выбирается случайный контент
  • Примеры
  • Особенности

🔗 Ссылка на официальную документацию

(Функция реализована на стороне платформы EnotPro, не является методом Telegram Bot API)

© 2025 EnotPRO. Все права защищены.