digitalstars / simplevk
Library for easy work with VK com api
Installs: 3 560
Dependents: 4
Suggesters: 0
Security: 0
Stars: 88
Watchers: 12
Forks: 24
Open Issues: 0
Requires
- php: >=8.2
- ext-curl: *
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- ext-openssl: *
- roave/security-advisories: dev-latest
- vimeo/psalm: ^7.0.0-beta6
Suggests
- ext-ffi: Используется в модуле на С для ускорения проверки и разбивки отправляемых сообщений
- ext-pcntl: Автоматическая многопоточная обработка событий через Longpoll
- ext-posix: Автоматическая многопоточная обработка событий через Longpoll
- ext-redis: Используется для обнаружения дублирующихся событий от VK API и их игнорирования
- dev-master
- v3.2.0
- v3.1.29-beta
- 3.1.28-beta
- v3.1.27-beta
- v3.1.26-beta
- v3.1.25-beta
- v3.1.24-beta
- v3.1.23-beta
- v3.1.22-beta
- v3.1.21-beta
- v3.1.20-beta
- v3.1.19-beta
- v3.1.18-beta
- v3.1.17-beta
- v3.1.16-beta
- v3.1.15-beta
- v3.1.14-beta
- v3.1.13-beta
- v3.1.12-beta
- v3.1.11-beta
- v3.1.10-beta
- v3.1.9-beta
- v3.1.8-beta
- v3.1.7-beta
- v3.1.6-beta
- v3.1.5-beta
- v3.1.4-beta
- v3.1.3-beta
- v3.1.2-beta
- v3.1.1-beta
- v3.1.0-beta
- v3.0.0-beta.7
- v3.0.0-beta.6
- v3.0.0-beta.5
- v3.0.0-beta.4
- v3.0.0-beta.3
- v3.0.0-beta.2
- v3.0.0-beta.1
- v2.14.2
- v2.14.1
- v2.14.0
- v2.13.3
- v2.13.2
- v2.13.1
- v2.13.0
- v2.12.5
- v2.12.4
- v2.12.3
- v2.12.2
- v2.12.1
- v2.12.0
- v2.11.2
- v2.11.1
- v2.11.0
- v2.10.2
- v2.10.1
- v2.10.0
- v2.9.1
- v2.8.3
- v2.8.2
- v2.8.1
- v2.8.0
- v2.7.0
- v2.6.3
- v2.6.2
- v2.6.1
- v2.5.1
- v2.4.5
- v2.4.4
- v2.4.3
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- dev-testing
- dev-simplevk2
- dev-simplevk4
This package is auto-updated.
Last update: 2025-06-20 19:24:25 UTC
README
Документация находится в процессе создания.
Документация на русском |
---|
Беседа VK |
---|
Почему SimpleVK?
SimpleVK - это фреймворк для создания ботов. Вам потребуется минимум кода и времени, благодаря встроенному конструктору и реализации готовых модулей и функций для работы с VK API.
Функционал
- Модуль рассылки по диалогам и беседам
- Конструктор ботов
- Модуль обработки команд с помощью регулярных выражений и placeholder'ов
- Установка прокси
- placeholder'ы для создания упоминаний людей/групп
- Удобный debug модуль
- Встроенное хранилище данных
- Генераторы запросов с offset
- Автоматическое разбитие длинных сообщений при отправке
Поддержка
Callback API
User Long Poll API
Bots Long Poll API
Streaming API
- Карусели и все виды кнопок
- Создание ботов на группах / пользователях
- Работа с голосовыми сообщениями, документами и другими медиа-файлами
Автоматическое решение проблем VK API
- Игнорирование дублирующихся событий (по event_id)
- Игнорирование повторных событий при долгой обработке события от VK
- Автоматическое закрытие соединения с ВК после получения события
- Отправка повторных запросов при недоступности серверов / API
- Отправка повторных запросов при некоторых ошибках VK API
- Обработка невалидных JSON
Подключение
Используя composer
1. Установить
composer require digitalstars/simplevk:~3.0
2. Подключить autoload.php
require_once __DIR__.'/vendor/autoload.php';
Вручную
- Скачать последний релиз c github
- Подключить
autoload.php
.
Вот так будет происходить подключение, если ваш бот находится в той же папке, что и папка
simplevk-testing
require_once "simplevk-testing/autoload.php";
Проверка готовности сервера
Чтобы убедится, что вы установили все правильно, и ваш сервер готов к работе с SimpleVK, необходимо создать и запустить следующий скрипт:
<?php require_once __DIR__.'/vendor/autoload.php'; \DigitalStars\SimpleVK\Diagnostics::run();
Если вы делаете longpoll бота, то запускайте диагностику через консоль
Если вы делаете callback бота, то запускайте диагностику через браузер
Примерный вывод диагностики:
Примеры ботов
Вызов метода апи
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\SimpleVK as vk; $vk = vk::create(ТОКЕН, '5.199'); //возвращает сразу по ключу response из ответа $msg_id = $vk->request('messages.send', [ 'peer_ids' => 1, 'message' => 'Привет, ~!fn~', 'random_id' => 0 ]);
Минимальный Callback
Бот отвечает на любое сообщение
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\SimpleVK as vk; $vk = vk::create(ТОКЕН, '5.199')->setConfirm(STR); //STR - строка подтверждения сервера $vk->msg('Привет, ~!fn~')->send();
Простой Callback
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\SimpleVK as vk; $vk = vk::create(ТОКЕН, '5.199')->setConfirm(STR); //STR - строка подтверждения сервера $vk->setUserLogError(ID); //ID - это id vk, кому бот будет отправлять все ошибки, возникние в скрипте $data = $vk->initVars($peer_id, $user_id, $type, $message); //инициализация переменных из события if($type == 'message_new') { if($message == 'Привет') { $vk->msg('Привет, ~!fn~')->send(); } }
Простой LongPoll / User LongPoll
Если указать токен группы - будет LongPoll.
Если указать токен пользователя - User LongPoll.
А еще можно указать логин и пароль от аккаунта:
new LongPoll(ЛОГИН, ПАРОЛЬ, '5.199');
Но советую создать токен вот по этому гайду
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\LongPoll; $vk = LongPoll::create(ТОКЕН, '5.199'); $vk->setUserLogError(ID); //ID - это id vk, кому бот будет отправлять все ошибки, возникние в скрипте $vk->listen(function () use ($vk) { $data = $vk->initVars($peer_id, $user_id, $type, $message); //инициализация переменных из события if($type == 'message_new') { if($message == 'Привет') { $vk->msg('Привет, ~!fn~')->send(); } } });
Минимальный Бот на конструкторе (Callback)
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\Bot; $bot = Bot::create(ТОКЕН, '5.199'); $bot->cmd('img', '!картинка')->img('cat.jpg')->text('Вот твой кот'); $bot->run(); //запускаем обработку события
Минимальный Бот на конструкторе (LongPoll)
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\{Bot, LongPoll}; $vk = LongPoll::create(ТОКЕН, '5.199'); $bot = Bot::create($vk); $bot->cmd('img', '!картинка')->img('cat.jpg')->text('Вот твой кот'); $vk->listen(function () use ($bot) { $bot->run(); //запускаем обработку события });
Бот с обработкой Команд на конструкторе (Callback)
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\{Bot, SimpleVK as vk}; $vk = vk::create(ТОКЕН, '5.199'); $vk->setUserLogError(ID); //ID - это id vk, кому бот будет отправлять все ошибки, возникшие в скрипте $bot = Bot::create($vk); //отправит картинку с текстом $bot->cmd('img', '!картинка')->img('cat.jpg')->text('Вот твой кот'); //обработка команды с параметрами $bot->cmd('sum', '!посчитай %n + %n')->func(function ($msg, $params) { $msg->text($params[0] + $params[1]); }); //обработка команды по регулярке $bot->preg_cmd('more_word', "!\!напиши (.*)!")->func(function ($msg, $params) { $msg->text("Ваше предложение: $params[1]"); }); $bot->run();
Бот с обработкой Кнопок на конструкторе (Callback)
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\{Bot, SimpleVK as vk}; $vk = vk::create(ТОКЕН, '5.199'); $vk->setUserLogError(ID); //ID - это id vk, кому бот будет отправлять все ошибки, возникшие в скрипте $bot = Bot::create($vk); $bot->redirect('other', 'first'); //если пришла неизвестная кнопка/текст, то выполняем first $bot->cmd('first')->kbd([['fish', 'cat']])->text('Выберите животное:'); //срабатывает при нажатии кнопки Начать $bot->btn('fish', 'Рыбка')->text('Вы выбрали Рыбку!')->img('fish.jpg'); $bot->btn('cat', 'Котик')->text('Вы выбрали Котика!')->img('cat.jpg'); $bot->run();
Бот на конструкторе, с использованием хранилища (Callback)
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\{Bot, Store, SimpleVK as vk}; $vk = vk::create(ТОКЕН, '5.199'); $bot = Bot::create($vk); $bot->cmd('cmd1', '!запомни %s')->text('Запомнил!')->func(function ($msg, $params) use ($vk) { $vk->initVars($id, $user_id, $payload, $user_id); $store = Store::load($user_id); //загружаем хранилище пользователя $store->sset('str', $params[0]); //записываем в ключ str его слово }); $bot->cmd('cmd2', '!напомни')->func(function ($msg, $params) use ($vk) { $vk->initVars($id, $user_id, $payload, $user_id); $store = Store::load($user_id); //загружаем хранилище пользователя $str = $store->get('str'); //выгружаем из его хранилища строку $msg->text($str); //устанавливаем текст в экземпляре сообщения }); $bot->run();
Конфиги
<?php require_once __DIR__.'/vendor/autoload.php'; use DigitalStars\SimpleVK\{SimpleVK, LongPoll, SimpleVkException, Setting, Auth, Request}; Auth::setProxy('socks5://174.77.111.198:49547', 'password'); //прокси для всех сетевых запросов Request::errorSuppression(); //подавление генерации throw при ошибках в VK API. Результат выполнения API будет просто возвращатьсся //SimpleVK::disableSendOK(); //отключает разрыв соединения с VK при получение события. Может потребоваться для дебага через веб //SimpleVK::retryRequestsProcessing(); //включает обработку повторных запросов для callback, когда скрипт не работал SimpleVkException::setErrorDirPath(__DIR__ . '/my_errors/'); //установка папки для логирования ошибок бота и API SimpleVkException::disableWriteError(); //выключить запись логов в файл Setting::enableUniqueEventHandler(); //включение игнорирования дублирующихся событий (Нужен установленный redis) //LongPoll::enableInWeb(); //включение возможности запускать скрипт с LongPoll через web (!!! выключить можно будет только убив процесс) $vk = SimpleVK::create(TOKEN, '5.238'); $vk->setUserLogError(YOUR_VK_ID)->shortTrace(); //отправка всех ошибок в VK и вкл отображение короткого трейса $vk->setTracePathFilter('C:\your\path'); //вырезание путей из трейса для его укорочения
Больше примеров
Находятся на сайте с документацией в разделе примеров, а также в документации есть примеры для каждого метода классов.