Привет, у меня проблема, при отправке данного сообщения. Мой бот выдаёт ошибку. Есть функция для обработки сообщения, додлеай её и исправь ошибку.

Ошибка:
Ошибка при обработке сообщения: Can't parse entities: unmatched end ta
Traceback (most recent call last):
  File "d:\Visual Studio\project\GPTTgBOT\main.py", line 351, in handl
  File "d:\Visual Studio\project\GPTTgBOT\main.py", line 347, in send_
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	ele
    return await self.get_bot().send_message(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	ele
    return await super().send_message(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	ele
    result = await func(self, *args, **kwargs)  # skipcq: PYL-E1102
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	ele
    return await self._send_message(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	ele
    result = await super()._send_message(
    return await super()._do_post(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	elegram\_bot.py", line 497, in _do_post
    return await request.post(
           ^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	elegramequest\_baserequest.py", line 168, in post
    result = await self._request_wrapper(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studio\project\GPTTgBOT\.venv\Lib\site-packages	elegramequest\_baserequest.py", line 328, in _request_wrapper
    raise BadRequest(message)
telegram.error.BadRequest: Can't parse entities: unmatched end tag at byte offset 245, expected "
", found "</code>"

Сообщение:
Используя эти элементы, вы можете создавать структурированные и хорошо
Проблема связана с некорректными регулярными выражениями в функции <co>
</code> и <code><code></code>. Это приводит к созданию пустых тего

<pre>
telegram.error.BadRequest: Can't parse entities: unsupported start tag
</pre>

Чтобы исправить это, необходимо скорректировать регулярные выражения, ия пустых тегов.

Вот исправленный фрагмент кода функции <code>markdown_to_telegram_html

<pre>def markdown_to_telegram_html(text):
    # Заголовки
    text = re.sub(r'^# (.+)$', r'<b></b>', text, flags=re.MULTILINE)
    text = re.sub(r'^## (.+)$', r'<b></b>', text, flags=re.MULTILINE
    text = re.sub(r'^### (.+)$', r'<b></b>', text, flags=re.MULTILIN

    # Жирный курсивный текст
    text = re.sub(r'\<i>\</i>\<i>(.</i>?)\<i>\</i>\*', r'<b><i></i><

    # Жирный текст
    text = re.sub(r'\<i>\</i>(.<i>?)\</i>\*', r'<b></b>', text)

    # Курсивный текст
    text = re.sub(r'\<i>(.</i>?)\*', r'<i></i>', text)

    # Зачёркнутый текст
    text = re.sub(r'
(.*?)
', r'

', text)

    # Однострочный код
    text = re.sub(r'<code>([^</code>]+)`', r'<code></code>', text)

    # Горизонтальная линия (заменяем на символы, поддерживаемые Telegr
    text = re.sub(r'^---$', r'――――――――――', text, flags=re.MULTILINE)

    # Ссылки
    text = re.sub(r'\[(.<i>?)\]\((.</i>?)\)', r'<a href=""></a>', 

    # Блоки кода (многострочные)
    text = re.sub(r'</pre>
?([\s\S]+?)
?<pre>', r'<pre></pre>', te

    # Списки (упрощенно)
    # text = re.sub(r'^-\s(.+)$', r'• ', text, flags=re.MULTILINE)
    # text = re.sub(r'^\d+\.\s(.+)$', r'  ', text, flags=re.MULTILIN

    # Удаление неподдерживаемых элементов
    # text = re.sub(r'!\[.<i>?\]\(.</i>?\)', '', text)  # Изображения
    # text = re.sub(r'^\|.<i>\|.</i>$', '', text, flags=re.MULTILINE) 
    # text = re.sub(r':[a-z_+-]+:', '', text)  # Эмодзи
    # text = re.sub(r'<a href=".+?">\^~</a>[\^~]', r'', text)  # Под
    # text = re.sub(r'\$\$.*?\$\$', '', text, flags=re.DOTALL)  # Форм
    # text = re.sub(r'\[\d+\]:\s<i>http.</i>$', '', text, flags=re.MUL
    # text = re.sub(r'^> (.+)$', r'', text, flags=re.MULTILINE)  # Ц

    # Удаление неподдерживаемых HTML-тегов
    def remove_unsupported_html_tags(text):
        allowed_tags = ['a', 'b', 'strong', 'i', 'em', 'u', 'ins', 's'
        pattern = r'</?(?!(?:' + '|'.join(allowed_tags) + r'))([a-zA
        text = re.sub(pattern, '', text)
        return text

    text = remove_unsupported_html_tags(text)

    return text.strip()
</pre>

<b>Объяснение внесённых изменений:</b>

1. <b>Зачёркнутый текст</b>:
    <pre>    text = re.sub(r'
(.*?)
', r'

', text)
    </pre>
    Используется формат <code>
текст
</code> для зачёркивания, чт

2. <b>Однострочный код</b>:
    <pre>    text = re.sub(r'<code>([^</code>]+)`', r'<code></code>'
    </pre>
    Оборачивает текст в одиночные обратные кавычки <code></code> <codeри кавычек есть хотя бы один символ, предотвращая создание пустых тего

3. <b>Многострочные блоки кода</b>:
    <pre>    text = re.sub(r'</pre>
?([\s\S]+?)
?<pre>', r'<pre></
    </pre>
    Обрабатывает многострочные блоки кода, оборачивая их в тег <code><

4. <b>Удаление некорректных замен</b>:
    Были удалены или закомментированы строки, которые некорректно оборо к ошибкам.

<b>Дополнительные рекомендации:</b>

- <b>Проверка HTML</b>: Перед отправкой сообщения в Telegram убедитесь
- <b>Логирование</b>: Добавьте больше логирования в функцию преобразов
- <b>Тестирование</b>: После внесённых изменений протестируйте различн

Эти изменения помогут избежать создания пустых или некорректных HTML-тcode>.

Функция:
def markdown_to_telegram_html(text):
    # Жирный курсивный текст
    text = re.sub(r'\*\*\*(.*?)\*\*\*', r'<b><i></i></b>', text)

    # Жирный текст
    text = re.sub(r'\*\*(.*?)\*\*', r'<b></b>', text)

    # Курсивный текст
    text = re.sub(r'\*(.*?)\*', r'<i></i>', text)

    # Зачёркнутый текст
    text = re.sub(r'~~(.*?)~~', r'

', text)

    # Горизонтальная линия (заменяем на символы, поддерживаемые Telegram)
    text = re.sub(r'^---$', r'――――――――――', text, flags=re.MULTILINE)

    # Ссылки
    text = re.sub(r'\[(.*?)\]\((.*?)\)', r'<a href=""></a>', text)

    # Блоки кода (многострочные)
    text = re.sub(r'```(?:\w+
)?([\s\S]+?)```', r'<pre></pre>', text)

    # Однострочный код
    text = re.sub(r'`(.*?)`', r'<code></code>', text)

    # Списки (упрощенно)
    #text = re.sub(r'^-\s(.+)$', r'• ', text, flags=re.MULTILINE)
    #text = re.sub(r'^\d+\.\s(.+)$', r'  ', text, flags=re.MULTILINE)

    # Удаление неподдерживаемых элементов
    #text = re.sub(r'!\[.*?\]\(.*?\)', '', text)  # Изображения
    #text = re.sub(r'^\|.*\|.*$', '', text, flags=re.MULTILINE)  # Таблицы
    #text = re.sub(r':[a-z_+-]+:', '', text)  # Эмодзи
    #text = re.sub(r'[\^~](.+?)[\^~]', r'', text)  # Подстрочный и надстрочный текст
    #text = re.sub(r'\$\$.*?\$\$', '', text, flags=re.DOTALL)  # Формулы TeX
    #text = re.sub(r'\[\d+\]:\s*http.*$', '', text, flags=re.MULTILINE)  # Сноски
    #text = re.sub(r'^> (.+)$', r'', text, flags=re.MULTILINE)  # Цитаты

    # Удаление неподдерживаемых HTML-тегов
    def remove_unsupported_html_tags(text):
        allowed_tags = ['a', 'b', 'strong', 'i', 'em', 'u', 'ins', 's', 'strike', 'del', 'code', 'pre']
        # Исправленное регулярное выражение
        pattern = r'</?(?!(?:' + '|'.join(allowed_tags) + r'))([a-zA-Z]+)(?:\s[^>]*)?>'
        text = re.sub(pattern, '', text)
        return text

    text = remove_unsupported_html_tags(text)

    return text.strip()