2.0 KiB
2.0 KiB
Для регистрации хендлера в maxapi используется объект Dispatcher
или Router
и декоратор с указанием типа события и фильтра.
Общий синтаксис
@dp.<тип_события>(<фильтры>)
async def <имя_функции>(event: <тип_события>):
...
-
dp
— экземплярDispatcher
-
<тип_события>
— тип события (например,message_created
) -
<фильтр>
— условиеMagicFilter
, по которому срабатывает хендлер (например, наличие текста в сообщении) -
event
— объект события с данными (например,MessageCreated
)
Пример
@dp.message_created(F.message.body.text)
async def echo(event: MessageCreated):
await event.message.answer(f"Повторяю за вами: {event.message.body.text}")
-
@dp.message_created
— хендлер на событие создания сообщения -
F.message.body.text
— фильтр: сработает только если в сообщении есть текст -
echo
— асинхронная функция-обработчик, которая принимает событиеMessageCreated
-
В теле функции вызывается метод
answer
для отправки ответа с повтором текста
Полный код
import asyncio
import logging
from maxapi import Bot, Dispatcher
from maxapi.filters import 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())