Сохранение списка пользователей в беседе

Видеодемонстрация настроек

В примере мы будем реагировать на вступление в одну беседу.

Для теста нам нужна созданная беседы от сообщества и бот-модератор, для реакции на вступление. Если вы не знаете как их создать, то смотрите эту инструкцию.

В примере у нас будет беседа в сообществе «Тесты АП», а бот-модератор в сообществе «Андрей Горячих. Эксперт по чат ботам».

Команда «Вход нового пользователя»

Важно! В примере будет показан пример на одном аккаунте в одной беседе, а дальше вы докрутите так, как нужно.

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

Пример проверки нахождения построчно ID в ресурсе
Пример проверки нахождения построчно ID в ресурсе

Действие:

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

отправим ему ссообщение с текстом:

Ура, вижу в беседе!
Пример действия
Пример действия

Проверяем.

Все работает
Все работает

Вариант получения списка пользователей через Песочницу от Никиты Кузнецова

Пример демонстрации

Получение ID всех участников беседы VK. Новый способ от Никиты Кузнецова.

  1. Получить 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. Взять ключ доступа сообщества

Проще всего зайти в Автопилот — Сообщества — Настройки — Настройки подключения и скопировать содержимое поля "Ключ доступа сообщества"

Пример ключа сообщества
Пример ключа сообщества
  1. Перейти на сайт https://dev.vk.com/method/execute

Промотать в самый конец страницы, где песочница

  1. Где нарисован ключик, должен быть режим "Выбрать вручную".
  1. В поле access_token вставить ключ доступа сообщества из п.1
Здесь указывается access_token сообщества
Здесь указывается 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;
  1. В этом скрипте надо заменить значения group_id и peer_id в первых двух строчках на значения, полученные в п.1. Остальной код менять не надо.
  1. Нажать "выполнить"
Пример ID пользлователей
Пример ID пользлователей
  1. Чтобы скопировать результат, нажимаем значок в правом верхнем углу песочницы. Результат лежит в поле response.
  1. Если нужны не запятые, а числа в столбик, просто вставляем результат в Блокнот.

Открываем Правка — Заменить.

В верхнее поле пишем запятую, в нижнее — ничего.

Запускаем.

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

Важно: этот метод вернёт и людей, и ботов. Чтобы убрать ботов из списка, есть два способа:

— вручную уберите отрицательные значения (это боты)

— в команде Автопилота поставьте ограничение: числовая переменная %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% с текстом:

Готово!
Пример действия
Пример действия

Тестируем.

Все отработало
Все отработало
В ресурсе ID пользователей, но не сообществ.
В ресурсе ID пользователей, но не сообществ.

Все отлично работает.

Творческих взлётов и успешного внедрения.

Вернуться к списку инструкций
388 views·14 shares