- PVSM.RU - https://www.pvsm.ru -

Пишем чат-бота для мессенджера MAX на Python

Привет, коллеги! На связи ботострой на aiogram

Немного предыстории

По своему опыту я привык работать с aiogram — это удобный и отлаженный фреймворк для Telegram-ботов с большим сообществом и обширной документацией. В aiogram удобно организовывать обработку команд, создавать сложные состояния, работать с inline-клавиатурами и встроенными механизмами.

Когда начал знакомиться с мессенджером MAX, я подумал, а почему бы не попробовать написать под него модуль для разработки чат-ботов на Python? Надоело каждый день делать/дорабатывать ботов для телеграмма, захотелось приключений. Приступил к работе, результат: maxapi, мой первый модуль и я хочу вас с ним познакомить на примере long polling бота!

На старт! Создаем бота в MasterBot

Запускаем бота, отправляем /create

Пишем чат-бота для мессенджера MAX на Python - 1

Просит ник для бота, отправляем

Пишем чат-бота для мессенджера MAX на Python - 2

Ну и наконец: отправляем имя для бота

Пишем чат-бота для мессенджера MAX на Python - 3

Копируем токен на будущее, идем дальше. Открываем консоль, устанавливаем библиотеку maxapi [1]:

pip install maxapi

Создаем скрипт с названием и расширением bot.py, прописываем импорты

import asyncio
import logging

from maxapi import Bot, Dispatcher, F
from maxapi.types import MessageCreated

Настраиваем логгирование

logging.basicConfig(level=logging.INFO)

Инициализируем Bot, заменяем 'тут_ваш_токен' на токен из созданного бота MasterBot

bot = Bot('тут_ваш_токен')
dp = Dispatcher()  

Делаем свой первый асинхронный обработчик событий, в данном случае принимает новое сообщение с фильтром если есть текст, отвечая методом.answer() класса Message

@dp.message_created(F.message.body.text)
async def echo(event: MessageCreated):
    await event.message.answer(f"Повторяю за вами: {event.message.body.text}")
@dp.<тип_события>(<фильтры>)
async def <имя_функции>(event: <тип_события>):
    ...
  • dp — экземпляр Dispatcher

  • <тип_события> — тип события (в данном случае message_created)

  • <фильтр> — условие MagicFilter, по которому срабатывает хендлер (в данном случае наличие текста в сообщении)

  • event — объект события с данными (в данном случае MessageCreated)

Создаем асинхронную функцию для запуска бота в которой вызываем функцию для запуска long polling, передав в качестве аргумента экземпляр бота

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

Создаем проверку на "самостоятельность" скрипта и внутри неё вызываем наш main()

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

Готово! Запускаем нашего бота из консоли

python main.py

Пишем боту. Всё работает!

Пишем чат-бота для мессенджера MAX на Python - 4

Полный код эхо-бота

import asyncio
import logging

from maxapi import Bot, Dispatcher, F
from maxapi.types import MessageCreated

logging.basicConfig(level=logging.INFO)

bot = Bot('тут_ваш_токен')
dp = Dispatcher()


@dp.message_created(F.message.body.text)
async def echo(event: MessageCreated):
    await event.message.answer(f"Повторяю за вами: {event.message.body.text}")


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


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

Заключение

Для подробного ознакомления с библиотекой советую посетить страницу GitHub [2]и Wiki [3] модуля, а также позадавать вопросов в чатах библиотеки:

MAX [4]

Telegram [5]

Спасибо за прочтение! Жду вас в чате с предложениями по улучшению библиотеки :-)

Автор: loveapples

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/425975

Ссылки в тексте:

[1] maxapi: https://pypi.org/project/maxapi/

[2] GitHub : https://github.com/love-apples/maxapi

[3] Wiki: https://github.com/love-apples/maxapi/wiki

[4] MAX: https://max.ru/join/IPAok63C3vFqbWTFdutMUtjmrAkGqO56YeAN7iyDfc8

[5] Telegram: https://t.me/maxapi_github

[6] Источник: https://habr.com/ru/articles/930230/?utm_source=habrahabr&utm_medium=rss&utm_campaign=930230