MaxMessenger.Bot 0.3.7-alpha

This is a prerelease version of MaxMessenger.Bot.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package MaxMessenger.Bot --version 0.3.7-alpha
                    
NuGet\Install-Package MaxMessenger.Bot -Version 0.3.7-alpha
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MaxMessenger.Bot" Version="0.3.7-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MaxMessenger.Bot" Version="0.3.7-alpha" />
                    
Directory.Packages.props
<PackageReference Include="MaxMessenger.Bot" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MaxMessenger.Bot --version 0.3.7-alpha
                    
#r "nuget: MaxMessenger.Bot, 0.3.7-alpha"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MaxMessenger.Bot@0.3.7-alpha
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MaxMessenger.Bot&version=0.3.7-alpha&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=MaxMessenger.Bot&version=0.3.7-alpha&prerelease
                    
Install as a Cake Tool

Max.Bot — C# библиотека для Max Messenger Bot API

.NET NuGet Build License

Полнофункциональная библиотека для работы с 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.Bot
using 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.

🚀 Release Flow

  1. Обновите CHANGELOG.md, при необходимости скорректируйте версию в src/Max.Bot/Max.Bot.csproj.
  2. Выполните локальный прогон dotnet format --verify-no-changes, dotnet format analyzers --verify-no-changes --no-restore и dotnet test -c Release /p:CollectCoverage=true.
  3. Создайте тег vX.Y.Z (SemVer) и запушьте его.
  4. Workflow .github/workflows/release.yml повторно выполнит сборку/тесты, упакует с /p:ContinuousIntegrationBuild=true и отправит .nupkg/.snupkg на NuGet через секрет NUGET_API_KEY.
  5. После зелёного 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/).
  • Другие реализации для сравнения и проверки совместимости:

🔐 Аутентификация

Библиотека использует заголовок 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, и т.д.) и не хранит секреты в исходниках.

📦 Установка

  1. Установите .NET 9 SDK.
  2. В проекте выполните:
    dotnet add package MaxMessenger.Bot
    
  3. Создайте MaxClient вручную или зарегистрируйте через DI (например, в ASP.NET Core).
  4. Токен и webhook URL держите в Secret Manager/Key Vault. Добавьте .env/секретные файлы в .gitignore.

🧭 Дорожная карта

  1. ✅ Подготовка инфраструктуры
  2. ✅ Базовый HTTP клиент
  3. ✅ Базовые модели данных
  4. ✅ Core API методы
  5. ✅ Расширенные модели
  6. ✅ Полный API Max
  7. ✅ Обработка событий (polling + webhook)
  8. ✅ Документация, примеры, README
  9. ✅ CI/CD и публикация
  10. ⏳ Доработки по отзывам

🤝 Как внести вклад

  1. Форкните репозиторий и создайте ветку (feature/awesome-bot).
  2. Соберите и протестируйте (dotnet build -warnaserror, dotnet test).
  3. Обновите CHANGELOG.md + соответствующие разделы документации/примеров.
  4. Откройте PR, указав связанные задачи и изменения API.

📝 Лицензия

Apache License 2.0 — см. LICENSE.


Версия: 0.3.6-alpha (Phase 10)
Статус: Активная разработка
Контакты: issues/PR в репозитории

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.1-alpha 253 12/23/2025
0.4.0-alpha 134 12/23/2025
0.3.9-alpha 130 12/23/2025
0.3.8-alpha 133 12/23/2025
0.3.7-alpha 131 12/23/2025
0.3.6-alpha 129 12/23/2025
0.3.5-alpha 135 12/22/2025
0.3.4-alpha 133 12/22/2025
0.3.3-alpha 135 11/27/2025
0.3.2-alpha 144 11/25/2025
0.3.1-alpha 134 11/25/2025
0.3.0-alpha 138 11/24/2025
0.2.7-alpha 143 11/24/2025
0.2.6-alpha 139 11/24/2025
0.2.5-alpha 140 11/24/2025
0.2.4-alpha 139 11/23/2025
0.2.3-alpha 94 11/23/2025
0.2.2-alpha 353 11/18/2025
0.2.1-alpha 340 11/17/2025
0.2.0-alpha 342 11/17/2025

See CHANGELOG.md for details.