SevereCloud / vksdk

Golang module for working with VK API
MIT License
192 stars 36 forks source link
go golang marusia marusia-skills vk vk-api vk-sdk

VK SDK for Golang

PkgGoDev VK Developers codecov VK chat release license

VK SDK for Golang ready implementation of the main VK API functions for Go.

Russian documentation

Features

Version API 5.199.

Install

# go mod init mymodulename
go get github.com/SevereCloud/vksdk/v3@latest

Use by

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)
    }
}

LICENSE

FOSSA Status