Skip to main content

Библиотека для разработки чат-ботов с помощью API мессенджера MAX

Project description

MaxAPI

MAX ЧатTG Чат

PyPI version PyPI downloads per month Python Version Coverage Tests Ruff Docs License

Документация и ссылки

Возможности

  • Асинхронный Bot с тонкими обёртками над методами MAX Bot API.
  • Dispatcher, Router, фильтры, F и middleware в стиле aiogram.
  • FSM-контекст через MemoryContext и RedisContext.
  • Polling и webhook через aiohttp, FastAPI или Litestar.
  • Работа с медиа: загрузка, отправка и скачивание файлов.
  • Inline-кнопки, callbacks и типизированные callback payloads.

Установка из PyPI

Стабильная версия

pip install maxapi

Если проект управляется через uv:

uv add maxapi

Установка из GitHub

Свежая версия, возможны баги. Рекомендуется только для ознакомления с новыми коммитами.

pip install git+https://github.com/love-apples/maxapi.git

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

Если вы тестируете бота в чате - не забудьте дать ему права администратора!

Запуск Polling

Если у бота есть активные Webhook-подписки, события не будут приходить через start_polling. Перед переходом на polling удалите подписки через await bot.delete_webhook().

import asyncio
import logging

from maxapi import Bot, Dispatcher, F
from maxapi.filters.command import CommandStart
from maxapi.types import BotStarted, MessageCreated

logging.basicConfig(level=logging.INFO)

# Внесите токен бота в переменную окружения MAX_BOT_TOKEN
# Не забудьте загрузить переменные из .env в os.environ
# или задайте его аргументом в Bot(token='...')
bot = Bot()
dp = Dispatcher()

# Ответ бота при нажатии на кнопку "Начать"
@dp.bot_started()
async def bot_started(event: BotStarted):
    await bot.send_message(
        chat_id=event.chat_id,
        text='Привет! Отправь мне /start'
    )

# Ответ бота на команду /start
@dp.message_created(CommandStart())
async def hello(event: MessageCreated):
    await event.message.answer("Пример чат-бота для MAX 💙")


@dp.message_created(F.message.body.text)
async def echo(event: MessageCreated):
    await event.message.answer(event.message.body.text)


async def main():
    await dp.start_polling(bot)


if __name__ == '__main__':
    asyncio.run(main())

Запуск Webhook

Webhook работает «из коробки» — aiohttp уже включён в базовый пакет:

pip install maxapi

Для проекта на uv:

uv add maxapi

Ниже простой запуск через aiohttp. Для production-интеграции с FastAPI, подпиской webhook и проверкой secret смотрите пример 09_webhook_bot.py.

import asyncio
import logging

from maxapi import Bot, Dispatcher
from maxapi.filters.command import CommandStart
from maxapi.types import MessageCreated

logging.basicConfig(level=logging.INFO)

bot = Bot()
dp = Dispatcher()


# Команда /start боту
@dp.message_created(CommandStart())
async def hello(event: MessageCreated):
    await event.message.answer("Привет из вебхука!")


async def main():
    await dp.handle_webhook(
        bot=bot,
        host='0.0.0.0',
        port=8080,
    )


if __name__ == '__main__':
    asyncio.run(main())

FastAPI и Litestar

Если хотите использовать FastAPI или Litestar вместо aiohttp, установите нужную опциональную зависимость через pip:

pip install "maxapi[fastapi]"
pip install "maxapi[litestar]"

Или через uv:

uv add "maxapi[fastapi]"
uv add "maxapi[litestar]"

Пример запуска через FastAPI:

import asyncio
import uvicorn
from fastapi import FastAPI
from maxapi.webhook.fastapi import FastAPIMaxWebhook

async def main():
    webhook = FastAPIMaxWebhook(dp=dp, bot=bot)
    app = FastAPI(lifespan=webhook.lifespan)
    webhook.setup(app, path='/webhook')
    await uvicorn.Server(uvicorn.Config(app, host='0.0.0.0', port=8080)).serve()

asyncio.run(main())

Пример запуска через Litestar:

import asyncio
import uvicorn
from maxapi.webhook.litestar import LitestarMaxWebhook

async def main():
    webhook = LitestarMaxWebhook(dp=dp, bot=bot)
    app = webhook.create_app(path='/webhook')
    await uvicorn.Server(uvicorn.Config(app, host='0.0.0.0', port=8080)).serve()

asyncio.run(main())

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

maxapi-1.2.0.tar.gz (214.7 kB view details)

Uploaded Source

Built Distribution

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

maxapi-1.2.0-py3-none-any.whl (217.8 kB view details)

Uploaded Python 3

File details

Details for the file maxapi-1.2.0.tar.gz.

File metadata

  • Download URL: maxapi-1.2.0.tar.gz
  • Upload date:
  • Size: 214.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for maxapi-1.2.0.tar.gz
Algorithm Hash digest
SHA256 cd71ff0853729df46ead895440561928cfd5498325216973b4188d844947f3c5
MD5 fadf80e45aaee79172be5f8f6071bede
BLAKE2b-256 c79df1c85f1c0050669908d6bea0914f381c93292a450d75e5e18cc9da914994

See more details on using hashes here.

Provenance

The following attestation bundles were made for maxapi-1.2.0.tar.gz:

Publisher: publish.yml on love-apples/maxapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file maxapi-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: maxapi-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 217.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for maxapi-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3198acb5cc1ca851a1b242f2cf8f28dbad0756a8c71ce1a95fb579e97a05f7e
MD5 e0df59fadaef1508daf73534b5dc8de1
BLAKE2b-256 0964d5cde3ed1a06328898036197f4737406e52f5cb3cef0efa15149a72eae73

See more details on using hashes here.

Provenance

The following attestation bundles were made for maxapi-1.2.0-py3-none-any.whl:

Publisher: publish.yml on love-apples/maxapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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