Почему бот не видит отмеченных в сообщении пользователей?

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

Сообразил что-то такое:

List<MessageEntity> entities = update.getMessage().getEntities();
for (MessageEntity entity : entities)
    if (entity.getUser() != null) {
        return entity.getUser();
    }
return null;

Но бот не видит отмеченных в сообщении пользователей.


Ответы (1 шт):

Автор решения: Librian

Вы не сможете получить пользователя через getUser, если тип entity - mention.

Пример entity с типом mention и text_mention:

"message": {
    ...
    "text": "@Username",
    "entities": [
        {
            "offset": 0,
            "length": 9,
            "type": "mention"
        }
    ]
}
"message": {
    ...
    "text": "Username",
    "entities": [
        {
            "offset": 0,
            "length": 8,
            "type": "text_mention",
            "user": {
                "id": 1000000000,
                "is_bot": false,
                "first_name": "First Name",
                "username": "Username"
            }
        }
    ]
}

В первом случае getUser вернет null, во втором случае вы получите объект User.

(id, first_name и username являются лишь примером и не существуют на самом деле)

→ Ссылка