Гибкий и мощный роутер для Max Bot API Client@v1.6.15, вдохновленный принципами go-chi.
Роутер предоставляет удобный интерфейс для обработки сообщений, команд и callback-запросов, поддерживая middleware и группировку маршрутов.
go get github.com/LZTD1/max-router@v1.1.1Max Router делает разработку бота простой, чистой и эффективной:
- Интеллектуальная маршрутизация: Роутер автоматически определяет, как обработать сообщение, стараясь сделать это за меньшее время.
- Гибкие Middleware: Вы можете легко создавать цепочки обработки для всей системы или отдельных групп маршрутов.
- MaxContext: Вместо работы с «сырыми» данными SDK, ваш хендлер получает готовый инструмент для работы с пользователем -
Context. - Асинхронность из коробки: Роутер поддерживает параллельную обработку сообщений.
func main() {
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGTERM, os.Interrupt)
defer stop()
api, _ := maxbot.New(
os.Getenv("MAX_TOKEN"),
)
// Инициализация роутера
r := maxrouter.NewRouter(api)
r.Use(middleware.Recover()) // Защита от паники
r.Use(middleware.DefaultLogger())
// --- Регистрация хендлера на команду /start ---
r.HandleCommand("/start", func(ctx maxrouter.Context) error {
return ctx.Send("Привет!")
})
r.HandleText("Кто ты?", func(ctx maxrouter.Context) error {
return ctx.Reply("Я бот!")
})
// --- Обработка неизвестных команд (NotFound) ---
r.NotFound(func(c maxrouter.Context) error {
return c.Send("Извините, такую команду я еще не умею обрабатывать")
})
// --- Start polling ---
for update := range api.GetUpdates(ctx) {
r.Handle(update, ctx)
}
}Для корректной работы роутера рекомендуется использование встроенных в контекст методов Send, Reply и т.д. Использование std API внутри роутера может привести к некорректной работе.
Все примеры предоставлены в директории _examples:
- Обработка сообщений и нажатий на кнопки
- Работа с регулярными выражениями
- Использование Middleware: Применение глобальных и Scoped Middleware
- v1.1.1: Добавлены примеры и миграция на новую версию maxbot, расширены тесты middleware
- v1.1.0: Интеграция передачи контекста в обработчики запросов
- v1.0.1: Оптимизация контекста (удален mutex)
- v1.0.0: Релиз
Licensed under MIT License
