<?php
include "vk_api.php";
const VK_KEY = "b48c23e7e4aa9c7c02f61a51aff85b90e59a4c52567f8604e25074a9a82b2ccf8258f9b938095be8c5e9d"; //тот самый длинный ключ доступа сообщества
const ACCESS_KEY = "be20ea35"; //например c40b9566, введите свой
const VERSION = "5.81"; //ваша версия используемого api
$vk = new vk_api(VK_KEY, VERSION); // создание экземпляра класса работы с api, принимает ключ и версию api
$data = json_decode(file_get_contents('php://input')); //Получает и декодирует JSON пришедший из ВК
//print_r($data);
if ($data->type == 'confirmation') { //Если vk запрашивает ключ
exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа
}
$vk->sendOK(); //Говорим vk, что мы приняли callback
// Создаем необходимые переменные
$peer_id = $data->object->peer_id; // Узнаем ИД беседы 2000000.....
$id = $data->object->from_id; // Узнаем ид пользователя который отправляет команду
$message = $data->object->text; // Текст самого сообщения
$is_admin = [87444494, 183657]; // создаем массив с ID's наших будущих админов через запятую
$chat_id = $peer_id - 2000000000;
if ($data->type == 'message_new') { // Если это новое сообщение то выполняем код указанный в условии
if (mb_substr($message,0,5) == '/kick'){ // Обрезаем сообщение и сравниваем что получилось
if (in_array($id, $is_admin)) { // С помощью in_array проверяем схожесть переменной $id с массивом с ID's
$kick_id = mb_substr($message ,6); // еще раз обрезаем и получаем все что написано после /kick_
$kick_id = explode("|", mb_substr($kick_id, 3))[0];
if($kick_id == ""){
$vk->sendMessage($peer_id, "Вы забыли указать аргумент");
} else {
$vk->request('messages.removeChatUser', ['chat_id' => $chat_id, 'member_id' => $kick_id]);
$vk->sendMessage($peer_id, "id - {$kick_id} был исключен :-)");
}
} else {
$vk->sendMessage($peer_id, "У Вас нет доступа к этой команде!");
}
}
}
$is_admin = [87444494, 183657]; // создаем массив с ID's наших будущих админов через запятую
Это не совсем удобно, давайте создадим команду !админ, которая будет принимать 1 аргумент, это ID пользователя, его мы уже научились принимать в той же статье про исключение пользователя. if (mb_substr($message,0,6) == '!админ'){ // Обрезаем сообщение и сравниваем что получилось
if (in_array($id, $is_admin)) { // С помощью in_array проверяем схожесть переменной $id с массивом с ID's
$user_id = mb_substr($message ,7); // еще раз обрезаем и получаем все что написано после !админ_
$user_id = explode("|", mb_substr($user_id, 3))[0];
if($user_id == ""){
$vk->sendMessage($peer_id, "Вы забыли указать аргумент");
} else {
$vk->sendMessage($peer_id, "id - {$user_id}");
}
} else {
$vk->sendMessage($peer_id, "У Вас нет доступа к этой команде!");
}
}
CREATE TABLE admin (
id int NOT NULL AUTO_INCREMENT,
vk_id int,
PRIMARY KEY (id)
)
require './vendor/autoload.php';
use Krugozor\Database\Mysql\Mysql as Mysql;
$db = Mysql::create("localhost", "login", "password")->setDatabaseName("nameBD")->setCharset("utf8");
$db->query("INSERT INTO admin (vk_id) VALUES ($user_id)");
$sql = $db->query("SELECT * from admin WHERE vk_id = $user_id")->getNumRows(); // Проверяем на наличие записи в БД
if ($sql){ // Если есть запись, сообщим об этом
$vk->sendMessage($peer_id, "Этот пользователь уже сохранен в базе данных.");
} else { // Иначе создаем новую запись
$db->query("INSERT INTO admin (vk_id) VALUES ($user_id)");
$vk->sendMessage($peer_id, "id - {$user_id}");
}
if (mb_substr($message,0,8) == '!адмлист'){ // Обрезаем сообщение и сравниваем что получилось
$is_admins = $db->query("SELECT * FROM admin")->fetch_assoc()['vk_id']; // Получаем данные из колонки vk_id
$vk->sendMessage($peer_id, "Данные с БД - $is_admins");
}
$is_admins = $db->query("SELECT * FROM admin"); // Получаем данные из колонки vk_id
while ($row = $is_admins->fetch_assoc()) { // Запускаем цикл
$is_adminss .= $row['vk_id']. " - запись с бд\n";
}
$vk->sendMessage($peer_id, "ЦИКЛ\n $is_adminss");
if (mb_substr($message,0,9) == '!обновить'){ // Обрезаем сообщение и сравниваем что получилось
$db->query("UPDATE admin SET vk_id = 777777 WHERE vk_id = 87444494 LIMIT 1"); // WHERE - Поиск записей в которые нужно внести изменения, перечесляются через AND, LIMIT 1 - Найти 1 запись, другие похожие не трогать
$vk->sendMessage($peer_id, "Данные обновлены");
}
Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter