feat: улучшена обработка длинных сообщений через send_long_message

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Vladimir 2026-03-05 02:35:29 +08:00
parent 719dfa2015
commit f114d874ff
1 changed files with 5 additions and 14 deletions

19
bot.py
View File

@ -256,11 +256,8 @@ async def handle_ai_task(update: Update, text: str):
# Добавляем в историю
state.ai_chat_history.append(f"Assistant: {full_output[:500]}")
save_message(user_id, "assistant", full_output)
# Отправляем ответ
if len(full_output) > 3500:
full_output = full_output[:3500] + "\n... (вывод обрезан)"
# Отправляем ответ (send_long_message сам разобьёт на части если нужно)
await send_long_message(update, full_output, parse_mode="Markdown")
await status_msg.delete()
return
@ -556,10 +553,6 @@ async def handle_ai_task(update: Update, text: str):
state.ai_chat_history.append(f"Assistant: {full_output[:500]}")
save_message(user_id, "assistant", full_output)
# Обрезаем если слишком длинный
if len(full_output) > 3500:
full_output = full_output[:3500] + "\n... (вывод обрезан)"
# Автоматическое извлечение фактов каждые 5 сообщений
state.messages_since_fact_extract += 1
if state.messages_since_fact_extract >= 5:
@ -580,11 +573,9 @@ async def handle_ai_task(update: Update, text: str):
# parse_mode=None для full_output (plain text), но Markdown для context_info
# Telegram не поддерживает смешанный parse_mode, поэтому используем Markdown
# и полагаемся на то что ИИ генерирует корректный текст
await update.message.reply_text(
response_text,
parse_mode="Markdown"
)
# Используем send_long_message для поддержки длинных ответов
await send_long_message(update, response_text, parse_mode="Markdown")
# Обновляем потоковое сообщение на финальный статус
if stream_message:
try: