SaaSoft.MAX.Bot 1.2.2

dotnet add package SaaSoft.MAX.Bot --version 1.2.2
                    
NuGet\Install-Package SaaSoft.MAX.Bot -Version 1.2.2
                    
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="SaaSoft.MAX.Bot" Version="1.2.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SaaSoft.MAX.Bot" Version="1.2.2" />
                    
Directory.Packages.props
<PackageReference Include="SaaSoft.MAX.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 SaaSoft.MAX.Bot --version 1.2.2
                    
#r "nuget: SaaSoft.MAX.Bot, 1.2.2"
                    
#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 SaaSoft.MAX.Bot@1.2.2
                    
#: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=SaaSoft.MAX.Bot&version=1.2.2
                    
Install as a Cake Addin
#tool nuget:?package=SaaSoft.MAX.Bot&version=1.2.2
                    
Install as a Cake Tool

MAX Bot Client для .NET

.NET клиент для работы с API мессенджера MAX. Библиотека предоставляет полный набор методов для взаимодействия с ботами, включая отправку сообщений, управление чатами и обработку событий в реальном времени.

Особенности

  • ✅ Долгосрочный polling — обработка событий в реальном времени
  • ✅ Dependency Injection — готовая интеграция с ASP.NET Core
  • ✅ Вложения — скачивание image/video/file, выбор качества видео
  • ✅ Повторы — автоматические retry при обработке вложений API

Установка

Через NuGet Package Manager

Install-Package SaaSoft.MAX.Bot

Через .NET CLI

dotnet add package SaaSoft.MAX.Bot

Через PackageReference

<PackageReference Include="SaaSoft.MAX.Bot" Version="1.2.2" />

Сертификаты Минцифры

API MAX работает на https://platform-api2.max.ru и использует TLS-сертификаты Национального удостоверяющего центра Минцифры (Russian Trusted CA). Этого корневого сертификата нет в стандартном хранилище доверенных CA Windows и .NET, поэтому без его установки запросы могут завершаться ошибкой SSL/TLS.

Добавьте сертификаты Минцифры в доверенные на машине, где запускается бот (Windows, Linux или сервер). Инструкция и файлы сертификатов — на портале Госуслуг: gosuslugi.ru/crt.

Быстрый старт

1. Получение токена бота

Перед началом работы получите токен бота в Личном кабинете разработчика MAX.

2. Базовое использование

using MAX.Bot;
using MAX.Bot.Interfaces;
using MAX.Bot.Interfaces.Models;

// Создание клиента с токеном
var botClient = new MaxBotClient("YOUR_BOT_TOKEN");

// Получение информации о боте
var botInfo = await botClient.GetMeAsync();
Console.WriteLine($"Бот: {botInfo.FirstName} (ID: {botInfo.Id})");

// Отправка сообщения
await botClient.SendMessageAsync(new SendMessageRequest
{
    ChatId = 123456789,
    Text = "Привет от бота! 👋",
    Format = MessageFormat.Markdown,
});

// Получение обновлений
var _ = botClient.PollUpdatesWithCallback(
    async (update, client) =>
    {
        if (update is MessageCreatedUpdate messageCreated)
        {
            Console.WriteLine($"Сообщение: {messageCreated.Message?.Body?.Text}");

            await client.SendMessageAsync(new SendMessageRequest
            {
                Text = messageCreated.Message?.Body?.Text,
                ChatId = -70581633278133,
            });
        }
    },
    limit: 100,
    timeout: 90,
    types: new List<string> { UpdateTypes.MessageCreated }
);

Способы создания клиента

1. Простой конструктор (рекомендуется для консольных приложений)

using MAX.Bot.Interfaces.Models.Attachment;

// С токеном и таймаутом по умолчанию (30 секунд)
var client = new MaxBotClient("your_token_here");

// С кастомным таймаутом и retry для вложений
var client = new MaxBotClient("your_token_here", timeoutSeconds: 60,
    attachmentRetryOptions: new AttachmentRetryOptions { MaxAttempts = 4, RetryDelay = TimeSpan.FromSeconds(2) });

2. Dependency Injection (рекомендуется для ASP.NET Core)

// В Program.cs
builder.Services.AddMaxBotClient(builder.Configuration["MaxBot:Token"]);

// В классе сервиса
public class BotService
{
    private readonly IMaxBotClient _botClient;
    
    public BotService(IMaxBotClient botClient)
    {
        _botClient = botClient;
    }
    
