Почему бот не видит отмеченных в сообщении пользователей?
Разрабатывая бота для телеграмма, я столкнулся с проблемой получения пользователя из сообщений.
Сообразил что-то такое:
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 являются лишь примером и не существуют на самом деле)