Riy777 commited on
Commit
eb11b26
·
verified ·
1 Parent(s): 3db389f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -9
app.py CHANGED
@@ -20,11 +20,12 @@ import uvicorn
20
  import random
21
  import docx # لإضافة دعم .docx
22
 
23
- # ========== إضافة المكتبات الصحيحة لحل مشكلة DNS + Lifespan ==========
24
  import httpx
25
  import dns.asyncresolver
26
  from httpx import AsyncClient, AsyncHTTPTransport, Request, Response
27
  import contextlib # <-- إضافة المكتبة الصحيحة
 
28
  # ==========================================================
29
 
30
  # ========== تكوين السجلات ==========
@@ -865,7 +866,7 @@ class MedicalLabBot:
865
  [back_button]
866
  ]
867
  reply_markup = InlineKeyboardMarkup(keyboard)
868
- await query.edit_message_text(files_text, reply_markup=reply_markup)
869
  # البقاء في نفس الحالة لعرض الخيارات مرة أخرى
870
  return SELECTING_ACTION
871
 
@@ -880,7 +881,8 @@ class MedicalLabBot:
880
  f"📖 **شرح محاضرة**\n\n"
881
  f"{files_list}\n\n"
882
  f"📝 اكتب رقم الملف من القائمة أعلاه أو جزءاً من اسمه:",
883
- reply_markup=reply_markup_back
 
884
  )
885
  context.user_data['waiting_for'] = 'lecture_explanation'
886
  return WAITING_FOR_QUESTION
@@ -889,7 +891,7 @@ class MedicalLabBot:
889
  await query.edit_message_text("⏳ حسناً، جاري توليد بعض الأسئلة للمراجعة...", reply_markup=reply_markup_back)
890
  questions = await self.generate_questions_for_subject(subject, user_id)
891
  # await query.edit_message_text(questions, reply_markup=reply_markup_back) # لا تعدل الرسالة، أرسل الأسئلة كرد
892
- await query.message.reply_text(questions, reply_markup=reply_markup_back) # ارسال رد جديد
893
  return SELECTING_ACTION # العودة لقائمة الخيارات
894
 
895
  elif action == "explain_concept":
@@ -906,7 +908,7 @@ class MedicalLabBot:
906
  await query.edit_message_text("⏳ تمام، جاري تلخيص ملف مهم من المادة...", reply_markup=reply_markup_back)
907
  summary = await self.generate_summary(subject, user_id)
908
  # await query.edit_message_text(summary, reply_markup=reply_markup_back) # لا تعدل، أرسل كرد
909
- await query.message.reply_text(summary, reply_markup=reply_markup_back)
910
  return SELECTING_ACTION # العودة لقائمة الخيارات
911
 
912
  # إذا لم يتعرف على الإجراء (احتياطي)
@@ -949,8 +951,10 @@ class MedicalLabBot:
949
  }.get(file_type, '📄')
950
 
951
  num_text = f" (محاضرة {lecture_num})" if lecture_num else ""
952
- # تنسيق السطر: الرقم. ايموجي اسم_الملف (رقم المحاضرة إن وجد)
953
- files_text += f"{i}. {type_emoji} `{file_name}`{num_text}\n"
 
 
954
 
955
  if len(files) > max_files_to_show:
956
  files_text += f"\n... و {len(files) - max_files_to_show} ملفات أخرى."
@@ -1079,8 +1083,8 @@ async def root():
1079
  </html>
1080
  """
1081
 
1082
- # ========== !! تأكد من وجود response_model=None هنا !! ==========
1083
- @app.post("/telegram", response_model=None)
1084
  async def handle_telegram_update(request: Request):
1085
  """معالجة تحديثات Telegram"""
1086
  try:
 
20
  import random
21
  import docx # لإضافة دعم .docx
22
 
23
+ # ========== إضافة المكتبات الصحيحة لحل مشكلة DNS + Lifespan + Typing ==========
24
  import httpx
25
  import dns.asyncresolver
26
  from httpx import AsyncClient, AsyncHTTPTransport, Request, Response
27
  import contextlib # <-- إضافة المكتبة الصحيحة
28
+ from typing import Dict # <-- إضافة Dict لتحديد نوع الاستجابة
29
  # ==========================================================
30
 
31
  # ========== تكوين السجلات ==========
 
866
  [back_button]
867
  ]
868
  reply_markup = InlineKeyboardMarkup(keyboard)
869
+ await query.edit_message_text(files_text, reply_markup=reply_markup, parse_mode='Markdown') # إضافة parse_mode
870
  # البقاء في نفس الحالة لعرض الخيارات مرة أخرى
871
  return SELECTING_ACTION
872
 
 
881
  f"📖 **شرح محاضرة**\n\n"
882
  f"{files_list}\n\n"
883
  f"📝 اكتب رقم الملف من القائمة أعلاه أو جزءاً من اسمه:",
884
+ reply_markup=reply_markup_back,
885
+ parse_mode='Markdown' # إضافة parse_mode
886
  )
887
  context.user_data['waiting_for'] = 'lecture_explanation'
888
  return WAITING_FOR_QUESTION
 
891
  await query.edit_message_text("⏳ حسناً، جاري توليد بعض الأسئلة للمراجعة...", reply_markup=reply_markup_back)
892
  questions = await self.generate_questions_for_subject(subject, user_id)
893
  # await query.edit_message_text(questions, reply_markup=reply_markup_back) # لا تعدل الرسالة، أرسل الأسئلة كرد
894
+ await query.message.reply_text(questions, reply_markup=reply_markup_back, parse_mode='Markdown') # ارسال رد جديد + parse_mode
895
  return SELECTING_ACTION # العودة لقائمة الخيارات
896
 
897
  elif action == "explain_concept":
 
908
  await query.edit_message_text("⏳ تمام، جاري تلخيص ملف مهم من المادة...", reply_markup=reply_markup_back)
909
  summary = await self.generate_summary(subject, user_id)
910
  # await query.edit_message_text(summary, reply_markup=reply_markup_back) # لا تعدل، أرسل كرد
911
+ await query.message.reply_text(summary, reply_markup=reply_markup_back, parse_mode='Markdown') # ارسال رد + parse_mode
912
  return SELECTING_ACTION # العودة لقائمة الخيارات
913
 
914
  # إذا لم يتعرف على الإجراء (احتياطي)
 
951
  }.get(file_type, '📄')
952
 
953
  num_text = f" (محاضرة {lecture_num})" if lecture_num else ""
954
+ # تنسيق السطر: الرقم. ايموجي اسم_الملف (رقم المحاضرة إن وجد) - استخدام Markdown للأسماء
955
+ # استبدال الشرطة السفلية بمسافة في اسم الملف للعرض فقط
956
+ display_name = file_name.replace("_", " ")
957
+ files_text += f"{i}. {type_emoji} `{display_name}`{num_text}\n"
958
 
959
  if len(files) > max_files_to_show:
960
  files_text += f"\n... و {len(files) - max_files_to_show} ملفات أخرى."
 
1083
  </html>
1084
  """
1085
 
1086
+ # ========== !! الحل البديل: تحديد نوع الاستجابة صراحة !! ==========
1087
+ @app.post("/telegram", response_model=Dict[str, str])
1088
  async def handle_telegram_update(request: Request):
1089
  """معالجة تحديثات Telegram"""
1090
  try: