Библиотека Golang
Если вы пишете ботов на GO, рекомендуем использовать нашу официальную библиотеку MAX Bot API. Расширенную версию библиотеки с примерами реализации смотрите на GitHub
В этом разделе разберём, как подключить библиотеку MAX Bot API и эффективно использовать стандартные методы и утилиты, которыми она располагает
Устанавливаем MAX Bot API
Чтобы установить библиотеку MAX Bot API, зарегистрируйте бота на платформе и подключитесь к API MAX — следуйте подсказкам в разделе «Подготовка и управление»
Все примеры в этом разделе написаны на GO с переменными окружения
1. Создайте новый проект my-first-bot
и установите библиотеку. Для этого откройте терминал и выполните следующие команды:
# Создайте новую папку для исходного кода вашего модуля 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
будет иметь следующую структуру
package main
import "fmt"
func main() {
fmt.Println("Hello Max Bot Go")
}
В данном случае пакет называется main
. Определение пакета должно идти в начале файла
Есть два типа пакетов: исполняемые (executable
) и библиотеки (reusable
). Для создания исполняемых файлов пакет должен иметь имя main
. Все остальные пакеты не являются исполняемыми. При этом пакет main
должен содержать функцию main
, которая является входной точкой в приложение
3. Создайте экземпляр класса Bot и передайте токен из @MasterBot в его конструктор через переменные окружения. Импортируйте в наш пакет main
установленный модуль
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. Запустите бота
# Передайте переменную окружения и запустите бота
BOT_TOKEN="<your_token_here>" go run
Работаем с обновлениями
Данная программа выведет только информацию о вашем боте и закончит работу. Чтобы бот заработал, необходим обработчик событий из канала с обновлениями
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"))
}
}
}
Поздравляем, вы написали первого бота!
Если у вас возникли вопросы, посмотрите раздел с ответами