Add vk bridge (#1372)
* Add vk bridge * Vk bridge attachments * Vk bridge forwarded messages * Vk bridge sample config and code cleanup * Vk bridge add vendor * Vk bridge message edit * Vk bridge: fix fetching names of other bots * Vk bridge: code cleanup * Vk bridge: fix shadows declaration * Vk bridge: remove UseFileURL
This commit is contained in:
132
vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md
generated
vendored
Normal file
132
vendor/github.com/SevereCloud/vksdk/v2/longpoll-bot/README.md
generated
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
# Bots Long Poll API
|
||||
|
||||
[](https://pkg.go.dev/github.com/SevereCloud/vksdk/v2/longpoll-bot)
|
||||
[](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()
|
||||
}
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user