@Leadmagneet

Как распарсить стили сообщения в Telegram Bot?

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

[0] => Array
        (
            [offset] => 3
            [length] => 8
            [type] => bold
        )

    [1] => Array
        (
            [offset] => 21
            [length] => 12
            [type] => phone_number
        )

    [2] => Array
        (
            [offset] => 21
            [length] => 12
            [type] => bold
        )

    [3] => Array
        (
            [offset] => 49
            [length] => 1
            [type] => bold
        )

    [4] => Array
        (
            [offset] => 61
            [length] => 1
            [type] => bold
        )


То есть текст нужно перевести в html формат, где собственно в присылаемом массиве и находятся координаты этих сущностей.
Просто текст <b>тект 1</b> тут какой -то текст

Есть какие либо идеи как это сделать можно. Пытался сделать простым смещением символом:
$formatText="Просто сторока";

$posIns=strlen($formatText)-$origLen;
			
$off=$value["offset"];
$to=$value["length"];	

$onepart = mb_substr($formatText, 0, ($off-1)+$posIns);
$twopart = mb_substr($formatText, $off, $to);
$threepart = mb_substr($formatText, $to+$off+$posIns, strlen($formatText)-($to+$off+$posIns));
if ($value["type"]=="bold"){$formatText=$onepart."<b>".$twopart."</b>".$threepart;}

Но в даном варианте не будет учитываться вложеные стили. Какие есть варианты, как это можно решить?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
@edvardpotter
Возможно вообще не с того начали решать проблему, попробуйте метод editMessageReplyMarkup

Тогда не нужно будет заново отправлять текст сообщения.
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
https://github.com/davtur19/TelegramEntityParser

phone_number тега там нет, но добавить легко
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы