PHPПрограммирование

Создание бота Вк на языке PHP — уроки API Вк

Боты стали новой эпохой в соц сетях и мессенджерах. Мы расскажем как создать настоящего бота на PHP, используя API социальной сети Вконтакте.

Для создание ботов в социальной сети Вконтакте нужно несколько вещей:

  1. Специальный standalone token;
  2. Токен вашей группы;
  3. Сам скрипт с ботом;
  4. Группа с подключенным сервером и API.

Получение токена

Первым делом необходимо получить standalone token вместе с токеном вашей группы. Для этого переходим в раздел для разработчиков и в «Мои приложения«. Здесь создаем новое приложение. Название приложения можете выбрать любым, главное чтобы оно было Standalone-приложение.

Включите Open API после создания приложения. В него пропишите сайт, с которым будет связано ваше приложение, а также базовый домен.

После этого необходимо перейти по этой ссылке. Также вы её видите ниже:

https://oauth.vk.com/authorize?client_id=6678654&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,photos,audio,video,status,messages,wall,groups,offline,stats,email&response_type=token&v=5.63

Единственное, вам необходимо изменить client_id и установить чтобы оно было равным ID вашего приложения.

Далее вы нажимаете на кнопку Разрешить и после этого получаете токен, который будет записан в ссылке. Копируете токен от знака равенства (=) и до амперсанда (&).

После этого создайте новую группу или воспользуйтесь вашей существующей группой. Зайдите в настройке, после чего в Ключи доступа и нажмите Создать ключ. Установите все права для ключа и после этого вы сможете получить токен вашей группы, который вам пригодиться для создания бота.

Создание самого бота

Для создания бота нам понадобиться три файла:

  • config — файл служащий исключительно для нас. В нем мы запишем различные настройки и данные, которые сможем в дальнейшем использовать в других файлах;
  • photos — файл для обработки альбома. В этом файле мы будем обрабатывать альбом, получать из него все изображение и записывать их в новый txt файл в специальном формате, который в дальнейшем будем передавать в качестве прикрепленного изображения к сообщению;
  • bot — основной файл с ботом. Здесь мы прописываем обработку данных от пользователя, а также передачу сообщений от бота к пользователю Вконтакте.

Ниже представлены эти три файла. Они полностью готовы и с рабочим кодом. Детальное описание всего что в них происходит вы можете получить из видео.

Скрипт config:

$album = 'https://vk.com/album-113958919_252151167';
$res = parse_url($album);
$path = substr($res['path'], 6);
$arr = explode('_', $path);
$owner_id = $arr[0];
$album_id = $arr[1];

$standalone = "ваш standalone токен приложения";
$group_token = 'ваш токен группы';
$conf = [
	'standalone' => $standalone,
	'group_token' => $group_token,
	'contorm_token' => 'eae5d4a2',
	'mess' => 'Фото в студио',
	'not_command' => 'Ничего не понял!',
	'owner_id' => $owner_id,
	'album_id' => $album_id,
	'group_id' => '170785666',
	'apiurl' => 'https://api.vk.com/method/',
	'path' => substr($_SERVER['PHP_SELF'], 0, -2),
	'photos' => 'photos.txt',
	'temp_link' => 'temp_album.txt',
	'random_id' => mt_rand(0000000000, 999999999999),
	'v' => '5.50'
];

Скрипт photos:

unlink($conf["photos"]);
$query = file_get_contents($conf['apiurl'].'photos.get?owner_id='.$conf['owner_id'].'&album_id='.$conf['album_id'].'&v='.$conf['v'].'&access_token='.$conf['standalone']);
$res = json_decode($query, true);

foreach($res as $v) {
	foreach($v['items'] as $q) {
		$result = 'photo'.$q['owner_id'].'_'.$q['id'];
		file_put_contents($conf['photos'], $result."\n", FILE_APPEND | LOCK_EX);
	}
}

Скрипт bot:

require "config.php";
$data = json_decode(file_get_contents('php://input'));
$u_id = $data->object->user_id;
$mess = $data->object->body;

$user_info = json_decode(file_get_contents($conf['apiurl'].'users.get?user_id='.$u_id.'&v='.$conf['v'].'&access_token='.$conf['standalone']));
$user_name = $user_info->response[0]->first_name;

$temp_link = file($conf['temp_link']);
if($temp_link[0] != $album) {
	file_put_contents($conf['temp_link'], $album);
	require "photos.php";
	return true;
}

switch($data->type) {
	case 'confirmation':
		echo $conf['contorm_token'];
		break;
	case "message_new":
		if($mess == $conf['mess']) {
			$file = file_get_contents($conf['photos']);
			$photos_all = explode("\n", $file);
			
			$myCurl = curl_init();
			curl_setopt_array($myCurl, array(
				CURLOPT_URL => $conf['apiurl'].'messages.send?user_id='.$u_id.'&group_id='.$conf['group_id'].'&attachment='.$photos_all[mt_rand(0, count($photos_all) - 1)].'&message='.urlencode('Держи свое фото').'&v='.$conf['v'].'&access_token='.$conf['standalone'],
				CURLOPT_RETURNTRANSFER => true,
				CURLOPT_POST => true,
				CURLOPT_POSTFIELDS => http_build_query(array())
			));
			$response = curl_exec($myCurl);
			curl_close($myCurl);
		} else {
			$myCurl = curl_init();
			curl_setopt_array($myCurl, array(
				CURLOPT_URL => $conf['apiurl'].'messages.send?user_id='.$u_id.'&group_id='.$conf['group_id'].'&message='.urlencode($conf['not_command']).'&v='.$conf['v'].'&access_token='.$conf['standalone'],
				CURLOPT_RETURNTRANSFER => true,
				CURLOPT_POST => true,
				CURLOPT_POSTFIELDS => http_build_query(array())
			));
			$response = curl_exec($myCurl);
			curl_close($myCurl);
		}
		echo 'ok';
		break;
}

Детальное описание создания бота на языке PHP под систему Вконтакте:


Последнее что необходимо будет сделать, так это прописать URL адрес скрипта bot.php в группе, в настройках API:

После этого можете написать сообщение в группу и бот будет вам отвечать. Напишите «Фото в студио» и бот пришлет вам случайную фотографию из альбома.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *