Да, возможно узнать, создан ли приватный чат с пользователем в боте на aiogram 2.
В aiogram 2 есть специальный класс types.Chat
, который представляет собой сущность чата в терминах Telegram. У этого класса есть ряд полей, которые позволяют определить, является ли чат приватным или нет.
Одно из полей, которые помогают определить, является ли чат приватным или нет, - это поле type
, которое может принимать одно из значений, определенных в types.ChatType
. Если значение type
равно ChatType.PRIVATE
, то это означает, что чат является приватным.
Для того чтобы узнать, создан ли приватный чат с пользователем, необходимо получить объект types.Chat
из сообщения, которое было получено в боте. В aiogram 2 это можно сделать с помощью атрибута chat
у объекта types.Message
, который содержит информацию о чате.
Пример кода, который позволяет определить, создан ли приватный чат с пользователем:
from aiogram import types async def is_private_chat(message: types.Message) -> bool: chat: types.Chat = message.chat return chat.type == types.ChatType.PRIVATE
Вышеприведенная функция is_private_chat
принимает объект types.Message
и возвращает значение True
, если чат является приватным, и False
в противном случае.
Пример использования функции:
from aiogram import Bot, Dispatcher, types async def on_message(message: types.Message): if await is_private_chat(message): print("Приватный чат") else: print("Не приватный чат") bot = Bot("<token>") dp = Dispatcher(bot) dp.register_message_handler(on_message)
В приведенном примере функция on_message
будет вызываться каждый раз, когда бот получает новое сообщение. Внутри функции мы вызываем is_private_chat
, передавая ей объект types.Message
, и в зависимости от результата выводим соответствующее сообщение.