- Фреймворк для настройки ботов
Это Golang — фреймворк для настройки работы ботов для MAX. С помощью него вы можете настраивать бота, обрабатывать сообщения, команды, callback-запросы и события
- Обработка команд — маршрутизация для событий бота
- Контекстная обработка — каждое обновление обрабатывается с контекстом, который содержит данные, специфичные для запроса
- Поддержка Middleware — создание промежуточных обработчиков для логирования, аутентификации, ограничения частоты запросов и других задач
- Модульная архитектура — бот расширяется и настраивается под запросы
Для установки используйте команду go get:
go get github.com/max-messenger/maxbot- Создайте бота на платформе MAX для партнёров
- Получите токен бота (access_token) и установите его как переменную окружения
BOT_TOKEN - Создайте файл
main.goи вставьте следующий код:
package main
import (
"log"
"os"
"github.com/max-messenger/maxbot"
)
func main() {
// Получение токена бота из переменных окружения
access_token:= os.Getenv("BOT_TOKEN")
// Создание нового экземпляра бота
bot, err := maxbot.NewApi(access_token)
if err != nil {
log.Fatal(err)
}
// Определение обработчика для команды /start
bot.Handle("/start", func(ctx *maxbot.Context) error {
return ctx.Reply("Привет! Я MaxBot. Чем я могу помочь?")
})
// Запуск бота и начало мониторинга событий
log.Println("Бот запускается...")
bot.Start()
}- Для запуска бота в терминале выполните команду:
go run main.goПосле выполнения команды в терминале отобразится сообщение: Бот запускается...
- Откройте диалог с вашим ботом в MAX и отправьте команду
/start. Бот ответит вам приветственным сообщением:Привет! Я MaxBot. Чем я могу помочь?
Готово! Ваш бот работает
Чтобы бот получал обновления через Webhook - подписку, укажите access_token, URL и список типов событий для подписки:
bot, err := maxbot.NewApi(access_token, maxbot.WithWebhook("https://your-domain.com/webhook"))
// Типы событий: создание сообщений, получение callback
maxbot.OnMessageCreated,
maxbot.OnMessageCallback,Для регистрации обработчика необходимых событий используйте метод Handle:
// Обработка события изменения названия чата
bot.Handle(maxbot.OnChatTitleChangedEvent, func (c maxbot.Context) error {
return c.Send("Заголовок чата изменён")
})Для регистрации обработчика необходимых команд используйте метод Handle:
// Обработка команды
bot.Handle("/start", startHandler)
bot.Handle("/help", helpHandler)Для регистрации обработчика необходимых сообщений используйте метод Handle:
// Обработка всех текстовых сообщений (не начинающихся с '/')
bot.Handle(maxbot.OnMessageCreated, textHandler)Для регистрации обработчика callback-запросов используйте метод Handle:
// Связь callback-данных "pushBtn" с обработчиком `Context`
bot.HandleCallback("pushBtn", func (c maxbot.Context))Объект maxbot.Context передаётся в каждый обработчик и содержит всю информацию о сообщении, а также методы для ответа
func myHandler(ctx *maxbot.Context) error {
// Получение текстового сообщения
text := ctx.Message.Text
// Ответ сообщением
return ctx.Reply("Вы сказали: " + text)
}Промежуточные обработчики (Middleware) позволяют выполнять код до или после основных обработчиков. Используются для логирования, аутентификации или сбора метрик
// Определение middleware для логирования
loggingMiddleware := func (next maxbot.HandlerFunc) maxbot.HandlerFunc {
return func (ctx *maxbot.Context) error {
log.Printf("Получено обновление от пользователя %d", ctx.Message.From.ID)
return next(ctx)
}
}
// Применение middleware к конкретному обработчику
bot.Handle("/secret", secretHandler, loggingMiddleware)
// Глобальное применение middleware
bot.Use(loggingMiddleware)Чтобы перехватить и классифицировать ошибки с помощью middleware, используйте код:
errorMiddleware := func(next maxbot.HandlerFunc) maxbot.HandlerFunc {
return func(ctx *maxbot.Context) error {
err := next(ctx)
if err != nil {
if errors.Is(err, ErrUserNotFound) {
return ctx.Reply("Пользователь не найден")
}
return ctx.Reply("Внутренняя ошибка")
}
return nil
}
}
bot.Use(errorMiddleware)Пример базового бота, демонстрирующего обработку команд и ответы
Проект имеет открытый исходный код — вы можете сделать в проект Pull Request со своими доработками:
- Сделайте
Forkрепозитория - Создайте ветку для вашей функции:
git checkout -b feature/amazing-feature - Зафиксируйте изменения:
git commit -m 'Add some amazing feature' - Отправьте изменения в ветку:
git push origin feature/amazing-feature - Откройте
Pull Request
Этот проект лицензирован под Apache License 2.0 - подробности смотрите в файле LICENSE