Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- error_reporting(E_ALL);
- ini_set('display_errors', false);
- date_default_timezone_set('Europe/Moscow');
- static $access_token = 'bea8d4b574c30c7cf1a66f7c48701efcbd99d59ecb6d04aa69a9d8525656a6560aa8031d04bfcd735e591';
- static $v = 5.101;
- static $group_id = 192319497;
- static $prefix = 'dating_';
- static $sex = [1 => 'Женский', 2 => 'Мужской'];
- static $sex_smile = [1 => '🙎', 2 => '🚶'];
- $json = json_decode(file_get_contents('php://input'), true);
- require (__DIR__ . '/lib/db.php');
- DB::setup('mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=dating', 'root', '6fmKueYH7jJVEYOAQQrvyAMDQcIidzD3CcE9i6O02DUmyYKBL7j14EiIYPFIgBK1XTbC9NaJPI9ZAPX9vrDMbCmU1wAuxJFG8gg');
- DB::freeze(true);
- $cache = new Memcached();
- $cache->addServer('/var/run/memcached/memcached.sock', 0);
- switch ($json['type']) {
- case 'confirmation': {
- die('f617a1aa');
- }
- case 'message_new': {
- echo 'ok';
- fastcgi_finish_request();
- $name = DB::getAll('SELECT `first_name` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0]['first_name'];
- switch (json_decode($json['object']['message']['payload'], true)['button']) {
- case 'step_edit_profile': {
- $user = api('users.get', [
- 'user_ids' => $json['object']['message']['from_id'],
- 'fields' => 'photo_400_orig,city,sex',
- ])['response'][0];
- $path = sha1($_SERVER['REQUEST_TIME'] . $json['object']['message']['from_id']);
- file_put_contents(__DIR__ . '/photos/' . $path . '.jpg', cURL($user['photo_400_orig']));
- $upload = uploadFile(api('photos.getMessagesUploadServer', [
- 'peer_id' => $json['object']['message']['from_id'],
- ])['response']['upload_url'], __DIR__ . '/photos/' . $path . '.jpg');
- $photo = api('photos.saveMessagesPhoto', [
- 'server' => $upload['server'],
- 'photo' => $upload['photo'],
- 'hash' => $upload['hash'],
- ]);
- $db = DB::dispense('users');
- $db['user_id'] = $json['object']['message']['from_id'];
- $db['first_name'] = $user['first_name'];
- $db['sex'] = $user['sex'];
- $db['photo'] = $path;
- $db['server_photo'] = 'photo' . $photo['response'][0]['owner_id'] . '_' . $photo['response'][0]['id'];
- $db['created_at'] = $_SERVER['REQUEST_TIME'];
- $id = DB::store($db);
- if (empty($user['city']['title'])) $user['city']['title'] = '<<Не указан>>';
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $user['first_name'] . ', перед тем, как начать искать собеседников, пожалуйста, заполни свою анкету. 😌<br>Вот твоя анкета 😉<br><br>👻 Номер анкеты: ' . $id . '<br>👤 Имя: ' . $user['first_name'] . '<br>' . $sex_smile[$user['sex']] . ' Пол: ' . $sex[$user['sex']] . ' <br>👻 Возраст: <<Не указан>><br>🌇 Город: ' . $user['city']['title'] . '<br>📝 Информация о себе: <<Не указана>><br>🗓 Дата создания анкеты: ' . date('d.m.Y в H:i', $_SERVER['REQUEST_TIME']),
- 'attachment' => 'photo' . $photo['response'][0]['owner_id'] . '_' . $photo['response'][0]['id'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_edit_photo\"}","label": "📸 Изменить фотографию"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_edit_name\"}","label": "✏ Изменить имя"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_edit_age\"}","label": "' . $sex_smile[$db['sex']] . ' Изменить возраст"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_edit_description\"}","label": "📝 Изменить информацию о себе"},"color": "secondary"}],[{"action": {"type": "location","payload": "{\"button\": \"step_edit_city\"}"}}]]}',
- ]);
- break;
- }
- case 'step_edit_photo': {
- $cache->set('step' . $json['object']['message']['from_id'], 'step_edit_photo');
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', пришли мне свою фотографию. 😏',
- ]);
- break;
- }
- case 'step_edit_name': {
- $cache->set('step' . $json['object']['message']['from_id'], 'step_edit_name');
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', укажи свое новое имя. 😌',
- ]);
- break;
- }
- case 'step_edit_age': {
- $cache->set('step' . $json['object']['message']['from_id'], 'step_edit_age');
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', укажи свой возраст (от 6-ти лет). 😄',
- ]);
- break;
- }
- case 'step_edit_description': {
- $cache->set('step' . $json['object']['message']['from_id'], 'step_edit_description');
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', пожалуйста, расскажи пару предложений о себе. 😀',
- ]);
- break;
- }
- case 'step_edit_city': {
- DB::exec('UPDATE `users` SET `latitude`=?, `longitude`=?, `city`=? WHERE `user_id`=?', [
- $json['object']['message']['geo']['coordinates']['latitude'],
- $json['object']['message']['geo']['coordinates']['longitude'],
- $json['object']['message']['geo']['place']['city'],
- $json['object']['message']['from_id'],
- ]);
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', отлично! ☺<br>Твой город изменен на «' . $json['object']['message']['geo']['place']['city'] . '». 😅',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔍 Начать поиск"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_view_profile\"}","label": "📕 Посмотреть мою анкету"},"color": "secondary"}]]}',
- ]);
- break;
- }
- case 'step_view_profile': {
- $db = DB::findOne('users', 'WHERE `user_id`=?', [$json['object']['message']['from_id']]);
- if (empty($db['age'])) $db['age'] = '<<Не указан>>';
- else $db['age'] .= ' лет';
- if (empty($db['city'])) $db['city'] = '<<Не указан>>';
- if (empty($db['description'])) $db['description'] = '<<Не указана>>';
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $db['first_name'] . ', вот твоя анкета 😉<br><br>👻 Номер анкеты: ' . $db['id'] . '<br>👤 Имя: ' . $db['first_name'] . '<br>' . $sex_smile[$db['sex']] . 'Пол: ' . $sex[$db['sex']] . '<br>👻 Возраст: ' . $db['age'] . '<br>🌇 Город: ' . $db['city'] . '<br>📝 О себе: ' . $db['description'] . '<br>🗓 Дата создания анкеты: ' . date('d.m.Y в H:i', $db['created_at']),
- 'attachment' => $db['server_photo'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_edit_photo\"}","label": "📸 Изменить фотографию"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_edit_name\"}","label": "✏ Изменить имя"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_edit_age\"}","label": "' . $sex_smile[$db['sex']] . ' Изменить возраст"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_edit_description\"}","label": "📝 Изменить информацию о себе"},"color": "secondary"}],[{"action": {"type": "location","payload": "{\"button\": \"step_edit_city\"}"}}],[{"action": {"type": "text","payload": "{\"button\": \"step\"}","label": "✖ Выйти из редактирования"},"color": "secondary"}]]}',
- ]);
- break;
- }
- case 'step_search': {
- $db_sex = DB::getAll('SELECT `sex` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $search_sex = [1 => 2, 2 => 1];
- $db = DB::getAll('SELECT * FROM `users` WHERE `user_id`<>? AND `sex`=? ORDER BY RAND() LIMIT 1', [$json['object']['message']['from_id'], $search_sex[$db_sex['sex']]])[0];
- $cache->set('search' . $json['object']['message']['from_id'], $db['user_id']);
- $message = $name . ', нашел кое-кого для тебя, смотри! 😏<br><br>👤 Имя: ' . $db['first_name'];
- if (!empty($db['age'])) $message .= '<br>👻 Возраст: ' . $db['age'];
- if (!empty($db['city'])) $message .= '<br>🌇 Город: ' . $db['city'];
- if (!empty($db['description'])) $message .= '<br>📝 О себе: ' . $db['description'];
- if (!empty($db['latitude']) && !empty($db['longitude'])) {
- $my_dist = DB::getAll('SELECT `latitude`, `longitude` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $dist = calculateTheDistance($my_dist['latitude'], $my_dist['longitude'], $db['latitude'], $db['longitude']);
- if ($dist < 1000) $message .= '<br>📌 Расстояние: < 1 км';
- else $message .= '<br>📌 Расстояние: ' . (int)($dist / 1000) . ' км';
- }
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $message,
- 'attachment' => $db['server_photo'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_like\"}","label": "❤ ' . $db['likes'] . '"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_send_message\"}","label": "💌"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔄"},"color": "secondary"}]]}',
- ]);
- break;
- }
- case 'step_like': {
- $peer_id = $cache->get('search' . $json['object']['message']['from_id']);
- DB::exec('UPDATE `users` SET `likes`=`likes`+1 WHERE `user_id`=?', [$peer_id]);
- $db_sex = DB::getAll('SELECT `sex` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $search_sex = [1 => 2, 2 => 1];
- $db = DB::getAll('SELECT * FROM `users` WHERE `user_id`<>? AND `sex`=? ORDER BY RAND() LIMIT 1', [$json['object']['message']['from_id'], $search_sex[$db_sex['sex']]])[0];
- $cache->set('search' . $json['object']['message']['from_id'], $db['user_id']);
- $message = $name . ', отлично, лайк поставлен! ❤<br>Нашел еще кое-кого для тебя, смотри! 😏<br><br>👤 Имя: ' . $db['first_name'];
- if (!empty($db['age'])) $message .= '<br>👻 Возраст: ' . $db['age'];
- if (!empty($db['city'])) $message .= '<br>🌇 Город: ' . $db['city'];
- if (!empty($db['description'])) $message .= '<br>📝 О себе: ' . $db['description'];
- if (!empty($db['latitude']) && !empty($db['longitude'])) {
- $my_dist = DB::getAll('SELECT `latitude`, `longitude` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $dist = calculateTheDistance($my_dist['latitude'], $my_dist['longitude'], $db['latitude'], $db['longitude']);
- if ($dist < 1000) $message .= '<br>📌 Расстояние: < 1 км';
- else $message .= '<br>📌 Расстояние: ' . (int)($dist / 1000) . ' км';
- }
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $message,
- 'attachment' => $db['server_photo'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_like\"}","label": "❤ ' . $db['likes'] . '"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_send_message\"}","label": "💌"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔄"},"color": "secondary"}]]}',
- ]);
- $db = DB::getAll('SELECT * FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $message = DB::getAll('SELECT `first_name` FROM `users` WHERE `user_id`=?', [$peer_id])[0]['first_name'] . ', @id' . $json['object']['message']['from_id'] . '(' . $name . ') оценил твою анкету. ❤<br><br>👤 Имя: ' . $db['first_name'];
- if (!empty($db['age'])) $message .= '<br>👻 Возраст: ' . $db['age'];
- if (!empty($db['city'])) $message .= '<br>🌇 Город: ' . $db['city'];
- if (!empty($db['description'])) $message .= '<br>📝 О себе: ' . $db['description'];
- if (!empty($db['latitude']) && !empty($db['longitude'])) {
- $my_dist = DB::getAll('SELECT `latitude`, `longitude` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $dist = calculateTheDistance($my_dist['latitude'], $my_dist['longitude'], $db['latitude'], $db['longitude']);
- if ($dist < 1000) $message .= '<br>📌 Расстояние: < 1 км';
- else $message .= '<br>📌 Расстояние: ' . (int)($dist / 1000) . ' км';
- }
- api('messages.send', [
- 'user_id' => $peer_id,
- 'message' => $message,
- 'attachment' => $db['server_photo'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_like\"}","label": "❤ ' . $db['likes'] . '"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_send_message\"}","label": "💌"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔄"},"color": "secondary"}]]}',
- ]);
- break;
- }
- case 'step_send_message': {
- $cache->set('step' . $json['object']['message']['from_id'], 'step_send_message');
- $peer_id = $cache->get('search' . $json['object']['message']['from_id']);
- $peer_name = api('users.get', [
- 'user_ids' => $peer_id,
- 'name_case' => 'gen',
- ])['response'][0]['first_name'];
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', отлично, теперь напиши сообщение ' . $peer_name . ' 💑',
- ]);
- break;
- }
- default: {
- switch ($cache->get('step' . $json['object']['message']['from_id'])) {
- case 'step_edit_photo': {
- if (is_array($json['object']['message']['attachments'][0]['photo'])) {
- $cache->delete('step' . $json['object']['message']['from_id']);
- $path = sha1($_SERVER['REQUEST_TIME'] . $json['object']['message']['from_id']);
- file_put_contents(__DIR__ . '/photos/' . $path . '.jpg', cURL($json['object']['message']['attachments'][0]['photo']['sizes'][count($json['object']['message']['attachments'][0]['photo']['sizes']) - 1]['url']));
- $upload = uploadFile(api('photos.getMessagesUploadServer', [
- 'peer_id' => $json['object']['message']['from_id'],
- ])['response']['upload_url'], __DIR__ . '/photos/' . $path . '.jpg');
- $photo = api('photos.saveMessagesPhoto', [
- 'server' => $upload['server'],
- 'photo' => $upload['photo'],
- 'hash' => $upload['hash'],
- ]);
- if (!empty($old_photo = DB::getAll('SELECT `photo` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']]))) {
- unlink(__DIR__ . '/photos/' . $old_photo . '.jpg');
- }
- DB::exec('UPDATE `users` SET `photo`=?, `server_photo`=? WHERE `user_id`=?', [$path, 'photo' . $photo['response'][0]['owner_id'] . '_' . $photo['response'][0]['id'], $json['object']['message']['from_id']]);
- $sex_db = DB::getAll('SELECT `sex` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0]['sex'];
- if ($sex_db == 1) $f = 'лась';
- else $f = 'лся';
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', вау! А ты тут красиво получи' . $f . '! 😼<br>Фотография успешно обновлена. 😅',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔍 Начать поиск"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_view_profile\"}","label": "📕 Посмотреть мою анкету"},"color": "secondary"}]]}',
- ]);
- } else {
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', пожалуйста, пришли мне фотографию, или нажми кнопку <<Выйти>>. 😉',
- ]);
- }
- break;
- }
- case 'step_edit_name': {
- $cache->delete('step' . $json['object']['message']['from_id']);
- DB::exec('UPDATE `users` SET `first_name`=? WHERE `user_id`=?', [$json['object']['message']['text'], $json['object']['message']['from_id']]);
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', отлично! Теперь ты ' . $json['object']['message']['text'] . ' 😍',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔍 Начать поиск"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_view_profile\"}","label": "📕 Посмотреть мою анкету"},"color": "secondary"}]]}',
- ]);
- break;
- }
- case 'step_edit_age': {
- if (preg_match('/^[0-9]{1,2}$/', $json['object']['message']['text'])) {
- $cache->delete('step' . $json['object']['message']['from_id']);
- DB::exec('UPDATE `users` SET `age`=? WHERE `user_id`=?', [$json['object']['message']['text'], $json['object']['message']['from_id']]);
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', возраст успешно изменен. 😊',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔍 Начать поиск"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_view_profile\"}","label": "📕 Посмотреть мою анкету"},"color": "secondary"}]]}',
- ]);
- } else {
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', пожалуйста, укажи корректный возраст от 6-ти лет. 😔',
- ]);
- }
- break;
- }
- case 'step_edit_description': {
- DB::exec('UPDATE `users` SET `description`=? WHERE `user_id`=?', [$json['object']['message']['text'], $json['object']['message']['from_id']]);
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', отлично, информация <<О себе>> изменена. 😇',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔍 Начать поиск"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_view_profile\"}","label": "📕 Посмотреть мою анкету"},"color": "secondary"}]]}',
- ]);
- $cache->delete('step' . $json['object']['message']['from_id']);
- break;
- }
- case 'step_send_message': {
- $peer_id = $cache->get('search' . $json['object']['message']['from_id']);
- DB::exec('UPDATE `users` SET `likes`=`likes`+1 WHERE `user_id`=?', [$peer_id]);
- $db_sex = DB::getAll('SELECT `sex` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $search_sex = [1 => 2, 2 => 1];
- $db = DB::getAll('SELECT * FROM `users` WHERE `user_id`<>? AND `sex`=? ORDER BY RAND() LIMIT 1', [$json['object']['message']['from_id'], $search_sex[$db_sex['sex']]])[0];
- $cache->set('search' . $json['object']['message']['from_id'], $db['user_id']);
- $message = $name . ', отлично, сообщение отправлено! 💌<br>Нашел еще кое-кого для тебя, смотри! 😏<br><br>👤 Имя: ' . $db['first_name'];
- if (!empty($db['age'])) $message .= '<br>👻 Возраст: ' . $db['age'];
- if (!empty($db['city'])) $message .= '<br>🌇 Город: ' . $db['city'];
- if (!empty($db['description'])) $message .= '<br>📝 О себе: ' . $db['description'];
- if (!empty($db['latitude']) && !empty($db['longitude'])) {
- $my_dist = DB::getAll('SELECT `latitude`, `longitude` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $dist = calculateTheDistance($my_dist['latitude'], $my_dist['longitude'], $db['latitude'], $db['longitude']);
- if ($dist < 1000) $message .= '<br>📌 Расстояние: < 1 км';
- else $message .= '<br>📌 Расстояние: ' . (int)($dist / 1000) . ' км';
- }
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $message,
- 'attachment' => $db['server_photo'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_like\"}","label": "❤ ' . $db['likes'] . '"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_send_message\"}","label": "💌"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔄"},"color": "secondary"}]]}',
- ]);
- $db = DB::getAll('SELECT * FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $message = DB::getAll('SELECT `first_name` FROM `users` WHERE `user_id`=?', [$peer_id])[0]['first_name'] . ', @id' . $json['object']['message']['from_id'] . '(' . $name . ') написал тебе сообщение. ❤<br>📩 Текст сообщения: ' . $json['object']['message']['text'] . '<br><br>👤 Имя: ' . $db['first_name'];
- if (!empty($db['age'])) $message .= '<br>👻 Возраст: ' . $db['age'];
- if (!empty($db['city'])) $message .= '<br>🌇 Город: ' . $db['city'];
- if (!empty($db['description'])) $message .= '<br>📝 О себе: ' . $db['description'];
- if (!empty($db['latitude']) && !empty($db['longitude'])) {
- $my_dist = DB::getAll('SELECT `latitude`, `longitude` FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']])[0];
- $dist = calculateTheDistance($my_dist['latitude'], $my_dist['longitude'], $db['latitude'], $db['longitude']);
- if ($dist < 1000) $message .= '<br>📌 Расстояние: < 1 км';
- else $message .= '<br>📌 Расстояние: ' . (int)($dist / 1000) . ' км';
- }
- api('messages.send', [
- 'user_id' => $peer_id,
- 'message' => $message,
- 'attachment' => $db['server_photo'],
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_like\"}","label": "❤ ' . $db['likes'] . '"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_send_message\"}","label": "💌"},"color": "secondary"},{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔄"},"color": "secondary"}]]}',
- ]);
- $cache->delete('step' . $json['object']['message']['from_id']);
- $cache->delete('search' . $json['object']['message']['from_id']);
- break;
- }
- default: {
- if (empty(DB::getAll('SELECT 1 FROM `users` WHERE `user_id`=?', [$json['object']['message']['from_id']]))) {
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => 'Привет - привет! 😄<br>Хочешь найти вторую половинку? Тогда скорее жми <<Начать>>! 😃',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_edit_profile\"}","label": "Начать 🔥"},"color": "secondary"}]]}',
- ]);
- } else {
- api('messages.send', [
- 'user_id' => $json['object']['message']['from_id'],
- 'message' => $name . ', пожалуйста, выбери, что ты хочешь сделать. 😉 (test-menu da da da da)',
- 'keyboard' => '{"inline": true,"buttons": [[{"action": {"type": "text","payload": "{\"button\": \"step_search\"}","label": "🔍 Начать поиск"},"color": "secondary"}],[{"action": {"type": "text","payload": "{\"button\": \"step_view_profile\"}","label": "📕 Посмотреть мою анкету"},"color": "secondary"}]]}',
- ]);
- }
- break;
- }
- }
- }
- }
- }
- }
- function api(string $method, array $array): array {
- global $access_token, $v;
- $array['access_token'] = $access_token;
- $array['v'] = $v;
- if ($method == 'messages.send') $array['random_id'] = rand(-999999999, 999999999);
- return json_decode(cURL('https://api.vk.com/method/' . $method . '?' . http_build_query($array)), true);
- }
- function cURL(string $url): string {
- $ch = curl_init();
- curl_setopt_array($ch, [
- CURLOPT_URL => $url,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_SSL_VERIFYHOST => false,
- CURLOPT_SSL_VERIFYPEER => false,
- CURLOPT_FOLLOWLOCATION => false,
- CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0,
- ]);
- $string = curl_exec($ch);
- curl_close($ch);
- return $string;
- }
- function uploadFile($url, $path)
- {
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_HEADER, false);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, ['file1' => new \CURLFile($path)]);
- $data = curl_exec($ch);
- curl_close($ch);
- return json_decode($data, true);
- }
- function calculateTheDistance ($zA, $xA, $fB, $xB) {
- // перевести координаты в радианы
- $lat1 = $zA * M_PI / 180;
- $lat2 = $fB * M_PI / 180;
- $long1 = $xA * M_PI / 180;
- $long2 = $xB * M_PI / 180;
- // косинусы и синусы широт и разницы долгот
- $cl1 = cos($lat1);
- $cl2 = cos($lat2);
- $sl1 = sin($lat1);
- $sl2 = sin($lat2);
- $delta = $long2 - $long1;
- $cdelta = cos($delta);
- $sdelta = sin($delta);
- // вычисления длины большого круга
- $y = sqrt(pow($cl2 * $sdelta, 2) + pow($cl1 * $sl2 - $sl1 * $cl2 * $cdelta, 2));
- $x = $sl1 * $sl2 + $cl1 * $cl2 * $cdelta;
- //
- $ad = atan2($y, $x);
- $dist = $ad * 6372795;
- return $dist;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement