fix: не экранировать backticks в выводе команд для правильной разбивки блоков кода
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
28e671af9c
commit
ba13eb2a1a
8
bot.py
8
bot.py
|
|
@ -1634,23 +1634,19 @@ async def _show_result_message(update: Update, command: str, output: str, error:
|
||||||
|
|
||||||
if output:
|
if output:
|
||||||
# Показываем ВЕСЬ вывод, разбивая на сообщения если нужно
|
# Показываем ВЕСЬ вывод, разбивая на сообщения если нужно
|
||||||
# Экранируем backticks в output чтобы они не ломали блоки кода
|
# НЕ экранируем backticks — send_long_message сам разобьёт на блоки
|
||||||
output = output.replace("```", "\\`\\`\\`").replace("`", "\\`")
|
|
||||||
result += f"```\n{output}\n```\n"
|
result += f"```\n{output}\n```\n"
|
||||||
logger.info(f"Добавлен output в результат, длина result={len(result)}")
|
logger.info(f"Добавлен output в результат, длина result={len(result)}")
|
||||||
else:
|
else:
|
||||||
logger.warning("output пустой после обработки!")
|
logger.warning("output пустой после обработки!")
|
||||||
|
|
||||||
if error:
|
if error:
|
||||||
# Экранируем backticks в error
|
# НЕ экранируем backticks
|
||||||
error = error.replace("```", "\\`\\`\\`").replace("`", "\\`")
|
|
||||||
result += f"*Ошибки:*\n```\n{error}\n```\n"
|
result += f"*Ошибки:*\n```\n{error}\n```\n"
|
||||||
|
|
||||||
result += f"\n*Код возврата:* `{returncode}`"
|
result += f"\n*Код возврата:* `{returncode}`"
|
||||||
|
|
||||||
# Экранируем специальные символы Markdown ТОЛЬКО вне блоков кода
|
# Экранируем специальные символы Markdown ТОЛЬКО вне блоков кода
|
||||||
# Блоки кода (```) уже защищены — их содержимое не трогаем
|
|
||||||
# Экранируем: * _ ( ) [ ] но не ` и не содержимое ```
|
|
||||||
result = smart_escape_markdown(result)
|
result = smart_escape_markdown(result)
|
||||||
logger.info(f"Отправляю сообщение, длина={len(result)}")
|
logger.info(f"Отправляю сообщение, длина={len(result)}")
|
||||||
await send_long_message(update, result, parse_mode="Markdown", pause_every=3)
|
await send_long_message(update, result, parse_mode="Markdown", pause_every=3)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue