longpoll

package
v1.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2020 License: MIT Imports: 7 Imported by: 3

README

Bots Long Poll API

Documentation VK

Подключение Bots Long Poll API

Чтобы использовать Bots Long Poll API, откройте раздел «Управление сообществом», на вкладке «Работа с API»→«Long Poll API» выберите «Включён».

Версия API

Данная библиотека поддерживает версию API 5.103.

Инициализация

Модуль можно использовать с ключом доступа пользователя, полученным в Standalone-приложении через Implicit Flow(требуются права доступа: groups) или с ключом доступа сообщества(требуются права доступа: manage).

В начале необходимо инициализировать api:

vk := api.NewVK("<TOKEN>")

А потом сам longpoll

lp, err := longpoll.NewLongpoll(vk api.VK, groupID int)
// По умолчанию Wait = 25
// lp.Wait = 90
// lp.Ts = "123"
HTTP client

В модуле реализована возможность изменять HTTP клиент - lp.Client

Пример прокси

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
Обработчик событий

Для каждого события существует отдельный обработчик, который передает функции object и groupID.

Пример для события message_new

lp.MessageNew(func(object object.MessageNewObject, groupID int) {
	...
})

Если вы хотите получать полный ответ от Long Poll(например для сохранения ts или специальной обработки failed), можно воспользоваться следующим обработчиком.

lp.FullResponse(func(resp object.LongpollBotResponse) {
	...
})

Полный список событий Вы найдёте в документации

Запуск и остановка
// Запуск
if err := lp.Run(); err != nil {
	log.Fatal(err)
}

// Безопасное завершение
// Ждет пока соединение закроется и события обработаются
lp.Shutdown()

// Закрыть соединение
// Требует lp.Client.Transport = &http.Transport{DisableKeepAlives: true}
lp.Client.CloseIdleConnections()

Пример

package main

import (
	"log"

	"github.com/SevereCloud/vksdk/api"

	longpoll "github.com/SevereCloud/vksdk/longpoll-bot"
	"github.com/SevereCloud/vksdk/object"
)

func main() {
	vk := api.NewVK("<TOKEN>")
	lp, err := longpoll.NewLongpoll(vk, 12345678)
	if err != nil {
		panic(err)
	}

	lp.MessageNew(func(obj object.MessageNewObject, groupID int) {
		log.Print(obj.Message.Text)
	})

	lp.Run()
}

Documentation

Overview

Package longpoll implements Bots Long Poll API.

See more https://vk.com/dev/bots_longpoll

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Longpoll

type Longpoll struct {
	GroupID int
	Server  string
	Key     string
	Ts      string
	Wait    int
	VK      *api.VK
	Client  *http.Client

	events.FuncList
	// contains filtered or unexported fields
}

Longpoll struct.

func Init deprecated

func Init(vk *api.VK, groupID int) (lp Longpoll, err error)

Init Longpoll.

Deprecated: use NewLongpoll.

func NewLongpoll added in v1.5.0

func NewLongpoll(vk *api.VK, groupID int) (*Longpoll, error)

NewLongpoll returns a new Longpoll.

The Longpoll will use the http.DefaultClient. This means that if the http.DefaultClient is modified by other components of your application the modifications will be picked up by the SDK as well.

func NewLongpollCommunity added in v1.6.0

func NewLongpollCommunity(vk *api.VK) (*Longpoll, error)

NewLongpollCommunity returns a new Longpoll for community token.

The Longpoll will use the http.DefaultClient. This means that if the http.DefaultClient is modified by other components of your application the modifications will be picked up by the SDK as well.

func (*Longpoll) FullResponse

func (lp *Longpoll) FullResponse(f func(object.LongpollBotResponse))

FullResponse handler.

func (*Longpoll) Run

func (lp *Longpoll) Run() error

Run handler.

func (*Longpoll) Shutdown

func (lp *Longpoll) Shutdown()

Shutdown gracefully shuts down the longpoll without interrupting any active connections.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL