Сохранение списка пользователей в беседе
В примере мы будем реагировать на вступление в одну беседу.
Для теста нам нужна созданная беседы от сообщества и бот-модератор, для реакции на вступление. Если вы не знаете как их создать, то смотрите эту инструкцию.
В примере у нас будет беседа в сообществе «Тесты АП», а бот-модератор в сообществе «Андрей Горячих. Эксперт по чат ботам».
Команда «Вход нового пользователя»
Важно! В примере будет показан пример на одном аккаунте в одной беседе, а дальше вы докрутите так, как нужно.
1) Для вступления в беседу используем событие: «Вступает в беседу» с ботом-модератором т.к. беседа созданная от сообщества не реагирует на вступление.

2) Для реакции в строго определенных беседах добавляем условие переменная %peer_id%
совпадает с ID беседы. О том, как ее получить смотрите в соответствующей инструкции.

Действия:
1) Для создания списка можем создать список либо событием «Добавлен (подписался) на список VK» в выключенной команде, либо сделать список в разделе «Списки игроков - для VK». В примере номер списка (для вашего удобства его можно сделать рейтингом): 1600965

2) Чтобы добавить игрока в список добавляем действие «Добавить в список / Сменить уровень списка» в список с номером 1600965
и уровень поставить равным 1
Важно! У вас номер списка будет другой, будьте внимательны.

3) Если вы хотите вместо списка использовать ресурсы, то используйте действие «Создать / Изменить ресурс» с названием беседа18
(название может быть любым) и для содержимого добавить строки и убрать повторяющиеся
со значением:
%vk_id%

Важно! По желанию вы можете использовать либо списки, либо ресурсы, либо и то и то, в команде специально показаны оба варианта.
Команда «Выход нового пользователя»
Важно! В примере будет показан пример на одном аккаунте в одной беседе, а дальше вы докрутите так, как нужно. Если у вас уже есть данное событие, то можете его вставить в команду по номеру.
Событие:
1) Для выхода из беседы используем событие «Покинул беседу» с ботом-модератором т.к. беседа созданная от сообщества не реагирует на выход.

2) Для реакции в строго определенных беседах добавляем условие переменная %peer_id%
совпадает с ID беседы. Данное условие можно скопировать из команды выше и вставить по номеру.

Действия:
1) Для исключения игрока из списка используем действие «Исключить из списка» с номером 1600965
тогда при выходе из беседы в списке пользователя уже не будет.

Важно! Если вы хотите добавлять, а не удалять игрока из списка воспользуйтесь новым списком и действием «Добавить в список / Сменить уровень списка»
2) Для удаление ID игрока из ресурса используйте действие «Создать / Изменить ресурс» с названием беседа18
(название может быть любым) и для содержимого удалить строки
со значением:
%vk_id%

Команда «Проверка на нахождение в беседе»
Важно! Эта команда сделана для примера демонстрации проверки нахождения пользователя в списке. Вы можете докрутить ее по своему усмотрению.
Событие:
1) В примере мы будем реагировать событием «Написал сообщение в VK» с текстом: Я в беседе
а в условиях проверять уровень списка, либо ресурса, и если пользователь в нем есть, то запускать команду, иначе можно в реакции на невыполнение сообщить пользователю, что он не в беседе (реакция на невыполнение съест милю).

2) Для проверки нахождения в списке используем условие «Уровень списка» 1600965
равен 1
иначе в реакции на невыполнение пишем текст:
Вы не в беседе, %first_name%!

Для проверки нахождения пользователя в ресурсе событие можно вставить по номеру, а условие будет другое. Если у вас в ресурсе ID записаны через запятую то добавляете условие числовая переменная
{array}{get}беседа18|name|body{/get}|%vk_id%|num{/array}
больше 0
Наша задача понять находится ли этот ID в содержимом ресурса, созданного ранее. У нас это ресурс с названием «беседа18».
Специальной функцией получаем содержимое этого ресурса: {get}беседа18|name|body{/get}
. Расшифровка: найти ресурс (get) с названием (name) равным «беседа18» и получить его содержимое (body).
Но это еще не все. Надеюсь, вы еще помните, что содержимое там в виде массива. Поэтому для обработки массива воспользуемся другой динамической переменной — {array}.
В примерах находим возможность получить номер элемента массива по значению этого элемента: {array}%array%|Элемент массива|num{/array}
. А также то, что итоговое значение номера «0» — это то же самое, что «номер не найден»
Вместо Элемент массива
вставим ID игрока— %vk_id%
. Вместо %array%
вставим массив айдишек игроков в беседе. А это, как помните, переменная: {get}беседа18|name|body{/get}
.
В итоге получится:
{array}{get}беседа18|name|body{/get}|%vk_id%|num{/array}
Именно это я и вставил в условие числовая переменная. Оно должно быть больше 0
, т.е. ID игрока есть в ресурсе.
На этапе тестирования, рекомендую добавить «реакцию на невыполнение» в условие. Которая будет срабатывать если условие не выполнилось. И писать вам об этом в личку от имени вашего сообщества. Рекомендую также туда прописать переменную. Чтобы сразу понимать ее значение. А лучше как-то так
ID: %vk_id%
Содержимое ресурса: {get}беседа18|name|body{/get}
Номер элемента массива: {array}{get}беседа|name|body{/get}|%vk_id%|num{/array}
Важно! Если ID у вас записаны построчно, то условие будет таким:
{array}{get}беседа|name|body{/get}|%vk_id%|num|col{/array}
больше 0

