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|Подробнее о макросе random можно прочитать тут:
type: number;
path: localVar.rand;
defaultValue: Не известно;
case: 1; value: Одно очко;
case: 2; value: Два очка;
case: 3; value: Три очка;
}
Документация
Подробнее о макросе switch можно прочитать тут:
Документация
#random #switch
Требуется помощь?
YouTube
QNext. Случайный ответ бота
Разработка ботов на платформе https://www.tgoop.com/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/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://www.tgoop.com/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
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://www.tgoop.com/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
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}#web #webhook
${request.body.body.custom}
${request.body.body.text}
Требуется помощь?
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
— Значение: {🔘json — ☑️Собрать объект
"begin": ${update.message.message_id},
"end": ${update.message.reply_to_message.message_id}
}
—⚡️
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
Требуется помощь?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
Требуется помощь?7️⃣6️⃣ Удаление и блокировка сообщений от имени канала
❗️Бот должен быть администратором в чате❗️
⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — ➕ Добавить:
⚡️
Требуется помощь?
❗️Бот должен быть администратором в чате❗️
⚙️Настройки бота — 🔗Триггеры — 🤖Глобальный Триггер — 🔗Триггер После — ⚡️Реакции — ➕ Добавить:
⚡️
takeChat
— Пропустить ⏩🚧
Ограничения — ➕
Добавить условие: inGroup — Значение: ✅ and string — Путь до значения: ${update.message.from.username}
— Значение: = — Строка с чем сравнивать: Channel_Bot
— ⚡️deleteMessage
— ⚡️banChatSenderChat
#ограничение #groupТребуется помощь?
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
Требуется помощь?
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️⃣ СПИСОК:
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://www.tgoop.com/QNextBot
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
Больше информации и различных кейсов можно найти на нашей площадке:
https://www.tgoop.com/QNextCases
а так же задать все интересующие вопросы в чате поддержки:
https://www.tgoop.com/QNextSupport
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
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
8️⃣1️⃣ API rambler гороскопы v.2
Позволяет на русском указывать свой знак зодиака и получать гороскоп на завтра
WEB — Http-запросы — Название:
Параметры — headers — Создать:
Переменные — динамические переменные — создать —
Настройки:
— ID значения:
Триггер сборки:
⚡️
⚡️
Команды — создать —
⚡️
⚡️
Примеры команды:
/zodiac овен
/zodiac Стрелец
/zodiac ВЕСЫ
#horoscope
Позволяет на русском указывать свой знак зодиака и получать гороскоп на завтра
WEB — Http-запросы — Название:
horoscope
— Ссылка: https://horoscopes.rambler.ru/api/front/v1/horoscope/today/${localVar.zodiac}/
— Тип: get
— Ответ: json
Параметры — headers — Создать:
Content-Type
— application/json
Переменные — динамические переменные — создать —
horoscope
— horoscope
— 8 часов.Настройки:
— ID значения:
${localVar.zodiac}
Триггер сборки:
⚡️
httpRequest
— horoscope
⚡️
dynamicVarSet
— ${httpResponse.value}
Команды — создать —
/zodiac (.+)/i
Добавить следующие реакции:⚡️
localVarSet
— znak
= !{string|
path: exec.1;
type: toLowerCase;
}
⚡️
localVarSet
— zodiac
= !{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