dan1lov/php-vkhp

VK Helper 是一个库,简化了与 VK API 中一些功能的交互

dev-master 2020-07-12 09:44 UTC

This package is auto-updated.

Last update: 2024-09-21 20:59:18 UTC


README

VK Helper — 一个简化与 VK API 中一些功能交互的库。使用它,您可以轻松创建按钮/键盘,无需额外操作,以便将其附加到要发送的消息。

此外,一个非常重要的功能是能够一次性向超过 100 个接收者发送消息。无需创建任何循环来逐步发送消息给每个用户。只需指定所有需要发送消息的用户,VKHP 会为您完成。

当前版本 VK API — 5.120,默认在每个请求中使用,除非明确指定版本。

要求

  • PHP >= 7.2

安装

通过 composer 安装的选项

composer require dan1lov/php-vkhp

第二个,更简单的选项是将文件 src/VKHP_onefile.php 移动到您的项目文件夹中,然后连接它

require 'path/to/vkhp/VKHP_onefile.php';

使用示例

预定义模板

使用 VKHP 构建的机器人示例可以在 dan1lov/vk-boilerplate-bot 中找到

发送消息

use VKHP\Method as VKHPM;

$access_token = 'your_access_token_string';
$user_id = 807533;
$message = 'Привет, дружище!';

VKHPM::messagesSend($access_token, [
    'user_ids' => $user_id,
    'message' => $message,
    'random_id' => 0
]);

带键盘的消息

use VKHP\Method as VKHPM;
use VKHP\Generator as VKHPG;

// для установки типа клавиатуры используется второй аргумент
// KM_ONETIME - одноразовая, KM_INLINE - инлайн
$keyboard = VKHPG::keyboard([[
    //            текст              цвет          payload (полезная нагрузка)
    VKHPG::button('Название кнопки', VKHPG::BLUE,  [ 'command' => 'start' ]),
    VKHPG::button('Вторая кнопка',   VKHPG::GREEN, [ 'second_btn' => true ]),
]], VKHPG::KM_ONETIME);

VKHPM::messagesSend($access_token, [
    'user_ids' => $user_id,
    'message' => $message,
    'keyboard' => $keyboard
    'random_id' => 0
]);

按钮类型

use VKHP\Generator as VKHPG;

// обычная кнопка
VKHPG::button(label, color, payload);

// кнопка-ссылка
VKHPG::buttonLink(label, link);

// кнопка, отправляющая текущее местоположение
VKHPG::buttonLocation(payload);

// кнопка для оплаты через VK Pay
VKHPG::buttonVKPay(hash);

// кнопка, открывающая приложение VK Mini Apps
VKHPG::buttonVKApps(label, app_id, owner_id, hash);

// callback-кнопка
VKHPG::buttonCallback(label, color, payload);

媒体上传

use VKHP\Method as VKHPM;

$files1 = [ 'path/to/image.png' ];
$files2 = [ 'path/to/document1.txt', 'path/to/doc2.pdf' ];

$media1 = VKHPM::uploadMessagesPhoto($access_token, $files1, [ 'peer_id' => 807533 ]);
// array('photo123_321')

$media2 = VKHPM::uploadMessagesDoc($access_token, $files2, [ 'peer_id' => 807533, 'type' => 'doc' ]);
// array('doc123_321', 'doc123_322')

请求 VK API

use VKHP\Method as VKHPM;

$query = VKHPM::make($access_token, 'users.get', [
    'user_ids' => 807533,
    'fields' => 'screen_name'
]);

临时文件

use VKHP\Scenarios as VKHPTemp;

$user_id = 807533;
$temp_folder = 'path/to/tmp/folder';

// проверка на существование файла
$exist = VKHPTemp::check($temp_folder, $user_id);
// true, false

if ($exist) {
    $temp = new VKHPTemp($temp_folder, $user_id);
    // или $temp = VKHPTemp::check($temp_folder, $user_id, true);

    $temp->command = 'buy_chickens';
    $temp->amount  = 100500;

    // сохранение в файл "{$temp_folder}/file_id{$user_id}.json"
    $temp->save();

    echo "Command: {$temp->command}, Amount: {$temp->amount}";
    // Command: buy_chickens, Amount: 100500
}

// удаление временного файла
$temp->clear();