QNext Cases
168 subscribers
3 photos
84 links
Download Telegram
2️⃣9️⃣ Отслеживание N сообщений подряд от одного пользователя, длиной менее L символов.
Сложность: ⭐️⭐️⭐️⭐️⭐️

Если сообщения от одного пользователя, длиной менее L символов, публикуются N раз подряд, можно установить необходимое ограничение.
(L - Максимальное количество символов в сообщении. Используем локальную переменную: msgLen)
(N - Количество сообщений подряд от одного пользователя. Используем локальную переменную: msgHow)

Например: Если пользователь опубликует в чат три сообщения подряд, длиной менее десяти символов, тогда нужно его предупредить и ограничить на 1 минуту.

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

⚙️Настройки бота🆎Профиль👥Участники чатаСоздать🆎 — Название: msgID — Тип: number

⚙️Настройки бота🆎Профиль👥Участники чатаСоздать🆎 — Название: msgNum — Тип: number

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

В 🔗Триггер общего триггера добавить 8 реакций:

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

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

⚡️loadProfile👥Участники чата

⚡️runScript — Текст:
var msghow = qnext.getValue("localVar.msgHow", 3);
var msglen = qnext.getValue("localVar.msgLen", 10);
var error = 0;
var msg = data.update.message.text;
msg = (msg === undefined) ? '—' : msg;
var msg_len = msg.length;
var msgnum = +qnext.getValue("profile.msgNum", 1);
var msg_id = data.update.message.message_id;
var msgid = +qnext.getValue("profile.msgID", 0) + 1;
if (msg_len <= msglen) {
if (msg_id == msgid) {
msgnum = (msgnum < msghow) ? msgnum + 1 : 1;
} else {
msgnum = 1;
}
if (msgnum == msghow) {
msgnum = 1;
error = 1;
}
} else {
msgnum = 1;
msgid = 0;
}
out.msghow = msghow;
out.msgid = msg_id;
out.msgnum = msgnum;
out.error = error;

⚡️profileSet👥Участники чата🆎msgID — Значение: ${scriptResult.out.msgid}

⚡️profileSet👥Участники чата🆎msgNum — Значение: ${scriptResult.out.msgnum}

⚡️groupReactions — Название: Error
🚧ОграниченияДобавить условиеnumber — Путь до значения: ${scriptResult.out.error} — Значение: = — Число: 1

⚡️message — Текст:
${scriptResult.out.msghow}-е короткое сообщения подряд!
${user.name}, получил ограничение на 1 минуту.
— Файл: Пропустить
(Установить: ☑️Ответить в чате)

⚡️restrictChatMember — Чат: ПропуститьУкажите длительность: 1 минута


↙️КомандыСоздать↙️🟠Любое Сообщение🟠Сообщение
(Для работы команды в чате, необходимо установить: ⚙️Настройки☑️Доступно в чате)

В 🔗Триггер команды добавить одну реакцию:
⚡️runTrigger✏️🔗Выберите общий триггер: NotManyMessages

↙️КомандыСоздать↙️🟠Любое Сообщение🔴Кости
(Для работы команды в чате, необходимо установить: ⚙️Настройки☑️Доступно в чате)

В 🔗Триггер команды добавить одну реакцию:
⚡️runTrigger✏️🔗Выберите общий триггер: NotManyMessages

#command #profile #JScript

Требуется помощь?
👍1
3️⃣0️⃣ Синхронизация значения параметра профиля пользователей со значения параметра профиля администратора.
Сложность: ⭐️⭐️⭐️

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

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

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

⚙️Настройки бота — 🆎Профиль — 👤Пользователи — Создать🆎 — Название: AdminStatus — Тип: text

↙️Команды — Создать↙️ — Регулярное выражение: /!admstat\s(.+)/i

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

⚡️profileSet👤Пользователи — 🆎AdminStatus — Значение: ${exec.1}

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

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

⚡️takeUsers — Напишите @username администратора

⚡️loadProfile👤Пользователи

⚡️localVarSet — Тип: Строка — Название: AdmStat — Значение: ${profile.AdminStatus.value}

⚡️profileSet👤Пользователи — 🆎AdminStatus — Значение: ${localVar.AdmStat}

