Telegram. Как получить данные пользователя зашедшего в группу? Aiogram

Рейтинг: -1Ответов: 1Опубликовано: 08.02.2023

Пишу чат-бота в Telegram, использую библиотеку Aiogram 2.x Бот управляет группой

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

@dp.message_handler(IsSupergroup(), content_types=['new_chat_members'], state='*')
async def new_group_member_handler(message: types.Message):
    print(message)

IsSpergroup - кастомный фильтр, чтобы ловить сообщения из группы

В итоге я получаю message в таком виде: (id пользователя, id чата и username изменены)

{
"message_id": 66, 
"from": {
    "id": 00000000, 
    "is_bot": false, 
    "first_name": "Maxym", 
    "username": "MyUserName", 
    "language_code": "ru"
}, 
"chat": {
    "id": -00000000, 
    "title": "Тестовый чат", 
    "type": "supergroup"
}, 
"date": 1675859173, 
"new_chat_participant": {
    "id": 00000000, 
    "is_bot": false, 
    "first_name": "Maxym", 
    "username": "MyUserName", 
    "language_code": "ru"
}, 
"new_chat_member": {
    "id": 00000000, 
    "is_bot": false, 
    "first_name": "Maxym", 
    "username": "MyUserName", 
    "language_code": "ru"
}, 
"new_chat_members": [
    {
      "id": 00000000, 
      "is_bot": false, 
      "first_name": "Maxym", 
      "username": "MyUserName", 
      "language_code": "ru"
    }
]

}

Объясните пожалуйста в чём разница между new_chat_participant и new_chat_member и для чего нужен new_chat_members

Ответы

▲ 1

Если я правильно понимаю ваш вопрос, то я бы начал с этого.

@dp.message_handler(content_types=types.ContentTypes.NEW_CHAT_MEMBERS)
async def new_chat_member(message: types.Message):
    for new_member in message.new_chat_members:
        print(new_member.first_name)
        print(new_member.username)

Отвечая на второй вопрос:

Разница между new_chat_participant и new_chat_member состоит в том, что new_chat_participant является одним пользователем, а new_chat_member обозначает добавление нескольких пользователей в чат. Этот тип сообщения используется для оповещения о добавлении нескольких пользователей в чат.