Библиотека для работы с VK-ботами. Поддерживается работа в беседах.
Дата | Описание релиза | Состояние |
---|---|---|
7.02.2019 | Возможность отправлять сообщения. | done |
7.02.2019 | Обработка команд от пользователей как в беседе так и в личных сообщениях. | done |
7.02.2019 | Обработка событий. (Покинул беседу, присоединился и т.д.) | done |
composer require danil005/php-vk-bot:dev-master
Для того, чтобы обработать команды, вам необходимо зайти в папку traits и открыть файл CommantList.php. Создание каждого метода - это и есть команда. Также необходимо создавать методы только строчными буквами.
trait CommandList
{
protected function hello()
{
$this->sendMessage('Hello!');
}
}
Теперь, если написать "hello" в чат, бот вам ответит: "Hello!".
Если не хотите, чтобы метод вызывался при вводе ключевого слова, добавьте нижнее подчеркивание в начале метода (function_hello):
trait CommandList
{
protected function _hello()
{
$this->sendMessage('Hello!');
}
}
Тогда при вызове _hello или hello, метод выполняться не будет.
Если хотите сделать реакцию на предложения, то создайте метод cList() в CommandList.
protected function cList()
{
return [
[ //Команда #1
'text'=>'text message',
'method' => '_hello' //Обязательно использовать _.
],
[...], //Команда #2
...
];
}
Обязательно создавать методы с использование нижнего подчеркивания, иначе этот метод можно будет вызывать.
Массив состоящий из вложенного массива создает команду.
Ключ | Значение |
---|---|
text | Сообщение на которое будет реагировать бот. |
method | Метод из CommandList. Обязательно использовать: _ |
Если указать ключ text как массив, то бот будет реагировать на несколько фраз.
'text'=>['text message 1', 'text message 2']
Вы можете вызывать команду разными вариантами:
- Похоже на
- Начинается с
- Заканчивается на
- Содержит
Чтобы использовать этот вариант, добавьте | в начале строки.
Вы можете настроить вероятность совпадения в диапазоне [0-100].
Установить эту настройку можно в config.php под c ключом: similar_percent.
По умолчанию: 75%.
'text'=>'|привет всем',
Чтобы использовать этот вариант, добавьте [| в начале строки.
'text'=>'[|привет всем',
Чтобы использовать этот вариант, добавьте |] в конец строки.
'text'=>'привет всем|]',
Чтобы использовать этот вариант, выделите фразу в фигурных скобках { фраза }.
'text'=>'{привет всем}',
Данный способ работает и с использованием множества вариантов вызова.
'text'=>['[|привет', '{ку}', 'хай|]', '|здравствуйте']
Если указать ключ method как массив, то бот будет выполнять указанные методы по очереди.
'method'=>['_hello', '_goodbye']
Добавить вложения для сообщения. Указывать ДО вызова метода sendMessage()
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$attachments | array|string | Ссылка на медиавложения или массив | обязательно |
Пример:
protected function _hello()
{
$this->attachments('photo-100172_166443618');
//$this->attachments(['photo-100172_166443618', 'photo-124172_166443618'])
$this->sendMessage(['Hello!', 'HI!']);
}
Если указать два и более подряд идущих методов attachments, то будет использоваться последний.
Типы медиавложения:
Тип | Описание |
---|---|
photo | Фотографии |
video | Видео |
audio | Аудио |
doc | Документ |
wall | Запись на стене |
poll | Опрос |
market | Товар |
Подробнее на официальном сайте VK.COM (messages.send).
Отправка сообщения пользователю/в беседу.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$message | array|string | Сообщение или массив сообщений, которые будут выбраны генератором случайных чисел. | обязательно |
$perrId | int | ID-пользователя/чата. | null |
Пример:
$this->sendMessage(['Hi', 'Hello!']);
//Result: Hi
Отправить фотографию, не используя метод attachments. Указывайте <owner_id>_<media_id>.
Тип фотографию(и) будет по умолчанию photo. То есть photo-100172_166443618, то вам нужно вставить лишь выделенную часть.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$photos | array|string | Ссылка на фотографию или массив | обязательно |
Пример:
$this->sendPhoto('175343153_456239018');
Отправить видео, не используя метод attachments. По тому же правилу, что и sendPhoto.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$videos | array|string | Ссылка на видео или массив | обязательно |
Пример:
$this->sendVideo('175343153_456239018');
Отправить документ(ы), не используя метод attachments. По тому же правилу, что и sendPhoto.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$docs | array|string | Ссылка на документ или массив | обязательно |
Пример:
$this->sendDoc('175343153_456239018');
Отправить аудио, не используя метод attachments. По тому же правилу, что и sendPhoto.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$audio | array|string | Ссылка на аудио или массив | обязательно |
Пример:
$this->sendAudio('175343153_456239018');
Отправить запись(и) со стен(ы), не используя метод attachments. По тому же правилу, что и sendPhoto.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$walls | array|string | Ссылка на запись со стены или массив | обязательно |
Пример:
$this->sendWall('175343153_456239018');
Отправить опрос(ы), не используя метод attachments. По тому же правилу, что и sendPhoto.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$polls | array|string | Ссылка опрос или массив | обязательно |
Пример:
$this->sendPoll('175343153_456239018');
Отправить товар(ы), не используя метод attachments. По тому же правилу, что и sendPhoto.
Аргумент | Тип данных | Описание | По умолчанию |
---|---|---|---|
$items | array|string | Ссылка товар или массив | обязательно |
Пример:
$this->sendMarket('175343153_456239018');