Библиотека Golang для MAX Bot API
Открыть в MAX

Работа с библиотекой Golang

MAX предоставляет официальную библиотеку на Go (Golang) — она в открытом доступе на GitHub и даёт идиоматичный интерфейс для работы с Bot API. Если твой бэкенд на Go или ты просто предпочитаешь строгую типизацию и производительность — это твой инструмент.

GitHub: github.com/max-messenger/max-bot-api-client-go

Я сам пишу на Node.js, но если бы выбирал язык для высоконагруженного бота — серьёзно смотрел бы в сторону Go. Гор routinesтины идеально ложатся на модель обработки событий от вебхука: на каждый входящий запрос — легковесная горутина, никакого оверхеда.

Установка

Добавить библиотеку в проект — одна команда:

терминал
go get github.com/max-messenger/max-bot-api-client-go

Требуется Go 1.21 или новее. Проверь версию:

терминал
go version

Базовое использование

Вот минимальный рабочий пример на Go — бот отвечает «Привет!» на любое сообщение. Код чистый и понятный, без лишней магии:

main.go
package main

import (
    "log"
    "os"

    maxbot "github.com/max-messenger/max-bot-api-client-go"
)

func main() {
    bot := maxbot.NewBot(os.Getenv("MAX_BOT_TOKEN"))

    bot.OnMessage(func(ctx *maxbot.Context) {
        ctx.Reply("Привет, " + ctx.From.FirstName + "! 👋")
    })

    log.Fatal(bot.Start())
}

Библиотека покрывает весь Bot API: отправку сообщений, inline-клавиатуры, загрузку файлов, работу с чатами, обработку колбэков. Всё с родной для Go обработкой ошибок и контекстами.

✅ Преимущества Go: Если бот должен обрабатывать много параллельных пользователей, Go здесь вне конкуренции. Компиляция в один бинарник, никаких зависимостей на сервере, минимальное потребление памяти. Для продакшена — идеально.

Рекомендуемая структура проекта

Вот как я организовал бы Go-проект для бота, опираясь на идиомы языка:

структура проекта
my-max-bot/
├── cmd/
│   └── bot/
│       └── main.go          ← точка входа
├── internal/
│   ├── handlers/
│   │   ├── commands.go      ← обработка команд
│   │   ├── messages.go      ← обработка сообщений
│   │   └── callbacks.go     ← обработка колбэков
│   ├── keyboards/
│   │   └── keyboards.go     ← все клавиатуры
│   ├── services/
│   │   ├── api.go           ← внешние API
│   │   └── db.go            ← база данных
│   └── config/
│       └── config.go        ← конфигурация
├── go.mod
├── go.sum
└── .env

Пакет internal не даст случайно импортировать внутренние модули снаружи — чистая архитектура из коробки.

🐹

Готов создать Go-бота?

Посмотри, как работает «Мои друзья» — принципы те же, независимо от языка. Бесплатный бот в MAX, который помогает людям находить друзей.

Открыть бота «Мои друзья»