Telegram Web
6️⃣3️⃣ Статистика пользователей бота
Сложность: ⭐️

Для этого необходимо:

↙️КомандыСоздать↙️ — Команда: /statistics
🚧
ОграниченияДобавить условие isAdmin — Выберите значение:

В 🔗Триггер добавить одну реакцию:

⚡️ sendMessage — Текст:
📊Статистика
Всего пользователей: !{usersCount| type: all;}
Пользователь запустил бота в привате: !{usersCount| type: all; status: started;}
Пользователь заблокировал бота: !{usersCount| type: all; status: blocked;}
Аккаунт пользователя удален Телеграмом: !{usersCount| type: all; status: deleted;}
— Файл: Пропустить

#ограничение #command

Требуется помощь?
6️⃣4️⃣ Работа с глобальными переменными
Сложность: ⭐️

Описание: случайный ответ от бота, используя глобальную переменную

Для этого необходимо:

💼Переменные🧳Глобальные переменныеСоздать🧳 — Название: random — Код переменной: text — Значение:
текст1
текст2
текст3

↙️
КомандыСоздать↙️ — Команда: /random

В 🔗Триггер команды добавить следующие реакции:

⚡️loadGlobalVariable

⚡️runScript
— Текст скрипта:
function getRandomNum(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
var globVar = qnext.getValue('globalVar.text','');
var array = globVar.split(qnext.constants.NewLine);
var text = getRandomNum(0, array.length);
exports.word = array[text];

⚡️ sendMessage — Текст:
${localVar.word} — Файл: Пропустить

#command #JScript #GlobalVariable

Требуется помощь?
6️⃣5️⃣ Сортировка и публикация списка рейтинга
Сложность: ⭐️ ⭐️⭐️⭐️ ⭐️

Создание команды для публикации в группу отсортированного списка рейтинга участников группы.
❗️Ограничения:
1. В списке могут состоять не более 100 пользователей.
2. В список не попадают пользователи с нулевым рейтингом.
3. Количество пользователей в списке регулируется переменной sort.qantStr

Например: В группе, по команде: !ratings создать и опубликовать список пользователей, у которых профиль пользователя rating больше нуля.

Для этого необходимо:

Иметь ранее созданный 🆎Профиль 👤Пользователя c именем: rating и ранее установленными значениями.

🌐WEB☸️Http-запросыСоздать☸️ — Название: sortList — Ссылка: https://qnext.app/bin/webhooks/3428/334/AqPMFyFmMr9IqyLD — Тип: post — Формат ответа: json

🔧Параметры
bodyСоздать — Ключ параметра: sort — Значение параметра: ${localVar.sort}

🔧ПараметрыheadersСоздать — Ключ параметра: Content-Type — Значение параметра: application/json

↙️КомандыСоздать↙️ — Регулярное выражение: /!ratings/i
(Установить: ⚙️Настройки☑️ Доступно в чате)

В 🔗 Триггер команды добавить три реакций:

⚡️localVarSet — Тип: Число — Название: sort.qantStr — Значение: 10☑️ Собрать объект

⚡️
localVarSet — Тип: Любой объект — Название: sort.bot — Значение: {
"creatorId": ${bot.creatorId},
"ownerId": ${bot.ownerId},
"userId": ${bot.userId},
"username": "${bot.username}"
}
🔘 json☑️ Собрать объект

⚡️takeUserList — Выберите список пользователей: 👥Укажите свой список

⚡️localVarAdd — Тип: Список — Название: sort.listName — Значение: ${targetUser.name}☑️ Собрать объект

⚡️localVarAdd — Тип: Список — Название: sort.listNum — Значение: !{profile| name: rating; sourceType: user; path: targetUser; defaultValue: 0}☑️ Собрать объект

⚡️httpRequest — Выберите http-запрос: sortList

⚡️sendMessage — Текст: Рейтинг участников: ${httpResponse.value.sortStr} — Файл: Пропустить
(Установить: ☑️ Ответить в чате)

❗️ Эксперимент.
💰 Платный кейс.
📩 Доступ по подписке.

#profile #localVar #httpRequest

Требуется помощь?
6️⃣6️⃣ Сортировка и публикация списка рейтинга 2.0
Сложность: ⭐️

Создание команды для публикации в группу отсортированного списка рейтинга.

Для этого необходимо:

Иметь ранее созданный 🎒Профиль👤Пользователи c именем: Points и ранее установленными значениями.

↙️КомандыСоздать↙️ — Регулярное выражение: /^(!|/)(top|топ)$/i
(Установить: ⚙️Настройки☑️ Доступно в чате)

В 🔗Триггер команды добавить следующие реакции:

⚡️ takeChat Пропустить

⚡️findProfileValue👤Пользователи🎒Points — Значение: >= — Выражение для записи параметра: 1
✏️ Количество: 10 — Сортировка: ⬇️По значению

⚡️ for — Название параметра: ${findValues}

— — ⚡️takeUsers — Пользователь: ${forItem.value.userId}

— — — ⚡️localVarAdd — Тип: Список — Название: rating — Значение: !{html| type: br;}${forItem.num}. ${targetUser.name|encode;} — ${forItem.value.value} 📊

⚡️sendMessage — Текст: ${localVar.rating|notFound: text;} — Файл: Пропустить

#profile #localVar #command

Требуется помощь?
6️⃣7️⃣ Список администраторов группы
Сложность: ⭐️

Публикация в чате списка админов чата.

Для этого необходимо:
↙️КомандыСоздать↙️ — Регулярное выражение: /^@admin$/i
(Установить: ⚙️Настройки☑️ Доступно в чате)

В 🔗Триггер команды добавить следующие реакции:

⚡️ takeChat Пропустить

⚡️takeChatAdmins Пропустить

— — ⚡️localVarAdd — Тип: Список — Название: userList — Значение: !{user| type: link; path: targetUser; encode; }

🚧
ОграниченияДобавить условие bool — Укажите путь до значения: ${targetUser.isBot} — Значение: 🚫

⚡️sendMessage — Текст: ${localVar.userList|notFound: text;} — Файл: Пропустить

#group #localVar #command

Требуется помощь?
6️⃣8️⃣ Случайный ответ бота
Сложность
: ⭐️

Позволяет боту отвечать на команды в случайном порядке.

Для этого необходимо:

↙️Команды — Добавить↙️ — Ввести название команды.

🔗Триггер — ⚡️Реакции — Добавить:

⚡️localVarSet — Тип: Число — Название: rand — Значение:
!{random|
type: number;
min: 1;
max: 3;
}


⚡️sendMessage — Текст:
!{switch|
type: number;
path: localVar.rand;
defaultValue: Не известно;

case: 1; value: Одно очко;
case: 2; value: Два очка;
case: 3; value: Три очка;
}


Подробнее о макросе random можно прочитать тут:
Документация

Подробнее о макросе switch можно прочитать тут:
Документация

#random #switch

Требуется помощь?
6️⃣9️⃣ Http-запросы и webhook ответы
Сложность: ⭐️

Разбор http-запросов и webhook ответов на примере общения и передачи данных между ботами.

Важно! ‼️ Для кейса нужны 2 бота‼️

Для этого необходимо:

Бот 2 (куда будем делать запросы)

🌐WEB — 🕸Webhooks — Создать🕸 — вести название — Настройки — Скопировать ссылку.

🔗Триггеры — 🔗Триггер POST/GET — ⚡️Реакции — добавить реакцию:

⚡️ webhookResponse — Текст: 200

Бот 1 (откуда будут делаться запросы)

🌐WEB — ☸️Http-запросы — Создать☸️ — Ввести название — Вставить скопированную ранее ссылку — Тип: post — Ответ: json.

🔧Параметры — headers — Создать — Ключ: Content-Type — Значение: application/json

🌐WEB — ☸️Http-запросы — Выбираем http-запрос — проверить.

Должны получить такой ответ:

Ответ
ok: true
value: 200

Теперь настроим передачу данных.

Бот 1 (откуда будут делаться запросы)

🌐WEB — ☸️Http-запросы — Выбираем http-запрос — Параметры — body — Ключ: userid — Значение: ${user.id}

Бот 2 (куда будем делать запросы)

🌐WEB — 🕸Webhooks — Выбираем созданный webhook — 🔗Триггеры — 🔗Триггер POST/GET — ⚡️Реакции — добавить реакции:

⚡️ takeUsers — ${request.body.userid}

⚡️ localVarSet — Любой объект — user = ${targetUser}

⚡️ webhookResponse — Ответ: ${localVar.user}

#httpRequest #webhook

Требуется помощь?
7️⃣0️⃣ Капча в личке
Сложность
: ⭐️

Прохождение капчи в личке бота с дальнейшим подтверждением.

‼️Важно: кейс возможно реализовать только при условии создания ссылки с включенной функции "Заявки на вступление"

Для этого необходимо:

🕹Меню — Создать🕹 — Название: Капча — Текст:
!{user} вы подали заявку на вступление в чат ${update.chat_join_request.chat.title}. Для подтверждения вступления, нажмите на кнопку ниже.

⚙️Настройки меню:
— Значение 1: ${update.chat_join_request.chat.id}☑️🔄
— Значение 2: ${update.chat_join_request.from.id}☑️🔄

🕹Капча - Добавить кнопку — Тип: callback — Название: нажми на меня Пропустить.

🔗Триггер Раздела — ⚡️Реакции — добавить следующие реакции:

⚡️ takeChat${buttonsVar.v1}

⚡️ localVarSet — Тип: Строка — Название: chatTitle — Значение: ${targetChat.title}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
(опционально)
⚡️ sendMessageТекст: !{user} вступил в чат
~~~~~~~~~~~~~~~~~~~~~~~~~~~
⚡️ approveChatJoinRequest — Чаты: ${buttonsVar.v1} — Пользователь: ${buttonsVar.v2}

⚡️ sendMessage
— Текст: !{user} Добро пожаловать в чат ${localVar.chatTitle}


👥Чаты/Каналы — Выбираем нужный чат — копируем ID (пример: -1001153029287)

⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — Добавить следующие реакции:

⚡️ groupReactionsactions
🚧
ОграниченияДобавить условиеbool — Путь до значения: ${update.chat_join_request.invite_link} — Значение:
and
number — Путь до значения: chat.id — Значение: = — ID вашего чата

⚡️ takeUsers${update.chat_join_request.from.id}

— — ⚡️ sendMenuКапча

Требуется помощь?
7️⃣1️⃣ Передача любых данных между ботами с помощью Http запросов и webhook ответов.

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

6️⃣9️⃣ Http-запросы и webhook ответы

Для этого необходимо:

В БОТЕ 1 (Откуда будем передавать данные):

↙️Команды — Добавить↙️ — Текст: /^\/request\s(.+)$/i

🔗Триггер — ⚡️Реакции — Добавить:

⚡️ groupReactionsactions

⚡️ localVarSet — Тип: Строка — Название: action.custom — Значение: любой кастомный текст☑️ Собрать объект

⚡️ localVarSet — Тип: Строка — Название: action.text — Значение: ${exec.1}☑️ Собрать объект

⚡️ localVarSet — Тип: Число — Название: action.user — Значение: ${user.id}☑️ Собрать объект

⚡️ httpRequest — Выбрать HTTP-запрос: Запрос в бота 2


🌐WEB — ☸️Http-запросы — Выбираем http-запрос — Параметры — body — Ключ: body — Значение: ${localVar.action}

В БОТЕ 2 (Куда будем передавать данные):

🌐WEB — 🕸Webhooks — Ранее созданный Webhook — 🔗Триггеры — 🔗Триггер POST/GET — ⚡️Реакции — добавить реакции:

⚡️ takeUsers${request.body.body.user}

⚡️ sendMessage — Текст:

${request.body.body.user}
${request.body.body.custom}
${request.body.body.text}


#web #webhook

Требуется помощь?
7️⃣2️⃣ Создание меню с кнопками через переменные.

Позволяет в одном созданном меню отображать разное содержимое как с медиа, так и без.

Для этого необходимо:

🕹Меню — Создать🕹 — Название: dynamicMenu — Текст:
!{attachment| path: localVar.file; }
${localVar.text|notFound: made by QNext; }

Добавить кнопку — Тип: url — Название: ${localVar.name
|notFound: QNext;}
— Ссылка: ${localVar.url
|notFound: qnext.app;}

↙️Команды — Добавить↙️ — Текст:
/menu ([^,]+), ([^,]+), ([^,]+)$/

🔗Триггер — ⚡️Реакции — Добавить:

⚡️ localVarSet — Тип: Строка — Название: text — Значение: ${exec.1}

⚡️ localVarSet — Тип: Строка — Название: name — Значение: ${exec.2}

⚡️ localVarSet — Тип: Строка — Название: url — Значение: ${exec.3}

⚡️ groupReactios - file
🚧Ограничения — Добавить условие — bool — путь до значения: ${update.message.photo} — Значение:

⚡️ localVarSet — Тип: Строка — Название: file.fileId — Значение: ${update.message.photo.0.file_id}
☑️ Собрать объект

⚡️ localVarSet — Тип: Строка — Название: file.type — Значение: photo
☑️ Собрать объект

⚡️ sendMenudynamicMenu

Требуется помощь?
7️⃣3️⃣ Удаление всех сообщений в чате между командой и reply сообщением
Сложность
: ⭐️

По команде /purge отправленной в ответ на любое сообщение в чате, удалить все сообщение которые находятся между этими сообщениями включая и эти сообщения.

❗️ВНИМАНИЕ при выполнение команды присутствуют два ограничения:
1. Не будут удалены сообщения которым более 48 часов.
2. Если количество удаляемых сообщений более 200, удалены будут только последние 200 сообщений.

Для этого необходимо:

↙️КомандыСоздать↙️ — Команда: /purge
⚙️
Настройки☑️Доступно в чате

В 🔗Триггер команды добавить следующие реакции:

⚡️ groupReactionsisReplyMsg
🚧
ОграниченияДобавить условие — isReplyMessage — Значение:

☑️if-mode🔘
⚡️ localVarSet — Тип: Любой объект — Название: idMsg — Значение:
{
"begin": ${update.message.message_id},
"end": ${update.message.reply_to_message.message_id}
}
🔘json☑️Собрать объект

⚡️ runScript — Текст скрипта:
var idMsg = qnext.getValue('localVar.idMsg');
idMsg.end = (idMsg.begin - idMsg.end > 200) ? idMsg.begin - 199 : idMsg.end;
idMsg.list = [];
for (let i = idMsg.begin; i >= idMsg.end; i--) {
idMsg.count = idMsg.list.push(i);
}
exports.idMsg = idMsg;

⚡️ for — Название параметра: ${localVar.idMsg.list}

— —⚡️ deleteMessage — Id сообщения: ${forItem.value}☑️Ответить в чате

☑️if-mode🔘🚫
⚡️ deleteMessage☑️Ответить в чате

#isReplyMessage #JScript

Требуется помощь?
7️⃣4️⃣ Позволяет пользователям добавлять произвольный текст в контент.

По нажатию на кнопку позволяет пользователям вводить и добавлять в контент произвольный текст.

💼Переменные — 🆎Профиль👥 Пользователи — Создать — Название профиля: CT — тип профиля: Строка

⚙️Настройки бота🔗 Триггеры — 🔗Общие Триггеры — Создать🔗 — Название: editText — Параметр: Пропустить

🔗 Триггеры — ⚡️Реакции:

⚡️ groupReactionsactions
🚧
ОграниченияДобавить условие — bool — Путь: ${update.message.text} — Значение:

☑️if-mode🔘

⚡️ takeUsers (юзернейм вашего бота, прим: @Qnext_Examplebot)

— — ⚡️ profileAdd — Пользователи - CT — ${update.message.text}!{html| type: br; }

— — ⚡️localVarSet — Строка — Название: text — Значение: !{profile| name: CT; }

⚡️ refreshContent — Выбрать контент: myContent

⚡️ bindTrigger

☑️if-mode🔘🚫

⚡️ alert — Текст: Введите текст

📋Контент — Создать📋🆕Новый — Тех. название: myContent — Файл: пропустить — Текст:
Статичный текст

${localVar.text|notFound: none; }


✏️ Описание - 🔗 Триггер Визуализации — ⚡️ Реакции:

⚡️ takeUsers (юзернейм вашего бота, прим: @Qnext_Examplebot)

— — ⚡️localVarSet — Строка — Название: text — Значение: !{profile| name: CT; }

🆗Кнопки — Добавить кнопку — тип: callback — Название: Добавить текст

🔗 Триггер кнопки — ⚡️Реакции:

⚡️ bindTrigger — ОТ — editText

⚡️ runTriggereditText

Требуется помощь?
7️⃣5️⃣ Голосование с возможностью указать произвольный параметр

Позволяет во время голосования указывать произвольный текст который будет отражен в теле контента.

💼Переменные — 🆎Профиль👥 Пользователи — Создать — Название профиля: customTitle — тип профиля: Строка
❗️ Копируем ID профиля

⚙️Настройки бота🔗 Триггеры — 🔗Общие Триггеры — Создать🔗 — Название: voteProfile — Параметр: Пропустить

🔗 Триггеры — ⚡️Реакции:

⚡️ groupReactionsactions
🚧
ОграниченияДобавить условие — bool — Путь: ${update.message.text} — Значение:

☑️if-mode🔘

⚡️ profileSet — Пользователи — customTitle${update.message.text}

⚡️ voteAddvoteProfile

⚡️ refreshContent — Выбрать контент: voteProfile

⚡️ DeleteMessage

⚡️ bindTrigger

☑️if-mode🔘🚫

⚡️ alert — Текст: Введите текст

📋Контент — Создать📋🆕Новый — Тех. название: voteProfile — Файл: пропустить — Текст:
Статичный текст

!{vote| type: users;
userPrefix: ✔️;
userView: name;
userLink: default;
profileId: 0000;
userTemplate: $user -> $profile;
splitterUser: \n;

}

❗️место "0000" - ставим ID своего профиля

🆗Кнопки — Добавить кнопку — тип: callback — Название: Добавить текст

🔗 Триггер кнопки — ⚡️Реакции:

⚡️ loadVotevoteProfile

⚡️ groupReactions - voteCancel
🚧ОграниченияДобавить условие — number — Путь до значения: ${vote.result} = 4

⚡️voteCancel

⚡️ groupReactions - voteAdd
🚧ОграниченияДобавить условие — number — Путь до значения: ${vote.result} = 0

⚡️ bindTrigger — ОТ — voteProfile

⚡️ runTriggervoteProfile

Требуется помощь?
7️⃣6️⃣ Удаление и блокировка сообщений от имени канала

❗️Бот должен быть администратором в чате❗️

⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — Добавить:

⚡️takeChat — Пропустить

🚧ОграниченияДобавить условие: inGroup — Значение: and string — Путь до значения: ${update.message.from.username} — Значение: = — Строка с чем сравнивать: Channel_Bot

⚡️deleteMessage

⚡️banChatSenderChat

#ограничение #group

Требуется помощь?
7️⃣7️⃣ Капча с проверкой кодового слова

Позволяет проверять нового участника чата с помощью кодового слова

Для этого необходимо:

💼Переменные — 🆎Профиль — 👥 Пользователи — Создать — Название профиля: msgid — тип профиля: число


⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — Создать🔗 — Название: CapchaCheck — Параметр: Пропустить

🔗 Триггеры — ⚡️Реакции:
⚡️localVarSet — Строка — Название: key — Значение: [кодовое слово]

⚡️groupReactionsactions
🚧Ограничения — Добавить условие — string — ${localVar.key} = ${update.message.text}

☑️if-mode — 🔘
⚡️takeChat${chat.id}

— — ⚡️localVarSet — Число — Название: msgid — Значение: ${reactionResult.response.message_id}

— — ⚡️deleteMessage — ID сообщения — ${localVar.msgid}

— — ⚡️deleteMessage — ID сообщения — ${update.message.message_id}

— —⚡️restrictChatMemberПропустить — отметить ☑️ разрешения которые выдать участнику

⚡️takeUsers${user.id}

— — ⚡️userActionStopcapcha

— — ⚡️bindTriggerCapchaCheck

(опционально)
— — ⚡️sendMessage — Текст: ${user.name} добро пожаловать

☑️if-mode — 🔘🚫
⚡️deleteMessage — ID сообщения — ${update.message.message_id}
☑️Ответить в чате


📅Расписание — Отложенные действия — Создать — Тип: Относительное время — Укажите длительность: 10 00 — Название: capcha

В 🔗Триггер ОД capcha⚡️ реакции:
⚡️takeChat${chat.id}

⚡️banChatMember

⚡️deleteMessage — ID сообщения — ${localVar.msgid}


⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер До — ⚡️Реакции — Добавить:

⚡️groupReactionsjoinNewUser
🚧Ограничения — Добавить условие — regex — рег. выражение: (left|kicked) — значение: — путь: ${update.chat_member.old_chat_member.status}
and
regex — рег. выражение: (member) — значение: — путь: ${update.chat_member.new_chat_member.status}

⚡️bindTriggerCapchaCheck

⚡️restrictChatMember — Пропустить — отметить ☑️ "Разрешить отправлять сообщения"

⚡️sendMessage — Текст: Ваше приветствие + [кодовое слово]

⚡️localVarSet — Число — Название: msgid — Значение: ${reactionResult.response.message_id}

⚡️takeUsers${user.id}

— — ⚡️profileAdd — Пользователи — msgid${localVar.msgid}

— — ⚡️userActionStartcapcha

#capcha

Требуется помощь?
7️⃣8️⃣ Обработка заявок с помощью workflow
Сложность: ⭐️ ⭐️

Позволяет собирать заявки от пользователя через форму, и с помощью workflow обрабатывать их.

Для этого нам потребуется:

Подключенный к боту чат или канал, с включенной функцией ☑️activeInGroup

Формы — создать — workflow (или придумать свое) — пропустить

Поля:
создать — Тип: text — pole1 — Вопрос1
создать — Тип: text — pole2 — Вопрос2
создать — Тип: text — pole3 — Вопрос3

Workflow — создать — анкеты

Настройки — ☑️ notificationDisable

WF состояния — Создать — starter — пропустить — пропустить — 🚫

▶️ Сделать стартовым

Триггер состояния — реакции:

⚡️ takeChat — ранее созданный нами чат

⚡️ formResult — текст:
❗️Новая анкета:
Автор: !{user}
Текст:
${formResult.fieldsText}


☑️disableWebPreview
☑️disableNotification
👮

WF состояния — Создать — approve — пропустить — пропустить — 🚫

WF состояния — Создать — decline — пропустить — пропустить — 🚫

WF связи — создать — starter — approve — Принять — 🚫

Триггер перехода — реакции:

⚡️ deleteMessage

⚡️ takeAuthorUser

⚡️ sendMessage:

Модератор ${user.name} принял вашу заявку

⚡️ takeChat — ранее созданный нами чат

⚡️ formResult — текст:
Анкета одобрена администратором !{user}
Текст:
${formResult.fieldsText}


☑️disableWebPreview
☑️disableNotification

WF связи — создать — starter — decline — 🚫 Отклонить — 🚫

Триггер перехода — реакции:

⚡️ deleteMessage

⚡️ takeAuthorUser

⚡️ sendMessage:

Модератор ${user.name} отклонил вашу заявку

⚡️ takeChat — ранее созданный нами чат

⚡️ formResult — текст:
🚫 Анкета отклонена администратором !{user}
Текст:
${formResult.fieldsText}


☑️disableWebPreview
☑️disableNotification

Формы — workflow — Настройки — workflow — анкеты.

#workflow

Требуется помощь?
7️⃣9️⃣ Выдача уникального неповторяющегося ответа.
Сложность: ⭐️ ⭐️

Позволяет выдавать пользователю уникальный неповторяющийся набор ответов.

‼️ Кейс отличается от всех предыдущих, так как объясняет сам концепт реализации задачи. Доработка под свои задачи лежит на ваших плечах. Читайте внимательно и подробно все описания‼️

Для этого нам потребуется:

————————————————

Генерация уникального списка выдачи ответа

💼Переменные — Профиль — Пользователи — Создать — Название профиля: randAnswer — тип профиля: объект

🕹меню — создать — случайный ответ — произвольное описание.

Добавить кнопку — callback — Обновить — пропустить

🔗Триггеры — Триггеры Раздела — реакции:

⚡️localVarSet — Тип: Число — Название: minNum — Значение: 1

⚡️localVarSet — Тип: Число — Название: maxNum — Значение: 11

⚡️localVarSet
— Тип: Число — Название: quanNum — Значение: 10

⚡️ runScript
function getRND(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
var minNum = qnext.getValue("localVar.minNum", 0);
var maxNum = qnext.getValue("localVar.maxNum", 0);
var quanNum = qnext.getValue("localVar.quanNum", 0);
var numRes = [];
if ((maxNum - minNum) >= quanNum) {
while (numRes.length < quanNum) {
var rndNum = getRND(minNum, maxNum);
var found = false;
for (var i = 0; i < numRes.length; i++) {
if (numRes[i] === rndNum){
found = true;
break;
}
}
if (!found) { numRes[numRes.length]=rndNum; }
}
} else {
numRes[0] = -1;
}
exports.numRes = numRes;

⚡️profileSet — пользователи — randAnswer${localVar.numRes}

⚡️ sendMessage — Текст: Порядок обновлен

————————————————

Выбор ответа из списка для выдачи, и удаление использованного ответа из списка

⚡️ groupReactionsОбработка списка

⚡️ localVarSet — список — list = !{profile| name: randAnswer; }

⚡️ for${localVar.list}

— — ⚡️ localVarAdd — список — list = ${forItem.value}
🚧Ограничения — bool — 🚫${forItem.first}

— — ⚡️ localVarAdd — число — answer = ${forItem.value}
🚧Ограничения — bool — ${forItem.first}

⚡️ profileSet — пользователи — randAnswer${localVar.list}

————————————————

Выдача ответа пользователю.
‼️ Здесь доступны 2 варианта решения задачи:‼️
1. Упрощенный, но ограниченный суммарно 3900 символов.
2. Расширенный, ограничен только вашей ленью

Упрощенный вариант:

⚡️ sendMessage — Текст: Больше цифр нет :(
(здесь использовано 310 символов)

Расширенный вариант:


⚡️ sendMessage — Текст: Ответ один
🚧Ограничения — number — ${localVar.answer} = 1

⚡️ sendMessage — Текст: Ответ два
🚧Ограничения — number — ${localVar.answer} = 2

⚡️ sendMessage — Текст: Ответ три
🚧Ограничения — number — ${localVar.answer} = 3
8️⃣0️⃣ API rambler для получения информации.

Кейс позволяет запрашивать данные с помощью Rambler API и получения различной информации.

На выбор нам доступны 3 API:
1. API гороскопы
https://horoscopes.rambler.ru/api/front/v1/horoscope/today/ +elements
2. API приметы на каждый день
https://horoscopes.rambler.ru/api/front/v1/horoscope/today/
3. API цитаты
http://api.forismatic.com/api/1.0/?method=getQuote&lang=ru&format=json&json=?

————————————————
Общий гороскоп

Для этого нам потребуется:

WEB — Http-запросы — Название: horoscope — Ссылка: https://horoscopes.rambler.ru/api/front/v1/horoscope/today/ — Тип: get — Ответ: json

Параметры — headers — Создать:
Content-Typeapplication/json

Команды — Создать — /request

Добавить реакции:

⚡️ httpRequesthoroscope

⚡️ sendMessage:
Общий гороскоп
Гороскоп: ${httpResponse.value.text}

————————————————
Гороскоп определенного знака:

Для этого нам потребуется:

WEB — Http-запросы — Название: horoscope — Ссылка: https://horoscopes.rambler.ru/api/front/v1/horoscope/today/+elements — Тип: get — Ответ: json

список элементов:
aries / taurus / cancer / leo / virgo / libra / scorpio / sagittarius / capricorn / aquarius / pisces

Параметры — headers — Создать:
Content-Typeapplication/json

Команды — Создать — /request

Добавить реакции:

⚡️ httpRequesthoroscope

⚡️ sendMessage:
Знак: ${httpResponse.value.sign.name}
Гороскоп: ${httpResponse.value.text}

#horoscope
8️⃣1️⃣ API rambler гороскопы v.2

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

WEB — Http-запросы — Название: horoscope — Ссылка: https://horoscopes.rambler.ru/api/front/v1/horoscope/today/${localVar.zodiac}/ — Тип: get — Ответ: json

Параметры — headers — Создать:
Content-Typeapplication/json

Переменные — динамические переменные — создать — horoscopehoroscope — 8 часов.
Настройки:
— ID значения: ${localVar.zodiac}

Триггер сборки:

⚡️ httpRequesthoroscope

⚡️dynamicVarSet${httpResponse.value}


Команды — создать — /zodiac (.+)/i

Добавить следующие реакции:

⚡️ localVarSetznak = !{string|
path: exec.1;
type: toLowerCase;
}


⚡️ localVarSetzodiac = !{switch|
type: string;
path: localVar.znak;
defaultValue: aries;

case: овен; value: aries;
case: телец; value: taurus;
case: близнецы; value: gemini;
case: рак; value: cancer;
case: лев; value: leo;
case: дева; value: virgo;
case: весы; value: libra;
case: скорпион; value: scorpio;
case: стрелец; value: sagittarius;
case: козерог; value: capricorn;
case: водолей; value: aquarius;
case: рыбы; value: pisces;
}

⚡️ loadDynamicVar
horoscope

⚡️ sendMessage:
Знак: ${dynamicVar.horoscope.sign.name} (${dynamicVar.horoscope.sign.slug})
Гороскоп:
${dynamicVar.horoscope.text}


Примеры команды:
/zodiac овен
/zodiac Стрелец
/zodiac ВЕСЫ

#horoscope
2025/01/27 02:07:13
Back to Top
HTML Embed Code: