slim4ikoff / vkslim
该包最新版本(v0.0.1)没有提供许可信息。
php库,用于访问vk.com的API
v0.0.1
2023-03-25 23:06 UTC
Requires
- php: >=8.1
- ext-curl: *
- ext-mbstring: *
- ext-pdo: *
- guzzlehttp/guzzle: ^7.4
README
<?php
require_once 'vendor\autoload.php';
use VkSlim\Methods\Bot;
use VkSlim\VkCallback;
$callback = new VkCallback('токен бота', 'строка подтверждения');
$callback->event('message_new', function (Bot $bot, object $object, int $group_id) {
if($bot->rules()->commandRule(['stop', 'start'], ['/', '!'])) {
$bot->reply('Отреагировал на команду /start или !start ну или /stop !stop');
} elseif($bot->rules()->attachmentsRule(['photo', 'video'])) {
$bot->reply('Вы прислали мне фото и|или видео!');
}
$bot->answer('Привет мир, ты так прекрасен!');
});
$callback->listener(true);
状态 (State)
class MainState {
use State;
private array $states = ['name', 'age', 'sex'];
protected function getStates(): array {
return $this->states;
}
}
$callback = new VkCallback($token, $confirmation, $secret, $group_id);
$callback->event('message_new', function (Bot $bot, $object, $group_id) {
$state = new MainState($object);
if($bot->rules()->commandRule('start', ['/', '!']) && $state->isCurrent('*')) {
$bot->answer('Введите ваше имя');
$state->first();
} elseif($state->isCurrent('name')) {
$bot->answer('Введите ваш возраст');
$state->next($object->message->text);
} elseif($state->isCurrent('age')) {
$bot->answer('Введите ваш пол');
$state->next($object->message->text);
} else {
$state->finish($object->message->text);
$bot->answer('Спасибо '.json_encode($state->getData()));
}
});
$callback->listener(true);
规则 (Rules)
$bot->rules()->commandRule(['stop', 'start'], ['/', '!']) или $bot->rules()->commandRule('start', ['/', '!'])
$bot->rules()->attachmentsRule(['photo', 'video']) или $bot->rules()->attachmentsRule('photo')
$bot->rules()->peerRule()
$bot->rules()->stickerRule() или $bot->rules()->stickerRule(12719234)
$bot->rules()->messageLengthRule(15)
键盘 (Keyboard)
use VkSlim\Keyboard\Keyboard;
use VkSlim\Keyboard\Buttons\Color;
use VkSlim\Keyboard\Buttons\CallbackButton;
use VkSlim\Keyboard\Buttons\LinkButton;
use VkSlim\Keyboard\Buttons\LocationButton;
use VkSlim\Keyboard\Buttons\PayButton;
use VkSlim\Keyboard\Buttons\TextButton;
$keyboard = new Keyboard();
$k = $keyboard
->create(inline: true)
->add(new TextButton('Text button', Color::POSITIVE, ['button' => 'one']))
->add(new LinkButton('Нажми меня', 'https://github.com/YoppiDev/VkSlim', payload: ['button' => 'two']))
->row()
->add(new CallbackButton('Callback кнопка', Color::PRIMARY, ['callback' => 'done']))
->add(new LocationButton(['callback' => 'done']))
->add(new PayButton('hash', ['button' => 'pay']))
->json();
数据库 (DATABASE)
初始化
$database = new \VkSlim\Wrappers\Database();
$database->connect('mysql', '127.0.0.1', 'root', '', 'test');
表前缀
$database->setPrefix('myprefix');
因此,SQL查询将呈现为 SELECT FROM myprefix_test, DELETE FROM myprefix_test 等。
执行SQL查询
$result = $database->query('SELECT * FROM test WHERE id = :id', [
'id' => 1
])->fetch();
或者
$result = $database->query('SELECT * FROM table WHERE id = 5')->fetch();
query函数返回PDOStatement对象
INSERT
$result = $database->multi_insert('test', [
'name' => 'Лешка',
'warnings' => 0,
]);
等价于查询
INSERT INTO test (name, warnings) VALUES (?,?)
您还可以根据需要一次性将多条记录添加到表中
$result = $database->multiInsert('test', [
['name' => 'Лешка', 'warnings' => 0],
['name' => 'Васька', 'warnings' => 1],
['name' => 'Петька', 'warnings' => 1],
]);
UPDATE
$database->update('test', ['name' => "Петро", 'warnings' => 0], ['id' => 8,'name' => "Валентин"]);
等价于查询
UPDATE test SET name=:name, warnings=:warnings WHERE id=:id2 AND name=:name2