diff options
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md')
-rw-r--r-- | vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md b/vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md new file mode 100644 index 00000000..94d87dba --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md @@ -0,0 +1,132 @@ +# Bots Long Poll API + +[![PkgGoDev](https://pkg.go.dev/badge/github.com/SevereCloud/vksdk/v2/longpoll-bot)](https://pkg.go.dev/github.com/SevereCloud/vksdk/v2/longpoll-bot) +[![VK](https://img.shields.io/badge/developers-%234a76a8.svg?logo=VK&logoColor=white)](https://vk.com/dev/bots_longpoll) + +## Подключение Bots Long Poll API + +Long Poll настраивается автоматически. Вам не требуется заходить в настройки +сообщества. + +### Версия API + +Данная библиотека поддерживает версию API **5.122**. + +### Инициализация + +Модуль можно использовать с ключом доступа пользователя, полученным в +Standalone-приложении через Implicit Flow(требуются права доступа: **groups**) +или с ключом доступа сообщества(требуются права доступа: **manage**). + +В начале необходимо инициализировать api: + +```go +vk := api.NewVK("<TOKEN>") +``` + +А потом сам longpoll + +```go +lp, err := longpoll.NewLongPoll(vk api.VK, groupID int) +// По умолчанию Wait = 25 +// lp.Wait = 90 +// lp.Ts = "123" +``` + +### HTTP client + +В модуле реализована возможность изменять HTTP клиент - `lp.Client` + +Пример прокси + +```go +dialer, _ := proxy.SOCKS5("tcp", "127.0.0.1:9050", nil, proxy.Direct) +httpTransport := &http.Transport{ + Dial: dialer.Dial, + // DisableKeepAlives: true, +} +httpTransport.Dial = dialer.Dial +lp.Client.Transport = httpTransport +``` + +### Обработчик событий + +Для каждого события существует отдельный обработчик, который передает функции +`ctx` и `object`. + +Пример для события `message_new` + +```go +lp.MessageNew(func(ctx context.Context, obj events.MessageNewObject) { + ... +}) +``` + +Если вы хотите получать полный ответ от Long Poll(например для сохранения `ts` +или специальной обработки `failed`), можно воспользоваться следующим обработчиком. + +```go +lp.FullResponse(func(resp object.LongPollBotResponse) { + ... +}) +``` + +Полный список событий Вы найдёте [в документации](https://vk.com/dev/groups_events) + +### Контекст + +Поля `groupID`, `ts` и `eventID` передаются в `ctx`. Чтобы получить их, можно +воспользоваться следующими функциями: + +```go +groupID := events.GroupIDFromContext(ctx) +eventID := events.EventIDFromContext(ctx) +ts := longpoll.TsFromContext(ctx) +``` + +### Запуск и остановка + +```go +// Запуск +if err := lp.Run(); err != nil { + log.Fatal(err) +} + +// Безопасное завершение +// Ждет пока соединение закроется и события обработаются +lp.Shutdown() + +// Закрыть соединение +// Требует lp.Client.Transport = &http.Transport{DisableKeepAlives: true} +lp.Client.CloseIdleConnections() +``` + +## Пример + +```go +package main + +import ( + "log" + + "github.com/SevereCloud/vksdk/v2/api" + + longpoll "github.com/SevereCloud/vksdk/v2/longpoll-bot" + "github.com/SevereCloud/vksdk/v2/events" +) + +func main() { + vk := api.NewVK("<TOKEN>") + lp, err := longpoll.NewLongPoll(vk, 12345678) + if err != nil { + panic(err) + } + + lp.MessageNew(func(ctx context.Context, obj events.MessageNewObject) { + log.Print(obj.Message.Text) + }) + + lp.Run() +} + +``` |