Набор утилит для работы с vk api в shell-скриптах. Библиотека реализована на чистом POSIX-shell.
vk_bots_long_poll | while read -r event; do (
on_event "message_new" && (
export_json "$(echo "$event" | jq -rc '{message: .object.message}')"
vk_api messages.send \
--peer_id "$message_peer_id" \
--random_id 0 \
--message "Hello, world!"
)
) & donegit clone https://github.com/bulatovv/vk.sh.gitТакже требуется установить следующие зависимости:
curljq
Перед началом использования необходимо установить переменные среды:
VK_TOKEN- токен доступа к API ВКонтактеVERSION- версия API ВКонтактеGROUP_ID- только для работы с BotsLongPoll, идентификатор группы ВКонтакте
VK_TOKEN="your_token"
VERSION="5.131"
GROUP_ID="your_group_id"Затем подключить необходимые модули:
. vk.sh/vk_api.sh
. vk.sh/utils.sh
. vk.sh/filters.shСодержит функции для работы с API ВКонтакте.
Выполнить запрос к API ВКонтакте.
vk_api METHOD_NAME --ARG VALUE # or
vk_api METHOD_NAME --ARG=VALUE # or
vk_api METHOD_NAME ARG=VALUEПример:
vk_api users.get user_ids=1
Слушать события BotsLongPoll сервера.
Пример:
vk_bots_long_poll | while read -r event; do
echo "$event"
doneСодержит вспомогательные функции.
Экспортировать переменные из json-строки в текущую среду. Формат:
{ "key": "value" }, // export key=value
{ "key": { "subkey": "value" } } // export key_subkey=value
{ "key": [ "value1", "value2" ] } // export key_0=value1; export key_1=value2Полезно для получения данных из событий long poll сервера, чтобы не парсить json-строку вручную. Пример:
vk_bots_long_poll | while read -r event; do
export_json "$event"
echo "$object_message_text"
doneСодержит функции для фильтрации событий long poll сервера.
Фильтры возвращают exit-code 0 в случае успеха и 1 в случае неудачи.
Можно использовать их в условных конструкциях и с операторами && и ||.
Note Встроенные фильтры завязаны на использование переменной среды
eventдля получения текущего события
Проверить, является ли событие событием с указанным типом.
Пример:
vk_bots_long_poll | while read -r event; do
on_event "message_new" && (
echo "New message!"
)
done