forked from lug/matterbridge
		
	* Update dependencies and go1.18 * Exclude unnecessary linters and update build to go1.18
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)
	}
}