⚡️loadProfile👤Пользователи

⚡️feedback — Текст:
Статус админа: ${profile.AdminStatus.value}
${user.name}, напишите свое сообщение

Работает так:
Админ в своем боте запускает команду:
!admstat Сегодня добрый, отвечу на любой вопрос!

Любой пользователь, запустив команду:
/feedback
получит форму связи с сообщением:
Статус админа: Сегодня добрый, отвечу на любой вопрос!
ИмяПользователя, напишите свое сообщение

#profile #command

Требуется помощь?
3️⃣1️⃣ Загрузка и вывод результата последней заполненной формы.
Сложность: ⭐️⭐️⭐️ (Видео)

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

Например: Пользователь заполняет форму, по команде: `/lastform` любой пользователь бота сможет посмотреть результат последней заполненной формы.

Для этого необходимо:
Произвести подготовку:
Создать форму, для примера используем форму FormBranch. Описание создания формы см. по ссылке: https://t.me/QNextCases/134

💼Переменные💼Глобальные переменныеСоздать💼 — Название: FormBranchID — Код переменной: FormBranchID — Значение: 0

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

⚡️globalVarSet — Переменная: 💼FormBranchID — Значение: ${formData.id}

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

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

⚡️loadFormResult✏️Какие результаты открыть: ${globalVar.FormBranchID}

⚡️message — Текст:
Форма: FormBranch
${formResult.fieldsText}
— Файл: Пропустить

#formResult #globalVariable #command

Требуется помощь?
✴️1️⃣ "Исключение" в bot.api

Телеграм не добавил в bot.api такой термин, как "Исключить", т.о. бот не может исключить участника чата. Соответственно, все что может бот - это забанить юзера.
Но, нам бывает это не нужно.
Что можно сделать?
У нас есть 2 варианта решения этой проблемы:

1. Забанить и потом разбанить:

⚡️kickChatMember
⚡️restrictChatMember


2. Забанить на 60 секунд:

⚡️kickChatMember на 60 секунд.

#Полезное
✴️2️⃣ Ограничение profileValue

✔️ - в профиле есть данные (любые)
✖️ - в профиле нет данных (пустой/отсутствует)
= - профиль равен значению
≠ - профиль не равен значению
< - профиль меньше заданного значения
> - профиль больше заданного значения

#useful #profile
✴️3️⃣ Проверка условий строки

Значения:

= - строка в параметре полностью совпадает с указанным выражением.

≠ - строка в параметре полностью отличается от указанного выражения.

☑️ - в строке параметра присутствует указанное выражение.

◻️ - в строке параметра отсутствует указанное выражение.

На практике:
«У Толика есть зелёный мотоцикл»

= У Толика есть зелёный мотоцикл

Петя ездит на красном велосипеде

☑️ зелёный

⬜️ красном

#useful #string
3️⃣2️⃣ Публикация сообщения в чат на 5 секунд.
Сложность: ⭐️ ⭐️ ⭐️ ⭐️ ⭐️

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

Например: В группе, по команде: /msg5 публикуется сообщение, которое будет удалено через 5 секунд.

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

❗️Скрытый контент, доступ по кнопке.

#group #command #localVar

Требуется помощь?
3️⃣3️⃣ Преобразование целого числа в строку цифровых эмодзи.
Сложность: ⭐️⭐️⭐️

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

Например: Пользователь подает команду: !numberToString 123, бот отвечает сообщением: 1️⃣2️⃣3️⃣.

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

↙️КомандыСоздать↙️ — Команда: /!numberToString\s(\d+)/i

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

⚡️localVarSet — Тип: Число — Название: parNum — Значение: ${exec.1}

⚡️runScript — Текст:
var strNum = String(qnext.getValue("localVar.parNum", "0"));
var strNew = strNum.replace(new RegExp("0", "g"), "0️⃣");
strNew = strNew.replace(new RegExp("1", "g"), "1️⃣");
strNew = strNew.replace(new RegExp("2", "g"), "2️⃣");
strNew = strNew.replace(new RegExp("3", "g"), "3️⃣");
strNew = strNew.replace(new RegExp("4", "g"), "4️⃣");
strNew = strNew.replace(new RegExp("5", "g"), "5️⃣");
strNew = strNew.replace(new RegExp("6", "g"), "6️⃣");
strNew = strNew.replace(new RegExp("7", "g"), "7️⃣");
strNew = strNew.replace(new RegExp("8", "g"), "8️⃣");
out.strNew = strNew.replace(new RegExp("9", "g"), "9️⃣");

⚡️message — Текст: ${scriptResult.out.strNew} — Файл: Пропустить

#command #JScript #localVar

Требуется помощь?
3️⃣4️⃣ Преобразование цифровых эмодзи в целое число.
Сложность: ⭐️⭐️⭐️

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

Например: Пользователь подает команду: !stringToNumber 1️⃣2️⃣3️⃣, бот отвечает сообщением: 123.

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

↙️КомандыСоздать↙️ — Команда: /!stringToNumber\s(.+)/i

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

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

⚡️runScript — Текст:
var strNum = String(qnext.getValue("localVar.parNum", "0"));
var strNew = strNum.replace(new RegExp("0️⃣", "g"), "0");
strNew = strNew.replace(new RegExp("1️⃣", "g"), "1");
strNew = strNew.replace(new RegExp("2️⃣", "g"), "2");
strNew = strNew.replace(new RegExp("3️⃣", "g"), "3");
strNew = strNew.replace(new RegExp("4️⃣", "g"), "4");
strNew = strNew.replace(new RegExp("5️⃣", "g"), "5");
strNew = strNew.replace(new RegExp("6️⃣", "g"), "6");
strNew = strNew.replace(new RegExp("7️⃣", "g"), "7");
strNew = strNew.replace(new RegExp("8️⃣", "g"), "8");
strNew = strNew.replace(new RegExp("9️⃣", "g"), "9");
out.numNew = (isNaN(Number(strNew))) ? 0 : Number(strNew);

⚡️message — Текст: ${scriptResult.out.numNew} — Файл: Пропустить

#command #JScript #localVar

Требуется помощь?
3️⃣6️⃣ Игра Камень-Ножницы-Бумага в чате с ботом.
Сложность: ⭐️⭐️⭐️⭐️⭐️

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

Например: Пользователь отправляет в чат эмодзи: , бот отвечает рандомным эмодзи и сообщением: о результате игры.

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

❗️Скрытый контент, доступ по кнопке.

#localVar #random #command

Требуется помощь?
3️⃣7️⃣ Игра - дуэль между пользователями чата.
Сложность: ⭐️⭐️

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

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

📋КонтентКаталог — Название каталога: Дуэль
В 📂ДуэльСоздать📋🆕Новый — Техническое название: victoryUser — Файл: Пропустить — Текст: 🗡 Нападающий: !{user}
🛡 Защищающийся: !{user| path: replyUser; }
Победил(а) !{user| path: replyUser; }

В
📂ДуэльСоздать📋🆕Новый — Техническое название: victoryReplyUser — Файл: Пропустить — Текст: 🗡 Нападающий: !{user}
🛡 Защищающийся: !{user| path: replyUser; }
Победил(а) !{user| path: replyUser; }

↙️КомандыСоздать↙️ — Команда: /^дуэль$/i
(Для работы команды в чате, необходимо: ⚙️Настройки☑️Доступно в чате)
🔗Триггер команды — 🚧ОграниченияДобавить условиеisReplyMessage — Значение:

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

⚡️takeReplyUser

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

⚡️timeout — Время задержки: 1000

⚡️message — Текст:
!{user} ⚔️ !{user| path: replyUser; } — Файл: Пропустить
(Установить: ☑️Ответить в чате)

⚡️timeout — Время задержки: 1000

