Написание эхо-бота для MAX

Задача максимально простая: пользователь отправляет сообщение, а бот возвращает его обратно

Например: > Пользователь: Привет > Бот: Привет

Несмотря на простоту, именно с таких проектов обычно начинается знакомство с новой платформой. Здесь уже есть получение сообщений, обработка событий и отправка ответов пользователю

Для начала устанавливаем библиотеку: pip install maxapi

После установки импортируем необходимые компоненты и включаем логирование:

import asyncio import logging from maxapi import Bot, Dispatcher, F from maxapi.filters.command import CommandStart from maxapi.types import

# Показываем служебную информацию в консоли logging.basicConfig(level=logging.INFO)

Создаем экземпляры бота и диспетчера:

# Создаем бота с токеном доступа bot = Bot(token="abc123") # Диспетчер получает события от MAX dp = Dispatcher()

Теперь можно зарегистрировать первый обработчик:

@dp.message_created(CommandStart()) async def on_start(event: MessageCreated): await event.message.answer( "Привет! Я эхо-бот. Отправь мне любое сообщение." )

Эта строка может показаться необычной:

@dp.message_created(CommandStart())

Разберем ее по частям: - dp — диспетчер, который получает события - message_created — новое сообщение - CommandStart() — фильтр команды /start - @ — связывает правило с функцией ниже

По сути, эту конструкцию можно прочитать как обычное предложение: > Если пользователь отправил команду /start, вызови эту функцию

Теперь добавляем обработчик обычных текстовых сообщений:

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

Здесь логика похожая: - message_created — новое сообщение - F.message.body.text — сообщение содержит текст

То есть: > Если пришло текстовое сообщение, вызови эту функцию

А внутри происходит самая важная часть всего бота:

await event.message.answer( event.message.body.text )

Получаем текст пользователя и отправляем его обратно

Остается только запустить бота:

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

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

После запуска бот начинает получать события из MAX и отвечать пользователям

На первый взгляд это очень простой пример, но именно с таких проектов обычно начинается знакомство с Bot API. Дальше можно добавлять кнопки, состояния, файлы, базы данных, интеграции и более сложные сценарии общения

Полный пример Там дополнительно есть обработка кнопки "Начать", индикатор "печатает...", загрузка переменных окружения и подробные комментарии к коду

В следующих постах хочу разобрать кнопки, вложения и другие возможности MAX

GitHub: https://github.com/love-apples Библиотека для разработки ботов MAX: https://github.com/love-apples/maxapi

#python #backend #max #чатботы #программирование #opensource #maxapi