Действие:
1) Для примера если игрок в беседе, то действием «Отправить сообщение в VK»
отправим ему ссообщение с текстом:
Ура, вижу в беседе!

Проверяем.

Вариант получения списка пользователей через Песочницу от Никиты Кузнецова
Получение ID всех участников беседы VK. Новый способ от Никиты Кузнецова.
- Получить
peer_id
беседы относительно вашего бота-сообщества
Если беседа создана сообществом, то всё просто. Перейти в сообщество — Сообщения — нужная беседа. В строке браузера будет запись:
https://vk.com/gim41103148?sel=c14
К цифре 14 прибавляем 2 миллиарда. Получаем:
group_id
= 41103148
peer_id
= 2000000014
Это ID сообщества и ID беседы относительно этого сообщества соответственно.
Если беседа создана пользователем, то делайте по инструкции
https://vk.com/@skyautome-conversations-01-connecting-the-bot
1.1. Взять ключ доступа сообщества
Проще всего зайти в Автопилот — Сообщества — Настройки — Настройки подключения и скопировать содержимое поля "Ключ доступа сообщества"

- Перейти на сайт https://dev.vk.com/method/execute
Промотать в самый конец страницы, где песочница
- Где нарисован ключик, должен быть режим "Выбрать вручную".
- В поле
access_token
вставить ключ доступа сообщества из п.1

- В поле code вставить скрипт ниже
var group_id = 41103148;
var peer_id = 2000000014;
var people = API.messages.getConversationMembers(
{"group_id": group_id,
"peer_id": peer_id
})[email protected]_id;
return people;
- В этом скрипте надо заменить значения group_id и peer_id в первых двух строчках на значения, полученные в п.1. Остальной код менять не надо.
- Нажать "выполнить"

- Чтобы скопировать результат, нажимаем значок в правом верхнем углу песочницы. Результат лежит в поле response.
- Если нужны не запятые, а числа в столбик, просто вставляем результат в Блокнот.
Открываем Правка — Заменить.
В верхнее поле пишем запятую, в нижнее — ничего.
Запускаем.
Полученный список можно использовать для массового запуска по всем участникам беседы.
Важно: этот метод вернёт и людей, и ботов. Чтобы убрать ботов из списка, есть два способа:
— вручную уберите отрицательные значения (это боты)
— в команде Автопилота поставьте ограничение: числовая переменная %vk_id%
больше 0
Вариант получения списка пользователей через API от Сергея Климова
Получение ID всех участников беседы VK через бота.
Команда «Получение cписка участников»
Важно! Для получения списка участников чата бот должен состоять в данной беседе.
Событие:
1) Для примера мы будем делать событие «Написать сообщение в VK» с текстом равным:
дай ID

2) Для того, чтобы команду мог запустить только сотрудник аккаунта, добавляем соответствующее условие «Сотрудник аккаунта»

Действия:
1) Для запроса мы будем отправляем POST/GET запрос аналогичным действием на адрес
https://api.vk.com/method/messages.getConversationMembers
с параметрами, указанными в документации.
access_token
=ключ доступа сообщества
Проще всего зайти в Автопилот — Сообщества — Настройки — Настройки подключения и скопировать содержимое поля "Ключ доступа сообщества"

peer_id
=ID беседы относительно бота
v
=5.131
group_id
=ID сообщества

2) Для сохранения данных мы будем использовать действие «Создать /изменить ресурс» с названием беседа18
(название может быть любым) и для содержимого устанавливаем значение:
{reg}%response%~~"member_id":(\d+)~~all-1{/reg}
Здесь с помощью функции {reg}
достаем ID пользователей (не сообществ) и запишем в ресурс. Как работать с функцией {reg}
можно увидеть здесь

3) Опционально: действием «Отправить сообщение в VK» отправляем сообщение в беседу с %peer_id%
с текстом:
Готово!

Тестируем.


Все отлично работает.
Творческих взлётов и успешного внедрения.
Вернуться к списку инструкций