Примеры работы

Для удобства в каждого бота можно добавлять следущие константы:

const VK_KEY = ''; //токен сообщества или пользователя
const CONFIRM_STR = ''; //ключ авторизации сообщества, который вы получили
const VERSION = '5.101'; //ваша версия используемого api
const VK_USERKEY = "User_Key"; //ключ доступа пользователя
const COIN_API_KEY = ''; //Ключ магазина, можно получить ТОЛЬКО 1 РАЗ! - vk.com/coin#create_merchant
const COIN_API_MERCHANT = 123;  //id страницы, чей ключ используется

Минимальный Callback бот для бесед и сообщества

require_once('vendor/autoload.php');
use DigitalStar\vk_api\vk_api;
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(CONFIRM_STR);
$vk->initVars($id, $message);
$vk->reply($message);

Простой Callback бот для бесед и сообщества

require_once('vendor/autoload.php');
use DigitalStar\vk_api\vk_api;
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(CONFIRM_STR);
$vk->debug();
$vk->initVars($id, $message, $payload); //инициализация переменных
$info_btn = $vk->buttonText('Информация', 'blue', ['command' => 'info']); //создание кнопки
if ($payload) {
    if($payload['command'] == 'info')
        $vk->reply('Тебя зовут %a_full%'); //отвечает пользователю или в беседу
} else
    $vk->sendButton($id, 'Видишь кнопку? Нажми на нее!', [[$info_btn]]); //отправляем клавиатуру с сообщением

Простой LongPoll бот для юзера

require_once('vendor/autoload.php');
use DigitalStar\vk_api\vk_api;
use DigitalStar\vk_api\LongPoll;
$vk = vk_api::create('login', 'password', VERSION);//или используйте токен вместо лог/пас
$vk = new LongPoll($vk);
$vk->listen(function()use($vk){ //longpoll для пользователя
    $vk->on('message_new', function($data)use($vk) { //обработка входящих сообщений
        $vk->initVars($id, $message);
        $vk->reply($message);
    });
});

Простой LongPoll бот для сообщества

require_once('vendor/autoload.php');
use DigitalStar\vk_api\vk_api;
use DigitalStar\vk_api\LongPoll;
$vk = vk_api::create(VK_KEY, '5.101');
$vk = new LongPoll($vk);
$vk->listen(function($data)use($vk){ //в $data содержится все данные
    $vk->initVars($id, $message);
    $vk->reply($message);
});

Callback + Execute

Используется, когда callback скрипт во время выполнения много раз обращается к api, а вам нужно экономить запросы, чтобы не привышать лимит(высоконагруженные боты)

require_once('vendor/autoload.php');
use DigitalStar\vk_api\vk_api;
use DigitalStar\vk_api\Execute;
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(CONFIRM_STR);
$vk = new Execute($vk);
$vk->debug();
$vk->initVars($id, $message); //инициализация переменных
$vk->reply($message); //отвечает пользователю или в беседу

LongPoll + Execute

Лучшая связка для высоконагруженных ботов. Но если вы делаете высоконагруженного бота, лучше посмотрите в сторону NodeJS, он справляется с этим намного лучше за счет асинхронности и многопоточности из коробки.

require_once('vendor/autoload.php');
use DigitalStar\vk_api\vk_api;
use DigitalStar\vk_api\LongPoll;
use DigitalStar\vk_api\Execute;
$vk = vk_api::create(VK_KEY, '5.95');
$vk = new Execute($vk);
$vk = new LongPoll($vk);
$vk->listen(function($data)use($vk){ //в $data содержится все данные события, можно убрать, если не нужен
    $vk->initVars($id, $message);
    $vk->reply($message);
});

Работа с Coin в Callback боте

require_once('vendor/autoload.php');
use DigitalStar\vk_api\Coin;

$coin = Coin::create(COIN_API_KEY, COIN_API_MERCHANT);
$coin->initVars($from_id, $amount, $payload, $verify, $data);
if($verify)
  echo "Пользователь с id $from_id отправил вам $amount Coin";
else
  echo "Платеж не настоящий, возможно попытка взлома или вы использовали hex декодирование ссылки"

Работа с классом Message

require_once('vendor/autoload.php');
use DigitalStar\vk_api\Message;
use DigitalStar\vk_api\vk_api;
use DigitalStar\vk_api\VkApiException;
use DigitalStar\vk_api\Group;

try {
    $vk_user = new vk_api('login', 'pass', VERSION); //авторизация пользователя через логин/пароль
    //$vk_user = new src(VK_USERKEY, VERSION); //авторизация через ключ пользователя
    $vk_public = new vk_api(VK_KEY, VERSION); //авторизация через ключ группы

    $fish_button = $vk_user->buttonText("А какие бывают?", "blue", ["animals" => 'Fish']); //инициализация кнопки

    /*------Отправка сообщения от имени пользователя---------*/
    $my_msg = new Message($vk_user); //объект конструктора сообщений
    $my_msg->setMessage("Разных рыбин сообщение..."); //добавить в конструктор сообщение
    $my_msg->addImage('img/goldfish.jpg'); //добавить в конструктор изображение
    $my_msg->addImage('img/pink_salmon.jpg'); //еще одно изображение
    $my_msg->addDocs('img/plotva.jpg'); //добавить изображение как документ
    $my_mds->addVoice('voice/voice.ogg');//добавить как голосовое сообщение
    $my_msg->send('чей_то_id'); //отправить пользователю
    $my_msg->send('чей_то_id'); //отправить другому полюзователю
    /*---------Отправка сообщения от имени группы, используя аккаунт пользователя-------------------*/
    $my_group = new Group('id_группы', $vk_user); //id группы где вы являетесь админом или создателем
    $my_msg = new Message($my_group);
    $my_msg->setMessage("Разных рыбин сообщение...");
    $my_msg->addImage('img/pink_salmon.jpg');
    $my_msg->addDocs('img/plotva.jpg');
    $my_msg->setKeyboard([]); //если оставить такое, то у пользователя исчезнут кнопки, которые есть сейчас
    $my_msg->setKeyboard([[$fish_button, $fish_button],
                          [$fish_button, $fish_button]], true); //а это добавит к конструктору клавиатуру
    $my_msg->send('чей_то_id');
    $my_msg->send('id_беседы'); //отправит это сообщение в беседу, куда пригласили бота. Отправит даже если бот не является админом    
    /*-----------------Простые функции отправки------------------*/
    //все, кроме отправки клавиатуры работает и с объектом пользователя
    $vk_public->sendMessage('чей_то_id', 'test'); //отправка сообщения
    $vk_public->sendButton('чей_то_id', 'test', [[$fish_button, $fish_button]]); //отправка клавиатуры
    $vk_public->sendImage('чей_то_id', 'img/pink_salmon.jpg'); //отправка клавиатуры
    $vk_public->sendDocMessage('чей_то_id', 'img/pink_salmon.jpg', 'Свое_название картинки');
    
} catch (VkApiException $e) {
    //если случится какая-то ошибка в библиотеке, то текст ошибки можно получить используя $e->getMessage()
    print_r($e->getMessage()); 
    //например можно отправить ошибку себе в вк
    //$vk_user->sendMessage('ваш_id', $e->getMessage());
}

Работа с классом Post

require_once('vendor/autoload.php');
use DigitalStar\vk_api\Post;
use DigitalStar\vk_api\VkApiException;

try {
//    $test = new auth('login or cookie', 'pass');
//    $vk = new src('login or cookie', 'pass', VERSION);
//    $vk = new src(VK_USERKEY, VERSION);
//    $vk = new src($test, VERSION);
    $my_post = new Post($vk);
    $my_post->setMessage("Разных рыбин пост...");
    $my_post->addProp('from_group', 1);
    $my_post->addImage('img/goldfish.jpg', 'img/pink_salmon.jpg', 'img/plotva.jpg');
    $my_post->addImage('img/plotva.jpg');
    $my_post->addDocs('img/goldfish.jpg');
    print_r( $my_post->send('-165686210', time() + 120) );
} catch (VkApiException $e) {
    print_r($e->getMessage());
} 

Работа с классом Клавиатурой и Коинами

require_once('vendor/autoload.php');
use DigitalStar\vk_api\Coin;
use DigitalStar\vk_api\vk_api;

try {

    $vk = vk_api::create(VK_KEY, VERSION)->setConfirm(CONFIRM_STR);
    $coin = Coin::create(COIN_API_KEY, COIN_API_MERCHANT);

    $vk->debug();
    $vk->initVars($id, $message, $payload, $user_id); //инициализация переменных

    $INFO = $vk->buttonText("Баланс", "blue", ["command" => 'mymoney']); //Код кнопки 'Баланс'

    if ($payload) { //если пришел payload
        if ($payload['command'] == 'mymoney') {
            $vk->reply('Твой баланс: ' . $coin->getBalance($user_id) . ' VKC');
        }
    } else
        $vk->sendButton($id, 'Отправил кнопку', [[$INFO]]); //отправляем клавиатуру с сообщением

} catch (\DigitalStar\vk_api\VkApiException $e) {

    $error = "\r\n[Exception]: возникла ошибка:";
    $error .= "\r\n[Exception]: текст: {$e->getMessage()}";
    $error .= "\r\n[Exception]: код ошибки: {$e->getCode()}";
    $error .= "\r\n[Exception]: файл: {$e->getFile()}:{$e->getLine()}";
    $error .= "\r\n[Exception]: путь ошибки: {$e->getTraceAsString()}";

    file_put_contents('error_log' . date('d-m-Y_h-i') . ".log", $error);
}

Настройка коинов

require_once('vendor/autoload.php');
use DigitalStar\vk_api\Coin;

$coin = Coin::create(COIN_API_KEY, COIN_API_MERCHANT);
$coin->setName('Горячие пирожки'); //установить имя магазина
$coin->setCallBack('https://domain.com/callback.php'); //установить путь до калбэк скрипта

/*выведет ссылку на пополнение баланса. Ее можете отправить юзеру
* Когда юзер оплатит, информация о платеже придет на установленный вами callback скрипт
* Реализация калбэк скрипта: https://github.com/digitalstars/vk_api/blob/master/Examples/coin_callback.php
*/
echo $coin->getLink(100, true)['url'];