Вот упрощенная версия моего кода : < /p>
Код: Выделить всё
from telegram.constants import ParseMode
from telegram.helpers import escape_markdown
async def send_ai_message(update, context):
prompt = update.message.text
await update.message.reply_text("Thinking...")
# Get dynamic text from the AI
response_text = ai.chat_ai(prompt)
# Escape dynamic text for MarkdownV2
safe_response = escape_markdown(response_text, version=2)
# Combine the safe dynamic text with a static code block
message_text = f"```python\n{safe_response}\n```"
await context.bot.send_message(
chat_id=update.effective_chat.id,
text=message_text,
parse_mode=ParseMode.MARKDOWN_V2
)
< /code>
Однако, когда я запускаю этот код, я получаю следующую ошибку: < /p>
Плохой запрос: не может быть Организации: не могу найти кодовую сущность при смещении байта ... < /p>
< /blockquote>
Я понимаю, что проблема, вероятно, связана с строгими правилами форматирования Markdownv2, где определенно Специальные символы (например, _, *, `, [,] и т. Д.) Должны быть должным образом сбежать. В моем случае мне нужно сохранить статическую форматирование маркировки (маркеры блока кода), обеспечивая, чтобы динамический текст полностью сбежал. < /P>
Мои вопросы: < /p>
Что может вызвать эту ошибку, и почему она происходит даже после использования asscampdown в динамическом тексте? Br /> Есть ли какие-либо дополнительные соображения или лучшие практики при работе с MarkdownV2 в последней версии Python-Telegram-Bot (отмечая, что Parsemode сейчас в Telegram.constants)? < /p>
Я пробую? Я использовал функцию escape_markdown (с версией 2 для MarkdownV2) для обработки динамического содержимого, а затем вставил этот результат в кодовый блок, используя тройные бэки. Например: < /p>
safe_response = escape_markdown(response_text, version=2)
message_text = f"```python\n{safe_response}\n```"
чего я ожидал?
Однако вместо ожидаемого вывода я получил ошибку: < /p>
Плохой запрос: невозможно анализировать сущности: не могу найти код кодового объекта в байте Offset ... < /p>
< /blockquote>
Это указывает на то, что, несмотря на спасение динамического текста, все еще существует проблема форматирования (вероятно, из -за несбалансированных или ненадлежащих сбежавших символов), когда в сочетании со статическим маркером блока кода.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -code-enti