Данный код должен отправлять в ответ сообщение с текстом из файла, если получит определённую фразу в качестве входящего сообщения.
Пример: Боту отправили "test" - бот выдал информацию из файла 1234.txt
В остальных же случаях он просто игнорирует входящее сообщение.
Всё работает, но почему-то сообщение с информацией из файла отправляется несколько раз, вместо одного. Я даже сделал проверку ($check) на то, была ли уже выполнена функция отправки текста из файла. Всё равно отправляет по несколько раз...
<?php
date_default_timezone_set('UTC+3');
$b = date("W");
if (!isset($_REQUEST)) {
return;
}
//Строка для подтверждения адреса сервера из настроек Callback API
$confirmation_token = 'личный_код';
//Ключ доступа сообщества
$token = 'токен сообщества';
/*Закончили настройку бота*/
/**Отправка данных из файла**/
function ost_dz($user_id)
{
$text1 = file_get_contents('1234.txt');
$request_params = array(
'message' => $text1,
'user_ids' => $user_id,
'access_token' => 'token сообщества',
'v' => '5.85'
);
$get_params = http_build_query($request_params);
file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
$status=1;
return $status;
}
/**Отправка данных из файла завершена**/
$check=0;
//Получаем и декодируем уведомление
$data = json_decode(file_get_contents('php://input'));
//Проверяем, что находится в поле "type"
switch ($data->type) {
//Если это уведомление для подтверждения адреса...
case 'confirmation':
//...отправляем строку для подтверждения
echo $confirmation_token;
break;
//Если это уведомление о новом сообщении...
case 'message_new':
//...получаем id его автора
$user_id = $data->object->from_id;
// Получаем текст сообщения
$text = $data->object->text;
//Проверяем полученный текст на наличие фразы test
if (strpos($text, 'test') !== false)
{
if ($check == 0)
{
$check = ost_dz($user_id);
}
}
break;
//Возвращаем "ok" серверу Callback API
echo('ok');
break;
}
?>