Библиотека Golang

Если вы пишете ботов на GO, рекомендуем использовать нашу официальную библиотеку MAX Bot API. Расширенную версию библиотеки с примерами реализации смотрите на GitHub

В этом разделе разберём, как подключить библиотеку MAX Bot API и эффективно использовать стандартные методы и утилиты, которыми она располагает

Устанавливаем MAX Bot API

Чтобы установить библиотеку MAX Bot API, зарегистрируйте бота на платформе и подключитесь к API MAX — следуйте подсказкам в разделе «Подготовка и управление»

Все примеры в этом разделе написаны на GO с переменными окружения

1. Создайте новый проект my-first-bot и установите библиотеку. Для этого откройте терминал и выполните следующие команды:

BASH
Скопировать
# Создайте новую папку для исходного кода вашего модуля Go и перейдите в неё mkdir my-first-bot cd my-first-bot # Запустите свой модуль с помощью команды go mod init. go mod init first-max-bot # Установите библиотеку для работы с MAX API на golang go get github.com/max-messenger/max-bot-api-client-go

Команда go mod init создает файл go.mod для отслеживания зависимостей вашего кода. Пока что файл включает только имя вашего модуля и версию Go, которую поддерживает ваш код

2. Теперь создайте файл, например, bot.go

Весь код в языке Go организуется в пакеты. Пакеты представляют удобную организацию разделения кода на отдельные части или модули. Модульность позволяет определять один раз пакет с нужной функциональностью и потом использовать его многократно в различных программах. Код пакета располагается в одном или нескольких файлах с расширением go. Для определения пакета применяется ключевое слово package. Поэтому наш файл bot.go будет иметь следующую структуру

GO
Скопировать
package main import "fmt" func main() { fmt.Println("Hello Max Bot Go") }

В данном случае пакет называется main. Определение пакета должно идти в начале файла

Есть два типа пакетов: исполняемые (executable) и библиотеки (reusable). Для создания исполняемых файлов пакет должен иметь имя main. Все остальные пакеты не являются исполняемыми. При этом пакет main должен содержать функцию main, которая является входной точкой в приложение

3. Создайте экземпляр класса Bot и передайте токен из @MasterBot в его конструктор через переменные окружения. Импортируйте в наш пакет main установленный модуль

GO
Скопировать
package main import ( "fmt" maxbot "github.com/max-messenger/max-bot-api-client-go" ) func main() { api := maxbot.New(os.Getenv("TOKEN")) // Some methods demo: info, err := api.Bots.GetBot() fmt.Printf("Get me: %#v %#v", info, err) }

Код выше создаёт объект api, передавая токен в его конструктор New. Мы рекомендуем передавать токен через переменные окружения, т. к. использовать токен в коде — плохая практика

4. Запустите бота

BASH
Скопировать
# Передайте переменную окружения и запустите бота BOT_TOKEN="<your_token_here>" go run

Работаем с обновлениями

Данная программа выведет только информацию о вашем боте и закончит работу. Чтобы бот заработал, необходим обработчик событий из канала с обновлениями

GO
Скопировать
package main import ( "fmt" maxbot "github.com/max-messenger/max-bot-api-client-go" ) func main() { api := maxbot.New(os.Getenv("TOKEN")) // Some methods demo: info, err := api.Bots.GetBot() fmt.Printf("Get me: %#v %#v", info, err) ctx, cancel := context.WithCancel(context.Background()) // создам go func() { exit := make(chan os.Signal) signal.Notify(exit, os.Kill, os.Interrupt) <-exit cancel() }() for upd := range api.GetUpdates(ctx) { // Чтение из канала с обновлениями switch upd := upd.(type) { // Определение типа пришедшего обновления case *schemes.MessageCreatedUpdate: // Отправка сообщения _, err := api.Messages.Send(maxbot.NewMessage().SetChat(upd.Message.Recipient.ChatId).SetText("Hello from Bot")) } } }

Поздравляем, вы написали первого бота!


ℹ️ Если у вас возникли вопросы, посмотрите раздел с ответами