نكتب دردشة الروبوت ل VKontakte على بيثون باستخدام longpoll

أصبحت برامج الروبوت الآن شائعة وهي في كل خطوة ، ولكن إذا كنت بحاجة إلى برنامج الروبوت الخاص بك على شبكة VKontakte الاجتماعية ، فمن السهل تنفيذ ذلك.

سنحتاج إلى:

  1. بيثون
  2. VK Api
  3. الرغبة

حسنًا ، مناسب تمامًا للمبتدئين


كيفية تثبيت Python؟
تنزيل ، قم بتشغيل المثبت.

أين تكتب هذا الرمز؟
إلى مستند نصي بامتداد .py

وماذا أكتب؟
نعم ، حتى مع وجود جهاز كمبيوتر محمول. شخصيا ، أوصي Notepad ++

وكيف تركض؟
من خلال سطر الأوامر.
python \.py

كيف يعمل؟


كل شيء بسيط للغاية ، في vk api يوجد شيء من هذا القبيل ، يدعى longpool يعمل مثل هذا:
Long Polling هي تقنية تسمح لك بتلقي بيانات حول الأحداث الجديدة باستخدام "الاستعلامات الطويلة". يتلقى الخادم الطلب ، ولكنه لا يرسل ردًا عليه على الفور ، ولكن فقط عند وقوع حدث (على سبيل المثال ، تصل رسالة جديدة) أو تنتهي المهلة المحددة.
في روسيا ، نرسل طلبًا إلى الخادم ، وهو بدوره ، ينقر على فكونتاكتي إذا حدث شيء هناك ، على سبيل المثال ، نتلقى رسالة ، يديرها ويخبرنا عنها. من هذا سوف نرقص.

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


أولاً ، نحتاج أن نثبت أننا على اتصال ، وليس أي شخص آخر. يتم ذلك ببساطة شديدة.

 import vk_api import requests session = requests.Session() login, password = ' , email  ', ' ' vk_session = vk_api.VkApi(login, password) try: vk_session.auth(token_only=True) except vk_api.AuthError as error_msg: print(error_msg) return 

ملاحظة ، يوصي الأشخاص من VK باستخدام رقم هاتف لتسجيل الدخول. خلاف ذلك ، يمكنك أن تصطدم بفحص مضاد للبوت ، حيث يُطلب منك إدخال الأرقام المفقودة من رقم الهاتف.

إذا كان البوت سيجلس في مجموعة ، فسيبدو التفويض مختلفًا.

 import requests import vk_api vk_session = vk_api.VkApi(token='      ') 


- ما هو الرمز المميز؟
- مثل هذا الشيء من tsiferok والحروف التي تحتاجها للحصول على إعدادات المجموعة. للقيام بذلك ، ما عليك سوى فتح قسم "إدارة المجتمع" ("إدارة الصفحة" إذا كانت لديك صفحة عامة) ، حدد علامة التبويب "العمل مع واجهة برمجة التطبيقات" وانقر على "إنشاء مفتاح وصول".

اتصل الآن longpool.

 from vk_api.longpoll import VkLongPoll, VkEventType longpoll = VkLongPoll(vk_session) vk = vk_session.get_api() for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: # longpoll,    : if event.text == '  ' or 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=' ' ) 

قد لا تحتوي الرسائل فقط على النص الذي تحدده. على سبيل المثال:

 import datetime vk.messages.send( user_id=event.user_id, message=' : ' + str(now.strftime("%H:%M")) ) 

يمكنك أيضًا إرفاق الصور.

 attachments = [] from vk_api import VkUpload upload = VkUpload(vk_session) image_url = '  ' image = session.get(image_url, stream=True) photo = upload.photo_messages(photos=image.raw)[0] attachments.append( 'photo{}_{}'.format(photo['owner_id'], photo['id']) ) vk.messages.send( user_id=event.user_id, attachment=','.join(attachments), message=' ' ) 

يمكنك التوصل إلى الكثير من الأشياء المثيرة للاهتمام ، ولكن فكر في الأمر بنفسك ، وسأقول فقط: يمكن تقسيم الروابط إلى أجزاء. على سبيل المثال:

 image_url = 'http://.com/uploads/' + event.text + '.png' 

ولم يمنعنا أحد من تلقي رد من مستخدم على مثال ويكيبيديا:

 import wikipedia #  wikipedia.set_lang("RU") if event.text == '' or event.text == '' or event.text == '' or event.text == '' or event.text == 'Wikipedia' or event.text == 'wikipedia' or event.text == 'Wiki' or event.text == 'wiki': #          ...  wiki if event.from_user: #   KC 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: # longpoll if event.from_user: vk.messages.send( #    user_id=event.user_id, message='   : \n' + str(wikipedia.summary(event.text)) # "   "      api Wikipedia     ) break #   elif event.from_chat: #    vk.messages.send( chat_id=event.chat_id, message='   : \n' + str(wikipedia.summary(event.text)) # "   "      api Wikipedia     ) break #   continue 

روابط للأمثلة والوثائق


بوت بوت يعمل على DuckDuckGo api
حالات استخدام واجهة برمجة تطبيقات VK (عام)
توثيق واجهة برمجة تطبيقات VK واحد ، اثنان

على هذا أقول وداعا لك. ترميز جيد.

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


All Articles