Набор утилит для работы с 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!"
)
) & done
git clone https://github.com/bulatovv/vk.sh.git
Также требуется установить следующие зависимости:
curl
jq
Перед началом использования необходимо установить переменные среды:
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