img

Погружение в aiogram (#3 types.Message)

В этой статье обсудим один из важнейших аргументов функции, который ТЫ, мой друг, будешь использовать в каждом своем боте. 

Ты спросишь меня: “Зачем он нам так нужен?” 

Работая с обработчиками сообщений (message_handler()), в обязательном порядке должен быть передан аргумент в функцию, типом types.Message. Он позволяет очень удобно манипулировать данными пользователя и, в целом, всем функционалом бота.  

Где использовать?

 

(Note для работы используй заготовку с GitHub)

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

 

Передаем аргумент в функцию и указываем аннотацию типов (вообще, делать это не обязательно, но оно дает нам колоссальные удобства при дальнейшей работе с данным аргументом).

 

При обращении к аргументу, благодаря аннотации типов, видим сколько методов и атрибутов он хранит внутри себя.

Проделай это у себя и посмотри, как много методов и атрибутов можно вызвать!

 

Так же не обязательно называть переданный аргумент message, ты можешь дать ему абсолютно любое имя, НО для удобства лучше придумывать названия аргументам, вкладывая смысл их предназначения. В соответствии с дзеном Python.

Пользовательские данные

 

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

Делаем простенький хэндлер, как в прошлой статье про эхо бота, но вместо отправки сообщения нам обратно, выведем аргумент в терминал с помощью функции print().

Вот что должно получится:

 

Запускаем нашего бота, и пишем ему любое сообщение!

 

В ответ видим ничего, НО не пугайсятесь, так и должно быть!

Заходим в любимое IDE и смотрим,  что отобразилось у нас в консолие.

 

Видим очень длинное текстовое поле, напоминающее словарь, НО это не он, не надо путать!

Данный аргумент представляет из себя класс

 <class 'aiogram.types.message.Message'>

Мы видим некоторую вложенность данных, но обо всём по порядку.

 

Значение атрибутов

 

  • message_id - уникальный идентификатор сообщения в этом чате
  • from_user.id - уникальный идентификатор пользователя
  • from_user.is_bot - булевое значение, указывающее, является ли пользователь ботом
  • from_user.first_name - имя пользователя
  • from_user.last_name - фамилия пользователя
  • from_user.username - имя пользователя (username) без «@» (может быть None)
  • from_user.language_code - код языка, на котором пользователь взаимодействует с ботом
  • chat.id - идентификатор чата
  • chat.first_name - имя пользователя чата
  • chat.last_name - фамилия пользователя чата
  • chat.username - имя пользователя (username) без «@» (может быть None) чата
  • chat.type - определяет тип чата (приватный/публичный)
  • date  -  дата отправки сообщения по времени Unix
  • text  -  фактический текст сообщения в формате

 

Для использования этих значений в своём проекте, необходимо к ним обратиться.

Делается это очень просто, вот пару примеров:

message.from_user.id

message.from_user.username

message.text

message.chat.type

 

Пишем боту любое сообщение и в терминале получаем следующий вывод. 

 

Заключение

 

Здесь мы слегка коснулись самую малость возможностей класса types.Message. В следующих же статьях будем изучать всё более интересные возможности работы бота и расширение его функционала.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Программирование
Скидка 25%
Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
SQL или NoSQL, вот в чём вопрос! И как раз с этим вопросом мы поможем сегодня разобраться. Что использовать в каких случаях, где есть какие преимущества и как возможно использовать их все вместе.
img
Вебхуки позволяют различным системам обмениваться данными в реальном времени. В этой статье мы разберём, что такое вебхук, как он работает, где и зачем его использовать, а также как настроить.
img
Redis — один из самых популярных инструментов для хранения данных. В статье разбираем, что такое Redis и как его можно использовать.
img
Маска подсети помогает определить, какие устройства находятся в одной сети, а какие – за её пределами. В этой статье разберём, что такое маска подсети, зачем она нужна и как её использовать.
img
Деплой (развертывание) приложения — это этап разработки, на котором приложение размещается и запускается на сервере. Это позволяет начать его использование. В статье разберемся, как это происходит.