В разделе «Чат-боты» документации MAX у языка Go есть собственная страница — «Библиотека Golang». Читается она неожиданно: прежде чем дойти до мессенджера, страница объясняет читателю сам язык — что такое пакеты, чем исполняемый пакет отличается от библиотеки и зачем нужна функция main. А вот довести код до запуска по ней не выйдет: из трёх примеров на Go без правок собирается только первый, пакет os вызывается, но не импортируется, команда запуска оставлена без цели. При этом сама библиотека — в полном порядке: репозиторий обновлялся 7 августа 2026 года, и его образцовый пример написан безупречно. Мы прошли страницу построчно, сверили её с репозиторием и README — и собрали все расхождения в один материал.

3примера кода на Go даёт страница — без правок собирается только первый
0импортов пакета os в примерах — при двух вызовах os.Getenv
88звёзд у официального репозитория библиотеки — он живее своей страницы
0 из 192статей справки MAX произносят слово «библиотека»

Учебник внутри инструкции: страница объясняет сам язык

Страница называется «Настройка сценариев работы бота с помощью библиотеки Golang» и открывается рекомендацией: «рекомендуем использовать нашу официальную библиотеку MAX Bot API». Дальше читателя ждёт не справочник по методам мессенджера, а вводный курс: что делает команда go mod init, как устроен файл go.mod, зачем каждому файлу ключевое слово package.

Есть два типа пакетов: исполняемые (executable) и библиотеки (reusable). Для создания исполняемых файлов пакет должен иметь имя main.

Страница «Библиотека Golang», dev.max.ru

Для продуктовой документации это редкий жанр: соседние страницы того же раздела рассказывают про API мессенджера, а эта — про устройство чужого языка программирования. Заканчивается урок бодро: «Поздравляем, вы написали первого бота!» Проблема в том, что два из трёх примеров с этой страницы не собираются.

Три примера кода — собирается один

На странице три блока кода на Go и два на Bash. Судьба каждого из трёх:

  • Первый — классический hello world: пакет main, импорт "fmt", одна строка вывода. Собирается и работает.
  • Второй создаёт объект API: maxbot.New(os.Getenv("TOKEN")). В импортах при этом только "fmt" и сама библиотека — пакета "os" нет, и компилятор Go останавливается на первом же os.Getenv с ошибкой «undefined: os». Мы проверили всю страницу: вызовов os.Getenv на ней два, строки "os" в импортах — ноль.
  • Третий, финальный, добавляет обработчик обновлений — и вместе с ним context.WithCancel, os.Signal, signal.Notify и тип schemes.MessageCreatedUpdate. Ни один из четырёх пакетов не импортирован. Бонус — комментарий, оборванный на полуслове: // создам. Что именно автор собирался создать, история умалчивает.

Команда запуска тоже не доведена: пример предлагает выполнить go run — и всё. Без имени файла или точки в конце инструмент Go откажется работать: ему не сказали, что запускать.

Рабочая версия того же бота лежит в самом репозитории библиотеки — файл example/simple/main.go: там импортированы и os, и context, и модель данных. Если бот собрался, но молчит, — причина обычно не в коде, а в подписке на события.

Невидимая опечатка в имени языка

Дважды страница называет язык словом, в котором первая буква — латинская G, а вторая — кириллическая «о». На экране такое слово неотличимо от честного латинского Go, но для поиска это два разных слова: браузерный поиск по латинскому «Go» оба гибридных вхождения пропустит. Для сравнения: полностью латинское написание Go встречается на странице четыре раза — то есть треть упоминаний имени языка набрана со скрытой кириллицей.

Это продолжение знакомой семьи опечаток dev.max.ru: мы уже находили в документации латинские буквы внутри русских слов. Здесь зеркальный случай — кириллица внутри английского слова, и заметить её без побуквенной проверки невозможно.

Репозиторий живёт — но другой версией

Сама библиотека при этом никак не заслуживает упрёков. Официальный репозиторий max-messenger/max-bot-api-client-go на GitHub жив и ухожен: 88 звёзд, ноль открытых issues, последний пуш — 7 августа 2026 года, за считаные дни до наших замеров. Страница документации честно говорит: «Расширенную версию библиотеки с примерами реализации смотрите на GitHub» — и это единственная её рекомендация, которая работает без оговорок.

Но между страницей и репозиторием пролегла мажорная версия. Ветка репозитория по умолчанию называется v2, и образцовый пример импортирует модуль по пути max-bot-api-client-go/v2. Документация же ставит библиотеку командой go get github.com/max-messenger/max-bot-api-client-go — без суффикса /v2. В мире модулей Go это не мелочь: путь без /v2 приводит другую мажорную версию пакета, со старыми сигнатурами.

Разница видна прямо в коде. На странице конструктор называется New и возвращает одно значение: api := maxbot.New(os.Getenv("TOKEN")). В примере из репозитория у конструктора другое имя и два результата: api, err := maxbot.NewApi(os.Getenv("BOT_TOKEN"), opts...). Даже переменная окружения с токеном называется по-разному — BOT_TOKEN вместо TOKEN. Скопировать пример со страницы и «долечить» его импортами недостаточно: с библиотекой v2 он всё равно не совпадёт по интерфейсу.

README спорит с документацией о рождении бота

README репозитория вежлив к новичкам: «Если вы новичок, то можете прочитать официальную документацию, написанную разработчиками Max». Но собственный «Быстрый старт» он излагает по-своему: откройте диалог с MasterBot, «следуйте инструкциям и создайте нового бота», и «После создания бота MasterBot отправит вам токен».

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

Мелкий, но характерный штрих: ссылка «Документация» в README ведёт в ветку master — при том что веткой по умолчанию репозиторий назначил v2.

В чём все согласны: токен — в переменные окружения

Единственный пункт, где страница, README и пример репозитория говорят в один голос, — обращение с токеном. Документация формулирует прямо: «Мы рекомендуем передавать токен через переменные окружения», потому что «использовать токен в коде — плохая практика». Пример репозитория так и устроен, README отдаёт выдачу токена мастер-боту — в код секрет не попадает нигде.

Пользовательской справки всё это не касается вовсе: из её 192 статей слово «библиотека» не встречается ни в одной, как и «Golang», как и «компилировать». Справка описывает ботов глазами пользователя — например, как вести групповые чаты, — а вся разработка целиком живёт на dev.max.ru. Тем важнее, чтобы эта единственная точка входа собиралась без ошибок.

Частые вопросы

Можно ли написать бота для MAX на Go?

Да. Библиотека MAX Bot API для Go — официальная, её репозиторий активно обновляется: последний пуш — 7 августа 2026 года. Начинать стоит с примера example/simple/main.go из репозитория, а не с кода на странице документации.

Почему примеры со страницы «Библиотека Golang» не запускаются?

Во втором и третьем примерах используются пакеты os, context, os/signal и schemes, которых нет в импортах, — компилятор Go такие программы не принимает. Команда запуска go run дана без цели. Чинится добавлением недостающих импортов и запуском go run . — либо готовым примером из репозитория.

Какую версию библиотеки ставить?

Актуальная ветка репозитория — v2, и импортировать модуль нужно по пути с суффиксом /v2, как это делает пример из самого репозитория. Команда go get со страницы документации написана без суффикса и приводит другую мажорную версию с иными сигнатурами.

Где взять токен для бота на Go?

README библиотеки отправляет за токеном к MasterBot, документация платформы — в расширенные настройки кабинета. Каким бы путём вы ни шли, хранить токен нужно в переменных окружения, а не в коде — на этом сходятся все три источника.

Развиваете канал или бота в MAX?

Добавьте его в каталог MaxOfficial — читатели находят каналы через поиск и подборки, а статистика копится автоматически.

Добавить канал в каталог
бот на Go в MAXбиблиотека Golang MAXMAX Bot APIgo get библиотека MAXпример бота MAX
Разбор основан на видимом тексте страницы «Библиотека Golang» раздела «Чат-боты» dev.max.ru, README и примере официального репозитория библиотеки; все замеры — по снимкам от 12 августа 2026 года. Числа справки — по корпусу из 192 статей help.max.ru.