На MacOS можно установить интерпретатор PHP по этой инструкции https://www.php.net/manual/ru/install.macosx.packages.php
На Windows самым простым способом будет установить XAMPP https://www.apachefriends.org/ru/index.html
Для того, чтобы загрузить этот шаблон, можно склонировать репозиторий через git, а если вы этого не умеете, то можно просто скачать архив
Можно воспользоваться любой средой разработки. Я предпочитаю PHPStorm, но подойдет даже простой текстовый редактор.
Для запуска проекта необходимо запустить из консоли index.php
, находясь в директории проекта. На MacOS, к примеру, следующим образом:
php index.php
Для того, чтобы можно было обрабатывать события, которые происходят в сообществе, и отправлять сообщения от имени этого сообщество, требуются некоторые действия. Для этого необходимо перейти в упраление сообществом и сделать следующее:
- Нужно включить сообщения сообщества.
![0](https://private-user-images.githubusercontent.com/11661233/289385231-7fe8e746-f65e-4f87-8452-54e4542e3bb1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyMzEtN2ZlOGU3NDYtZjY1ZS00Zjg3LTg0NTItNTRlNDU0MmUzYmIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmMjdmYjJkNmY4Y2RkOTc1MGEzM2VkYWU5MWVkZmI2OTM5ZGYzM2Q2MjRmMDk2NzY5NWJmN2M3ZDUxNTEzM2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.K0DDD2tlQBsoreXX2QJHmRW2axFNPRiIKigxv6w6OI0)
- После этого нужно разрешить сообществу отправлять себе сообщения. Это можно сделать на странице сообщества.
![6](https://private-user-images.githubusercontent.com/11661233/289385242-7f8ff4e7-4f42-4c9f-9b82-6b3cded5a184.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyNDItN2Y4ZmY0ZTctNGY0Mi00YzlmLTliODItNmIzY2RlZDVhMTg0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI4NzY4NGE2OGE1NGJjMzFiMjQ5YWNjYzg0MTFkOTUwYjQzYTI3YTdhM2Q1YjYzNmU5MGMyOWM3NjNmMDU5NjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.OfkxQbuWxtIL-EIvWbOLQvJm9U9Gj84R7I4wmQKmapw)
- Возвращаемся в управление сообществом, и переходим в раздел "Работа с API".
![1](https://private-user-images.githubusercontent.com/11661233/289385252-3a6f0c52-ee2c-4b15-ac46-56d9aff277a9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyNTItM2E2ZjBjNTItZWUyYy00YjE1LWFjNDYtNTZkOWFmZjI3N2E5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRmZGY4YzA5MjU5YjMzY2ZiOWQzMWJkYmU3YjQ5ZWI1YWE2ODhiNGUzNzQ0OWViZGI1ZTNiMDQzYWFlNTQwOGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.o_dRfdIkDnjQCqSh4EHRSZcIrHhQcWUoH8uA-Ly9Lgs)
- Создаём ключ для доступа к API, указываем права на управление сообществом и сообщения сообщества.
![2](https://private-user-images.githubusercontent.com/11661233/289385261-372d69ad-0210-46a8-9cc1-a04fc6aa1052.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyNjEtMzcyZDY5YWQtMDIxMC00NmE4LTljYzEtYTA0ZmM2YWExMDUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI3YmJkYTA5ZGUzOGJiOGJlMTY1MzQ1Mzg1OGY0MGZmODFhNjcyZWE0NmU5NjYyNmE5ODQ5MzdiMDEyNjUyMmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.DiIsOqRHRXVt8ZN7Qhp8TSx731YWwnPsiI5VnnTh0B0)
![3](https://private-user-images.githubusercontent.com/11661233/289385266-8f4e238a-4c4a-41d1-944e-620db1675059.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyNjYtOGY0ZTIzOGEtNGM0YS00MWQxLTk0NGUtNjIwZGIxNjc1MDU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYzNDk1NWU2NzAwZDhkODI0ZGNlZWE5MDVlZjZlZWQ3YjQxNWI1Y2QzMmUxYTY0ZTk4ZTJhNDI5ODVjYzQxOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.GCNsbwNtsKWtyqqg8wYvAR35O92PSgOJbD-tuf77ooY)
- Переходим в раздел Long Poll API. Включаем Long Poll API, указываем версию 5.131.
![4](https://private-user-images.githubusercontent.com/11661233/289385282-b799ece7-9b90-4744-b03c-548cb9867d5f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyODItYjc5OWVjZTctOWI5MC00NzQ0LWIwM2MtNTQ4Y2I5ODY3ZDVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjYzc1ZGFkYzUxZTM0YzBhYmUxNzAwOGY3ZjU0YWVkMzhkNmU5OTU5YzNiZWQ1YTAzMTc4NTFhNzgzNjYzZGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Tr7pHxbX1DQ96n9c1FEHccylLV9tJCF1lJC_0CNjGOM)
- Переходим в подраздел "Типы событий" и включаем события "Подписка на сообщество", "Выход из сообщества"
![5](https://private-user-images.githubusercontent.com/11661233/289385291-00080bae-6aea-49c1-8da6-f575e7101ddc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI3MDI0NTgsIm5iZiI6MTcyMjcwMjE1OCwicGF0aCI6Ii8xMTY2MTIzMy8yODkzODUyOTEtMDAwODBiYWUtNmFlYS00OWMxLThkYTYtZjU3NWU3MTAxZGRjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODAzVDE2MjIzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU0MmJhNGY1M2Y2ZTQwMzdhMTBhOWRiOGYxZGFhMzM2NzI1YmEzN2FmYzA2YjYxYzhmMmYyOGI1ZWUxNDVlMzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Zl_BJDS8wqtdMiqsqQ3GpmMr4uSdDJVfSo5-2ZBVLgQ)
Я заранее написал базовый код.
Для работы с ним сначала нужно заполнить файл SubStalker/Config.php
, указав в нём айди вашего сообщества и его токен, который был получен в процессе выполнения инструкции выше.
Остается лишь реализовать обработку колбэков. Соотвествующую логику достаточно прописать в методы groupJoin
и groupLeave
в файле SubStalker/CallbacksHandler.php
.
Когда пользователь покинет сообщество, будет вызван метод groupLeave
, а когда вступит в него, соответственно groupJoin
.
Для того, чтобы делать запросы к API ВКонтакте, в проекте есть клиент. Пример использования (здесь вызывается метод https://dev.vk.com/ru/method/users.get):
use VK\Client\VKApiClient;
...
$client = new VKApiClient('5.131');
$user = $client->users()->get(Config::ACCESS_TOKEN, ['user_id' => $user_id])[0];
groupEnjoy!