نكتب محادثة بوت لـ VKontakte في python باستخدام longpoll. الجزء الثاني حلقات مزدوجة واستثناءات وهرطقات أخرى

تحياتي ، هبر. هذه المقالة هي استمرار لهذه المقالة. قبل القراءة ، أوصيك بشدة بقراءتها إذا لم تكن قد فعلت ذلك من قبل.

ستتعلم اليوم:

  1. كيف تحصل على أكثر من إجابة ، وإن كانت مزرعة جماعية
  2. كيفية توصيل مترجم Yandex بهذا
  3. وكيف يكتب للمستخدم أنه فعل كل شيء خاطئ

مترجم Api Yandex


مترجم Yandex لديه واجهة برمجة تطبيقات جيدة وسنستخدمها. ندرس الوثائق بعناية ونخوض المعركة. ولكن هنا ياندكس يضعنا خنزير.
متطلبات استخدام نتائج الترجمة
وفقًا لترخيص استخدام Yandex.Translator ، يجب الإشارة إلى النص المترجم بواسطة خدمة Yandex.Translator الذي يحتوي على ارتباط نشط إلى صفحة translate.yandex.ru أعلاه أو أسفل نتيجة النقل.

متطلبات تخطيط النص
يجب تحديد النص:
في وصف المنتج البرمجي ؛
مساعدة لمنتج برمجيات
على الموقع الرسمي لمنتج البرنامج ؛
على جميع الصفحات أو الشاشات حيث يتم استخدام بيانات الخدمة.
حسنا ، نحن لسنا فخورين ، سنبقى.

كيف يعمل


يكتب لنا المستخدم رسالة ، نسأل عن اللغة التي يريد ترجمة العبارة إليها. بعد أن نطلب ترجمة النص وإرسال النتيجة.

التنفيذ الفني


احصل على مفتاح واجهة برمجة التطبيقات
نستخدم هذه المكتبة

from yandex_translate import YandexTranslate #  translate = YandexTranslate('  ') 

نركل الكرة الطويلة كما وصفت في الجزء الأول.

 if event.text == '': #     "" if event.from_user: vk.messages.send( #  user_id=event.user_id, message='  ?   .\n :  - ru,  - en' #C  "  ?   .\n :  - ru,  - en".       ) elif event.from_chat: vk.messages.send( # ,    chat_id=event.chat_id, message='  ?   .\n :  - ru,  - en' ) flag = 0 #     2-  for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: #     trTo = event.text #    if event.from_user: vk.messages.send( #  user_id=event.user_id, message=' ,    ' ) elif event.from_chat: vk.messages.send( # ,    chat_id=event.chat_id, message=' ,    ' ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: #     trNormal = 1 #    try: #,     trFrom = translate.detect(event.text) #  trResult = translate.translate(event.text, trFrom + '-' + trTo) # except Exception as e: # -    trNormal = 0 #   print("Exception:", e) #   pass if trNormal == 1: #   if event.from_user: vk.messages.send( #  user_id=event.user_id, message='  «.» translate.yandex.ru\n' + str(trResult['text']) ) flag = 1 #  2-  break elif event.from_chat: vk.messages.send( # ,    chat_id=event.chat_id, message='  «.» translate.yandex.ru\n' + str(trResult['text']) ) flag = 1 break if trNormal == 0: #   if event.from_user: vk.messages.send( #  user_id=event.user_id, message='  ' #..    99%  - ,          ) flag = 1 #  2-  break elif event.from_chat: vk.messages.send( # ,    chat_id=event.chat_id, message='  ' ) flag = 1 break if flag == 1: #     2-  break 

ما هي الاستثناءات وماذا يأكلون


الاستثناءات - هذا شيء يعمل في حالة حدوث خطأ ويخبرنا عنه. للتعامل مع الاستثناءات ، استخدم المحاولة - باستثناء الإنشاء.

دعونا نحاول تنفيذ التعليمات البرمجية الخاصة بنا بدون هذا البناء.

-الترجمة
-أي لغة؟ تشير في رسالتين.
على سبيل المثال: الروسية - ru ، الإنجليزية - en
-من
-أدخل العبارة التي تريد ترجمتها
-هاي حبر
-ترجمة من قبل خدمة Yandex.Translator translate.yandex.ru
["مرحبا حبر"]

حسنًا ، إنه يعمل ، ولماذا نحتاج إلى استثناءاتك؟

لكن لماذا:
-الترجمة
-أي لغة؟ تشير في رسالتين.
على سبيل المثال: الروسية - ru ، الإنجليزية - en
-أبراكادابرا
-أدخل العبارة التي تريد ترجمتها
-هاي حبر
...

في هذه الأثناء ، في وحدة التحكم:

 Traceback (most recent call last): File "C:\Py_trash\habrex.py", line 112, in <module> main() File "C:\Py_trash\habrex.py", line 78, in main trResult = translate.translate(event.text, trFrom + '-' + trTo) File "C:\Users\Hukuma\AppData\Local\Programs\Python\Python37-32\lib\site-packages\yandex_translate\__init__.py", line 150, in translate raise YandexTranslateException(status_code) yandex_translate.YandexTranslateException: None 

ومع استثناءات:

-الترجمة
-أي لغة؟ تشير في رسالتين.
على سبيل المثال: الروسية - ru ، الإنجليزية - en
-Abracadabra
-أدخل العبارة التي تريد ترجمتها
-هاي حبر
- لغة دخلت بشكل غير صحيح

سألقي نظرة على المحاولة - باستثناء البناء بمزيد من التفاصيل:

 try: #sample code except Exception: #       

سأعطي مثالا مع ويكيبيديا api:

  try: result = str(wikipedia.summary(event.text)) except wikipedia.exceptions.PageError: print('  ') except wikipedia.exceptions.DisambiguationError: print('') 

كما تفهم ، يمكن أن يكون هناك العديد من الاستثناءات.

على هذا أقول وداعا لك. كل التوفيق

Source: https://habr.com/ru/post/ar428790/


All Articles