Skip to main content

Async framework for building bots for MAX messenger (aiogram-style)

Project description

#maxbot

Асинхронный Python-фреймворк для создания ботов в мессенджере MAX .

🎯 Синтаксис как у aiogram 🚀 Поддержка polling (с очередями и параллелизмом) 💬 Inline-кнопки 📦 Работа с файлами (image / video / audio / file) ⚡ Оптимизирован под нагрузку

⚠️ Важные изменения API (обязательно прочитать) 🔐 Авторизация

❌ access_token в query больше НЕ поддерживается ✅ Используется только заголовок:

Authorization: 📎 Работа с файлами (новая логика)

Теперь ВСЕ типы файлов работают одинаково:

Получаем upload_url через /uploads Загружаем файл Получаем payload (JSON) Передаём весь payload в attachments

❌ Старое:

"payload": { "token": "..." }

✅ Новое:

"payload": { ...весь JSON ответа upload... } 🎬 Видео / аудио

Раньше:

token брался из /uploads

Теперь:

token приходит после загрузки файла используется через payload 💬 Reply (ответ на сообщение)

Добавлено поле link:

"link": { "type": "reply", "mid": "message_id" } Установка pip install umaxbot Пример from maxbot.bot import Bot from maxbot.dispatcher import Dispatcher from maxbot.types import InlineKeyboardMarkup, InlineKeyboardButton, Message

bot = Bot("YourToken") dp = Dispatcher(bot)

@dp.message() async def on_message(message: Message): keyboard = InlineKeyboardMarkup(inline_keyboard=[ [InlineKeyboardButton(text="👋 Поздороваться", callback_data="hello")] ]) await bot.send_message( chat_id=message.sender.id, text="Привет! Нажми на кнопку ниже:", reply_markup=keyboard )

@dp.callback() async def on_callback(cb): if cb.payload == "hello": await bot.send_message(cb.user.id, "Приятно познакомиться!") 🚀 Новое: reply (ответ на сообщение) await bot.reply( message_id=message.mid, chat_id=message.chat_id, text="Ответ на сообщение" ) 🚀 Производительность (новый Dispatcher)

Теперь Dispatcher поддерживает:

✅ очередь (Queue) ✅ воркеры ✅ параллельную обработку ✅ ограничение нагрузки (Semaphore) ✅ защиту от падений Пример настройки: dp = Dispatcher(bot, workers=10, max_tasks=200) Рекомендации: Нагрузка Настройки Маленькая workers=5, max_tasks=50 Средняя workers=10, max_tasks=200 Высокая workers=20+, max_tasks=500+ Класс Bot: основные методы Метод Описание get_me() Получить информацию о боте send_message(...) Отправить сообщение reply(...) Ответить на сообщение send_file(...) Отправить файл update_message(...) Изменить сообщение delete_message(...) Удалить сообщение answer_callback(...) Ответить на callback download_media(...) Скачать файл

Все методы асинхронные!

📎 Пример отправки файла await bot.send_file( chat_id=message.chat_id, file_path="video.mp4", media_type="video", text="Вот видео" ) 📥 Работа с медиа @dp.message() async def on_message(msg: Message): audio = msg.get_attachment("audio") if audio: await audio.download(bot, "voice.ogg")

for img in msg.get_attachments("image"):
    await img.download(bot)

FSM (Finite State Machine) from maxbot.fsm import State, StatesGroup

class Form(StatesGroup): name = State() age = State()

@dp.message() async def on_message(msg: Message): await msg.set_state(Form.name) await msg.update_data(name="Вова") await msg.reset_state() Роутеры (Router) from maxbot.router import Router

router = Router()

@router.message() async def any_text(message): await message.reply("Любой текст!")

dp.include_router(router) Фильтры from maxbot.filters import F, StateFilter, TextStartsFilter

@dp.message(F.text == "привет") async def on_hello(msg): await msg.reply("И тебе привет!") Inline-клавиатуры kb = InlineKeyboardMarkup(inline_keyboard=[ [InlineKeyboardButton(text="Сайт", url="https://max.ru")], [InlineKeyboardButton(text="Нажми", callback_data="click")] ]) Типы Message Callback Attachment InlineKeyboardMarkup Dispatcher / Router FSM ⚠️ Ограничения API MAX До 30 запросов/сек Файлы до 4 ГБ Видео/аудио требуют времени на обработку 💡 Рекомендации для продакшена

Если планируешь масштаб:

Используй очередь (Redis / RabbitMQ) Выноси тяжёлые задачи (AI, генерация) в отдельные воркеры Кешируй upload payload (не загружай файлы повторно) Делай retry с backoff MAXBot

Быстрый старт, высокая производительность и архитектура, готовая к росту 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

umaxbot-0.2.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

umaxbot-0.2.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file umaxbot-0.2.0.tar.gz.

File metadata

  • Download URL: umaxbot-0.2.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for umaxbot-0.2.0.tar.gz
Algorithm Hash digest
SHA256 29d3e678f5e7e19cc3138ec229b8f106bb8f342201e8104cd1223c360ab48241
MD5 582d2822ceb9d11d9e79d4b00e4827d6
BLAKE2b-256 9f03b9bd13249f5bcc171d5f8799a124e9c00156969209d465d6166a932cb68d

See more details on using hashes here.

File details

Details for the file umaxbot-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: umaxbot-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for umaxbot-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de930263c692d7b94113a4c782e2722c8d159521fe8b0a014a39e1157bf471f7
MD5 ec44fe41acccc5e8fe2da85efc213826
BLAKE2b-256 45899da82553eba9dd1fae6e19ef7979e6670d1da8c5af7ac36b5685bd4f74e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page