vksdk
vksdk copied to clipboard
Golang module for working with VK API
VK SDK for Golang
VK SDK for Golang ready implementation of the main VK API functions for Go.
Features
Version API 5.131.
-
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/v2@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/v2/api"
"github.com/SevereCloud/vksdk/v2/api/params"
"github.com/SevereCloud/vksdk/v2/events"
"github.com/SevereCloud/vksdk/v2/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)
}
}