    public async Task SendWelcomeMessage(long chatId)
    {
        await _botClient.SendMessageAsync(new SendMessageRequest
        {
            ChatId = chatId,
            Text = "Добро пожаловать!"
        });
    }
}

Скачивание файлов

using MAX.Bot.Interfaces.Models.Attachment;
using MAX.Bot.Interfaces.Models.Response;

var message = await botClient.GetMessageByIdAsync("message_id");

foreach (var attachment in message.Body?.Attachments ?? [])
{
    try
    {
        var result = await botClient.DownloadAttachmentAsync(attachment, new DownloadAttachmentOptions
        {
            FilePath = Path.Combine("downloads", message.Body!.Mid!),
            VideoQuality = VideoQuality.Mp4_720,
        });

        Console.WriteLine($"Сохранено: {result.SavedFilePath}");
    }
    catch (NotSupportedException)
    {
        // sticker, keyboard и др. — скачивание не поддерживается
    }
}

Без FilePath содержимое возвращается в result.Content:

var result = await botClient.DownloadAttachmentAsync(attachment, new DownloadAttachmentOptions
{
    VideoQuality = VideoQuality.Mp4_720,
});

var content = result.Content!;
Console.WriteLine($"Получено {content.Length} байт");

API методов

Документация API методов для реализации в библиотеке.

Легенда статусов

  • ✅ — Реализовано полностью
  • 🚧 — Реализовано частично
  • ❌ — Не реализовано

Методы API

🤖 Bots
Метод Описание Ссылка Статус
GET Получение информации о боте GET/me ✅
PATCH Редактирование команд бота PATCH/me/commands ✅
✉️ Messages
Метод Описание Ссылка Статус
GET Получение сообщений GET/messages ✅
POST Отправить сообщение POST/messages ✅
PUT Редактировать сообщение PUT/messages ✅
DEL Удалить сообщение DELETE/messages ✅
GET Получить сообщение GET/messages/-messageId- ✅
GET Получить информацию о видео GET/videos/-videoToken- ✅
POST Ответ на callback POST/answers ✅
💬 Chats
Метод Описание Ссылка Статус
GET Получение списка всех групповых чатов GET/chats ✅
GET Получение информации о групповом чате GET/chats/-chatId- ✅
PATCH Изменение информации о групповом чате PATCH/chats/-chatId- ✅
DEL Удаление группового чата DELETE/chats/-chatId- ✅
POST Отправка действия бота в групповой чат POST/chats/-chatId-/actions ✅
GET Получение закреплённого сообщения в групповом чате GET/chats/-chatId-/pin ✅
PUT Закрепление сообщения в групповом чате PUT/chats/-chatId-/pin ✅
DEL Удаление закреплённого сообщения в групповом чате DELETE/chats/-chatId-/pin ✅
GET Получение информации о членстве бота в групповом чате GET/chats/-chatId-/members/me ✅
DEL Удаление бота из группового чата DELETE/chats/-chatId-/members/me ✅
GET Получение списка администраторов группового чата GET/chats/-chatId-/members/admins ✅
POST Назначить администратора группового чата POST/chats/-chatId-/members/admins ✅
DEL Отменить права администратора в групповом чате DELETE/chats/-chatId-/members/admins/-userId- ✅
GET Получение участников группового чата GET/chats/-chatId-/members ✅
POST Добавление участников в групповой чат POST/chats/-chatId-/members ✅
DEL Удаление участника из группового чата DELETE/chats/-chatId-/members ✅
📡 Subscriptions
Метод Описание Ссылка Статус
GET Получение подписок GET/subscriptions ✅
POST Подписка на обновления POST/subscriptions ✅
DEL Отписка от обновлений DELETE/subscriptions ✅
GET Получение обновлений GET/updates ✅
📁 Upload
Метод Описание Ссылка Статус
POST Загрузка файлов POST/uploads ✅
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  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 is compatible.  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. 
.NET Framework net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 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
1.2.2 180 8/18/2026
1.2.1 176 7/21/2026
1.2.0 150 7/13/2026
1.1.1 274 5/28/2026
1.1.0 210 5/6/2026
1.0.8 120 5/5/2026
1.0.7 378 3/20/2026
1.0.6 123 3/20/2026
1.0.5 3,223 2/12/2026
1.0.4 135 2/12/2026
1.0.3 128 2/10/2026
1.0.2 133 2/6/2026
1.0.0 139 2/4/2026