Можно посмотреть здесь: https://love-apples.github.io/maxapi/
Стабильная версия
pip install maxapiСвежая версия, возможны баги. Рекомендуется только для ознакомления с новыми коммитами.
pip install git+https://github.com/love-apples/maxapi.gitЕсли вы тестируете бота в чате - не забудьте дать ему права администратора!
Если у бота установлены подписки на Webhook - события не будут приходить при методе start_polling. При таком случае удалите подписки на Webhook через await bot.delete_webhook() перед start_polling.
import asyncio
import logging
from maxapi import Bot, Dispatcher
from maxapi.types import BotStarted, Command, 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 event.bot.send_message(
chat_id=event.chat_id,
text='Привет! Отправь мне /start'
)
# Ответ бота на команду /start
@dp.message_created(Command('start'))
async def hello(event: MessageCreated):
await event.message.answer("Пример чат-бота для MAX 💙")
async def main():
await dp.start_polling(bot)
if __name__ == '__main__':
asyncio.run(main())Webhook работает «из коробки» — aiohttp уже включён в базовый пакет:
pip install maxapiУказан пример простого запуска, для более низкого уровня можете рассмотреть этот пример.
import asyncio
import logging
from maxapi import Bot, Dispatcher
from maxapi.types import BotStarted, Command, MessageCreated
logging.basicConfig(level=logging.INFO)
bot = Bot()
dp = Dispatcher()
# Команда /start боту
@dp.message_created(Command('start'))
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 вместо aiohttp? Установите нужную опциональную зависимость:
pip install maxapi[fastapi] # FastAPI + uvicorn pip install maxapi[litestar] # Litestar + uvicornПример запуска через 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())
