Awesome
VK SDK for Golang
VK SDK for Golang ready implementation of the main VK API functions for Go.
Features
Version API 5.199.
- API
- 500+ methods
- Ability to modify HTTP client
- Request Limiter
- Support zstd and MessagePack
- Token pool
- OAuth
- Callback API
- Tracking tool for users activity in your VK communities
- Supports all events
- Auto setting callback
- Bots Long Poll API
- Allows you to work with community events in real time
- Supports all events
- Ability to modify HTTP client
- User Long Poll API
- Allows you to work with user events in real time
- Ability to modify HTTP client
- Streaming API
- Receiving public data from VK by specified keywords
- Ability to modify HTTP client
- FOAF
- Machine-readable ontology describing persons
- Works with users and groups
- The only place to get page creation date
- Games
- Checking launch parameters
- Intermediate http handler
- VK Mini Apps
- Checking launch parameters
- Intermediate http handler
- Payments API
- Processes payment notifications
- Marusia Skills
- For creating Marusia Skills
- Support SSML
Install
# go mod init mymodulename
go get github.com/SevereCloud/vksdk/v3@latest
Use by
- A simple chat bridge: https://github.com/42wim/matterbridge
- Joe adapter: https://github.com/tdakkota/joe-vk-adapter
- Logrus hook: https://github.com/SevereCloud/vkrus
Example
package main
import (
"context"
"log"
"github.com/SevereCloud/vksdk/v3/api"
"github.com/SevereCloud/vksdk/v3/api/params"
"github.com/SevereCloud/vksdk/v3/events"
"github.com/SevereCloud/vksdk/v3/longpoll-bot"
)
func main() {
token := "<TOKEN>" // use os.Getenv("TOKEN")
vk := api.NewVK(token)
// get information about the group
group, err := vk.GroupsGetByID(nil)
if err != nil {
log.Fatal(err)
}
// Initializing Long Poll
lp, err := longpoll.NewLongPoll(vk, group[0].ID)
if err != nil {
log.Fatal(err)
}
// New message event
lp.MessageNew(func(_ context.Context, obj events.MessageNewObject) {
log.Printf("%d: %s", obj.Message.PeerID, obj.Message.Text)
if obj.Message.Text == "ping" {
b := params.NewMessagesSendBuilder()
b.Message("pong")
b.RandomID(0)
b.PeerID(obj.Message.PeerID)
_, err := vk.MessagesSend(b.Params)
if err != nil {
log.Fatal(err)
}
}
})
// Run Bots Long Poll
log.Println("Start Long Poll")
if err := lp.Run(); err != nil {
log.Fatal(err)
}
}