fix(admin): escape HTML entities and convert Markdown formatting to prevent Telegram entity parsing errors
This commit is contained in:
parent
2b54649f4e
commit
2c38964cea
1 changed files with 15 additions and 3 deletions
|
|
@ -124,13 +124,25 @@ async def process_jurist_question(message: Message, state: FSMContext):
|
||||||
output = output.split("Update available:")[0].strip()
|
output = output.split("Update available:")[0].strip()
|
||||||
|
|
||||||
if proc.returncode == 0:
|
if proc.returncode == 0:
|
||||||
if len(output) > 4000:
|
import html
|
||||||
parts = [output[i:i+4000] for i in range(0, len(output), 4000)]
|
import re
|
||||||
|
|
||||||
|
# Заменяем <br>, <br/>, <br /> на переносы строк
|
||||||
|
clean_output = output.replace("<br>", "\n").replace("<br/>", "\n").replace("<br />", "\n")
|
||||||
|
# Экранируем спецсимволы для parse_mode='HTML'
|
||||||
|
safe_output = html.escape(clean_output)
|
||||||
|
# Форматируем **жирный** текст -> <b>жирный</b>
|
||||||
|
safe_output = re.sub(r'\*\*(.*?)\*\*', r'<b>\1</b>', safe_output, flags=re.DOTALL)
|
||||||
|
# Форматируем [ссылка](url) -> <a href="\2">\1</a>
|
||||||
|
safe_output = re.sub(r'\[(.*?)\]\((.*?)\)', r'<a href="\2">\1</a>', safe_output, flags=re.DOTALL)
|
||||||
|
|
||||||
|
if len(safe_output) > 4000:
|
||||||
|
parts = [safe_output[i:i+4000] for i in range(0, len(safe_output), 4000)]
|
||||||
await status_msg.edit_text(f"⚖️ <b>Анализ NotebookLM (часть 1):</b>\n\n{parts[0]}", parse_mode='HTML')
|
await status_msg.edit_text(f"⚖️ <b>Анализ NotebookLM (часть 1):</b>\n\n{parts[0]}", parse_mode='HTML')
|
||||||
for part in parts[1:]:
|
for part in parts[1:]:
|
||||||
await message.answer(part, parse_mode='HTML')
|
await message.answer(part, parse_mode='HTML')
|
||||||
else:
|
else:
|
||||||
await status_msg.edit_text(f"⚖️ <b>Анализ NotebookLM:</b>\n\n{output}", parse_mode='HTML')
|
await status_msg.edit_text(f"⚖️ <b>Анализ NotebookLM:</b>\n\n{safe_output}", parse_mode='HTML')
|
||||||
else:
|
else:
|
||||||
await status_msg.edit_text(f"❌ <b>Ошибка запроса к NotebookLM:</b>\n{error or output}")
|
await status_msg.edit_text(f"❌ <b>Ошибка запроса к NotebookLM:</b>\n{error or output}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue