Получение сообщения с форматированием в TelegramBotsApi

Для написания бота использую TelegramBotsApi, для получения сообщения есть метод getText() из класса Message, но проблема в том, что метод не может вернуть сообщение в исходном варианте, т.е. все форматирование от отправителя теряется. Например если в слове присутствует ссылка, или же предложение выделено курсивом. Знает кто подходящий метод для получения полной информации о сообщении?


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

Автор решения: Сабир Исламов

Вот пример кода, который поможет разобраться с этой задачей:

        for(MessageEntity e : update.getMessage().getEntities()) {
            System.out.println("#######################################");
            System.out.println("type is: " + e.getType());
            System.out.println("text is: " + e.getText());
            System.out.println("url is: " + e.getUrl());
            System.out.println("user is: " + e.getUser());
        }

А вот пример вывода данного цикла в консоль при получении сообщения с определенным форматированием:

#######################################
type is: bold
text is: привет
url is: null
user is: null
#######################################
type is: italic
text is: пока
url is: null
user is: null
#######################################
type is: underline
text is: здрасти
url is: null
user is: null

Метод getEntities() позволяет работать с коллекцией хештегов, url, пользователей которые упоминаются в сообщении, форматированием сообщений, командами для ботов и так далее.

Удачи! :)

P.S.: Это было для сообщения такого вида: "привет пока здрасти" (ну а здрасти было подчеркнуто). И если надо там в этих МессаджЕнтити можно ещё взять индексы начала и конца каждого из этих токенов

→ Ссылка