⚡️messageПропустить — Файл: (Из набора https://t.me/addstickers/ShinobiAssassin выберите любой анимированный стикер)
(Установить: ☑️Ответить в чате)

⚡️timeout — Время задержки: 1000

⚡️loadRandomContent📂Выберите каталог: 📂Дуэль ✔️Выбрать

⚡️sendContent — Контент: Пропустить
(Установить: ☑️Ответить в чате)

#Random #command #isReplyMessage

Требуется помощь?
3️⃣8️⃣ Работа с пользователем с помощью takeMention используя логи.
Сложность: ⭐️ ⭐️ ⭐️

‼️ Не работает с ID пользователей.
Только @username или mention‼️

Для этого необходимо:
↙️КомандыСоздать↙️ — Команда: /take (.+)/i
(Для работы команды в чате, необходимо: ⚙️Настройки☑️Доступно в чате)

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

⚡️ takeMention

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

———————————————————
Выбираем необходимое действие с пользователем:

⚡️ kickChatMember - исключить пользователя

или

⚡️restrictChatMember - ограничить пользователя
———————————————————

⚡️message - Текст:
Автор команды: !{user}, цель: ${localVar.users} — Файл ☑️ Пропустить
(Установить: ☑️Ответить в чате)

#takeMention

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

1. В настройках Чаты/Каналы должно быть включено activeInGroup☑️
2. Команда должна быть ☑️Доступна в чате
3. В Реакциях должно быть включено ☑️Отвечать в группе
4. Бот должен быть администратором группы

#useful #activeInGroup
✴️5️⃣ Быстрый опрос из Контента.
Сложность: ⭐️

#useful #video #quiz
3️⃣9️⃣ Список задач в профиле.
Сложность: ⭐️ ⭐️ ⭐️

Позволяет записывать в профиль пользователя ссылку на указанное в группе сообщение. И вызывать список задач отдельных пользователей, содержащий такие ссылки.

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

- ⚙️Настройки бота - 🆎Профили - 👤Пользователи - Создать🆎 - Название: Задачи Тип: text
↙️КомандыСоздать↙️ — Команда: запись
(Для работы команды в чате, необходимо: ⚙️Настройки☑️Доступно в чате)

В 🔗 Триггер команды добавить 2 реакций:
⚡️takeReplyUser
⚡️profileAdd👤Пользователи — 🆎Задачи — !{linkToMessage| title: 📌Задача; }

Примечание: для подтверждения записи в параметр, можно в шапке триггера установить реакцию message с текстом: "Задача добавлена"

Для вывода списка задач в группе:
↙️КомандыСоздать↙️ — Команда: показать список
(Для работы команды в чате, необходимо: ⚙️Настройки☑️Доступно в чате)

В 🔗 Триггер команды добавить 3 реакций:
⚡️takeReplyUser
⚡️loadProfile - пользователи
⚡️message - Текст: ${profile.Задачи.value|notFound:Пусто;html} — Файл ☑️ Пропустить
(Установить: ☑️Ответить в чате)

Примечание:
Вместо ссылки на пост, можно записать в профиль текст сообщения, для этого используется переменная
${update.message.reply_to_message.text}.

#profile #task

Требуется помощь?
✴️6️⃣ FAQ По параметрам 🆎Профиля.

1. Лимит символов в параметре профиля типа: text = 500 символов.
2. Не рекомендуется использовать в названиях параметров профиля: символы, цифры, эмодзи.
3. Не рекомендуется использовать одинаковые названия параметров профиля.
4. Рекомендуемый формат в названии параметров профиля: sum, SumText, ProfileText.
5. Не рекомендуется использовать параметры профиля для хранения временных значений. Для хранения таких значений необходимо использовать локальные переменные.
6. Не рекомендуется использовать параметры профиля для хранения значений, одинаковых для всех пользователей бота. Для хранения таких значений необходимо использовать глобальные переменные.

#useful #Profile
4️⃣0️⃣ Реферальная система.
Сложность: ⭐️⭐️⭐️⭐️

Например: Можно приглашать других пользователей в бота по собственной реферальной ссылке

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

⚙️Настройки бота🆎Профиль👤ПользователиСоздать🆎 — Название: Referral — Тип: number (это нужно для того, чтобы считать кол-во рефералов)

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

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

⚡️message — Текст:
https://t.me/${bot.username}?start=${user.id} — Файл: Пропустить

👤Люди
👤Пользователи👥Списки пользователейСоздать👥 — Название: Referral

↙️КомандыСоздать↙️ — Регулярное выражение: /start\s?(\d+)?/i
Настройки: ☑️ Продолжить

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

⚡️groupReactions — Название: Referral

🚧
ОграниченияДобавить условие bool ${exec.1} — Значение: andinUsersList — Значение: 🚫👥Cписок пользователей Referral

⚡️takeUsers — Выражение: ${exec.1}

— — ⚡️message — Текст:
👤 !{user} присоединился по вашей реферальной ссылке — Файл: Пропустить

— —
⚡️profileAdd👤Пользователи🆎Referral — Выражение для записи параметра: 1

⚡️
addToUserList — Выберите список пользователей — 👥Referral

#profile #Referral

Требуется помощь?
👏1
4️⃣1️⃣ Глобальный триггер входа/выхода участника
Сложность: ⭐️

Например: Глобальный триггер входа/выхода участника - позволяет вам каждый раз не указывать реакции при добавление нового чата

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

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

⚡️
groupReactions — Название: Новый участник

🚧
ОграниченияДобавить условие string — Укажите путь до значения: ${update.message.chat.type} — Выберите значение: ≠ — Укажите строку с чем сравнивать: privateandbool — Укажите путь до значения: ${update.message.new_chat_member} — Значение:

⚡️deleteMessage

⚡️message
— Текст:
Добро пожаловать, !{macros.open|executeMode:contentPublication}user} ! — Файл: Пропустить
(Установить: ☑️Ответить в чате)

⚡️groupReactions — Название: Выход участника

🚧
ОграниченияДобавить условие string — Укажите путь до значения: ${update.message.chat.type} — Выберите значение: ≠ Укажите строку с чем сравнивать: privateandbool — Укажите путь до значения: ${update.message.left_chat_member} — Значение:

⚡️deleteMessage

#группа #ограничение

Требуется помощь?
4️⃣2️⃣ 3х уровневая реферальная система.
Сложность: ⭐️⭐️⭐️⭐️⭐️

Позволяет создать реферальную систему 3х уровней.

#profile #Referral

Требуется помощь?
2️⃣ СПИСОК:

3️⃣6️⃣
Игра Камень-Ножницы-Бумага в чате с ботом.
3️⃣7️⃣
Игра - дуэль между пользователями чата.
3️⃣8️⃣
Работа с пользователем с помощью takeMention используя логи.
3️⃣9️⃣ Список задач в профиле.
4️⃣0️⃣ Реферальная система.
4️⃣1️⃣ Глобальный триггер входа/выхода участника.
4️⃣2️⃣ 3х уровневая реферальная система.
4️⃣3️⃣
Выбор случайных значений из указанного диапазона чисел.
4️⃣4️⃣
Установить правила группы
4️⃣5️⃣ Универсальная капча.
4️⃣6️⃣ Писать в чате от имени бота.
4️⃣7️⃣ Текстовый декоратор.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Глобальные Триггеры:
4️⃣8️⃣ ГТ: Изменение статуса бота в чате
4️⃣9️⃣ ГТ: Изменение прав участника в чате
5️⃣0️⃣ ГТ: Отслеживание прав администратора в группе/канале
5️⃣1️⃣ ГТ: Остановка и повторный запуск бота пользователем
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5️⃣2️⃣ Загрузка медиа на https://telegra.ph
5️⃣3️⃣ Ежедневный бонус
5️⃣4️⃣ Бот знает ответ на любой вопрос
5️⃣5️⃣ Сократить длинные ссылки
5️⃣6️⃣ Игра - дуэль между пользователями чата
5️⃣7️⃣ Работа расписания по первым понедельникам каждого месяца
5️⃣8️⃣ Работа с WEB
5️⃣9️⃣ Уведомление о изменение названия группы
6️⃣0️⃣ Уведомление о начале/завершение голосового чата
6️⃣1️⃣ Вебхук - как средство общения между ботами
6️⃣2️⃣ Загрузка медиа на telegra.ph 2.0
6️⃣3️⃣ Статистика пользователей бота
6️⃣4️⃣ Работа с глобальными переменными
6️⃣5️⃣ Сортировка и публикация списка рейтинга
6️⃣6️⃣ Сортировка и публикация списка рейтинга 2.0
6️⃣7️⃣ Список администраторов группы
6️⃣8️⃣ Случайный ответ бота
6️⃣9️⃣ Http-запросы и webhook ответы
7️⃣0️⃣ Капча в личке с ботом

#️⃣ Хештеги
1️⃣ СПИСОК:
3️⃣ СПИСОК:
👍1