Skip to content
Daniil Suvorov edited this page May 4, 2022 · 11 revisions

VK SDK for Golang готовая реализация основных функций VK API для языка Go.

Данная библиотека поддерживает версию API 5.131.

Возможности

  • API
    • Возвращает готовые структуры
    • Реализовано 400+ методов
    • Возможность изменять обработчик запросов
    • Возможность изменять HTTP клиент
    • Ограничитель запросов
    • Загрузка файлов
  • Callback API
    • Поддерживает все события
    • Возвращает готовые структуры
  • Bots Long Poll API
    • Поддерживает все события
    • Возвращает готовые структуры
    • Возможность изменять HTTP клиент
  • User Long Poll API
    • Возвращает готовые структуры
    • Возможность изменять HTTP клиент
  • Streaming API
    • Возвращает готовые структуры
    • Возможность изменять HTTP клиент
  • FOAF
    • Работает с пользователями и группами
    • Возвращает готовые структуры
  • VK Mini Apps
    • Проверка параметров запуска
    • Промежуточный http обработчик
  • Payments API
    • Обрабатывает уведомления о платежах
  • Скиллы Маруси
    • Готовые структуры и методы
    • Обработка запросов от Маруси

Установка

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

Примеры использования

Пример

package main

import (
	"context"
	"log"

	"github.com/SevereCloud/vksdk/v2/api"
	"github.com/SevereCloud/vksdk/v2/api/params"
	"github.com/SevereCloud/vksdk/v2/longpoll-bot"
	"github.com/SevereCloud/vksdk/v2/events"
)

func main() {
	token := "<TOKEN>" // рекомендуется использовать os.Getenv("TOKEN")
	vk := api.NewVK(token)

	// Получаем информацию о группе
	group, err := vk.GroupsGetByID(api.Params{})
	if err != nil {
		log.Fatal(err)
	}

	// Инициализируем longpoll
	lp, err := longpoll.NewLongPoll(vk, group[0].ID)
	if err != nil {
		log.Fatal(err)
	}

	// Событие нового сообщения
	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)
			}
		}
	})

	// Запускаем Bots Longpoll
	log.Println("Start longpoll")
	if err := lp.Run(); err != nil {
		log.Fatal(err)
	}
}