maxbot
Библиотека находится в разработке, доступен не весь функционал!
Rust-библиотека для создания ботов на платформе MAX
API: https://dev.max.ru/docs-api
Библиотека предоставляет удобный, асинхронный и типобезопасный интерфейс ко всем методам API MAX: отправка сообщений (с разбиением длинного текста), загрузка файлов, управление чатами и участниками, inline-клавиатуры, обработка callback-запросов, webhook/long polling и многое другое.
Важно: API MAX доступен только для российских юридических лиц и индивидуальных предпринимателей. Для получения токена бота обратитесь к документации MAX.
📦 Установка
Добавьте в Cargo.toml:
[]
= "0.1.0"
= { = "1", = ["full"] }
🚀 Быстрый старт
1. Создайте клиент
use MaxClient;
let token = var.expect;
let client = new;
2. Отправьте простое сообщение (Builder)
use ;
let mids = client.send_message_builder.await?;
println!;
3. Отправьте сообщение с inline-клавиатурой и обработайте нажатие
use ;
// Отправка сообщения с клавиатурой
let keyboard = new
.button
.button
.build;
let mids = client.send_message_builder.await?;
// Ожидание callback
let params = GetUpdatesParams ;
let = client.get_updates.await?;
for update in updates
4. Отправка файла (изображения, видео, аудио, документа)
use ;
let builder = new
.text
.chat_id
.attachment;
client.send_message_builder.await?;
📚 Полная документация API
Все методы сгруппированы в impl MaxClient:
| Модуль | Методы |
|---|---|
| bot | get_me() – информация о боте |
| chats | get_chat, get_chats, update_chat, delete_chat, leave_chat, get_chat_members, get_chat_admins, add_chat_admin, remove_chat_admin, add_chat_members, remove_chat_member, get_bot_member, send_chat_action, get_pinned_message, pin_message, unpin_message |
| messages | send_message (и send_message_builder), forward_message, delete_message, delete_messages |
| updates | get_updates, answer_callback_query |
| subscriptions | get_subscriptions, create_subscription, delete_subscription |
Все методы асинхронны, используют reqwest и автоматически соблюдают лимит 30 запросов в секунду (rate limiting). Длинные тексты разбиваются на фрагменты до 4000 символов с сохранением целостности слов и предложений.
🧪 Примеры
Полные примеры в папке examples/:
me_demo.rs– информация о ботеsend_text_demo.rs– отправка текстаsend_long_text_demo.rs– разбиение длинного текстаsend_file_demo.rs– отправка изображенияsend_video_demo.rs– отправка видеоsend_audio_demo.rs– отправка аудиоsend_inline_keyboard_demo.rs– клавиатураcallback_demo.rs– обработка нажатий кнопокforward_demo.rs– пересылка сообщенияdelete_messages_demo.rs– отправка и удалениеask_phone_demo.rs– запрос контактаask_location_demo.rs– запрос геолокации
Запуск примера:
✅ Что уже реализовано
- Базовая HTTP-обёртка с rate limiting (30 RPS)
- Получение информации о боте (
/me) - Управление чатами: получение, обновление, удаление, выход
- Управление участниками и администраторами
- Отправка сообщений (текст, markdown, html, reply)
- Разбиение длинного текста на фрагменты (сохранение целостности слов/предложений)
- Отправка файлов (изображения, видео, аудио, документы)
- Пересылка сообщений
- Удаление сообщений (одиночное и массовое)
- Закрепление/открепление сообщений
- Действия бота (typing, upload_photo и т.д.)
- Long polling (
/updates) - Ответ на callback-запросы (inline-кнопки) – замена сообщения и уведомления
- Webhook-подписки (создание, удаление, список)
- Получение списка сообщений из чата (
/messagesс пагинацией) - Редактирование сообщений (текст, клавиатура) – через
answer_callback_query - Удобные Builder'ы для параметров сообщений и клавиатур
- Поддержка всех типов вложений: стикеры, контакты, геолокация, share
🔮 Планы на будущее
- Получение информации о видео (
/videos/{token}) - Автоматическая конвертация ответов в более удобные структуры
- Улучшенная обработка ошибок с конкретными типами
- Поддержка прокси
- Логирование через
logилиtracing - Генерация документации с примерами на docs.rs
📄 Лицензия
Проект распространяется под лицензией MIT.
🤝 Вклад
Принимаются pull request'ы. Для крупных изменений сначала откройте issue для обсуждения.