Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.85 KB | None | 0 0
  1. <?php
  2. #if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; }
  3. ini_set('error_reporting', 'off');
  4.  
  5. include "vk_api.php";
  6.  
  7. mb_internal_encoding("UTF-8");
  8. date_default_timezone_set("Europe/Moscow");
  9.  
  10.  
  11. const VK_KEY = "fghfghfgh";  // Токен сообщества
  12. const ACCESS_KEY = "fghfghfgh";  // Тот самый ключ из сообщества
  13. const VERSION = "5.103"; // Версия API V
  14.  
  15.  
  16. $vk = new vk_api(VK_KEY, VERSION); // создание экземпляра класса работы с api, принимает токен и версию api
  17. $data = json_decode(file_get_contents('php://input')); //Получает и декодирует JSON пришедший из ВК
  18.  
  19. if ($data->type == 'confirmation') { //Если vk запрашивает ключ
  20.     exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа
  21. }
  22. $vk->sendOK(); //Говорим vk, что мы приняли callback
  23.  
  24. $pdo = new PDO('mysql:host=localhost;dbname=fghfghfgh;charset=utf8', 'fghfghfgh', 'fghfghfgh');
  25.  
  26. $peer_id = $data->object->message->peer_id;// Узнаем ID пользователя, кто написал нам
  27. $chat_id = $peer_id - 2000000000;
  28. $from_id = $data->object->message->from_id;// Узнаем ID юзера
  29. $message = $data->object->message->text;// Само сообщение от юзера
  30. $id = $data->object->message->from_id;// Узнаем ид пользователя который отправляет
  31. $time2 = date('d-m-Y H:i:s');
  32. $callchat = 2000000003; // Чат, где логируются действия в боте.
  33.  
  34.  
  35. if (isset($data->object->message->payload)) {  //получаем payload
  36.         $payload = json_decode($data->object->message->payload, true); // Декодируем в JSON формат
  37.     } else {
  38.         $payload = null; // Иначе кнопок нет
  39.     }
  40.  
  41.     $payload = $payload['command']; // $payload = название нашей кнопки
  42.  
  43.  
  44. $infuser = $pdo->query("select * FROM fghfghfghWHERE user = '" . $id . "' and peer = '" . $id . "'")->fetch(PDO::FETCH_ASSOC);
  45.  
  46. const BTN_ADMIN = [["command" => 'btn_admin'], "Позвать администратора", "blue"];
  47. const BTN_EXAMPLE = [["command" => 'btn_example'], "Примеры ботов", "red"];
  48. const BTN_MENU = [["command" => 'btn_menu'], "Меню", "green"];
  49. const BTN_ACCESS = [["command" => 'btn_access'], "Подтвердить", "green"];
  50.  
  51.     if ($data->type == 'message_new') { // Создаем проверку на новое сообщение и вызываем кнопки
  52.         $getuserid = $pdo->query("SELECT user,peer FROM fghfghfghWHERE user='" . $id . "' AND peer = $peer_id")->fetch(PDO::FETCH_NUM);
  53.         if (empty($getuserid[0])) {
  54.             $userInfo = $vk->request("users.get", ["user_ids" => $id, "fields" => 'domain']);
  55.             $userJson = json_decode($userInfo, true);
  56.             $firstname = $userJson['response']['0']['first_name'];
  57.             $lastname = $userJson['response']['0']['last_name'];
  58.             $domainuser = $userJson['response']['0']['domain'];
  59.             $sql = "INSERT INTO fghfghfgh(user, peer, name, surname) VALUES ('$id', '$peer_id', '$firstname', '$lastname')";
  60.             $pdo->prepare($sql)->execute([$user, $firstname, $lastname, $surname]);
  61.         }
  62.         if ($data->object->message->action->type == 'chat_invite_user') {
  63.             $useradd = $data->object->message->action->member_id;
  64.             if ($useradd < 0) {
  65.                 $vk->kick($chat_id, "$useradd");
  66.                 $vk->kick($chat_id, "$id");
  67.                 $vk->sendMessage($peer_id, "Пользователь и сообщество исключены из беседы по причине добавления сообщества в официальную беседу LCC Studio. Это запрещено правилами.");
  68.         }
  69.         }
  70.         if ($infuser[adminask] == '1') {
  71.             exit();
  72.         }
  73.        
  74.        
  75.                 $messageid = $data->object->conversation_message_id; // id сообщения
  76.         $vk->sendMessage(2000000002, "MSGID: " . $messageid . "\nCHATID: " . $peer_id . "\nMSG: " . $message . "
  77.    #USERID - vk.com/id" . $id . " ($infuser[name] $infuser[surname])
  78.     #DATE - " . $time2 . "");
  79.  
  80.         if ($message == 'Начать' or $payload == 'btn_menu') {
  81.             $vk->sendButton($peer_id, "Начинаем!
  82.            
  83.             Список команд отображен на кнопках:
  84.             1 -- Вызвать администрацию: Вызываете администрацию и Вы можете договориться о покупке
  85.             2 -- Примеры: Можете посмотреть на примеры ботов", [[BTN_ADMIN, BTN_EXAMPLE]]);
  86.             $pdo->prepare("UPDATE fghfghfgh SET module='menu' WHERE peer = $peer_id AND user = $id")->execute();
  87.     }
  88.    
  89.     if ($payload == 'btn_admin') {
  90.         if ($id !== $peer_id) {
  91.             $vk->sendMessage($peer_id, "Вызвать администрацию можно только через личные сообщения");
  92.         } else {
  93.         $vk->sendButton($peer_id, "Подтвердите вызов администрации
  94.         Внимание! Вызов просто так карается блокировкой в группе.", [[BTN_ACCESS, BTN_MENU]]);
  95.         }
  96.     }
  97.     if ($payload == 'btn_access') {
  98.         $vk->sendButton($peer_id, "Мы вызвали администрацию. В данный момент не будет вам отвечать бот на ваши запросы", [[BTN_MENU]]);
  99.         $pdo->prepare("UPDATE  fghfghfgh SET adminask='1' WHERE peer = '$id'")->execute();
  100.         $vk->sendMessage(230558063, "Вас вызвали в военкомат: vk.com/gim190927715?sel=$id");
  101.     }
  102.    
  103.     if ($payload == 'btn_example') {
  104.         $vk->sendMessage($peer_id, "LeetProject: @leetproject
  105.         LCC Studio: @lcc_studio [Бот, которым Вы на данный момент пользуетесь]");
  106.     }
  107.     if ($infuser[admin] == 1) {
  108.         if (mb_strtolower($message) == 'пред') {
  109.             $answer = $data->object->message->reply_message->from_id;
  110.             if ($infuser[warns] == '2') {
  111.                 $vk->sendMessage($peer_id, "@id$answer (Пользователь) получил 3/3 предупреждений.
  112.                 Если пользователь получает 3 предупреждения -- пользователь исключается");
  113.                 $vk->sendMessage($peer_id, "@id$answer (Пользователь) исключен из беседы по причине получения 3 предупреждения");
  114.                 $vk->kick($chat_id, "$resend");
  115.                 $pdo->prepare("UPDATE fghfghfgh SET warns='0' WHERE user = $answer and peer = $answer")->execute();
  116.         } else {
  117.             $wanrs = $infuser[warns]+1;
  118.             $vk->sendMessage($peer_id, "@id$answer (Пользователь) получил $warns/3 предупреждений.
  119.             Если пользователь получает 3 предупреждения -- пользователь исключается");
  120.             $pdo->prepare("UPDATE fghfghfgh SET warns=(warns+1) WHERE user = $answer AND peer = $answer")->execute();
  121.             }
  122.         }
  123.     }
  124.    
  125.     }
  126.     if ($data->type == 'message_reply') {
  127.         if ($message == 'Завершить') {
  128.             $vk->sendMessage($peer_id, "Администрация завершила с Вами.
  129.             Если у Вас нет кнопки на выход в меню, напишите следующим сообщением <<Начать>>");
  130.             $pdo->prepare("UPDATE fghfghfgh SET adminask='0' WHERE user = $peer_id and user = $id")->execute();
  131.         }
  132.         if ($message == 'Выключить') {
  133.             $vk->sendMessage($peer_id, "Администрация отключила возможность боту отвечать на ваши запросы.
  134.             Скорее всего, у Вас сейчас будет разговор с администрацией");
  135.             $pdo->prepare("UPDATE fghfghfgh SET adminask='1' WHERE user = $peer_id and user = $id")->execute();
  136.         }
  137.     }
  138. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement