img

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

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

icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту

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

Работая с обработчиками сообщений (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. В следующих же статьях будем изучать всё более интересные возможности работы бота и расширение его функционала.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Подробнее о курсе
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Подробнее о курсе
Фронтенд-разработчик с нуля
Погрузитесь в мир веб-разработки, освоив основные инструменты работы: HTML, CSS, JavaScript
Подробнее о курсе
Разработка приложений на Flutter и Dart
Научись создавать кроссплатформенные приложения на Flutter, освой язык Dart
Подробнее о курсе
Автоматизированное тестирование на Python
Изучите автоматизацию тестирования на Python чтобы стать востребованным специалистом
Подробнее о курсе
Еще по теме:
img
SQL или NoSQL, вот в чём вопрос! И как раз с этим вопросом мы поможем сегодня разобраться. Что использовать в каких случаях, где есть какие преимущества и как возможно использовать их все вместе.
img
Вебхуки позволяют различным системам обмениваться данными в реальном времени. В этой статье мы разберём, что такое вебхук, как он работает, где и зачем его использовать, а также как настроить.
img
Redis — один из самых популярных инструментов для хранения данных. В статье разбираем, что такое Redis и как его можно использовать.
img
Маска подсети помогает определить, какие устройства находятся в одной сети, а какие – за её пределами. В этой статье разберём, что такое маска подсети, зачем она нужна и как её использовать.
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59