6️⃣1️⃣ Вебхук - как средство общения между ботами
Сложность: ⭐️
Например: Позволяет отдавать информацию другим ботам по запросу
Для этого необходимо:
Bot1 — 🌐WEB — 🕸Webhooks — ➕Создать — Название webhook-а:
🔗Триггер — 🔗Триггер POST/GET — добавить одну реакцию:
Bot2 — 🌐WEB — ☸️Http-запросы — ➕Создать☸️ — Название:
Если у вас нет второго бота, где настраивать вебхук, а интересно, как будет работать, можете использовать эту ссылку для http-запроса:
Требуется помощь?
Сложность: ⭐️
Например: Позволяет отдавать информацию другим ботам по запросу
Для этого необходимо:
Bot1 — 🌐WEB — 🕸Webhooks — ➕Создать — Название webhook-а:
example (или любое другое удобное название)🔗Триггер — 🔗Триггер POST/GET — добавить одну реакцию:
⚡️webhookResponse — Ответ для webhook-аok (или любой другой удобный текст)Bot2 — 🌐WEB — ☸️Http-запросы — ➕Создать☸️ — Название:
bot — URL: https://qnext.app/bin/webhooks... — Тип: post — Формат ответа: textЕсли у вас нет второго бота, где настраивать вебхук, а интересно, как будет работать, можете использовать эту ссылку для http-запроса:
https://qnext.app/bin/webhooks/1/391/8915dOFVzWRs49Pj
#web #httpRequestТребуется помощь?
6️⃣2️⃣ Загрузка медиа на telegra.ph 2.0
Сложность: ⭐️
Описание: Бот отправляет медиа на telegra.ph и присылает прямую ссылку на файл.
Пример: @MediaDowBot
Для этого необходимо:
↙️Команды — ➕Создать↙️ — 🟠Любое Сообщение — 🟠Сообщение
В 🔗Триггер добавить следующие реакции:
⚡️
Важно:
— Реакция работает только с фото и видео.
— Ограничения Телеграфа очень строгие - ~20мб на файл. Загрузить фильм не получится.
#command
Требуется помощь?
Сложность: ⭐️
Описание: Бот отправляет медиа на telegra.ph и присылает прямую ссылку на файл.
Пример: @MediaDowBot
Для этого необходимо:
↙️Команды — ➕Создать↙️ — 🟠Любое Сообщение — 🟠Сообщение
В 🔗Триггер добавить следующие реакции:
⚡️
uploadToTelegraph — Путь к значению: ${update.message}
⚡️ sendMessage — Текст:${uploadResult.link|notFound: error} — Файл: ➖ПропуститьВажно:
— Реакция работает только с фото и видео.
— Ограничения Телеграфа очень строгие - ~20мб на файл. Загрузить фильм не получится.
#command
Требуется помощь?
6️⃣3️⃣ Статистика пользователей бота
Сложность: ⭐️
Для этого необходимо:
В 🔗Триггер добавить одну реакцию:
⚡️
#ограничение #command
Требуется помощь?
Сложность: ⭐️
Для этого необходимо:
↙️Команды — ➕Создать↙️ — Команда: /statistics
🚧Ограничения — ➕Добавить условие — isAdmin — Выберите значение: ✅В 🔗Триггер добавить одну реакцию:
⚡️
sendMessage — Текст:📊Статистика
Всего пользователей: !{usersCount| type: all;}
Пользователь запустил бота в привате: !{usersCount| type: all; status: started;}
Пользователь заблокировал бота: !{usersCount| type: all; status: blocked;}
Аккаунт пользователя удален Телеграмом: !{usersCount| type: all; status: deleted;} — Файл: ➖Пропустить#ограничение #command
Требуется помощь?
6️⃣4️⃣ Работа с глобальными переменными
Сложность: ⭐️
Описание: случайный ответ от бота, используя глобальную переменную
Для этого необходимо:
💼Переменные — 🧳Глобальные переменные — ➕Создать🧳 — Название:
⚡️
#command #JScript #GlobalVariable
Требуется помощь?
Сложность: ⭐️
Описание: случайный ответ от бота, используя глобальную переменную
Для этого необходимо:
💼Переменные — 🧳Глобальные переменные — ➕Создать🧳 — Название:
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. Количество пользователей в списке регулируется переменной
Для этого необходимо:
Иметь ранее созданный 🆎Профиль 👤Пользователя c именем:
🌐WEB — ☸️Http-запросы — ➕Создать☸️ — Название:
🔧Параметры — body — ➕Создать — Ключ параметра:
В 🔗 Триггер команды добавить три реакций:
⚡️
⚡️
⚡️
—⚡️
—⚡️
⚡️
(Установить: ☑️ Ответить в чате)
❗️ Эксперимент.
💰 Платный кейс.
📩 Доступ по подписке.
#profile #localVar #httpRequest
Требуется помощь?
Сложность: ⭐️ ⭐️⭐️⭐️ ⭐️
Создание команды для публикации в группу отсортированного списка рейтинга участников группы.
❗️Ограничения:
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 именем:
↙️Команды — ➕Создать↙️ — Регулярное выражение:
В 🔗Триггер команды добавить следующие реакции:
⚡️
— ⚡️
✏️ Количество: 10 — Сортировка: ⬇️По значению
— ⚡️
#profile #localVar #command
Требуется помощь?
Сложность: ⭐️
Создание команды для публикации в группу отсортированного списка рейтинга.
Для этого необходимо:
Иметь ранее созданный 🎒Профиль — 👤Пользователи 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️⃣ Список администраторов группы
Сложность: ⭐️
Публикация в чате списка админов чата.
Для этого необходимо:
↙️Команды — ➕Создать
В 🔗Триггер команды добавить следующие реакции:
— —
#group #localVar #command
Требуется помощь?
Сложность: ⭐️
Публикация в чате списка админов чата.
Для этого необходимо:
↙️Команды — ➕Создать
↙️ — Регулярное выражение: /^@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️⃣ Случайный ответ бота
Сложность: ⭐️
Позволяет боту отвечать на команды в случайном порядке.
Для этого необходимо:
↙️Команды — ➕Добавить↙️ — Ввести название команды.
🔗Триггер — ⚡️Реакции — ➕Добавить:
Документация
Подробнее о макросе switch можно прочитать тут:
Документация
#random #switch
Требуется помощь?
Сложность: ⭐️
Позволяет боту отвечать на команды в случайном порядке.
Для этого необходимо:
↙️Команды — ➕Добавить↙️ — Ввести название команды.
🔗Триггер — ⚡️Реакции — ➕Добавить:
⚡️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
Требуется помощь?
YouTube
QNext. Случайный ответ бота
Разработка ботов на платформе https://t.me/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
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
Требуется помощь?
Сложность: ⭐️
Разбор 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
Требуется помощь?
YouTube
QNext. Http-запросы и webhook
Разработка ботов на платформе https://t.me/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
👍1
7️⃣0️⃣ Капча в личке
Сложность: ⭐️
Прохождение капчи в личке бота с дальнейшим подтверждением.
‼️Важно: кейс возможно реализовать только при условии создания ссылки с включенной функции "Заявки на вступление"
Для этого необходимо:
🕹Меню — ➕ Создать🕹 — Название: Капча — Текст:
⚙️Настройки меню:
— Значение 1:
— Значение 2:
🕹Капча - ➕ Добавить кнопку — Тип: callback — Название: нажми на меня — ➖ Пропустить.
🔗Триггер Раздела — ⚡️Реакции — добавить следующие реакции:
⚡️
~~~~~~~~~~~~~~~~~~~~~~~~~~~
(опционально)
— ⚡️
~~~~~~~~~~~~~~~~~~~~~~~~~~~
⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — Добавить следующие реакции:
and
— ⚡️
— — ⚡️
Сложность: ⭐️
Прохождение капчи в личке бота с дальнейшим подтверждением.
‼️Важно: кейс возможно реализовать только при условии создания ссылки с включенной функции "Заявки на вступление"
Для этого необходимо:
🕹Меню — ➕ Создать🕹 — Название: Капча — Текст:
!{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)⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — Добавить следующие реакции:
⚡️ groupReactions — actions
🚧Ограничения — ➕Добавить условие — bool — Путь до значения: ${update.chat_join_request.invite_link} — Значение: ✅and
number — Путь до значения: chat.id — Значение: = — ID вашего чата— ⚡️
takeUsers — ${update.chat_join_request.from.id} — — ⚡️
sendMenu — Капча
Требуется помощь?YouTube
QNext. приветствие пользователя в привате с ботом
Разработка ботов на платформе https://t.me/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
👍1
7️⃣1️⃣ Передача любых данных между ботами с помощью Http запросов и webhook ответов.
Для передачи данных с помощью этого кейса, нам потребуется подготовка в виде реализации этого кейса:
6️⃣9️⃣ Http-запросы и webhook ответы
Для этого необходимо:
В БОТЕ 1 (Откуда будем передавать данные):
↙️Команды — ➕Добавить↙️ — Текст:
⚡️
— ⚡️
— ⚡️
— ⚡️
🌐WEB — ☸️Http-запросы — Выбираем http-запрос — Параметры — body — Ключ:
В БОТЕ 2 (Куда будем передавать данные):
🌐WEB — 🕸Webhooks — Ранее созданный Webhook — 🔗Триггеры — 🔗Триггер POST/GET — ⚡️Реакции — добавить реакции:
⚡️
Требуется помощь?
Для передачи данных с помощью этого кейса, нам потребуется подготовка в виде реализации этого кейса:
6️⃣9️⃣ Http-запросы и webhook ответы
Для этого необходимо:
В БОТЕ 1 (Откуда будем передавать данные):
↙️Команды — ➕Добавить↙️ — Текст:
/^\/request\s(.+)$/i
🔗Триггер — ⚡️Реакции — ➕Добавить:⚡️
groupReactions — actions
— ⚡️ 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Требуется помощь?
👏1
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 ☑️ Собрать объект
⚡️
sendMenu — dynamicMenu
Требуется помощь?7️⃣3️⃣ Удаление всех сообщений в чате между командой и reply сообщением
Сложность: ⭐️
По команде
❗️ВНИМАНИЕ при выполнение команды присутствуют два ограничения:
1. Не будут удалены сообщения которым более 48 часов.
2. Если количество удаляемых сообщений более 200, удалены будут только последние 200 сообщений.
Для этого необходимо:
В 🔗Триггер команды добавить следующие реакции:
☑️if-mode — 🔘✅
—⚡️
—⚡️
☑️if-mode — 🔘🚫
—⚡️
#isReplyMessage #JScript
Требуется помощь?
Сложность: ⭐️
По команде
/purge отправленной в ответ на любое сообщение в чате, удалить все сообщение которые находятся между этими сообщениями включая и эти сообщения.❗️ВНИМАНИЕ при выполнение команды присутствуют два ограничения:
1. Не будут удалены сообщения которым более 48 часов.
2. Если количество удаляемых сообщений более 200, удалены будут только последние 200 сообщений.
Для этого необходимо:
↙️Команды — ➕Создать↙️ — Команда: /purge
⚙️Настройки — ☑️Доступно в чатеВ 🔗Триггер команды добавить следующие реакции:
⚡️ groupReactions — isReplyMsg
🚧Ограничения — ➕Добавить условие — 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️⃣ Позволяет пользователям добавлять произвольный текст в контент.
По нажатию на кнопку позволяет пользователям вводить и добавлять в контент произвольный текст.
💼Переменные — 🆎Профиль — 👥 Пользователи — ➕Создать — Название профиля:
⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — ➕Создать🔗 — Название:
🔗 Триггеры — ⚡️Реакции:
☑️if-mode — 🔘✅
—
— —
— —
—
☑️if-mode — 🔘🚫
—
Статичный текст
✏️ Описание - 🔗 Триггер Визуализации —
— —
🆗Кнопки — ➕Добавить кнопку — тип: callback — Название:
🔗 Триггер кнопки — ⚡️Реакции:
⚡️
⚡️
По нажатию на кнопку позволяет пользователям вводить и добавлять в контент произвольный текст.
💼Переменные — 🆎Профиль — 👥 Пользователи — ➕Создать — Название профиля:
CT — тип профиля: Строка ⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — ➕Создать🔗 — Название:
editText — Параметр: Пропустить 🔗 Триггеры — ⚡️Реакции:
⚡️ groupReactions — actions
🚧Ограничения — ➕Добавить условие — 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 ⚡️
runTrigger — editText
Требуется помощь?👍1
7️⃣5️⃣ Голосование с возможностью указать произвольный параметр
Позволяет во время голосования указывать произвольный текст который будет отражен в теле контента.
💼Переменные — 🆎Профиль — 👥 Пользователи — ➕Создать — Название профиля:
❗️ Копируем ID профиля
⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — ➕Создать🔗 — Название:
🔗 Триггеры — ⚡️Реакции:
☑️if-mode — 🔘✅
—
☑️if-mode — 🔘🚫
—
📋Контент — ➕Создать📋 — 🆕Новый — Тех. название:
❗️место "0000" - ставим ID своего профиля
🆗Кнопки — ➕Добавить кнопку — тип: callback — Название:
🔗 Триггер кнопки — ⚡️Реакции:
⚡️
⚡️
—
— ⚡️
— ⚡️
Позволяет во время голосования указывать произвольный текст который будет отражен в теле контента.
💼Переменные — 🆎Профиль — 👥 Пользователи — ➕Создать — Название профиля:
customTitle — тип профиля: Строка ❗️ Копируем ID профиля
⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — ➕Создать🔗 — Название:
voteProfile — Параметр: Пропустить 🔗 Триггеры — ⚡️Реакции:
⚡️ groupReactions — actions
🚧Ограничения — ➕Добавить условие — bool — Путь: ${update.message.text} — Значение: ✅☑️if-mode — 🔘✅
—
⚡️ profileSet — Пользователи — customTitle — ${update.message.text}
— ⚡️ voteAdd — voteProfile
— ⚡️ 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 — Название:
Добавить текст 🔗 Триггер кнопки — ⚡️Реакции:
⚡️
loadVote — voteProfile ⚡️
groupReactions - voteCancel 🚧Ограничения — ➕Добавить условие — number — Путь до значения: ${vote.result} = 4—
⚡️voteCancel
⚡️ groupReactions - voteAdd🚧Ограничения — ➕Добавить условие — number — Путь до значения: ${vote.result} = 0— ⚡️
bindTrigger — ✅ — ОТ — voteProfile — ⚡️
runTrigger — voteProfile
Требуется помощь?👍1
7️⃣6️⃣ Удаление и блокировка сообщений от имени канала
❗️Бот должен быть администратором в чате❗️
⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — ➕ Добавить:
⚡️
Требуется помощь?
❗️Бот должен быть администратором в чате❗️
⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — ➕ Добавить:
⚡️
takeChat — Пропустить ⏩🚧Ограничения — ➕Добавить условие: inGroup — Значение: ✅ and string — Путь до значения: ${update.message.from.username} — Значение: = — Строка с чем сравнивать: Channel_Bot
— ⚡️deleteMessage
— ⚡️banChatSenderChat
#ограничение #groupТребуется помощь?
👍5👏1
7️⃣7️⃣ Капча с проверкой кодового слова
Позволяет проверять нового участника чата с помощью кодового слова
Для этого необходимо:
💼Переменные — 🆎Профиль — 👥 Пользователи — ➕Создать — Название профиля:
⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — ➕Создать🔗 — Название:
🔗 Триггеры — ⚡️Реакции:
⚡️
— ⚡️
— — ⚡️
— ⚡️
— — ⚡️
(опционально)
— — ⚡️
— ⚡️
📅Расписание — ⏳Отложенные действия — ➕Создать⏳ — Тип: Относительное время — Укажите длительность:
В 🔗Триггер ОД⏳⏱
⚡️
— ⚡️
⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер До — ⚡️Реакции — ➕ Добавить:
⚡️
and
regex — рег. выражение:
— ⚡️
— ⚡️
— ⚡️
— — ⚡️
#capcha
Требуется помощь?
Позволяет проверять нового участника чата с помощью кодового слова
Для этого необходимо:
💼Переменные — 🆎Профиль — 👥 Пользователи — ➕Создать — Название профиля:
msgid — тип профиля: число ⚙️Настройки бота — 🔗 Триггеры — 🔗Общие Триггеры — ➕Создать🔗 — Название:
CapchaCheck — Параметр: Пропустить 🔗 Триггеры — ⚡️Реакции:
⚡️
localVarSet — Строка — Название: key — Значение: [кодовое слово]
⚡️groupReactions — actions
🚧Ограничения — ➕Добавить условие — 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}
— — ⚡️userActionStop — capcha — — ⚡️
bindTrigger — ❌ — CapchaCheck (опционально)
— — ⚡️
sendMessage — Текст: ${user.name} добро пожаловать
☑️if-mode — 🔘🚫 — ⚡️
deleteMessage — ID сообщения — ${update.message.message_id}
☑️Ответить в чате📅Расписание — ⏳Отложенные действия — ➕Создать⏳ — Тип: Относительное время — Укажите длительность:
10 00 — Название: capcha В 🔗Триггер ОД⏳⏱
capcha — ⚡️ реакции: ⚡️
takeChat — ${chat.id}
— ⚡️
banChatMember
— ⚡️deleteMessage — ID сообщения — ${localVar.msgid} ⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер До — ⚡️Реакции — ➕ Добавить:
⚡️
groupReactions — joinNewUser
🚧Ограничения — ➕Добавить условие — regex — рег. выражение: (left|kicked) — значение: ✅ — путь: ${update.chat_member.old_chat_member.status} and
regex — рег. выражение:
(member) — значение: ✅ — путь: ${update.chat_member.new_chat_member.status} — ⚡️
bindTrigger — ✅ — CapchaCheck
— ⚡️restrictChatMember — Пропустить — отметить ☑️ "Разрешить отправлять сообщения"— ⚡️
sendMessage — Текст: Ваше приветствие + [кодовое слово] — ⚡️
localVarSet — Число — Название: msgid — Значение: ${reactionResult.response.message_id}
— ⚡️takeUsers — ${user.id} — — ⚡️
profileAdd — Пользователи — msgid — ${localVar.msgid}
— — ⚡️userActionStart — capcha #capcha
Требуется помощь?
👍1👎1
3️⃣ СПИСОК:
7️⃣1️⃣ Передача любых данных между ботами с помощью Http запросов и webhook ответов.
7️⃣2️⃣ Создание меню с кнопками через переменные
7️⃣3️⃣ Удаление всех сообщений в чате между командой и reply сообщением
7️⃣4️⃣ Позволяет пользователям добавлять произвольный текст в контент.
7️⃣5️⃣ Голосование с возможностью указать произвольный параметр.
7️⃣6️⃣ Удаление и блокировка сообщений от имени канала
7️⃣7️⃣ Капча с проверкой кодового слова
7️⃣8️⃣ Обработка заявок с помощью workflow
7️⃣9️⃣ Выдача уникального неповторяющегося ответа.
#️⃣ Хештеги
1️⃣ СПИСОК:
2️⃣ СПИСОК:
7️⃣1️⃣ Передача любых данных между ботами с помощью Http запросов и webhook ответов.
7️⃣2️⃣ Создание меню с кнопками через переменные
7️⃣3️⃣ Удаление всех сообщений в чате между командой и reply сообщением
7️⃣4️⃣ Позволяет пользователям добавлять произвольный текст в контент.
7️⃣5️⃣ Голосование с возможностью указать произвольный параметр.
7️⃣6️⃣ Удаление и блокировка сообщений от имени канала
7️⃣7️⃣ Капча с проверкой кодового слова
7️⃣8️⃣ Обработка заявок с помощью workflow
7️⃣9️⃣ Выдача уникального неповторяющегося ответа.
#️⃣ Хештеги
1️⃣ СПИСОК:
2️⃣ СПИСОК:
👍2👎1
7️⃣8️⃣ Обработка заявок с помощью workflow
Сложность: ⭐️ ⭐️
Позволяет собирать заявки от пользователя через форму, и с помощью workflow обрабатывать их.
Для этого нам потребуется:
Подключенный к боту чат или канал, с включенной функцией ☑️activeInGroup
Формы — создать — workflow (или придумать свое) — пропустить
Поля:
создать — Тип: text — pole1 — Вопрос1
создать — Тип: text — pole2 — Вопрос2
создать — Тип: text — pole3 — Вопрос3
Workflow — создать — анкеты
Настройки — ☑️ notificationDisable
⏺WF состояния — Создать — starter — пропустить — пропустить — 🚫
▶️ Сделать стартовым
Триггер состояния — реакции:
⚡️
— ⚡️
— ☑️disableWebPreview
— ☑️disableNotification
— 👮
WF состояния — Создать — approve — пропустить — пропустить — 🚫
WF состояния — Создать — decline — пропустить — пропустить — 🚫
WF связи — создать — starter — approve — ✅ Принять — ✅ — 🚫
Триггер перехода — реакции:
⚡️
— ⚡️
— ☑️disableWebPreview
— ☑️disableNotification
WF связи — создать — starter — decline — 🚫 Отклонить — ✅ — 🚫
Триггер перехода — реакции:
⚡️
— ⚡️
— ☑️disableWebPreview
— ☑️disableNotification
Формы — workflow — Настройки — workflow — анкеты.
#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
Требуется помощь?
YouTube
QNext. Workflow
Разработка ботов на платформе https://t.me/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://t.me/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://t.me/QNextSupport
👍6👎1
7️⃣9️⃣ Выдача уникального неповторяющегося ответа.
Сложность: ⭐️ ⭐️
Позволяет выдавать пользователю уникальный неповторяющийся набор ответов.
‼️ Кейс отличается от всех предыдущих, так как объясняет сам концепт реализации задачи. Доработка под свои задачи лежит на ваших плечах. Читайте внимательно и подробно все описания‼️
Для этого нам потребуется:
————————————————
Генерация уникального списка выдачи ответа
💼Переменные — Профиль — Пользователи — Создать — Название профиля:
🕹меню — создать — случайный ответ — произвольное описание.
➕ Добавить кнопку — callback —
🔗Триггеры — Триггеры Раздела — реакции:
⚡️
⚡️
— ⚡️
— ⚡️
— — ⚡️
🚧Ограничения — bool — 🚫 —
— — ⚡️
🚧Ограничения — bool — ✅ —
— ⚡️
————————————————
Выдача ответа пользователю.
‼️ Здесь доступны 2 варианта решения задачи:‼️
1. Упрощенный, но ограниченный суммарно 3900 символов.
2. Расширенный, ограничен только вашей ленью
Упрощенный вариант:
⚡️
(здесь использовано 310 символов)
Расширенный вариант:
⚡️
⚡️
Сложность: ⭐️ ⭐️
Позволяет выдавать пользователю уникальный неповторяющийся набор ответов.
‼️ Кейс отличается от всех предыдущих, так как объясняет сам концепт реализации задачи. Доработка под свои задачи лежит на ваших плечах. Читайте внимательно и подробно все описания‼️
Для этого нам потребуется:
————————————————
Генерация уникального списка выдачи ответа
💼Переменные — Профиль — Пользователи — Создать — Название профиля:
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👍1👎1
8️⃣0️⃣ API rambler для получения информации.
Кейс позволяет запрашивать данные с помощью Rambler API и получения различной информации.
На выбор нам доступны 3 API:
1. API гороскопы
2. API приметы на каждый день
3. API цитаты
————————————————
Общий гороскоп
Для этого нам потребуется:
WEB — Http-запросы — Название:
Параметры — headers — Создать:
Команды — Создать —
⚡️
⚡️
Общий гороскоп
Гороскоп:
Гороскоп определенного знака:
Для этого нам потребуется:
WEB — Http-запросы — Название:
список элементов:
Команды — Создать —
⚡️
⚡️
Знак:
#horoscope
Кейс позволяет запрашивать данные с помощью Rambler API и получения различной информации.
На выбор нам доступны 3 API:
1. API гороскопы
https://horoscopes.rambler.ru/api/front/v1/horoscope/today/ +elements2. 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-Type — application/json Команды — Создать —
/request
Добавить реакции:⚡️
httpRequest — horoscope ⚡️
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-Type — application/json Команды — Создать —
/request
Добавить реакции:⚡️
httpRequest — horoscope ⚡️
sendMessage:Знак:
${httpResponse.value.sign.name}
Гороскоп: ${httpResponse.value.text} #horoscope
👎2