Полнофункциональная библиотека для работы с Max Messenger Bot API на .NET 9. Проект фокусируется на типобезопасности, удобстве интеграции и масштабируемости корпоративных ботов.
- Асинхронный
MaxClientс полной реализацией REST-эндпоинтов Max Messenger. - Модульные API-клиенты (
BotApi,MessagesApi,ChatsApi,UsersApi,FilesApi,SubscriptionsApi) и строгие модели данных. - Надёжный HTTP-стек c retry/backoff, логированием, обработкой rate-limit и ошибок сети.
- Два механизма получения обновлений: long polling и безопасный webhook конвейер.
- Полная XML-документация всех публичных типов + автотесты, проверяющие наличие комментариев.
dotnet add package MaxMessenger.Botusing Max.Bot;
using Max.Bot.Configuration;
using Max.Bot.Types.Enums;
var client = new MaxClient(new MaxBotOptions
{
Token = Environment.GetEnvironmentVariable("MAX_BOT_TOKEN")!,
DispatchAllowedUpdateTypes = new[] { UpdateType.Message }
});
var me = await client.Bot.GetMeAsync();
Console.WriteLine($"Hello from {me.Username}");
await client.Messages.SendMessageAsync(
chatId: 1234567890,
text: "It works! ✅");✅ Полноценные примеры (echo-бот, команды, кнопки, файлы) живут в examples/Max.Bot.Examples и доступны как RunAsync() сценарии.
- Telegram.Bot — структура клиента, подход к документации и примерам.
- VkNet — богатые модели, расширяемые API и контроль ошибок.
Полный roadmap находится в DEVELOPMENT_PLAN.md.
dotnet build -warnaserror— проверяет, что все публичные API имеют XML-доки.dotnet test— >400 модульных тестов, включаяDocumentationCoverageTestsи проверки сериализации.- GitHub Actions workflow
.github/workflows/ci.yml(Ubuntu + Windows) гоняет форматирование,dotnet format analyzers, покрытие (>70 % линий, целимся в 85 %) иdotnet pack, загружая артефакты для ревью. - Smoke-тесты для примеров используют
LoopbackSampleRuntimeи проходят весьSampleRegistry, повторяя подход Telegram.Bot и VkNet к офлайн-интеграциям, чтобы код примеров и документация не расходились. - Фикстуры API (
tests/Max.Bot.Tests/Integration/Fixtures) помогают детерминированно воспроизводить ответы/subscriptionsи/updatesбез реального HTTP.
- Обновите
CHANGELOG.md, при необходимости скорректируйте версию вsrc/Max.Bot/Max.Bot.csproj. - Выполните локальный прогон
dotnet format --verify-no-changes,dotnet format analyzers --verify-no-changes --no-restoreиdotnet test -c Release /p:CollectCoverage=true. - Создайте тег
vX.Y.Z(SemVer) и запушьте его. - Workflow
.github/workflows/release.ymlповторно выполнит сборку/тесты, упакует с/p:ContinuousIntegrationBuild=trueи отправит.nupkg/.snupkgна NuGet через секретNUGET_API_KEY. - После зелёного workflow проверьте запись на NuGet.org и оформите GitHub Release. Подробный чеклист в
RELEASING.md.
- Автогенерируемый XML-файл:
src/Max.Bot/bin/Debug/net9.0/Max.Bot.xml(включён в NuGet). - Официальный Max Messenger API: dev.max.ru/docs-api (локальная копия —
docs/max-api-docs/). - Другие реализации для сравнения и проверки совместимости:
- TypeScript — max-bot-api-client-ts
- Go — max-bot-api-client-go
Библиотека использует заголовок Authorization: <token> для аутентификации, как указано в официальной документации MAX API. Токен передаётся через заголовок, а не через query-параметры (старый способ больше не поддерживается API).
Реализация проверена на соответствие официальной документации MAX API и поддерживает совместимость с реализациями на TypeScript и Go. Все модели типов используют snake_case для JSON-полей, соответствующих API, а query-параметры также используют snake_case согласно документации.
| Проект | Описание |
|---|---|
EchoBotExample |
Минимальный echo-бот, показывает базовый цикл обработки. |
CommandBotExample |
Командный роутер (inspired by Telegram.Bot CommandHandlers). |
KeyboardBotExample |
Reply/inline клавиатуры + работа с callback query. |
FileBotExample |
Загрузка и отправка файлов, пересылка медиа. |
Каждый пример конфигурируется через переменные окружения (MAX_BOT_TOKEN, MAX_WEBHOOK_URL, и т.д.) и не хранит секреты в исходниках.
- Установите .NET 9 SDK.
- В проекте выполните:
dotnet add package MaxMessenger.Bot
- Создайте
MaxClientвручную или зарегистрируйте через DI (например, в ASP.NET Core). - Токен и webhook URL держите в Secret Manager/Key Vault. Добавьте
.env/секретные файлы в.gitignore.
- ✅ Подготовка инфраструктуры
- ✅ Базовый HTTP клиент
- ✅ Базовые модели данных
- ✅ Core API методы
- ✅ Расширенные модели
- ✅ Полный API Max
- ✅ Обработка событий (polling + webhook)
- ✅ Документация, примеры, README
- ✅ CI/CD и публикация
- ⏳ Доработки по отзывам
- Форкните репозиторий и создайте ветку (
feature/awesome-bot). - Соберите и протестируйте (
dotnet build -warnaserror,dotnet test). - Обновите
CHANGELOG.md+ соответствующие разделы документации/примеров. - Откройте PR, указав связанные задачи и изменения API.
Apache License 2.0 — см. LICENSE.
Версия: 0.4.1-alpha
Статус: Активная разработка
Контакты: issues/PR в репозитории