img

Погружение в aiogram (#4 message_handler())

Введение 

 

Настало время глубже погрузиться во взаимодействие человека с ботом. Сегодня изучим декоратор message_handler(). Узнаем, как боту реагировать на конкретные сообщения от пользователя и отвечать на его команды.

Ну что, давай начинать! 

Note: Для дальнейшей работы, необходимо использовать версию интерпретатора Python 3.9, и библиотеку aiogram версии 2.25.1.

Шаблон проекта можешь скачать с GitHub по ссылке ? жми сюда (НЕ ЗАБУДЬ УКАЗАТЬ ТОКЕН СВОЕГО БОТА!)

 

Немного теории 

 

message_handler() или хэндлер обработки сообщений нужен для того, чтобы реагировать на входящие сообщения в Telegram-боте и содержать в себе функцию ответа. C его помощью можно указать, какие команды или сообщения от пользователя будет обрабатывать бот, и вызвать соответствующую функцию при их вводе. 

Переходим к практике.

 

Практика 

 

Сейчас мы разберём две ситуации использования хэндлера (на самом деле их гораздо больше, но об этом в следующих статьях):

  1. Получение ботом команд от пользователя (/commands)
  2. Получение ботом текстовых сообщений и их обработка (text/text_contains)

 

Получение команд

 

Для приёма команд от пользователя, необходимо написать следующий декоратор с параметром commands = []

 

В параметры хэндлера необходимо передать в виде списка команду, которую бот будет обрабатывать. В данном случае это команда start.

Также обязательно после декоратора создаём асинхронную (async) функцию (не забываем в качестве параметра передать наш message: types.Message), назвать её можно как угодно, но лучше дать имя, созвучное с обрабатываемой командой. 

 

Напишем простейшую логику обработки. При получении команды start, бот будет отправлять сообщение пользователю, что он начал работу.

 

Запускаем в работу скрипт, заходим в бота и пишем команду start. 

 

Обрати внимание, что команда записывается следующим образом: /текст_команды

 

После отправки получаем ожидаемый результат.

 

Если указать команду без / , то в ответ получим…

 

НИЧЕГО, так как теперь start для бота считается обычным сообщением, а их обработку мы ещё не сделали.

 

В аргументе commands можно указать разное количество команд.

 

 

При использовании их всех, бот будет обрабатывать общую для них функцию.

 

Чтобы расширить функционал бота, необходимо создавать разные декораторы хендлера для обработки отдельных команд.

 

Не забудь давать индивидуальные названия функциям.

 

 

Видим, что при использовании команд получаем ожидаемый результат. 

 

Получение сообщений от пользователя

 

Для обработки обычных сообщений, необходимо использовать тот же декоратор, только уже с аргументом text.

 

Также не забывай передавать в качестве аргумента функции параметр message: types.Message.

 

Пропишем простейшую логику, будем вежливыми и на приветствие ответим приветствием.

 

Проверим работу скрипта.

 

Замечательно! Наш бот поздоровался с нами!

 

В таком исполнении обязательно указывать правильный текст сообщения, соблюдая регистры.

 

 

Видим, что когда указали начало слова в верхнем регистре, то бот уже нам ничего не ответил.

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

 

Теперь наш хендлер будет обрабатывать любое вхождение слова “дела”. 

 

Обратите внимание, что слово, должно иметь 100% совпадение (такое как регистры букв).

 

Приоритет обработчиков

 

Ещё одна немаловажная деталь. Приоритет обработчиков означает, что при получении ботом сообщения, если два хендлера подходят под обработку, то обрабатываться будет сверху вниз, и где будет первое совпадение, тот и обработается!

 

 

Заключение

 

В этой статье познакомились с основными параметрами декоратора message_handler(), но это ещё не всё (в следующих статьях будем знакомиться с новыми возможностями). С помощью использования таких простых приемов можно построить достаточно обширную логику работы бота. Дальше изучим, как бот может отвечать нам стикерами, фотографиями, документами, видео, аудио и многое другое. 

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Программирование
Скидка 25%
Python-программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
В этой статье обсудим один из важнейших аргументов функции, который ТЫ, мой друг, будешь использовать в каждом своем боте.  Ты с
img
Введение    Настало время глубже погрузиться во взаимодействие человека с ботом. Сегодня изучим декоратор message_handler(). Узн
img
Погружение в aiogram (#5 Отправка стикеров)   Введение   Продолжаем изучать функционал библиотеки aiogram для работы с Telegram
img
Гипервизор - это программное обеспечение для виртуализации, используемое для создания и запуска виртуальных машин (ВМ). Гипервиз
img
Виртуализация серверов позволяет запускать несколько виртуальных машин на одном физическом сервере. Запуск виртуальных машин (ВМ
img
Сегодня мы рассмотрим, как настроить и использовать PHP в проекте. Но прежде чем начать, нужно понять, что такое PHP. Что такое
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59