Автоответчик для сообщества

bass

Создатель
Регистрация
24 Авг 2011
Сообщения
20
Реакции
8
Добрый день!
Пытаюсь подключить бота для закрытого сообщества ВК.
1. Заявка на вступление в сообщество - ответ1

Нашел код:
PHP:
<?php

if (!isset($_REQUEST)) {
    return;
}

//Строка для подтверждения адреса сервера из настроек Callback API
$confirmationToken = 'rg65e47';

//Ключ доступа сообщества
$token = '4758e0136e80f6ccc81f974657675691f10087b36de594f9ce32f0be3453782f4ce9f5e57f17';

// Secret key
$secretKey = 'keykeykey';

//Получаем и декодируем уведомление
$data = json_decode(file_get_contents('php://input'));

// проверяем secretKey
if(strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0)
    return;

//Проверяем, что находится в поле "type"
switch ($data->type) {
    //Если это уведомление для подтверждения адреса сервера...
    case 'confirmation':
        //...отправляем строку для подтверждения адреса
        echo $confirmationToken;
        break;


    // Если это уведомление о вступлении в группу
    case 'group_join':
        //...получаем id нового участника
        $userId = $data->object->user_id;
        //затем с помощью users.get получаем данные об авторе
        $userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}{$join_type}&v=5.0"));

        //и извлекаем из ответа его имя
        $user_name = $userInfo->response[0]->first_name;

        //С помощью messages.send и токена сообщества отправляем ответное сообщение
        $request_params = array(
            'message' =>                             "ответ1",
            'user_id' => $userId,
            'access_token' => $token,
            'v' => '5.0'
        );

        $get_params = http_build_query($request_params);

        file_get_contents('https://api.vk.com/method/messages.send?' . $get_params);

        //Возвращаем "ok" серверу Callback API
        echo('ok');

        break;
   
}
?>

Но он отправляет только при вступлении в открытые сообщества.

Из API:
group_join:
добавление участника или заявки на вступление в сообщество.
Объект, содержащий следующие поля:
  • user_id (integer) — идентификатор пользователя.
  • join_type (string) — указывает, как именно был добавлен участник. Возможные значения:
    • join — пользователь вступил в группу или мероприятие (подписался на публичную страницу).
    • approved — заявка на вступление в группу/мероприятие была одобрена руководителем сообщества.
    • request — пользователь подал заявку на вступление в сообщество.
Подскажите, как прописать чтобы ответ был тем кто "approved "?
 
Код:
$request_params = array(
            'message' =>                             "ответ1",
            'user_id' => $userId,
            'access_token' => $token,
            'join_type' => 'approved'
            'v' => '5.0'
        );

Попробуй так
 
Надо сделать только когда approved?

PHP:
<?php

if (!isset($_REQUEST)) {
    return;
}

//Строка для подтверждения адреса сервера из настроек Callback API
$confirmationToken = 'rg65e47';

//Ключ доступа сообщества
$token = '4758e0136e80f6ccc81f974657675691f10087b36de594f9ce32f0be3453782f4ce9f5e57f17';

// Secret key
$secretKey = 'keykeykey';

//Получаем и декодируем уведомление
$data = json_decode(file_get_contents('php://input'));

// проверяем secretKey
if(strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0)
    return;

//Проверяем, что находится в поле "type"
switch ($data->type) {
    //Если это уведомление для подтверждения адреса сервера...
    case 'confirmation':
        //...отправляем строку для подтверждения адреса
        echo $confirmationToken;
        break;


    // Если это уведомление о вступлении в группу
    case 'group_join':
        if($data->object->join_type === 'approved' )
        {
            //...получаем id нового участника
            $userId = $data->object->user_id;
            //затем с помощью users.get получаем данные об авторе
            $userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}{$join_type}&v=5.0"));

            //и извлекаем из ответа его имя
            $user_name = $userInfo->response[0]->first_name;

            //С помощью messages.send и токена сообщества отправляем ответное сообщение
            $request_params = array(
                'message' =>                             "ответ1",
                'user_id' => $userId,
                'access_token' => $token,
                'v' => '5.0'
            );

            $get_params = http_build_query($request_params);

            file_get_contents('https://api.vk.com/method/messages.send?' . $get_params);
        }

        //Возвращаем "ok" серверу Callback API
        echo('ok');

        break;
 
}
?>
 
Назад
Сверху