Bumps [github.com/SevereCloud/vksdk/v2](https://github.com/SevereCloud/vksdk) from 2.11.0 to 2.13.0. - [Release notes](https://github.com/SevereCloud/vksdk/releases) - [Commits](https://github.com/SevereCloud/vksdk/compare/v2.11.0...v2.13.0) --- updated-dependencies: - dependency-name: github.com/SevereCloud/vksdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3.6 KiB
Bots Long Poll API
Подключение Bots Long Poll API
Long Poll настраивается автоматически. Вам не требуется заходить в настройки сообщества.
Версия API
Данная библиотека поддерживает версию API 5.131.
Инициализация
Модуль можно использовать с ключом доступа пользователя, полученным в Standalone-приложении через Implicit Flow(требуются права доступа: groups) или с ключом доступа сообщества(требуются права доступа: manage).
В начале необходимо инициализировать api:
:= api.NewVK("<TOKEN>") vk
А потом сам longpoll
, err := longpoll.NewLongPoll(vk api.VK, groupID int)
lp// По умолчанию Wait = 25
// lp.Wait = 90
// lp.Ts = "123"
HTTP client
В модуле реализована возможность изменять HTTP клиент -
lp.Client
Пример прокси
, _ := proxy.SOCKS5("tcp", "127.0.0.1:9050", nil, proxy.Direct)
dialer:= &http.Transport{
httpTransport : dialer.Dial,
Dial// DisableKeepAlives: true,
}
.Dial = dialer.Dial
httpTransport.Client.Transport = httpTransport lp
Обработчик событий
Для каждого события существует отдельный обработчик, который передает
функции ctx
и object
.
Пример для события message_new
.MessageNew(func(ctx context.Context, obj events.MessageNewObject) {
lp...
})
Если вы хотите получать полный ответ от Long Poll(например для
сохранения ts
или специальной обработки
failed
), можно воспользоваться следующим обработчиком.
.FullResponse(func(resp object.LongPollBotResponse) {
lp...
})
Полный список событий Вы найдёте в документации
Контекст
Поля groupID
, ts
и eventID
передаются в ctx
. Чтобы получить их, можно воспользоваться
следующими функциями:
:= events.GroupIDFromContext(ctx)
groupID := events.EventIDFromContext(ctx)
eventID := longpoll.TsFromContext(ctx) ts
Запуск и остановка
// Запуск
if err := lp.Run(); err != nil {
.Fatal(err)
log}
// Безопасное завершение
// Ждет пока соединение закроется и события обработаются
.Shutdown()
lp
// Закрыть соединение
// Требует lp.Client.Transport = &http.Transport{DisableKeepAlives: true}
.Client.CloseIdleConnections() lp
Пример
package main
import (
"log"
"github.com/SevereCloud/vksdk/v2/api"
"github.com/SevereCloud/vksdk/v2/longpoll-bot"
longpoll "github.com/SevereCloud/vksdk/v2/events"
)
func main() {
:= api.NewVK("<TOKEN>")
vk , err := longpoll.NewLongPoll(vk, 12345678)
lpif err != nil {
panic(err)
}
.MessageNew(func(ctx context.Context, obj events.MessageNewObject) {
lp.Print(obj.Message.Text)
log})
.Run()
lp}